UNPKG

@fmidev/smartmet-alert-client

Version:

Web application for viewing weather and flood alerts

1,659 lines (1,658 loc) 208 kB
/** * 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 == "<" && "&lt;" || r == ">" && "&gt;" || r == "&" && "&amp;" || r == '"' && "&quot;" || "&#" + 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: "∸",