@fmidev/smartmet-alert-client
Version:
Web application for viewing weather and flood alerts
1,659 lines (1,658 loc) • 208 kB
JavaScript
/**
* name: @fmidev/smartmet-alert-client
* version: v4.7.2
* description: Web application for viewing weather and flood alerts
* author: Finnish Meteorological Institute
* homepage: https://github.com/fmidev/smartmet-alert-client#readme
*/
var bu = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function zr(r) {
return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r;
}
var Ve = {}, ke = {};
function Jr(r, u, n) {
if (n === void 0 && (n = Array.prototype), r && typeof n.find == "function")
return n.find.call(r, u);
for (var s = 0; s < r.length; s++)
if (Object.prototype.hasOwnProperty.call(r, s)) {
var c = r[s];
if (u.call(void 0, c, s, r))
return c;
}
}
function Ft(r, u) {
return u === void 0 && (u = Object), u && typeof u.freeze == "function" ? u.freeze(r) : r;
}
function Zr(r, u) {
if (r === null || typeof r != "object")
throw new TypeError("target is not an object");
for (var n in u)
Object.prototype.hasOwnProperty.call(u, n) && (r[n] = u[n]);
return r;
}
var ar = Ft({
/**
* `text/html`, the only mime type that triggers treating an XML document as HTML.
*
* @see DOMParser.SupportedType.isHTML
* @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration
* @see https://en.wikipedia.org/wiki/HTML Wikipedia
* @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN
* @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec
*/
HTML: "text/html",
/**
* Helper method to check a mime type if it indicates an HTML document
*
* @param {string} [value]
* @returns {boolean}
*
* @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration
* @see https://en.wikipedia.org/wiki/HTML Wikipedia
* @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN
* @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring */
isHTML: function(r) {
return r === ar.HTML;
},
/**
* `application/xml`, the standard mime type for XML documents.
*
* @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration
* @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303
* @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia
*/
XML_APPLICATION: "application/xml",
/**
* `text/html`, an alias for `application/xml`.
*
* @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303
* @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration
* @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia
*/
XML_TEXT: "text/xml",
/**
* `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,
* but is parsed as an XML document.
*
* @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration
* @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec
* @see https://en.wikipedia.org/wiki/XHTML Wikipedia
*/
XML_XHTML_APPLICATION: "application/xhtml+xml",
/**
* `image/svg+xml`,
*
* @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration
* @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1
* @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia
*/
XML_SVG_IMAGE: "image/svg+xml"
}), lr = Ft({
/**
* The XHTML namespace.
*
* @see http://www.w3.org/1999/xhtml
*/
HTML: "http://www.w3.org/1999/xhtml",
/**
* Checks if `uri` equals `NAMESPACE.HTML`.
*
* @param {string} [uri]
*
* @see NAMESPACE.HTML
*/
isHTML: function(r) {
return r === lr.HTML;
},
/**
* The SVG namespace.
*
* @see http://www.w3.org/2000/svg
*/
SVG: "http://www.w3.org/2000/svg",
/**
* The `xml:` namespace.
*
* @see http://www.w3.org/XML/1998/namespace
*/
XML: "http://www.w3.org/XML/1998/namespace",
/**
* The `xmlns:` namespace
*
* @see https://www.w3.org/2000/xmlns/
*/
XMLNS: "http://www.w3.org/2000/xmlns/"
});
ke.assign = Zr;
ke.find = Jr;
ke.freeze = Ft;
ke.MIME_TYPE = ar;
ke.NAMESPACE = lr;
var pr = ke, Oe = pr.find, ct = pr.NAMESPACE;
function Kr(r) {
return r !== "";
}
function eu(r) {
return r ? r.split(/[\t\n\f\r ]+/).filter(Kr) : [];
}
function tu(r, u) {
return r.hasOwnProperty(u) || (r[u] = !0), r;
}
function $t(r) {
if (!r) return [];
var u = eu(r);
return Object.keys(u.reduce(tu, {}));
}
function ru(r) {
return function(u) {
return r && r.indexOf(u) !== -1;
};
}
function Et(r, u) {
for (var n in r)
Object.prototype.hasOwnProperty.call(r, n) && (u[n] = r[n]);
}
function ae(r, u) {
var n = r.prototype;
if (!(n instanceof u)) {
let s = function() {
};
s.prototype = u.prototype, s = new s(), Et(n, s), r.prototype = n = s;
}
n.constructor != r && (typeof r != "function" && console.error("unknown Class:" + r), n.constructor = r);
}
var le = {}, De = le.ELEMENT_NODE = 1, ut = le.ATTRIBUTE_NODE = 2, vt = le.TEXT_NODE = 3, cr = le.CDATA_SECTION_NODE = 4, fr = le.ENTITY_REFERENCE_NODE = 5, uu = le.ENTITY_NODE = 6, Rt = le.PROCESSING_INSTRUCTION_NODE = 7, _t = le.COMMENT_NODE = 8, hr = le.DOCUMENT_NODE = 9, Er = le.DOCUMENT_TYPE_NODE = 10, Me = le.DOCUMENT_FRAGMENT_NODE = 11, nu = le.NOTATION_NODE = 12, re = {}, ee = {};
re.INDEX_SIZE_ERR = (ee[1] = "Index size error", 1);
re.DOMSTRING_SIZE_ERR = (ee[2] = "DOMString size error", 2);
var se = re.HIERARCHY_REQUEST_ERR = (ee[3] = "Hierarchy request error", 3);
re.WRONG_DOCUMENT_ERR = (ee[4] = "Wrong document", 4);
var ou = re.INVALID_CHARACTER_ERR = (ee[5] = "Invalid character", 5);
re.NO_DATA_ALLOWED_ERR = (ee[6] = "No data allowed", 6);
re.NO_MODIFICATION_ALLOWED_ERR = (ee[7] = "No modification allowed", 7);
var Ar = re.NOT_FOUND_ERR = (ee[8] = "Not found", 8);
re.NOT_SUPPORTED_ERR = (ee[9] = "Not supported", 9);
var Qt = re.INUSE_ATTRIBUTE_ERR = (ee[10] = "Attribute in use", 10), Ze = re.INVALID_STATE_ERR = (ee[11] = "Invalid state", 11);
re.SYNTAX_ERR = (ee[12] = "Syntax error", 12);
re.INVALID_MODIFICATION_ERR = (ee[13] = "Invalid modification", 13);
re.NAMESPACE_ERR = (ee[14] = "Invalid namespace", 14);
re.INVALID_ACCESS_ERR = (ee[15] = "Invalid access", 15);
function H(r, u) {
if (u instanceof Error)
var n = u;
else
n = this, Error.call(this, ee[r]), this.message = ee[r], Error.captureStackTrace && Error.captureStackTrace(this, H);
return n.code = r, u && (this.message = this.message + ": " + u), n;
}
H.prototype = Error.prototype;
Et(re, H);
function qe() {
}
qe.prototype = {
/**
* The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.
* @standard level1
*/
length: 0,
/**
* Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.
* @standard level1
* @param index unsigned long
* Index into the collection.
* @return Node
* The node at the indexth position in the NodeList, or null if that is not a valid index.
*/
item: function(r) {
return r >= 0 && r < this.length ? this[r] : null;
},
toString: function(r, u, n) {
for (var s = !!n && !!n.requireWellFormed, c = [], h = 0; h < this.length; h++)
Gt(this[h], c, r, u, null, s);
return c.join("");
},
/**
* @private
* @param {function (Node):boolean} predicate
* @returns {Node[]}
*/
filter: function(r) {
return Array.prototype.filter.call(this, r);
},
/**
* @private
* @param {Node} item
* @returns {number}
*/
indexOf: function(r) {
return Array.prototype.indexOf.call(this, r);
}
};
function nt(r, u) {
this._node = r, this._refresh = u, It(this);
}
function It(r) {
var u = r._node._inc || r._node.ownerDocument._inc;
if (r._inc !== u) {
var n = r._refresh(r._node);
if (wr(r, "length", n.length), !r.$$length || n.length < r.$$length)
for (var s = n.length; s in r; s++)
Object.prototype.hasOwnProperty.call(r, s) && delete r[s];
Et(n, r), r._inc = u;
}
}
nt.prototype.item = function(r) {
return It(this), this[r] || null;
};
ae(nt, qe);
function xt() {
}
function Dr(r, u) {
for (var n = r.length; n--; )
if (r[n] === u)
return n;
}
function zt(r, u, n, s) {
if (s ? u[Dr(u, s)] = n : u[u.length++] = n, r) {
n.ownerElement = r;
var c = r.ownerDocument;
c && (s && mr(c, r, s), iu(c, r, n));
}
}
function Jt(r, u, n) {
var s = Dr(u, n);
if (s >= 0) {
for (var c = u.length - 1; s < c; )
u[s] = u[++s];
if (u.length = c, r) {
var h = r.ownerDocument;
h && (mr(h, r, n), n.ownerElement = null);
}
} else
throw new H(Ar, new Error(r.tagName + "@" + n));
}
xt.prototype = {
length: 0,
item: qe.prototype.item,
getNamedItem: function(r) {
for (var u = this.length; u--; ) {
var n = this[u];
if (n.nodeName == r)
return n;
}
},
setNamedItem: function(r) {
var u = r.ownerElement;
if (u && u != this._ownerElement)
throw new H(Qt);
var n = this.getNamedItem(r.nodeName);
return zt(this._ownerElement, this, r, n), n;
},
/* returns Node */
setNamedItemNS: function(r) {
var u = r.ownerElement, n;
if (u && u != this._ownerElement)
throw new H(Qt);
return n = this.getNamedItemNS(r.namespaceURI, r.localName), zt(this._ownerElement, this, r, n), n;
},
/* returns Node */
removeNamedItem: function(r) {
var u = this.getNamedItem(r);
return Jt(this._ownerElement, this, u), u;
},
// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR
//for level2
removeNamedItemNS: function(r, u) {
var n = this.getNamedItemNS(r, u);
return Jt(this._ownerElement, this, n), n;
},
getNamedItemNS: function(r, u) {
for (var n = this.length; n--; ) {
var s = this[n];
if (s.localName == u && s.namespaceURI == r)
return s;
}
return null;
}
};
function dr() {
}
dr.prototype = {
/**
* The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.
* The different implementations fairly diverged in what kind of features were reported.
* The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.
*
* @deprecated It is deprecated and modern browsers return true in all cases.
*
* @param {string} feature
* @param {string} [version]
* @returns {boolean} always true
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN
* @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core
* @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard
*/
hasFeature: function(r, u) {
return !0;
},
/**
* Creates an XML Document object of the specified type with its document element.
*
* __It behaves slightly different from the description in the living standard__:
* - There is no interface/class `XMLDocument`, it returns a `Document` instance.
* - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.
* - this implementation is not validating names or qualified names
* (when parsing XML strings, the SAX parser takes care of that)
*
* @param {string|null} namespaceURI
* @param {string} qualifiedName
* @param {DocumentType=null} doctype
* @returns {Document}
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN
* @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)
* @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core
*
* @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract
* @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names
* @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names
*/
createDocument: function(r, u, n) {
var s = new At();
if (s.implementation = this, s.childNodes = new qe(), s.doctype = n || null, n && s.appendChild(n), u) {
var c = s.createElementNS(r, u);
s.appendChild(c);
}
return s;
},
/**
* Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.
*
* __This implementation differs from the specification:__
* - this implementation is not validating names or qualified names
* (when parsing XML strings, the SAX parser takes care of that)
*
* Note: `internalSubset` can only be introduced via a direct property write to `node.internalSubset` after creation.
* Creation-time validation of `publicId`, `systemId` is not enforced.
* The serializer-level check covers all mutation vectors, including direct property writes.
* `internalSubset` is only serialized as `[ ... ]` when both `publicId` and `systemId` are
* absent (empty or `'.'`) — if either external identifier is present, `internalSubset` is
* silently omitted from the serialized output.
*
* @param {string} qualifiedName
* @param {string} [publicId]
* The external subset public identifier. Stored verbatim including surrounding quotes.
* When serialized with `requireWellFormed: true` (via the 4th-parameter options object),
* throws `DOMException` with code `INVALID_STATE_ERR` if the value is non-empty and does
* not match the XML `PubidLiteral` production (W3C DOM Parsing §3.2.1.3; XML 1.0 [12]).
* @param {string} [systemId]
* The external subset system identifier. Stored verbatim including surrounding quotes.
* When serialized with `requireWellFormed: true`, throws `DOMException` with code
* `INVALID_STATE_ERR` if the value is non-empty and does not match the XML `SystemLiteral`
* production (W3C DOM Parsing §3.2.1.3; XML 1.0 [11]).
* @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation
* or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN
* @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core
* @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard
*
* @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract
* @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names
* @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names
*/
createDocumentType: function(r, u, n) {
var s = new bt();
return s.name = r, s.nodeName = r, s.publicId = u || "", s.systemId = n || "", s;
}
};
function G() {
}
G.prototype = {
firstChild: null,
lastChild: null,
previousSibling: null,
nextSibling: null,
attributes: null,
parentNode: null,
childNodes: null,
ownerDocument: null,
nodeValue: null,
namespaceURI: null,
prefix: null,
localName: null,
// Modified in DOM Level 2:
insertBefore: function(r, u) {
return Tt(this, r, u);
},
replaceChild: function(r, u) {
Tt(this, r, u, vr), u && this.removeChild(u);
},
removeChild: function(r) {
return Nr(this, r);
},
appendChild: function(r) {
return this.insertBefore(r, null);
},
hasChildNodes: function() {
return this.firstChild != null;
},
cloneNode: function(r) {
return br(this.ownerDocument || this, this, r);
},
// Modified in DOM Level 2:
/**
* Puts the specified node and all of its subtree into a "normalized" form. In a normalized
* subtree, no text nodes in the subtree are empty and there are no adjacent text nodes.
*
* Specifically, this method merges any adjacent text nodes (i.e., nodes for which `nodeType`
* is `TEXT_NODE`) into a single node with the combined data. It also removes any empty text
* nodes.
*
* This method iteratively traverses all child nodes to normalize all descendant nodes within
* the subtree.
*
* @throws {DOMException}
* May throw a DOMException if operations within removeChild or appendData (which are
* potentially invoked in this method) do not meet their specific constraints.
* @see {@link Node.removeChild}
* @see {@link CharacterData.appendData}
* @see ../docs/walk-dom.md.
*/
normalize: function() {
K(this, null, {
enter: function(r) {
for (var u = r.firstChild; u; ) {
var n = u.nextSibling;
n !== null && n.nodeType === vt && u.nodeType === vt ? (r.removeChild(n), u.appendData(n.data)) : u = n;
}
return !0;
}
});
},
// Introduced in DOM Level 2:
isSupported: function(r, u) {
return this.ownerDocument.implementation.hasFeature(r, u);
},
// Introduced in DOM Level 2:
hasAttributes: function() {
return this.attributes.length > 0;
},
/**
* Look up the prefix associated to the given namespace URI, starting from this node.
* **The default namespace declarations are ignored by this method.**
* See Namespace Prefix Lookup for details on the algorithm used by this method.
*
* _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._
*
* @param {string | null} namespaceURI
* @returns {string | null}
* @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix
* @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo
* @see https://dom.spec.whatwg.org/#dom-node-lookupprefix
* @see https://github.com/xmldom/xmldom/issues/322
*/
lookupPrefix: function(r) {
for (var u = this; u; ) {
var n = u._nsMap;
if (n) {
for (var s in n)
if (Object.prototype.hasOwnProperty.call(n, s) && n[s] === r)
return s;
}
u = u.nodeType == ut ? u.ownerDocument : u.parentNode;
}
return null;
},
// Introduced in DOM Level 3:
lookupNamespaceURI: function(r) {
for (var u = this; u; ) {
var n = u._nsMap;
if (n && Object.prototype.hasOwnProperty.call(n, r))
return n[r];
u = u.nodeType == ut ? u.ownerDocument : u.parentNode;
}
return null;
},
// Introduced in DOM Level 3:
isDefaultNamespace: function(r) {
var u = this.lookupPrefix(r);
return u == null;
}
};
function gr(r) {
return r == "<" && "<" || r == ">" && ">" || r == "&" && "&" || r == '"' && """ || "&#" + r.charCodeAt() + ";";
}
Et(le, G);
Et(le, G.prototype);
function Ct(r, u) {
return K(r, null, { enter: function(n) {
return u(n) ? K.STOP : !0;
} }) === K.STOP;
}
function K(r, u, n) {
for (var s = [{ node: r, context: u, phase: K.ENTER }]; s.length > 0; ) {
var c = s.pop();
if (c.phase === K.ENTER) {
var h = n.enter(c.node, c.context);
if (h === K.STOP)
return K.STOP;
if (s.push({ node: c.node, context: h, phase: K.EXIT }), h == null)
continue;
for (var f = c.node.lastChild; f; )
s.push({ node: f, context: h, phase: K.ENTER }), f = f.previousSibling;
} else
n.exit && n.exit(c.node, c.context);
}
}
K.STOP = Symbol("walkDOM.STOP");
K.ENTER = 0;
K.EXIT = 1;
function At() {
this.ownerDocument = this;
}
function iu(r, u, n) {
r && r._inc++;
var s = n.namespaceURI;
s === ct.XMLNS && (u._nsMap[n.prefix ? n.localName : ""] = n.value);
}
function mr(r, u, n, s) {
r && r._inc++;
var c = n.namespaceURI;
c === ct.XMLNS && delete u._nsMap[n.prefix ? n.localName : ""];
}
function Lt(r, u, n) {
if (r && r._inc) {
r._inc++;
var s = u.childNodes;
if (n)
s[s.length++] = n;
else {
for (var c = u.firstChild, h = 0; c; )
s[h++] = c, c = c.nextSibling;
s.length = h, delete s[s.length];
}
}
}
function Nr(r, u) {
var n = u.previousSibling, s = u.nextSibling;
return n ? n.nextSibling = s : r.firstChild = s, s ? s.previousSibling = n : r.lastChild = n, u.parentNode = null, u.previousSibling = null, u.nextSibling = null, Lt(r.ownerDocument, r), u;
}
function su(r) {
return r && (r.nodeType === G.DOCUMENT_NODE || r.nodeType === G.DOCUMENT_FRAGMENT_NODE || r.nodeType === G.ELEMENT_NODE);
}
function au(r) {
return r && (Fe(r) || Pt(r) || Ue(r) || r.nodeType === G.DOCUMENT_FRAGMENT_NODE || r.nodeType === G.COMMENT_NODE || r.nodeType === G.PROCESSING_INSTRUCTION_NODE);
}
function Ue(r) {
return r && r.nodeType === G.DOCUMENT_TYPE_NODE;
}
function Fe(r) {
return r && r.nodeType === G.ELEMENT_NODE;
}
function Pt(r) {
return r && r.nodeType === G.TEXT_NODE;
}
function Zt(r, u) {
var n = r.childNodes || [];
if (Oe(n, Fe) || Ue(u))
return !1;
var s = Oe(n, Ue);
return !(u && s && n.indexOf(s) > n.indexOf(u));
}
function Kt(r, u) {
var n = r.childNodes || [];
function s(h) {
return Fe(h) && h !== u;
}
if (Oe(n, s))
return !1;
var c = Oe(n, Ue);
return !(u && c && n.indexOf(c) > n.indexOf(u));
}
function lu(r, u, n) {
if (!su(r))
throw new H(se, "Unexpected parent node type " + r.nodeType);
if (n && n.parentNode !== r)
throw new H(Ar, "child not in parent");
if (
// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a "HierarchyRequestError" DOMException.
!au(u) || // 5. If either `node` is a Text node and `parent` is a document,
// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0
// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)
// or `node` is a doctype and `parent` is not a document, then throw a "HierarchyRequestError" DOMException.
Ue(u) && r.nodeType !== G.DOCUMENT_NODE
)
throw new H(
se,
"Unexpected node type " + u.nodeType + " for parent node type " + r.nodeType
);
}
function pu(r, u, n) {
var s = r.childNodes || [], c = u.childNodes || [];
if (u.nodeType === G.DOCUMENT_FRAGMENT_NODE) {
var h = c.filter(Fe);
if (h.length > 1 || Oe(c, Pt))
throw new H(se, "More than one element or text in fragment");
if (h.length === 1 && !Zt(r, n))
throw new H(se, "Element in fragment can not be inserted before doctype");
}
if (Fe(u) && !Zt(r, n))
throw new H(se, "Only one element can be added and only after doctype");
if (Ue(u)) {
if (Oe(s, Ue))
throw new H(se, "Only one doctype is allowed");
var f = Oe(s, Fe);
if (n && s.indexOf(f) < s.indexOf(n))
throw new H(se, "Doctype can only be inserted before an element");
if (!n && f)
throw new H(se, "Doctype can not be appended since element is present");
}
}
function vr(r, u, n) {
var s = r.childNodes || [], c = u.childNodes || [];
if (u.nodeType === G.DOCUMENT_FRAGMENT_NODE) {
var h = c.filter(Fe);
if (h.length > 1 || Oe(c, Pt))
throw new H(se, "More than one element or text in fragment");
if (h.length === 1 && !Kt(r, n))
throw new H(se, "Element in fragment can not be inserted before doctype");
}
if (Fe(u) && !Kt(r, n))
throw new H(se, "Only one element can be added and only after doctype");
if (Ue(u)) {
if (Oe(s, function(D) {
return Ue(D) && D !== n;
}))
throw new H(se, "Only one doctype is allowed");
var f = Oe(s, Fe);
if (n && s.indexOf(f) < s.indexOf(n))
throw new H(se, "Doctype can only be inserted before an element");
}
}
function Tt(r, u, n, s) {
lu(r, u, n), r.nodeType === G.DOCUMENT_NODE && (s || pu)(r, u, n);
var c = u.parentNode;
if (c && c.removeChild(u), u.nodeType === Me) {
var h = u.firstChild;
if (h == null)
return u;
var f = u.lastChild;
} else
h = f = u;
var v = n ? n.previousSibling : r.lastChild;
h.previousSibling = v, f.nextSibling = n, v ? v.nextSibling = h : r.firstChild = h, n == null ? r.lastChild = f : n.previousSibling = f;
do {
h.parentNode = r;
var D = r.ownerDocument || r;
ft(h, D);
} while (h !== f && (h = h.nextSibling));
return Lt(r.ownerDocument || r, r), u.nodeType == Me && (u.firstChild = u.lastChild = null), u;
}
function ft(r, u) {
if (r.ownerDocument !== u) {
if (r.ownerDocument = u, r.nodeType === De && r.attributes)
for (var n = 0; n < r.attributes.length; n++) {
var s = r.attributes.item(n);
s && (s.ownerDocument = u);
}
for (var c = r.firstChild; c; )
ft(c, u), c = c.nextSibling;
}
}
function cu(r, u) {
u.parentNode && u.parentNode.removeChild(u), u.parentNode = r, u.previousSibling = r.lastChild, u.nextSibling = null, u.previousSibling ? u.previousSibling.nextSibling = u : r.firstChild = u, r.lastChild = u, Lt(r.ownerDocument, r, u);
var n = r.ownerDocument || r;
return ft(u, n), u;
}
At.prototype = {
//implementation : null,
nodeName: "#document",
nodeType: hr,
/**
* The DocumentType node of the document.
*
* @readonly
* @type DocumentType
*/
doctype: null,
documentElement: null,
_inc: 1,
insertBefore: function(r, u) {
if (r.nodeType == Me) {
for (var n = r.firstChild; n; ) {
var s = n.nextSibling;
this.insertBefore(n, u), n = s;
}
return r;
}
return Tt(this, r, u), ft(r, this), this.documentElement === null && r.nodeType === De && (this.documentElement = r), r;
},
removeChild: function(r) {
return this.documentElement == r && (this.documentElement = null), Nr(this, r);
},
replaceChild: function(r, u) {
Tt(this, r, u, vr), ft(r, this), u && this.removeChild(u), Fe(r) && (this.documentElement = r);
},
// Introduced in DOM Level 2:
importNode: function(r, u) {
return fu(this, r, u);
},
// Introduced in DOM Level 2:
getElementById: function(r) {
var u = null;
return Ct(this.documentElement, function(n) {
if (n.nodeType == De && n.getAttribute("id") == r)
return u = n, !0;
}), u;
},
/**
* The `getElementsByClassName` method of `Document` interface returns an array-like object
* of all child elements which have **all** of the given class name(s).
*
* Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.
*
*
* Warning: This is a live LiveNodeList.
* Changes in the DOM will reflect in the array as the changes occur.
* If an element selected by this array no longer qualifies for the selector,
* it will automatically be removed. Be aware of this for iteration purposes.
*
* @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
* @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname
*/
getElementsByClassName: function(r) {
var u = $t(r);
return new nt(this, function(n) {
var s = [];
return u.length > 0 && Ct(n.documentElement, function(c) {
if (c !== n && c.nodeType === De) {
var h = c.getAttribute("class");
if (h) {
var f = r === h;
if (!f) {
var v = $t(h);
f = u.every(ru(v));
}
f && s.push(c);
}
}
}), s;
});
},
//document factory method:
createElement: function(r) {
var u = new $e();
u.ownerDocument = this, u.nodeName = r, u.tagName = r, u.localName = r, u.childNodes = new qe();
var n = u.attributes = new xt();
return n._ownerElement = u, u;
},
createDocumentFragment: function() {
var r = new wt();
return r.ownerDocument = this, r.childNodes = new qe(), r;
},
createTextNode: function(r) {
var u = new Mt();
return u.ownerDocument = this, u.appendData(r), u;
},
createComment: function(r) {
var u = new qt();
return u.ownerDocument = this, u.appendData(r), u;
},
/**
* Returns a new CDATASection node whose data is `data`.
*
* __This implementation differs from the specification:__
* - calling this method on an HTML document does not throw `NotSupportedError`.
*
* @param {string} data
* @returns {CDATASection}
* @throws DOMException with code `INVALID_CHARACTER_ERR` if `data` contains `"]]>"`.
* @see https://developer.mozilla.org/en-US/docs/Web/API/Document/createCDATASection
* @see https://dom.spec.whatwg.org/#dom-document-createcdatasection
*/
createCDATASection: function(r) {
if (r.indexOf("]]>") !== -1)
throw new H(ou, 'data contains "]]>"');
var u = new Ut();
return u.ownerDocument = this, u.appendData(r), u;
},
/**
* Returns a ProcessingInstruction node whose target is target and data is data.
*
* __This implementation differs from the specification:__
* - it does not do any input validation on the arguments and doesn't throw "InvalidCharacterError".
*
* Note: When the resulting document is serialized with `requireWellFormed: true`, the
* serializer throws with code `INVALID_STATE_ERR` if `.data` contains `?>` (W3C DOM Parsing
* §3.2.1.7). Without that option the data is emitted verbatim.
*
* @param {string} target
* @param {string} data
* @returns {ProcessingInstruction}
* @see https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction
* @see https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction
* @see https://www.w3.org/TR/DOM-Parsing/#dfn-concept-serialize-xml §3.2.1.7
*/
createProcessingInstruction: function(r, u) {
var n = new kt();
return n.ownerDocument = this, n.tagName = n.nodeName = n.target = r, n.nodeValue = n.data = u, n;
},
createAttribute: function(r) {
var u = new yt();
return u.ownerDocument = this, u.name = r, u.nodeName = r, u.localName = r, u.specified = !0, u;
},
createEntityReference: function(r) {
var u = new Vt();
return u.ownerDocument = this, u.nodeName = r, u;
},
// Introduced in DOM Level 2:
createElementNS: function(r, u) {
var n = new $e(), s = u.split(":"), c = n.attributes = new xt();
return n.childNodes = new qe(), n.ownerDocument = this, n.nodeName = u, n.tagName = u, n.namespaceURI = r, s.length == 2 ? (n.prefix = s[0], n.localName = s[1]) : n.localName = u, c._ownerElement = n, n;
},
// Introduced in DOM Level 2:
createAttributeNS: function(r, u) {
var n = new yt(), s = u.split(":");
return n.ownerDocument = this, n.nodeName = u, n.name = u, n.namespaceURI = r, n.specified = !0, s.length == 2 ? (n.prefix = s[0], n.localName = s[1]) : n.localName = u, n;
}
};
ae(At, G);
function $e() {
this._nsMap = {};
}
$e.prototype = {
nodeType: De,
hasAttribute: function(r) {
return this.getAttributeNode(r) != null;
},
getAttribute: function(r) {
var u = this.getAttributeNode(r);
return u && u.value || "";
},
getAttributeNode: function(r) {
return this.attributes.getNamedItem(r);
},
setAttribute: function(r, u) {
var n = this.ownerDocument.createAttribute(r);
n.value = n.nodeValue = "" + u, this.setAttributeNode(n);
},
removeAttribute: function(r) {
var u = this.getAttributeNode(r);
u && this.removeAttributeNode(u);
},
//four real opeartion method
appendChild: function(r) {
return r.nodeType === Me ? this.insertBefore(r, null) : cu(this, r);
},
setAttributeNode: function(r) {
return this.attributes.setNamedItem(r);
},
setAttributeNodeNS: function(r) {
return this.attributes.setNamedItemNS(r);
},
removeAttributeNode: function(r) {
return this.attributes.removeNamedItem(r.nodeName);
},
//get real attribute name,and remove it by removeAttributeNode
removeAttributeNS: function(r, u) {
var n = this.getAttributeNodeNS(r, u);
n && this.removeAttributeNode(n);
},
hasAttributeNS: function(r, u) {
return this.getAttributeNodeNS(r, u) != null;
},
getAttributeNS: function(r, u) {
var n = this.getAttributeNodeNS(r, u);
return n && n.value || "";
},
setAttributeNS: function(r, u, n) {
var s = this.ownerDocument.createAttributeNS(r, u);
s.value = s.nodeValue = "" + n, this.setAttributeNode(s);
},
getAttributeNodeNS: function(r, u) {
return this.attributes.getNamedItemNS(r, u);
},
getElementsByTagName: function(r) {
return new nt(this, function(u) {
var n = [];
return Ct(u, function(s) {
s !== u && s.nodeType == De && (r === "*" || s.tagName == r) && n.push(s);
}), n;
});
},
getElementsByTagNameNS: function(r, u) {
return new nt(this, function(n) {
var s = [];
return Ct(n, function(c) {
c !== n && c.nodeType === De && (r === "*" || c.namespaceURI === r) && (u === "*" || c.localName == u) && s.push(c);
}), s;
});
}
};
At.prototype.getElementsByTagName = $e.prototype.getElementsByTagName;
At.prototype.getElementsByTagNameNS = $e.prototype.getElementsByTagNameNS;
ae($e, G);
function yt() {
}
yt.prototype.nodeType = ut;
ae(yt, G);
function Dt() {
}
Dt.prototype = {
data: "",
substringData: function(r, u) {
return this.data.substring(r, r + u);
},
appendData: function(r) {
r = this.data + r, this.nodeValue = this.data = r, this.length = r.length;
},
insertData: function(r, u) {
this.replaceData(r, 0, u);
},
appendChild: function(r) {
throw new Error(ee[se]);
},
deleteData: function(r, u) {
this.replaceData(r, u, "");
},
replaceData: function(r, u, n) {
var s = this.data.substring(0, r), c = this.data.substring(r + u);
n = s + n + c, this.nodeValue = this.data = n, this.length = n.length;
}
};
ae(Dt, G);
function Mt() {
}
Mt.prototype = {
nodeName: "#text",
nodeType: vt,
splitText: function(r) {
var u = this.data, n = u.substring(r);
u = u.substring(0, r), this.data = this.nodeValue = u, this.length = u.length;
var s = this.ownerDocument.createTextNode(n);
return this.parentNode && this.parentNode.insertBefore(s, this.nextSibling), s;
}
};
ae(Mt, Dt);
function qt() {
}
qt.prototype = {
nodeName: "#comment",
nodeType: _t
};
ae(qt, Dt);
function Ut() {
}
Ut.prototype = {
nodeName: "#cdata-section",
nodeType: cr
};
ae(Ut, Dt);
function bt() {
}
bt.prototype.nodeType = Er;
ae(bt, G);
function xr() {
}
xr.prototype.nodeType = nu;
ae(xr, G);
function Cr() {
}
Cr.prototype.nodeType = uu;
ae(Cr, G);
function Vt() {
}
Vt.prototype.nodeType = fr;
ae(Vt, G);
function wt() {
}
wt.prototype.nodeName = "#document-fragment";
wt.prototype.nodeType = Me;
ae(wt, G);
function kt() {
}
kt.prototype.nodeType = Rt;
ae(kt, G);
function Tr() {
}
Tr.prototype.serializeToString = function(r, u, n, s) {
return yr.call(r, u, n, s);
};
G.prototype.toString = yr;
function yr(r, u, n) {
var s = !!n && !!n.requireWellFormed, c = [], h = this.nodeType == 9 && this.documentElement || this, f = h.prefix, v = h.namespaceURI;
if (v && f == null) {
var f = h.lookupPrefix(v);
if (f == null)
var D = [
{ namespace: v, prefix: null }
//{namespace:uri,prefix:''}
];
}
return Gt(this, c, r, u, D, s), c.join("");
}
function er(r, u, n) {
var s = r.prefix || "", c = r.namespaceURI;
if (!c || s === "xml" && c === ct.XML || c === ct.XMLNS)
return !1;
for (var h = n.length; h--; ) {
var f = n[h];
if (f.prefix === s)
return f.namespace !== c;
}
return !0;
}
function gt(r, u, n) {
r.push(" ", u, '="', n.replace(/[<>&"\t\n\r]/g, gr), '"');
}
function Gt(r, u, n, s, c, h) {
c || (c = []), K(r, { ns: c, isHTML: n }, {
enter: function(f, v) {
var D = v.ns, T = v.isHTML;
if (s)
if (f = s(f), f) {
if (typeof f == "string")
return u.push(f), null;
} else
return null;
switch (f.nodeType) {
case De:
var S = f.attributes, j = S.length, _ = f.tagName;
T = ct.isHTML(f.namespaceURI) || T;
var z = _;
if (!T && !f.prefix && f.namespaceURI) {
for (var ue, Z = 0; Z < S.length; Z++)
if (S.item(Z).name === "xmlns") {
ue = S.item(Z).value;
break;
}
if (!ue)
for (var k = D.length - 1; k >= 0; k--) {
var he = D[k];
if (he.prefix === "" && he.namespace === f.namespaceURI) {
ue = he.namespace;
break;
}
}
if (ue !== f.namespaceURI)
for (var k = D.length - 1; k >= 0; k--) {
var he = D[k];
if (he.namespace === f.namespaceURI) {
he.prefix && (z = he.prefix + ":" + _);
break;
}
}
}
u.push("<", z);
for (var pe = D.slice(), Y = 0; Y < j; Y++) {
var W = S.item(Y);
W.prefix == "xmlns" ? pe.push({ prefix: W.localName, namespace: W.value }) : W.nodeName == "xmlns" && pe.push({ prefix: "", namespace: W.value });
}
for (var Y = 0; Y < j; Y++) {
var W = S.item(Y);
if (er(W, T, pe)) {
var ce = W.prefix || "", x = W.namespaceURI;
gt(u, ce ? "xmlns:" + ce : "xmlns", x), pe.push({ prefix: ce, namespace: x });
}
var p = s ? s(W) : W;
p && (typeof p == "string" ? u.push(p) : gt(u, p.name, p.value));
}
if (_ === z && er(f, T, pe)) {
var $ = f.prefix || "", x = f.namespaceURI;
gt(u, $ ? "xmlns:" + $ : "xmlns", x), pe.push({ prefix: $, namespace: x });
}
var X = f.firstChild;
if (X || T && !/^(?:meta|link|img|br|hr|input)$/i.test(_)) {
if (u.push(">"), T && /^script$/i.test(_)) {
for (; X; )
X.data ? u.push(X.data) : Gt(X, u, T, s, pe.slice(), h), X = X.nextSibling;
return u.push("</", _, ">"), null;
}
return { ns: pe, isHTML: T, tag: z };
} else
return u.push("/>"), null;
case hr:
case Me:
return { ns: D.slice(), isHTML: T, tag: null };
case ut:
return gt(u, f.name, f.value), null;
case vt:
return u.push(f.data.replace(/[<&>]/g, gr)), null;
case cr:
if (h && f.data.indexOf("]]>") !== -1)
throw new H(Ze, 'The CDATASection data contains "]]>"');
return u.push("<![CDATA[", f.data.replace(/]]>/g, "]]]]><![CDATA[>"), "]]>"), null;
case _t:
if (h && f.data.indexOf("-->") !== -1)
throw new H(Ze, 'The comment node data contains "-->"');
return u.push("<!--", f.data, "-->"), null;
case Er:
if (h) {
if (f.publicId && !/^("[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%']*"|'[\x20\r\na-zA-Z0-9\-()+,.\/:=?;!*#@$_%'"]*')$/.test(f.publicId))
throw new H(Ze, "DocumentType publicId is not a valid PubidLiteral");
if (f.systemId && !/^("[^"]*"|'[^']*')$/.test(f.systemId))
throw new H(Ze, "DocumentType systemId is not a valid SystemLiteral");
if (f.internalSubset && f.internalSubset.indexOf("]>") !== -1)
throw new H(Ze, 'DocumentType internalSubset contains "]>"');
}
var q = f.publicId, V = f.systemId;
if (u.push("<!DOCTYPE ", f.name), q)
u.push(" PUBLIC ", q), V && V != "." && u.push(" ", V), u.push(">");
else if (V && V != ".")
u.push(" SYSTEM ", V, ">");
else {
var te = f.internalSubset;
te && u.push(" [", te, "]"), u.push(">");
}
return null;
case Rt:
if (h && f.data.indexOf("?>") !== -1)
throw new H(Ze, 'The ProcessingInstruction data contains "?>"');
return u.push("<?", f.target, " ", f.data, "?>"), null;
case fr:
return u.push("&", f.nodeName, ";"), null;
default:
return u.push("??", f.nodeName), null;
}
},
exit: function(f, v) {
v && v.tag && u.push("</", v.tag, ">");
}
});
}
function fu(r, u, n) {
var s;
return K(u, null, {
enter: function(c, h) {
var f = c.cloneNode(!1);
f.ownerDocument = r, f.parentNode = null, h === null ? s = f : h.appendChild(f);
var v = c.nodeType === ut || n;
return v ? f : null;
}
}), s;
}
function br(r, u, n) {
var s;
return K(u, null, {
enter: function(c, h) {
var f = new c.constructor();
for (var v in c)
if (Object.prototype.hasOwnProperty.call(c, v)) {
var D = c[v];
typeof D != "object" && D != f[v] && (f[v] = D);
}
c.childNodes && (f.childNodes = new qe()), f.ownerDocument = r;
var T = n;
switch (f.nodeType) {
case De:
var S = c.attributes, j = f.attributes = new xt(), _ = S.length;
j._ownerElement = f;
for (var z = 0; z < _; z++)
f.setAttributeNode(br(r, S.item(z), !0));
break;
case ut:
T = !0;
}
return h !== null ? h.appendChild(f) : s = f, T ? f : null;
}
}), s;
}
function wr(r, u, n) {
r[u] = n;
}
try {
Object.defineProperty && (Object.defineProperty(nt.prototype, "length", {
get: function() {
return It(this), this.$$length;
}
}), Object.defineProperty(G.prototype, "textContent", {
get: function() {
if (this.nodeType === De || this.nodeType === Me) {
var r = [];
return K(this, null, {
enter: function(u) {
if (u.nodeType === De || u.nodeType === Me)
return !0;
if (u.nodeType === Rt || u.nodeType === _t)
return null;
r.push(u.nodeValue);
}
}), r.join("");
}
return this.nodeValue;
},
set: function(r) {
switch (this.nodeType) {
case De:
case Me:
for (; this.firstChild; )
this.removeChild(this.firstChild);
(r || String(r)) && this.appendChild(this.ownerDocument.createTextNode(r));
break;
default:
this.data = r, this.value = r, this.nodeValue = r;
}
}
}), wr = function(r, u, n) {
r["$$" + u] = n;
});
} catch {
}
Ve.DocumentType = bt;
Ve.DOMException = H;
Ve.DOMImplementation = dr;
Ve.Element = $e;
Ve.Node = G;
Ve.NodeList = qe;
Ve.walkDOM = K;
Ve.XMLSerializer = Tr;
var Bt = {}, Br = {};
(function(r) {
var u = ke.freeze;
r.XML_ENTITIES = u({
amp: "&",
apos: "'",
gt: ">",
lt: "<",
quot: '"'
}), r.HTML_ENTITIES = u({
Aacute: "Á",
aacute: "á",
Abreve: "Ă",
abreve: "ă",
ac: "∾",
acd: "∿",
acE: "∾̳",
Acirc: "Â",
acirc: "â",
acute: "´",
Acy: "А",
acy: "а",
AElig: "Æ",
aelig: "æ",
af: "",
Afr: "𝔄",
afr: "𝔞",
Agrave: "À",
agrave: "à",
alefsym: "ℵ",
aleph: "ℵ",
Alpha: "Α",
alpha: "α",
Amacr: "Ā",
amacr: "ā",
amalg: "⨿",
AMP: "&",
amp: "&",
And: "⩓",
and: "∧",
andand: "⩕",
andd: "⩜",
andslope: "⩘",
andv: "⩚",
ang: "∠",
ange: "⦤",
angle: "∠",
angmsd: "∡",
angmsdaa: "⦨",
angmsdab: "⦩",
angmsdac: "⦪",
angmsdad: "⦫",
angmsdae: "⦬",
angmsdaf: "⦭",
angmsdag: "⦮",
angmsdah: "⦯",
angrt: "∟",
angrtvb: "⊾",
angrtvbd: "⦝",
angsph: "∢",
angst: "Å",
angzarr: "⍼",
Aogon: "Ą",
aogon: "ą",
Aopf: "𝔸",
aopf: "𝕒",
ap: "≈",
apacir: "⩯",
apE: "⩰",
ape: "≊",
apid: "≋",
apos: "'",
ApplyFunction: "",
approx: "≈",
approxeq: "≊",
Aring: "Å",
aring: "å",
Ascr: "𝒜",
ascr: "𝒶",
Assign: "≔",
ast: "*",
asymp: "≈",
asympeq: "≍",
Atilde: "Ã",
atilde: "ã",
Auml: "Ä",
auml: "ä",
awconint: "∳",
awint: "⨑",
backcong: "≌",
backepsilon: "϶",
backprime: "‵",
backsim: "∽",
backsimeq: "⋍",
Backslash: "∖",
Barv: "⫧",
barvee: "⊽",
Barwed: "⌆",
barwed: "⌅",
barwedge: "⌅",
bbrk: "⎵",
bbrktbrk: "⎶",
bcong: "≌",
Bcy: "Б",
bcy: "б",
bdquo: "„",
becaus: "∵",
Because: "∵",
because: "∵",
bemptyv: "⦰",
bepsi: "϶",
bernou: "ℬ",
Bernoullis: "ℬ",
Beta: "Β",
beta: "β",
beth: "ℶ",
between: "≬",
Bfr: "𝔅",
bfr: "𝔟",
bigcap: "⋂",
bigcirc: "◯",
bigcup: "⋃",
bigodot: "⨀",
bigoplus: "⨁",
bigotimes: "⨂",
bigsqcup: "⨆",
bigstar: "★",
bigtriangledown: "▽",
bigtriangleup: "△",
biguplus: "⨄",
bigvee: "⋁",
bigwedge: "⋀",
bkarow: "⤍",
blacklozenge: "⧫",
blacksquare: "▪",
blacktriangle: "▴",
blacktriangledown: "▾",
blacktriangleleft: "◂",
blacktriangleright: "▸",
blank: "␣",
blk12: "▒",
blk14: "░",
blk34: "▓",
block: "█",
bne: "=⃥",
bnequiv: "≡⃥",
bNot: "⫭",
bnot: "⌐",
Bopf: "𝔹",
bopf: "𝕓",
bot: "⊥",
bottom: "⊥",
bowtie: "⋈",
boxbox: "⧉",
boxDL: "╗",
boxDl: "╖",
boxdL: "╕",
boxdl: "┐",
boxDR: "╔",
boxDr: "╓",
boxdR: "╒",
boxdr: "┌",
boxH: "═",
boxh: "─",
boxHD: "╦",
boxHd: "╤",
boxhD: "╥",
boxhd: "┬",
boxHU: "╩",
boxHu: "╧",
boxhU: "╨",
boxhu: "┴",
boxminus: "⊟",
boxplus: "⊞",
boxtimes: "⊠",
boxUL: "╝",
boxUl: "╜",
boxuL: "╛",
boxul: "┘",
boxUR: "╚",
boxUr: "╙",
boxuR: "╘",
boxur: "└",
boxV: "║",
boxv: "│",
boxVH: "╬",
boxVh: "╫",
boxvH: "╪",
boxvh: "┼",
boxVL: "╣",
boxVl: "╢",
boxvL: "╡",
boxvl: "┤",
boxVR: "╠",
boxVr: "╟",
boxvR: "╞",
boxvr: "├",
bprime: "‵",
Breve: "˘",
breve: "˘",
brvbar: "¦",
Bscr: "ℬ",
bscr: "𝒷",
bsemi: "⁏",
bsim: "∽",
bsime: "⋍",
bsol: "\\",
bsolb: "⧅",
bsolhsub: "⟈",
bull: "•",
bullet: "•",
bump: "≎",
bumpE: "⪮",
bumpe: "≏",
Bumpeq: "≎",
bumpeq: "≏",
Cacute: "Ć",
cacute: "ć",
Cap: "⋒",
cap: "∩",
capand: "⩄",
capbrcup: "⩉",
capcap: "⩋",
capcup: "⩇",
capdot: "⩀",
CapitalDifferentialD: "ⅅ",
caps: "∩︀",
caret: "⁁",
caron: "ˇ",
Cayleys: "ℭ",
ccaps: "⩍",
Ccaron: "Č",
ccaron: "č",
Ccedil: "Ç",
ccedil: "ç",
Ccirc: "Ĉ",
ccirc: "ĉ",
Cconint: "∰",
ccups: "⩌",
ccupssm: "⩐",
Cdot: "Ċ",
cdot: "ċ",
cedil: "¸",
Cedilla: "¸",
cemptyv: "⦲",
cent: "¢",
CenterDot: "·",
centerdot: "·",
Cfr: "ℭ",
cfr: "𝔠",
CHcy: "Ч",
chcy: "ч",
check: "✓",
checkmark: "✓",
Chi: "Χ",
chi: "χ",
cir: "○",
circ: "ˆ",
circeq: "≗",
circlearrowleft: "↺",
circlearrowright: "↻",
circledast: "⊛",
circledcirc: "⊚",
circleddash: "⊝",
CircleDot: "⊙",
circledR: "®",
circledS: "Ⓢ",
CircleMinus: "⊖",
CirclePlus: "⊕",
CircleTimes: "⊗",
cirE: "⧃",
cire: "≗",
cirfnint: "⨐",
cirmid: "⫯",
cirscir: "⧂",
ClockwiseContourIntegral: "∲",
CloseCurlyDoubleQuote: "”",
CloseCurlyQuote: "’",
clubs: "♣",
clubsuit: "♣",
Colon: "∷",
colon: ":",
Colone: "⩴",
colone: "≔",
coloneq: "≔",
comma: ",",
commat: "@",
comp: "∁",
compfn: "∘",
complement: "∁",
complexes: "ℂ",
cong: "≅",
congdot: "⩭",
Congruent: "≡",
Conint: "∯",
conint: "∮",
ContourIntegral: "∮",
Copf: "ℂ",
copf: "𝕔",
coprod: "∐",
Coproduct: "∐",
COPY: "©",
copy: "©",
copysr: "℗",
CounterClockwiseContourIntegral: "∳",
crarr: "↵",
Cross: "⨯",
cross: "✗",
Cscr: "𝒞",
cscr: "𝒸",
csub: "⫏",
csube: "⫑",
csup: "⫐",
csupe: "⫒",
ctdot: "⋯",
cudarrl: "⤸",
cudarrr: "⤵",
cuepr: "⋞",
cuesc: "⋟",
cularr: "↶",
cularrp: "⤽",
Cup: "⋓",
cup: "∪",
cupbrcap: "⩈",
CupCap: "≍",
cupcap: "⩆",
cupcup: "⩊",
cupdot: "⊍",
cupor: "⩅",
cups: "∪︀",
curarr: "↷",
curarrm: "⤼",
curlyeqprec: "⋞",
curlyeqsucc: "⋟",
curlyvee: "⋎",
curlywedge: "⋏",
curren: "¤",
curvearrowleft: "↶",
curvearrowright: "↷",
cuvee: "⋎",
cuwed: "⋏",
cwconint: "∲",
cwint: "∱",
cylcty: "⌭",
Dagger: "‡",
dagger: "†",
daleth: "ℸ",
Darr: "↡",
dArr: "⇓",
darr: "↓",
dash: "‐",
Dashv: "⫤",
dashv: "⊣",
dbkarow: "⤏",
dblac: "˝",
Dcaron: "Ď",
dcaron: "ď",
Dcy: "Д",
dcy: "д",
DD: "ⅅ",
dd: "ⅆ",
ddagger: "‡",
ddarr: "⇊",
DDotrahd: "⤑",
ddotseq: "⩷",
deg: "°",
Del: "∇",
Delta: "Δ",
delta: "δ",
demptyv: "⦱",
dfisht: "⥿",
Dfr: "𝔇",
dfr: "𝔡",
dHar: "⥥",
dharl: "⇃",
dharr: "⇂",
DiacriticalAcute: "´",
DiacriticalDot: "˙",
DiacriticalDoubleAcute: "˝",
DiacriticalGrave: "`",
DiacriticalTilde: "˜",
diam: "⋄",
Diamond: "⋄",
diamond: "⋄",
diamondsuit: "♦",
diams: "♦",
die: "¨",
DifferentialD: "ⅆ",
digamma: "ϝ",
disin: "⋲",
div: "÷",
divide: "÷",
divideontimes: "⋇",
divonx: "⋇",
DJcy: "Ђ",
djcy: "ђ",
dlcorn: "⌞",
dlcrop: "⌍",
dollar: "$",
Dopf: "𝔻",
dopf: "𝕕",
Dot: "¨",
dot: "˙",
DotDot: "⃜",
doteq: "≐",
doteqdot: "≑",
DotEqual: "≐",
dotminus: "∸",