mirror of
https://github.com/mblanke/holiday-travel-app.git
synced 2026-03-01 05:20:22 -05:00
205 lines
1.0 MiB
205 lines
1.0 MiB
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/parse5";
|
|
exports.ids = ["vendor-chunks/parse5"];
|
|
exports.modules = {
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/doctype.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/doctype.js ***!
|
|
\****************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDocumentMode: () => (/* binding */ getDocumentMode),\n/* harmony export */ isConforming: () => (/* binding */ isConforming)\n/* harmony export */ });\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nfunction isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nfunction getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2RvY3R5cGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxlQUFlLG1EQUFhO0FBQzVCO0FBQ0EsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0EsZUFBZSxtREFBYTtBQUM1QjtBQUNBLFVBQVUsV0FBVztBQUNyQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbURBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1EQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1EQUFhO0FBQ2hDO0FBQ0E7QUFDQSxXQUFXLG1EQUFhO0FBQ3hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vZG9jdHlwZS5qcz80MjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UX01PREUgfSBmcm9tICcuL2h0bWwuanMnO1xuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgICcrLy9zaWxtYXJpbC8vZHRkIGh0bWwgcHJvIHYwcjExIDE5OTcwMTAxLy8nLFxuICAgICctLy9hcy8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9hZHZhc29mdCBsdGQvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjFlLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbWV0cml1cy8vZHRkIG1ldHJpdXMgcHJlc2VudGF0aW9uYWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCB0YWJsZXMvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCB0YWJsZXMvLycsXG4gICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vJyxcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCAyLjAvL1wiLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIDEuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgcmVsYXhlZCAxLjAvL1wiLFxuICAgICctLy9zcS8vZHRkIGh0bWwgMi4wIGhvdG1ldGFsICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRhbCBwcm8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc29mdHF1YWQvL2R0ZCBob3RtZXRhbCBwcm8gNC4wOjoxOTk3MTAxMDo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgaHRtbC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgc3RyaWN0IGh0bWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMyAxOTk1LTAzLTI0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIgZmluYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMnMgZHJhZnQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDE5OTYwNzEyLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEvLycsXG4gICAgJy0vL3czYy8vZHRkIHczIGh0bWwvLycsXG4gICAgJy0vL3czby8vZHRkIHczIGh0bWwgMy4wLy8nLFxuICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbCAyLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sLy8nLFxuXTtcbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IG5ldyBTZXQoW1xuICAgICctLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8nLFxuICAgICctL3czYy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsL2VuJyxcbiAgICAnaHRtbCcsXG5dKTtcbmNvbnN0IExJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFsnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIGZyYW1lc2V0Ly8nLCAnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbC8vJ107XG5jb25zdCBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuLy9VdGlsc1xuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIHJldHVybiBwcmVmaXhlcy5zb21lKChwcmVmaXgpID0+IHB1YmxpY0lkLnN0YXJ0c1dpdGgocHJlZml4KSk7XG59XG4vL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uZm9ybWluZyh0b2tlbikge1xuICAgIHJldHVybiAodG9rZW4ubmFtZSA9PT0gVkFMSURfRE9DVFlQRV9OQU1FICYmXG4gICAgICAgIHRva2VuLnB1YmxpY0lkID09PSBudWxsICYmXG4gICAgICAgICh0b2tlbi5zeXN0ZW1JZCA9PT0gbnVsbCB8fCB0b2tlbi5zeXN0ZW1JZCA9PT0gVkFMSURfU1lTVEVNX0lEKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRNb2RlKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLm5hbWUgIT09IFZBTElEX0RPQ1RZUEVfTkFNRSkge1xuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuICAgIGNvbnN0IHsgc3lzdGVtSWQgfSA9IHRva2VuO1xuICAgIGlmIChzeXN0ZW1JZCAmJiBzeXN0ZW1JZC50b0xvd2VyQ2FzZSgpID09PSBRVUlSS1NfTU9ERV9TWVNURU1fSUQpIHtcbiAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgIH1cbiAgICBsZXQgeyBwdWJsaWNJZCB9ID0gdG9rZW47XG4gICAgaWYgKHB1YmxpY0lkICE9PSBudWxsKSB7XG4gICAgICAgIHB1YmxpY0lkID0gcHVibGljSWQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFFVSVJLU19NT0RFX1BVQkxJQ19JRFMuaGFzKHB1YmxpY0lkKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcbiAgICAgICAgaWYgKGhhc1ByZWZpeChwdWJsaWNJZCwgcHJlZml4ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgICAgIH1cbiAgICAgICAgcHJlZml4ZXMgPVxuICAgICAgICAgICAgc3lzdGVtSWQgPT09IG51bGwgPyBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMgOiBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVM7XG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTElNSVRFRF9RVUlSS1M7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTk9fUVVJUktTO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/doctype.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/error-codes.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/error-codes.js ***!
|
|
\********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ERR: () => (/* binding */ ERR)\n/* harmony export */ });\nvar ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2Vycm9yLWNvZGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2NvbW1vbi9lcnJvci1jb2Rlcy5qcz9kODRhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgRVJSO1xuKGZ1bmN0aW9uIChFUlIpIHtcbiAgICBFUlJbXCJjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbVwiXSA9IFwiY29udHJvbC1jaGFyYWN0ZXItaW4taW5wdXQtc3RyZWFtXCI7XG4gICAgRVJSW1wibm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbVwiXSA9IFwibm9uY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbVwiO1xuICAgIEVSUltcInN1cnJvZ2F0ZUluSW5wdXRTdHJlYW1cIl0gPSBcInN1cnJvZ2F0ZS1pbi1pbnB1dC1zdHJlYW1cIjtcbiAgICBFUlJbXCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXNcIl0gPSBcIm5vbi12b2lkLWh0bWwtZWxlbWVudC1zdGFydC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzXCI7XG4gICAgRVJSW1wiZW5kVGFnV2l0aEF0dHJpYnV0ZXNcIl0gPSBcImVuZC10YWctd2l0aC1hdHRyaWJ1dGVzXCI7XG4gICAgRVJSW1wiZW5kVGFnV2l0aFRyYWlsaW5nU29saWR1c1wiXSA9IFwiZW5kLXRhZy13aXRoLXRyYWlsaW5nLXNvbGlkdXNcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkU29saWR1c0luVGFnXCJdID0gXCJ1bmV4cGVjdGVkLXNvbGlkdXMtaW4tdGFnXCI7XG4gICAgRVJSW1widW5leHBlY3RlZE51bGxDaGFyYWN0ZXJcIl0gPSBcInVuZXhwZWN0ZWQtbnVsbC1jaGFyYWN0ZXJcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZVwiXSA9IFwidW5leHBlY3RlZC1xdWVzdGlvbi1tYXJrLWluc3RlYWQtb2YtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWVcIl0gPSBcImludmFsaWQtZmlyc3QtY2hhcmFjdGVyLW9mLXRhZy1uYW1lXCI7XG4gICAgRVJSW1widW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lXCJdID0gXCJ1bmV4cGVjdGVkLWVxdWFscy1zaWduLWJlZm9yZS1hdHRyaWJ1dGUtbmFtZVwiO1xuICAgIEVSUltcIm1pc3NpbmdFbmRUYWdOYW1lXCJdID0gXCJtaXNzaW5nLWVuZC10YWctbmFtZVwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWVcIl0gPSBcInVuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLWF0dHJpYnV0ZS1uYW1lXCI7XG4gICAgRVJSW1widW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJ1bmtub3duLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcIm1pc3Npbmctc2VtaWNvbG9uLWFmdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiXSA9IFwidW5leHBlY3RlZC1jaGFyYWN0ZXItYWZ0ZXItZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWVcIl0gPSBcInVuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLXVucXVvdGVkLWF0dHJpYnV0ZS12YWx1ZVwiO1xuICAgIEVSUltcImVvZkJlZm9yZVRhZ05hbWVcIl0gPSBcImVvZi1iZWZvcmUtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJlb2ZJblRhZ1wiXSA9IFwiZW9mLWluLXRhZ1wiO1xuICAgIEVSUltcIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZVwiXSA9IFwibWlzc2luZy1hdHRyaWJ1dGUtdmFsdWVcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYmV0d2Vlbi1hdHRyaWJ1dGVzXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYWZ0ZXItZG9jdHlwZS1wdWJsaWMta2V5d29yZFwiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1wiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tZG9jdHlwZS1wdWJsaWMtYW5kLXN5c3RlbS1pZGVudGlmaWVyc1wiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZFwiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWtleXdvcmRcIjtcbiAgICBFUlJbXCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllclwiXSA9IFwibWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllclwiO1xuICAgIEVSUltcIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLXF1b3RlLWJlZm9yZS1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJtaXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJcIl0gPSBcIm1pc3NpbmctZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcImFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCJdID0gXCJhYnJ1cHQtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllclwiO1xuICAgIEVSUltcImFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJhYnJ1cHQtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcImNkYXRhSW5IdG1sQ29udGVudFwiXSA9IFwiY2RhdGEtaW4taHRtbC1jb250ZW50XCI7XG4gICAgRVJSW1wiaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50XCJdID0gXCJpbmNvcnJlY3RseS1vcGVuZWQtY29tbWVudFwiO1xuICAgIEVSUltcImVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dFwiXSA9IFwiZW9mLWluLXNjcmlwdC1odG1sLWNvbW1lbnQtbGlrZS10ZXh0XCI7XG4gICAgRVJSW1wiZW9mSW5Eb2N0eXBlXCJdID0gXCJlb2YtaW4tZG9jdHlwZVwiO1xuICAgIEVSUltcIm5lc3RlZENvbW1lbnRcIl0gPSBcIm5lc3RlZC1jb21tZW50XCI7XG4gICAgRVJSW1wiYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50XCJdID0gXCJhYnJ1cHQtY2xvc2luZy1vZi1lbXB0eS1jb21tZW50XCI7XG4gICAgRVJSW1wiZW9mSW5Db21tZW50XCJdID0gXCJlb2YtaW4tY29tbWVudFwiO1xuICAgIEVSUltcImluY29ycmVjdGx5Q2xvc2VkQ29tbWVudFwiXSA9IFwiaW5jb3JyZWN0bHktY2xvc2VkLWNvbW1lbnRcIjtcbiAgICBFUlJbXCJlb2ZJbkNkYXRhXCJdID0gXCJlb2YtaW4tY2RhdGFcIjtcbiAgICBFUlJbXCJhYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcImFic2VuY2Utb2YtZGlnaXRzLWluLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm51bGxDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcIm51bGwtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcInN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwic3Vycm9nYXRlLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlXCJdID0gXCJjaGFyYWN0ZXItcmVmZXJlbmNlLW91dHNpZGUtdW5pY29kZS1yYW5nZVwiO1xuICAgIEVSUltcImNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcImNvbnRyb2wtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwibm9uY2hhcmFjdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYmVmb3JlLWRvY3R5cGUtbmFtZVwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlTmFtZVwiXSA9IFwibWlzc2luZy1kb2N0eXBlLW5hbWVcIjtcbiAgICBFUlJbXCJpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lXCJdID0gXCJpbnZhbGlkLWNoYXJhY3Rlci1zZXF1ZW5jZS1hZnRlci1kb2N0eXBlLW5hbWVcIjtcbiAgICBFUlJbXCJkdXBsaWNhdGVBdHRyaWJ1dGVcIl0gPSBcImR1cGxpY2F0ZS1hdHRyaWJ1dGVcIjtcbiAgICBFUlJbXCJub25Db25mb3JtaW5nRG9jdHlwZVwiXSA9IFwibm9uLWNvbmZvcm1pbmctZG9jdHlwZVwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlXCJdID0gXCJtaXNzaW5nLWRvY3R5cGVcIjtcbiAgICBFUlJbXCJtaXNwbGFjZWREb2N0eXBlXCJdID0gXCJtaXNwbGFjZWQtZG9jdHlwZVwiO1xuICAgIEVSUltcImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50XCJdID0gXCJlbmQtdGFnLXdpdGhvdXQtbWF0Y2hpbmctb3Blbi1lbGVtZW50XCI7XG4gICAgRVJSW1wiY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50c1wiXSA9IFwiY2xvc2luZy1vZi1lbGVtZW50LXdpdGgtb3Blbi1jaGlsZC1lbGVtZW50c1wiO1xuICAgIEVSUltcImRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZFwiXSA9IFwiZGlzYWxsb3dlZC1jb250ZW50LWluLW5vc2NyaXB0LWluLWhlYWRcIjtcbiAgICBFUlJbXCJvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2ZcIl0gPSBcIm9wZW4tZWxlbWVudHMtbGVmdC1hZnRlci1lb2ZcIjtcbiAgICBFUlJbXCJhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkXCJdID0gXCJhYmFuZG9uZWQtaGVhZC1lbGVtZW50LWNoaWxkXCI7XG4gICAgRVJSW1wibWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudFwiXSA9IFwibWlzcGxhY2VkLXN0YXJ0LXRhZy1mb3ItaGVhZC1lbGVtZW50XCI7XG4gICAgRVJSW1wibmVzdGVkTm9zY3JpcHRJbkhlYWRcIl0gPSBcIm5lc3RlZC1ub3NjcmlwdC1pbi1oZWFkXCI7XG4gICAgRVJSW1wiZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dFwiXSA9IFwiZW9mLWluLWVsZW1lbnQtdGhhdC1jYW4tY29udGFpbi1vbmx5LXRleHRcIjtcbn0pKEVSUiB8fCAoRVJSID0ge30pKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/error-codes.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/foreign-content.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/foreign-content.js ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SVG_TAG_NAMES_ADJUSTMENT_MAP: () => (/* binding */ SVG_TAG_NAMES_ADJUSTMENT_MAP),\n/* harmony export */ adjustTokenMathMLAttrs: () => (/* binding */ adjustTokenMathMLAttrs),\n/* harmony export */ adjustTokenSVGAttrs: () => (/* binding */ adjustTokenSVGAttrs),\n/* harmony export */ adjustTokenSVGTagName: () => (/* binding */ adjustTokenSVGTagName),\n/* harmony export */ adjustTokenXMLAttrs: () => (/* binding */ adjustTokenXMLAttrs),\n/* harmony export */ causesExit: () => (/* binding */ causesExit),\n/* harmony export */ isIntegrationPoint: () => (/* binding */ isIntegrationPoint)\n/* harmony export */ });\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.B,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BIG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BLOCKQUOTE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BODY,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CENTER,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CODE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DD,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DIV,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DT,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.EM,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.EMBED,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H1,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H2,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H3,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H4,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H5,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H6,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HEAD,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.I,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.IMG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LI,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LISTING,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MENU,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.META,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.NOBR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.P,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.PRE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RUBY,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.S,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SMALL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SPAN,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.STRONG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.STRIKE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SUB,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SUP,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TT,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.U,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.VAR,\n]);\n//Check exit from foreign content\nfunction causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FONT &&\n startTagToken.attrs.some(({ name }) => name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.COLOR || name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.SIZE || name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nfunction adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nfunction adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nfunction adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nfunction adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = (0,_html_js__WEBPACK_IMPORTED_MODULE_0__.getTagID)(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML && (tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MI || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MO || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MN || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MS || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML && tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG && (tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FOREIGN_OBJECT || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DESC || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TITLE);\n}\nfunction isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE2RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkNBQTZDLHdDQUFFLFFBQVE7QUFDL0Usd0JBQXdCLDZDQUE2Qyx3Q0FBRSxRQUFRO0FBQy9FLHFCQUFxQiwwQ0FBMEMsd0NBQUUsUUFBUTtBQUN6RSxxQkFBcUIsMENBQTBDLHdDQUFFLFFBQVE7QUFDekUscUJBQXFCLDBDQUEwQyx3Q0FBRSxRQUFRO0FBQ3pFLHNCQUFzQiwyQ0FBMkMsd0NBQUUsUUFBUTtBQUMzRSxxQkFBcUIsMENBQTBDLHdDQUFFLFFBQVE7QUFDekUsbUJBQW1CLHdDQUF3Qyx3Q0FBRSxNQUFNO0FBQ25FLG9CQUFvQix5Q0FBeUMsd0NBQUUsTUFBTTtBQUNyRSxnQkFBZ0Isc0NBQXNDLHdDQUFFLFFBQVE7QUFDaEUsc0JBQXNCLDJDQUEyQyx3Q0FBRSxRQUFRO0FBQzNFO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0wsSUFBSSw0Q0FBQztBQUNMLElBQUksNENBQUM7QUFDTCxJQUFJLDRDQUFDO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtQ0FBbUMsNENBQUM7QUFDcEMsb0NBQW9DLE1BQU0sY0FBYywyQ0FBSyxtQkFBbUIsMkNBQUssa0JBQWtCLDJDQUFLO0FBQzVHO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asb0JBQW9CLHdCQUF3QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG9CQUFvQix3QkFBd0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxvQkFBb0Isd0JBQXdCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrREFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix3Q0FBRSxtQkFBbUIsNENBQUMsY0FBYyw0Q0FBQyxjQUFjLDRDQUFDLGNBQWMsNENBQUMsY0FBYyw0Q0FBQztBQUNwRztBQUNBO0FBQ0EsZUFBZSx3Q0FBRSxrQkFBa0IsNENBQUM7QUFDcEMsd0JBQXdCLGtCQUFrQjtBQUMxQyxrQ0FBa0MsMkNBQUs7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix3Q0FBRSxnQkFBZ0IsNENBQUMsMEJBQTBCLDRDQUFDLGdCQUFnQiw0Q0FBQztBQUNqRjtBQUNPO0FBQ1AsMENBQTBDLHdDQUFFO0FBQzVDLHNDQUFzQyx3Q0FBRTtBQUN4QyIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcz8wODlmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRBR19JRCBhcyAkLCBOUywgQVRUUlMsIGdldFRhZ0lEIH0gZnJvbSAnLi9odG1sLmpzJztcbi8vTUlNRSB0eXBlc1xuY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsXG59O1xuLy9BdHRyaWJ1dGVzXG5jb25zdCBERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb251cmwnO1xuY29uc3QgQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9uVVJMJztcbmNvbnN0IFNWR19BVFRSU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgICdhdHRyaWJ1dGVOYW1lJyxcbiAgICAnYXR0cmlidXRlVHlwZScsXG4gICAgJ2Jhc2VGcmVxdWVuY3knLFxuICAgICdiYXNlUHJvZmlsZScsXG4gICAgJ2NhbGNNb2RlJyxcbiAgICAnY2xpcFBhdGhVbml0cycsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgJ2VkZ2VNb2RlJyxcbiAgICAnZmlsdGVyVW5pdHMnLFxuICAgICdnbHlwaFJlZicsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAgICAnZ3JhZGllbnRVbml0cycsXG4gICAgJ2tlcm5lbE1hdHJpeCcsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgICdrZXlQb2ludHMnLFxuICAgICdrZXlTcGxpbmVzJyxcbiAgICAna2V5VGltZXMnLFxuICAgICdsZW5ndGhBZGp1c3QnLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgJ21hcmtlckhlaWdodCcsXG4gICAgJ21hcmtlclVuaXRzJyxcbiAgICAnbWFya2VyV2lkdGgnLFxuICAgICdtYXNrQ29udGVudFVuaXRzJyxcbiAgICAnbWFza1VuaXRzJyxcbiAgICAnbnVtT2N0YXZlcycsXG4gICAgJ3BhdGhMZW5ndGgnLFxuICAgICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgJ3BhdHRlcm5Vbml0cycsXG4gICAgJ3BvaW50c0F0WCcsXG4gICAgJ3BvaW50c0F0WScsXG4gICAgJ3BvaW50c0F0WicsXG4gICAgJ3ByZXNlcnZlQWxwaGEnLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgICAncHJpbWl0aXZlVW5pdHMnLFxuICAgICdyZWZYJyxcbiAgICAncmVmWScsXG4gICAgJ3JlcGVhdENvdW50JyxcbiAgICAncmVwZWF0RHVyJyxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgICAncmVxdWlyZWRGZWF0dXJlcycsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICAgICdzcGVjdWxhckV4cG9uZW50JyxcbiAgICAnc3ByZWFkTWV0aG9kJyxcbiAgICAnc3RhcnRPZmZzZXQnLFxuICAgICdzdGREZXZpYXRpb24nLFxuICAgICdzdGl0Y2hUaWxlcycsXG4gICAgJ3N1cmZhY2VTY2FsZScsXG4gICAgJ3N5c3RlbUxhbmd1YWdlJyxcbiAgICAndGFibGVWYWx1ZXMnLFxuICAgICd0YXJnZXRYJyxcbiAgICAndGFyZ2V0WScsXG4gICAgJ3RleHRMZW5ndGgnLFxuICAgICd2aWV3Qm94JyxcbiAgICAndmlld1RhcmdldCcsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICAnem9vbUFuZFBhbicsXG5dLm1hcCgoYXR0cikgPT4gW2F0dHIudG9Mb3dlckNhc2UoKSwgYXR0cl0pKTtcbmNvbnN0IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgIFsneGxpbms6YWN0dWF0ZScsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazphcmNyb2xlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhcmNyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOmhyZWYnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2hyZWYnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH1dLFxuICAgIFsneGxpbms6cm9sZScsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpzaG93JywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdzaG93JywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOnRpdGxlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0aXRsZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazp0eXBlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3htbDpsYW5nJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnbGFuZycsIG5hbWVzcGFjZTogTlMuWE1MIH1dLFxuICAgIFsneG1sOnNwYWNlJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnc3BhY2UnLCBuYW1lc3BhY2U6IE5TLlhNTCB9XSxcbiAgICBbJ3htbG5zJywgeyBwcmVmaXg6ICcnLCBuYW1lOiAneG1sbnMnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH1dLFxuICAgIFsneG1sbnM6eGxpbmsnLCB7IHByZWZpeDogJ3htbG5zJywgbmFtZTogJ3hsaW5rJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9XSxcbl0pO1xuLy9TVkcgdGFnIG5hbWVzIGFkanVzdG1lbnQgbWFwXG5leHBvcnQgY29uc3QgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgICdhbHRHbHlwaCcsXG4gICAgJ2FsdEdseXBoRGVmJyxcbiAgICAnYWx0R2x5cGhJdGVtJyxcbiAgICAnYW5pbWF0ZUNvbG9yJyxcbiAgICAnYW5pbWF0ZU1vdGlvbicsXG4gICAgJ2FuaW1hdGVUcmFuc2Zvcm0nLFxuICAgICdjbGlwUGF0aCcsXG4gICAgJ2ZlQmxlbmQnLFxuICAgICdmZUNvbG9yTWF0cml4JyxcbiAgICAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICAgJ2ZlQ29tcG9zaXRlJyxcbiAgICAnZmVDb252b2x2ZU1hdHJpeCcsXG4gICAgJ2ZlRGlmZnVzZUxpZ2h0aW5nJyxcbiAgICAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgICdmZURpc3RhbnRMaWdodCcsXG4gICAgJ2ZlRmxvb2QnLFxuICAgICdmZUZ1bmNBJyxcbiAgICAnZmVGdW5jQicsXG4gICAgJ2ZlRnVuY0cnLFxuICAgICdmZUZ1bmNSJyxcbiAgICAnZmVHYXVzc2lhbkJsdXInLFxuICAgICdmZUltYWdlJyxcbiAgICAnZmVNZXJnZScsXG4gICAgJ2ZlTWVyZ2VOb2RlJyxcbiAgICAnZmVNb3JwaG9sb2d5JyxcbiAgICAnZmVPZmZzZXQnLFxuICAgICdmZVBvaW50TGlnaHQnLFxuICAgICdmZVNwZWN1bGFyTGlnaHRpbmcnLFxuICAgICdmZVNwb3RMaWdodCcsXG4gICAgJ2ZlVGlsZScsXG4gICAgJ2ZlVHVyYnVsZW5jZScsXG4gICAgJ2ZvcmVpZ25PYmplY3QnLFxuICAgICdnbHlwaFJlZicsXG4gICAgJ2xpbmVhckdyYWRpZW50JyxcbiAgICAncmFkaWFsR3JhZGllbnQnLFxuICAgICd0ZXh0UGF0aCcsXG5dLm1hcCgodG4pID0+IFt0bi50b0xvd2VyQ2FzZSgpLCB0bl0pKTtcbi8vVGFncyB0aGF0IGNhdXNlcyBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5jb25zdCBFWElUU19GT1JFSUdOX0NPTlRFTlQgPSBuZXcgU2V0KFtcbiAgICAkLkIsXG4gICAgJC5CSUcsXG4gICAgJC5CTE9DS1FVT1RFLFxuICAgICQuQk9EWSxcbiAgICAkLkJSLFxuICAgICQuQ0VOVEVSLFxuICAgICQuQ09ERSxcbiAgICAkLkRELFxuICAgICQuRElWLFxuICAgICQuREwsXG4gICAgJC5EVCxcbiAgICAkLkVNLFxuICAgICQuRU1CRUQsXG4gICAgJC5IMSxcbiAgICAkLkgyLFxuICAgICQuSDMsXG4gICAgJC5INCxcbiAgICAkLkg1LFxuICAgICQuSDYsXG4gICAgJC5IRUFELFxuICAgICQuSFIsXG4gICAgJC5JLFxuICAgICQuSU1HLFxuICAgICQuTEksXG4gICAgJC5MSVNUSU5HLFxuICAgICQuTUVOVSxcbiAgICAkLk1FVEEsXG4gICAgJC5OT0JSLFxuICAgICQuT0wsXG4gICAgJC5QLFxuICAgICQuUFJFLFxuICAgICQuUlVCWSxcbiAgICAkLlMsXG4gICAgJC5TTUFMTCxcbiAgICAkLlNQQU4sXG4gICAgJC5TVFJPTkcsXG4gICAgJC5TVFJJS0UsXG4gICAgJC5TVUIsXG4gICAgJC5TVVAsXG4gICAgJC5UQUJMRSxcbiAgICAkLlRULFxuICAgICQuVSxcbiAgICAkLlVMLFxuICAgICQuVkFSLFxuXSk7XG4vL0NoZWNrIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmV4cG9ydCBmdW5jdGlvbiBjYXVzZXNFeGl0KHN0YXJ0VGFnVG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHN0YXJ0VGFnVG9rZW4udGFnSUQ7XG4gICAgY29uc3QgaXNGb250V2l0aEF0dHJzID0gdG4gPT09ICQuRk9OVCAmJlxuICAgICAgICBzdGFydFRhZ1Rva2VuLmF0dHJzLnNvbWUoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBBVFRSUy5DT0xPUiB8fCBuYW1lID09PSBBVFRSUy5TSVpFIHx8IG5hbWUgPT09IEFUVFJTLkZBQ0UpO1xuICAgIHJldHVybiBpc0ZvbnRXaXRoQXR0cnMgfHwgRVhJVFNfRk9SRUlHTl9DT05URU5ULmhhcyh0bik7XG59XG4vL1Rva2VuIGFkanVzdG1lbnRzXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IERFRklOSVRJT05fVVJMX0FUVFIpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRBdHRyTmFtZSA9IFNWR19BVFRSU19BREpVU1RNRU5UX01BUC5nZXQodG9rZW4uYXR0cnNbaV0ubmFtZSk7XG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBhZGp1c3RlZEF0dHJOYW1lO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ckVudHJ5ID0gWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQLmdldCh0b2tlbi5hdHRyc1tpXS5uYW1lKTtcbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ckVudHJ5KSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5wcmVmaXggPSBhZGp1c3RlZEF0dHJFbnRyeS5wcmVmaXg7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyRW50cnkubmFtZTtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWVzcGFjZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RUb2tlblNWR1RhZ05hbWUodG9rZW4pIHtcbiAgICBjb25zdCBhZGp1c3RlZFRhZ05hbWUgPSBTVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQLmdldCh0b2tlbi50YWdOYW1lKTtcbiAgICBpZiAoYWRqdXN0ZWRUYWdOYW1lICE9IG51bGwpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICAgICAgdG9rZW4udGFnSUQgPSBnZXRUYWdJRCh0b2tlbi50YWdOYW1lKTtcbiAgICB9XG59XG4vL0ludGVncmF0aW9uIHBvaW50c1xuZnVuY3Rpb24gaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpIHtcbiAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTCAmJiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMgfHwgdG4gPT09ICQuTVRFWFQpO1xufVxuZnVuY3Rpb24gaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSB7XG4gICAgaWYgKG5zID09PSBOUy5NQVRITUwgJiYgdG4gPT09ICQuQU5OT1RBVElPTl9YTUwpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGF0dHJzW2ldLm5hbWUgPT09IEFUVFJTLkVOQ09ESU5HKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5URVhUX0hUTUwgfHwgdmFsdWUgPT09IE1JTUVfVFlQRVMuQVBQTElDQVRJT05fWE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBucyA9PT0gTlMuU1ZHICYmICh0biA9PT0gJC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gJC5ERVNDIHx8IHRuID09PSAkLlRJVExFKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycywgZm9yZWlnbk5TKSB7XG4gICAgcmV0dXJuICgoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB8fFxuICAgICAgICAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5NQVRITUwpICYmIGlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQodG4sIG5zKSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/foreign-content.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/html.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/html.js ***!
|
|
\*************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ATTRS: () => (/* binding */ ATTRS),\n/* harmony export */ DOCUMENT_MODE: () => (/* binding */ DOCUMENT_MODE),\n/* harmony export */ NS: () => (/* binding */ NS),\n/* harmony export */ NUMBERED_HEADERS: () => (/* binding */ NUMBERED_HEADERS),\n/* harmony export */ SPECIAL_ELEMENTS: () => (/* binding */ SPECIAL_ELEMENTS),\n/* harmony export */ TAG_ID: () => (/* binding */ TAG_ID),\n/* harmony export */ TAG_NAMES: () => (/* binding */ TAG_NAMES),\n/* harmony export */ getTagID: () => (/* binding */ getTagID),\n/* harmony export */ hasUnescapedText: () => (/* binding */ hasUnescapedText)\n/* harmony export */ });\n/** All valid namespaces in HTML. */\nvar NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nvar ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nvar DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nvar TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nvar TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nfunction getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nconst SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nconst NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nfunction hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2h0bWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnQkFBZ0I7QUFDVjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0JBQXNCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQztBQUNoQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4QkFBOEI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsd0JBQXdCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2NvbW1vbi9odG1sLmpzP2VkNTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEFsbCB2YWxpZCBuYW1lc3BhY2VzIGluIEhUTUwuICovXG5leHBvcnQgdmFyIE5TO1xuKGZ1bmN0aW9uIChOUykge1xuICAgIE5TW1wiSFRNTFwiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiO1xuICAgIE5TW1wiTUFUSE1MXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7XG4gICAgTlNbXCJTVkdcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG4gICAgTlNbXCJYTElOS1wiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiO1xuICAgIE5TW1wiWE1MXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIjtcbiAgICBOU1tcIlhNTE5TXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiO1xufSkoTlMgfHwgKE5TID0ge30pKTtcbmV4cG9ydCB2YXIgQVRUUlM7XG4oZnVuY3Rpb24gKEFUVFJTKSB7XG4gICAgQVRUUlNbXCJUWVBFXCJdID0gXCJ0eXBlXCI7XG4gICAgQVRUUlNbXCJBQ1RJT05cIl0gPSBcImFjdGlvblwiO1xuICAgIEFUVFJTW1wiRU5DT0RJTkdcIl0gPSBcImVuY29kaW5nXCI7XG4gICAgQVRUUlNbXCJQUk9NUFRcIl0gPSBcInByb21wdFwiO1xuICAgIEFUVFJTW1wiTkFNRVwiXSA9IFwibmFtZVwiO1xuICAgIEFUVFJTW1wiQ09MT1JcIl0gPSBcImNvbG9yXCI7XG4gICAgQVRUUlNbXCJGQUNFXCJdID0gXCJmYWNlXCI7XG4gICAgQVRUUlNbXCJTSVpFXCJdID0gXCJzaXplXCI7XG59KShBVFRSUyB8fCAoQVRUUlMgPSB7fSkpO1xuLyoqXG4gKiBUaGUgbW9kZSBvZiB0aGUgZG9jdW1lbnQuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWRvY3VtZW50LWxpbWl0ZWQtcXVpcmtzfVxuICovXG5leHBvcnQgdmFyIERPQ1VNRU5UX01PREU7XG4oZnVuY3Rpb24gKERPQ1VNRU5UX01PREUpIHtcbiAgICBET0NVTUVOVF9NT0RFW1wiTk9fUVVJUktTXCJdID0gXCJuby1xdWlya3NcIjtcbiAgICBET0NVTUVOVF9NT0RFW1wiUVVJUktTXCJdID0gXCJxdWlya3NcIjtcbiAgICBET0NVTUVOVF9NT0RFW1wiTElNSVRFRF9RVUlSS1NcIl0gPSBcImxpbWl0ZWQtcXVpcmtzXCI7XG59KShET0NVTUVOVF9NT0RFIHx8IChET0NVTUVOVF9NT0RFID0ge30pKTtcbmV4cG9ydCB2YXIgVEFHX05BTUVTO1xuKGZ1bmN0aW9uIChUQUdfTkFNRVMpIHtcbiAgICBUQUdfTkFNRVNbXCJBXCJdID0gXCJhXCI7XG4gICAgVEFHX05BTUVTW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICAgIFRBR19OQU1FU1tcIkFOTk9UQVRJT05fWE1MXCJdID0gXCJhbm5vdGF0aW9uLXhtbFwiO1xuICAgIFRBR19OQU1FU1tcIkFQUExFVFwiXSA9IFwiYXBwbGV0XCI7XG4gICAgVEFHX05BTUVTW1wiQVJFQVwiXSA9IFwiYXJlYVwiO1xuICAgIFRBR19OQU1FU1tcIkFSVElDTEVcIl0gPSBcImFydGljbGVcIjtcbiAgICBUQUdfTkFNRVNbXCJBU0lERVwiXSA9IFwiYXNpZGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCXCJdID0gXCJiXCI7XG4gICAgVEFHX05BTUVTW1wiQkFTRVwiXSA9IFwiYmFzZVwiO1xuICAgIFRBR19OQU1FU1tcIkJBU0VGT05UXCJdID0gXCJiYXNlZm9udFwiO1xuICAgIFRBR19OQU1FU1tcIkJHU09VTkRcIl0gPSBcImJnc291bmRcIjtcbiAgICBUQUdfTkFNRVNbXCJCSUdcIl0gPSBcImJpZ1wiO1xuICAgIFRBR19OQU1FU1tcIkJMT0NLUVVPVEVcIl0gPSBcImJsb2NrcXVvdGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCT0RZXCJdID0gXCJib2R5XCI7XG4gICAgVEFHX05BTUVTW1wiQlJcIl0gPSBcImJyXCI7XG4gICAgVEFHX05BTUVTW1wiQlVUVE9OXCJdID0gXCJidXR0b25cIjtcbiAgICBUQUdfTkFNRVNbXCJDQVBUSU9OXCJdID0gXCJjYXB0aW9uXCI7XG4gICAgVEFHX05BTUVTW1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0RFXCJdID0gXCJjb2RlXCI7XG4gICAgVEFHX05BTUVTW1wiQ09MXCJdID0gXCJjb2xcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0xHUk9VUFwiXSA9IFwiY29sZ3JvdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJERFwiXSA9IFwiZGRcIjtcbiAgICBUQUdfTkFNRVNbXCJERVNDXCJdID0gXCJkZXNjXCI7XG4gICAgVEFHX05BTUVTW1wiREVUQUlMU1wiXSA9IFwiZGV0YWlsc1wiO1xuICAgIFRBR19OQU1FU1tcIkRJQUxPR1wiXSA9IFwiZGlhbG9nXCI7XG4gICAgVEFHX05BTUVTW1wiRElSXCJdID0gXCJkaXJcIjtcbiAgICBUQUdfTkFNRVNbXCJESVZcIl0gPSBcImRpdlwiO1xuICAgIFRBR19OQU1FU1tcIkRMXCJdID0gXCJkbFwiO1xuICAgIFRBR19OQU1FU1tcIkRUXCJdID0gXCJkdFwiO1xuICAgIFRBR19OQU1FU1tcIkVNXCJdID0gXCJlbVwiO1xuICAgIFRBR19OQU1FU1tcIkVNQkVEXCJdID0gXCJlbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIkZJRUxEU0VUXCJdID0gXCJmaWVsZHNldFwiO1xuICAgIFRBR19OQU1FU1tcIkZJR0NBUFRJT05cIl0gPSBcImZpZ2NhcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJGSUdVUkVcIl0gPSBcImZpZ3VyZVwiO1xuICAgIFRBR19OQU1FU1tcIkZPTlRcIl0gPSBcImZvbnRcIjtcbiAgICBUQUdfTkFNRVNbXCJGT09URVJcIl0gPSBcImZvb3RlclwiO1xuICAgIFRBR19OQU1FU1tcIkZPUkVJR05fT0JKRUNUXCJdID0gXCJmb3JlaWduT2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiRk9STVwiXSA9IFwiZm9ybVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FXCJdID0gXCJmcmFtZVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FU0VUXCJdID0gXCJmcmFtZXNldFwiO1xuICAgIFRBR19OQU1FU1tcIkgxXCJdID0gXCJoMVwiO1xuICAgIFRBR19OQU1FU1tcIkgyXCJdID0gXCJoMlwiO1xuICAgIFRBR19OQU1FU1tcIkgzXCJdID0gXCJoM1wiO1xuICAgIFRBR19OQU1FU1tcIkg0XCJdID0gXCJoNFwiO1xuICAgIFRBR19OQU1FU1tcIkg1XCJdID0gXCJoNVwiO1xuICAgIFRBR19OQU1FU1tcIkg2XCJdID0gXCJoNlwiO1xuICAgIFRBR19OQU1FU1tcIkhFQURcIl0gPSBcImhlYWRcIjtcbiAgICBUQUdfTkFNRVNbXCJIRUFERVJcIl0gPSBcImhlYWRlclwiO1xuICAgIFRBR19OQU1FU1tcIkhHUk9VUFwiXSA9IFwiaGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiSFJcIl0gPSBcImhyXCI7XG4gICAgVEFHX05BTUVTW1wiSFRNTFwiXSA9IFwiaHRtbFwiO1xuICAgIFRBR19OQU1FU1tcIklcIl0gPSBcImlcIjtcbiAgICBUQUdfTkFNRVNbXCJJTUdcIl0gPSBcImltZ1wiO1xuICAgIFRBR19OQU1FU1tcIklNQUdFXCJdID0gXCJpbWFnZVwiO1xuICAgIFRBR19OQU1FU1tcIklOUFVUXCJdID0gXCJpbnB1dFwiO1xuICAgIFRBR19OQU1FU1tcIklGUkFNRVwiXSA9IFwiaWZyYW1lXCI7XG4gICAgVEFHX05BTUVTW1wiS0VZR0VOXCJdID0gXCJrZXlnZW5cIjtcbiAgICBUQUdfTkFNRVNbXCJMQUJFTFwiXSA9IFwibGFiZWxcIjtcbiAgICBUQUdfTkFNRVNbXCJMSVwiXSA9IFwibGlcIjtcbiAgICBUQUdfTkFNRVNbXCJMSU5LXCJdID0gXCJsaW5rXCI7XG4gICAgVEFHX05BTUVTW1wiTElTVElOR1wiXSA9IFwibGlzdGluZ1wiO1xuICAgIFRBR19OQU1FU1tcIk1BSU5cIl0gPSBcIm1haW5cIjtcbiAgICBUQUdfTkFNRVNbXCJNQUxJR05NQVJLXCJdID0gXCJtYWxpZ25tYXJrXCI7XG4gICAgVEFHX05BTUVTW1wiTUFSUVVFRVwiXSA9IFwibWFycXVlZVwiO1xuICAgIFRBR19OQU1FU1tcIk1BVEhcIl0gPSBcIm1hdGhcIjtcbiAgICBUQUdfTkFNRVNbXCJNRU5VXCJdID0gXCJtZW51XCI7XG4gICAgVEFHX05BTUVTW1wiTUVUQVwiXSA9IFwibWV0YVwiO1xuICAgIFRBR19OQU1FU1tcIk1HTFlQSFwiXSA9IFwibWdseXBoXCI7XG4gICAgVEFHX05BTUVTW1wiTUlcIl0gPSBcIm1pXCI7XG4gICAgVEFHX05BTUVTW1wiTU9cIl0gPSBcIm1vXCI7XG4gICAgVEFHX05BTUVTW1wiTU5cIl0gPSBcIm1uXCI7XG4gICAgVEFHX05BTUVTW1wiTVNcIl0gPSBcIm1zXCI7XG4gICAgVEFHX05BTUVTW1wiTVRFWFRcIl0gPSBcIm10ZXh0XCI7XG4gICAgVEFHX05BTUVTW1wiTkFWXCJdID0gXCJuYXZcIjtcbiAgICBUQUdfTkFNRVNbXCJOT0JSXCJdID0gXCJub2JyXCI7XG4gICAgVEFHX05BTUVTW1wiTk9GUkFNRVNcIl0gPSBcIm5vZnJhbWVzXCI7XG4gICAgVEFHX05BTUVTW1wiTk9FTUJFRFwiXSA9IFwibm9lbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIk5PU0NSSVBUXCJdID0gXCJub3NjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIk9CSkVDVFwiXSA9IFwib2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiT0xcIl0gPSBcIm9sXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUR1JPVVBcIl0gPSBcIm9wdGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUSU9OXCJdID0gXCJvcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJQXCJdID0gXCJwXCI7XG4gICAgVEFHX05BTUVTW1wiUEFSQU1cIl0gPSBcInBhcmFtXCI7XG4gICAgVEFHX05BTUVTW1wiUExBSU5URVhUXCJdID0gXCJwbGFpbnRleHRcIjtcbiAgICBUQUdfTkFNRVNbXCJQUkVcIl0gPSBcInByZVwiO1xuICAgIFRBR19OQU1FU1tcIlJCXCJdID0gXCJyYlwiO1xuICAgIFRBR19OQU1FU1tcIlJQXCJdID0gXCJycFwiO1xuICAgIFRBR19OQU1FU1tcIlJUXCJdID0gXCJydFwiO1xuICAgIFRBR19OQU1FU1tcIlJUQ1wiXSA9IFwicnRjXCI7XG4gICAgVEFHX05BTUVTW1wiUlVCWVwiXSA9IFwicnVieVwiO1xuICAgIFRBR19OQU1FU1tcIlNcIl0gPSBcInNcIjtcbiAgICBUQUdfTkFNRVNbXCJTQ1JJUFRcIl0gPSBcInNjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIlNFQVJDSFwiXSA9IFwic2VhcmNoXCI7XG4gICAgVEFHX05BTUVTW1wiU0VDVElPTlwiXSA9IFwic2VjdGlvblwiO1xuICAgIFRBR19OQU1FU1tcIlNFTEVDVFwiXSA9IFwic2VsZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiU09VUkNFXCJdID0gXCJzb3VyY2VcIjtcbiAgICBUQUdfTkFNRVNbXCJTTUFMTFwiXSA9IFwic21hbGxcIjtcbiAgICBUQUdfTkFNRVNbXCJTUEFOXCJdID0gXCJzcGFuXCI7XG4gICAgVEFHX05BTUVTW1wiU1RSSUtFXCJdID0gXCJzdHJpa2VcIjtcbiAgICBUQUdfTkFNRVNbXCJTVFJPTkdcIl0gPSBcInN0cm9uZ1wiO1xuICAgIFRBR19OQU1FU1tcIlNUWUxFXCJdID0gXCJzdHlsZVwiO1xuICAgIFRBR19OQU1FU1tcIlNVQlwiXSA9IFwic3ViXCI7XG4gICAgVEFHX05BTUVTW1wiU1VNTUFSWVwiXSA9IFwic3VtbWFyeVwiO1xuICAgIFRBR19OQU1FU1tcIlNVUFwiXSA9IFwic3VwXCI7XG4gICAgVEFHX05BTUVTW1wiVEFCTEVcIl0gPSBcInRhYmxlXCI7XG4gICAgVEFHX05BTUVTW1wiVEJPRFlcIl0gPSBcInRib2R5XCI7XG4gICAgVEFHX05BTUVTW1wiVEVNUExBVEVcIl0gPSBcInRlbXBsYXRlXCI7XG4gICAgVEFHX05BTUVTW1wiVEVYVEFSRUFcIl0gPSBcInRleHRhcmVhXCI7XG4gICAgVEFHX05BTUVTW1wiVEZPT1RcIl0gPSBcInRmb290XCI7XG4gICAgVEFHX05BTUVTW1wiVERcIl0gPSBcInRkXCI7XG4gICAgVEFHX05BTUVTW1wiVEhcIl0gPSBcInRoXCI7XG4gICAgVEFHX05BTUVTW1wiVEhFQURcIl0gPSBcInRoZWFkXCI7XG4gICAgVEFHX05BTUVTW1wiVElUTEVcIl0gPSBcInRpdGxlXCI7XG4gICAgVEFHX05BTUVTW1wiVFJcIl0gPSBcInRyXCI7XG4gICAgVEFHX05BTUVTW1wiVFJBQ0tcIl0gPSBcInRyYWNrXCI7XG4gICAgVEFHX05BTUVTW1wiVFRcIl0gPSBcInR0XCI7XG4gICAgVEFHX05BTUVTW1wiVVwiXSA9IFwidVwiO1xuICAgIFRBR19OQU1FU1tcIlVMXCJdID0gXCJ1bFwiO1xuICAgIFRBR19OQU1FU1tcIlNWR1wiXSA9IFwic3ZnXCI7XG4gICAgVEFHX05BTUVTW1wiVkFSXCJdID0gXCJ2YXJcIjtcbiAgICBUQUdfTkFNRVNbXCJXQlJcIl0gPSBcIndiclwiO1xuICAgIFRBR19OQU1FU1tcIlhNUFwiXSA9IFwieG1wXCI7XG59KShUQUdfTkFNRVMgfHwgKFRBR19OQU1FUyA9IHt9KSk7XG4vKipcbiAqIFRhZyBJRHMgYXJlIG51bWVyaWMgSURzIGZvciBrbm93biB0YWcgbmFtZXMuXG4gKlxuICogV2UgdXNlIHRhZyBJRHMgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGFnIG5hbWUgY29tcGFyaXNvbnMuXG4gKi9cbmV4cG9ydCB2YXIgVEFHX0lEO1xuKGZ1bmN0aW9uIChUQUdfSUQpIHtcbiAgICBUQUdfSURbVEFHX0lEW1wiVU5LTk9XTlwiXSA9IDBdID0gXCJVTktOT1dOXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFcIl0gPSAxXSA9IFwiQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBRERSRVNTXCJdID0gMl0gPSBcIkFERFJFU1NcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQU5OT1RBVElPTl9YTUxcIl0gPSAzXSA9IFwiQU5OT1RBVElPTl9YTUxcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVBQTEVUXCJdID0gNF0gPSBcIkFQUExFVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBUkVBXCJdID0gNV0gPSBcIkFSRUFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVJUSUNMRVwiXSA9IDZdID0gXCJBUlRJQ0xFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFTSURFXCJdID0gN10gPSBcIkFTSURFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJcIl0gPSA4XSA9IFwiQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCQVNFXCJdID0gOV0gPSBcIkJBU0VcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQkFTRUZPTlRcIl0gPSAxMF0gPSBcIkJBU0VGT05UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJHU09VTkRcIl0gPSAxMV0gPSBcIkJHU09VTkRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQklHXCJdID0gMTJdID0gXCJCSUdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQkxPQ0tRVU9URVwiXSA9IDEzXSA9IFwiQkxPQ0tRVU9URVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCT0RZXCJdID0gMTRdID0gXCJCT0RZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJSXCJdID0gMTVdID0gXCJCUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCVVRUT05cIl0gPSAxNl0gPSBcIkJVVFRPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDQVBUSU9OXCJdID0gMTddID0gXCJDQVBUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNFTlRFUlwiXSA9IDE4XSA9IFwiQ0VOVEVSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNPREVcIl0gPSAxOV0gPSBcIkNPREVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ09MXCJdID0gMjBdID0gXCJDT0xcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ09MR1JPVVBcIl0gPSAyMV0gPSBcIkNPTEdST1VQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkREXCJdID0gMjJdID0gXCJERFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJERVNDXCJdID0gMjNdID0gXCJERVNDXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRFVEFJTFNcIl0gPSAyNF0gPSBcIkRFVEFJTFNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRElBTE9HXCJdID0gMjVdID0gXCJESUFMT0dcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRElSXCJdID0gMjZdID0gXCJESVJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRElWXCJdID0gMjddID0gXCJESVZcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRExcIl0gPSAyOF0gPSBcIkRMXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRUXCJdID0gMjldID0gXCJEVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJFTVwiXSA9IDMwXSA9IFwiRU1cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRU1CRURcIl0gPSAzMV0gPSBcIkVNQkVEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZJRUxEU0VUXCJdID0gMzJdID0gXCJGSUVMRFNFVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGSUdDQVBUSU9OXCJdID0gMzNdID0gXCJGSUdDQVBUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZJR1VSRVwiXSA9IDM0XSA9IFwiRklHVVJFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPTlRcIl0gPSAzNV0gPSBcIkZPTlRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRk9PVEVSXCJdID0gMzZdID0gXCJGT09URVJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRk9SRUlHTl9PQkpFQ1RcIl0gPSAzN10gPSBcIkZPUkVJR05fT0JKRUNUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPUk1cIl0gPSAzOF0gPSBcIkZPUk1cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRlJBTUVcIl0gPSAzOV0gPSBcIkZSQU1FXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZSQU1FU0VUXCJdID0gNDBdID0gXCJGUkFNRVNFVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIMVwiXSA9IDQxXSA9IFwiSDFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDJcIl0gPSA0Ml0gPSBcIkgyXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkgzXCJdID0gNDNdID0gXCJIM1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJINFwiXSA9IDQ0XSA9IFwiSDRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDVcIl0gPSA0NV0gPSBcIkg1XCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkg2XCJdID0gNDZdID0gXCJINlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIRUFEXCJdID0gNDddID0gXCJIRUFEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkhFQURFUlwiXSA9IDQ4XSA9IFwiSEVBREVSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkhHUk9VUFwiXSA9IDQ5XSA9IFwiSEdST1VQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkhSXCJdID0gNTBdID0gXCJIUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIVE1MXCJdID0gNTFdID0gXCJIVE1MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklcIl0gPSA1Ml0gPSBcIklcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSU1HXCJdID0gNTNdID0gXCJJTUdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSU1BR0VcIl0gPSA1NF0gPSBcIklNQUdFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklOUFVUXCJdID0gNTVdID0gXCJJTlBVVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJRlJBTUVcIl0gPSA1Nl0gPSBcIklGUkFNRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJLRVlHRU5cIl0gPSA1N10gPSBcIktFWUdFTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJMQUJFTFwiXSA9IDU4XSA9IFwiTEFCRUxcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTElcIl0gPSA1OV0gPSBcIkxJXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxJTktcIl0gPSA2MF0gPSBcIkxJTktcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTElTVElOR1wiXSA9IDYxXSA9IFwiTElTVElOR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNQUlOXCJdID0gNjJdID0gXCJNQUlOXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1BTElHTk1BUktcIl0gPSA2M10gPSBcIk1BTElHTk1BUktcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFSUVVFRVwiXSA9IDY0XSA9IFwiTUFSUVVFRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNQVRIXCJdID0gNjVdID0gXCJNQVRIXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1FTlVcIl0gPSA2Nl0gPSBcIk1FTlVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUVUQVwiXSA9IDY3XSA9IFwiTUVUQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNR0xZUEhcIl0gPSA2OF0gPSBcIk1HTFlQSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNSVwiXSA9IDY5XSA9IFwiTUlcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTU9cIl0gPSA3MF0gPSBcIk1PXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1OXCJdID0gNzFdID0gXCJNTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNU1wiXSA9IDcyXSA9IFwiTVNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTVRFWFRcIl0gPSA3M10gPSBcIk1URVhUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5BVlwiXSA9IDc0XSA9IFwiTkFWXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PQlJcIl0gPSA3NV0gPSBcIk5PQlJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTk9GUkFNRVNcIl0gPSA3Nl0gPSBcIk5PRlJBTUVTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PRU1CRURcIl0gPSA3N10gPSBcIk5PRU1CRURcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTk9TQ1JJUFRcIl0gPSA3OF0gPSBcIk5PU0NSSVBUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk9CSkVDVFwiXSA9IDc5XSA9IFwiT0JKRUNUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk9MXCJdID0gODBdID0gXCJPTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPUFRHUk9VUFwiXSA9IDgxXSA9IFwiT1BUR1JPVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiT1BUSU9OXCJdID0gODJdID0gXCJPUFRJT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUFwiXSA9IDgzXSA9IFwiUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJQQVJBTVwiXSA9IDg0XSA9IFwiUEFSQU1cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUExBSU5URVhUXCJdID0gODVdID0gXCJQTEFJTlRFWFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUFJFXCJdID0gODZdID0gXCJQUkVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUkJcIl0gPSA4N10gPSBcIlJCXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJQXCJdID0gODhdID0gXCJSUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSVFwiXSA9IDg5XSA9IFwiUlRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUlRDXCJdID0gOTBdID0gXCJSVENcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUlVCWVwiXSA9IDkxXSA9IFwiUlVCWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTXCJdID0gOTJdID0gXCJTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNDUklQVFwiXSA9IDkzXSA9IFwiU0NSSVBUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNFQVJDSFwiXSA9IDk0XSA9IFwiU0VBUkNIXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNFQ1RJT05cIl0gPSA5NV0gPSBcIlNFQ1RJT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU0VMRUNUXCJdID0gOTZdID0gXCJTRUxFQ1RcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU09VUkNFXCJdID0gOTddID0gXCJTT1VSQ0VcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU01BTExcIl0gPSA5OF0gPSBcIlNNQUxMXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNQQU5cIl0gPSA5OV0gPSBcIlNQQU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1RSSUtFXCJdID0gMTAwXSA9IFwiU1RSSUtFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUUk9OR1wiXSA9IDEwMV0gPSBcIlNUUk9OR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVFlMRVwiXSA9IDEwMl0gPSBcIlNUWUxFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNVQlwiXSA9IDEwM10gPSBcIlNVQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVU1NQVJZXCJdID0gMTA0XSA9IFwiU1VNTUFSWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVVBcIl0gPSAxMDVdID0gXCJTVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEFCTEVcIl0gPSAxMDZdID0gXCJUQUJMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUQk9EWVwiXSA9IDEwN10gPSBcIlRCT0RZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRFTVBMQVRFXCJdID0gMTA4XSA9IFwiVEVNUExBVEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEVYVEFSRUFcIl0gPSAxMDldID0gXCJURVhUQVJFQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJURk9PVFwiXSA9IDExMF0gPSBcIlRGT09UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlREXCJdID0gMTExXSA9IFwiVERcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEhcIl0gPSAxMTJdID0gXCJUSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUSEVBRFwiXSA9IDExM10gPSBcIlRIRUFEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRJVExFXCJdID0gMTE0XSA9IFwiVElUTEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVFJcIl0gPSAxMTVdID0gXCJUUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUUkFDS1wiXSA9IDExNl0gPSBcIlRSQUNLXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRUXCJdID0gMTE3XSA9IFwiVFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVVwiXSA9IDExOF0gPSBcIlVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVUxcIl0gPSAxMTldID0gXCJVTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVkdcIl0gPSAxMjBdID0gXCJTVkdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVkFSXCJdID0gMTIxXSA9IFwiVkFSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIldCUlwiXSA9IDEyMl0gPSBcIldCUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJYTVBcIl0gPSAxMjNdID0gXCJYTVBcIjtcbn0pKFRBR19JRCB8fCAoVEFHX0lEID0ge30pKTtcbmNvbnN0IFRBR19OQU1FX1RPX0lEID0gbmV3IE1hcChbXG4gICAgW1RBR19OQU1FUy5BLCBUQUdfSUQuQV0sXG4gICAgW1RBR19OQU1FUy5BRERSRVNTLCBUQUdfSUQuQUREUkVTU10sXG4gICAgW1RBR19OQU1FUy5BTk5PVEFUSU9OX1hNTCwgVEFHX0lELkFOTk9UQVRJT05fWE1MXSxcbiAgICBbVEFHX05BTUVTLkFQUExFVCwgVEFHX0lELkFQUExFVF0sXG4gICAgW1RBR19OQU1FUy5BUkVBLCBUQUdfSUQuQVJFQV0sXG4gICAgW1RBR19OQU1FUy5BUlRJQ0xFLCBUQUdfSUQuQVJUSUNMRV0sXG4gICAgW1RBR19OQU1FUy5BU0lERSwgVEFHX0lELkFTSURFXSxcbiAgICBbVEFHX05BTUVTLkIsIFRBR19JRC5CXSxcbiAgICBbVEFHX05BTUVTLkJBU0UsIFRBR19JRC5CQVNFXSxcbiAgICBbVEFHX05BTUVTLkJBU0VGT05ULCBUQUdfSUQuQkFTRUZPTlRdLFxuICAgIFtUQUdfTkFNRVMuQkdTT1VORCwgVEFHX0lELkJHU09VTkRdLFxuICAgIFtUQUdfTkFNRVMuQklHLCBUQUdfSUQuQklHXSxcbiAgICBbVEFHX05BTUVTLkJMT0NLUVVPVEUsIFRBR19JRC5CTE9DS1FVT1RFXSxcbiAgICBbVEFHX05BTUVTLkJPRFksIFRBR19JRC5CT0RZXSxcbiAgICBbVEFHX05BTUVTLkJSLCBUQUdfSUQuQlJdLFxuICAgIFtUQUdfTkFNRVMuQlVUVE9OLCBUQUdfSUQuQlVUVE9OXSxcbiAgICBbVEFHX05BTUVTLkNBUFRJT04sIFRBR19JRC5DQVBUSU9OXSxcbiAgICBbVEFHX05BTUVTLkNFTlRFUiwgVEFHX0lELkNFTlRFUl0sXG4gICAgW1RBR19OQU1FUy5DT0RFLCBUQUdfSUQuQ09ERV0sXG4gICAgW1RBR19OQU1FUy5DT0wsIFRBR19JRC5DT0xdLFxuICAgIFtUQUdfTkFNRVMuQ09MR1JPVVAsIFRBR19JRC5DT0xHUk9VUF0sXG4gICAgW1RBR19OQU1FUy5ERCwgVEFHX0lELkREXSxcbiAgICBbVEFHX05BTUVTLkRFU0MsIFRBR19JRC5ERVNDXSxcbiAgICBbVEFHX05BTUVTLkRFVEFJTFMsIFRBR19JRC5ERVRBSUxTXSxcbiAgICBbVEFHX05BTUVTLkRJQUxPRywgVEFHX0lELkRJQUxPR10sXG4gICAgW1RBR19OQU1FUy5ESVIsIFRBR19JRC5ESVJdLFxuICAgIFtUQUdfTkFNRVMuRElWLCBUQUdfSUQuRElWXSxcbiAgICBbVEFHX05BTUVTLkRMLCBUQUdfSUQuRExdLFxuICAgIFtUQUdfTkFNRVMuRFQsIFRBR19JRC5EVF0sXG4gICAgW1RBR19OQU1FUy5FTSwgVEFHX0lELkVNXSxcbiAgICBbVEFHX05BTUVTLkVNQkVELCBUQUdfSUQuRU1CRURdLFxuICAgIFtUQUdfTkFNRVMuRklFTERTRVQsIFRBR19JRC5GSUVMRFNFVF0sXG4gICAgW1RBR19OQU1FUy5GSUdDQVBUSU9OLCBUQUdfSUQuRklHQ0FQVElPTl0sXG4gICAgW1RBR19OQU1FUy5GSUdVUkUsIFRBR19JRC5GSUdVUkVdLFxuICAgIFtUQUdfTkFNRVMuRk9OVCwgVEFHX0lELkZPTlRdLFxuICAgIFtUQUdfTkFNRVMuRk9PVEVSLCBUQUdfSUQuRk9PVEVSXSxcbiAgICBbVEFHX05BTUVTLkZPUkVJR05fT0JKRUNULCBUQUdfSUQuRk9SRUlHTl9PQkpFQ1RdLFxuICAgIFtUQUdfTkFNRVMuRk9STSwgVEFHX0lELkZPUk1dLFxuICAgIFtUQUdfTkFNRVMuRlJBTUUsIFRBR19JRC5GUkFNRV0sXG4gICAgW1RBR19OQU1FUy5GUkFNRVNFVCwgVEFHX0lELkZSQU1FU0VUXSxcbiAgICBbVEFHX05BTUVTLkgxLCBUQUdfSUQuSDFdLFxuICAgIFtUQUdfTkFNRVMuSDIsIFRBR19JRC5IMl0sXG4gICAgW1RBR19OQU1FUy5IMywgVEFHX0lELkgzXSxcbiAgICBbVEFHX05BTUVTLkg0LCBUQUdfSUQuSDRdLFxuICAgIFtUQUdfTkFNRVMuSDUsIFRBR19JRC5INV0sXG4gICAgW1RBR19OQU1FUy5INiwgVEFHX0lELkg2XSxcbiAgICBbVEFHX05BTUVTLkhFQUQsIFRBR19JRC5IRUFEXSxcbiAgICBbVEFHX05BTUVTLkhFQURFUiwgVEFHX0lELkhFQURFUl0sXG4gICAgW1RBR19OQU1FUy5IR1JPVVAsIFRBR19JRC5IR1JPVVBdLFxuICAgIFtUQUdfTkFNRVMuSFIsIFRBR19JRC5IUl0sXG4gICAgW1RBR19OQU1FUy5IVE1MLCBUQUdfSUQuSFRNTF0sXG4gICAgW1RBR19OQU1FUy5JLCBUQUdfSUQuSV0sXG4gICAgW1RBR19OQU1FUy5JTUcsIFRBR19JRC5JTUddLFxuICAgIFtUQUdfTkFNRVMuSU1BR0UsIFRBR19JRC5JTUFHRV0sXG4gICAgW1RBR19OQU1FUy5JTlBVVCwgVEFHX0lELklOUFVUXSxcbiAgICBbVEFHX05BTUVTLklGUkFNRSwgVEFHX0lELklGUkFNRV0sXG4gICAgW1RBR19OQU1FUy5LRVlHRU4sIFRBR19JRC5LRVlHRU5dLFxuICAgIFtUQUdfTkFNRVMuTEFCRUwsIFRBR19JRC5MQUJFTF0sXG4gICAgW1RBR19OQU1FUy5MSSwgVEFHX0lELkxJXSxcbiAgICBbVEFHX05BTUVTLkxJTkssIFRBR19JRC5MSU5LXSxcbiAgICBbVEFHX05BTUVTLkxJU1RJTkcsIFRBR19JRC5MSVNUSU5HXSxcbiAgICBbVEFHX05BTUVTLk1BSU4sIFRBR19JRC5NQUlOXSxcbiAgICBbVEFHX05BTUVTLk1BTElHTk1BUkssIFRBR19JRC5NQUxJR05NQVJLXSxcbiAgICBbVEFHX05BTUVTLk1BUlFVRUUsIFRBR19JRC5NQVJRVUVFXSxcbiAgICBbVEFHX05BTUVTLk1BVEgsIFRBR19JRC5NQVRIXSxcbiAgICBbVEFHX05BTUVTLk1FTlUsIFRBR19JRC5NRU5VXSxcbiAgICBbVEFHX05BTUVTLk1FVEEsIFRBR19JRC5NRVRBXSxcbiAgICBbVEFHX05BTUVTLk1HTFlQSCwgVEFHX0lELk1HTFlQSF0sXG4gICAgW1RBR19OQU1FUy5NSSwgVEFHX0lELk1JXSxcbiAgICBbVEFHX05BTUVTLk1PLCBUQUdfSUQuTU9dLFxuICAgIFtUQUdfTkFNRVMuTU4sIFRBR19JRC5NTl0sXG4gICAgW1RBR19OQU1FUy5NUywgVEFHX0lELk1TXSxcbiAgICBbVEFHX05BTUVTLk1URVhULCBUQUdfSUQuTVRFWFRdLFxuICAgIFtUQUdfTkFNRVMuTkFWLCBUQUdfSUQuTkFWXSxcbiAgICBbVEFHX05BTUVTLk5PQlIsIFRBR19JRC5OT0JSXSxcbiAgICBbVEFHX05BTUVTLk5PRlJBTUVTLCBUQUdfSUQuTk9GUkFNRVNdLFxuICAgIFtUQUdfTkFNRVMuTk9FTUJFRCwgVEFHX0lELk5PRU1CRURdLFxuICAgIFtUQUdfTkFNRVMuTk9TQ1JJUFQsIFRBR19JRC5OT1NDUklQVF0sXG4gICAgW1RBR19OQU1FUy5PQkpFQ1QsIFRBR19JRC5PQkpFQ1RdLFxuICAgIFtUQUdfTkFNRVMuT0wsIFRBR19JRC5PTF0sXG4gICAgW1RBR19OQU1FUy5PUFRHUk9VUCwgVEFHX0lELk9QVEdST1VQXSxcbiAgICBbVEFHX05BTUVTLk9QVElPTiwgVEFHX0lELk9QVElPTl0sXG4gICAgW1RBR19OQU1FUy5QLCBUQUdfSUQuUF0sXG4gICAgW1RBR19OQU1FUy5QQVJBTSwgVEFHX0lELlBBUkFNXSxcbiAgICBbVEFHX05BTUVTLlBMQUlOVEVYVCwgVEFHX0lELlBMQUlOVEVYVF0sXG4gICAgW1RBR19OQU1FUy5QUkUsIFRBR19JRC5QUkVdLFxuICAgIFtUQUdfTkFNRVMuUkIsIFRBR19JRC5SQl0sXG4gICAgW1RBR19OQU1FUy5SUCwgVEFHX0lELlJQXSxcbiAgICBbVEFHX05BTUVTLlJULCBUQUdfSUQuUlRdLFxuICAgIFtUQUdfTkFNRVMuUlRDLCBUQUdfSUQuUlRDXSxcbiAgICBbVEFHX05BTUVTLlJVQlksIFRBR19JRC5SVUJZXSxcbiAgICBbVEFHX05BTUVTLlMsIFRBR19JRC5TXSxcbiAgICBbVEFHX05BTUVTLlNDUklQVCwgVEFHX0lELlNDUklQVF0sXG4gICAgW1RBR19OQU1FUy5TRUFSQ0gsIFRBR19JRC5TRUFSQ0hdLFxuICAgIFtUQUdfTkFNRVMuU0VDVElPTiwgVEFHX0lELlNFQ1RJT05dLFxuICAgIFtUQUdfTkFNRVMuU0VMRUNULCBUQUdfSUQuU0VMRUNUXSxcbiAgICBbVEFHX05BTUVTLlNPVVJDRSwgVEFHX0lELlNPVVJDRV0sXG4gICAgW1RBR19OQU1FUy5TTUFMTCwgVEFHX0lELlNNQUxMXSxcbiAgICBbVEFHX05BTUVTLlNQQU4sIFRBR19JRC5TUEFOXSxcbiAgICBbVEFHX05BTUVTLlNUUklLRSwgVEFHX0lELlNUUklLRV0sXG4gICAgW1RBR19OQU1FUy5TVFJPTkcsIFRBR19JRC5TVFJPTkddLFxuICAgIFtUQUdfTkFNRVMuU1RZTEUsIFRBR19JRC5TVFlMRV0sXG4gICAgW1RBR19OQU1FUy5TVUIsIFRBR19JRC5TVUJdLFxuICAgIFtUQUdfTkFNRVMuU1VNTUFSWSwgVEFHX0lELlNVTU1BUlldLFxuICAgIFtUQUdfTkFNRVMuU1VQLCBUQUdfSUQuU1VQXSxcbiAgICBbVEFHX05BTUVTLlRBQkxFLCBUQUdfSUQuVEFCTEVdLFxuICAgIFtUQUdfTkFNRVMuVEJPRFksIFRBR19JRC5UQk9EWV0sXG4gICAgW1RBR19OQU1FUy5URU1QTEFURSwgVEFHX0lELlRFTVBMQVRFXSxcbiAgICBbVEFHX05BTUVTLlRFWFRBUkVBLCBUQUdfSUQuVEVYVEFSRUFdLFxuICAgIFtUQUdfTkFNRVMuVEZPT1QsIFRBR19JRC5URk9PVF0sXG4gICAgW1RBR19OQU1FUy5URCwgVEFHX0lELlREXSxcbiAgICBbVEFHX05BTUVTLlRILCBUQUdfSUQuVEhdLFxuICAgIFtUQUdfTkFNRVMuVEhFQUQsIFRBR19JRC5USEVBRF0sXG4gICAgW1RBR19OQU1FUy5USVRMRSwgVEFHX0lELlRJVExFXSxcbiAgICBbVEFHX05BTUVTLlRSLCBUQUdfSUQuVFJdLFxuICAgIFtUQUdfTkFNRVMuVFJBQ0ssIFRBR19JRC5UUkFDS10sXG4gICAgW1RBR19OQU1FUy5UVCwgVEFHX0lELlRUXSxcbiAgICBbVEFHX05BTUVTLlUsIFRBR19JRC5VXSxcbiAgICBbVEFHX05BTUVTLlVMLCBUQUdfSUQuVUxdLFxuICAgIFtUQUdfTkFNRVMuU1ZHLCBUQUdfSUQuU1ZHXSxcbiAgICBbVEFHX05BTUVTLlZBUiwgVEFHX0lELlZBUl0sXG4gICAgW1RBR19OQU1FUy5XQlIsIFRBR19JRC5XQlJdLFxuICAgIFtUQUdfTkFNRVMuWE1QLCBUQUdfSUQuWE1QXSxcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ0lEKHRhZ05hbWUpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IFRBR19OQU1FX1RPX0lELmdldCh0YWdOYW1lKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogVEFHX0lELlVOS05PV047XG59XG5jb25zdCAkID0gVEFHX0lEO1xuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRUxFTUVOVFMgPSB7XG4gICAgW05TLkhUTUxdOiBuZXcgU2V0KFtcbiAgICAgICAgJC5BRERSRVNTLFxuICAgICAgICAkLkFQUExFVCxcbiAgICAgICAgJC5BUkVBLFxuICAgICAgICAkLkFSVElDTEUsXG4gICAgICAgICQuQVNJREUsXG4gICAgICAgICQuQkFTRSxcbiAgICAgICAgJC5CQVNFRk9OVCxcbiAgICAgICAgJC5CR1NPVU5ELFxuICAgICAgICAkLkJMT0NLUVVPVEUsXG4gICAgICAgICQuQk9EWSxcbiAgICAgICAgJC5CUixcbiAgICAgICAgJC5CVVRUT04sXG4gICAgICAgICQuQ0FQVElPTixcbiAgICAgICAgJC5DRU5URVIsXG4gICAgICAgICQuQ09MLFxuICAgICAgICAkLkNPTEdST1VQLFxuICAgICAgICAkLkRELFxuICAgICAgICAkLkRFVEFJTFMsXG4gICAgICAgICQuRElSLFxuICAgICAgICAkLkRJVixcbiAgICAgICAgJC5ETCxcbiAgICAgICAgJC5EVCxcbiAgICAgICAgJC5FTUJFRCxcbiAgICAgICAgJC5GSUVMRFNFVCxcbiAgICAgICAgJC5GSUdDQVBUSU9OLFxuICAgICAgICAkLkZJR1VSRSxcbiAgICAgICAgJC5GT09URVIsXG4gICAgICAgICQuRk9STSxcbiAgICAgICAgJC5GUkFNRSxcbiAgICAgICAgJC5GUkFNRVNFVCxcbiAgICAgICAgJC5IMSxcbiAgICAgICAgJC5IMixcbiAgICAgICAgJC5IMyxcbiAgICAgICAgJC5INCxcbiAgICAgICAgJC5INSxcbiAgICAgICAgJC5INixcbiAgICAgICAgJC5IRUFELFxuICAgICAgICAkLkhFQURFUixcbiAgICAgICAgJC5IR1JPVVAsXG4gICAgICAgICQuSFIsXG4gICAgICAgICQuSFRNTCxcbiAgICAgICAgJC5JRlJBTUUsXG4gICAgICAgICQuSU1HLFxuICAgICAgICAkLklOUFVULFxuICAgICAgICAkLkxJLFxuICAgICAgICAkLkxJTkssXG4gICAgICAgICQuTElTVElORyxcbiAgICAgICAgJC5NQUlOLFxuICAgICAgICAkLk1BUlFVRUUsXG4gICAgICAgICQuTUVOVSxcbiAgICAgICAgJC5NRVRBLFxuICAgICAgICAkLk5BVixcbiAgICAgICAgJC5OT0VNQkVELFxuICAgICAgICAkLk5PRlJBTUVTLFxuICAgICAgICAkLk5PU0NSSVBULFxuICAgICAgICAkLk9CSkVDVCxcbiAgICAgICAgJC5PTCxcbiAgICAgICAgJC5QLFxuICAgICAgICAkLlBBUkFNLFxuICAgICAgICAkLlBMQUlOVEVYVCxcbiAgICAgICAgJC5QUkUsXG4gICAgICAgICQuU0NSSVBULFxuICAgICAgICAkLlNFQ1RJT04sXG4gICAgICAgICQuU0VMRUNULFxuICAgICAgICAkLlNPVVJDRSxcbiAgICAgICAgJC5TVFlMRSxcbiAgICAgICAgJC5TVU1NQVJZLFxuICAgICAgICAkLlRBQkxFLFxuICAgICAgICAkLlRCT0RZLFxuICAgICAgICAkLlRELFxuICAgICAgICAkLlRFTVBMQVRFLFxuICAgICAgICAkLlRFWFRBUkVBLFxuICAgICAgICAkLlRGT09ULFxuICAgICAgICAkLlRILFxuICAgICAgICAkLlRIRUFELFxuICAgICAgICAkLlRJVExFLFxuICAgICAgICAkLlRSLFxuICAgICAgICAkLlRSQUNLLFxuICAgICAgICAkLlVMLFxuICAgICAgICAkLldCUixcbiAgICAgICAgJC5YTVAsXG4gICAgXSksXG4gICAgW05TLk1BVEhNTF06IG5ldyBTZXQoWyQuTUksICQuTU8sICQuTU4sICQuTVMsICQuTVRFWFQsICQuQU5OT1RBVElPTl9YTUxdKSxcbiAgICBbTlMuU1ZHXTogbmV3IFNldChbJC5USVRMRSwgJC5GT1JFSUdOX09CSkVDVCwgJC5ERVNDXSksXG4gICAgW05TLlhMSU5LXTogbmV3IFNldCgpLFxuICAgIFtOUy5YTUxdOiBuZXcgU2V0KCksXG4gICAgW05TLlhNTE5TXTogbmV3IFNldCgpLFxufTtcbmV4cG9ydCBjb25zdCBOVU1CRVJFRF9IRUFERVJTID0gbmV3IFNldChbJC5IMSwgJC5IMiwgJC5IMywgJC5INCwgJC5INSwgJC5INl0pO1xuY29uc3QgVU5FU0NBUEVEX1RFWFQgPSBuZXcgU2V0KFtcbiAgICBUQUdfTkFNRVMuU1RZTEUsXG4gICAgVEFHX05BTUVTLlNDUklQVCxcbiAgICBUQUdfTkFNRVMuWE1QLFxuICAgIFRBR19OQU1FUy5JRlJBTUUsXG4gICAgVEFHX05BTUVTLk5PRU1CRUQsXG4gICAgVEFHX05BTUVTLk5PRlJBTUVTLFxuICAgIFRBR19OQU1FUy5QTEFJTlRFWFQsXG5dKTtcbmV4cG9ydCBmdW5jdGlvbiBoYXNVbmVzY2FwZWRUZXh0KHRuLCBzY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgcmV0dXJuIFVORVNDQVBFRF9URVhULmhhcyh0bikgfHwgKHNjcmlwdGluZ0VuYWJsZWQgJiYgdG4gPT09IFRBR19OQU1FUy5OT1NDUklQVCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/html.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/token.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/token.js ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TokenType: () => (/* binding */ TokenType),\n/* harmony export */ getTokenAttr: () => (/* binding */ getTokenAttr)\n/* harmony export */ });\nvar TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nfunction getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3Rva2VuLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsOEJBQThCO0FBQ3hCO0FBQ1AseUNBQXlDLFFBQVE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vdG9rZW4uanM/ZTQwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFRva2VuVHlwZTtcbihmdW5jdGlvbiAoVG9rZW5UeXBlKSB7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkNIQVJBQ1RFUlwiXSA9IDBdID0gXCJDSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiTlVMTF9DSEFSQUNURVJcIl0gPSAxXSA9IFwiTlVMTF9DSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiV0hJVEVTUEFDRV9DSEFSQUNURVJcIl0gPSAyXSA9IFwiV0hJVEVTUEFDRV9DSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiU1RBUlRfVEFHXCJdID0gM10gPSBcIlNUQVJUX1RBR1wiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJFTkRfVEFHXCJdID0gNF0gPSBcIkVORF9UQUdcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiQ09NTUVOVFwiXSA9IDVdID0gXCJDT01NRU5UXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkRPQ1RZUEVcIl0gPSA2XSA9IFwiRE9DVFlQRVwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJFT0ZcIl0gPSA3XSA9IFwiRU9GXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkhJQkVSTkFUSU9OXCJdID0gOF0gPSBcIkhJQkVSTkFUSU9OXCI7XG59KShUb2tlblR5cGUgfHwgKFRva2VuVHlwZSA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW5BdHRyKHRva2VuLCBhdHRyTmFtZSkge1xuICAgIGZvciAobGV0IGkgPSB0b2tlbi5hdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodG9rZW4uYXR0cnNbaV0ubmFtZSA9PT0gYXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbi5hdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/token.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/common/unicode.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/parse5/dist/common/unicode.js ***!
|
|
\****************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CODE_POINTS: () => (/* binding */ CODE_POINTS),\n/* harmony export */ REPLACEMENT_CHARACTER: () => (/* binding */ REPLACEMENT_CHARACTER),\n/* harmony export */ SEQUENCES: () => (/* binding */ SEQUENCES),\n/* harmony export */ getSurrogatePairCodePoint: () => (/* binding */ getSurrogatePairCodePoint),\n/* harmony export */ isControlCodePoint: () => (/* binding */ isControlCodePoint),\n/* harmony export */ isSurrogate: () => (/* binding */ isSurrogate),\n/* harmony export */ isSurrogatePair: () => (/* binding */ isSurrogatePair),\n/* harmony export */ isUndefinedCodePoint: () => (/* binding */ isUndefinedCodePoint)\n/* harmony export */ });\nconst UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nconst REPLACEMENT_CHARACTER = '\\uFFFD';\nvar CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nconst SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nfunction isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nfunction isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nfunction getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nfunction isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nfunction isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3VuaWNvZGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQ0FBa0M7QUFDNUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3VuaWNvZGUuanM/MGE3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBVTkRFRklORURfQ09ERV9QT0lOVFMgPSBuZXcgU2V0KFtcbiAgICA2NTUzNCwgNjU1MzUsIDEzMTA3MCwgMTMxMDcxLCAxOTY2MDYsIDE5NjYwNywgMjYyMTQyLCAyNjIxNDMsIDMyNzY3OCwgMzI3Njc5LCAzOTMyMTQsXG4gICAgMzkzMjE1LCA0NTg3NTAsIDQ1ODc1MSwgNTI0Mjg2LCA1MjQyODcsIDU4OTgyMiwgNTg5ODIzLCA2NTUzNTgsIDY1NTM1OSwgNzIwODk0LFxuICAgIDcyMDg5NSwgNzg2NDMwLCA3ODY0MzEsIDg1MTk2NiwgODUxOTY3LCA5MTc1MDIsIDkxNzUwMywgOTgzMDM4LCA5ODMwMzksIDEwNDg1NzQsXG4gICAgMTA0ODU3NSwgMTExNDExMCwgMTExNDExMSxcbl0pO1xuZXhwb3J0IGNvbnN0IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA9ICdcXHVGRkZEJztcbmV4cG9ydCB2YXIgQ09ERV9QT0lOVFM7XG4oZnVuY3Rpb24gKENPREVfUE9JTlRTKSB7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJFT0ZcIl0gPSAtMV0gPSBcIkVPRlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTlVMTFwiXSA9IDBdID0gXCJOVUxMXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJUQUJVTEFUSU9OXCJdID0gOV0gPSBcIlRBQlVMQVRJT05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkNBUlJJQUdFX1JFVFVSTlwiXSA9IDEzXSA9IFwiQ0FSUklBR0VfUkVUVVJOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMSU5FX0ZFRURcIl0gPSAxMF0gPSBcIkxJTkVfRkVFRFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRk9STV9GRUVEXCJdID0gMTJdID0gXCJGT1JNX0ZFRURcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNQQUNFXCJdID0gMzJdID0gXCJTUEFDRVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRVhDTEFNQVRJT05fTUFSS1wiXSA9IDMzXSA9IFwiRVhDTEFNQVRJT05fTUFSS1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiUVVPVEFUSU9OX01BUktcIl0gPSAzNF0gPSBcIlFVT1RBVElPTl9NQVJLXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJBTVBFUlNBTkRcIl0gPSAzOF0gPSBcIkFNUEVSU0FORFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiQVBPU1RST1BIRVwiXSA9IDM5XSA9IFwiQVBPU1RST1BIRVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiSFlQSEVOX01JTlVTXCJdID0gNDVdID0gXCJIWVBIRU5fTUlOVVNcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNPTElEVVNcIl0gPSA0N10gPSBcIlNPTElEVVNcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkRJR0lUXzBcIl0gPSA0OF0gPSBcIkRJR0lUXzBcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkRJR0lUXzlcIl0gPSA1N10gPSBcIkRJR0lUXzlcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNFTUlDT0xPTlwiXSA9IDU5XSA9IFwiU0VNSUNPTE9OXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMRVNTX1RIQU5fU0lHTlwiXSA9IDYwXSA9IFwiTEVTU19USEFOX1NJR05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkVRVUFMU19TSUdOXCJdID0gNjFdID0gXCJFUVVBTFNfU0lHTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiR1JFQVRFUl9USEFOX1NJR05cIl0gPSA2Ml0gPSBcIkdSRUFURVJfVEhBTl9TSUdOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJRVUVTVElPTl9NQVJLXCJdID0gNjNdID0gXCJRVUVTVElPTl9NQVJLXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9DQVBJVEFMX0FcIl0gPSA2NV0gPSBcIkxBVElOX0NBUElUQUxfQVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fQ0FQSVRBTF9aXCJdID0gOTBdID0gXCJMQVRJTl9DQVBJVEFMX1pcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlJJR0hUX1NRVUFSRV9CUkFDS0VUXCJdID0gOTNdID0gXCJSSUdIVF9TUVVBUkVfQlJBQ0tFVFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiR1JBVkVfQUNDRU5UXCJdID0gOTZdID0gXCJHUkFWRV9BQ0NFTlRcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX1NNQUxMX0FcIl0gPSA5N10gPSBcIkxBVElOX1NNQUxMX0FcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX1NNQUxMX1pcIl0gPSAxMjJdID0gXCJMQVRJTl9TTUFMTF9aXCI7XG59KShDT0RFX1BPSU5UUyB8fCAoQ09ERV9QT0lOVFMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFNFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0g6ICctLScsXG4gICAgQ0RBVEFfU1RBUlQ6ICdbQ0RBVEFbJyxcbiAgICBET0NUWVBFOiAnZG9jdHlwZScsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBQVUJMSUM6ICdwdWJsaWMnLFxuICAgIFNZU1RFTTogJ3N5c3RlbScsXG59O1xuLy9TdXJyb2dhdGVzXG5leHBvcnQgZnVuY3Rpb24gaXNTdXJyb2dhdGUoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gNTUyOTYgJiYgY3AgPD0gNTczNDM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDU2MzIwICYmIGNwIDw9IDU3MzQzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQoY3AxLCBjcDIpIHtcbiAgICByZXR1cm4gKGNwMSAtIDU1Mjk2KSAqIDEwMjQgKyA5MjE2ICsgY3AyO1xufVxuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbENvZGVQb2ludChjcCkge1xuICAgIHJldHVybiAoKGNwICE9PSAweDIwICYmIGNwICE9PSAweDBhICYmIGNwICE9PSAweDBkICYmIGNwICE9PSAweDA5ICYmIGNwICE9PSAweDBjICYmIGNwID49IDB4MDEgJiYgY3AgPD0gMHgxZikgfHxcbiAgICAgICAgKGNwID49IDB4N2YgJiYgY3AgPD0gMHg5ZikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIChjcCA+PSA2NDk3NiAmJiBjcCA8PSA2NTAwNykgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmhhcyhjcCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/common/unicode.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/index.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/parse5/dist/index.js ***!
|
|
\*******************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ErrorCodes: () => (/* reexport safe */ _common_error_codes_js__WEBPACK_IMPORTED_MODULE_3__.ERR),\n/* harmony export */ Parser: () => (/* reexport safe */ _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser),\n/* harmony export */ Token: () => (/* reexport module object */ _common_token_js__WEBPACK_IMPORTED_MODULE_6__),\n/* harmony export */ Tokenizer: () => (/* reexport safe */ _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__.Tokenizer),\n/* harmony export */ TokenizerMode: () => (/* reexport safe */ _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__.TokenizerMode),\n/* harmony export */ defaultTreeAdapter: () => (/* reexport safe */ _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_1__.defaultTreeAdapter),\n/* harmony export */ foreignContent: () => (/* reexport module object */ _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_4__),\n/* harmony export */ html: () => (/* reexport module object */ _common_html_js__WEBPACK_IMPORTED_MODULE_5__),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseFragment: () => (/* binding */ parseFragment),\n/* harmony export */ serialize: () => (/* reexport safe */ _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__.serialize),\n/* harmony export */ serializeOuter: () => (/* reexport safe */ _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__.serializeOuter)\n/* harmony export */ });\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parser/index.js */ \"(rsc)/./node_modules/parse5/dist/parser/index.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree-adapters/default.js */ \"(rsc)/./node_modules/parse5/dist/tree-adapters/default.js\");\n/* harmony import */ var _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serializer/index.js */ \"(rsc)/./node_modules/parse5/dist/serializer/index.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/error-codes.js */ \"(rsc)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common/foreign-content.js */ \"(rsc)/./node_modules/parse5/dist/common/foreign-content.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common/token.js */ \"(rsc)/./node_modules/parse5/dist/common/token.js\");\n/* harmony import */ var _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tokenizer/index.js */ \"(rsc)/./node_modules/parse5/dist/tokenizer/index.js\");\n\n\n\n\n\n/** @internal */\n\n\n\n/** @internal */\n\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nfunction parse(html, options) {\n return _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser.parse(html, options);\n}\nfunction parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMkM7QUFDcUI7QUFDSjtBQUNNO0FBQ047QUFDNUQ7QUFDOEQ7QUFDckI7QUFDRTtBQUMzQztBQUNnRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNPO0FBQ1AsV0FBVyxvREFBTTtBQUNqQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvREFBTTtBQUN6QjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2luZGV4LmpzP2UyZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnLi9wYXJzZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgZGVmYXVsdFRyZWVBZGFwdGVyIH0gZnJvbSAnLi90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanMnO1xuZXhwb3J0IHsgLyoqIEBpbnRlcm5hbCAqLyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlci9pbmRleC5qcyc7XG5leHBvcnQgeyBzZXJpYWxpemUsIHNlcmlhbGl6ZU91dGVyIH0gZnJvbSAnLi9zZXJpYWxpemVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEVSUiBhcyBFcnJvckNvZGVzIH0gZnJvbSAnLi9jb21tb24vZXJyb3ItY29kZXMuanMnO1xuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0ICogYXMgZm9yZWlnbkNvbnRlbnQgZnJvbSAnLi9jb21tb24vZm9yZWlnbi1jb250ZW50LmpzJztcbmV4cG9ydCAqIGFzIGh0bWwgZnJvbSAnLi9jb21tb24vaHRtbC5qcyc7XG5leHBvcnQgKiBhcyBUb2tlbiBmcm9tICcuL2NvbW1vbi90b2tlbi5qcyc7XG4vKiogQGludGVybmFsICovXG5leHBvcnQgeyBUb2tlbml6ZXIsIFRva2VuaXplck1vZGUgfSBmcm9tICcuL3Rva2VuaXplci9pbmRleC5qcyc7XG4vLyBTaG9ydGhhbmRzXG4vKipcbiAqIFBhcnNlcyBhbiBIVE1MIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gaHRtbCBJbnB1dCBIVE1MIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIFBhcnNpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIERvY3VtZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGFyc2U1ID0gcmVxdWlyZSgncGFyc2U1Jyk7XG4gKlxuICogY29uc3QgZG9jdW1lbnQgPSBwYXJzZTUucGFyc2UoJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT5IaSB0aGVyZSE8L2JvZHk+PC9odG1sPicpO1xuICpcbiAqIGNvbnNvbGUubG9nKGRvY3VtZW50LmNoaWxkTm9kZXNbMV0udGFnTmFtZSk7IC8vPiAnaHRtbCdcbiAqYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShodG1sLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIFBhcnNlci5wYXJzZShodG1sLCBvcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyYWdtZW50KGZyYWdtZW50Q29udGV4dCwgaHRtbCwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgZnJhZ21lbnRDb250ZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRpb25zID0gaHRtbDtcbiAgICAgICAgaHRtbCA9IGZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgZnJhZ21lbnRDb250ZXh0ID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VyID0gUGFyc2VyLmdldEZyYWdtZW50UGFyc2VyKGZyYWdtZW50Q29udGV4dCwgb3B0aW9ucyk7XG4gICAgcGFyc2VyLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICByZXR1cm4gcGFyc2VyLmdldEZyYWdtZW50KCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/parser/formatting-element-list.js":
|
|
/*!********************************************************************!*\
|
|
!*** ./node_modules/parse5/dist/parser/formatting-element-list.js ***!
|
|
\********************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EntryType: () => (/* binding */ EntryType),\n/* harmony export */ FormattingElementList: () => (/* binding */ FormattingElementList)\n/* harmony export */ });\n//Const\nconst NOAH_ARK_CAPACITY = 3;\nvar EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4QkFBOEI7QUFDL0IsaUJBQWlCO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2QkFBNkI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9wYXJzZXIvZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanM/ZjJkMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvL0NvbnN0XG5jb25zdCBOT0FIX0FSS19DQVBBQ0lUWSA9IDM7XG5leHBvcnQgdmFyIEVudHJ5VHlwZTtcbihmdW5jdGlvbiAoRW50cnlUeXBlKSB7XG4gICAgRW50cnlUeXBlW0VudHJ5VHlwZVtcIk1hcmtlclwiXSA9IDBdID0gXCJNYXJrZXJcIjtcbiAgICBFbnRyeVR5cGVbRW50cnlUeXBlW1wiRWxlbWVudFwiXSA9IDFdID0gXCJFbGVtZW50XCI7XG59KShFbnRyeVR5cGUgfHwgKEVudHJ5VHlwZSA9IHt9KSk7XG5jb25zdCBNQVJLRVIgPSB7IHR5cGU6IEVudHJ5VHlwZS5NYXJrZXIgfTtcbi8vTGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzXG5leHBvcnQgY2xhc3MgRm9ybWF0dGluZ0VsZW1lbnRMaXN0IHtcbiAgICBjb25zdHJ1Y3Rvcih0cmVlQWRhcHRlcikge1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IFtdO1xuICAgICAgICB0aGlzLmJvb2ttYXJrID0gbnVsbDtcbiAgICB9XG4gICAgLy9Ob2FoIEFyaydzIGNvbmRpdGlvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbiAgICAvL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxuICAgIF9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50LCBuZUF0dHJzKSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZVRhZ05hbWUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobmV3RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5lTmFtZXNwYWNlVVJJID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobmV3RWxlbWVudCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGVsZW1lbnQgfSA9IGVudHJ5O1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gbmVUYWdOYW1lICYmXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IG5lTmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEF0dHJzID0gdGhpcy50cmVlQWRhcHRlci5nZXRBdHRyTGlzdChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEF0dHJzLmxlbmd0aCA9PT0gbmVBdHRyc0xlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goeyBpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGVzO1xuICAgIH1cbiAgICBfZW5zdXJlTm9haEFya0NvbmRpdGlvbihuZXdFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCwgbmVBdHRycyk7XG4gICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvL05PVEU6IGJ1aWxkIGF0dHJzIG1hcCBmb3IgdGhlIG5ldyBlbGVtZW50LCBzbyB3ZSBjYW4gcGVyZm9ybSBmYXN0IGxvb2t1cHNcbiAgICAgICAgY29uc3QgbmVBdHRyc01hcCA9IG5ldyBNYXAobmVBdHRycy5tYXAoKG5lQXR0cikgPT4gW25lQXR0ci5uYW1lLCBuZUF0dHIudmFsdWVdKSk7XG4gICAgICAgIGxldCB2YWxpZENhbmRpZGF0ZXMgPSAwO1xuICAgICAgICAvL05PVEU6IHJlbW92ZSBib3R0b21tb3N0IGNhbmRpZGF0ZXMsIHVudGlsIE5vYWgncyBBcmsgY29uZGl0aW9uIHdpbGwgbm90IGJlIG1ldFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbaV07XG4gICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgYGNhbmRpZGF0ZS5hdHRycy5sZW5ndGggPT09IG5lQXR0cnMubGVuZ3RoYFxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5hdHRycy5ldmVyeSgoY0F0dHIpID0+IG5lQXR0cnNNYXAuZ2V0KGNBdHRyLm5hbWUpID09PSBjQXR0ci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZENhbmRpZGF0ZXMgKz0gMTtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRDYW5kaWRhdGVzID49IE5PQUhfQVJLX0NBUEFDSVRZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoY2FuZGlkYXRlLmlkeCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vTXV0YXRpb25zXG4gICAgaW5zZXJ0TWFya2VyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudW5zaGlmdChNQVJLRVIpO1xuICAgIH1cbiAgICBwdXNoRWxlbWVudChlbGVtZW50LCB0b2tlbikge1xuICAgICAgICB0aGlzLl9lbnN1cmVOb2FoQXJrQ29uZGl0aW9uKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLmVudHJpZXMudW5zaGlmdCh7XG4gICAgICAgICAgICB0eXBlOiBFbnRyeVR5cGUuRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrKGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIGNvbnN0IGJvb2ttYXJrSWR4ID0gdGhpcy5lbnRyaWVzLmluZGV4T2YodGhpcy5ib29rbWFyayk7XG4gICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoYm9va21hcmtJZHgsIDAsIHtcbiAgICAgICAgICAgIHR5cGU6IEVudHJ5VHlwZS5FbGVtZW50LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlRW50cnkoZW50cnkpIHtcbiAgICAgICAgY29uc3QgZW50cnlJbmRleCA9IHRoaXMuZW50cmllcy5pbmRleE9mKGVudHJ5KTtcbiAgICAgICAgaWYgKGVudHJ5SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGVudHJ5SW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgbGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzIHVwIHRvIHRoZSBsYXN0IG1hcmtlci5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2NsZWFyLXRoZS1saXN0LW9mLWFjdGl2ZS1mb3JtYXR0aW5nLWVsZW1lbnRzLXVwLXRvLXRoZS1sYXN0LW1hcmtlclxuICAgICAqL1xuICAgIGNsZWFyVG9MYXN0TWFya2VyKCkge1xuICAgICAgICBjb25zdCBtYXJrZXJJZHggPSB0aGlzLmVudHJpZXMuaW5kZXhPZihNQVJLRVIpO1xuICAgICAgICBpZiAobWFya2VySWR4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKDAsIG1hcmtlcklkeCArIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vU2VhcmNoXG4gICAgZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5NYXJrZXIgfHwgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVudHJ5LmVsZW1lbnQpID09PSB0YWdOYW1lKTtcbiAgICAgICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5FbGVtZW50ID8gZW50cnkgOiBudWxsO1xuICAgIH1cbiAgICBnZXRFbGVtZW50RW50cnkoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuRWxlbWVudCAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/parser/formatting-element-list.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/parser/index.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/parse5/dist/parser/index.js ***!
|
|
\**************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Parser: () => (/* binding */ Parser)\n/* harmony export */ });\n/* harmony import */ var _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../tokenizer/index.js */ \"(rsc)/./node_modules/parse5/dist/tokenizer/index.js\");\n/* harmony import */ var _open_element_stack_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./open-element-stack.js */ \"(rsc)/./node_modules/parse5/dist/parser/open-element-stack.js\");\n/* harmony import */ var _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatting-element-list.js */ \"(rsc)/./node_modules/parse5/dist/parser/formatting-element-list.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../tree-adapters/default.js */ \"(rsc)/./node_modules/parse5/dist/tree-adapters/default.js\");\n/* harmony import */ var _common_doctype_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/doctype.js */ \"(rsc)/./node_modules/parse5/dist/common/doctype.js\");\n/* harmony import */ var _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/foreign-content.js */ \"(rsc)/./node_modules/parse5/dist/common/foreign-content.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/error-codes.js */ \"(rsc)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/unicode.js */ \"(rsc)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/token.js */ \"(rsc)/./node_modules/parse5/dist/common/token.js\");\n\n\n\n\n\n\n\n\n\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_3__.defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nclass Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.Tokenizer(this.options, this);\n this.activeFormattingElements = new _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__.FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? (0,_common_html_js__WEBPACK_IMPORTED_MODULE_8__.getTagID)(this.treeAdapter.getTagName(fragmentContext)) : _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new _open_element_stack_js__WEBPACK_IMPORTED_MODULE_1__.OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TEMPLATE, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA: {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.XMP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IFRAME:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOEMBED:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT: {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT: {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.SCRIPT_DATA;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PLAINTEXT: {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.HTML, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SVG &&\n this.treeAdapter.getTagName(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MGLYPH || token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__.EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n this.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n break;\n }\n else if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return _common_html_js__WEBPACK_IMPORTED_MODULE_8__.SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = (0,_common_html_js__WEBPACK_IMPORTED_MODULE_8__.getTagID)(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS : _common_doctype_js__WEBPACK_IMPORTED_MODULE_4__.getDocumentMode(token);\n if (!_common_doctype_js__WEBPACK_IMPORTED_MODULE_4__.isConforming(token)) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD: {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.HEAD, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META: {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE: {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE: {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT: {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.SCRIPT_DATA);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n tokenInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF ? _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.openElementsLeftAfterEof : _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY: {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET: {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.BODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI && elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI) ||\n ((tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT) && (elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD || elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS &&\n elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV &&\n elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = (0,_common_token_js__WEBPACK_IMPORTED_MODULE_9__.getTokenAttr)(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.IMG;\n token.tagID = _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RTC);\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenMathMLAttrs(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML);\n }\n else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGAttrs(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG);\n }\n else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.I:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.S:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.B:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.U:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BIG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CODE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SMALL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRIKE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.A: {\n aStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H1:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H2:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H3:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H4:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H5:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NAV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MAIN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MENU:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ASIDE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CENTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGURE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FOOTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEADER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIALOG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DETAILS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ARTICLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SEARCH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SECTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SUMMARY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIELDSET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BLOCKQUOTE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.WBR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.AREA:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EMBED:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RB:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PRE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PARAM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TRACK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.APPLET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OBJECT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOEMBED:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAME:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.P, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI);\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.BR, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.A:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.B:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.I:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.S:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.U:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BIG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CODE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SMALL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRIKE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P: {\n pEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NAV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PRE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MAIN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MENU:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ASIDE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CENTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGURE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FOOTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEADER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIALOG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ARTICLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DETAILS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SEARCH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SECTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SUMMARY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LISTING:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIELDSET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BLOCKQUOTE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI: {\n liEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H1:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H2:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H3:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H4:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H5:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR: {\n brEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM: {\n formEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.APPLET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OBJECT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.COLGROUP, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TBODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL: {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP: {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TR, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE: {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD) || p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION: {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP: {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HR: {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.KEYGEN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT: {\n if (p.openElements.hasInSelectScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION: {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT: {\n if (p.openElements.hasInSelectScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD ||\n tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET: {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAME: {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML: {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (_common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML) {\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG) {\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGTagName(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGAttrs(token);\n }\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P || token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWlFO0FBQ047QUFDcUI7QUFDZjtBQUNqQjtBQUNlO0FBQ2hCO0FBQ0M7QUFDMEY7QUFDNUU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG1EQUFDLFFBQVEsbURBQUMsUUFBUSxtREFBQyxRQUFRLG1EQUFDLFFBQVEsbURBQUM7QUFDM0U7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlFQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMERBQVM7QUFDdEMsNENBQTRDLDhFQUFxQjtBQUNqRSxtREFBbUQseURBQVEsaURBQWlELG1EQUFDO0FBQzdHO0FBQ0EsZ0NBQWdDLG9FQUFnQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUlBQXFJLHNE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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZEQUFnQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHVEQUFHO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHVEQUFHO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLDJEQUFtQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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REFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsbURBQUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLG1EQUFDO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxtREFBQztBQUNsRTtBQUNBO0FBQ0EsaURBQWlELG1EQUFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLG1EQUFDO0FBQzFDLDZCQUE2QixzREFBRSxJQUFJLG1EQUFDO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG1EQUFDO0FBQzNDLDJEQUEyRCxtREFBQztBQUM1RCw2Q0FBNkMsbURBQUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQUUsS0FBSyxtREFBQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsT0FBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsbURBQUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1EQUFDO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix1REFBRztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1REFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0NBQUU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0NBQUU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQUUsV0FBVyxtREFBQztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLCtDQUFFO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFFLFFBQVEsbURBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsbURBQUM7QUFDeEMsNkNBQTZDLG1EQUFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQywrQ0FBRTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFFO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLCtDQUErQyxtREFBQztBQUNoRCxxREFBcUQsbURBQUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZCxhQUFhLG1EQUFDO0FBQ2QsYUFBYSxtREFBQztBQUNkLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQUM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IscUVBQTZCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLCtDQUFFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsa0VBQXlCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwrQ0FBRTtBQUM1QixZQUFZLDhFQUFxQztBQUNqRDtBQUNBLCtCQUErQiwrQ0FBRTtBQUNqQyxZQUFZLDZFQUFvQztBQUNoRCxZQUFZLDJFQUFrQztBQUM5QztBQUNBLFFBQVEsMkVBQWtDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1EQUFDLHNCQUFzQixtREFBQztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0EsdURBQXVELCtDQUFFO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2luZGV4LmpzP2I3NTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW5pemVyLCBUb2tlbml6ZXJNb2RlIH0gZnJvbSAnLi4vdG9rZW5pemVyL2luZGV4LmpzJztcbmltcG9ydCB7IE9wZW5FbGVtZW50U3RhY2sgfSBmcm9tICcuL29wZW4tZWxlbWVudC1zdGFjay5qcyc7XG5pbXBvcnQgeyBGb3JtYXR0aW5nRWxlbWVudExpc3QsIEVudHJ5VHlwZSB9IGZyb20gJy4vZm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMnO1xuaW1wb3J0IHsgZGVmYXVsdFRyZWVBZGFwdGVyIH0gZnJvbSAnLi4vdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzJztcbmltcG9ydCAqIGFzIGRvY3R5cGUgZnJvbSAnLi4vY29tbW9uL2RvY3R5cGUuanMnO1xuaW1wb3J0ICogYXMgZm9yZWlnbkNvbnRlbnQgZnJvbSAnLi4vY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyc7XG5pbXBvcnQgeyBFUlIgfSBmcm9tICcuLi9jb21tb24vZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0ICogYXMgdW5pY29kZSBmcm9tICcuLi9jb21tb24vdW5pY29kZS5qcyc7XG5pbXBvcnQgeyBUQUdfSUQgYXMgJCwgVEFHX05BTUVTIGFzIFROLCBOUywgQVRUUlMsIFNQRUNJQUxfRUxFTUVOVFMsIERPQ1VNRU5UX01PREUsIE5VTUJFUkVEX0hFQURFUlMsIGdldFRhZ0lELCB9IGZyb20gJy4uL2NvbW1vbi9odG1sLmpzJztcbmltcG9ydCB7IFRva2VuVHlwZSwgZ2V0VG9rZW5BdHRyLCB9IGZyb20gJy4uL2NvbW1vbi90b2tlbi5qcyc7XG4vL01pc2MgY29uc3RhbnRzXG5jb25zdCBISURERU5fSU5QVVRfVFlQRSA9ICdoaWRkZW4nO1xuLy9BZG9wdGlvbiBhZ2VuY3kgbG9vcHMgaXRlcmF0aW9uIGNvdW50XG5jb25zdCBBQV9PVVRFUl9MT09QX0lURVIgPSA4O1xuY29uc3QgQUFfSU5ORVJfTE9PUF9JVEVSID0gMztcbi8vSW5zZXJ0aW9uIG1vZGVzXG52YXIgSW5zZXJ0aW9uTW9kZTtcbihmdW5jdGlvbiAoSW5zZXJ0aW9uTW9kZSkge1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOSVRJQUxcIl0gPSAwXSA9IFwiSU5JVElBTFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkJFRk9SRV9IVE1MXCJdID0gMV0gPSBcIkJFRk9SRV9IVE1MXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQkVGT1JFX0hFQURcIl0gPSAyXSA9IFwiQkVGT1JFX0hFQURcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9IRUFEXCJdID0gM10gPSBcIklOX0hFQURcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9IRUFEX05PX1NDUklQVFwiXSA9IDRdID0gXCJJTl9IRUFEX05PX1NDUklQVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0hFQURcIl0gPSA1XSA9IFwiQUZURVJfSEVBRFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0JPRFlcIl0gPSA2XSA9IFwiSU5fQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIlRFWFRcIl0gPSA3XSA9IFwiVEVYVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFXCJdID0gOF0gPSBcIklOX1RBQkxFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fVEFCTEVfVEVYVFwiXSA9IDldID0gXCJJTl9UQUJMRV9URVhUXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fQ0FQVElPTlwiXSA9IDEwXSA9IFwiSU5fQ0FQVElPTlwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NPTFVNTl9HUk9VUFwiXSA9IDExXSA9IFwiSU5fQ09MVU1OX0dST1VQXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fVEFCTEVfQk9EWVwiXSA9IDEyXSA9IFwiSU5fVEFCTEVfQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1JPV1wiXSA9IDEzXSA9IFwiSU5fUk9XXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fQ0VMTFwiXSA9IDE0XSA9IFwiSU5fQ0VMTFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1NFTEVDVFwiXSA9IDE1XSA9IFwiSU5fU0VMRUNUXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fU0VMRUNUX0lOX1RBQkxFXCJdID0gMTZdID0gXCJJTl9TRUxFQ1RfSU5fVEFCTEVcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9URU1QTEFURVwiXSA9IDE3XSA9IFwiSU5fVEVNUExBVEVcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9CT0RZXCJdID0gMThdID0gXCJBRlRFUl9CT0RZXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fRlJBTUVTRVRcIl0gPSAxOV0gPSBcIklOX0ZSQU1FU0VUXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQUZURVJfRlJBTUVTRVRcIl0gPSAyMF0gPSBcIkFGVEVSX0ZSQU1FU0VUXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQUZURVJfQUZURVJfQk9EWVwiXSA9IDIxXSA9IFwiQUZURVJfQUZURVJfQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0FGVEVSX0ZSQU1FU0VUXCJdID0gMjJdID0gXCJBRlRFUl9BRlRFUl9GUkFNRVNFVFwiO1xufSkoSW5zZXJ0aW9uTW9kZSB8fCAoSW5zZXJ0aW9uTW9kZSA9IHt9KSk7XG5jb25zdCBCQVNFX0xPQyA9IHtcbiAgICBzdGFydExpbmU6IC0xLFxuICAgIHN0YXJ0Q29sOiAtMSxcbiAgICBzdGFydE9mZnNldDogLTEsXG4gICAgZW5kTGluZTogLTEsXG4gICAgZW5kQ29sOiAtMSxcbiAgICBlbmRPZmZzZXQ6IC0xLFxufTtcbmNvbnN0IFRBQkxFX1NUUlVDVFVSRV9UQUdTID0gbmV3IFNldChbJC5UQUJMRSwgJC5UQk9EWSwgJC5URk9PVCwgJC5USEVBRCwgJC5UUl0pO1xuY29uc3QgZGVmYXVsdFBhcnNlck9wdGlvbnMgPSB7XG4gICAgc2NyaXB0aW5nRW5hYmxlZDogdHJ1ZSxcbiAgICBzb3VyY2VDb2RlTG9jYXRpb25JbmZvOiBmYWxzZSxcbiAgICB0cmVlQWRhcHRlcjogZGVmYXVsdFRyZWVBZGFwdGVyLFxuICAgIG9uUGFyc2VFcnJvcjogbnVsbCxcbn07XG4vL1BhcnNlclxuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgZG9jdW1lbnQsIFxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBmcmFnbWVudENvbnRleHQgPSBudWxsLCBcbiAgICAvKiogQGludGVybmFsICovXG4gICAgc2NyaXB0SGFuZGxlciA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFnbWVudENvbnRleHQgPSBmcmFnbWVudENvbnRleHQ7XG4gICAgICAgIHRoaXMuc2NyaXB0SGFuZGxlciA9IHNjcmlwdEhhbmRsZXI7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTklUSUFMO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTklUSUFMO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuaGVhZEVsZW1lbnQgPSBudWxsO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBub3QgYW4gZWxlbWVudCBpbiB0aGUgSFRNTCBuYW1lc3BhY2UgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGVtcGxhdGUgaW5zZXJ0aW9uIG1vZGUgc3RhY2sgaXMgbWFpbnRhaW5lZCBmcm9tIHRoZSBsZWZ0LlxuICAgICAgICAgKiBJZS4gdGhlIHRvcG1vc3QgZWxlbWVudCB3aWxsIGFsd2F5cyBoYXZlIGluZGV4IDAuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBpbnRlcm5hbFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrID0gW107XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5mcmFtZXNldE9rID0gdHJ1ZTtcbiAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0UGFyc2VyT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMudHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yID0gdGhpcy5vcHRpb25zLm9uUGFyc2VFcnJvcjtcbiAgICAgICAgLy8gQWx3YXlzIGVuYWJsZSBsb2NhdGlvbiBpbmZvIGlmIHdlIHJlcG9ydCBwYXJzZSBlcnJvcnMuXG4gICAgICAgIGlmICh0aGlzLm9uUGFyc2VFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudCAhPT0gbnVsbCAmJiBkb2N1bWVudCAhPT0gdm9pZCAwID8gZG9jdW1lbnQgOiB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50KCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gbmV3IFRva2VuaXplcih0aGlzLm9wdGlvbnMsIHRoaXMpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyA9IG5ldyBGb3JtYXR0aW5nRWxlbWVudExpc3QodGhpcy50cmVlQWRhcHRlcik7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRDb250ZXh0SUQgPSBmcmFnbWVudENvbnRleHQgPyBnZXRUYWdJRCh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZnJhZ21lbnRDb250ZXh0KSkgOiAkLlVOS05PV047XG4gICAgICAgIHRoaXMuX3NldENvbnRleHRNb2RlcyhmcmFnbWVudENvbnRleHQgIT09IG51bGwgJiYgZnJhZ21lbnRDb250ZXh0ICE9PSB2b2lkIDAgPyBmcmFnbWVudENvbnRleHQgOiB0aGlzLmRvY3VtZW50LCB0aGlzLmZyYWdtZW50Q29udGV4dElEKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMgPSBuZXcgT3BlbkVsZW1lbnRTdGFjayh0aGlzLmRvY3VtZW50LCB0aGlzLnRyZWVBZGFwdGVyLCB0aGlzKTtcbiAgICB9XG4gICAgLy8gQVBJXG4gICAgc3RhdGljIHBhcnNlKGh0bWwsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IHRoaXMob3B0aW9ucyk7XG4gICAgICAgIHBhcnNlci50b2tlbml6ZXIud3JpdGUoaHRtbCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBwYXJzZXIuZG9jdW1lbnQ7XG4gICAgfVxuICAgIHN0YXRpYyBnZXRGcmFnbWVudFBhcnNlcihmcmFnbWVudENvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRQYXJzZXJPcHRpb25zLFxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfTtcbiAgICAgICAgLy9OT1RFOiB1c2UgYSA8dGVtcGxhdGU+IGVsZW1lbnQgYXMgdGhlIGZyYWdtZW50IGNvbnRleHQgaWYgbm8gY29udGV4dCBlbGVtZW50IHdhcyBwcm92aWRlZCxcbiAgICAgICAgLy9zbyB3ZSB3aWxsIHBhcnNlIGluIGEgXCJmb3JnaXZpbmdcIiBtYW5uZXJcbiAgICAgICAgZnJhZ21lbnRDb250ZXh0ICE9PSBudWxsICYmIGZyYWdtZW50Q29udGV4dCAhPT0gdm9pZCAwID8gZnJhZ21lbnRDb250ZXh0IDogKGZyYWdtZW50Q29udGV4dCA9IG9wdHMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChUTi5URU1QTEFURSwgTlMuSFRNTCwgW10pKTtcbiAgICAgICAgLy9OT1RFOiBjcmVhdGUgYSBmYWtlIGVsZW1lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHRoZSBgZG9jdW1lbnRgIGZvciBmcmFnbWVudCBwYXJzaW5nLlxuICAgICAgICAvL1RoaXMgaXMgaW1wb3J0YW50IGZvciBqc2RvbSwgd2hlcmUgYSBuZXcgYGRvY3VtZW50YCBjYW5ub3QgYmUgY3JlYXRlZC4gVGhpcyBsZWQgdG9cbiAgICAgICAgLy9mcmFnbWVudCBwYXJzaW5nIG1lc3Npbmcgd2l0aCB0aGUgbWFpbiBgZG9jdW1lbnRgLlxuICAgICAgICBjb25zdCBkb2N1bWVudE1vY2sgPSBvcHRzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoJ2RvY3VtZW50bW9jaycsIE5TLkhUTUwsIFtdKTtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IHRoaXMob3B0cywgZG9jdW1lbnRNb2NrLCBmcmFnbWVudENvbnRleHQpO1xuICAgICAgICBpZiAocGFyc2VyLmZyYWdtZW50Q29udGV4dElEID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICBwYXJzZXIudG1wbEluc2VydGlvbk1vZGVTdGFjay51bnNoaWZ0KEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEUpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlci5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpO1xuICAgICAgICBwYXJzZXIuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgICAgICBwYXJzZXIuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwYXJzZXIuX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlcjtcbiAgICB9XG4gICAgZ2V0RnJhZ21lbnQoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICB0aGlzLl9hZG9wdE5vZGVzKHJvb3RFbGVtZW50LCBmcmFnbWVudCk7XG4gICAgICAgIHJldHVybiBmcmFnbWVudDtcbiAgICB9XG4gICAgLy9FcnJvcnNcbiAgICAvKiogQGludGVybmFsICovXG4gICAgX2Vycih0b2tlbiwgY29kZSwgYmVmb3JlVG9rZW4pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXRoaXMub25QYXJzZUVycm9yKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsb2MgPSAoX2EgPSB0b2tlbi5sb2NhdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogQkFTRV9MT0M7XG4gICAgICAgIGNvbnN0IGVyciA9IHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxvYy5zdGFydExpbmUsXG4gICAgICAgICAgICBzdGFydENvbDogbG9jLnN0YXJ0Q29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxvYy5zdGFydE9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IGJlZm9yZVRva2VuID8gbG9jLnN0YXJ0TGluZSA6IGxvYy5lbmRMaW5lLFxuICAgICAgICAgICAgZW5kQ29sOiBiZWZvcmVUb2tlbiA/IGxvYy5zdGFydENvbCA6IGxvYy5lbmRDb2wsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IGJlZm9yZVRva2VuID8gbG9jLnN0YXJ0T2Zmc2V0IDogbG9jLmVuZE9mZnNldCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblBhcnNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgLy9TdGFjayBldmVudHNcbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25JdGVtUHVzaChub2RlLCB0aWQsIGlzVG9wKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMudHJlZUFkYXB0ZXIpLm9uSXRlbVB1c2gpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBub2RlKTtcbiAgICAgICAgaWYgKGlzVG9wICYmIHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wID4gMClcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRleHRNb2Rlcyhub2RlLCB0aWQpO1xuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25JdGVtUG9wKG5vZGUsIGlzVG9wKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgdGhpcy5fc2V0RW5kTG9jYXRpb24obm9kZSwgdGhpcy5jdXJyZW50VG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMudHJlZUFkYXB0ZXIpLm9uSXRlbVBvcCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIG5vZGUsIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNUb3ApIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50O1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRUYWdJZDtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFnSWQgPSB0aGlzLmZyYWdtZW50Q29udGV4dElEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgKHsgY3VycmVudCwgY3VycmVudFRhZ0lkIH0gPSB0aGlzLm9wZW5FbGVtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMoY3VycmVudCwgY3VycmVudFRhZ0lkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfc2V0Q29udGV4dE1vZGVzKGN1cnJlbnQsIHRpZCkge1xuICAgICAgICBjb25zdCBpc0hUTUwgPSBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50IHx8IChjdXJyZW50ICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpID09PSBOUy5IVE1MKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gIWlzSFRNTDtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSA9XG4gICAgICAgICAgICAhaXNIVE1MICYmIGN1cnJlbnQgIT09IHVuZGVmaW5lZCAmJiB0aWQgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KHRpZCwgY3VycmVudCk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX3N3aXRjaFRvVGV4dFBhcnNpbmcoY3VycmVudFRva2VuLCBuZXh0VG9rZW5pemVyU3RhdGUpIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0RWxlbWVudChjdXJyZW50VG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IG5leHRUb2tlbml6ZXJTdGF0ZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSB0aGlzLmluc2VydGlvbk1vZGU7XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuVEVYVDtcbiAgICB9XG4gICAgc3dpdGNoVG9QbGFpbnRleHRQYXJzaW5nKCkge1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLlRFWFQ7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUExBSU5URVhUO1xuICAgIH1cbiAgICAvL0ZyYWdtZW50IHBhcnNpbmdcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgID8gdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgIDogdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfZmluZEZvcm1JbkZyYWdtZW50Q29udGV4dCgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkgPT09IFROLkZPUk0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gbm9kZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKSB7XG4gICAgICAgIGlmICghdGhpcy5mcmFnbWVudENvbnRleHQgfHwgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5mcmFnbWVudENvbnRleHQpICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmZyYWdtZW50Q29udGV4dElEKSB7XG4gICAgICAgICAgICBjYXNlICQuVElUTEU6XG4gICAgICAgICAgICBjYXNlICQuVEVYVEFSRUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUkNEQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlNUWUxFOlxuICAgICAgICAgICAgY2FzZSAkLlhNUDpcbiAgICAgICAgICAgIGNhc2UgJC5JRlJBTUU6XG4gICAgICAgICAgICBjYXNlICQuTk9FTUJFRDpcbiAgICAgICAgICAgIGNhc2UgJC5OT0ZSQU1FUzpcbiAgICAgICAgICAgIGNhc2UgJC5OT1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5SQVdURVhUO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlNDUklQVDoge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5QTEFJTlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUExBSU5URVhUO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1RyZWUgbXV0YXRpb25cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zZXREb2N1bWVudFR5cGUodG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRva2VuLm5hbWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHB1YmxpY0lkID0gdG9rZW4ucHVibGljSWQgfHwgJyc7XG4gICAgICAgIGNvbnN0IHN5c3RlbUlkID0gdG9rZW4uc3lzdGVtSWQgfHwgJyc7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRUeXBlKHRoaXMuZG9jdW1lbnQsIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7XG4gICAgICAgIGlmICh0b2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRDaGlsZHJlbiA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGRvY1R5cGVOb2RlID0gZG9jdW1lbnRDaGlsZHJlbi5maW5kKChub2RlKSA9PiB0aGlzLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSk7XG4gICAgICAgICAgICBpZiAoZG9jVHlwZU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZG9jVHlwZU5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQsIGxvY2F0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgY29uc3QgbG9jID0gbG9jYXRpb24gJiYge1xuICAgICAgICAgICAgICAgIC4uLmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnOiBsb2NhdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCwgbG9jKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50ICE9PSBudWxsICYmIHBhcmVudCAhPT0gdm9pZCAwID8gcGFyZW50IDogdGhpcy5kb2N1bWVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9yIHNlbGYtY2xvc2luZyB0YWdzLiBBZGQgYW4gZWxlbWVudCB0byB0aGUgdHJlZSwgYnV0IHNraXAgYWRkaW5nIGl0XG4gICAgICogdG8gdGhlIHN0YWNrLlxuICAgICAqL1xuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2FwcGVuZEVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgdG9rZW4uYXR0cnMpO1xuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQsIHRva2VuLmxvY2F0aW9uKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIHRva2VuLnRhZ0lEKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaW5zZXJ0RmFrZUVsZW1lbnQodGFnTmFtZSwgdGFnSUQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgbnVsbCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCwgdGFnSUQpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9pbnNlcnRUZW1wbGF0ZSh0b2tlbikge1xuICAgICAgICBjb25zdCB0bXBsID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIE5TLkhUTUwsIHRva2VuLmF0dHJzKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldFRlbXBsYXRlQ29udGVudCh0bXBsLCBjb250ZW50KTtcbiAgICAgICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZSh0bXBsLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2godG1wbCwgdG9rZW4udGFnSUQpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29udGVudCwgbnVsbCk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChUTi5IVE1MLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbylcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZCh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50LCAkLkhUTUwpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNvbW1lbnROb2RlKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29tbWVudE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKSB7XG4gICAgICAgIGxldCBwYXJlbnQ7XG4gICAgICAgIGxldCBiZWZvcmVFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSkge1xuICAgICAgICAgICAgKHsgcGFyZW50LCBiZWZvcmVFbGVtZW50IH0gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSk7XG4gICAgICAgICAgICBpZiAoYmVmb3JlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnQsIHRva2VuLmNoYXJzLCBiZWZvcmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRva2VuLmxvY2F0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2RlcyhwYXJlbnQpO1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUlkeCA9IGJlZm9yZUVsZW1lbnQgPyBzaWJsaW5ncy5sYXN0SW5kZXhPZihiZWZvcmVFbGVtZW50KSA6IHNpYmxpbmdzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBzaWJsaW5nc1t0ZXh0Tm9kZUlkeCAtIDFdO1xuICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgYSBsb2NhdGlvbiBhc3NpZ25lZCBieSBhbm90aGVyIHRva2VuLCB0aGVuIGp1c3QgdXBkYXRlIHRoZSBlbmQgcG9zaXRpb25cbiAgICAgICAgY29uc3QgdG5Mb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUpO1xuICAgICAgICBpZiAodG5Mb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW5kTGluZSwgZW5kQ29sLCBlbmRPZmZzZXQgfSA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci51cGRhdGVOb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB7IGVuZExpbmUsIGVuZENvbCwgZW5kT2Zmc2V0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9hZG9wdE5vZGVzKGRvbm9yLCByZWNpcGllbnQpIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpOyBjaGlsZDsgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChyZWNpcGllbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBjbG9zaW5nVG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50KSAmJiBjbG9zaW5nVG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBlbmRMb2MgPSBcbiAgICAgICAgICAgIC8vIE5PVEU6IEZvciBjYXNlcyBsaWtlIDxwPiA8cD4gPC9wPiAtIEZpcnN0ICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmdcbiAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgIGNsb3NpbmdUb2tlbi50eXBlID09PSBUb2tlblR5cGUuRU5EX1RBRyAmJiB0biA9PT0gY2xvc2luZ1Rva2VuLnRhZ05hbWVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgZW5kVGFnOiB7IC4uLmN0TG9jIH0sXG4gICAgICAgICAgICAgICAgICAgIGVuZExpbmU6IGN0TG9jLmVuZExpbmUsXG4gICAgICAgICAgICAgICAgICAgIGVuZENvbDogY3RMb2MuZW5kQ29sLFxuICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQ6IGN0TG9jLmVuZE9mZnNldCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgIGVuZExpbmU6IGN0TG9jLnN0YXJ0TGluZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kQ29sOiBjdExvYy5zdGFydENvbCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiBjdExvYy5zdGFydE9mZnNldCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci51cGRhdGVOb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGVuZExvYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9Ub2tlbiBwcm9jZXNzaW5nXG4gICAgc2hvdWxkUHJvY2Vzc1N0YXJ0VGFnVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIC8vIENoZWNrIHRoYXQgbmVpdGhlciBjdXJyZW50ID09PSBkb2N1bWVudCwgb3IgbnMgPT09IE5TLkhUTUxcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnROb3RJbkhUTUwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBjdXJyZW50O1xuICAgICAgICBsZXQgY3VycmVudFRhZ0lkO1xuICAgICAgICBpZiAodGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgIGN1cnJlbnRUYWdJZCA9IHRoaXMuZnJhZ21lbnRDb250ZXh0SUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAoeyBjdXJyZW50LCBjdXJyZW50VGFnSWQgfSA9IHRoaXMub3BlbkVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuU1ZHICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY3VycmVudCkgPT09IFROLkFOTk9UQVRJT05fWE1MICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSA9PT0gTlMuTUFUSE1MKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgLy8gQ2hlY2sgdGhhdCBgY3VycmVudGAgaXMgbm90IGFuIGludGVncmF0aW9uIHBvaW50IGZvciBIVE1MIG9yIE1hdGhNTCBlbGVtZW50cy5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSB8fFxuICAgICAgICAgICAgLy8gSWYgaXQgX2lzXyBhbiBpbnRlZ3JhdGlvbiBwb2ludCwgdGhlbiB3ZSBtaWdodCBoYXZlIHRvIGNoZWNrIHRoYXQgaXQgaXMgbm90IGFuIEhUTUxcbiAgICAgICAgICAgIC8vIGludGVncmF0aW9uIHBvaW50LlxuICAgICAgICAgICAgKCh0b2tlbi50YWdJRCA9PT0gJC5NR0xZUEggfHwgdG9rZW4udGFnSUQgPT09ICQuTUFMSUdOTUFSSykgJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFnSWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudFRhZ0lkLCBjdXJyZW50LCBOUy5IVE1MKSkpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk51bGxDaGFyYWN0ZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuQ09NTUVOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkRPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5TVEFSVF9UQUc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuRU5EX1RBRzoge1xuICAgICAgICAgICAgICAgIHRoaXMub25FbmRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVvZih0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2lzSW50ZWdyYXRpb25Qb2ludCh0aWQsIGVsZW1lbnQsIGZvcmVpZ25OUykge1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBhdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBmb3JlaWduQ29udGVudC5pc0ludGVncmF0aW9uUG9pbnQodGlkLCBucywgYXR0cnMsIGZvcmVpZ25OUyk7XG4gICAgfVxuICAgIC8vQWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgcmVjb25zdHJ1Y3Rpb25cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgbGlzdExlbmd0aCA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXMubGVuZ3RoO1xuICAgICAgICBpZiAobGlzdExlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzLmZpbmRJbmRleCgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5NYXJrZXIgfHwgdGhpcy5vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCkpO1xuICAgICAgICAgICAgY29uc3QgdW5vcGVuSWR4ID0gZW5kSW5kZXggPT09IC0xID8gbGlzdExlbmd0aCAtIDEgOiBlbmRJbmRleCAtIDE7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdW5vcGVuSWR4OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllc1tpXTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGVudHJ5LnRva2VuLCB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbnRyeS5lbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgZW50cnkuZWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9DbG9zZSBlbGVtZW50c1xuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2Nsb3NlVGFibGVDZWxsKCkge1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9jbG9zZVBFbGVtZW50KCkge1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlApO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5QKTtcbiAgICB9XG4gICAgLy9JbnNlcnRpb24gbW9kZXNcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9yZXNldEluc2VydGlvbk1vZGUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIC8vSW5zZXJ0aW9uIG1vZGUgcmVzZXQgbWFwXG4gICAgICAgICAgICBzd2l0Y2ggKGkgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHQgPyB0aGlzLmZyYWdtZW50Q29udGV4dElEIDogdGhpcy5vcGVuRWxlbWVudHMudGFnSURzW2ldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRGT09UOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuQ0FQVElPTjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT047XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkNPTEdST1VQOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5CT0RZOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuU0VMRUNUOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0SW5zZXJ0aW9uTW9kZUZvclNlbGVjdChpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMuaGVhZEVsZW1lbnQgPyBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQgOiBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEg6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NFTEw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5IRUFEOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZUZvclNlbGVjdChzZWxlY3RJZHgpIHtcbiAgICAgICAgaWYgKHNlbGVjdElkeCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzZWxlY3RJZHggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDtcbiAgICB9XG4gICAgLy9Gb3N0ZXIgcGFyZW50aW5nXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKHRuKSB7XG4gICAgICAgIHJldHVybiBUQUJMRV9TVFJVQ1RVUkVfVEFHUy5oYXModG4pO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgJiZcbiAgICAgICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkKSk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vcGVuRWxlbWVudHMudGFnSURzW2ldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShvcGVuRWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhcmVudDogdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQob3BlbkVsZW1lbnQpLCBiZWZvcmVFbGVtZW50OiBudWxsIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUob3BlbkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJlbnQsIGJlZm9yZUVsZW1lbnQ6IG9wZW5FbGVtZW50IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpIC0gMV0sIGJlZm9yZUVsZW1lbnQ6IG51bGwgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgYmVmb3JlRWxlbWVudDogbnVsbCB9O1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9TcGVjaWFsIGVsZW1lbnRzXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaXNTcGVjaWFsRWxlbWVudChlbGVtZW50LCBpZCkge1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gU1BFQ0lBTF9FTEVNRU5UU1tuc10uaGFzKGlkKTtcbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25OdWxsQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvbkNvbW1lbnQodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE5vdEluSFRNTCkge1xuICAgICAgICAgICAgYXBwZW5kQ29tbWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25Eb2N0eXBlKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIGRvY3R5cGVJbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIodG9rZW4sIEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvblN0YXJ0VGFnKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZyAmJiAhdG9rZW4uYWNrU2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2Vycih0b2tlbiwgRVJSLm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGEgZ2l2ZW4gc3RhcnQgdGFnLlxuICAgICAqXG4gICAgICogYG9uU3RhcnRUYWdgIGNoZWNrcyBpZiBhIHNlbGYtY2xvc2luZyB0YWcgd2FzIHJlY29nbml6ZWQuIFdoZW4gYSB0b2tlblxuICAgICAqIGlzIG1vdmVkIGluYmV0d2VlbiBtdWx0aXBsZSBpbnNlcnRpb24gbW9kZXMsIHRoaXMgY2hlY2sgZm9yIHNlbGYtY2xvc2luZ1xuICAgICAqIGNvdWxkIGxlYWQgdG8gZmFsc2UgcG9zaXRpdmVzLiBUbyBhdm9pZCB0aGlzLCBgX3Byb2Nlc3NTdGFydFRhZ2AgaXMgdXNlZFxuICAgICAqIGZvciBuZXN0ZWQgY2FsbHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdG9rZW4gVGhlIHRva2VuIHRvIHByb2Nlc3MuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIF9wcm9jZXNzU3RhcnRUYWcodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkUHJvY2Vzc1N0YXJ0VGFnVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zdGFydFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdCZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luQ2FwdGlvbih0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblJvdyh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0VMTDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5DZWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luU2VsZWN0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGVtcGxhdGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvbkVuZFRhZyh0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Tm90SW5IVE1MKSB7XG4gICAgICAgICAgICBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfZW5kVGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdCZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0JlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdBZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkNhcHRpb24odGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5Sb3codGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkNlbGwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luU2VsZWN0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblNlbGVjdEluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0FmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0FmdGVyRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uRW9mKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUh0bWwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIGVvZkluQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDoge1xuICAgICAgICAgICAgICAgIGVvZkluVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgZW9mSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RvcFBhcnNpbmcodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLnNraXBOZXh0TmV3TGluZSkge1xuICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5jaGFyQ29kZUF0KDApID09PSB1bmljb2RlLkNPREVfUE9JTlRTLkxJTkVfRkVFRCkge1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxufVxuLy9BZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RyZWUtY29uc3RydWN0aW9uLmh0bWwjYWRvcHRpb25BZ2VuY3kpXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9TdGVwcyA1LTggb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodG9rZW4udGFnTmFtZSk7XG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ0lEKSkge1xuICAgICAgICAgICAgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbn1cbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBsZXQgZnVydGhlc3RCbG9jayA9IG51bGw7XG4gICAgbGV0IGlkeCA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wO1xuICAgIGZvciAoOyBpZHggPj0gMDsgaWR4LS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2lkeF07XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQsIHAub3BlbkVsZW1lbnRzLnRhZ0lEc1tpZHhdKSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnNob3J0ZW5Ub0xlbmd0aChNYXRoLm1heChpZHgsIDApKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgfVxuICAgIHJldHVybiBmdXJ0aGVzdEJsb2NrO1xufVxuLy9TdGVwIDEzIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhSW5uZXJMb29wKHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50KSB7XG4gICAgbGV0IGxhc3RFbGVtZW50ID0gZnVydGhlc3RCbG9jaztcbiAgICBsZXQgbmV4dEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3RvcihmdXJ0aGVzdEJsb2NrKTtcbiAgICBmb3IgKGxldCBpID0gMCwgZWxlbWVudCA9IG5leHRFbGVtZW50OyBlbGVtZW50ICE9PSBmb3JtYXR0aW5nRWxlbWVudDsgaSsrLCBlbGVtZW50ID0gbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgLy9OT1RFOiBzdG9yZSB0aGUgbmV4dCBlbGVtZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiAoaXQgbWF5IGJlIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2sgYnkgc3RlcCA5LjUpXG4gICAgICAgIG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY291bnRlck92ZXJmbG93ID0gZWxlbWVudEVudHJ5ICYmIGkgPj0gQUFfSU5ORVJfTE9PUF9JVEVSO1xuICAgICAgICBjb25zdCBzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzID0gIWVsZW1lbnRFbnRyeSB8fCBjb3VudGVyT3ZlcmZsb3c7XG4gICAgICAgIGlmIChzaG91bGRSZW1vdmVGcm9tT3BlbkVsZW1lbnRzKSB7XG4gICAgICAgICAgICBpZiAoY291bnRlck92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpO1xuICAgICAgICAgICAgaWYgKGxhc3RFbGVtZW50ID09PSBmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuYm9va21hcmsgPSBlbGVtZW50RW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChlbGVtZW50LCBsYXN0RWxlbWVudCk7XG4gICAgICAgICAgICBsYXN0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxhc3RFbGVtZW50O1xufVxuLy9TdGVwIDEzLjcgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkocCwgZWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHAudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChlbGVtZW50RW50cnkudG9rZW4udGFnTmFtZSwgbnMsIGVsZW1lbnRFbnRyeS50b2tlbi5hdHRycyk7XG4gICAgcC5vcGVuRWxlbWVudHMucmVwbGFjZShlbGVtZW50RW50cnkuZWxlbWVudCwgbmV3RWxlbWVudCk7XG4gICAgZWxlbWVudEVudHJ5LmVsZW1lbnQgPSBuZXdFbGVtZW50O1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuLy9TdGVwIDE0IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCkge1xuICAgIGNvbnN0IHRuID0gcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGNvbW1vbkFuY2VzdG9yKTtcbiAgICBjb25zdCB0aWQgPSBnZXRUYWdJRCh0bik7XG4gICAgaWYgKHAuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyh0aWQpKSB7XG4gICAgICAgIHAuX2Zvc3RlclBhcmVudEVsZW1lbnQobGFzdEVsZW1lbnQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjb21tb25BbmNlc3Rvcik7XG4gICAgICAgIGlmICh0aWQgPT09ICQuVEVNUExBVEUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gcC50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcbiAgICB9XG59XG4vL1N0ZXBzIDE1LTE5IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgY29uc3QgeyB0b2tlbiB9ID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG4gICAgcC5fYWRvcHROb2RlcyhmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcbiAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrKG5ld0VsZW1lbnQsIHRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBwLm9wZW5FbGVtZW50cy5pbnNlcnRBZnRlcihmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50LCB0b2tlbi50YWdJRCk7XG59XG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBBQV9PVVRFUl9MT09QX0lURVI7IGkrKykge1xuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKTtcbiAgICAgICAgaWYgKCFmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgICAgICBpZiAoIWZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbiAgICAgICAgY29uc3QgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShsYXN0RWxlbWVudCk7XG4gICAgICAgIGlmIChjb21tb25BbmNlc3RvcilcbiAgICAgICAgICAgIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgICAgIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cbn1cbi8vR2VuZXJpYyB0b2tlbiBoYW5kbGVyc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50T3JOb2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5mdW5jdGlvbiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLmRvY3VtZW50KTtcbn1cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHAsIHRva2VuKSB7XG4gICAgcC5zdG9wcGVkID0gdHJ1ZTtcbiAgICAvLyBOT1RFOiBTZXQgZW5kIGxvY2F0aW9ucyBmb3IgZWxlbWVudHMgdGhhdCByZW1haW4gb24gdGhlIG9wZW4gZWxlbWVudCBzdGFjay5cbiAgICBpZiAodG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgLy8gTk9URTogSWYgd2UgYXJlIG5vdCBpbiBhIGZyYWdtZW50LCBgaHRtbGAgYW5kIGBib2R5YCB3aWxsIHN0YXkgb24gdGhlIHN0YWNrLlxuICAgICAgICAvLyBUaGlzIGlzIGEgcHJvYmxlbSwgYXMgd2UgbWlnaHQgb3ZlcndyaXRlIHRoZWlyIGVuZCBwb3NpdGlvbiBoZXJlLlxuICAgICAgICBjb25zdCB0YXJnZXQgPSBwLmZyYWdtZW50Q29udGV4dCA/IDAgOiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gdGFyZ2V0OyBpLS0pIHtcbiAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSGFuZGxlIGBodG1sYCBhbmQgYGJvZHlgXG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxMb2NhdGlvbiA9IHAudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihodG1sRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaHRtbExvY2F0aW9uICYmICFodG1sTG9jYXRpb24uZW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oaHRtbEVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5TG9jYXRpb24gPSBwLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oYm9keUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9keUxvY2F0aW9uICYmICFib2R5TG9jYXRpb24uZW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihib2R5RWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW5pdGlhbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZG9jdHlwZUluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9zZXREb2N1bWVudFR5cGUodG9rZW4pO1xuICAgIGNvbnN0IG1vZGUgPSB0b2tlbi5mb3JjZVF1aXJrcyA/IERPQ1VNRU5UX01PREUuUVVJUktTIDogZG9jdHlwZS5nZXREb2N1bWVudE1vZGUodG9rZW4pO1xuICAgIGlmICghZG9jdHlwZS5pc0NvbmZvcm1pbmcodG9rZW4pKSB7XG4gICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLm5vbkNvbmZvcm1pbmdEb2N0eXBlKTtcbiAgICB9XG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDtcbn1cbmZ1bmN0aW9uIHRva2VuSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX2Vycih0b2tlbiwgRVJSLm1pc3NpbmdEb2N0eXBlLCB0cnVlKTtcbiAgICBwLnRyZWVBZGFwdGVyLnNldERvY3VtZW50TW9kZShwLmRvY3VtZW50LCBET0NVTUVOVF9NT0RFLlFVSVJLUyk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdCZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAodG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkJlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJiZWZvcmUgaGVhZFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdCZWZvcmVIZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkhFQUQgfHwgdG4gPT09ICQuQk9EWSB8fCB0biA9PT0gJC5IVE1MIHx8IHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uSEVBRCwgJC5IRUFEKTtcbiAgICBwLmhlYWRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImluIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJBU0U6XG4gICAgICAgIGNhc2UgJC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSAkLkJHU09VTkQ6XG4gICAgICAgIGNhc2UgJC5MSU5LOlxuICAgICAgICBjYXNlICQuTUVUQToge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVElUTEU6IHtcbiAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkNEQVRBKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT1NDUklQVDoge1xuICAgICAgICAgICAgaWYgKHAub3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyTW9kZS5SQVdURVhUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TVFlMRToge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyTW9kZS5SQVdURVhUKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6IHtcbiAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuU0NSSVBUX0RBVEEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRUZW1wbGF0ZSh0b2tlbik7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURTtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFjay51bnNoaWZ0KEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSEVBRDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkJSOlxuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NUaG9yb3VnaGx5KCk7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgIT09ICQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmNsb3NpbmdPZkVsZW1lbnRXaXRoT3BlbkNoaWxkRWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRFTVBMQVRFKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnNoaWZ0KCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBoZWFkIG5vIHNjcmlwdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSAkLkJHU09VTkQ6XG4gICAgICAgIGNhc2UgJC5IRUFEOlxuICAgICAgICBjYXNlICQuTElOSzpcbiAgICAgICAgY2FzZSAkLk1FVEE6XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzpcbiAgICAgICAgY2FzZSAkLlNUWUxFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLm5lc3RlZE5vc2NyaXB0SW5IZWFkKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5OT1NDUklQVDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQlI6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIGNvbnN0IGVyckNvZGUgPSB0b2tlbi50eXBlID09PSBUb2tlblR5cGUuRU9GID8gRVJSLm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZiA6IEVSUi5kaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQ7XG4gICAgcC5fZXJyKHRva2VuLCBlcnJDb2RlKTtcbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImFmdGVyIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6IHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CQVNFOlxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuTElOSzpcbiAgICAgICAgY2FzZSAkLk1FVEE6XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzpcbiAgICAgICAgY2FzZSAkLlNDUklQVDpcbiAgICAgICAgY2FzZSAkLlNUWUxFOlxuICAgICAgICBjYXNlICQuVEVNUExBVEU6XG4gICAgICAgIGNhc2UgJC5USVRMRToge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuYWJhbmRvbmVkSGVhZEVsZW1lbnRDaGlsZCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wdXNoKHAuaGVhZEVsZW1lbnQsICQuSEVBRCk7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUocC5oZWFkRWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSEVBRDoge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIubWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkFmdGVySGVhZChwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdBZnRlckhlYWQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuSFRNTDpcbiAgICAgICAgY2FzZSAkLkJSOiB7XG4gICAgICAgICAgICB0b2tlbkFmdGVySGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uQk9EWSwgJC5CT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgbW9kZUluQm9keShwLCB0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBtb2RlSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLkNIQVJBQ1RFUjoge1xuICAgICAgICAgICAgY2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLkNPTU1FTlQ6IHtcbiAgICAgICAgICAgIGFwcGVuZENvbW1lbnQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUb2tlblR5cGUuU1RBUlRfVEFHOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRva2VuVHlwZS5FTkRfVEFHOiB7XG4gICAgICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUb2tlblR5cGUuRU9GOiB7XG4gICAgICAgICAgICBlb2ZJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xufVxuZnVuY3Rpb24gY2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5mdW5jdGlvbiBib2R5U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XG4gICAgaWYgKGJvZHlFbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgcC50cmVlQWRhcHRlci5hZG9wdEF0dHJpYnV0ZXMoYm9keUVsZW1lbnQsIHRva2VuLmF0dHJzKTtcbiAgICB9XG59XG5mdW5jdGlvbiBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuICAgIGlmIChwLmZyYW1lc2V0T2sgJiYgYm9keUVsZW1lbnQpIHtcbiAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGJvZHlFbGVtZW50KTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wQWxsVXBUb0h0bWxFbGVtZW50KCk7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCAhPT0gdW5kZWZpbmVkICYmIE5VTUJFUkVEX0hFQURFUlMuaGFzKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcHJlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiBwcmUgYmxvY2tzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgaWYgKCFwLmZvcm1FbGVtZW50IHx8IGluVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgIGlmICgodG4gPT09ICQuTEkgJiYgZWxlbWVudElkID09PSAkLkxJKSB8fFxuICAgICAgICAgICAgKCh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkgJiYgKGVsZW1lbnRJZCA9PT0gJC5ERCB8fCBlbGVtZW50SWQgPT09ICQuRFQpKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZWxlbWVudElkKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChlbGVtZW50SWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRJZCAhPT0gJC5BRERSRVNTICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09ICQuRElWICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09ICQuUCAmJlxuICAgICAgICAgICAgcC5faXNTcGVjaWFsRWxlbWVudChwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSwgZWxlbWVudElkKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlBMQUlOVEVYVDtcbn1cbmZ1bmN0aW9uIGJ1dHRvblN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5CVVRUT04pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQlVUVE9OKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZShUTi5BKTtcbiAgICBpZiAoYWN0aXZlRWxlbWVudEVudHJ5KSB7XG4gICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShhY3RpdmVFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGFjdGl2ZUVsZW1lbnRFbnRyeSk7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5mdW5jdGlvbiBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldERvY3VtZW50TW9kZShwLmRvY3VtZW50KSAhPT0gRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbn1cbmZ1bmN0aW9uIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gaXNIaWRkZW5JbnB1dCh0b2tlbikge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGdldFRva2VuQXR0cih0b2tlbiwgQVRUUlMuVFlQRSk7XG4gICAgcmV0dXJuIGlucHV0VHlwZSAhPSBudWxsICYmIGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpID09PSBISURERU5fSU5QVVRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIGlmICghaXNIaWRkZW5JbnB1dCh0b2tlbikpIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGltYWdlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB0b2tlbi50YWdOYW1lID0gVE4uSU1HO1xuICAgIHRva2VuLnRhZ0lEID0gJC5JTUc7XG4gICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxuICAgIC8vb24gdG8gdGhlIG5leHQgb25lLiAoTmV3bGluZXMgYXQgdGhlIHN0YXJ0IG9mIHRleHRhcmVhIGVsZW1lbnRzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5SQ0RBVEE7XG4gICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5URVhUO1xufVxuZnVuY3Rpb24geG1wU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuZnVuY3Rpb24gaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBhY3QgYXMgYSB1c2VyIGFnZW50IHdpdGggZW5hYmxlZCBwbHVnaW5zL2ZyYW1lcywgc28gd2UgcGFyc2Vcbi8vPG5vZW1iZWQ+Lzxub2ZyYW1lcz4gYXMgcmF3dGV4dC5cbmZ1bmN0aW9uIHJhd1RleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkFXVEVYVCk7XG59XG5mdW5jdGlvbiBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID1cbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTiB8fFxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFkgfHxcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9ST1cgfHxcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9DRUxMXG4gICAgICAgICAgICA/IEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFXG4gICAgICAgICAgICA6IEluc2VydGlvbk1vZGUuSU5fU0VMRUNUO1xufVxuZnVuY3Rpb24gb3B0Z3JvdXBTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIH1cbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuUlVCWSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLlJVQlkpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuUlRDKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBtYXRoU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuTWF0aE1MQXR0cnModG9rZW4pO1xuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5NQVRITUwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHQXR0cnModG9rZW4pO1xuICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pO1xuICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5TVkcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSTpcbiAgICAgICAgY2FzZSAkLlM6XG4gICAgICAgIGNhc2UgJC5COlxuICAgICAgICBjYXNlICQuVTpcbiAgICAgICAgY2FzZSAkLkVNOlxuICAgICAgICBjYXNlICQuVFQ6XG4gICAgICAgIGNhc2UgJC5CSUc6XG4gICAgICAgIGNhc2UgJC5DT0RFOlxuICAgICAgICBjYXNlICQuRk9OVDpcbiAgICAgICAgY2FzZSAkLlNNQUxMOlxuICAgICAgICBjYXNlICQuU1RSSUtFOlxuICAgICAgICBjYXNlICQuU1RST05HOiB7XG4gICAgICAgICAgICBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkE6IHtcbiAgICAgICAgICAgIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSDE6XG4gICAgICAgIGNhc2UgJC5IMjpcbiAgICAgICAgY2FzZSAkLkgzOlxuICAgICAgICBjYXNlICQuSDQ6XG4gICAgICAgIGNhc2UgJC5INTpcbiAgICAgICAgY2FzZSAkLkg2OiB7XG4gICAgICAgICAgICBudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5QOlxuICAgICAgICBjYXNlICQuREw6XG4gICAgICAgIGNhc2UgJC5PTDpcbiAgICAgICAgY2FzZSAkLlVMOlxuICAgICAgICBjYXNlICQuRElWOlxuICAgICAgICBjYXNlICQuRElSOlxuICAgICAgICBjYXNlICQuTkFWOlxuICAgICAgICBjYXNlICQuTUFJTjpcbiAgICAgICAgY2FzZSAkLk1FTlU6XG4gICAgICAgIGNhc2UgJC5BU0lERTpcbiAgICAgICAgY2FzZSAkLkNFTlRFUjpcbiAgICAgICAgY2FzZSAkLkZJR1VSRTpcbiAgICAgICAgY2FzZSAkLkZPT1RFUjpcbiAgICAgICAgY2FzZSAkLkhFQURFUjpcbiAgICAgICAgY2FzZSAkLkhHUk9VUDpcbiAgICAgICAgY2FzZSAkLkRJQUxPRzpcbiAgICAgICAgY2FzZSAkLkRFVEFJTFM6XG4gICAgICAgIGNhc2UgJC5BRERSRVNTOlxuICAgICAgICBjYXNlICQuQVJUSUNMRTpcbiAgICAgICAgY2FzZSAkLlNFQVJDSDpcbiAgICAgICAgY2FzZSAkLlNFQ1RJT046XG4gICAgICAgIGNhc2UgJC5TVU1NQVJZOlxuICAgICAgICBjYXNlICQuRklFTERTRVQ6XG4gICAgICAgIGNhc2UgJC5CTE9DS1FVT1RFOlxuICAgICAgICBjYXNlICQuRklHQ0FQVElPTjoge1xuICAgICAgICAgICAgYWRkcmVzc1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5MSTpcbiAgICAgICAgY2FzZSAkLkREOlxuICAgICAgICBjYXNlICQuRFQ6IHtcbiAgICAgICAgICAgIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJSOlxuICAgICAgICBjYXNlICQuSU1HOlxuICAgICAgICBjYXNlICQuV0JSOlxuICAgICAgICBjYXNlICQuQVJFQTpcbiAgICAgICAgY2FzZSAkLkVNQkVEOlxuICAgICAgICBjYXNlICQuS0VZR0VOOiB7XG4gICAgICAgICAgICBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhSOiB7XG4gICAgICAgICAgICBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5SQjpcbiAgICAgICAgY2FzZSAkLlJUQzoge1xuICAgICAgICAgICAgcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUlQ6XG4gICAgICAgIGNhc2UgJC5SUDoge1xuICAgICAgICAgICAgcnRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUFJFOlxuICAgICAgICBjYXNlICQuTElTVElORzoge1xuICAgICAgICAgICAgcHJlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlhNUDoge1xuICAgICAgICAgICAgeG1wU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNWRzoge1xuICAgICAgICAgICAgc3ZnU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIGh0bWxTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQkFTRTpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuU1RZTEU6XG4gICAgICAgIGNhc2UgJC5USVRMRTpcbiAgICAgICAgY2FzZSAkLlNDUklQVDpcbiAgICAgICAgY2FzZSAkLkJHU09VTkQ6XG4gICAgICAgIGNhc2UgJC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWToge1xuICAgICAgICAgICAgYm9keVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GT1JNOiB7XG4gICAgICAgICAgICBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PQlI6IHtcbiAgICAgICAgICAgIG5vYnJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTUFUSDoge1xuICAgICAgICAgICAgbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSU5QVVQ6IHtcbiAgICAgICAgICAgIGlucHV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlBBUkFNOlxuICAgICAgICBjYXNlICQuVFJBQ0s6XG4gICAgICAgIGNhc2UgJC5TT1VSQ0U6IHtcbiAgICAgICAgICAgIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklNQUdFOiB7XG4gICAgICAgICAgICBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CVVRUT046IHtcbiAgICAgICAgICAgIGJ1dHRvblN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5BUFBMRVQ6XG4gICAgICAgIGNhc2UgJC5PQkpFQ1Q6XG4gICAgICAgIGNhc2UgJC5NQVJRVUVFOiB7XG4gICAgICAgICAgICBhcHBsZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSUZSQU1FOiB7XG4gICAgICAgICAgICBpZnJhbWVTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuU0VMRUNUOiB7XG4gICAgICAgICAgICBzZWxlY3RTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuT1BUSU9OOlxuICAgICAgICBjYXNlICQuT1BUR1JPVVA6IHtcbiAgICAgICAgICAgIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRU1CRUQ6XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgcmF3VGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GUkFNRVNFVDoge1xuICAgICAgICAgICAgZnJhbWVzZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVYVEFSRUE6IHtcbiAgICAgICAgICAgIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PU0NSSVBUOiB7XG4gICAgICAgICAgICBpZiAocC5vcHRpb25zLnNjcmlwdGluZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByYXdUZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5QTEFJTlRFWFQ6IHtcbiAgICAgICAgICAgIHBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVFI6XG4gICAgICAgIGNhc2UgJC5IRUFEOlxuICAgICAgICBjYXNlICQuRlJBTUU6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGJvZHlFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTtcbiAgICAgICAgLy9OT1RFOiA8Ym9keT4gaXMgbmV2ZXIgcG9wcGVkIGZyb20gdGhlIHN0YWNrLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZWRcbiAgICAgICAgLy90aGUgZW5kIGxvY2F0aW9uIGV4cGxpY2l0bHkuXG4gICAgICAgIGlmIChwLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKGJvZHlFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oYm9keUVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGh0bWxFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkJPRFkpKSB7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTtcbiAgICAgICAgZW5kVGFnQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1FbmRUYWdJbkJvZHkocCkge1xuICAgIGNvbnN0IGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwO1xuICAgIGNvbnN0IHsgZm9ybUVsZW1lbnQgfSA9IHA7XG4gICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoKGZvcm1FbGVtZW50IHx8IGluVGVtcGxhdGUpICYmIHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5GT1JNKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIGlmIChpblRlbXBsYXRlKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5GT1JNKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmb3JtRWxlbWVudCkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGZvcm1FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHBFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmICghcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLlAsICQuUCk7XG4gICAgfVxuICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbn1cbmZ1bmN0aW9uIGxpRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5MaXN0SXRlbVNjb3BlKCQuTEkpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKCQuTEkpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5MSSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0bik7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgfVxufVxuZnVuY3Rpb24gbnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNOdW1iZXJlZEhlYWRlckluU2NvcGUoKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gYnJFbmRUYWdJbkJvZHkocCkge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uQlIsICQuQlIpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcbiAgICBjb25zdCB0aWQgPSB0b2tlbi50YWdJRDtcbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgIC8vIENvbXBhcmUgdGhlIHRhZyBuYW1lIGhlcmUsIGFzIHRoZSB0YWcgbWlnaHQgbm90IGJlIGEga25vd24gdGFnIHdpdGggYW4gSUQuXG4gICAgICAgIGlmICh0aWQgPT09IGVsZW1lbnRJZCAmJiAodGlkICE9PSAkLlVOS05PV04gfHwgcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSB0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRpZCk7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gaSlcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5zaG9ydGVuVG9MZW5ndGgoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50LCBlbGVtZW50SWQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkE6XG4gICAgICAgIGNhc2UgJC5COlxuICAgICAgICBjYXNlICQuSTpcbiAgICAgICAgY2FzZSAkLlM6XG4gICAgICAgIGNhc2UgJC5VOlxuICAgICAgICBjYXNlICQuRU06XG4gICAgICAgIGNhc2UgJC5UVDpcbiAgICAgICAgY2FzZSAkLkJJRzpcbiAgICAgICAgY2FzZSAkLkNPREU6XG4gICAgICAgIGNhc2UgJC5GT05UOlxuICAgICAgICBjYXNlICQuTk9CUjpcbiAgICAgICAgY2FzZSAkLlNNQUxMOlxuICAgICAgICBjYXNlICQuU1RSSUtFOlxuICAgICAgICBjYXNlICQuU1RST05HOiB7XG4gICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlA6IHtcbiAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuREw6XG4gICAgICAgIGNhc2UgJC5VTDpcbiAgICAgICAgY2FzZSAkLk9MOlxuICAgICAgICBjYXNlICQuRElSOlxuICAgICAgICBjYXNlICQuRElWOlxuICAgICAgICBjYXNlICQuTkFWOlxuICAgICAgICBjYXNlICQuUFJFOlxuICAgICAgICBjYXNlICQuTUFJTjpcbiAgICAgICAgY2FzZSAkLk1FTlU6XG4gICAgICAgIGNhc2UgJC5BU0lERTpcbiAgICAgICAgY2FzZSAkLkJVVFRPTjpcbiAgICAgICAgY2FzZSAkLkNFTlRFUjpcbiAgICAgICAgY2FzZSAkLkZJR1VSRTpcbiAgICAgICAgY2FzZSAkLkZPT1RFUjpcbiAgICAgICAgY2FzZSAkLkhFQURFUjpcbiAgICAgICAgY2FzZSAkLkhHUk9VUDpcbiAgICAgICAgY2FzZSAkLkRJQUxPRzpcbiAgICAgICAgY2FzZSAkLkFERFJFU1M6XG4gICAgICAgIGNhc2UgJC5BUlRJQ0xFOlxuICAgICAgICBjYXNlICQuREVUQUlMUzpcbiAgICAgICAgY2FzZSAkLlNFQVJDSDpcbiAgICAgICAgY2FzZSAkLlNFQ1RJT046XG4gICAgICAgIGNhc2UgJC5TVU1NQVJZOlxuICAgICAgICBjYXNlICQuTElTVElORzpcbiAgICAgICAgY2FzZSAkLkZJRUxEU0VUOlxuICAgICAgICBjYXNlICQuQkxPQ0tRVU9URTpcbiAgICAgICAgY2FzZSAkLkZJR0NBUFRJT046IHtcbiAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkxJOiB7XG4gICAgICAgICAgICBsaUVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5ERDpcbiAgICAgICAgY2FzZSAkLkRUOiB7XG4gICAgICAgICAgICBkZEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSDE6XG4gICAgICAgIGNhc2UgJC5IMjpcbiAgICAgICAgY2FzZSAkLkgzOlxuICAgICAgICBjYXNlICQuSDQ6XG4gICAgICAgIGNhc2UgJC5INTpcbiAgICAgICAgY2FzZSAkLkg2OiB7XG4gICAgICAgICAgICBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CUjoge1xuICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWToge1xuICAgICAgICAgICAgYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRk9STToge1xuICAgICAgICAgICAgZm9ybUVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5BUFBMRVQ6XG4gICAgICAgIGNhc2UgJC5PQkpFQ1Q6XG4gICAgICAgIGNhc2UgJC5NQVJRVUVFOiB7XG4gICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVvZkluQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0b3BQYXJzaW5nKHAsIHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJ0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBlbmRUYWdJblRleHQocCwgdG9rZW4pIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLlNDUklQVCkge1xuICAgICAgICAoX2EgPSBwLnNjcmlwdEhhbmRsZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHAsIHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuICAgIH1cbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcbn1cbmZ1bmN0aW9uIGVvZkluVGV4dChwLCB0b2tlbikge1xuICAgIHAuX2Vycih0b2tlbiwgRVJSLmVvZkluRWxlbWVudFRoYXRDYW5Db250YWluT25seVRleHQpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAub25Fb2YodG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGNoYXJhY3RlckluVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkICE9PSB1bmRlZmluZWQgJiYgVEFCTEVfU1RSVUNUVVJFX1RBR1MuaGFzKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aCA9IDA7XG4gICAgICAgIHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuICAgICAgICBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHAuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUO1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkNIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElnbm9yZSBudWxsXG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OO1xufVxuZnVuY3Rpb24gY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xufVxuZnVuY3Rpb24gY29sU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChUTi5DT0xHUk9VUCwgJC5DT0xHUk9VUCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG4gICAgc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG59XG5mdW5jdGlvbiB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uVEJPRFksICQuVEJPRFkpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIHRhYmxlU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRBQkxFKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKGlzSGlkZGVuSW5wdXQodG9rZW4pKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gZm9ybVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmICghcC5mb3JtRWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgY2FzZSAkLlNDUklQVDpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MOiB7XG4gICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZPUk06IHtcbiAgICAgICAgICAgIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOiB7XG4gICAgICAgICAgICB0Ym9keVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSU5QVVQ6IHtcbiAgICAgICAgICAgIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOiB7XG4gICAgICAgICAgICBjYXB0aW9uU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRBQkxFKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5IVE1MOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCBzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlID0gcC5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHRydWU7XG4gICAgLy8gUHJvY2VzcyB0b2tlbiBpbiBgSW4gQm9keWAgbW9kZVxuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG4vLyBUaGUgXCJpbiB0YWJsZSB0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbiAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSB0cnVlO1xufVxuZnVuY3Rpb24gdG9rZW5JblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIGxldCBpID0gMDtcbiAgICBpZiAocC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuKSB7XG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHAuX2luc2VydENoYXJhY3RlcnMocC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gY2FwdGlvblwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgVEFCTEVfVk9JRF9FTEVNRU5UUyA9IG5ldyBTZXQoWyQuQ0FQVElPTiwgJC5DT0wsICQuQ09MR1JPVVAsICQuVEJPRFksICQuVEQsICQuVEZPT1QsICQuVEgsICQuVEhFQUQsICQuVFJdKTtcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAoVEFCTEVfVk9JRF9FTEVNRU5UUy5oYXModG4pKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5DQVBUSU9OKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQ0FQVElPTik7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIHN3aXRjaCAodG4pIHtcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluIGNvbHVtbiBncm91cFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNPTDoge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuQ09MR1JPVVA6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xuICAgIH1cbn1cbi8vIFRoZSBcImluIHRhYmxlIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVEQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uVFIsICQuVFIpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICBzdGFydFRhZ0luUm93KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuSFRNTDpcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluIHJvd1wiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblJvdyhwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVEQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ0VMTDtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0b2tlbi50YWdJRCkgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5IVE1MOlxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5USDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIGVuZCB0YWdcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gY2VsbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNlbGwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChUQUJMRV9WT0lEX0VMRU1FTlRTLmhhcyh0bikpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlREKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5USCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICBzdGFydFRhZ0luUm93KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgc3dpdGNoICh0bikge1xuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5USDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRBQkxFOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICAgICAgcC5fY2xvc2VUYWJsZUNlbGwoKTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluIHNlbGVjdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5PUFRJT046IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5PUFRHUk9VUDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhSOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSU5QVVQ6XG4gICAgICAgIGNhc2UgJC5LRVlHRU46XG4gICAgICAgIGNhc2UgJC5URVhUQVJFQTpcbiAgICAgICAgY2FzZSAkLlNFTEVDVDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2VsZWN0U2NvcGUoJC5TRUxFQ1QpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udGFnSUQgIT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNDUklQVDpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5PUFRHUk9VUDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID4gMCAmJlxuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04gJiZcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy50YWdJRHNbcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgLSAxXSA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVElPTjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TRUxFQ1Q6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG4vLyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fFxuICAgICAgICB0biA9PT0gJC5UQUJMRSB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5UUiB8fFxuICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICB0biA9PT0gJC5USCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0SW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuVEFCTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFIgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEgpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIHAub25FbmRUYWcodG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbmRUYWdJblNlbGVjdChwLCB0b2tlbik7XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gdGVtcGxhdGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgLy8gRmlyc3QsIGhhbmRsZSB0YWdzIHRoYXQgY2FuIHN0YXJ0IHdpdGhvdXQgYSBtb2RlIGNoYW5nZVxuICAgICAgICBjYXNlICQuQkFTRTpcbiAgICAgICAgY2FzZSAkLkJBU0VGT05UOlxuICAgICAgICBjYXNlICQuQkdTT1VORDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOlxuICAgICAgICBjYXNlICQuVElUTEU6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlLXByb2Nlc3MgdGhlIHRva2VuIGluIHRoZSBhcHByb3ByaWF0ZSBtb2RlXG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG4gICAgICAgICAgICBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgc3RhcnRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2suc2hpZnQoKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAub25Fb2YodG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RvcFBhcnNpbmcocCwgdG9rZW4pO1xuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk7XG4gICAgICAgIH1cbiAgICAgICAgLy9OT1RFOiA8aHRtbD4gaXMgbmV2ZXIgcG9wcGVkIGZyb20gdGhlIHN0YWNrLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZWRcbiAgICAgICAgLy90aGUgZW5kIGxvY2F0aW9uIGV4cGxpY2l0bHkuXG4gICAgICAgIGlmIChwLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbyAmJiBwLm9wZW5FbGVtZW50cy50YWdJRHNbMF0gPT09ICQuSFRNTCkge1xuICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24ocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuKTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYm9keSBlbGVtZW50LCBpZiBpdCBkb2Vzbid0IGhhdmUgYW4gZW5kIHRhZ1xuICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1sxXTtcbiAgICAgICAgICAgIGlmIChib2R5RWxlbWVudCAmJiAhKChfYSA9IHAudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihib2R5RWxlbWVudCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lbmRUYWcpKSB7XG4gICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oYm9keUVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5GcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GUkFNRVNFVDoge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRlJBTUU6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5GcmFtZXNldChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5GUkFNRVNFVCAmJiAhcC5vcGVuRWxlbWVudHMuaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkICE9PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUO1xuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiYWZ0ZXIgYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuLy8gVGhlIHJ1bGVzIGZvciBwYXJzaW5nIHRva2VucyBpbiBmb3JlaWduIGNvbnRlbnRcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHRva2VuLmNoYXJzID0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQocCkge1xuICAgIHdoaWxlIChwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShwLm9wZW5FbGVtZW50cy5jdXJyZW50KSAhPT0gTlMuSFRNTCAmJlxuICAgICAgICBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhcC5faXNJbnRlZ3JhdGlvblBvaW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCwgcC5vcGVuRWxlbWVudHMuY3VycmVudCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgaWYgKGZvcmVpZ25Db250ZW50LmNhdXNlc0V4aXQodG9rZW4pKSB7XG4gICAgICAgIHBvcFVudGlsSHRtbE9ySW50ZWdyYXRpb25Qb2ludChwKTtcbiAgICAgICAgcC5fc3RhcnRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHAuX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG4gICAgICAgIGlmIChjdXJyZW50TnMgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBjdXJyZW50TnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5QIHx8IHRva2VuLnRhZ0lEID09PSAkLkJSKSB7XG4gICAgICAgIHBvcFVudGlsSHRtbE9ySW50ZWdyYXRpb25Qb2ludChwKTtcbiAgICAgICAgcC5fZW5kVGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWdOYW1lID0gcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBpZiAodGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0b2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAvL05PVEU6IHVwZGF0ZSB0aGUgdG9rZW4gdGFnIG5hbWUgZm9yIGBfc2V0RW5kTG9jYXRpb25gLlxuICAgICAgICAgICAgdG9rZW4udGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5zaG9ydGVuVG9MZW5ndGgoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/parser/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/parser/open-element-stack.js":
|
|
/*!***************************************************************!*\
|
|
!*** ./node_modules/parse5/dist/parser/open-element-stack.js ***!
|
|
\***************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OpenElementStack: () => (/* binding */ OpenElementStack)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DD, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LI, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTGROUP, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTION, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.P, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RB, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RP, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CAPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.COLGROUP,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.APPLET,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CAPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MARQUEE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OBJECT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OL, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.ANNOTATION_XML, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MI, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MN, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MO, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MS, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DESC, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FOREIGN_OBJECT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TR, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML]);\nconst TABLE_CONTEXT = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML]);\nconst TABLE_CELLS = new Set([_common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH]);\n//Stack of open elements\nclass OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(_common_html_js__WEBPACK_IMPORTED_MODULE_0__.NUMBERED_HEADERS, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML: {\n if (_common_html_js__WEBPACK_IMPORTED_MODULE_0__.NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT: {\n return true;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL29wZW4tZWxlbWVudC1zdGFjay5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRTtBQUN0RTtBQUNBLDJDQUEyQyxtREFBQyxLQUFLLG1EQUFDLEtBQUssbURBQUMsS0FBSyxtREFBQyxXQUFXLG1EQUFDLFNBQVMsbURBQUMsSUFBSSxtREFBQyxLQUFLLG1EQUFDLEtBQUssbURBQUMsS0FBSyxtREFBQztBQUMzRztBQUNBO0FBQ0EsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTCxJQUFJLG1EQUFDO0FBQ0wsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTCxJQUFJLG1EQUFDO0FBQ0wsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTDtBQUNBO0FBQ0EsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTCxJQUFJLG1EQUFDO0FBQ0wsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTCxJQUFJLG1EQUFDO0FBQ0wsSUFBSSxtREFBQztBQUNMLElBQUksbURBQUM7QUFDTCxJQUFJLG1EQUFDO0FBQ0w7QUFDQSxzRUFBc0UsbURBQUMsS0FBSyxtREFBQztBQUM3RSx3RUFBd0UsbURBQUM7QUFDekUseUNBQXlDLG1EQUFDLGlCQUFpQixtREFBQyxLQUFLLG1EQUFDLEtBQUssbURBQUMsS0FBSyxtREFBQyxLQUFLLG1EQUFDO0FBQ3BGLHNDQUFzQyxtREFBQyxPQUFPLG1EQUFDLGlCQUFpQixtREFBQztBQUNqRSxtQ0FBbUMsbURBQUMsS0FBSyxtREFBQyxXQUFXLG1EQUFDO0FBQ3RELG9DQUFvQyxtREFBQyxRQUFRLG1EQUFDLFFBQVEsbURBQUMsUUFBUSxtREFBQyxXQUFXLG1EQUFDO0FBQzVFLCtCQUErQixtREFBQyxRQUFRLG1EQUFDLFdBQVcsbURBQUM7QUFDckQsNkJBQTZCLG1EQUFDLEtBQUssbURBQUM7QUFDcEM7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNB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QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanM/MjYwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUQUdfSUQgYXMgJCwgTlMsIE5VTUJFUkVEX0hFQURFUlMgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG4vL0VsZW1lbnQgdXRpbHNcbmNvbnN0IElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRUQgPSBuZXcgU2V0KFskLkRELCAkLkRULCAkLkxJLCAkLk9QVEdST1VQLCAkLk9QVElPTiwgJC5QLCAkLlJCLCAkLlJQLCAkLlJULCAkLlJUQ10pO1xuY29uc3QgSU1QTElDSVRfRU5EX1RBR19SRVFVSVJFRF9USE9ST1VHSExZID0gbmV3IFNldChbXG4gICAgLi4uSU1QTElDSVRfRU5EX1RBR19SRVFVSVJFRCxcbiAgICAkLkNBUFRJT04sXG4gICAgJC5DT0xHUk9VUCxcbiAgICAkLlRCT0RZLFxuICAgICQuVEQsXG4gICAgJC5URk9PVCxcbiAgICAkLlRILFxuICAgICQuVEhFQUQsXG4gICAgJC5UUixcbl0pO1xuY29uc3QgU0NPUElOR19FTEVNRU5UU19IVE1MID0gbmV3IFNldChbXG4gICAgJC5BUFBMRVQsXG4gICAgJC5DQVBUSU9OLFxuICAgICQuSFRNTCxcbiAgICAkLk1BUlFVRUUsXG4gICAgJC5PQkpFQ1QsXG4gICAgJC5UQUJMRSxcbiAgICAkLlRELFxuICAgICQuVEVNUExBVEUsXG4gICAgJC5USCxcbl0pO1xuY29uc3QgU0NPUElOR19FTEVNRU5UU19IVE1MX0xJU1QgPSBuZXcgU2V0KFsuLi5TQ09QSU5HX0VMRU1FTlRTX0hUTUwsICQuT0wsICQuVUxdKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVFNfSFRNTF9CVVRUT04gPSBuZXcgU2V0KFsuLi5TQ09QSU5HX0VMRU1FTlRTX0hUTUwsICQuQlVUVE9OXSk7XG5jb25zdCBTQ09QSU5HX0VMRU1FTlRTX01BVEhNTCA9IG5ldyBTZXQoWyQuQU5OT1RBVElPTl9YTUwsICQuTUksICQuTU4sICQuTU8sICQuTVMsICQuTVRFWFRdKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVFNfU1ZHID0gbmV3IFNldChbJC5ERVNDLCAkLkZPUkVJR05fT0JKRUNULCAkLlRJVExFXSk7XG5jb25zdCBUQUJMRV9ST1dfQ09OVEVYVCA9IG5ldyBTZXQoWyQuVFIsICQuVEVNUExBVEUsICQuSFRNTF0pO1xuY29uc3QgVEFCTEVfQk9EWV9DT05URVhUID0gbmV3IFNldChbJC5UQk9EWSwgJC5URk9PVCwgJC5USEVBRCwgJC5URU1QTEFURSwgJC5IVE1MXSk7XG5jb25zdCBUQUJMRV9DT05URVhUID0gbmV3IFNldChbJC5UQUJMRSwgJC5URU1QTEFURSwgJC5IVE1MXSk7XG5jb25zdCBUQUJMRV9DRUxMUyA9IG5ldyBTZXQoWyQuVEQsICQuVEhdKTtcbi8vU3RhY2sgb2Ygb3BlbiBlbGVtZW50c1xuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50U3RhY2sge1xuICAgIGdldCBjdXJyZW50VG1wbENvbnRlbnRPck5vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0luVGVtcGxhdGUoKSA/IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMuY3VycmVudCkgOiB0aGlzLmN1cnJlbnQ7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50LCB0cmVlQWRhcHRlciwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy50YWdJRHMgPSBbXTtcbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IC0xO1xuICAgICAgICB0aGlzLnRtcGxDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ0lkID0gJC5VTktOT1dOO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICB9XG4gICAgLy9JbmRleCBvZiBlbGVtZW50XG4gICAgX2luZGV4T2YoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sYXN0SW5kZXhPZihlbGVtZW50LCB0aGlzLnN0YWNrVG9wKTtcbiAgICB9XG4gICAgLy9VcGRhdGUgY3VycmVudCBlbGVtZW50XG4gICAgX2lzSW5UZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRhZ0lkID09PSAkLlRFTVBMQVRFICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgPT09IE5TLkhUTUw7XG4gICAgfVxuICAgIF91cGRhdGVDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnSWQgPSB0aGlzLnRhZ0lEc1t0aGlzLnN0YWNrVG9wXTtcbiAgICB9XG4gICAgLy9NdXRhdGlvbnNcbiAgICBwdXNoKGVsZW1lbnQsIHRhZ0lEKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3ArKztcbiAgICAgICAgdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXSA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMudGFnSURzW3RoaXMuc3RhY2tUb3BdID0gdGFnSUQ7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ0lkID0gdGFnSUQ7XG4gICAgICAgIGlmICh0aGlzLl9pc0luVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy50bXBsQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUHVzaChlbGVtZW50LCB0YWdJRCwgdHJ1ZSk7XG4gICAgfVxuICAgIHBvcCgpIHtcbiAgICAgICAgY29uc3QgcG9wcGVkID0gdGhpcy5jdXJyZW50O1xuICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uSXRlbVBvcChwb3BwZWQsIHRydWUpO1xuICAgIH1cbiAgICByZXBsYWNlKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5pdGVtc1tpZHhdID0gbmV3RWxlbWVudDtcbiAgICAgICAgaWYgKGlkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gbmV3RWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRBZnRlcihyZWZlcmVuY2VFbGVtZW50LCBuZXdFbGVtZW50LCBuZXdFbGVtZW50SUQpIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gdGhpcy5faW5kZXhPZihyZWZlcmVuY2VFbGVtZW50KSArIDE7XG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG4gICAgICAgIHRoaXMudGFnSURzLnNwbGljZShpbnNlcnRpb25JZHgsIDAsIG5ld0VsZW1lbnRJRCk7XG4gICAgICAgIHRoaXMuc3RhY2tUb3ArKztcbiAgICAgICAgaWYgKGluc2VydGlvbklkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jdXJyZW50ICYmIHRoaXMuY3VycmVudFRhZ0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1QdXNoKHRoaXMuY3VycmVudCwgdGhpcy5jdXJyZW50VGFnSWQsIGluc2VydGlvbklkeCA9PT0gdGhpcy5zdGFja1RvcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcG9wVW50aWxUYWdOYW1lUG9wcGVkKHRhZ05hbWUpIHtcbiAgICAgICAgbGV0IHRhcmdldElkeCA9IHRoaXMuc3RhY2tUb3AgKyAxO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB0YXJnZXRJZHggPSB0aGlzLnRhZ0lEcy5sYXN0SW5kZXhPZih0YWdOYW1lLCB0YXJnZXRJZHggLSAxKTtcbiAgICAgICAgfSB3aGlsZSAodGFyZ2V0SWR4ID4gMCAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW3RhcmdldElkeF0pICE9PSBOUy5IVE1MKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoTWF0aC5tYXgodGFyZ2V0SWR4LCAwKSk7XG4gICAgfVxuICAgIHNob3J0ZW5Ub0xlbmd0aChpZHgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPj0gaWR4KSB7XG4gICAgICAgICAgICBjb25zdCBwb3BwZWQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50bXBsQ291bnQgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKHBvcHBlZCwgdGhpcy5zdGFja1RvcCA8IGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoTWF0aC5tYXgoaWR4LCAwKSk7XG4gICAgfVxuICAgIHBvcFVudGlsUG9wcGVkKHRhZ05hbWVzLCB0YXJnZXROUykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIHRhcmdldE5TKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoTWF0aC5tYXgoaWR4LCAwKSk7XG4gICAgfVxuICAgIHBvcFVudGlsTnVtYmVyZWRIZWFkZXJQb3BwZWQoKSB7XG4gICAgICAgIHRoaXMucG9wVW50aWxQb3BwZWQoTlVNQkVSRURfSEVBREVSUywgTlMuSFRNTCk7XG4gICAgfVxuICAgIHBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCkge1xuICAgICAgICB0aGlzLnBvcFVudGlsUG9wcGVkKFRBQkxFX0NFTExTLCBOUy5IVE1MKTtcbiAgICB9XG4gICAgcG9wQWxsVXBUb0h0bWxFbGVtZW50KCkge1xuICAgICAgICAvL05PVEU6IGhlcmUgd2UgYXNzdW1lIHRoYXQgdGhlIHJvb3QgPGh0bWw+IGVsZW1lbnQgaXMgYWx3YXlzIGZpcnN0IGluIHRoZSBvcGVuIGVsZW1lbnQgc3RhY2ssIHNvXG4gICAgICAgIC8vd2UgcGVyZm9ybSB0aGlzIGZhc3Qgc3RhY2sgY2xlYW4gdXAuXG4gICAgICAgIHRoaXMudG1wbENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoMSk7XG4gICAgfVxuICAgIF9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIG5hbWVzcGFjZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0YWdOYW1lcy5oYXModGhpcy50YWdJRHNbaV0pICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pID09PSBuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvKHRhZ05hbWVzLCB0YXJnZXROUykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIHRhcmdldE5TKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4ICsgMSk7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvVGFibGVDb250ZXh0KCkge1xuICAgICAgICB0aGlzLmNsZWFyQmFja1RvKFRBQkxFX0NPTlRFWFQsIE5TLkhUTUwpO1xuICAgIH1cbiAgICBjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJCYWNrVG8oVEFCTEVfQk9EWV9DT05URVhULCBOUy5IVE1MKTtcbiAgICB9XG4gICAgY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJCYWNrVG8oVEFCTEVfUk9XX0NPTlRFWFQsIE5TLkhUTUwpO1xuICAgIH1cbiAgICByZW1vdmUoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0lEcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1NlYXJjaFxuICAgIHRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCkge1xuICAgICAgICAvL1Byb3Blcmx5IG5lc3RlZCA8Ym9keT4gZWxlbWVudCAoc2hvdWxkIGJlIHNlY29uZCBlbGVtZW50IGluIHN0YWNrKS5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUb3AgPj0gMSAmJiB0aGlzLnRhZ0lEc1sxXSA9PT0gJC5CT0RZID8gdGhpcy5pdGVtc1sxXSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG4gICAgZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KSAtIDE7XG4gICAgICAgIHJldHVybiBlbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG4gICAgaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLnRhZ0lEc1swXSA9PT0gJC5IVE1MO1xuICAgIH1cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJbkR5bmFtaWNTY29wZSh0YWdOYW1lLCBodG1sU2NvcGUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudGFnSURzW2ldO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTlMuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bWxTY29wZS5oYXModG4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5TVkc6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFNDT1BJTkdfRUxFTUVOVFNfU1ZHLmhhcyh0bikpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIE5TLk1BVEhNTDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoU0NPUElOR19FTEVNRU5UU19NQVRITUwuaGFzKHRuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzSW5EeW5hbWljU2NvcGUodGFnTmFtZSwgU0NPUElOR19FTEVNRU5UU19IVE1MKTtcbiAgICB9XG4gICAgaGFzSW5MaXN0SXRlbVNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzSW5EeW5hbWljU2NvcGUodGFnTmFtZSwgU0NPUElOR19FTEVNRU5UU19IVE1MX0xJU1QpO1xuICAgIH1cbiAgICBoYXNJbkJ1dHRvblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzSW5EeW5hbWljU2NvcGUodGFnTmFtZSwgU0NPUElOR19FTEVNRU5UU19IVE1MX0JVVFRPTik7XG4gICAgfVxuICAgIGhhc051bWJlcmVkSGVhZGVySW5TY29wZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudGFnSURzW2ldO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTlMuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTlVNQkVSRURfSEVBREVSUy5oYXModG4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChTQ09QSU5HX0VMRU1FTlRTX0hUTUwuaGFzKHRuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgTlMuU1ZHOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChTQ09QSU5HX0VMRU1FTlRTX1NWRy5oYXModG4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5NQVRITUw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFNDT1BJTkdfRUxFTUVOVFNfTUFUSE1MLmhhcyh0bikpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaGFzSW5UYWJsZVNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSkgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50YWdJRHNbaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRhZ05hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJMRTpcbiAgICAgICAgICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKSAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnRhZ0lEc1tpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRGT09UOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuVEFCTEU6XG4gICAgICAgICAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaGFzSW5TZWxlY3RTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGFnSURzW2ldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0YWdOYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuT1BUSU9OOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5PUFRHUk9VUDoge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvL0ltcGxpZWQgZW5kIHRhZ3NcbiAgICBnZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnSWQgIT09IHVuZGVmaW5lZCAmJiBJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVELmhhcyh0aGlzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRUYWdJZCAhPT0gdW5kZWZpbmVkICYmIElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWS5oYXModGhpcy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKGV4Y2x1c2lvbklkKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRUYWdJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWdJZCAhPT0gZXhjbHVzaW9uSWQgJiZcbiAgICAgICAgICAgIElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWS5oYXModGhpcy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/parser/open-element-stack.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/serializer/index.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/parse5/dist/serializer/index.js ***!
|
|
\******************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ serialize: () => (/* binding */ serialize),\n/* harmony export */ serializeOuter: () => (/* binding */ serializeOuter)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var entities_escape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! entities/escape */ \"(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/escape.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../tree-adapters/default.js */ \"(rsc)/./node_modules/parse5/dist/tree-adapters/default.js\");\n\n\n\n// Sets\nconst VOID_ELEMENTS = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.AREA,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BASE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BASEFONT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BGSOUND,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BR,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.COL,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.EMBED,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.FRAME,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.HR,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.IMG,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.INPUT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.KEYGEN,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.LINK,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.META,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.PARAM,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.SOURCE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.TRACK,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_2__.defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nfunction serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nfunction serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${(0,entities_escape__WEBPACK_IMPORTED_MODULE_1__.escapeAttribute)(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML &&\n (0,_common_html_js__WEBPACK_IMPORTED_MODULE_0__.hasUnescapedText)(parentTn, options.scriptingEnabled)\n ? content\n : (0,entities_escape__WEBPACK_IMPORTED_MODULE_1__.escapeText)(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3Qvc2VyaWFsaXplci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF5RTtBQUNYO0FBQ0c7QUFDakU7QUFDQTtBQUNBLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMLElBQUksc0RBQUM7QUFDTCxJQUFJLHNEQUFDO0FBQ0wsSUFBSSxzREFBQztBQUNMO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCwrQ0FBRTtBQUN4RDtBQUNBO0FBQ0Esc0JBQXNCLGFBQWEseUVBQWtCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxzREFBQztBQUN4RCw0REFBNEQsK0NBQUU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEdBQUcsRUFBRSxtQ0FBbUMsR0FBRyx1Q0FBdUMsbUNBQW1DLElBQUksR0FBRyxHQUFHO0FBQzlJO0FBQ0EscUNBQXFDLGFBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwrQ0FBRTtBQUN2QixtQ0FBbUMsVUFBVTtBQUM3QztBQUNBO0FBQ0EscUJBQXFCLCtDQUFFO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwrQ0FBRTtBQUN2QixxQ0FBcUMsVUFBVTtBQUMvQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsWUFBWSxHQUFHLFVBQVU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdFQUFlLGFBQWE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGNBQWM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsK0NBQUU7QUFDbEQsUUFBUSxpRUFBZ0I7QUFDeEI7QUFDQSxVQUFVLDJEQUFVO0FBQ3BCO0FBQ0Esc0NBQXNDLGFBQWE7QUFDbkQsa0JBQWtCLHdDQUF3QztBQUMxRDtBQUNBLDJDQUEyQyxhQUFhO0FBQ3hELHdCQUF3QiwwQ0FBMEM7QUFDbEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3NlcmlhbGl6ZXIvaW5kZXguanM/NzcxMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUQUdfTkFNRVMgYXMgJCwgTlMsIGhhc1VuZXNjYXBlZFRleHQgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG5pbXBvcnQgeyBlc2NhcGVUZXh0LCBlc2NhcGVBdHRyaWJ1dGUgfSBmcm9tICdlbnRpdGllcy9lc2NhcGUnO1xuaW1wb3J0IHsgZGVmYXVsdFRyZWVBZGFwdGVyIH0gZnJvbSAnLi4vdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzJztcbi8vIFNldHNcbmNvbnN0IFZPSURfRUxFTUVOVFMgPSBuZXcgU2V0KFtcbiAgICAkLkFSRUEsXG4gICAgJC5CQVNFLFxuICAgICQuQkFTRUZPTlQsXG4gICAgJC5CR1NPVU5ELFxuICAgICQuQlIsXG4gICAgJC5DT0wsXG4gICAgJC5FTUJFRCxcbiAgICAkLkZSQU1FLFxuICAgICQuSFIsXG4gICAgJC5JTUcsXG4gICAgJC5JTlBVVCxcbiAgICAkLktFWUdFTixcbiAgICAkLkxJTkssXG4gICAgJC5NRVRBLFxuICAgICQuUEFSQU0sXG4gICAgJC5TT1VSQ0UsXG4gICAgJC5UUkFDSyxcbiAgICAkLldCUixcbl0pO1xuZnVuY3Rpb24gaXNWb2lkRWxlbWVudChub2RlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUobm9kZSkgJiZcbiAgICAgICAgb3B0aW9ucy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobm9kZSkgPT09IE5TLkhUTUwgJiZcbiAgICAgICAgVk9JRF9FTEVNRU5UUy5oYXMob3B0aW9ucy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpKSk7XG59XG5jb25zdCBkZWZhdWx0T3B0cyA9IHsgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlciwgc2NyaXB0aW5nRW5hYmxlZDogdHJ1ZSB9O1xuLyoqXG4gKiBTZXJpYWxpemVzIGFuIEFTVCBub2RlIHRvIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBhcnNlNSA9IHJlcXVpcmUoJ3BhcnNlNScpO1xuICpcbiAqIGNvbnN0IGRvY3VtZW50ID0gcGFyc2U1LnBhcnNlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PjwvaHRtbD4nKTtcbiAqXG4gKiAvLyBTZXJpYWxpemVzIGEgZG9jdW1lbnQuXG4gKiBjb25zdCBodG1sID0gcGFyc2U1LnNlcmlhbGl6ZShkb2N1bWVudCk7XG4gKlxuICogLy8gU2VyaWFsaXplcyB0aGUgPGh0bWw+IGVsZW1lbnQgY29udGVudC5cbiAqIGNvbnN0IHN0ciA9IHBhcnNlNS5zZXJpYWxpemUoZG9jdW1lbnQuY2hpbGROb2Rlc1sxXSk7XG4gKlxuICogY29uc29sZS5sb2coc3RyKTsgLy8+ICc8aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PidcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIG9wdGlvbnMgU2VyaWFsaXphdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0geyAuLi5kZWZhdWx0T3B0cywgLi4ub3B0aW9ucyB9O1xuICAgIGlmIChpc1ZvaWRFbGVtZW50KG5vZGUsIG9wdHMpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUNoaWxkTm9kZXMobm9kZSwgb3B0cyk7XG59XG4vKipcbiAqIFNlcmlhbGl6ZXMgYW4gQVNUIGVsZW1lbnQgbm9kZSB0byBhbiBIVE1MIHN0cmluZywgaW5jbHVkaW5nIHRoZSBlbGVtZW50IG5vZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGFyc2U1ID0gcmVxdWlyZSgncGFyc2U1Jyk7XG4gKlxuICogY29uc3QgZG9jdW1lbnQgPSBwYXJzZTUucGFyc2VGcmFnbWVudCgnPGRpdj5IZWxsbywgPGI+d29ybGQ8L2I+ITwvZGl2PicpO1xuICpcbiAqIC8vIFNlcmlhbGl6ZXMgdGhlIDxkaXY+IGVsZW1lbnQuXG4gKiBjb25zdCBzdHIgPSBwYXJzZTUuc2VyaWFsaXplT3V0ZXIoZG9jdW1lbnQuY2hpbGROb2Rlc1swXSk7XG4gKlxuICogY29uc29sZS5sb2coc3RyKTsgLy8+ICc8ZGl2PkhlbGxvLCA8Yj53b3JsZDwvYj4hPC9kaXY+J1xuICogYGBgXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBzZXJpYWxpemUuXG4gKiBAcGFyYW0gb3B0aW9ucyBTZXJpYWxpemF0aW9uIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVPdXRlcihub2RlLCBvcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0cyA9IHsgLi4uZGVmYXVsdE9wdHMsIC4uLm9wdGlvbnMgfTtcbiAgICByZXR1cm4gc2VyaWFsaXplTm9kZShub2RlLCBvcHRzKTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNoaWxkTm9kZXMocGFyZW50Tm9kZSwgb3B0aW9ucykge1xuICAgIGxldCBodG1sID0gJyc7XG4gICAgLy8gR2V0IGNvbnRhaW5lciBvZiB0aGUgY2hpbGQgbm9kZXNcbiAgICBjb25zdCBjb250YWluZXIgPSBvcHRpb25zLnRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUocGFyZW50Tm9kZSkgJiZcbiAgICAgICAgb3B0aW9ucy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKHBhcmVudE5vZGUpID09PSAkLlRFTVBMQVRFICYmXG4gICAgICAgIG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHBhcmVudE5vZGUpID09PSBOUy5IVE1MXG4gICAgICAgID8gb3B0aW9ucy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQocGFyZW50Tm9kZSlcbiAgICAgICAgOiBwYXJlbnROb2RlO1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBvcHRpb25zLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMoY29udGFpbmVyKTtcbiAgICBpZiAoY2hpbGROb2Rlcykge1xuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnROb2RlIG9mIGNoaWxkTm9kZXMpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gc2VyaWFsaXplTm9kZShjdXJyZW50Tm9kZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGh0bWw7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy50cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmVlQWRhcHRlci5pc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVUZXh0Tm9kZShub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNDb21tZW50Tm9kZShub2RlKSkge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplQ29tbWVudE5vZGUobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSkge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplRG9jdW1lbnRUeXBlTm9kZShub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IgdW5rbm93biBub2Rlc1xuICAgIHJldHVybiAnJztcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVsZW1lbnQobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IHRuID0gb3B0aW9ucy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpO1xuICAgIHJldHVybiBgPCR7dG59JHtzZXJpYWxpemVBdHRyaWJ1dGVzKG5vZGUsIG9wdGlvbnMpfT4ke2lzVm9pZEVsZW1lbnQobm9kZSwgb3B0aW9ucykgPyAnJyA6IGAke3NlcmlhbGl6ZUNoaWxkTm9kZXMobm9kZSwgb3B0aW9ucyl9PC8ke3RufT5gfWA7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVBdHRyaWJ1dGVzKG5vZGUsIHsgdHJlZUFkYXB0ZXIgfSkge1xuICAgIGxldCBodG1sID0gJyc7XG4gICAgZm9yIChjb25zdCBhdHRyIG9mIHRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5vZGUpKSB7XG4gICAgICAgIGh0bWwgKz0gJyAnO1xuICAgICAgICBpZiAoYXR0ci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYXR0ci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBjYXNlIE5TLlhNTDoge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGB4bWw6JHthdHRyLm5hbWV9YDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgTlMuWE1MTlM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHIubmFtZSAhPT0gJ3htbG5zJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAneG1sbnM6JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGF0dHIubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgTlMuWExJTks6IHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgeGxpbms6JHthdHRyLm5hbWV9YDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgJHthdHRyLnByZWZpeH06JHthdHRyLm5hbWV9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBodG1sICs9IGF0dHIubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBodG1sICs9IGA9XCIke2VzY2FwZUF0dHJpYnV0ZShhdHRyLnZhbHVlKX1cImA7XG4gICAgfVxuICAgIHJldHVybiBodG1sO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplVGV4dE5vZGUobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IHsgdHJlZUFkYXB0ZXIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgY29udGVudCA9IHRyZWVBZGFwdGVyLmdldFRleHROb2RlQ29udGVudChub2RlKTtcbiAgICBjb25zdCBwYXJlbnQgPSB0cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgIGNvbnN0IHBhcmVudFRuID0gcGFyZW50ICYmIHRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUocGFyZW50KSAmJiB0cmVlQWRhcHRlci5nZXRUYWdOYW1lKHBhcmVudCk7XG4gICAgcmV0dXJuIHBhcmVudFRuICYmXG4gICAgICAgIHRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShwYXJlbnQpID09PSBOUy5IVE1MICYmXG4gICAgICAgIGhhc1VuZXNjYXBlZFRleHQocGFyZW50VG4sIG9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZClcbiAgICAgICAgPyBjb250ZW50XG4gICAgICAgIDogZXNjYXBlVGV4dChjb250ZW50KTtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNvbW1lbnROb2RlKG5vZGUsIHsgdHJlZUFkYXB0ZXIgfSkge1xuICAgIHJldHVybiBgPCEtLSR7dHJlZUFkYXB0ZXIuZ2V0Q29tbWVudE5vZGVDb250ZW50KG5vZGUpfS0tPmA7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVEb2N1bWVudFR5cGVOb2RlKG5vZGUsIHsgdHJlZUFkYXB0ZXIgfSkge1xuICAgIHJldHVybiBgPCFET0NUWVBFICR7dHJlZUFkYXB0ZXIuZ2V0RG9jdW1lbnRUeXBlTm9kZU5hbWUobm9kZSl9PmA7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/serializer/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/tokenizer/index.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/parse5/dist/tokenizer/index.js ***!
|
|
\*****************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Tokenizer: () => (/* binding */ Tokenizer),\n/* harmony export */ TokenizerMode: () => (/* binding */ TokenizerMode)\n/* harmony export */ });\n/* harmony import */ var _preprocessor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./preprocessor.js */ \"(rsc)/./node_modules/parse5/dist/tokenizer/preprocessor.js\");\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/unicode.js */ \"(rsc)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/token.js */ \"(rsc)/./node_modules/parse5/dist/common/token.js\");\n/* harmony import */ var entities_decode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! entities/decode */ \"(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/error-codes.js */ \"(rsc)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n\n\n\n\n\n\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nconst TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.DIGIT_0 && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL) {\n return _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.characterReferenceOutsideUnicodeRange;\n }\n else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isSurrogate)(code)) {\n return _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.surrogateCharacterReference;\n }\n else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isUndefinedCodePoint)(code)) {\n return _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.noncharacterCharacterReference;\n }\n else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isControlCodePoint)(code) || code === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.CARRIAGE_RETURN) {\n return _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nclass Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new _preprocessor_js__WEBPACK_IMPORTED_MODULE_0__.Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new entities_decode__WEBPACK_IMPORTED_MODULE_3__.EntityDecoder(entities_decode__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.START_TAG,\n tagName: '',\n tagID: _common_html_js__WEBPACK_IMPORTED_MODULE_5__.TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.END_TAG,\n tagName: '',\n tagID: _common_html_js__WEBPACK_IMPORTED_MODULE_5__.TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if ((0,_common_token_js__WEBPACK_IMPORTED_MODULE_2__.getTokenAttr)(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = (0,_common_html_js__WEBPACK_IMPORTED_MODULE_5__.getTagID)(ct.tagName);\n if (ct.type === _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.WHITESPACE_CHARACTER\n : cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL\n ? _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.NULL_CHARACTER\n : _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(_common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? entities_decode__WEBPACK_IMPORTED_MODULE_3__.DecodingMode.Attribute : entities_decode__WEBPACK_IMPORTED_MODULE_3__.DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUESTION_MARK: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.tagName += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.name += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GRAVE_ACCENT: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.data += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DASH_DASH, true)) {\n this._createCommentToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.cdataInHtmlContent);\n this._createCommentToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.data += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN && cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._createDoctypeToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.name += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.publicId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.publicId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.systemId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.systemId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF: {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdG9rZW5pemVyL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ3VHO0FBQzFGO0FBQ2dCO0FBQy9CO0FBQ007QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNCQUFzQjtBQUN2QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFDLGtCQUFrQiwyREFBQztBQUNyQztBQUNBO0FBQ0EsaUJBQWlCLDJEQUFDLDBCQUEwQiwyREFBQztBQUM3QztBQUNBO0FBQ0EsaUJBQWlCLDJEQUFDLHdCQUF3QiwyREFBQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFDLGlCQUFpQiwyREFBQyxxQkFBcUIsMkRBQUMsc0JBQXNCLDJEQUFDO0FBQ2xGO0FBQ0E7QUFDQSxzQ0FBc0MsMkRBQUMsbUJBQW1CLDJEQUFDO0FBQzNEO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QkFBaUIsMkRBQUM7QUFDbEIsaUJBQWlCLDJEQUFDO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEIsMEJBQTBCLHVEQUFHO0FBQzdCLGlDQUFpQyxxRUFBcUI7QUFDdEQ7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQiwwQkFBMEIsdURBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyREFBQztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEIsaUJBQWlCLDJEQUFDO0FBQ2xCLGlCQUFpQiwyREFBQztBQUNsQixpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkRBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDbEIsaUJBQWlCLDJEQUFDO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQiwwQkFBMEIsdURBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEIsMEJBQTBCLHVEQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFDO0FBQ2xCLDBCQUEwQix1REFBRztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsdURBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQixpQkFBaUIsMkRBQUM7QUFDbEIsaUJBQWlCLDJEQUFDO0FBQ2xCLGlCQUFpQiwyREFBQztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEIsMEJBQTBCLHVEQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix1REFBRztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFDO0FBQ2xCLGlCQUFpQiwyREFBQztBQUNsQixpQkFBaUIsMkRBQUM7QUFDbEIsaUJBQWlCLDJEQUFDO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBQztBQUNsQiwwQkFBMEIsdURBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQUM7QUFDbEIsMEJBQTBCLHVEQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlC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QSxpQkFBaUIsMkRBQUM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCwyREFBQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJEQUFDO0FBQ3hCLDBCQUEwQix1REFBRztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3Rva2VuaXplci9pbmRleC5qcz81MDVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZXByb2Nlc3NvciB9IGZyb20gJy4vcHJlcHJvY2Vzc29yLmpzJztcbmltcG9ydCB7IENPREVfUE9JTlRTIGFzICQsIFNFUVVFTkNFUyBhcyAkJCwgUkVQTEFDRU1FTlRfQ0hBUkFDVEVSLCBpc1N1cnJvZ2F0ZSwgaXNVbmRlZmluZWRDb2RlUG9pbnQsIGlzQ29udHJvbENvZGVQb2ludCwgfSBmcm9tICcuLi9jb21tb24vdW5pY29kZS5qcyc7XG5pbXBvcnQgeyBUb2tlblR5cGUsIGdldFRva2VuQXR0ciwgfSBmcm9tICcuLi9jb21tb24vdG9rZW4uanMnO1xuaW1wb3J0IHsgaHRtbERlY29kZVRyZWUsIEVudGl0eURlY29kZXIsIERlY29kaW5nTW9kZSB9IGZyb20gJ2VudGl0aWVzL2RlY29kZSc7XG5pbXBvcnQgeyBFUlIgfSBmcm9tICcuLi9jb21tb24vZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHsgVEFHX0lELCBnZXRUYWdJRCB9IGZyb20gJy4uL2NvbW1vbi9odG1sLmpzJztcbi8vU3RhdGVzXG52YXIgU3RhdGU7XG4oZnVuY3Rpb24gKFN0YXRlKSB7XG4gICAgU3RhdGVbU3RhdGVbXCJEQVRBXCJdID0gMF0gPSBcIkRBVEFcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJDREFUQVwiXSA9IDFdID0gXCJSQ0RBVEFcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRcIl0gPSAyXSA9IFwiUkFXVEVYVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFcIl0gPSAzXSA9IFwiU0NSSVBUX0RBVEFcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlBMQUlOVEVYVFwiXSA9IDRdID0gXCJQTEFJTlRFWFRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlRBR19PUEVOXCJdID0gNV0gPSBcIlRBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJFTkRfVEFHX09QRU5cIl0gPSA2XSA9IFwiRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJUQUdfTkFNRVwiXSA9IDddID0gXCJUQUdfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkNEQVRBX0xFU1NfVEhBTl9TSUdOXCJdID0gOF0gPSBcIlJDREFUQV9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkNEQVRBX0VORF9UQUdfT1BFTlwiXSA9IDldID0gXCJSQ0RBVEFfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfRU5EX1RBR19OQU1FXCJdID0gMTBdID0gXCJSQ0RBVEFfRU5EX1RBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQVdURVhUX0xFU1NfVEhBTl9TSUdOXCJdID0gMTFdID0gXCJSQVdURVhUX0xFU1NfVEhBTl9TSUdOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQVdURVhUX0VORF9UQUdfT1BFTlwiXSA9IDEyXSA9IFwiUkFXVEVYVF9FTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfRU5EX1RBR19OQU1FXCJdID0gMTNdID0gXCJSQVdURVhUX0VORF9UQUdfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05cIl0gPSAxNF0gPSBcIlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU5cIl0gPSAxNV0gPSBcIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FXCJdID0gMTZdID0gXCJTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVFwiXSA9IDE3XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSFwiXSA9IDE4XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURcIl0gPSAxOV0gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSFwiXSA9IDIwXSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSFwiXSA9IDIxXSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05cIl0gPSAyMl0gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOXCJdID0gMjNdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVcIl0gPSAyNF0gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUXCJdID0gMjVdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRFwiXSA9IDI2XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hcIl0gPSAyN10gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSFwiXSA9IDI4XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiXSA9IDI5XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EXCJdID0gMzBdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVGT1JFX0FUVFJJQlVURV9OQU1FXCJdID0gMzFdID0gXCJCRUZPUkVfQVRUUklCVVRFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFUVFJJQlVURV9OQU1FXCJdID0gMzJdID0gXCJBVFRSSUJVVEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfQVRUUklCVVRFX05BTUVcIl0gPSAzM10gPSBcIkFGVEVSX0FUVFJJQlVURV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfQVRUUklCVVRFX1ZBTFVFXCJdID0gMzRdID0gXCJCRUZPUkVfQVRUUklCVVRFX1ZBTFVFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRFwiXSA9IDM1XSA9IFwiQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEXCJdID0gMzZdID0gXCJBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEXCJdID0gMzddID0gXCJBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURcIl0gPSAzOF0gPSBcIkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNFTEZfQ0xPU0lOR19TVEFSVF9UQUdcIl0gPSAzOV0gPSBcIlNFTEZfQ0xPU0lOR19TVEFSVF9UQUdcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJPR1VTX0NPTU1FTlRcIl0gPSA0MF0gPSBcIkJPR1VTX0NPTU1FTlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOXCJdID0gNDFdID0gXCJNQVJLVVBfREVDTEFSQVRJT05fT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9TVEFSVFwiXSA9IDQyXSA9IFwiQ09NTUVOVF9TVEFSVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9TVEFSVF9EQVNIXCJdID0gNDNdID0gXCJDT01NRU5UX1NUQVJUX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRcIl0gPSA0NF0gPSBcIkNPTU1FTlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05cIl0gPSA0NV0gPSBcIkNPTU1FTlRfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR1wiXSA9IDQ2XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSFwiXSA9IDQ3XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hcIl0gPSA0OF0gPSBcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfRU5EX0RBU0hcIl0gPSA0OV0gPSBcIkNPTU1FTlRfRU5EX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfRU5EXCJdID0gNTBdID0gXCJDT01NRU5UX0VORFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRfQkFOR1wiXSA9IDUxXSA9IFwiQ09NTUVOVF9FTkRfQkFOR1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRVwiXSA9IDUyXSA9IFwiRE9DVFlQRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVGT1JFX0RPQ1RZUEVfTkFNRVwiXSA9IDUzXSA9IFwiQkVGT1JFX0RPQ1RZUEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9OQU1FXCJdID0gNTRdID0gXCJET0NUWVBFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfTkFNRVwiXSA9IDU1XSA9IFwiQUZURVJfRE9DVFlQRV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEXCJdID0gNTZdID0gXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiXSA9IDU3XSA9IFwiQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRFwiXSA9IDU4XSA9IFwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URURcIl0gPSA1OV0gPSBcIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiXSA9IDYwXSA9IFwiQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTXCJdID0gNjFdID0gXCJCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRcIl0gPSA2Ml0gPSBcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCJdID0gNjNdID0gXCJCRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEXCJdID0gNjRdID0gXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRFwiXSA9IDY1XSA9IFwiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCJdID0gNjZdID0gXCJBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCT0dVU19ET0NUWVBFXCJdID0gNjddID0gXCJCT0dVU19ET0NUWVBFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDREFUQV9TRUNUSU9OXCJdID0gNjhdID0gXCJDREFUQV9TRUNUSU9OXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDREFUQV9TRUNUSU9OX0JSQUNLRVRcIl0gPSA2OV0gPSBcIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ0RBVEFfU0VDVElPTl9FTkRcIl0gPSA3MF0gPSBcIkNEQVRBX1NFQ1RJT05fRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDSEFSQUNURVJfUkVGRVJFTkNFXCJdID0gNzFdID0gXCJDSEFSQUNURVJfUkVGRVJFTkNFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBTUJJR1VPVVNfQU1QRVJTQU5EXCJdID0gNzJdID0gXCJBTUJJR1VPVVNfQU1QRVJTQU5EXCI7XG59KShTdGF0ZSB8fCAoU3RhdGUgPSB7fSkpO1xuLy9Ub2tlbml6ZXIgaW5pdGlhbCBzdGF0ZXMgZm9yIGRpZmZlcmVudCBtb2Rlc1xuZXhwb3J0IGNvbnN0IFRva2VuaXplck1vZGUgPSB7XG4gICAgREFUQTogU3RhdGUuREFUQSxcbiAgICBSQ0RBVEE6IFN0YXRlLlJDREFUQSxcbiAgICBSQVdURVhUOiBTdGF0ZS5SQVdURVhULFxuICAgIFNDUklQVF9EQVRBOiBTdGF0ZS5TQ1JJUFRfREFUQSxcbiAgICBQTEFJTlRFWFQ6IFN0YXRlLlBMQUlOVEVYVCxcbiAgICBDREFUQV9TRUNUSU9OOiBTdGF0ZS5DREFUQV9TRUNUSU9OLFxufTtcbi8vVXRpbHNcbi8vT1BUSU1JWkFUSU9OOiB0aGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIG1vdmVkIG91dCBvZiB0aGlzIG1vZHVsZS4gVjggQ3JhbmtzaGFmdCB3aWxsIG5vdCBpbmxpbmVcbi8vdGhpcyBmdW5jdGlvbnMgaWYgdGhleSB3aWxsIGJlIHNpdHVhdGVkIGluIGFub3RoZXIgbW9kdWxlIGR1ZSB0byBjb250ZXh0IHN3aXRjaC5cbi8vQWx3YXlzIHBlcmZvcm0gaW5saW5pbmcgY2hlY2sgYmVmb3JlIG1vZGlmeWluZyB0aGlzIGZ1bmN0aW9ucyAoJ25vZGUgLS10cmFjZS1pbmxpbmluZycpLlxuZnVuY3Rpb24gaXNBc2NpaURpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuRElHSVRfMCAmJiBjcCA8PSAkLkRJR0lUXzk7XG59XG5mdW5jdGlvbiBpc0FzY2lpVXBwZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9DQVBJVEFMX0EgJiYgY3AgPD0gJC5MQVRJTl9DQVBJVEFMX1o7XG59XG5mdW5jdGlvbiBpc0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfWjtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlMZXR0ZXIoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaUxvd2VyKGNwKSB8fCBpc0FzY2lpVXBwZXIoY3ApO1xufVxuZnVuY3Rpb24gaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTGV0dGVyKGNwKSB8fCBpc0FzY2lpRGlnaXQoY3ApO1xufVxuZnVuY3Rpb24gdG9Bc2NpaUxvd2VyKGNwKSB7XG4gICAgcmV0dXJuIGNwICsgMzI7XG59XG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoY3ApIHtcbiAgICByZXR1cm4gY3AgPT09ICQuU1BBQ0UgfHwgY3AgPT09ICQuTElORV9GRUVEIHx8IGNwID09PSAkLlRBQlVMQVRJT04gfHwgY3AgPT09ICQuRk9STV9GRUVEO1xufVxuZnVuY3Rpb24gaXNTY3JpcHREYXRhRG91YmxlRXNjYXBlU2VxdWVuY2VFbmQoY3ApIHtcbiAgICByZXR1cm4gaXNXaGl0ZXNwYWNlKGNwKSB8fCBjcCA9PT0gJC5TT0xJRFVTIHx8IGNwID09PSAkLkdSRUFURVJfVEhBTl9TSUdOO1xufVxuZnVuY3Rpb24gZ2V0RXJyb3JGb3JOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gJC5OVUxMKSB7XG4gICAgICAgIHJldHVybiBFUlIubnVsbENoYXJhY3RlclJlZmVyZW5jZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29kZSA+IDExMTQxMTEpIHtcbiAgICAgICAgcmV0dXJuIEVSUi5jaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1N1cnJvZ2F0ZShjb2RlKSkge1xuICAgICAgICByZXR1cm4gRVJSLnN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNVbmRlZmluZWRDb2RlUG9pbnQoY29kZSkpIHtcbiAgICAgICAgcmV0dXJuIEVSUi5ub25jaGFyYWN0ZXJDaGFyYWN0ZXJSZWZlcmVuY2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQ29udHJvbENvZGVQb2ludChjb2RlKSB8fCBjb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTikge1xuICAgICAgICByZXR1cm4gRVJSLmNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2U7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuLy9Ub2tlbml6ZXJcbmV4cG9ydCBjbGFzcyBUb2tlbml6ZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqIEVuc3VyZXMgdGhhdCB0aGUgcGFyc2luZyBsb29wIGlzbid0IHJ1biBtdWx0aXBsZSB0aW1lcyBhdCBvbmNlLiAqL1xuICAgICAgICB0aGlzLmluTG9vcCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgYWRqdXN0ZWQgbm9kZSBleGlzdHMsIGlzIG5vdCBhbiBlbGVtZW50IGluIHRoZSBIVE1MIG5hbWVzcGFjZSxcbiAgICAgICAgICogYW5kIHRoYXQgaXQgaXMgbm90IGFuIGludGVncmF0aW9uIHBvaW50IGZvciBlaXRoZXIgTWF0aE1MIG9yIEhUTUwuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCN0cmVlLWNvbnN0cnVjdGlvbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaW5Gb3JlaWduTm9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ05hbWUgPSAnJztcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICB0aGlzLmVudGl0eVN0YXJ0UG9zID0gMDtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIgPSB7IG5hbWU6ICcnLCB2YWx1ZTogJycgfTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBuZXcgUHJlcHJvY2Vzc29yKGhhbmRsZXIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKC0xKTtcbiAgICAgICAgdGhpcy5lbnRpdHlEZWNvZGVyID0gbmV3IEVudGl0eURlY29kZXIoaHRtbERlY29kZVRyZWUsIChjcCwgY29uc3VtZWQpID0+IHtcbiAgICAgICAgICAgIC8vIE5vdGU6IFNldCBgcG9zYCBfYmVmb3JlXyBmbHVzaGluZywgYXMgZmx1c2hpbmcgbWlnaHQgZHJvcFxuICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgY2h1bmsgYW5kIGludmFsaWRhdGUgYGVudGl0eVN0YXJ0UG9zYC5cbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnBvcyA9IHRoaXMuZW50aXR5U3RhcnRQb3MgKyBjb25zdW1lZCAtIDE7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICB9LCBoYW5kbGVyLm9uUGFyc2VFcnJvclxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgbWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlLCAxKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZTogKGNvbnN1bWVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlLCB0aGlzLmVudGl0eVN0YXJ0UG9zIC0gdGhpcy5wcmVwcm9jZXNzb3IucG9zICsgY29uc3VtZWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlOiAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGdldEVycm9yRm9yTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZShjb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yLCAxKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoY29kZSwgY3BPZmZzZXQgPSAwKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuaGFuZGxlcikub25QYXJzZUVycm9yKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgdGhpcy5wcmVwcm9jZXNzb3IuZ2V0RXJyb3IoY29kZSwgY3BPZmZzZXQpKTtcbiAgICB9XG4gICAgLy8gTk9URTogYG9mZnNldGAgbWF5IG5ldmVyIHJ1biBhY3Jvc3MgbGluZSBib3VuZGFyaWVzLlxuICAgIGdldEN1cnJlbnRMb2NhdGlvbihvZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0TGluZTogdGhpcy5wcmVwcm9jZXNzb3IubGluZSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiB0aGlzLnByZXByb2Nlc3Nvci5jb2wgLSBvZmZzZXQsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdGhpcy5wcmVwcm9jZXNzb3Iub2Zmc2V0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgZW5kTGluZTogLTEsXG4gICAgICAgICAgICBlbmRDb2w6IC0xLFxuICAgICAgICAgICAgZW5kT2Zmc2V0OiAtMSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX3J1blBhcnNpbmdMb29wKCkge1xuICAgICAgICBpZiAodGhpcy5pbkxvb3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaW5Mb29wID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHRoaXMuYWN0aXZlICYmICF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAwO1xuICAgICAgICAgICAgY29uc3QgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxsU3RhdGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5Mb29wID0gZmFsc2U7XG4gICAgfVxuICAgIC8vQVBJXG4gICAgcGF1c2UoKSB7XG4gICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmVzdW1lKHdyaXRlQ2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgd2FzIGFscmVhZHkgcmVzdW1lZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIC8vIE5lY2Vzc2FyeSBmb3Igc3luY2hyb25vdXMgcmVzdW1lLlxuICAgICAgICBpZiAodGhpcy5pbkxvb3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKCk7XG4gICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHdyaXRlQ2FsbGJhY2sgPT09IG51bGwgfHwgd3JpdGVDYWxsYmFjayA9PT0gdm9pZCAwID8gdm9pZCAwIDogd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaywgd3JpdGVDYWxsYmFjaykge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLndyaXRlKGNodW5rLCBpc0xhc3RDaHVuayk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKCk7XG4gICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHdyaXRlQ2FsbGJhY2sgPT09IG51bGwgfHwgd3JpdGVDYWxsYmFjayA9PT0gdm9pZCAwID8gdm9pZCAwIDogd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AoKTtcbiAgICB9XG4gICAgLy9IaWJlcm5hdGlvblxuICAgIF9lbnN1cmVIaWJlcm5hdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLmVuZE9mQ2h1bmtIaXQpIHtcbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQodGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QpO1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAwO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy9Db25zdW1wdGlvblxuICAgIF9jb25zdW1lKCkge1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCsrO1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVwcm9jZXNzb3IuYWR2YW5jZSgpO1xuICAgIH1cbiAgICBfYWR2YW5jZUJ5KGNvdW50KSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ICs9IGNvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmFkdmFuY2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfY29uc3VtZVNlcXVlbmNlSWZNYXRjaChwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKHBhdHRlcm4sIGNhc2VTZW5zaXRpdmUpKSB7XG4gICAgICAgICAgICAvLyBXZSB3aWxsIGFscmVhZHkgaGF2ZSBjb25zdW1lZCBvbmUgY2hhcmFjdGVyIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHBhdHRlcm4ubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vVG9rZW4gY3JlYXRpb25cbiAgICBfY3JlYXRlU3RhcnRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlblR5cGUuU1RBUlRfVEFHLFxuICAgICAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgICAgICB0YWdJRDogVEFHX0lELlVOS05PV04sXG4gICAgICAgICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhY2tTZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhdHRyczogW10sXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9jcmVhdGVFbmRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlblR5cGUuRU5EX1RBRyxcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgdGFnSUQ6IFRBR19JRC5VTktOT1dOLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYWNrU2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDIpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlQ29tbWVudFRva2VuKG9mZnNldCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5DT01NRU5ULFxuICAgICAgICAgICAgZGF0YTogJycsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24ob2Zmc2V0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5ET0NUWVBFLFxuICAgICAgICAgICAgbmFtZTogaW5pdGlhbE5hbWUsXG4gICAgICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBudWxsLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuY3VycmVudExvY2F0aW9uLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2hhcnMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgY2hhcnMsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vVGFnIGF0dHJpYnV0ZXNcbiAgICBfY3JlYXRlQXR0cihhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IHtcbiAgICAgICAgICAgIG5hbWU6IGF0dHJOYW1lRmlyc3RDaCxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigwKTtcbiAgICB9XG4gICAgX2xlYXZlQXR0ck5hbWUoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBpZiAoZ2V0VG9rZW5BdHRyKHRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICAgICAgaWYgKHRva2VuLmxvY2F0aW9uICYmIHRoaXMuY3VycmVudExvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ckxvY2F0aW9ucyA9ICgoX2EgPSAoX2IgPSB0b2tlbi5sb2NhdGlvbikuYXR0cnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChfYi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCkpKTtcbiAgICAgICAgICAgICAgICBhdHRyTG9jYXRpb25zW3RoaXMuY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICAvLyBTZXQgZW5kIGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZHVwbGljYXRlQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfbGVhdmVBdHRyVmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2NhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24uZW5kTGluZSA9IHRoaXMucHJlcHJvY2Vzc29yLmxpbmU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnByZXByb2Nlc3Nvci5jb2w7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRPZmZzZXQgPSB0aGlzLnByZXByb2Nlc3Nvci5vZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9Ub2tlbiBlbWlzc2lvblxuICAgIHByZXBhcmVUb2tlbihjdCkge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKGN0LmxvY2F0aW9uKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgICAgICBpZiAoY3QubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGN0LmxvY2F0aW9uLmVuZExpbmUgPSB0aGlzLnByZXByb2Nlc3Nvci5saW5lO1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kQ29sID0gdGhpcy5wcmVwcm9jZXNzb3IuY29sICsgMTtcbiAgICAgICAgICAgIGN0LmxvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMucHJlcHJvY2Vzc29yLm9mZnNldCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigtMSk7XG4gICAgfVxuICAgIGVtaXRDdXJyZW50VGFnVG9rZW4oKSB7XG4gICAgICAgIGNvbnN0IGN0ID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgY3QudGFnSUQgPSBnZXRUYWdJRChjdC50YWdOYW1lKTtcbiAgICAgICAgaWYgKGN0LnR5cGUgPT09IFRva2VuVHlwZS5TVEFSVF9UQUcpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9IGN0LnRhZ05hbWU7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25TdGFydFRhZyhjdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3QuYXR0cnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW5kVGFnV2l0aEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkVuZFRhZyhjdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgfVxuICAgIGVtaXRDdXJyZW50Q29tbWVudChjdCkge1xuICAgICAgICB0aGlzLnByZXBhcmVUb2tlbihjdCk7XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkNvbW1lbnQoY3QpO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnREb2N0eXBlKGN0KSB7XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uRG9jdHlwZShjdCk7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuICAgIH1cbiAgICBfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbihuZXh0TG9jYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgYSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiwgbWFrZSBpdCdzIGVuZCBsb2NhdGlvbiBlcXVhbCB0byB0aGVcbiAgICAgICAgICAgIC8vY3VycmVudCB0b2tlbidzIHN0YXJ0IGxvY2F0aW9uLlxuICAgICAgICAgICAgaWYgKG5leHRMb2NhdGlvbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZExpbmUgPSBuZXh0TG9jYXRpb24uc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZENvbCA9IG5leHRMb2NhdGlvbi5zdGFydENvbDtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQgPSBuZXh0TG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uQ2hhcmFjdGVyKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbk51bGxDaGFyYWN0ZXIodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uV2hpdGVzcGFjZUNoYXJhY3Rlcih0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZW1pdEVPRlRva2VuKCkge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDApO1xuICAgICAgICBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZExpbmUgPSBsb2NhdGlvbi5zdGFydExpbmU7XG4gICAgICAgICAgICBsb2NhdGlvbi5lbmRDb2wgPSBsb2NhdGlvbi5zdGFydENvbDtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4obG9jYXRpb24pO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25Fb2YoeyB0eXBlOiBUb2tlblR5cGUuRU9GLCBsb2NhdGlvbiB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG4gICAgLy9PUFRJTUlaQVRJT046IFRoZSBzcGVjaWZpY2F0aW9uIHVzZXMgb25seSBvbmUgdHlwZSBvZiBjaGFyYWN0ZXIgdG9rZW4gKG9uZSB0b2tlbiBwZXIgY2hhcmFjdGVyKS5cbiAgICAvL1RoaXMgY2F1c2VzIGEgaHVnZSBtZW1vcnkgb3ZlcmhlYWQgYW5kIGEgbG90IG9mIHVubmVjZXNzYXJ5IHBhcnNlciBsb29wcy4gcGFyc2U1IHVzZXMgMyBncm91cHMgb2YgY2hhcmFjdGVycy5cbiAgICAvL0lmIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGdyb3VwLCB0aGUgcGFyc2VyIGNhbiBwcm9jZXNzIGl0XG4gICAgLy9hcyBhIHNpbmdsZSBzb2xpZCBjaGFyYWN0ZXIgdG9rZW4uXG4gICAgLy9TbywgdGhlcmUgYXJlIDMgdHlwZXMgb2YgY2hhcmFjdGVyIHRva2VucyBpbiBwYXJzZTU6XG4gICAgLy8xKVRva2VuVHlwZS5OVUxMX0NIQVJBQ1RFUiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbiAgICAvLzIpVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSIC0gYW55IHdoaXRlc3BhY2UvbmV3LWxpbmUgY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFxuICBcXHJcXHQgICBcXGYnKVxuICAgIC8vMylUb2tlblR5cGUuQ0hBUkFDVEVSIC0gYW55IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb24ndCBiZWxvbmcgdG8gZ3JvdXBzIDEgYW5kIDIgKGUuZy4gJ2FiY2RlZjEyMzRAQCMkJV4nKVxuICAgIF9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4udHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmNoYXJzICs9IGNoO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbih0aGlzLmN1cnJlbnRMb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xuICAgIH1cbiAgICBfZW1pdENvZGVQb2ludChjcCkge1xuICAgICAgICBjb25zdCB0eXBlID0gaXNXaGl0ZXNwYWNlKGNwKVxuICAgICAgICAgICAgPyBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVJcbiAgICAgICAgICAgIDogY3AgPT09ICQuTlVMTFxuICAgICAgICAgICAgICAgID8gVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSXG4gICAgICAgICAgICAgICAgOiBUb2tlblR5cGUuQ0hBUkFDVEVSO1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApKTtcbiAgICB9XG4gICAgLy9OT1RFOiB1c2VkIHdoZW4gd2UgZW1pdCBjaGFyYWN0ZXJzIGV4cGxpY2l0bHkuXG4gICAgLy9UaGlzIGlzIGFsd2F5cyBmb3Igbm9uLXdoaXRlc3BhY2UgYW5kIG5vbi1udWxsIGNoYXJhY3RlcnMsIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZCBhZGRpdGlvbmFsIGNoZWNrcy5cbiAgICBfZW1pdENoYXJzKGNoKSB7XG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbihUb2tlblR5cGUuQ0hBUkFDVEVSLCBjaCk7XG4gICAgfVxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2UgaGVscGVyc1xuICAgIF9zdGFydENoYXJhY3RlclJlZmVyZW5jZSgpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFO1xuICAgICAgICB0aGlzLmVudGl0eVN0YXJ0UG9zID0gdGhpcy5wcmVwcm9jZXNzb3IucG9zO1xuICAgICAgICB0aGlzLmVudGl0eURlY29kZXIuc3RhcnRFbnRpdHkodGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpID8gRGVjb2RpbmdNb2RlLkF0dHJpYnV0ZSA6IERlY29kaW5nTW9kZS5MZWdhY3kpO1xuICAgIH1cbiAgICBfaXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnJldHVyblN0YXRlID09PSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRCB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URUQgfHxcbiAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPT09IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRCk7XG4gICAgfVxuICAgIF9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUoKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDYWxsaW5nIHN0YXRlcyB0aGlzIHdheSB0dXJucyBvdXQgdG8gYmUgbXVjaCBmYXN0ZXIgdGhhbiBhbnkgb3RoZXIgYXBwcm9hY2guXG4gICAgX2NhbGxTdGF0ZShjcCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgU3RhdGUuREFUQToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGF0YShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJDREFUQToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkFXVEVYVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUExBSU5URVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVQbGFpbnRleHQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkVORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlRBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkNEQVRBX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkNEQVRBX0VORF9UQUdfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhRW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQVdURVhUX0VORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dEVuZFRhZ09wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQVdURVhUX0VORF9UQUdfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dEVuZFRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUxlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ09wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FTkRfVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFUVFJJQlVURV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfQVRUUklCVVRFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfVkFMVUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZVZhbHVlKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNlbGZDbG9zaW5nU3RhcnRUYWcoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CT0dVU19DT01NRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5NQVJLVVBfREVDTEFSQVRJT05fT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlTWFya3VwRGVjbGFyYXRpb25PcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9TVEFSVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudFN0YXJ0KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9TVEFSVF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50U3RhcnREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0VORF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9FTkRfQkFORzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZEJhbmcoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0RPQ1RZUEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEb2N0eXBlU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CT0dVU19ET0NUWVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DREFUQV9TRUNUSU9OOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDZGF0YVNlY3Rpb24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DREFUQV9TRUNUSU9OX0JSQUNLRVQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbkJyYWNrZXQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DREFUQV9TRUNUSU9OX0VORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uRW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFNQklHVU9VU19BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFtYmlndW91c0FtcGVyc2FuZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHN0YXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU3RhdGUgbWFjaGluZVxuICAgIC8vIERhdGEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURhdGEoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19PUEVOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0Q2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vICBSQ0RBVEEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEFfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJBV1RFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJhd3RleHQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFRfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUExBSU5URVhUIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVQbGFpbnRleHQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUYWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJC5FWENMQU1BVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5NQVJLVVBfREVDTEFSQVRJT05fT1BFTjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5FTkRfVEFHX09QRU47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuUVVFU1RJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkJlZm9yZVRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURhdGEoY3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgLy8gRW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVFbmRUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdFbmRUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKDIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgLy8gVGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVRhZ05hbWUoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuU09MSURVUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TRUxGX0NMT1NJTkdfU1RBUlRfVEFHO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoaXNBc2NpaVVwcGVyKGNwKSA/IHRvQXNjaWlMb3dlcihjcCkgOiBjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSY2RhdGFMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19PUEVOO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkNEQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJDREFUQSBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkNEQVRBX0VORF9UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkNEQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhbmRsZVNwZWNpYWxFbmRUYWcoX2NwKSB7XG4gICAgICAgIGlmICghdGhpcy5wcmVwcm9jZXNzb3Iuc3RhcnRzV2l0aCh0aGlzLmxhc3RTdGFydFRhZ05hbWUsIGZhbHNlKSkge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NyZWF0ZUVuZFRhZ1Rva2VuKCk7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHRva2VuLnRhZ05hbWUgPSB0aGlzLmxhc3RTdGFydFRhZ05hbWU7XG4gICAgICAgIGNvbnN0IGNwID0gdGhpcy5wcmVwcm9jZXNzb3IucGVlayh0aGlzLmxhc3RTdGFydFRhZ05hbWUubGVuZ3RoKTtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkdmFuY2VCeSh0aGlzLmxhc3RTdGFydFRhZ05hbWUubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TRUxGX0NMT1NJTkdfU1RBUlRfVEFHO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkdmFuY2VCeSh0aGlzLmxhc3RTdGFydFRhZ05hbWUubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJDREFUQSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YUVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFRfRU5EX1RBR19PUEVOO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJhd3RleHRFbmRUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFRfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJhd3RleHRFbmRUYWdOYW1lKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLmhhbmRsZVNwZWNpYWxFbmRUYWcoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVYQ0xBTUFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCEnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFbmRUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFbmRUYWdOYW1lKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLmhhbmRsZVNwZWNpYWxFbmRUYWcoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZSBzdGFydCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZVN0YXJ0KGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGUgc3RhcnQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaChjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0g7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0g7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWREYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0g7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPicpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9TVEFSVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0KGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLmhhbmRsZVNwZWNpYWxFbmRUYWcoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGUgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydChjcCkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3Iuc3RhcnRzV2l0aCgkJC5TQ1JJUFQsIGZhbHNlKSAmJlxuICAgICAgICAgICAgaXNTY3JpcHREYXRhRG91YmxlRXNjYXBlU2VxdWVuY2VFbmQodGhpcy5wcmVwcm9jZXNzb3IucGVlaygkJC5TQ1JJUFQubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAkJC5TQ1JJUFQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KHRoaXMuX2NvbnN1bWUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJz4nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkQ7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy8nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGUgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKCQkLlNDUklQVCwgZmFsc2UpICYmXG4gICAgICAgICAgICBpc1NjcmlwdERhdGFEb3VibGVFc2NhcGVTZXF1ZW5jZUVuZCh0aGlzLnByZXByb2Nlc3Nvci5wZWVrKCQkLlNDUklQVC5sZW5ndGgpKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICQkLlNDUklQVC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQodGhpcy5fY29uc3VtZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgYXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZUF0dHJpYnV0ZU5hbWUoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuU09MSURVUzpcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjpcbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVRVUFMU19TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJz0nKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOlxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOlxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0ck5hbWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVRVUFMU19TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX1ZBTFVFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOlxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGlzQXNjaWlVcHBlcihjcCkgPyB0b0FzY2lpTG93ZXIoY3ApIDogY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckF0dHJpYnV0ZU5hbWUoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuU09MSURVUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TRUxGX0NMT1NJTkdfU1RBUlRfVEFHO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVRVUFMU19TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfVkFMVUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgYXR0cmlidXRlIHZhbHVlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCZWZvcmVBdHRyaWJ1dGVWYWx1ZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nQXR0cmlidXRlVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfVU5RVU9URUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdHRyaWJ1dGUgdmFsdWUgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydENoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdHRyaWJ1dGUgdmFsdWUgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0Q2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOlxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046XG4gICAgICAgICAgICBjYXNlICQuR1JBVkVfQUNDRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2VsZi1jbG9zaW5nIHN0YXJ0IHRhZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2VsZkNsb3NpbmdTdGFydFRhZyhjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICAgICAgICAgIHRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRTb2xpZHVzSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCb2d1cyBjb21tZW50IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCb2d1c0NvbW1lbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTWFya3VwIGRlY2xhcmF0aW9uIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZU1hcmt1cERlY2xhcmF0aW9uT3BlbihjcCkge1xuICAgICAgICBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5EQVNIX0RBU0gsIHRydWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oJCQuREFTSF9EQVNILmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfU1RBUlQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5ET0NUWVBFLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IERvY3R5cGVzIHRva2VucyBhcmUgY3JlYXRlZCB3aXRob3V0IGZpeGVkIG9mZnNldHMuIFdlIGtlZXAgdHJhY2sgb2YgdGhlIG1vbWVudCBhIGRvY3R5cGUgKm1pZ2h0KiBzdGFydCBoZXJlLlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigkJC5ET0NUWVBFLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5DREFUQV9TVEFSVCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluRm9yZWlnbk5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2RhdGFJbkh0bWxDb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oJCQuQ0RBVEFfU1RBUlQubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSA9ICdbQ0RBVEFbJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFNlcXVlbmNlIGxvb2t1cHMgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UsIGxvb2t1cFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmluY29ycmVjdGx5T3BlbmVkQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNDb21tZW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50U3RhcnQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX1NUQVJUX0RBU0g7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRTdGFydERhc2goY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORF9EQVNIO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnPCc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJyEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICc8JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmcoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduQmFuZ0Rhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZERhc2goY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaERhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSAkLkdSRUFURVJfVEhBTl9TSUdOICYmIGNwICE9PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZChjcCk7XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50RW5kKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FWENMQU1BVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfRU5EX0JBTkc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctLSc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IGVuZCBiYW5nIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50RW5kQmFuZyhjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLS0hJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXIoY3ApKSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9OQU1FO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5uYW1lICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGlzQXNjaWlVcHBlcihjcCkgPyB0b0FzY2lpTG93ZXIoY3ApIDogY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlTmFtZShjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5QVUJMSUMsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5TWVNURU0sIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBzZXF1ZW5jZSBsb29rdXAgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbG9va3VwXG4gICAgICAgICAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZENoYXJhY3RlclNlcXVlbmNlQWZ0ZXJEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBwdWJsaWMga2V5d29yZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIHN5c3RlbSBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQm9ndXNEb2N0eXBlKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDREFUQSBzZWN0aW9uIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDZGF0YVNlY3Rpb24oY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNEQVRBX1NFQ1RJT05fQlJBQ0tFVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ2RhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENEQVRBIHNlY3Rpb24gYnJhY2tldCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ2RhdGFTZWN0aW9uQnJhY2tldChjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OX0VORDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNEQVRBX1NFQ1RJT047XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNkYXRhU2VjdGlvbkVuZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5SSUdIVF9TUVVBUkVfQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXV0nKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ2hhcmFjdGVyUmVmZXJlbmNlKCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5lbnRpdHlEZWNvZGVyLndyaXRlKHRoaXMucHJlcHJvY2Vzc29yLmh0bWwsIHRoaXMucHJlcHJvY2Vzc29yLnBvcyk7XG4gICAgICAgIGlmIChsZW5ndGggPCAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3IubGFzdENodW5rV3JpdHRlbikge1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHRoaXMuZW50aXR5RGVjb2Rlci5lbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSByZXN0IG9mIHRoZSBlbnRpdHkuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBNYXJrIHRoZSBlbnRpcmUgYnVmZmVyIGFzIHJlYWQuXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucG9zID0gdGhpcy5wcmVwcm9jZXNzb3IuaHRtbC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gVGhpcyB3YXMgbm90IGEgdmFsaWQgZW50aXR5LiBHbyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcsIGFuZFxuICAgICAgICAgICAgLy8gZmlndXJlIG91dCB3aGF0IHRvIGRvLlxuICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucG9zID0gdGhpcy5lbnRpdHlTdGFydFBvcztcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgkLkFNUEVSU0FORCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID1cbiAgICAgICAgICAgICAgICAhdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpICYmIGlzQXNjaWlBbHBoYU51bWVyaWModGhpcy5wcmVwcm9jZXNzb3IucGVlaygxKSlcbiAgICAgICAgICAgICAgICAgICAgPyBTdGF0ZS5BTUJJR1VPVVNfQU1QRVJTQU5EXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5yZXR1cm5TdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgYW4gZW50aXR5LiBTd2l0Y2ggdG8gdGhlIHJldHVybiBzdGF0ZS5cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFtYmlndW9zIGFtcGVyc2FuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQW1iaWd1b3VzQW1wZXJzYW5kKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5yZXR1cm5TdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxTdGF0ZShjcCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/tokenizer/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/tokenizer/preprocessor.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/parse5/dist/tokenizer/preprocessor.js ***!
|
|
\************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Preprocessor: () => (/* binding */ Preprocessor)\n/* harmony export */ });\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/unicode.js */ \"(rsc)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/error-codes.js */ \"(rsc)/./node_modules/parse5/dist/common/error-codes.js\");\n\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isSurrogatePair)(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return (0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.getSurrogatePairCodePoint)(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n //NOTE: isolated surrogate\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN ? _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isSurrogate)(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED ||\n cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isControlCodePoint)(cp)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.controlCharacterInInputStream);\n }\n else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isUndefinedCodePoint)(cp)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdG9rZW5pemVyL3ByZXByb2Nlc3Nvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEo7QUFDN0c7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtRUFBZTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2RUFBeUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyREFBQztBQUNwQjtBQUNBO0FBQ0Esa0JBQWtCLHVEQUFHO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkRBQUM7QUFDcEI7QUFDQTtBQUNBLHdCQUF3QiwyREFBQyxtQkFBbUIsMkRBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyREFBQztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkRBQUM7QUFDcEI7QUFDQTtBQUNBLG1CQUFtQiwyREFBQztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkRBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtEQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJEQUFDO0FBQ3BCLG1CQUFtQiwyREFBQztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQWtCO0FBQzlCLHNCQUFzQix1REFBRztBQUN6QjtBQUNBLGlCQUFpQix3RUFBb0I7QUFDckMsc0JBQXNCLHVEQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanM/NTU3OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFX1BPSU5UUyBhcyAkLCBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50LCBpc0NvbnRyb2xDb2RlUG9pbnQsIGlzU3Vycm9nYXRlLCBpc1N1cnJvZ2F0ZVBhaXIsIGlzVW5kZWZpbmVkQ29kZVBvaW50LCB9IGZyb20gJy4uL2NvbW1vbi91bmljb2RlLmpzJztcbmltcG9ydCB7IEVSUiB9IGZyb20gJy4uL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyc7XG4vL0NvbnN0XG5jb25zdCBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUgPSAxIDw8IDE2O1xuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG5leHBvcnQgY2xhc3MgUHJlcHJvY2Vzc29yIHtcbiAgICBjb25zdHJ1Y3RvcihoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMuaHRtbCA9ICcnO1xuICAgICAgICB0aGlzLnBvcyA9IC0xO1xuICAgICAgICAvLyBOT1RFOiBJbml0aWFsIGBsYXN0R2FwUG9zYCBpcyAtMiwgdG8gZW5zdXJlIGBjb2xgIG9uIGluaXRpYWxpc2F0aW9uIGlzIDBcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gLTI7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpbmVTdGFydFBvcyA9IDA7XG4gICAgICAgIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgPSAwO1xuICAgICAgICB0aGlzLmxpbmUgPSAxO1xuICAgICAgICAvL05PVEU6IGF2b2lkIHJlcG9ydGluZyBlcnJvcnMgdHdpY2Ugb24gYWR2YW5jZS9yZXRyZWF0XG4gICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IC0xO1xuICAgIH1cbiAgICAvKiogVGhlIGNvbHVtbiBvbiB0aGUgY3VycmVudCBsaW5lLiBJZiB3ZSBqdXN0IHNhdyBhIGdhcCAoZWcuIGEgc3Vycm9nYXRlIHBhaXIpLCByZXR1cm4gdGhlIGluZGV4IGJlZm9yZS4gKi9cbiAgICBnZXQgY29sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3MgLSB0aGlzLmxpbmVTdGFydFBvcyArIE51bWJlcih0aGlzLmxhc3RHYXBQb3MgIT09IHRoaXMucG9zKTtcbiAgICB9XG4gICAgZ2V0IG9mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgKyB0aGlzLnBvcztcbiAgICB9XG4gICAgZ2V0RXJyb3IoY29kZSwgY3BPZmZzZXQpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2wsIG9mZnNldCB9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc3RhcnRDb2wgPSBjb2wgKyBjcE9mZnNldDtcbiAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBvZmZzZXQgKyBjcE9mZnNldDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxpbmUsXG4gICAgICAgICAgICBlbmRMaW5lOiBsaW5lLFxuICAgICAgICAgICAgc3RhcnRDb2wsXG4gICAgICAgICAgICBlbmRDb2w6IHN0YXJ0Q29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IHN0YXJ0T2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfZXJyKGNvZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlci5vblBhcnNlRXJyb3IgJiYgdGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0RXJyT2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25QYXJzZUVycm9yKHRoaXMuZ2V0RXJyb3IoY29kZSwgMCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9hZGRHYXAoKSB7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sucHVzaCh0aGlzLmxhc3RHYXBQb3MpO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbiAgICB9XG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5odG1sLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAgICAgICAgIC8vTk9URTogYWRkIGEgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcCwgbmV4dENwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciB0aGUgc3Vycm9nYXRlIHBhaXIgeWV0LlxuICAgICAgICBlbHNlIGlmICghdGhpcy5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuICQuRU9GO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogaXNvbGF0ZWQgc3Vycm9nYXRlXG4gICAgICAgIHRoaXMuX2VycihFUlIuc3Vycm9nYXRlSW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG4gICAgd2lsbERyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zID4gdGhpcy5idWZmZXJXYXRlcmxpbmU7XG4gICAgfVxuICAgIGRyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgaWYgKHRoaXMud2lsbERyb3BQYXJzZWRDaHVuaygpKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSArPSB0aGlzLnBvcztcbiAgICAgICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0yO1xuICAgICAgICAgICAgdGhpcy5nYXBTdGFjay5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCArPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGNodW5rO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RDaHVua1dyaXR0ZW4gPSBpc0xhc3RDaHVuaztcbiAgICB9XG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKDAsIHRoaXMucG9zICsgMSkgKyBjaHVuayArIHRoaXMuaHRtbC5zdWJzdHJpbmcodGhpcy5wb3MgKyAxKTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgfVxuICAgIHN0YXJ0c1dpdGgocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAvLyBDaGVjayBpZiBvdXIgYnVmZmVyIGhhcyBlbm91Z2ggY2hhcmFjdGVyc1xuICAgICAgICBpZiAodGhpcy5wb3MgKyBwYXR0ZXJuLmxlbmd0aCA+IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0bWwuc3RhcnRzV2l0aChwYXR0ZXJuLCB0aGlzLnBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgaSkgfCAweDIwO1xuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHBlZWsob2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zICsgb2Zmc2V0O1xuICAgICAgICBpZiAocG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29kZSA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIHJldHVybiBjb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTiA/ICQuTElORV9GRUVEIDogY29kZTtcbiAgICB9XG4gICAgYWR2YW5jZSgpIHtcbiAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgLy9OT1RFOiBMRiBzaG91bGQgYmUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBsaW5lXG4gICAgICAgIGlmICh0aGlzLmlzRW9sKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpbmUrKztcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiAkLkxJTkVfRkVFRDtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IGFueSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVycyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvdyBhIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJcbiAgICAgICAgLy9tdXN0IGJlIGlnbm9yZWQuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MSU5FX0ZFRUQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFb2wgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gYGxpbmVgIHdpbGwgYmUgYnVtcGVkIGFnYWluIGluIHRoZSByZWN1cnNpdmUgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLmxpbmUtLTtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY3ApKSB7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX3Byb2Nlc3NTdXJyb2dhdGUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID0gdGhpcy5oYW5kbGVyLm9uUGFyc2VFcnJvciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgKGNwID4gMHgxZiAmJiBjcCA8IDB4N2YpIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5MSU5FX0ZFRUQgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkNBUlJJQUdFX1JFVFVSTiB8fFxuICAgICAgICAgICAgKGNwID4gMHg5ZiAmJiBjcCA8IDY0OTc2KTtcbiAgICAgICAgaWYgKCFpc0NvbW1vblZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuICAgIF9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCkge1xuICAgICAgICBpZiAoaXNDb250cm9sQ29kZVBvaW50KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHJlYXQoY291bnQpIHtcbiAgICAgICAgdGhpcy5wb3MgLT0gY291bnQ7XG4gICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMubGFzdEdhcFBvcykge1xuICAgICAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5nYXBTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMucG9zLS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/tokenizer/preprocessor.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/dist/tree-adapters/default.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/parse5/dist/tree-adapters/default.js ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultTreeAdapter: () => (/* binding */ defaultTreeAdapter)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(rsc)/./node_modules/parse5/dist/common/html.js\");\n\nconst defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: _common_html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtEO0FBQzNDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMERBQWE7QUFDL0I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxvQ0FBb0M7QUFDcEMsS0FBSztBQUNMIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanM/M2IwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVF9NT0RFIH0gZnJvbSAnLi4vY29tbW9uL2h0bWwuanMnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmVlQWRhcHRlciA9IHtcbiAgICAvL05vZGUgY29uc3RydWN0aW9uXG4gICAgY3JlYXRlRG9jdW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudCcsXG4gICAgICAgICAgICBtb2RlOiBET0NVTUVOVF9NT0RFLk5PX1FVSVJLUyxcbiAgICAgICAgICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50LWZyYWdtZW50JyxcbiAgICAgICAgICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBuYW1lc3BhY2VVUkksIGF0dHJzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlTmFtZTogdGFnTmFtZSxcbiAgICAgICAgICAgIHRhZ05hbWUsXG4gICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgIG5hbWVzcGFjZVVSSSxcbiAgICAgICAgICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgICAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZUNvbW1lbnROb2RlKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiAnI2NvbW1lbnQnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjdGV4dCcsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvL1RyZWUgbXV0YXRpb25cbiAgICBhcHBlbmRDaGlsZChwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuY2hpbGROb2Rlcy5wdXNoKG5ld05vZGUpO1xuICAgICAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICAgIH0sXG4gICAgaW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSk7XG4gICAgICAgIHBhcmVudE5vZGUuY2hpbGROb2Rlcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdOb2RlKTtcbiAgICAgICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIHNldFRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZUVsZW1lbnQsIGNvbnRlbnRFbGVtZW50KSB7XG4gICAgICAgIHRlbXBsYXRlRWxlbWVudC5jb250ZW50ID0gY29udGVudEVsZW1lbnQ7XG4gICAgfSxcbiAgICBnZXRUZW1wbGF0ZUNvbnRlbnQodGVtcGxhdGVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudDtcbiAgICB9LFxuICAgIHNldERvY3VtZW50VHlwZShkb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKSB7XG4gICAgICAgIGNvbnN0IGRvY3R5cGVOb2RlID0gZG9jdW1lbnQuY2hpbGROb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZScpO1xuICAgICAgICBpZiAoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUucHVibGljSWQgPSBwdWJsaWNJZDtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlLnN5c3RlbUlkID0gc3lzdGVtSWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0ge1xuICAgICAgICAgICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50VHlwZScsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBwdWJsaWNJZCxcbiAgICAgICAgICAgICAgICBzeXN0ZW1JZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRlZmF1bHRUcmVlQWRhcHRlci5hcHBlbmRDaGlsZChkb2N1bWVudCwgbm9kZSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHNldERvY3VtZW50TW9kZShkb2N1bWVudCwgbW9kZSkge1xuICAgICAgICBkb2N1bWVudC5tb2RlID0gbW9kZTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50TW9kZShkb2N1bWVudCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQubW9kZTtcbiAgICB9LFxuICAgIGRldGFjaE5vZGUobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICBub2RlLnBhcmVudE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpbnNlcnRUZXh0KHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1twYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoZGVmYXVsdFRyZWVBZGFwdGVyLmlzVGV4dE5vZGUocHJldk5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdFRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudE5vZGUsIGRlZmF1bHRUcmVlQWRhcHRlci5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG4gICAgfSxcbiAgICBpbnNlcnRUZXh0QmVmb3JlKHBhcmVudE5vZGUsIHRleHQsIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSkgLSAxXTtcbiAgICAgICAgaWYgKHByZXZOb2RlICYmIGRlZmF1bHRUcmVlQWRhcHRlci5pc1RleHROb2RlKHByZXZOb2RlKSkge1xuICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlZmF1bHRUcmVlQWRhcHRlci5pbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgZGVmYXVsdFRyZWVBZGFwdGVyLmNyZWF0ZVRleHROb2RlKHRleHQpLCByZWZlcmVuY2VOb2RlKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRvcHRBdHRyaWJ1dGVzKHJlY2lwaWVudCwgYXR0cnMpIHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50QXR0cnNNYXAgPSBuZXcgU2V0KHJlY2lwaWVudC5hdHRycy5tYXAoKGF0dHIpID0+IGF0dHIubmFtZSkpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXJlY2lwaWVudEF0dHJzTWFwLmhhcyhhdHRyc1tqXS5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHJlY2lwaWVudC5hdHRycy5wdXNoKGF0dHJzW2pdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy9UcmVlIHRyYXZlcnNpbmdcbiAgICBnZXRGaXJzdENoaWxkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlc1swXTtcbiAgICB9LFxuICAgIGdldENoaWxkTm9kZXMobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzO1xuICAgIH0sXG4gICAgZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLnBhcmVudE5vZGU7XG4gICAgfSxcbiAgICBnZXRBdHRyTGlzdChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmF0dHJzO1xuICAgIH0sXG4gICAgLy9Ob2RlIGRhdGFcbiAgICBnZXRUYWdOYW1lKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudGFnTmFtZTtcbiAgICB9LFxuICAgIGdldE5hbWVzcGFjZVVSSShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50Lm5hbWVzcGFjZVVSSTtcbiAgICB9LFxuICAgIGdldFRleHROb2RlQ29udGVudCh0ZXh0Tm9kZSkge1xuICAgICAgICByZXR1cm4gdGV4dE5vZGUudmFsdWU7XG4gICAgfSxcbiAgICBnZXRDb21tZW50Tm9kZUNvbnRlbnQoY29tbWVudE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGNvbW1lbnROb2RlLmRhdGE7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlTmFtZShkb2N0eXBlTm9kZSkge1xuICAgICAgICByZXR1cm4gZG9jdHlwZU5vZGUubmFtZTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZChkb2N0eXBlTm9kZSkge1xuICAgICAgICByZXR1cm4gZG9jdHlwZU5vZGUucHVibGljSWQ7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGRvY3R5cGVOb2RlLnN5c3RlbUlkO1xuICAgIH0sXG4gICAgLy9Ob2RlIHR5cGVzXG4gICAgaXNUZXh0Tm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI3RleHQnO1xuICAgIH0sXG4gICAgaXNDb21tZW50Tm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2NvbW1lbnQnO1xuICAgIH0sXG4gICAgaXNEb2N1bWVudFR5cGVOb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJztcbiAgICB9LFxuICAgIGlzRWxlbWVudE5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsICd0YWdOYW1lJyk7XG4gICAgfSxcbiAgICAvLyBTb3VyY2UgY29kZSBsb2NhdGlvblxuICAgIHNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24obm9kZSwgbG9jYXRpb24pIHtcbiAgICAgICAgbm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICB9LFxuICAgIGdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24obm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfSxcbiAgICB1cGRhdGVOb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIGVuZExvY2F0aW9uKSB7XG4gICAgICAgIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uID0geyAuLi5ub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiwgLi4uZW5kTG9jYXRpb24gfTtcbiAgICB9LFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/dist/tree-adapters/default.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js ***!
|
|
\********************************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ decodeCodePoint: () => (/* binding */ decodeCodePoint),\n/* harmony export */ fromCodePoint: () => (/* binding */ fromCodePoint),\n/* harmony export */ replaceCodePoint: () => (/* binding */ replaceCodePoint)\n/* harmony export */ });\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nconst fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9kZWNvZGUtY29kZXBvaW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9kZWNvZGUtY29kZXBvaW50LmpzP2UxODEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL2hlL2Jsb2IvMzZhZmUxNzkzOTIyMjZjZjFiNmNjZGIxNmViYmI3YTVhODQ0ZDkzYS9zcmMvaGUuanMjTDEwNi1MMTM0XG52YXIgX2E7XG5jb25zdCBkZWNvZGVNYXAgPSBuZXcgTWFwKFtcbiAgICBbMCwgNjU1MzNdLFxuICAgIC8vIEMxIFVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHJlcGxhY2VtZW50c1xuICAgIFsxMjgsIDgzNjRdLFxuICAgIFsxMzAsIDgyMThdLFxuICAgIFsxMzEsIDQwMl0sXG4gICAgWzEzMiwgODIyMl0sXG4gICAgWzEzMywgODIzMF0sXG4gICAgWzEzNCwgODIyNF0sXG4gICAgWzEzNSwgODIyNV0sXG4gICAgWzEzNiwgNzEwXSxcbiAgICBbMTM3LCA4MjQwXSxcbiAgICBbMTM4LCAzNTJdLFxuICAgIFsxMzksIDgyNDldLFxuICAgIFsxNDAsIDMzOF0sXG4gICAgWzE0MiwgMzgxXSxcbiAgICBbMTQ1LCA4MjE2XSxcbiAgICBbMTQ2LCA4MjE3XSxcbiAgICBbMTQ3LCA4MjIwXSxcbiAgICBbMTQ4LCA4MjIxXSxcbiAgICBbMTQ5LCA4MjI2XSxcbiAgICBbMTUwLCA4MjExXSxcbiAgICBbMTUxLCA4MjEyXSxcbiAgICBbMTUyLCA3MzJdLFxuICAgIFsxNTMsIDg0ODJdLFxuICAgIFsxNTQsIDM1M10sXG4gICAgWzE1NSwgODI1MF0sXG4gICAgWzE1NiwgMzM5XSxcbiAgICBbMTU4LCAzODJdLFxuICAgIFsxNTksIDM3Nl0sXG5dKTtcbi8qKlxuICogUG9seWZpbGwgZm9yIGBTdHJpbmcuZnJvbUNvZGVQb2ludGAuIEl0IGlzIHVzZWQgdG8gY3JlYXRlIGEgc3RyaW5nIGZyb20gYSBVbmljb2RlIGNvZGUgcG9pbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tQ29kZVBvaW50ID0gXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiwgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9lcy1idWlsdGluc1xuKF9hID0gU3RyaW5nLmZyb21Db2RlUG9pbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZ1bmN0aW9uIChjb2RlUG9pbnQpIHtcbiAgICBsZXQgb3V0cHV0ID0gXCJcIjtcbiAgICBpZiAoY29kZVBvaW50ID4gNjU1MzUpIHtcbiAgICAgICAgY29kZVBvaW50IC09IDY1NTM2O1xuICAgICAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGNvZGVQb2ludCA+Pj4gMTApICYgMTAyMykgfCA1NTI5Nik7XG4gICAgICAgIGNvZGVQb2ludCA9IDU2MzIwIHwgKGNvZGVQb2ludCAmIDEwMjMpO1xuICAgIH1cbiAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpO1xuICAgIHJldHVybiBvdXRwdXQ7XG59O1xuLyoqXG4gKiBSZXBsYWNlIHRoZSBnaXZlbiBjb2RlIHBvaW50IHdpdGggYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaWYgaXQgaXMgYVxuICogc3Vycm9nYXRlIG9yIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBPdGhlcndpc2UgcmV0dXJuIHRoZSBjb2RlXG4gKiBwb2ludCB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlQ29kZVBvaW50KGNvZGVQb2ludCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoKGNvZGVQb2ludCA+PSA1NTI5NiAmJiBjb2RlUG9pbnQgPD0gNTczNDMpIHx8XG4gICAgICAgIGNvZGVQb2ludCA+IDExMTQxMTEpIHtcbiAgICAgICAgcmV0dXJuIDY1NTMzO1xuICAgIH1cbiAgICByZXR1cm4gKF9hID0gZGVjb2RlTWFwLmdldChjb2RlUG9pbnQpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjb2RlUG9pbnQ7XG59XG4vKipcbiAqIFJlcGxhY2UgdGhlIGNvZGUgcG9pbnQgaWYgcmVsZXZhbnQsIHRoZW4gY29udmVydCBpdCB0byBhIHN0cmluZy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGZyb21Db2RlUG9pbnQocmVwbGFjZUNvZGVQb2ludChjb2RlUG9pbnQpKWAgaW5zdGVhZC5cbiAqIEBwYXJhbSBjb2RlUG9pbnQgVGhlIGNvZGUgcG9pbnQgdG8gZGVjb2RlLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgY29kZSBwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludChjb2RlUG9pbnQpIHtcbiAgICByZXR1cm4gZnJvbUNvZGVQb2ludChyZXBsYWNlQ29kZVBvaW50KGNvZGVQb2ludCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVjb2RlLWNvZGVwb2ludC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode.js":
|
|
/*!**********************************************************************!*\
|
|
!*** ./node_modules/parse5/node_modules/entities/dist/esm/decode.js ***!
|
|
\**********************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BinTrieFlags: () => (/* binding */ BinTrieFlags),\n/* harmony export */ DecodingMode: () => (/* binding */ DecodingMode),\n/* harmony export */ EntityDecoder: () => (/* binding */ EntityDecoder),\n/* harmony export */ decodeCodePoint: () => (/* reexport safe */ _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.decodeCodePoint),\n/* harmony export */ decodeHTML: () => (/* binding */ decodeHTML),\n/* harmony export */ decodeHTMLAttribute: () => (/* binding */ decodeHTMLAttribute),\n/* harmony export */ decodeHTMLStrict: () => (/* binding */ decodeHTMLStrict),\n/* harmony export */ decodeXML: () => (/* binding */ decodeXML),\n/* harmony export */ determineBranch: () => (/* binding */ determineBranch),\n/* harmony export */ fromCodePoint: () => (/* reexport safe */ _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint),\n/* harmony export */ htmlDecodeTree: () => (/* reexport safe */ _generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__.htmlDecodeTree),\n/* harmony export */ replaceCodePoint: () => (/* reexport safe */ _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint),\n/* harmony export */ xmlDecodeTree: () => (/* reexport safe */ _generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__.xmlDecodeTree)\n/* harmony export */ });\n/* harmony import */ var _generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generated/decode-data-html.js */ \"(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js\");\n/* harmony import */ var _generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generated/decode-data-xml.js */ \"(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js\");\n/* harmony import */ var _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./decode-codepoint.js */ \"(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js\");\n\n\n\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nclass EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += (0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint)(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(_generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__.htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(_generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__.xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\n\n\n\n//# sourceMappingURL=decode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9kZWNvZGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRTtBQUNGO0FBQ1M7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsOEJBQThCO0FBQy9CO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQ0FBb0M7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdEQUFnRDtBQUMxQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQ0FBb0M7QUFDckM7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0VBQWdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsdUJBQXVCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUJBQXFCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsbUVBQWE7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLDBFQUFjO0FBQzdELDhDQUE4Qyx3RUFBYTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ2lFO0FBQ0Y7QUFDMkI7QUFDMUYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvZGlzdC9lc20vZGVjb2RlLmpzP2Y1NjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbERlY29kZVRyZWUgfSBmcm9tIFwiLi9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC5qc1wiO1xuaW1wb3J0IHsgeG1sRGVjb2RlVHJlZSB9IGZyb20gXCIuL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwuanNcIjtcbmltcG9ydCB7IHJlcGxhY2VDb2RlUG9pbnQsIGZyb21Db2RlUG9pbnQgfSBmcm9tIFwiLi9kZWNvZGUtY29kZXBvaW50LmpzXCI7XG52YXIgQ2hhckNvZGVzO1xuKGZ1bmN0aW9uIChDaGFyQ29kZXMpIHtcbiAgICBDaGFyQ29kZXNbQ2hhckNvZGVzW1wiTlVNXCJdID0gMzVdID0gXCJOVU1cIjtcbiAgICBDaGFyQ29kZXNbQ2hhckNvZGVzW1wiU0VNSVwiXSA9IDU5XSA9IFwiU0VNSVwiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJFUVVBTFNcIl0gPSA2MV0gPSBcIkVRVUFMU1wiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJaRVJPXCJdID0gNDhdID0gXCJaRVJPXCI7XG4gICAgQ2hhckNvZGVzW0NoYXJDb2Rlc1tcIk5JTkVcIl0gPSA1N10gPSBcIk5JTkVcIjtcbiAgICBDaGFyQ29kZXNbQ2hhckNvZGVzW1wiTE9XRVJfQVwiXSA9IDk3XSA9IFwiTE9XRVJfQVwiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJMT1dFUl9GXCJdID0gMTAyXSA9IFwiTE9XRVJfRlwiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJMT1dFUl9YXCJdID0gMTIwXSA9IFwiTE9XRVJfWFwiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJMT1dFUl9aXCJdID0gMTIyXSA9IFwiTE9XRVJfWlwiO1xuICAgIENoYXJDb2Rlc1tDaGFyQ29kZXNbXCJVUFBFUl9BXCJdID0gNjVdID0gXCJVUFBFUl9BXCI7XG4gICAgQ2hhckNvZGVzW0NoYXJDb2Rlc1tcIlVQUEVSX0ZcIl0gPSA3MF0gPSBcIlVQUEVSX0ZcIjtcbiAgICBDaGFyQ29kZXNbQ2hhckNvZGVzW1wiVVBQRVJfWlwiXSA9IDkwXSA9IFwiVVBQRVJfWlwiO1xufSkoQ2hhckNvZGVzIHx8IChDaGFyQ29kZXMgPSB7fSkpO1xuLyoqIEJpdCB0aGF0IG5lZWRzIHRvIGJlIHNldCB0byBjb252ZXJ0IGFuIHVwcGVyIGNhc2UgQVNDSUkgY2hhcmFjdGVyIHRvIGxvd2VyIGNhc2UgKi9cbmNvbnN0IFRPX0xPV0VSX0JJVCA9IDMyO1xuZXhwb3J0IHZhciBCaW5UcmllRmxhZ3M7XG4oZnVuY3Rpb24gKEJpblRyaWVGbGFncykge1xuICAgIEJpblRyaWVGbGFnc1tCaW5UcmllRmxhZ3NbXCJWQUxVRV9MRU5HVEhcIl0gPSA0OTE1Ml0gPSBcIlZBTFVFX0xFTkdUSFwiO1xuICAgIEJpblRyaWVGbGFnc1tCaW5UcmllRmxhZ3NbXCJCUkFOQ0hfTEVOR1RIXCJdID0gMTYyNTZdID0gXCJCUkFOQ0hfTEVOR1RIXCI7XG4gICAgQmluVHJpZUZsYWdzW0JpblRyaWVGbGFnc1tcIkpVTVBfVEFCTEVcIl0gPSAxMjddID0gXCJKVU1QX1RBQkxFXCI7XG59KShCaW5UcmllRmxhZ3MgfHwgKEJpblRyaWVGbGFncyA9IHt9KSk7XG5mdW5jdGlvbiBpc051bWJlcihjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPj0gQ2hhckNvZGVzLlpFUk8gJiYgY29kZSA8PSBDaGFyQ29kZXMuTklORTtcbn1cbmZ1bmN0aW9uIGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIoY29kZSkge1xuICAgIHJldHVybiAoKGNvZGUgPj0gQ2hhckNvZGVzLlVQUEVSX0EgJiYgY29kZSA8PSBDaGFyQ29kZXMuVVBQRVJfRikgfHxcbiAgICAgICAgKGNvZGUgPj0gQ2hhckNvZGVzLkxPV0VSX0EgJiYgY29kZSA8PSBDaGFyQ29kZXMuTE9XRVJfRikpO1xufVxuZnVuY3Rpb24gaXNBc2NpaUFscGhhTnVtZXJpYyhjb2RlKSB7XG4gICAgcmV0dXJuICgoY29kZSA+PSBDaGFyQ29kZXMuVVBQRVJfQSAmJiBjb2RlIDw9IENoYXJDb2Rlcy5VUFBFUl9aKSB8fFxuICAgICAgICAoY29kZSA+PSBDaGFyQ29kZXMuTE9XRVJfQSAmJiBjb2RlIDw9IENoYXJDb2Rlcy5MT1dFUl9aKSB8fFxuICAgICAgICBpc051bWJlcihjb2RlKSk7XG59XG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIGEgdmFsaWQgZW5kIGNoYXJhY3RlciBmb3IgYW4gZW50aXR5IGluIGFuIGF0dHJpYnV0ZS5cbiAqXG4gKiBBdHRyaWJ1dGUgdmFsdWVzIHRoYXQgYXJlbid0IHRlcm1pbmF0ZWQgcHJvcGVybHkgYXJlbid0IHBhcnNlZCwgYW5kIHNob3VsZG4ndCBsZWFkIHRvIGEgcGFyc2VyIGVycm9yLlxuICogU2VlIHRoZSBleGFtcGxlIGluIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNuYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlLXN0YXRlXG4gKi9cbmZ1bmN0aW9uIGlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gQ2hhckNvZGVzLkVRVUFMUyB8fCBpc0FzY2lpQWxwaGFOdW1lcmljKGNvZGUpO1xufVxudmFyIEVudGl0eURlY29kZXJTdGF0ZTtcbihmdW5jdGlvbiAoRW50aXR5RGVjb2RlclN0YXRlKSB7XG4gICAgRW50aXR5RGVjb2RlclN0YXRlW0VudGl0eURlY29kZXJTdGF0ZVtcIkVudGl0eVN0YXJ0XCJdID0gMF0gPSBcIkVudGl0eVN0YXJ0XCI7XG4gICAgRW50aXR5RGVjb2RlclN0YXRlW0VudGl0eURlY29kZXJTdGF0ZVtcIk51bWVyaWNTdGFydFwiXSA9IDFdID0gXCJOdW1lcmljU3RhcnRcIjtcbiAgICBFbnRpdHlEZWNvZGVyU3RhdGVbRW50aXR5RGVjb2RlclN0YXRlW1wiTnVtZXJpY0RlY2ltYWxcIl0gPSAyXSA9IFwiTnVtZXJpY0RlY2ltYWxcIjtcbiAgICBFbnRpdHlEZWNvZGVyU3RhdGVbRW50aXR5RGVjb2RlclN0YXRlW1wiTnVtZXJpY0hleFwiXSA9IDNdID0gXCJOdW1lcmljSGV4XCI7XG4gICAgRW50aXR5RGVjb2RlclN0YXRlW0VudGl0eURlY29kZXJTdGF0ZVtcIk5hbWVkRW50aXR5XCJdID0gNF0gPSBcIk5hbWVkRW50aXR5XCI7XG59KShFbnRpdHlEZWNvZGVyU3RhdGUgfHwgKEVudGl0eURlY29kZXJTdGF0ZSA9IHt9KSk7XG5leHBvcnQgdmFyIERlY29kaW5nTW9kZTtcbihmdW5jdGlvbiAoRGVjb2RpbmdNb2RlKSB7XG4gICAgLyoqIEVudGl0aWVzIGluIHRleHQgbm9kZXMgdGhhdCBjYW4gZW5kIHdpdGggYW55IGNoYXJhY3Rlci4gKi9cbiAgICBEZWNvZGluZ01vZGVbRGVjb2RpbmdNb2RlW1wiTGVnYWN5XCJdID0gMF0gPSBcIkxlZ2FjeVwiO1xuICAgIC8qKiBPbmx5IGFsbG93IGVudGl0aWVzIHRlcm1pbmF0ZWQgd2l0aCBhIHNlbWljb2xvbi4gKi9cbiAgICBEZWNvZGluZ01vZGVbRGVjb2RpbmdNb2RlW1wiU3RyaWN0XCJdID0gMV0gPSBcIlN0cmljdFwiO1xuICAgIC8qKiBFbnRpdGllcyBpbiBhdHRyaWJ1dGVzIGhhdmUgbGltaXRhdGlvbnMgb24gZW5kaW5nIGNoYXJhY3RlcnMuICovXG4gICAgRGVjb2RpbmdNb2RlW0RlY29kaW5nTW9kZVtcIkF0dHJpYnV0ZVwiXSA9IDJdID0gXCJBdHRyaWJ1dGVcIjtcbn0pKERlY29kaW5nTW9kZSB8fCAoRGVjb2RpbmdNb2RlID0ge30pKTtcbi8qKlxuICogVG9rZW4gZGVjb2RlciB3aXRoIHN1cHBvcnQgb2Ygd3JpdGluZyBwYXJ0aWFsIGVudGl0aWVzLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5RGVjb2RlciB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqIFRoZSB0cmVlIHVzZWQgdG8gZGVjb2RlIGVudGl0aWVzLiAqL1xuICAgIGRlY29kZVRyZWUsIFxuICAgIC8qKlxuICAgICAqIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgY29kZXBvaW50IGlzIGRlY29kZWQuXG4gICAgICpcbiAgICAgKiBGb3IgbXVsdGktYnl0ZSBuYW1lZCBlbnRpdGllcywgdGhpcyB3aWxsIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyxcbiAgICAgKiB3aXRoIHRoZSBzZWNvbmQgY29kZXBvaW50LCBhbmQgdGhlIHNhbWUgYGNvbnN1bWVkYCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlcG9pbnQgVGhlIGRlY29kZWQgY29kZXBvaW50LlxuICAgICAqIEBwYXJhbSBjb25zdW1lZCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGVyLlxuICAgICAqL1xuICAgIGVtaXRDb2RlUG9pbnQsIFxuICAgIC8qKiBBbiBvYmplY3QgdGhhdCBpcyB1c2VkIHRvIHByb2R1Y2UgZXJyb3JzLiAqL1xuICAgIGVycm9ycykge1xuICAgICAgICB0aGlzLmRlY29kZVRyZWUgPSBkZWNvZGVUcmVlO1xuICAgICAgICB0aGlzLmVtaXRDb2RlUG9pbnQgPSBlbWl0Q29kZVBvaW50O1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgLyoqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkZWNvZGVyLiAqL1xuICAgICAgICB0aGlzLnN0YXRlID0gRW50aXR5RGVjb2RlclN0YXRlLkVudGl0eVN0YXJ0O1xuICAgICAgICAvKiogQ2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQgd2hpbGUgcGFyc2luZyBhbiBlbnRpdHkuICovXG4gICAgICAgIHRoaXMuY29uc3VtZWQgPSAxO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHJlc3VsdCBvZiB0aGUgZW50aXR5LlxuICAgICAgICAgKlxuICAgICAgICAgKiBFaXRoZXIgdGhlIHJlc3VsdCBpbmRleCBvZiBhIG51bWVyaWMgZW50aXR5LCBvciB0aGUgY29kZXBvaW50IG9mIGFcbiAgICAgICAgICogbnVtZXJpYyBlbnRpdHkuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlc3VsdCA9IDA7XG4gICAgICAgIC8qKiBUaGUgY3VycmVudCBpbmRleCBpbiB0aGUgZGVjb2RlIHRyZWUuICovXG4gICAgICAgIHRoaXMudHJlZUluZGV4ID0gMDtcbiAgICAgICAgLyoqIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQgaW4gZXhjZXNzLiAqL1xuICAgICAgICB0aGlzLmV4Y2VzcyA9IDE7XG4gICAgICAgIC8qKiBUaGUgbW9kZSBpbiB3aGljaCB0aGUgZGVjb2RlciBpcyBvcGVyYXRpbmcuICovXG4gICAgICAgIHRoaXMuZGVjb2RlTW9kZSA9IERlY29kaW5nTW9kZS5TdHJpY3Q7XG4gICAgfVxuICAgIC8qKiBSZXNldHMgdGhlIGluc3RhbmNlIHRvIG1ha2UgaXQgcmV1c2FibGUuICovXG4gICAgc3RhcnRFbnRpdHkoZGVjb2RlTW9kZSkge1xuICAgICAgICB0aGlzLmRlY29kZU1vZGUgPSBkZWNvZGVNb2RlO1xuICAgICAgICB0aGlzLnN0YXRlID0gRW50aXR5RGVjb2RlclN0YXRlLkVudGl0eVN0YXJ0O1xuICAgICAgICB0aGlzLnJlc3VsdCA9IDA7XG4gICAgICAgIHRoaXMudHJlZUluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5leGNlc3MgPSAxO1xuICAgICAgICB0aGlzLmNvbnN1bWVkID0gMTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV3JpdGUgYW4gZW50aXR5IHRvIHRoZSBkZWNvZGVyLiBUaGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBwYXJ0aWFsIGVudGl0aWVzLlxuICAgICAqIElmIHRoZSBlbnRpdHkgaXMgaW5jb21wbGV0ZSwgdGhlIGRlY29kZXIgd2lsbCByZXR1cm4gLTEuXG4gICAgICpcbiAgICAgKiBNaXJyb3JzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0RGVjb2RlcmAsIGJ1dCB3aXRoIHRoZSBhYmlsaXR5IHRvIHN0b3AgZGVjb2RpbmcgaWYgdGhlXG4gICAgICogZW50aXR5IGlzIGluY29tcGxldGUsIGFuZCByZXN1bWUgd2hlbiB0aGUgbmV4dCBzdHJpbmcgaXMgd3JpdHRlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbnB1dCBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVudGl0eSAob3IgYSBjb250aW51YXRpb24gb2YgdGhlIGVudGl0eSkuXG4gICAgICogQHBhcmFtIG9mZnNldCBUaGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSBlbnRpdHkgYmVnaW5zLiBTaG91bGQgYmUgMCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgY2FsbC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3ZXJlIGNvbnN1bWVkLCBvciAtMSBpZiB0aGUgZW50aXR5IGlzIGluY29tcGxldGUuXG4gICAgICovXG4gICAgd3JpdGUoaW5wdXQsIG9mZnNldCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLkVudGl0eVN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQob2Zmc2V0KSA9PT0gQ2hhckNvZGVzLk5VTSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gRW50aXR5RGVjb2RlclN0YXRlLk51bWVyaWNTdGFydDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZU51bWVyaWNTdGFydChpbnB1dCwgb2Zmc2V0ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBFbnRpdHlEZWNvZGVyU3RhdGUuTmFtZWRFbnRpdHk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVOYW1lZEVudGl0eShpbnB1dCwgb2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLk51bWVyaWNTdGFydDoge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlTnVtZXJpY1N0YXJ0KGlucHV0LCBvZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnRpdHlEZWNvZGVyU3RhdGUuTnVtZXJpY0RlY2ltYWw6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZU51bWVyaWNEZWNpbWFsKGlucHV0LCBvZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnRpdHlEZWNvZGVyU3RhdGUuTnVtZXJpY0hleDoge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlTnVtZXJpY0hleChpbnB1dCwgb2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLk5hbWVkRW50aXR5OiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVOYW1lZEVudGl0eShpbnB1dCwgb2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTd2l0Y2hlcyBiZXR3ZWVuIHRoZSBudW1lcmljIGRlY2ltYWwgYW5kIGhleGFkZWNpbWFsIHN0YXRlcy5cbiAgICAgKlxuICAgICAqIEVxdWl2YWxlbnQgdG8gdGhlIGBOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVgIGluIHRoZSBIVE1MIHNwZWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5wdXQgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBlbnRpdHkgKG9yIGEgY29udGludWF0aW9uIG9mIHRoZSBlbnRpdHkpLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIGN1cnJlbnQgb2Zmc2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQsIG9yIC0xIGlmIHRoZSBlbnRpdHkgaXMgaW5jb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGF0ZU51bWVyaWNTdGFydChpbnB1dCwgb2Zmc2V0KSB7XG4gICAgICAgIGlmIChvZmZzZXQgPj0gaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChpbnB1dC5jaGFyQ29kZUF0KG9mZnNldCkgfCBUT19MT1dFUl9CSVQpID09PSBDaGFyQ29kZXMuTE9XRVJfWCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IEVudGl0eURlY29kZXJTdGF0ZS5OdW1lcmljSGV4O1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZCArPSAxO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVOdW1lcmljSGV4KGlucHV0LCBvZmZzZXQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gRW50aXR5RGVjb2RlclN0YXRlLk51bWVyaWNEZWNpbWFsO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZU51bWVyaWNEZWNpbWFsKGlucHV0LCBvZmZzZXQpO1xuICAgIH1cbiAgICBhZGRUb051bWVyaWNSZXN1bHQoaW5wdXQsIHN0YXJ0LCBlbmQsIGJhc2UpIHtcbiAgICAgICAgaWYgKHN0YXJ0ICE9PSBlbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0Q291bnQgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0ID1cbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdCAqIE1hdGgucG93KGJhc2UsIGRpZ2l0Q291bnQpICtcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyLnBhcnNlSW50KGlucHV0LnN1YnN0cihzdGFydCwgZGlnaXRDb3VudCksIGJhc2UpO1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZCArPSBkaWdpdENvdW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIGhleGFkZWNpbWFsIG51bWVyaWMgZW50aXR5LlxuICAgICAqXG4gICAgICogRXF1aXZhbGVudCB0byB0aGUgYEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVgIGluIHRoZSBIVE1MIHNwZWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5wdXQgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBlbnRpdHkgKG9yIGEgY29udGludWF0aW9uIG9mIHRoZSBlbnRpdHkpLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIGN1cnJlbnQgb2Zmc2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQsIG9yIC0xIGlmIHRoZSBlbnRpdHkgaXMgaW5jb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGF0ZU51bWVyaWNIZXgoaW5wdXQsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gb2Zmc2V0O1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyID0gaW5wdXQuY2hhckNvZGVBdChvZmZzZXQpO1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGNoYXIpIHx8IGlzSGV4YWRlY2ltYWxDaGFyYWN0ZXIoY2hhcikpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9OdW1lcmljUmVzdWx0KGlucHV0LCBzdGFydEluZGV4LCBvZmZzZXQsIDE2KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0TnVtZXJpY0VudGl0eShjaGFyLCAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFRvTnVtZXJpY1Jlc3VsdChpbnB1dCwgc3RhcnRJbmRleCwgb2Zmc2V0LCAxNik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgZGVjaW1hbCBudW1lcmljIGVudGl0eS5cbiAgICAgKlxuICAgICAqIEVxdWl2YWxlbnQgdG8gdGhlIGBEZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVgIGluIHRoZSBIVE1MIHNwZWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5wdXQgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBlbnRpdHkgKG9yIGEgY29udGludWF0aW9uIG9mIHRoZSBlbnRpdHkpLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIGN1cnJlbnQgb2Zmc2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQsIG9yIC0xIGlmIHRoZSBlbnRpdHkgaXMgaW5jb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGF0ZU51bWVyaWNEZWNpbWFsKGlucHV0LCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IG9mZnNldDtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IGlucHV0LmNoYXJDb2RlQXQob2Zmc2V0KTtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihjaGFyKSkge1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb051bWVyaWNSZXN1bHQoaW5wdXQsIHN0YXJ0SW5kZXgsIG9mZnNldCwgMTApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXROdW1lcmljRW50aXR5KGNoYXIsIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkVG9OdW1lcmljUmVzdWx0KGlucHV0LCBzdGFydEluZGV4LCBvZmZzZXQsIDEwKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZSBhbmQgZW1pdCBhIG51bWVyaWMgZW50aXR5LlxuICAgICAqXG4gICAgICogSW1wbGVtZW50cyB0aGUgbG9naWMgZnJvbSB0aGUgYEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhcnRcbiAgICAgKiBzdGF0ZWAgYW5kIGBOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2UgZW5kIHN0YXRlYCBpbiB0aGUgSFRNTCBzcGVjLlxuICAgICAqXG4gICAgICogQHBhcmFtIGxhc3RDcCBUaGUgbGFzdCBjb2RlIHBvaW50IG9mIHRoZSBlbnRpdHkuIFVzZWQgdG8gc2VlIGlmIHRoZVxuICAgICAqICAgICAgICAgICAgICAgZW50aXR5IHdhcyB0ZXJtaW5hdGVkIHdpdGggYSBzZW1pY29sb24uXG4gICAgICogQHBhcmFtIGV4cGVjdGVkTGVuZ3RoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVkLiBVc2VkIHRvIHZhbGlkYXRlIHRoYXQgYXQgbGVhc3Qgb25lIGRpZ2l0XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgIHdhcyBjb25zdW1lZC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB3ZXJlIGNvbnN1bWVkLlxuICAgICAqL1xuICAgIGVtaXROdW1lcmljRW50aXR5KGxhc3RDcCwgZXhwZWN0ZWRMZW5ndGgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAvLyBFbnN1cmUgd2UgY29uc3VtZWQgYXQgbGVhc3Qgb25lIGRpZ2l0LlxuICAgICAgICBpZiAodGhpcy5jb25zdW1lZCA8PSBleHBlY3RlZExlbmd0aCkge1xuICAgICAgICAgICAgKF9hID0gdGhpcy5lcnJvcnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UodGhpcy5jb25zdW1lZCk7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBsZWdpdCBlbmQgb2YgdGhlIGVudGl0eVxuICAgICAgICBpZiAobGFzdENwID09PSBDaGFyQ29kZXMuU0VNSSkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZGVjb2RlTW9kZSA9PT0gRGVjb2RpbmdNb2RlLlN0cmljdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0Q29kZVBvaW50KHJlcGxhY2VDb2RlUG9pbnQodGhpcy5yZXN1bHQpLCB0aGlzLmNvbnN1bWVkKTtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAobGFzdENwICE9PSBDaGFyQ29kZXMuU0VNSSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lcnJvcnMudmFsaWRhdGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKHRoaXMucmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdW1lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgbmFtZWQgZW50aXR5LlxuICAgICAqXG4gICAgICogRXF1aXZhbGVudCB0byB0aGUgYE5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVgIGluIHRoZSBIVE1MIHNwZWMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5wdXQgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBlbnRpdHkgKG9yIGEgY29udGludWF0aW9uIG9mIHRoZSBlbnRpdHkpLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIGN1cnJlbnQgb2Zmc2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHdlcmUgY29uc3VtZWQsIG9yIC0xIGlmIHRoZSBlbnRpdHkgaXMgaW5jb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGF0ZU5hbWVkRW50aXR5KGlucHV0LCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgeyBkZWNvZGVUcmVlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgY3VycmVudCA9IGRlY29kZVRyZWVbdGhpcy50cmVlSW5kZXhdO1xuICAgICAgICAvLyBUaGUgbWFzayBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSB2YWx1ZSwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJ5dGUuXG4gICAgICAgIGxldCB2YWx1ZUxlbmd0aCA9IChjdXJyZW50ICYgQmluVHJpZUZsYWdzLlZBTFVFX0xFTkdUSCkgPj4gMTQ7XG4gICAgICAgIGZvciAoOyBvZmZzZXQgPCBpbnB1dC5sZW5ndGg7IG9mZnNldCsrLCB0aGlzLmV4Y2VzcysrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyID0gaW5wdXQuY2hhckNvZGVBdChvZmZzZXQpO1xuICAgICAgICAgICAgdGhpcy50cmVlSW5kZXggPSBkZXRlcm1pbmVCcmFuY2goZGVjb2RlVHJlZSwgY3VycmVudCwgdGhpcy50cmVlSW5kZXggKyBNYXRoLm1heCgxLCB2YWx1ZUxlbmd0aCksIGNoYXIpO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcGFyc2luZyBhbiBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGVjb2RlTW9kZSA9PT0gRGVjb2RpbmdNb2RlLkF0dHJpYnV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgY29uc3VtZWQgYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCB0aGVyZSBzaG91bGQgYmUgbm8gaW52YWxpZCBjaGFyYWN0ZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kKGNoYXIpKSlcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbWl0Tm90VGVybWluYXRlZE5hbWVkRW50aXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50ID0gZGVjb2RlVHJlZVt0aGlzLnRyZWVJbmRleF07XG4gICAgICAgICAgICB2YWx1ZUxlbmd0aCA9IChjdXJyZW50ICYgQmluVHJpZUZsYWdzLlZBTFVFX0xFTkdUSCkgPj4gMTQ7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYnJhbmNoIGlzIGEgdmFsdWUsIHN0b3JlIGl0IGFuZCBjb250aW51ZVxuICAgICAgICAgICAgaWYgKHZhbHVlTGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVudGl0eSBpcyB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uLCB3ZSBhcmUgZG9uZS5cbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gQ2hhckNvZGVzLlNFTUkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdE5hbWVkRW50aXR5RGF0YSh0aGlzLnRyZWVJbmRleCwgdmFsdWVMZW5ndGgsIHRoaXMuY29uc3VtZWQgKyB0aGlzLmV4Y2Vzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIG5vbi10ZXJtaW5hdGVkIChsZWdhY3kpIGVudGl0eSB3aGlsZSBwYXJzaW5nIHN0cmljdGx5LCB0aGVuIGlnbm9yZSBpdC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWNvZGVNb2RlICE9PSBEZWNvZGluZ01vZGUuU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy50cmVlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZWQgKz0gdGhpcy5leGNlc3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjZXNzID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWl0IGEgbmFtZWQgZW50aXR5IHRoYXQgd2FzIG5vdCB0ZXJtaW5hdGVkIHdpdGggYSBzZW1pY29sb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQuXG4gICAgICovXG4gICAgZW1pdE5vdFRlcm1pbmF0ZWROYW1lZEVudGl0eSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB7IHJlc3VsdCwgZGVjb2RlVHJlZSB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgdmFsdWVMZW5ndGggPSAoZGVjb2RlVHJlZVtyZXN1bHRdICYgQmluVHJpZUZsYWdzLlZBTFVFX0xFTkdUSCkgPj4gMTQ7XG4gICAgICAgIHRoaXMuZW1pdE5hbWVkRW50aXR5RGF0YShyZXN1bHQsIHZhbHVlTGVuZ3RoLCB0aGlzLmNvbnN1bWVkKTtcbiAgICAgICAgKF9hID0gdGhpcy5lcnJvcnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3VtZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtaXQgYSBuYW1lZCBlbnRpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVzdWx0IFRoZSBpbmRleCBvZiB0aGUgZW50aXR5IGluIHRoZSBkZWNvZGUgdHJlZS5cbiAgICAgKiBAcGFyYW0gdmFsdWVMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZW50aXR5LlxuICAgICAqIEBwYXJhbSBjb25zdW1lZCBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQuXG4gICAgICovXG4gICAgZW1pdE5hbWVkRW50aXR5RGF0YShyZXN1bHQsIHZhbHVlTGVuZ3RoLCBjb25zdW1lZCkge1xuICAgICAgICBjb25zdCB7IGRlY29kZVRyZWUgfSA9IHRoaXM7XG4gICAgICAgIHRoaXMuZW1pdENvZGVQb2ludCh2YWx1ZUxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBkZWNvZGVUcmVlW3Jlc3VsdF0gJiB+QmluVHJpZUZsYWdzLlZBTFVFX0xFTkdUSFxuICAgICAgICAgICAgOiBkZWNvZGVUcmVlW3Jlc3VsdCArIDFdLCBjb25zdW1lZCk7XG4gICAgICAgIGlmICh2YWx1ZUxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgLy8gRm9yIG11bHRpLWJ5dGUgdmFsdWVzLCB3ZSBuZWVkIHRvIGVtaXQgdGhlIHNlY29uZCBieXRlLlxuICAgICAgICAgICAgdGhpcy5lbWl0Q29kZVBvaW50KGRlY29kZVRyZWVbcmVzdWx0ICsgMl0sIGNvbnN1bWVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29uc3VtZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNpZ25hbCB0byB0aGUgcGFyc2VyIHRoYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgd2FzIHJlYWNoZWQuXG4gICAgICpcbiAgICAgKiBSZW1haW5pbmcgZGF0YSB3aWxsIGJlIGVtaXR0ZWQgYW5kIHJlbGV2YW50IGVycm9ycyB3aWxsIGJlIHByb2R1Y2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkLlxuICAgICAqL1xuICAgIGVuZCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLk5hbWVkRW50aXR5OiB7XG4gICAgICAgICAgICAgICAgLy8gRW1pdCBhIG5hbWVkIGVudGl0eSBpZiB3ZSBoYXZlIG9uZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQgIT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGVjb2RlTW9kZSAhPT0gRGVjb2RpbmdNb2RlLkF0dHJpYnV0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQgPT09IHRoaXMudHJlZUluZGV4KVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZW1pdE5vdFRlcm1pbmF0ZWROYW1lZEVudGl0eSgpXG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZW1pdCBhIG51bWVyaWMgZW50aXR5IGlmIHdlIGhhdmUgb25lLlxuICAgICAgICAgICAgY2FzZSBFbnRpdHlEZWNvZGVyU3RhdGUuTnVtZXJpY0RlY2ltYWw6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0TnVtZXJpY0VudGl0eSgwLCAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLk51bWVyaWNIZXg6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0TnVtZXJpY0VudGl0eSgwLCAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW50aXR5RGVjb2RlclN0YXRlLk51bWVyaWNTdGFydDoge1xuICAgICAgICAgICAgICAgIChfYSA9IHRoaXMuZXJyb3JzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKHRoaXMuY29uc3VtZWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnRpdHlEZWNvZGVyU3RhdGUuRW50aXR5U3RhcnQ6IHtcbiAgICAgICAgICAgICAgICAvLyBSZXR1cm4gMCBpZiB3ZSBoYXZlIG5vIGVudGl0eS5cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZGVjb2RlcyBlbnRpdGllcyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gZGVjb2RlVHJlZSBUaGUgZGVjb2RlIHRyZWUuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgZGVjb2RlcyBlbnRpdGllcyBpbiBhIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVjb2RlcihkZWNvZGVUcmVlKSB7XG4gICAgbGV0IHJldHVyblZhbHVlID0gXCJcIjtcbiAgICBjb25zdCBkZWNvZGVyID0gbmV3IEVudGl0eURlY29kZXIoZGVjb2RlVHJlZSwgKGRhdGEpID0+IChyZXR1cm5WYWx1ZSArPSBmcm9tQ29kZVBvaW50KGRhdGEpKSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRlY29kZVdpdGhUcmllKGlucHV0LCBkZWNvZGVNb2RlKSB7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgd2hpbGUgKChvZmZzZXQgPSBpbnB1dC5pbmRleE9mKFwiJlwiLCBvZmZzZXQpKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZSArPSBpbnB1dC5zbGljZShsYXN0SW5kZXgsIG9mZnNldCk7XG4gICAgICAgICAgICBkZWNvZGVyLnN0YXJ0RW50aXR5KGRlY29kZU1vZGUpO1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gZGVjb2Rlci53cml0ZShpbnB1dCwgXG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBcIiZcIlxuICAgICAgICAgICAgb2Zmc2V0ICsgMSk7XG4gICAgICAgICAgICBpZiAobGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG9mZnNldCArIGRlY29kZXIuZW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0SW5kZXggPSBvZmZzZXQgKyBsZW5ndGg7XG4gICAgICAgICAgICAvLyBJZiBgbGVuZ3RoYCBpcyAwLCBza2lwIHRoZSBjdXJyZW50IGAmYCBhbmQgY29udGludWUuXG4gICAgICAgICAgICBvZmZzZXQgPSBsZW5ndGggPT09IDAgPyBsYXN0SW5kZXggKyAxIDogbGFzdEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJldHVyblZhbHVlICsgaW5wdXQuc2xpY2UobGFzdEluZGV4KTtcbiAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGZpbmFsIHN0cmluZy5cbiAgICAgICAgcmV0dXJuVmFsdWUgPSBcIlwiO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG59XG4vKipcbiAqIERldGVybWluZXMgdGhlIGJyYW5jaCBvZiB0aGUgY3VycmVudCBub2RlIHRoYXQgaXMgdGFrZW4gZ2l2ZW4gdGhlIGN1cnJlbnRcbiAqIGNoYXJhY3Rlci4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRyYXZlcnNlIHRoZSB0cmllLlxuICpcbiAqIEBwYXJhbSBkZWNvZGVUcmVlIFRoZSB0cmllLlxuICogQHBhcmFtIGN1cnJlbnQgVGhlIGN1cnJlbnQgbm9kZS5cbiAqIEBwYXJhbSBub2RlSWR4IFRoZSBpbmRleCByaWdodCBhZnRlciB0aGUgY3VycmVudCBub2RlIGFuZCBpdHMgdmFsdWUuXG4gKiBAcGFyYW0gY2hhciBUaGUgY3VycmVudCBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIG5leHQgbm9kZSwgb3IgLTEgaWYgbm8gYnJhbmNoIGlzIHRha2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5lQnJhbmNoKGRlY29kZVRyZWUsIGN1cnJlbnQsIG5vZGVJbmRleCwgY2hhcikge1xuICAgIGNvbnN0IGJyYW5jaENvdW50ID0gKGN1cnJlbnQgJiBCaW5UcmllRmxhZ3MuQlJBTkNIX0xFTkdUSCkgPj4gNztcbiAgICBjb25zdCBqdW1wT2Zmc2V0ID0gY3VycmVudCAmIEJpblRyaWVGbGFncy5KVU1QX1RBQkxFO1xuICAgIC8vIENhc2UgMTogU2luZ2xlIGJyYW5jaCBlbmNvZGVkIGluIGp1bXAgb2Zmc2V0XG4gICAgaWYgKGJyYW5jaENvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBqdW1wT2Zmc2V0ICE9PSAwICYmIGNoYXIgPT09IGp1bXBPZmZzZXQgPyBub2RlSW5kZXggOiAtMTtcbiAgICB9XG4gICAgLy8gQ2FzZSAyOiBNdWx0aXBsZSBicmFuY2hlcyBlbmNvZGVkIGluIGp1bXAgdGFibGVcbiAgICBpZiAoanVtcE9mZnNldCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYXIgLSBqdW1wT2Zmc2V0O1xuICAgICAgICByZXR1cm4gdmFsdWUgPCAwIHx8IHZhbHVlID49IGJyYW5jaENvdW50XG4gICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICA6IGRlY29kZVRyZWVbbm9kZUluZGV4ICsgdmFsdWVdIC0gMTtcbiAgICB9XG4gICAgLy8gQ2FzZSAzOiBNdWx0aXBsZSBicmFuY2hlcyBlbmNvZGVkIGluIGRpY3Rpb25hcnlcbiAgICAvLyBCaW5hcnkgc2VhcmNoIGZvciB0aGUgY2hhcmFjdGVyLlxuICAgIGxldCBsbyA9IG5vZGVJbmRleDtcbiAgICBsZXQgaGkgPSBsbyArIGJyYW5jaENvdW50IC0gMTtcbiAgICB3aGlsZSAobG8gPD0gaGkpIHtcbiAgICAgICAgY29uc3QgbWlkID0gKGxvICsgaGkpID4+PiAxO1xuICAgICAgICBjb25zdCBtaWRWYWx1ZSA9IGRlY29kZVRyZWVbbWlkXTtcbiAgICAgICAgaWYgKG1pZFZhbHVlIDwgY2hhcikge1xuICAgICAgICAgICAgbG8gPSBtaWQgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pZFZhbHVlID4gY2hhcikge1xuICAgICAgICAgICAgaGkgPSBtaWQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVRyZWVbbWlkICsgYnJhbmNoQ291bnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmNvbnN0IGh0bWxEZWNvZGVyID0gLyogI19fUFVSRV9fICovIGdldERlY29kZXIoaHRtbERlY29kZVRyZWUpO1xuY29uc3QgeG1sRGVjb2RlciA9IC8qICNfX1BVUkVfXyAqLyBnZXREZWNvZGVyKHhtbERlY29kZVRyZWUpO1xuLyoqXG4gKiBEZWNvZGVzIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBodG1sU3RyaW5nIFRoZSBzdHJpbmcgdG8gZGVjb2RlLlxuICogQHBhcmFtIG1vZGUgVGhlIGRlY29kaW5nIG1vZGUuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVIVE1MKGh0bWxTdHJpbmcsIG1vZGUgPSBEZWNvZGluZ01vZGUuTGVnYWN5KSB7XG4gICAgcmV0dXJuIGh0bWxEZWNvZGVyKGh0bWxTdHJpbmcsIG1vZGUpO1xufVxuLyoqXG4gKiBEZWNvZGVzIGFuIEhUTUwgc3RyaW5nIGluIGFuIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0gaHRtbEF0dHJpYnV0ZSBUaGUgc3RyaW5nIHRvIGRlY29kZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUhUTUxBdHRyaWJ1dGUoaHRtbEF0dHJpYnV0ZSkge1xuICAgIHJldHVybiBodG1sRGVjb2RlcihodG1sQXR0cmlidXRlLCBEZWNvZGluZ01vZGUuQXR0cmlidXRlKTtcbn1cbi8qKlxuICogRGVjb2RlcyBhbiBIVE1MIHN0cmluZywgcmVxdWlyaW5nIGFsbCBlbnRpdGllcyB0byBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uLlxuICpcbiAqIEBwYXJhbSBodG1sU3RyaW5nIFRoZSBzdHJpbmcgdG8gZGVjb2RlLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlSFRNTFN0cmljdChodG1sU3RyaW5nKSB7XG4gICAgcmV0dXJuIGh0bWxEZWNvZGVyKGh0bWxTdHJpbmcsIERlY29kaW5nTW9kZS5TdHJpY3QpO1xufVxuLyoqXG4gKiBEZWNvZGVzIGFuIFhNTCBzdHJpbmcsIHJlcXVpcmluZyBhbGwgZW50aXRpZXMgdG8gYmUgdGVybWluYXRlZCBieSBhIHNlbWljb2xvbi5cbiAqXG4gKiBAcGFyYW0geG1sU3RyaW5nIFRoZSBzdHJpbmcgdG8gZGVjb2RlLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlWE1MKHhtbFN0cmluZykge1xuICAgIHJldHVybiB4bWxEZWNvZGVyKHhtbFN0cmluZywgRGVjb2RpbmdNb2RlLlN0cmljdCk7XG59XG4vLyBSZS1leHBvcnQgZm9yIHVzZSBieSBlZy4gaHRtbHBhcnNlcjJcbmV4cG9ydCB7IGh0bWxEZWNvZGVUcmVlIH0gZnJvbSBcIi4vZ2VuZXJhdGVkL2RlY29kZS1kYXRhLWh0bWwuanNcIjtcbmV4cG9ydCB7IHhtbERlY29kZVRyZWUgfSBmcm9tIFwiLi9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEteG1sLmpzXCI7XG5leHBvcnQgeyBkZWNvZGVDb2RlUG9pbnQsIHJlcGxhY2VDb2RlUG9pbnQsIGZyb21Db2RlUG9pbnQsIH0gZnJvbSBcIi4vZGVjb2RlLWNvZGVwb2ludC5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVjb2RlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/decode.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/escape.js":
|
|
/*!**********************************************************************!*\
|
|
!*** ./node_modules/parse5/node_modules/entities/dist/esm/escape.js ***!
|
|
\**********************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ encodeXML: () => (/* binding */ encodeXML),\n/* harmony export */ escape: () => (/* binding */ escape),\n/* harmony export */ escapeAttribute: () => (/* binding */ escapeAttribute),\n/* harmony export */ escapeText: () => (/* binding */ escapeText),\n/* harmony export */ escapeUTF8: () => (/* binding */ escapeUTF8),\n/* harmony export */ getCodePoint: () => (/* binding */ getCodePoint),\n/* harmony export */ xmlReplacer: () => (/* binding */ xmlReplacer)\n/* harmony export */ });\nconst xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nconst getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n ? (c.charCodeAt(index) - 55296) * 1024 +\n c.charCodeAt(index + 1) -\n 56320 +\n 65536\n : c.charCodeAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nfunction encodeXML(input) {\n let returnValue = \"\";\n let lastIndex = 0;\n let match;\n while ((match = xmlReplacer.exec(input)) !== null) {\n const { index } = match;\n const char = input.charCodeAt(index);\n const next = xmlCodeMap.get(char);\n if (next === undefined) {\n returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n }\n else {\n returnValue += input.substring(lastIndex, index) + next;\n lastIndex = index + 1;\n }\n }\n return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nconst escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIndex = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIndex !== match.index) {\n result += data.substring(lastIndex, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIndex = match.index + 1;\n }\n return result + data.substring(lastIndex);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nconst escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nconst escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nconst escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9lc2NhcGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPO0FBQ1A7QUFDQSxnQkFBZ0I7QUFDaEIsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsY0FBYztBQUNkO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0NBQWtDLEtBQUsseUNBQXlDO0FBQzlHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsY0FBYyx5RUFBeUU7QUFDdkY7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGdCQUFnQjtBQUNoQixlQUFlO0FBQ2YsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGNBQWMseUVBQXlFO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZTtBQUNmLGNBQWM7QUFDZCxjQUFjO0FBQ2QsaUJBQWlCO0FBQ2pCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvZGlzdC9lc20vZXNjYXBlLmpzP2RkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHhtbFJlcGxhY2VyID0gL1tcIiQmJzw+XFx1MDA4MC1cXHVGRkZGXS9nO1xuY29uc3QgeG1sQ29kZU1hcCA9IG5ldyBNYXAoW1xuICAgIFszNCwgXCImcXVvdDtcIl0sXG4gICAgWzM4LCBcIiZhbXA7XCJdLFxuICAgIFszOSwgXCImYXBvcztcIl0sXG4gICAgWzYwLCBcIiZsdDtcIl0sXG4gICAgWzYyLCBcIiZndDtcIl0sXG5dKTtcbi8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9kZSA8IDQsIHdlIHdyYXAgYGNvZGVQb2ludEF0YFxuZXhwb3J0IGNvbnN0IGdldENvZGVQb2ludCA9IFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cblN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQgPT0gbnVsbFxuICAgID8gKGMsIGluZGV4KSA9PiAoYy5jaGFyQ29kZUF0KGluZGV4KSAmIDY0NTEyKSA9PT0gNTUyOTZcbiAgICAgICAgPyAoYy5jaGFyQ29kZUF0KGluZGV4KSAtIDU1Mjk2KSAqIDEwMjQgK1xuICAgICAgICAgICAgYy5jaGFyQ29kZUF0KGluZGV4ICsgMSkgLVxuICAgICAgICAgICAgNTYzMjAgK1xuICAgICAgICAgICAgNjU1MzZcbiAgICAgICAgOiBjLmNoYXJDb2RlQXQoaW5kZXgpXG4gICAgOiAvLyBodHRwOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nI3N1cnJvZ2F0ZS1mb3JtdWxhZVxuICAgICAgICAoaW5wdXQsIGluZGV4KSA9PiBpbnB1dC5jb2RlUG9pbnRBdChpbmRleCk7XG4vKipcbiAqIEVuY29kZXMgYWxsIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBhcyB3ZWxsIGFzIGNoYXJhY3RlcnMgbm90IHZhbGlkIGluIFhNTFxuICogZG9jdW1lbnRzIHVzaW5nIFhNTCBlbnRpdGllcy5cbiAqXG4gKiBJZiBhIGNoYXJhY3RlciBoYXMgbm8gZXF1aXZhbGVudCBlbnRpdHksIGFcbiAqIG51bWVyaWMgaGV4YWRlY2ltYWwgcmVmZXJlbmNlIChlZy4gYCYjeGZjO2ApIHdpbGwgYmUgdXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVhNTChpbnB1dCkge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IFwiXCI7XG4gICAgbGV0IGxhc3RJbmRleCA9IDA7XG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB4bWxSZXBsYWNlci5leGVjKGlucHV0KSkgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBpbmRleCB9ID0gbWF0Y2g7XG4gICAgICAgIGNvbnN0IGNoYXIgPSBpbnB1dC5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgY29uc3QgbmV4dCA9IHhtbENvZGVNYXAuZ2V0KGNoYXIpO1xuICAgICAgICBpZiAobmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZSArPSBgJHtpbnB1dC5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCl9JiN4JHtnZXRDb2RlUG9pbnQoaW5wdXQsIGluZGV4KS50b1N0cmluZygxNil9O2A7XG4gICAgICAgICAgICAvLyBJbmNyZWFzZSBieSAxIGlmIHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpclxuICAgICAgICAgICAgbGFzdEluZGV4ID0geG1sUmVwbGFjZXIubGFzdEluZGV4ICs9IE51bWJlcigoY2hhciAmIDY0NTEyKSA9PT0gNTUyOTYpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUgKz0gaW5wdXQuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpICsgbmV4dDtcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWUgKyBpbnB1dC5zdWJzdHIobGFzdEluZGV4KTtcbn1cbi8qKlxuICogRW5jb2RlcyBhbGwgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGFzIHdlbGwgYXMgY2hhcmFjdGVycyBub3QgdmFsaWQgaW4gWE1MXG4gKiBkb2N1bWVudHMgdXNpbmcgbnVtZXJpYyBoZXhhZGVjaW1hbCByZWZlcmVuY2UgKGVnLiBgJiN4ZmM7YCkuXG4gKlxuICogSGF2ZSBhIGxvb2sgYXQgYGVzY2FwZVVURjhgIGlmIHlvdSB3YW50IGEgbW9yZSBjb25jaXNlIG91dHB1dCBhdCB0aGUgZXhwZW5zZVxuICogb2YgcmVkdWNlZCB0cmFuc3BvcnRhYmlsaXR5LlxuICpcbiAqIEBwYXJhbSBkYXRhIFN0cmluZyB0byBlc2NhcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBlc2NhcGUgPSBlbmNvZGVYTUw7XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVzY2FwZXMgYWxsIGNoYXJhY3RlcnMgbWF0Y2hlZCBieSB0aGUgZ2l2ZW4gcmVndWxhclxuICogZXhwcmVzc2lvbiB1c2luZyB0aGUgZ2l2ZW4gbWFwIG9mIGNoYXJhY3RlcnMgdG8gZXNjYXBlIHRvIHRoZWlyIGVudGl0aWVzLlxuICpcbiAqIEBwYXJhbSByZWdleCBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggY2hhcmFjdGVycyB0byBlc2NhcGUuXG4gKiBAcGFyYW0gbWFwIE1hcCBvZiBjaGFyYWN0ZXJzIHRvIGVzY2FwZSB0byB0aGVpciBlbnRpdGllcy5cbiAqXG4gKiBAcmV0dXJucyBGdW5jdGlvbiB0aGF0IGVzY2FwZXMgYWxsIGNoYXJhY3RlcnMgbWF0Y2hlZCBieSB0aGUgZ2l2ZW4gcmVndWxhclxuICogZXhwcmVzc2lvbiB1c2luZyB0aGUgZ2l2ZW4gbWFwIG9mIGNoYXJhY3RlcnMgdG8gZXNjYXBlIHRvIHRoZWlyIGVudGl0aWVzLlxuICovXG5mdW5jdGlvbiBnZXRFc2NhcGVyKHJlZ2V4LCBtYXApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gZXNjYXBlKGRhdGEpIHtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKGRhdGEpKSkge1xuICAgICAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gbWF0Y2guaW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gZGF0YS5zdWJzdHJpbmcobGFzdEluZGV4LCBtYXRjaC5pbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBjaGFyYWN0ZXIgd2lsbCBiZSBpbiB0aGUgbWFwLlxuICAgICAgICAgICAgcmVzdWx0ICs9IG1hcC5nZXQobWF0Y2hbMF0uY2hhckNvZGVBdCgwKSk7XG4gICAgICAgICAgICAvLyBFdmVyeSBtYXRjaCB3aWxsIGJlIG9mIGxlbmd0aCAxXG4gICAgICAgICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdCArIGRhdGEuc3Vic3RyaW5nKGxhc3RJbmRleCk7XG4gICAgfTtcbn1cbi8qKlxuICogRW5jb2RlcyBhbGwgY2hhcmFjdGVycyBub3QgdmFsaWQgaW4gWE1MIGRvY3VtZW50cyB1c2luZyBYTUwgZW50aXRpZXMuXG4gKlxuICogTm90ZSB0aGF0IHRoZSBvdXRwdXQgd2lsbCBiZSBjaGFyYWN0ZXItc2V0IGRlcGVuZGVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBTdHJpbmcgdG8gZXNjYXBlLlxuICovXG5leHBvcnQgY29uc3QgZXNjYXBlVVRGOCA9IC8qICNfX1BVUkVfXyAqLyBnZXRFc2NhcGVyKC9bXCImJzw+XS9nLCB4bWxDb2RlTWFwKTtcbi8qKlxuICogRW5jb2RlcyBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmUgdG8gYmUgZXNjYXBlZCBpbiBIVE1MIGF0dHJpYnV0ZXMsXG4gKiBmb2xsb3dpbmcge0BsaW5rIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlc2NhcGluZ1N0cmluZ30uXG4gKlxuICogQHBhcmFtIGRhdGEgU3RyaW5nIHRvIGVzY2FwZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZUF0dHJpYnV0ZSA9IFxuLyogI19fUFVSRV9fICovIGdldEVzY2FwZXIoL1tcIiZcXHUwMEEwXS9nLCBuZXcgTWFwKFtcbiAgICBbMzQsIFwiJnF1b3Q7XCJdLFxuICAgIFszOCwgXCImYW1wO1wiXSxcbiAgICBbMTYwLCBcIiZuYnNwO1wiXSxcbl0pKTtcbi8qKlxuICogRW5jb2RlcyBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmUgdG8gYmUgZXNjYXBlZCBpbiBIVE1MIHRleHQsXG4gKiBmb2xsb3dpbmcge0BsaW5rIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlc2NhcGluZ1N0cmluZ30uXG4gKlxuICogQHBhcmFtIGRhdGEgU3RyaW5nIHRvIGVzY2FwZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZVRleHQgPSAvKiAjX19QVVJFX18gKi8gZ2V0RXNjYXBlcigvWyY8PlxcdTAwQTBdL2csIG5ldyBNYXAoW1xuICAgIFszOCwgXCImYW1wO1wiXSxcbiAgICBbNjAsIFwiJmx0O1wiXSxcbiAgICBbNjIsIFwiJmd0O1wiXSxcbiAgICBbMTYwLCBcIiZuYnNwO1wiXSxcbl0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVzY2FwZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/escape.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js":
|
|
/*!******************************************************************************************!*\
|
|
!*** ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js ***!
|
|
\******************************************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ htmlDecodeTree: () => (/* binding */ htmlDecodeTree)\n/* harmony export */ });\n// Generated using scripts/write-decode-map.ts\nconst htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDTztBQUNQO0FBQ0Esc2RBQXNkLGdCQUFnQixtQkFBbUIsUUFBUSwwQ0FBMEMsVUFBVSxRQUFRLHlCQUF5QixRQUFRLDhCQUE4QiwyQ0FBMkMsc0JBQXNCLDJIQUEySCxxQkFBcUIsU0FBUyxRQUFRLHNDQUFzQyxjQUFjLFFBQVEsUUFBUSxxQkFBcUIsc0JBQXNCLHNCQUFzQixpSEFBaUgsdURBQXVELGFBQWEsb0NBQW9DLFdBQVcsNENBQTRDLDRCQUE0QixXQUFXLFNBQVMsK0JBQStCLGFBQWEsa0JBQWtCLCtDQUErQyxXQUFXLFVBQVUsV0FBVyxnREFBZ0QsMkNBQTJDLFdBQVcsaURBQWlELG9CQUFvQix1Q0FBdUMsU0FBUyxrQkFBa0IsMkJBQTJCLFlBQVksbUNBQW1DLFVBQVUsU0FBUywwQkFBMEIsc0JBQXNCLGdHQUFnRyxtQkFBbUIsU0FBUyxTQUFTLFNBQVMscUNBQXFDLFFBQVEsU0FBUyw4QkFBOEIsT0FBTyxjQUFjLHFCQUFxQixRQUFRLHdHQUF3RywwQkFBMEIsZUFBZSxXQUFXLFdBQVcsVUFBVSxpQkFBaUIsOENBQThDLHlCQUF5Qiw2QkFBNkIsV0FBVyx3SEFBd0gsNERBQTRELGdCQUFnQixtRUFBbUUsZ0JBQWdCLGdCQUFnQixtQ0FBbUMsU0FBUyxrQ0FBa0MsZUFBZSxpQkFBaUIsa0VBQWtFLDZCQUE2QixhQUFhLFdBQVcsZ0RBQWdELGVBQWUsa0JBQWtCLHNCQUFzQix1Q0FBdUMsa0JBQWtCLHNCQUFzQixlQUFlLHdCQUF3Qiw0QkFBNEIsc0JBQXNCLDhIQUE4SCwwRUFBMEUseUJBQXlCLFNBQVMsUUFBUSw0Q0FBNEMsNkJBQTZCLHlDQUF5QyxxQkFBcUIsNkJBQTZCLFFBQVEsd0JBQXdCLG1DQUFtQyx3QkFBd0IsY0FBYyw0QkFBNEIsUUFB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ZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9wYXJzZTUvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2Rpc3QvZXNtL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS1odG1sLmpzP2IzZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIHVzaW5nIHNjcmlwdHMvd3JpdGUtZGVjb2RlLW1hcC50c1xuZXhwb3J0IGNvbnN0IGh0bWxEZWNvZGVUcmVlID0gLyogI19fUFVSRV9fICovIG5ldyBVaW50MTZBcnJheShcbi8vIHByZXR0aWVyLWlnbm9yZVxuLyogI19fUFVSRV9fICovIFwiXFx1MWQ0MTxcXHhkNVxcdTAxMzFcXHUwMjhhXFx1MDQ5ZFxcdTA1N2JcXHUwNWQwXFx1MDY3NVxcdTA2ZGVcXHUwN2EyXFx1MDdkNlxcdTA4MGZcXHUwYTRhXFx1MGE5MVxcdTBkYTFcXHUwZTZkXFx1MGYwOVxcdTBmMjZcXHUxMGNhXFx1MTIyOFxcdTEyZTFcXHUxNDE1XFx1MTQ5ZFxcdTE0YzNcXHUxNGRmXFx1MTUyNVxcMFxcMFxcMFxcMFxcMFxcMFxcdTE1NmJcXHUxNmNkXFx1MTk4ZFxcdTFjMTJcXHUxZGRkXFx1MWY3ZVxcdTIwNjBcXHUyMWIwXFx1MjI4ZFxcdTIzYzBcXHUyM2ZiXFx1MjQ0MlxcdTI4MjRcXHUyOTEyXFx1MmQwOFxcdTJlNDhcXHUyZmNlXFx1MzAxNlxcdTMyYmFcXHUzNjM5XFx1MzdhY1xcdTM4ZmVcXHUzYTI4XFx1M2E3MVxcdTNhZTBcXHUzYjJlXFx1MDgwMEVNYWJjZmdsbW5vcHJzdHVcXFxcYmZtc1xceDdmXFx4ODRcXHg4YlxceDkwXFx4OTVcXHg5OFxceGE2XFx4YjNcXHhiOVxceGM4XFx4Y2ZsaWdcXHU4MDNiXFx4YzZcXHU0MGM2UFxcdTgwM2ImXFx1NDAyNmN1dGVcXHU4MDNiXFx4YzFcXHU0MGMxcmV2ZTtcXHU0MTAyXFx1MDEwMGl5eH1yY1xcdTgwM2JcXHhjMlxcdTQwYzI7XFx1NDQxMHI7XFx1YzAwMFxcdWQ4MzVcXHVkZDA0cmF2ZVxcdTgwM2JcXHhjMFxcdTQwYzBwaGE7XFx1NDM5MWFjcjtcXHU0MTAwZDtcXHU2YTUzXFx1MDEwMGdwXFx4OWRcXHhhMW9uO1xcdTQxMDRmO1xcdWMwMDBcXHVkODM1XFx1ZGQzOHBseUZ1bmN0aW9uO1xcdTYwNjFpbmdcXHU4MDNiXFx4YzVcXHU0MGM1XFx1MDEwMGNzXFx4YmVcXHhjM3I7XFx1YzAwMFxcdWQ4MzVcXHVkYzljaWduO1xcdTYyNTRpbGRlXFx1ODAzYlxceGMzXFx1NDBjM21sXFx1ODAzYlxceGM0XFx1NDBjNFxcdTA0MDBhY2Vmb3JzdVxceGU1XFx4ZmJcXHhmZVxcdTAxMTdcXHUwMTFjXFx1MDEyMlxcdTAxMjdcXHUwMTJhXFx1MDEwMGNyXFx4ZWFcXHhmMmtzbGFzaDtcXHU2MjE2XFx1MDE3NlxceGY2XFx4Zjg7XFx1NmFlN2VkO1xcdTYzMDZ5O1xcdTQ0MTFcXHUwMTgwY3J0XFx1MDEwNVxcdTAxMGJcXHUwMTE0YXVzZTtcXHU2MjM1bm91bGxpcztcXHU2MTJjYTtcXHU0MzkycjtcXHVjMDAwXFx1ZDgzNVxcdWRkMDVwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkMzlldmU7XFx1NDJkOGNcXHhmMlxcdTAxMTNtcGVxO1xcdTYyNGVcXHUwNzAwSE9hY2RlZmhpbG9yc3VcXHUwMTRkXFx1MDE1MVxcdTAxNTZcXHUwMTgwXFx1MDE5ZVxcdTAxYTJcXHUwMWI1XFx1MDFiN1xcdTAxYmFcXHUwMWRjXFx1MDIxNVxcdTAyNzNcXHUwMjc4XFx1MDI3ZWN5O1xcdTQ0MjdQWVxcdTgwM2JcXHhhOVxcdTQwYTlcXHUwMTgwY3B5XFx1MDE1ZFxcdTAxNjJcXHUwMTdhdXRlO1xcdTQxMDZcXHUwMTAwO2lcXHUwMTY3XFx1MDE2OFxcdTYyZDJ0YWxEaWZmZXJlbnRpYWxEO1xcdTYxNDVsZXlzO1xcdTYxMmRcXHUwMjAwYWVpb1xcdTAxODlcXHUwMThlXFx1MDE5NFxcdTAxOThyb247XFx1NDEwY2RpbFxcdTgwM2JcXHhjN1xcdTQwYzdyYztcXHU0MTA4bmludDtcXHU2MjMwb3Q7XFx1NDEwYVxcdTAxMDBkblxcdTAxYTdcXHUwMWFkaWxsYTtcXHU0MGI4dGVyRG90O1xcdTQwYjdcXHhmMlxcdTAxN2ZpO1xcdTQzYTdyY2xlXFx1MDIwMERNUFRcXHUwMWM3XFx1MDFjYlxcdTAxZDFcXHUwMWQ2b3Q7XFx1NjI5OWludXM7XFx1NjI5Nmx1cztcXHU2Mjk1aW1lcztcXHU2Mjk3b1xcdTAxMDBjc1xcdTAxZTJcXHUwMWY4a3dpc2VDb250b3VySW50ZWdyYWw7XFx1NjIzMmVDdXJseVxcdTAxMDBEUVxcdTAyMDNcXHUwMjBmb3VibGVRdW90ZTtcXHU2MDFkdW90ZTtcXHU2MDE5XFx1MDIwMGxucHVcXHUwMjFlXFx1MDIyOFxcdTAyNDdcXHUwMjU1b25cXHUwMTAwO2VcXHUwMjI1XFx1MDIyNlxcdTYyMzc7XFx1NmE3NFxcdTAxODBnaXRcXHUwMjJmXFx1MDIzNlxcdTAyM2FydWVudDtcXHU2MjYxbnQ7XFx1NjIyZm91ckludGVncmFsO1xcdTYyMmVcXHUwMTAwZnJcXHUwMjRjXFx1MDI0ZTtcXHU2MTAyb2R1Y3Q7XFx1NjIxMG50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7XFx1NjIzM29zcztcXHU2YTJmY3I7XFx1YzAwMFxcdWQ4MzVcXHVkYzllcFxcdTAxMDA7Q1xcdTAyODRcXHUwMjg1XFx1NjJkM2FwO1xcdTYyNGRcXHUwNTgwREpTWmFjZWZpb3NcXHUwMmEwXFx1MDJhY1xcdTAyYjBcXHUwMmI0XFx1MDJiOFxcdTAyY2JcXHUwMmQ3XFx1MDJlMVxcdTAyZTZcXHUwMzMzXFx1MDQ4ZFxcdTAxMDA7b1xcdTAxNzlcXHUwMmE1dHJhaGQ7XFx1NjkxMWN5O1xcdTQ0MDJjeTtcXHU0NDA1Y3k7XFx1NDQwZlxcdTAxODBncnNcXHUwMmJmXFx1MDJjNFxcdTAyYzdnZXI7XFx1NjAyMXI7XFx1NjFhMWh2O1xcdTZhZTRcXHUwMTAwYXlcXHUwMmQwXFx1MDJkNXJvbjtcXHU0MTBlO1xcdTQ0MTRsXFx1MDEwMDt0XFx1MDJkZFxcdTAyZGVcXHU2MjA3YTtcXHU0Mzk0cjtcXHVjMDAwXFx1ZDgzNVxcdWRkMDdcXHUwMTAwYWZcXHUwMmViXFx1MDMyN1xcdTAxMDBjbVxcdTAyZjBcXHUwMzIycml0aWNhbFxcdTAyMDBBREdUXFx1MDMwMFxcdTAzMDZcXHUwMzE2XFx1MDMxY2N1dGU7XFx1NDBiNG9cXHUwMTc0XFx1MDMwYlxcdTAzMGQ7XFx1NDJkOWJsZUFjdXRlO1xcdTQyZGRyYXZlO1xcdTQwNjBpbGRlO1xcdTQyZGNvbmQ7XFx1NjJjNGZlcmVudGlhbEQ7XFx1NjE0NlxcdTA0NzBcXHUwMzNkXFwwXFwwXFwwXFx1MDM0MlxcdTAzNTRcXDBcXHUwNDA1ZjtcXHVjMDAwXFx1ZDgzNVxcdWRkM2JcXHUwMTgwO0RFXFx1MDM0OFxcdTAzNDlcXHUwMzRkXFx1NDBhOG90O1xcdTYwZGNxdWFsO1xcdTYyNTBibGVcXHUwMzAwQ0RMUlVWXFx1MDM2M1xcdTAzNzJcXHUwMzgyXFx1MDNjZlxcdTAzZTJcXHUwM2Y4b250b3VySW50ZWdyYVxceGVjXFx1MDIzOW9cXHUwMjc0XFx1MDM3OVxcMFxcMFxcdTAzN2JcXHhiYlxcdTAzNDluQXJyb3c7XFx1NjFkM1xcdTAxMDBlb1xcdTAzODdcXHUwM2E0ZnRcXHUwMTgwQVJUXFx1MDM5MFxcdTAzOTZcXHUwM2ExcnJvdztcXHU2MWQwaWdodEFycm93O1xcdTYxZDRlXFx4ZTVcXHUwMmNhbmdcXHUwMTAwTFJcXHUwM2FiXFx1MDNjNGVmdFxcdTAxMDBBUlxcdTAzYjNcXHUwM2I5cnJvdztcXHU2N2Y4aWdodEFycm93O1xcdTY3ZmFpZ2h0QXJyb3c7XFx1NjdmOWlnaHRcXHUwMTAwQVRcXHUwM2Q4XFx1MDNkZXJyb3c7XFx1NjFkMmVlO1xcdTYyYThwXFx1MDI0MVxcdTAzZTlcXDBcXDBcXHUwM2VmcnJvdztcXHU2MWQxb3duQXJyb3c7XFx1NjFkNWVydGljYWxCYXI7XFx1NjIyNW5cXHUwMzAwQUJMUlRhXFx1MDQxMlxcdTA0MmFcXHUwNDMwXFx1MDQ1ZVxcdTA0N2ZcXHUwMzdjcnJvd1xcdTAxODA7QlVcXHUwNDFkXFx1MDQxZVxcdTA0MjJcXHU2MTkzYXI7XFx1NjkxM3BBcnJvdztcXHU2MWY1cmV2ZTtcXHU0MzExZWZ0XFx1MDJkMlxcdTA0M2FcXDBcXHUwNDQ2XFwwXFx1MDQ1MGlnaHRWZWN0b3I7XFx1Njk1MGVlVmVjdG9yO1xcdTY5NWVlY3RvclxcdTAxMDA7QlxcdTA0NTlcXHUwNDVhXFx1NjFiZGFyO1xcdTY5NTZpZ2h0XFx1MDFkNFxcdTA0NjdcXDBcXHUwNDcxZWVWZWN0b3I7XFx1Njk1ZmVjdG9yXFx1MDEwMDtCXFx1MDQ3YVxcdTA0N2JcXHU2MWMxYXI7XFx1Njk1N2VlXFx1MDEwMDtBXFx1MDQ4NlxcdTA0ODdcXHU2MmE0cnJvdztcXHU2MWE3XFx1MDEwMGN0XFx1MDQ5MlxcdTA0OTdyO1xcdWMwMDBcXHVkODM1XFx1ZGM5ZnJvaztcXHU0MTEwXFx1MDgwME5UYWNkZmdsbW9wcXN0dXhcXHUwNGJkXFx1MDRjMFxcdTA0YzRcXHUwNGNiXFx1MDRkZVxcdTA0ZTJcXHUwNGU3XFx1MDRlZVxcdTA0ZjVcXHUwNTIxXFx1MDUyZlxcdTA1MzZcXHUwNTUyXFx1MDU1ZFxcdTA1NjBcXHUwNTY1RztcXHU0MTRhSFxcdTgwM2JcXHhkMFxcdTQwZDBjdXRlXFx1ODAzYlxceGM5XFx1NDBjOVxcdTAxODBhaXlcXHUwNGQyXFx1MDRkN1xcdTA0ZGNyb247XFx1NDExYXJjXFx1ODAzYlxceGNhXFx1NDBjYTtcXHU0NDJkb3Q7XFx1NDExNnI7XFx1YzAwMFxcdWQ4MzVcXHVkZDA4cmF2ZVxcdTgwM2JcXHhjOFxcdTQwYzhlbWVudDtcXHU2MjA4XFx1MDEwMGFwXFx1MDRmYVxcdTA0ZmVjcjtcXHU0MTEydHlcXHUwMjUzXFx1MDUwNlxcMFxcMFxcdTA1MTJtYWxsU3F1YXJlO1xcdTY1ZmJlcnlTbWFsbFNxdWFyZTtcXHU2NWFiXFx1MDEwMGdwXFx1MDUyNlxcdTA1MmFvbjtcXHU0MTE4ZjtcXHVjMDAwXFx1ZDgzNVxcdWRkM2NzaWxvbjtcXHU0Mzk1dVxcdTAxMDBhaVxcdTA1M2NcXHUwNTQ5bFxcdTAxMDA7VFxcdTA1NDJcXHUwNTQzXFx1NmE3NWlsZGU7XFx1NjI0MmxpYnJpdW07XFx1NjFjY1xcdTAxMDBjaVxcdTA1NTdcXHUwNTVhcjtcXHU2MTMwbTtcXHU2YTczYTtcXHU0Mzk3bWxcXHU4MDNiXFx4Y2JcXHU0MGNiXFx1MDEwMGlwXFx1MDU2YVxcdTA1NmZzdHM7XFx1NjIwM29uZW50aWFsRTtcXHU2MTQ3XFx1MDI4MGNmaW9zXFx1MDU4NVxcdTA1ODhcXHUwNThkXFx1MDViMlxcdTA1Y2N5O1xcdTQ0MjRyO1xcdWMwMDBcXHVkODM1XFx1ZGQwOWxsZWRcXHUwMjUzXFx1MDU5N1xcMFxcMFxcdTA1YTNtYWxsU3F1YXJlO1xcdTY1ZmNlcnlTbWFsbFNxdWFyZTtcXHU2NWFhXFx1MDM3MFxcdTA1YmFcXDBcXHUwNWJmXFwwXFwwXFx1MDVjNGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDNkQWxsO1xcdTYyMDByaWVydHJmO1xcdTYxMzFjXFx4ZjJcXHUwNWNiXFx1MDYwMEpUYWJjZGZnb3JzdFxcdTA1ZThcXHUwNWVjXFx1MDVlZlxcdTA1ZmFcXHUwNjAwXFx1MDYxMlxcdTA2MTZcXHUwNjFiXFx1MDYxZFxcdTA2MjNcXHUwNjZjXFx1MDY3MmN5O1xcdTQ0MDNcXHU4MDNiPlxcdTQwM2VtbWFcXHUwMTAwO2RcXHUwNWY3XFx1MDVmOFxcdTQzOTM7XFx1NDNkY3JldmU7XFx1NDExZVxcdTAxODBlaXlcXHUwNjA3XFx1MDYwY1xcdTA2MTBkaWw7XFx1NDEyMnJjO1xcdTQxMWM7XFx1NDQxM290O1xcdTQxMjByO1xcdWMwMDBcXHVkODM1XFx1ZGQwYTtcXHU2MmQ5cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDNlZWF0ZXJcXHUwMzAwRUZHTFNUXFx1MDYzNVxcdTA2NDRcXHUwNjRlXFx1MDY1NlxcdTA2NWJcXHUwNjY2cXVhbFxcdTAxMDA7TFxcdTA2M2VcXHUwNjNmXFx1NjI2NWVzcztcXHU2MmRidWxsRXF1YWw7XFx1NjI2N3JlYXRlcjtcXHU2YWEyZXNzO1xcdTYyNzdsYW50RXF1YWw7XFx1NmE3ZWlsZGU7XFx1NjI3M2NyO1xcdWMwMDBcXHVkODM1XFx1ZGNhMjtcXHU2MjZiXFx1MDQwMEFhY2Zpb3N1XFx1MDY4NVxcdTA2OGJcXHUwNjk2XFx1MDY5YlxcdTA2OWVcXHUwNmFhXFx1MDZiZVxcdTA2Y2FSRGN5O1xcdTQ0MmFcXHUwMTAwY3RcXHUwNjkwXFx1MDY5NGVrO1xcdTQyYzc7XFx1NDA1ZWlyYztcXHU0MTI0cjtcXHU2MTBjbGJlcnRTcGFjZTtcXHU2MTBiXFx1MDFmMFxcdTA2YWZcXDBcXHUwNmIyZjtcXHU2MTBkaXpvbnRhbExpbmU7XFx1NjUwMFxcdTAxMDBjdFxcdTA2YzNcXHUwNmM1XFx4ZjJcXHUwNmE5cm9rO1xcdTQxMjZtcFxcdTAxNDRcXHUwNmQwXFx1MDZkOG93bkh1bVxceGYwXFx1MDEyZnF1YWw7XFx1NjI0ZlxcdTA3MDBFSk9hY2RmZ21ub3N0dVxcdTA2ZmFcXHUwNmZlXFx1MDcwM1xcdTA3MDdcXHUwNzBlXFx1MDcxYVxcdTA3MWVcXHUwNzIxXFx1MDcyOFxcdTA3NDRcXHUwNzc4XFx1MDc4YlxcdTA3OGZcXHUwNzk1Y3k7XFx1NDQxNWxpZztcXHU0MTMyY3k7XFx1NDQwMWN1dGVcXHU4MDNiXFx4Y2RcXHU0MGNkXFx1MDEwMGl5XFx1MDcxM1xcdTA3MThyY1xcdTgwM2JcXHhjZVxcdTQwY2U7XFx1NDQxOG90O1xcdTQxMzByO1xcdTYxMTFyYXZlXFx1ODAzYlxceGNjXFx1NDBjY1xcdTAxODA7YXBcXHUwNzIwXFx1MDcyZlxcdTA3M2ZcXHUwMTAwY2dcXHUwNzM0XFx1MDczN3I7XFx1NDEyYWluYXJ5STtcXHU2MTQ4bGllXFx4ZjNcXHUwM2RkXFx1MDFmNFxcdTA3NDlcXDBcXHUwNzYyXFx1MDEwMDtlXFx1MDc0ZFxcdTA3NGVcXHU2MjJjXFx1MDEwMGdyXFx1MDc1M1xcdTA3NThyYWw7XFx1NjIyYnNlY3Rpb247XFx1NjJjMmlzaWJsZVxcdTAxMDBDVFxcdTA3NmNcXHUwNzcyb21tYTtcXHU2MDYzaW1lcztcXHU2MDYyXFx1MDE4MGdwdFxcdTA3N2ZcXHUwNzgzXFx1MDc4OG9uO1xcdTQxMmVmO1xcdWMwMDBcXHVkODM1XFx1ZGQ0MGE7XFx1NDM5OWNyO1xcdTYxMTBpbGRlO1xcdTQxMjhcXHUwMWViXFx1MDc5YVxcMFxcdTA3OWVjeTtcXHU0NDA2bFxcdTgwM2JcXHhjZlxcdTQwY2ZcXHUwMjgwY2Zvc3VcXHUwN2FjXFx1MDdiN1xcdTA3YmNcXHUwN2MyXFx1MDdkMFxcdTAxMDBpeVxcdTA3YjFcXHUwN2I1cmM7XFx1NDEzNDtcXHU0NDE5cjtcXHVjMDAwXFx1ZDgzNVxcdWRkMGRwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNDFcXHUwMWUzXFx1MDdjN1xcMFxcdTA3Y2NyO1xcdWMwMDBcXHVkODM1XFx1ZGNhNXJjeTtcXHU0NDA4a2N5O1xcdTQ0MDRcXHUwMzgwSEphY2Zvc1xcdTA3ZTRcXHUwN2U4XFx1MDdlY1xcdTA3ZjFcXHUwN2ZkXFx1MDgwMlxcdTA4MDhjeTtcXHU0NDI1Y3k7XFx1NDQwY3BwYTtcXHU0MzlhXFx1MDEwMGV5XFx1MDdmNlxcdTA3ZmJkaWw7XFx1NDEzNjtcXHU0NDFhcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMGVwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNDJjcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYTZcXHUwNTgwSlRhY2VmbG1vc3RcXHUwODI1XFx1MDgyOVxcdTA4MmNcXHUwODUwXFx1MDg2M1xcdTA5YjNcXHUwOWI4XFx1MDljN1xcdTA5Y2RcXHUwYTM3XFx1MGE0N2N5O1xcdTQ0MDlcXHU4MDNiPFxcdTQwM2NcXHUwMjgwY21ucHJcXHUwODM3XFx1MDgzY1xcdTA4NDFcXHUwODQ0XFx1MDg0ZHV0ZTtcXHU0MTM5YmRhO1xcdTQzOWJnO1xcdTY3ZWFsYWNldHJmO1xcdTYxMTJyO1xcdTYxOWVcXHUwMTgwYWV5XFx1MDg1N1xcdTA4NWNcXHUwODYxcm9uO1xcdTQxM2RkaWw7XFx1NDEzYjtcXHU0NDFiXFx1MDEwMGZzXFx1MDg2OFxcdTA5NzB0XFx1MDUwMEFDREZSVFVWYXJcXHUwODdlXFx1MDhhOVxcdTA4YjFcXHUwOGUwXFx1MDhlNlxcdTA4ZmNcXHUwOTJmXFx1MDk1YlxcdTAzOTBcXHUwOTZhXFx1MDEwMG5yXFx1MDg4M1xcdTA4OGZnbGVCcmFja2V0O1xcdTY3ZThyb3dcXHUwMTgwO0JSXFx1MDg5OVxcdTA4OWFcXHUwODllXFx1NjE5MGFyO1xcdTYxZTRpZ2h0QXJyb3c7XFx1NjFjNmVpbGluZztcXHU2MzA4b1xcdTAxZjVcXHUwOGI3XFwwXFx1MDhjM2JsZUJyYWNrZXQ7XFx1NjdlNm5cXHUwMWQ0XFx1MDhjOFxcMFxcdTA4ZDJlZVZlY3RvcjtcXHU2OTYxZWN0b3JcXHUwMTAwO0JcXHUwOGRiXFx1MDhkY1xcdTYxYzNhcjtcXHU2OTU5bG9vcjtcXHU2MzBhaWdodFxcdTAxMDBBVlxcdTA4ZWZcXHUwOGY1cnJvdztcXHU2MTk0ZWN0b3I7XFx1Njk0ZVxcdTAxMDBlclxcdTA5MDFcXHUwOTE3ZVxcdTAxODA7QVZcXHUwOTA5XFx1MDkwYVxcdTA5MTBcXHU2MmEzcnJvdztcXHU2MWE0ZWN0b3I7XFx1Njk1YWlhbmdsZVxcdTAxODA7QkVcXHUwOTI0XFx1MDkyNVxcdTA5MjlcXHU2MmIyYXI7XFx1NjljZnF1YWw7XFx1NjJiNHBcXHUwMTgwRFRWXFx1MDkzN1xcdTA5NDJcXHUwOTRjb3duVmVjdG9yO1xcdTY5NTFlZVZlY3RvcjtcXHU2OTYwZWN0b3JcXHUwMTAwO0JcXHUwOTU2XFx1MDk1N1xcdTYxYmZhcjtcXHU2OTU4ZWN0b3JcXHUwMTAwO0JcXHUwOTY1XFx1MDk2NlxcdTYxYmNhcjtcXHU2OTUyaWdodFxceGUxXFx1MDM5Y3NcXHUwMzAwRUZHTFNUXFx1MDk3ZVxcdTA5OGJcXHUwOTk1XFx1MDk5ZFxcdTA5YTJcXHUwOWFkcXVhbEdyZWF0ZXI7XFx1NjJkYXVsbEVxdWFsO1xcdTYyNjZyZWF0ZXI7XFx1NjI3NmVzcztcXHU2YWExbGFudEVxdWFsO1xcdTZhN2RpbGRlO1xcdTYyNzJyO1xcdWMwMDBcXHVkODM1XFx1ZGQwZlxcdTAxMDA7ZVxcdTA5YmRcXHUwOWJlXFx1NjJkOGZ0YXJyb3c7XFx1NjFkYWlkb3Q7XFx1NDEzZlxcdTAxODBucHdcXHUwOWQ0XFx1MGExNlxcdTBhMWJnXFx1MDIwMExSbHJcXHUwOWRlXFx1MDlmN1xcdTBhMDJcXHUwYTEwZWZ0XFx1MDEwMEFSXFx1MDllNlxcdTA5ZWNycm93O1xcdTY3ZjVpZ2h0QXJyb3c7XFx1NjdmN2lnaHRBcnJvdztcXHU2N2Y2ZWZ0XFx1MDEwMGFyXFx1MDNiM1xcdTBhMGFpZ2h0XFx4ZTFcXHUwM2JmaWdodFxceGUxXFx1MDNjYWY7XFx1YzAwMFxcdWQ4MzVcXHVkZDQzZXJcXHUwMTAwTFJcXHUwYTIyXFx1MGEyY2VmdEFycm93O1xcdTYxOTlpZ2h0QXJyb3c7XFx1NjE5OFxcdTAxODBjaHRcXHUwYTNlXFx1MGE0MFxcdTBhNDJcXHhmMlxcdTA4NGM7XFx1NjFiMHJvaztcXHU0MTQxO1xcdTYyNmFcXHUwNDAwYWNlZmlvc3VcXHUwYTVhXFx1MGE1ZFxcdTBhNjBcXHUwYTc3XFx1MGE3Y1xcdTBhODVcXHUwYThiXFx1MGE4ZXA7XFx1NjkwNXk7XFx1NDQxY1xcdTAxMDBkbFxcdTBhNjVcXHUwYTZmaXVtU3BhY2U7XFx1NjA1ZmxpbnRyZjtcXHU2MTMzcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMTBudXNQbHVzO1xcdTYyMTNwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNDRjXFx4ZjJcXHUwYTc2O1xcdTQzOWNcXHUwNDgwSmFjZWZvc3R1XFx1MGFhM1xcdTBhYTdcXHUwYWFkXFx1MGFjMFxcdTBiMTRcXHUwYjE5XFx1MGQ5MVxcdTBkOTdcXHUwZDllY3k7XFx1NDQwYWN1dGU7XFx1NDE0M1xcdTAxODBhZXlcXHUwYWI0XFx1MGFiOVxcdTBhYmVyb247XFx1NDE0N2RpbDtcXHU0MTQ1O1xcdTQ0MWRcXHUwMTgwZ3N3XFx1MGFjN1xcdTBhZjBcXHUwYjBlYXRpdmVcXHUwMTgwTVRWXFx1MGFkM1xcdTBhZGZcXHUwYWU4ZWRpdW1TcGFjZTtcXHU2MDBiaGlcXHUwMTAwY25cXHUwYWU2XFx1MGFkOFxceGViXFx1MGFkOWVyeVRoaVxceGVlXFx1MGFkOXRlZFxcdTAxMDBHTFxcdTBhZjhcXHUwYjA2cmVhdGVyR3JlYXRlXFx4ZjJcXHUwNjczZXNzTGVzXFx4ZjNcXHUwYTQ4TGluZTtcXHU0MDBhcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMTFcXHUwMjAwQm5wdFxcdTBiMjJcXHUwYjI4XFx1MGIzN1xcdTBiM2FyZWFrO1xcdTYwNjBCcmVha2luZ1NwYWNlO1xcdTQwYTBmO1xcdTYxMTVcXHUwNjgwO0NERUdITE5QUlNUVlxcdTBiNTVcXHUwYjU2XFx1MGI2YVxcdTBiN2NcXHUwYmExXFx1MGJlYlxcdTBjMDRcXHUwYzVlXFx1MGM4NFxcdTBjYTZcXHUwY2Q4XFx1MGQ2MVxcdTBkODVcXHU2YWVjXFx1MDEwMG91XFx1MGI1YlxcdTBiNjRuZ3J1ZW50O1xcdTYyNjJwQ2FwO1xcdTYyNmRvdWJsZVZlcnRpY2FsQmFyO1xcdTYyMjZcXHUwMTgwbHF4XFx1MGI4M1xcdTBiOGFcXHUwYjliZW1lbnQ7XFx1NjIwOXVhbFxcdTAxMDA7VFxcdTBiOTJcXHUwYjkzXFx1NjI2MGlsZGU7XFx1YzAwMFxcdTIyNDJcXHUwMzM4aXN0cztcXHU2MjA0cmVhdGVyXFx1MDM4MDtFRkdMU1RcXHUwYmI2XFx1MGJiN1xcdTBiYmRcXHUwYmM5XFx1MGJkM1xcdTBiZDhcXHUwYmU1XFx1NjI2ZnF1YWw7XFx1NjI3MXVsbEVxdWFsO1xcdWMwMDBcXHUyMjY3XFx1MDMzOHJlYXRlcjtcXHVjMDAwXFx1MjI2YlxcdTAzMzhlc3M7XFx1NjI3OWxhbnRFcXVhbDtcXHVjMDAwXFx1MmE3ZVxcdTAzMzhpbGRlO1xcdTYyNzV1bXBcXHUwMTQ0XFx1MGJmMlxcdTBiZmRvd25IdW1wO1xcdWMwMDBcXHUyMjRlXFx1MDMzOHF1YWw7XFx1YzAwMFxcdTIyNGZcXHUwMzM4ZVxcdTAxMDBmc1xcdTBjMGFcXHUwYzI3dFRyaWFuZ2xlXFx1MDE4MDtCRVxcdTBjMWFcXHUwYzFiXFx1MGMyMVxcdTYyZWFhcjtcXHVjMDAwXFx1MjljZlxcdTAzMzhxdWFsO1xcdTYyZWNzXFx1MDMwMDtFR0xTVFxcdTBjMzVcXHUwYzM2XFx1MGMzY1xcdTBjNDRcXHUwYzRiXFx1MGM1OFxcdTYyNmVxdWFsO1xcdTYyNzByZWF0ZXI7XFx1NjI3OGVzcztcXHVjMDAwXFx1MjI2YVxcdTAzMzhsYW50RXF1YWw7XFx1YzAwMFxcdTJhN2RcXHUwMzM4aWxkZTtcXHU2Mjc0ZXN0ZWRcXHUwMTAwR0xcXHUwYzY4XFx1MGM3OXJlYXRlckdyZWF0ZXI7XFx1YzAwMFxcdTJhYTJcXHUwMzM4ZXNzTGVzcztcXHVjMDAwXFx1MmFhMVxcdTAzMzhyZWNlZGVzXFx1MDE4MDtFU1xcdTBjOTJcXHUwYzkzXFx1MGM5YlxcdTYyODBxdWFsO1xcdWMwMDBcXHUyYWFmXFx1MDMzOGxhbnRFcXVhbDtcXHU2MmUwXFx1MDEwMGVpXFx1MGNhYlxcdTBjYjl2ZXJzZUVsZW1lbnQ7XFx1NjIwY2dodFRyaWFuZ2xlXFx1MDE4MDtCRVxcdTBjY2JcXHUwY2NjXFx1MGNkMlxcdTYyZWJhcjtcXHVjMDAwXFx1MjlkMFxcdTAzMzhxdWFsO1xcdTYyZWRcXHUwMTAwcXVcXHUwY2RkXFx1MGQwY3VhcmVTdVxcdTAxMDBicFxcdTBjZThcXHUwY2Y5c2V0XFx1MDEwMDtFXFx1MGNmMFxcdTBjZjNcXHVjMDAwXFx1MjI4ZlxcdTAzMzhxdWFsO1xcdTYyZTJlcnNldFxcdTAxMDA7RVxcdTBkMDNcXHUwZDA2XFx1YzAwMFxcdTIyOTBcXHUwMzM4cXVhbDtcXHU2MmUzXFx1MDE4MGJjcFxcdTBkMTNcXHUwZDI0XFx1MGQ0ZXNldFxcdTAxMDA7RVxcdTBkMWJcXHUwZDFlXFx1YzAwMFxcdTIyODJcXHUyMGQycXVhbDtcXHU2Mjg4Y2VlZHNcXHUwMjAwO0VTVFxcdTBkMzJcXHUwZDMzXFx1MGQzYlxcdTBkNDZcXHU2MjgxcXVhbDtcXHVjMDAwXFx1MmFiMFxcdTAzMzhsYW50RXF1YWw7XFx1NjJlMWlsZGU7XFx1YzAwMFxcdTIyN2ZcXHUwMzM4ZXJzZXRcXHUwMTAwO0VcXHUwZDU4XFx1MGQ1YlxcdWMwMDBcXHUyMjgzXFx1MjBkMnF1YWw7XFx1NjI4OWlsZGVcXHUwMjAwO0VGVFxcdTBkNmVcXHUwZDZmXFx1MGQ3NVxcdTBkN2ZcXHU2MjQxcXVhbDtcXHU2MjQ0dWxsRXF1YWw7XFx1NjI0N2lsZGU7XFx1NjI0OWVydGljYWxCYXI7XFx1NjIyNGNyO1xcdWMwMDBcXHVkODM1XFx1ZGNhOWlsZGVcXHU4MDNiXFx4ZDFcXHU0MGQxO1xcdTQzOWRcXHUwNzAwRWFjZGZnbW9wcnN0dXZcXHUwZGJkXFx1MGRjMlxcdTBkYzlcXHUwZGQ1XFx1MGRkYlxcdTBkZTBcXHUwZGU3XFx1MGRmY1xcdTBlMDJcXHUwZTIwXFx1MGUyMlxcdTBlMzJcXHUwZTNmXFx1MGU0NGxpZztcXHU0MTUyY3V0ZVxcdTgwM2JcXHhkM1xcdTQwZDNcXHUwMTAwaXlcXHUwZGNlXFx1MGRkM3JjXFx1ODAzYlxceGQ0XFx1NDBkNDtcXHU0NDFlYmxhYztcXHU0MTUwcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMTJyYXZlXFx1ODAzYlxceGQyXFx1NDBkMlxcdTAxODBhZWlcXHUwZGVlXFx1MGRmMlxcdTBkZjZjcjtcXHU0MTRjZ2E7XFx1NDNhOWNyb247XFx1NDM5ZnBmO1xcdWMwMDBcXHVkODM1XFx1ZGQ0NmVuQ3VybHlcXHUwMTAwRFFcXHUwZTBlXFx1MGUxYW91YmxlUXVvdGU7XFx1NjAxY3VvdGU7XFx1NjAxODtcXHU2YTU0XFx1MDEwMGNsXFx1MGUyN1xcdTBlMmNyO1xcdWMwMDBcXHVkODM1XFx1ZGNhYWFzaFxcdTgwM2JcXHhkOFxcdTQwZDhpXFx1MDE2Y1xcdTBlMzdcXHUwZTNjZGVcXHU4MDNiXFx4ZDVcXHU0MGQ1ZXM7XFx1NmEzN21sXFx1ODAzYlxceGQ2XFx1NDBkNmVyXFx1MDEwMEJQXFx1MGU0YlxcdTBlNjBcXHUwMTAwYXJcXHUwZTUwXFx1MGU1M3I7XFx1NjAzZWFjXFx1MDEwMGVrXFx1MGU1YVxcdTBlNWM7XFx1NjNkZWV0O1xcdTYzYjRhcmVudGhlc2lzO1xcdTYzZGNcXHUwNDgwYWNmaGlsb3JzXFx1MGU3ZlxcdTBlODdcXHUwZThhXFx1MGU4ZlxcdTBlOTJcXHUwZTk0XFx1MGU5ZFxcdTBlYjBcXHUwZWZjcnRpYWxEO1xcdTYyMDJ5O1xcdTQ0MWZyO1xcdWMwMDBcXHVkODM1XFx1ZGQxM2k7XFx1NDNhNjtcXHU0M2EwdXNNaW51cztcXHU0MGIxXFx1MDEwMGlwXFx1MGVhMlxcdTBlYWRuY2FyZXBsYW5cXHhlNVxcdTA2OWRmO1xcdTYxMTlcXHUwMjAwO2Vpb1xcdTBlYjlcXHUwZWJhXFx1MGVlMFxcdTBlZTRcXHU2YWJiY2VkZXNcXHUwMjAwO0VTVFxcdTBlYzhcXHUwZWM5XFx1MGVjZlxcdTBlZGFcXHU2MjdhcXVhbDtcXHU2YWFmbGFudEVxdWFsO1xcdTYyN2NpbGRlO1xcdTYyN2VtZTtcXHU2MDMzXFx1MDEwMGRwXFx1MGVlOVxcdTBlZWV1Y3Q7XFx1NjIwZm9ydGlvblxcdTAxMDA7YVxcdTAyMjVcXHUwZWY5bDtcXHU2MjFkXFx1MDEwMGNpXFx1MGYwMVxcdTBmMDZyO1xcdWMwMDBcXHVkODM1XFx1ZGNhYjtcXHU0M2E4XFx1MDIwMFVmb3NcXHUwZjExXFx1MGYxNlxcdTBmMWJcXHUwZjFmT1RcXHU4MDNiXFxcIlxcdTQwMjJyO1xcdWMwMDBcXHVkODM1XFx1ZGQxNHBmO1xcdTYxMWFjcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYWNcXHUwNjAwQkVhY2VmaGlvcnN1XFx1MGYzZVxcdTBmNDNcXHUwZjQ3XFx1MGY2MFxcdTBmNzNcXHUwZmE3XFx1MGZhYVxcdTBmYWRcXHUxMDk2XFx1MTBhOVxcdTEwYjRcXHUxMGJlYXJyO1xcdTY5MTBHXFx1ODAzYlxceGFlXFx1NDBhZVxcdTAxODBjbnJcXHUwZjRlXFx1MGY1M1xcdTBmNTZ1dGU7XFx1NDE1NGc7XFx1NjdlYnJcXHUwMTAwO3RcXHUwZjVjXFx1MGY1ZFxcdTYxYTBsO1xcdTY5MTZcXHUwMTgwYWV5XFx1MGY2N1xcdTBmNmNcXHUwZjcxcm9uO1xcdTQxNThkaWw7XFx1NDE1NjtcXHU0NDIwXFx1MDEwMDt2XFx1MGY3OFxcdTBmNzlcXHU2MTFjZXJzZVxcdTAxMDBFVVxcdTBmODJcXHUwZjk5XFx1MDEwMGxxXFx1MGY4N1xcdTBmOGVlbWVudDtcXHU2MjBidWlsaWJyaXVtO1xcdTYxY2JwRXF1aWxpYnJpdW07XFx1Njk2ZnJcXHhiYlxcdTBmNzlvO1xcdTQzYTFnaHRcXHUwNDAwQUNERlRVVmFcXHUwZmMxXFx1MGZlYlxcdTBmZjNcXHUxMDIyXFx1MTAyOFxcdTEwNWJcXHUxMDg3XFx1MDNkOFxcdTAxMDBuclxcdTBmYzZcXHUwZmQyZ2xlQnJhY2tldDtcXHU2N2U5cm93XFx1MDE4MDtCTFxcdTBmZGNcXHUwZmRkXFx1MGZlMVxcdTYxOTJhcjtcXHU2MWU1ZWZ0QXJyb3c7XFx1NjFjNGVpbGluZztcXHU2MzA5b1xcdTAxZjVcXHUwZmY5XFwwXFx1MTAwNWJsZUJyYWNrZXQ7XFx1NjdlN25cXHUwMWQ0XFx1MTAwYVxcMFxcdTEwMTRlZVZlY3RvcjtcXHU2OTVkZWN0b3JcXHUwMTAwO0JcXHUxMDFkXFx1MTAxZVxcdTYxYzJhcjtcXHU2OTU1bG9vcjtcXHU2MzBiXFx1MDEwMGVyXFx1MTAyZFxcdTEwNDNlXFx1MDE4MDtBVlxcdTEwMzVcXHUxMDM2XFx1MTAzY1xcdTYyYTJycm93O1xcdTYxYTZlY3RvcjtcXHU2OTViaWFuZ2xlXFx1MDE4MDtCRVxcdTEwNTBcXHUxMDUxXFx1MTA1NVxcdTYyYjNhcjtcXHU2OWQwcXVhbDtcXHU2MmI1cFxcdTAxODBEVFZcXHUxMDYzXFx1MTA2ZVxcdTEwNzhvd25WZWN0b3I7XFx1Njk0ZmVlVmVjdG9yO1xcdTY5NWNlY3RvclxcdTAxMDA7QlxcdTEwODJcXHUxMDgzXFx1NjFiZWFyO1xcdTY5NTRlY3RvclxcdTAxMDA7QlxcdTEwOTFcXHUxMDkyXFx1NjFjMGFyO1xcdTY5NTNcXHUwMTAwcHVcXHUxMDliXFx1MTA5ZWY7XFx1NjExZG5kSW1wbGllcztcXHU2OTcwaWdodGFycm93O1xcdTYxZGJcXHUwMTAwY2hcXHUxMGI5XFx1MTBiY3I7XFx1NjExYjtcXHU2MWIxbGVEZWxheWVkO1xcdTY5ZjRcXHUwNjgwSE9hY2ZoaW1vcXN0dVxcdTEwZTRcXHUxMGYxXFx1MTBmN1xcdTEwZmRcXHUxMTE5XFx1MTExZVxcdTExNTFcXHUxMTU2XFx1MTE2MVxcdTExNjdcXHUxMWI1XFx1MTFiYlxcdTExYmZcXHUwMTAwQ2NcXHUxMGU5XFx1MTBlZUhjeTtcXHU0NDI5eTtcXHU0NDI4RlRjeTtcXHU0NDJjY3V0ZTtcXHU0MTVhXFx1MDI4MDthZWl5XFx1MTEwOFxcdTExMDlcXHUxMTBlXFx1MTExM1xcdTExMTdcXHU2YWJjcm9uO1xcdTQxNjBkaWw7XFx1NDE1ZXJjO1xcdTQxNWM7XFx1NDQyMXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDE2b3J0XFx1MDIwMERMUlVcXHUxMTJhXFx1MTEzNFxcdTExM2VcXHUxMTQ5b3duQXJyb3dcXHhiYlxcdTA0MWVlZnRBcnJvd1xceGJiXFx1MDg5YWlnaHRBcnJvd1xceGJiXFx1MGZkZHBBcnJvdztcXHU2MTkxZ21hO1xcdTQzYTNhbGxDaXJjbGU7XFx1NjIxOHBmO1xcdWMwMDBcXHVkODM1XFx1ZGQ0YVxcdTAyNzJcXHUxMTZkXFwwXFwwXFx1MTE3MHQ7XFx1NjIxYWFyZVxcdTAyMDA7SVNVXFx1MTE3YlxcdTExN2NcXHUxMTg5XFx1MTFhZlxcdTY1YTFudGVyc2VjdGlvbjtcXHU2MjkzdVxcdTAxMDBicFxcdTExOGZcXHUxMTllc2V0XFx1MDEwMDtFXFx1MTE5N1xcdTExOThcXHU2MjhmcXVhbDtcXHU2MjkxZXJzZXRcXHUwMTAwO0VcXHUxMWE4XFx1MTFhOVxcdTYyOTBxdWFsO1xcdTYyOTJuaW9uO1xcdTYyOTRjcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYWVhcjtcXHU2MmM2XFx1MDIwMGJjbXBcXHUxMWM4XFx1MTFkYlxcdTEyMDlcXHUxMjBiXFx1MDEwMDtzXFx1MTFjZFxcdTExY2VcXHU2MmQwZXRcXHUwMTAwO0VcXHUxMWNkXFx1MTFkNXF1YWw7XFx1NjI4NlxcdTAxMDBjaFxcdTExZTBcXHUxMjA1ZWVkc1xcdTAyMDA7RVNUXFx1MTFlZFxcdTExZWVcXHUxMWY0XFx1MTFmZlxcdTYyN2JxdWFsO1xcdTZhYjBsYW50RXF1YWw7XFx1NjI3ZGlsZGU7XFx1NjI3ZlRoXFx4ZTFcXHUwZjhjO1xcdTYyMTFcXHUwMTgwO2VzXFx1MTIxMlxcdTEyMTNcXHUxMjIzXFx1NjJkMXJzZXRcXHUwMTAwO0VcXHUxMjFjXFx1MTIxZFxcdTYyODNxdWFsO1xcdTYyODdldFxceGJiXFx1MTIxM1xcdTA1ODBIUlNhY2ZoaW9yc1xcdTEyM2VcXHUxMjQ0XFx1MTI0OVxcdTEyNTVcXHUxMjVlXFx1MTI3MVxcdTEyNzZcXHUxMjlmXFx1MTJjMlxcdTEyYzhcXHUxMmQxT1JOXFx1ODAzYlxceGRlXFx1NDBkZUFERTtcXHU2MTIyXFx1MDEwMEhjXFx1MTI0ZVxcdTEyNTJjeTtcXHU0NDBieTtcXHU0NDI2XFx1MDEwMGJ1XFx1MTI1YVxcdTEyNWM7XFx1NDAwOTtcXHU0M2E0XFx1MDE4MGFleVxcdTEyNjVcXHUxMjZhXFx1MTI2ZnJvbjtcXHU0MTY0ZGlsO1xcdTQxNjI7XFx1NDQyMnI7XFx1YzAwMFxcdWQ4MzVcXHVkZDE3XFx1MDEwMGVpXFx1MTI3YlxcdTEyODlcXHUwMWYyXFx1MTI4MFxcMFxcdTEyODdlZm9yZTtcXHU2MjM0YTtcXHU0Mzk4XFx1MDEwMGNuXFx1MTI4ZVxcdTEyOThrU3BhY2U7XFx1YzAwMFxcdTIwNWZcXHUyMDBhU3BhY2U7XFx1NjAwOWxkZVxcdTAyMDA7RUZUXFx1MTJhYlxcdTEyYWNcXHUxMmIyXFx1MTJiY1xcdTYyM2NxdWFsO1xcdTYyNDN1bGxFcXVhbDtcXHU2MjQ1aWxkZTtcXHU2MjQ4cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDRiaXBsZURvdDtcXHU2MGRiXFx1MDEwMGN0XFx1MTJkNlxcdTEyZGJyO1xcdWMwMDBcXHVkODM1XFx1ZGNhZnJvaztcXHU0MTY2XFx1MGFlMVxcdTEyZjdcXHUxMzBlXFx1MTMxYVxcdTEzMjZcXDBcXHUxMzJjXFx1MTMzMVxcMFxcMFxcMFxcMFxcMFxcdTEzMzhcXHUxMzNkXFx1MTM3N1xcdTEzODVcXDBcXHUxM2ZmXFx1MTQwNFxcdTE0MGFcXHUxNDEwXFx1MDEwMGNyXFx1MTJmYlxcdTEzMDF1dGVcXHU4MDNiXFx4ZGFcXHU0MGRhclxcdTAxMDA7b1xcdTEzMDdcXHUxMzA4XFx1NjE5ZmNpcjtcXHU2OTQ5clxcdTAxZTNcXHUxMzEzXFwwXFx1MTMxNnk7XFx1NDQwZXZlO1xcdTQxNmNcXHUwMTAwaXlcXHUxMzFlXFx1MTMyM3JjXFx1ODAzYlxceGRiXFx1NDBkYjtcXHU0NDIzYmxhYztcXHU0MTcwcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMThyYXZlXFx1ODAzYlxceGQ5XFx1NDBkOWFjcjtcXHU0MTZhXFx1MDEwMGRpXFx1MTM0MVxcdTEzNjllclxcdTAxMDBCUFxcdTEzNDhcXHUxMzVkXFx1MDEwMGFyXFx1MTM0ZFxcdTEzNTByO1xcdTQwNWZhY1xcdTAxMDBla1xcdTEzNTdcXHUxMzU5O1xcdTYzZGZldDtcXHU2M2I1YXJlbnRoZXNpcztcXHU2M2Rkb25cXHUwMTAwO1BcXHUxMzcwXFx1MTM3MVxcdTYyYzNsdXM7XFx1NjI4ZVxcdTAxMDBncFxcdTEzN2JcXHUxMzdmb247XFx1NDE3MmY7XFx1YzAwMFxcdWQ4MzVcXHVkZDRjXFx1MDQwMEFERVRhZHBzXFx1MTM5NVxcdTEzYWVcXHUxM2I4XFx1MTNjNFxcdTAzZThcXHUxM2QyXFx1MTNkN1xcdTEzZjNycm93XFx1MDE4MDtCRFxcdTExNTBcXHUxM2EwXFx1MTNhNGFyO1xcdTY5MTJvd25BcnJvdztcXHU2MWM1b3duQXJyb3c7XFx1NjE5NXF1aWxpYnJpdW07XFx1Njk2ZWVlXFx1MDEwMDtBXFx1MTNjYlxcdTEzY2NcXHU2MmE1cnJvdztcXHU2MWE1b3duXFx4ZTFcXHUwM2YzZXJcXHUwMTAwTFJcXHUxM2RlXFx1MTNlOGVmdEFycm93O1xcdTYxOTZpZ2h0QXJyb3c7XFx1NjE5N2lcXHUwMTAwO2xcXHUxM2Y5XFx1MTNmYVxcdTQzZDJvbjtcXHU0M2E1aW5nO1xcdTQxNmVjcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYjBpbGRlO1xcdTQxNjhtbFxcdTgwM2JcXHhkY1xcdTQwZGNcXHUwNDgwRGJjZGVmb3N2XFx1MTQyN1xcdTE0MmNcXHUxNDMwXFx1MTQzM1xcdTE0M2VcXHUxNDg1XFx1MTQ4YVxcdTE0OTBcXHUxNDk2YXNoO1xcdTYyYWJhcjtcXHU2YWVieTtcXHU0NDEyYXNoXFx1MDEwMDtsXFx1MTQzYlxcdTE0M2NcXHU2MmE5O1xcdTZhZTZcXHUwMTAwZXJcXHUxNDQzXFx1MTQ0NTtcXHU2MmMxXFx1MDE4MGJ0eVxcdTE0NGNcXHUxNDUwXFx1MTQ3YWFyO1xcdTYwMTZcXHUwMTAwO2lcXHUxNDRmXFx1MTQ1NWNhbFxcdTAyMDBCTFNUXFx1MTQ2MVxcdTE0NjVcXHUxNDZhXFx1MTQ3NGFyO1xcdTYyMjNpbmU7XFx1NDA3Y2VwYXJhdG9yO1xcdTY3NThpbGRlO1xcdTYyNDBUaGluU3BhY2U7XFx1NjAwYXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDE5cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDRkY3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2IxZGFzaDtcXHU2MmFhXFx1MDI4MGNlZm9zXFx1MTRhN1xcdTE0YWNcXHUxNGIxXFx1MTRiNlxcdTE0YmNpcmM7XFx1NDE3NGRnZTtcXHU2MmMwcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMWFwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNGVjcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYjJcXHUwMjAwZmlvc1xcdTE0Y2JcXHUxNGQwXFx1MTRkMlxcdTE0ZDhyO1xcdWMwMDBcXHVkODM1XFx1ZGQxYjtcXHU0MzllcGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDRmY3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2IzXFx1MDQ4MEFJVWFjZm9zdVxcdTE0ZjFcXHUxNGY1XFx1MTRmOVxcdTE0ZmRcXHUxNTA0XFx1MTUwZlxcdTE1MTRcXHUxNTFhXFx1MTUyMGN5O1xcdTQ0MmZjeTtcXHU0NDA3Y3k7XFx1NDQyZWN1dGVcXHU4MDNiXFx4ZGRcXHU0MGRkXFx1MDEwMGl5XFx1MTUwOVxcdTE1MGRyYztcXHU0MTc2O1xcdTQ0MmJyO1xcdWMwMDBcXHVkODM1XFx1ZGQxY3BmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1MGNyO1xcdWMwMDBcXHVkODM1XFx1ZGNiNG1sO1xcdTQxNzhcXHUwNDAwSGFjZGVmb3NcXHUxNTM1XFx1MTUzOVxcdTE1M2ZcXHUxNTRiXFx1MTU0ZlxcdTE1NWRcXHUxNTYwXFx1MTU2NGN5O1xcdTQ0MTZjdXRlO1xcdTQxNzlcXHUwMTAwYXlcXHUxNTQ0XFx1MTU0OXJvbjtcXHU0MTdkO1xcdTQ0MTdvdDtcXHU0MTdiXFx1MDFmMlxcdTE1NTRcXDBcXHUxNTVib1dpZHRcXHhlOFxcdTBhZDlhO1xcdTQzOTZyO1xcdTYxMjhwZjtcXHU2MTI0Y3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2I1XFx1MGJlMVxcdTE1ODNcXHUxNThhXFx1MTU5MFxcMFxcdTE1YjBcXHUxNWI2XFx1MTViZlxcMFxcMFxcMFxcMFxcdTE1YzZcXHUxNWRiXFx1MTVlYlxcdTE2NWZcXHUxNjZkXFwwXFx1MTY5NVxcdTE2OWJcXHUxNmIyXFx1MTZiOVxcMFxcdTE2YmVjdXRlXFx1ODAzYlxceGUxXFx1NDBlMXJldmU7XFx1NDEwM1xcdTAzMDA7RWRpdXlcXHUxNTljXFx1MTU5ZFxcdTE1YTFcXHUxNWEzXFx1MTVhOFxcdTE1YWRcXHU2MjNlO1xcdWMwMDBcXHUyMjNlXFx1MDMzMztcXHU2MjNmcmNcXHU4MDNiXFx4ZTJcXHU0MGUydGVcXHU4MGJiXFx4YjRcXHUwMzA2O1xcdTQ0MzBsaWdcXHU4MDNiXFx4ZTZcXHU0MGU2XFx1MDEwMDtyXFx4YjJcXHUxNWJhO1xcdWMwMDBcXHVkODM1XFx1ZGQxZXJhdmVcXHU4MDNiXFx4ZTBcXHU0MGUwXFx1MDEwMGVwXFx1MTVjYVxcdTE1ZDZcXHUwMTAwZnBcXHUxNWNmXFx1MTVkNHN5bTtcXHU2MTM1XFx4ZThcXHUxNWQzaGE7XFx1NDNiMVxcdTAxMDBhcFxcdTE1ZGZjXFx1MDEwMGNsXFx1MTVlNFxcdTE1ZTdyO1xcdTQxMDFnO1xcdTZhM2ZcXHUwMjY0XFx1MTVmMFxcMFxcMFxcdTE2MGFcXHUwMjgwO2Fkc3ZcXHUxNWZhXFx1MTVmYlxcdTE1ZmZcXHUxNjAxXFx1MTYwN1xcdTYyMjduZDtcXHU2YTU1O1xcdTZhNWNsb3BlO1xcdTZhNTg7XFx1NmE1YVxcdTAzODA7ZWxtcnN6XFx1MTYxOFxcdTE2MTlcXHUxNjFiXFx1MTYxZVxcdTE2M2ZcXHUxNjRmXFx1MTY1OVxcdTYyMjA7XFx1NjlhNGVcXHhiYlxcdTE2MTlzZFxcdTAxMDA7YVxcdTE2MjVcXHUxNjI2XFx1NjIyMVxcdTA0NjFcXHUxNjMwXFx1MTYzMlxcdTE2MzRcXHUxNjM2XFx1MTYzOFxcdTE2M2FcXHUxNjNjXFx1MTYzZTtcXHU2OWE4O1xcdTY5YTk7XFx1NjlhYTtcXHU2OWFiO1xcdTY5YWM7XFx1NjlhZDtcXHU2OWFlO1xcdTY5YWZ0XFx1MDEwMDt2XFx1MTY0NVxcdTE2NDZcXHU2MjFmYlxcdTAxMDA7ZFxcdTE2NGNcXHUxNjRkXFx1NjJiZTtcXHU2OTlkXFx1MDEwMHB0XFx1MTY1NFxcdTE2NTdoO1xcdTYyMjJcXHhiYlxceGI5YXJyO1xcdTYzN2NcXHUwMTAwZ3BcXHUxNjYzXFx1MTY2N29uO1xcdTQxMDVmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1MlxcdTAzODA7RWFlaW9wXFx1MTJjMVxcdTE2N2JcXHUxNjdkXFx1MTY4MlxcdTE2ODRcXHUxNjg3XFx1MTY4YTtcXHU2YTcwY2lyO1xcdTZhNmY7XFx1NjI0YWQ7XFx1NjI0YnM7XFx1NDAyN3JveFxcdTAxMDA7ZVxcdTEyYzFcXHUxNjkyXFx4ZjFcXHUxNjgzaW5nXFx1ODAzYlxceGU1XFx1NDBlNVxcdTAxODBjdHlcXHUxNmExXFx1MTZhNlxcdTE2YThyO1xcdWMwMDBcXHVkODM1XFx1ZGNiNjtcXHU0MDJhbXBcXHUwMTAwO2VcXHUxMmMxXFx1MTZhZlxceGYxXFx1MDI4OGlsZGVcXHU4MDNiXFx4ZTNcXHU0MGUzbWxcXHU4MDNiXFx4ZTRcXHU0MGU0XFx1MDEwMGNpXFx1MTZjMlxcdTE2YzhvbmluXFx4ZjRcXHUwMjcybnQ7XFx1NmExMVxcdTA4MDBOYWJjZGVmaWtsbm9wcnN1XFx1MTZlZFxcdTE2ZjFcXHUxNzMwXFx1MTczY1xcdTE3NDNcXHUxNzQ4XFx1MTc3OFxcdTE3N2RcXHUxN2UwXFx1MTdlNlxcdTE4MzlcXHUxODUwXFx1MTcwZFxcdTE5M2RcXHUxOTQ4XFx1MTk3MG90O1xcdTZhZWRcXHUwMTAwY3JcXHUxNmY2XFx1MTcxZWtcXHUwMjAwY2Vwc1xcdTE3MDBcXHUxNzA1XFx1MTcwZFxcdTE3MTNvbmc7XFx1NjI0Y3BzaWxvbjtcXHU0M2Y2cmltZTtcXHU2MDM1aW1cXHUwMTAwO2VcXHUxNzFhXFx1MTcxYlxcdTYyM2RxO1xcdTYyY2RcXHUwMTc2XFx1MTcyMlxcdTE3MjZlZTtcXHU2MmJkZWRcXHUwMTAwO2dcXHUxNzJjXFx1MTcyZFxcdTYzMDVlXFx4YmJcXHUxNzJkcmtcXHUwMTAwO3RcXHUxMzVjXFx1MTczN2JyaztcXHU2M2I2XFx1MDEwMG95XFx1MTcwMVxcdTE3NDE7XFx1NDQzMXF1bztcXHU2MDFlXFx1MDI4MGNtcHJ0XFx1MTc1M1xcdTE3NWJcXHUxNzYxXFx1MTc2NFxcdTE3NjhhdXNcXHUwMTAwO2VcXHUwMTBhXFx1MDEwOXB0eXY7XFx1NjliMHNcXHhlOVxcdTE3MGNub1xceGY1XFx1MDExM1xcdTAxODBhaHdcXHUxNzZmXFx1MTc3MVxcdTE3NzM7XFx1NDNiMjtcXHU2MTM2ZWVuO1xcdTYyNmNyO1xcdWMwMDBcXHVkODM1XFx1ZGQxZmdcXHUwMzgwY29zdHV2d1xcdTE3OGRcXHUxNzlkXFx1MTdiM1xcdTE3YzFcXHUxN2Q1XFx1MTdkYlxcdTE3ZGVcXHUwMTgwYWl1XFx1MTc5NFxcdTE3OTZcXHUxNzlhXFx4ZjBcXHUwNzYwcmM7XFx1NjVlZnBcXHhiYlxcdTEzNzFcXHUwMTgwZHB0XFx1MTdhNFxcdTE3YThcXHUxN2Fkb3Q7XFx1NmEwMGx1cztcXHU2YTAxaW1lcztcXHU2YTAyXFx1MDI3MVxcdTE3YjlcXDBcXDBcXHUxN2JlY3VwO1xcdTZhMDZhcjtcXHU2NjA1cmlhbmdsZVxcdTAxMDBkdVxcdTE3Y2RcXHUxN2Qyb3duO1xcdTY1YmRwO1xcdTY1YjNwbHVzO1xcdTZhMDRlXFx4ZTVcXHUxNDQ0XFx4ZTVcXHUxNGFkYXJvdztcXHU2OTBkXFx1MDE4MGFrb1xcdTE3ZWRcXHUxODI2XFx1MTgzNVxcdTAxMDBjblxcdTE3ZjJcXHUxODIza1xcdTAxODBsc3RcXHUxN2ZhXFx1MDVhYlxcdTE4MDJvemVuZ2U7XFx1NjllYnJpYW5nbGVcXHUwMjAwO2RsclxcdTE4MTJcXHUxODEzXFx1MTgxOFxcdTE4MWRcXHU2NWI0b3duO1xcdTY1YmVlZnQ7XFx1NjVjMmlnaHQ7XFx1NjViOGs7XFx1NjQyM1xcdTAxYjFcXHUxODJiXFwwXFx1MTgzM1xcdTAxYjJcXHUxODJmXFwwXFx1MTgzMTtcXHU2NTkyO1xcdTY1OTE0O1xcdTY1OTNjaztcXHU2NTg4XFx1MDEwMGVvXFx1MTgzZVxcdTE4NGRcXHUwMTAwO3FcXHUxODQzXFx1MTg0NlxcdWMwMDA9XFx1MjBlNXVpdjtcXHVjMDAwXFx1MjI2MVxcdTIwZTV0O1xcdTYzMTBcXHUwMjAwcHR3eFxcdTE4NTlcXHUxODVlXFx1MTg2N1xcdTE4NmNmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1M1xcdTAxMDA7dFxcdTEzY2JcXHUxODYzb21cXHhiYlxcdTEzY2N0aWU7XFx1NjJjOFxcdTA2MDBESFVWYmRobXB0dXZcXHUxODg1XFx1MTg5NlxcdTE4YWFcXHUxOGJiXFx1MThkN1xcdTE4ZGJcXHUxOGVjXFx1MThmZlxcdTE5MDVcXHUxOTBhXFx1MTkxMFxcdTE5MjFcXHUwMjAwTFJsclxcdTE4OGVcXHUxODkwXFx1MTg5MlxcdTE4OTQ7XFx1NjU1NztcXHU2NTU0O1xcdTY1NTY7XFx1NjU1M1xcdTAyODA7RFVkdVxcdTE4YTFcXHUxOGEyXFx1MThhNFxcdTE4YTZcXHUxOGE4XFx1NjU1MDtcXHU2NTY2O1xcdTY1Njk7XFx1NjU2NDtcXHU2NTY3XFx1MDIwMExSbHJcXHUxOGIzXFx1MThiNVxcdTE4YjdcXHUxOGI5O1xcdTY1NWQ7XFx1NjU1YTtcXHU2NTVjO1xcdTY1NTlcXHUwMzgwO0hMUmhsclxcdTE4Y2FcXHUxOGNiXFx1MThjZFxcdTE4Y2ZcXHUxOGQxXFx1MThkM1xcdTE4ZDVcXHU2NTUxO1xcdTY1NmM7XFx1NjU2MztcXHU2NTYwO1xcdTY1NmI7XFx1NjU2MjtcXHU2NTVmb3g7XFx1NjljOVxcdTAyMDBMUmxyXFx1MThlNFxcdTE4ZTZcXHUxOGU4XFx1MThlYTtcXHU2NTU1O1xcdTY1NTI7XFx1NjUxMDtcXHU2NTBjXFx1MDI4MDtEVWR1XFx1MDZiZFxcdTE4ZjdcXHUxOGY5XFx1MThmYlxcdTE4ZmQ7XFx1NjU2NTtcXHU2NTY4O1xcdTY1MmM7XFx1NjUzNGludXM7XFx1NjI5Zmx1cztcXHU2MjllaW1lcztcXHU2MmEwXFx1MDIwMExSbHJcXHUxOTE5XFx1MTkxYlxcdTE5MWRcXHUxOTFmO1xcdTY1NWI7XFx1NjU1ODtcXHU2NTE4O1xcdTY1MTRcXHUwMzgwO0hMUmhsclxcdTE5MzBcXHUxOTMxXFx1MTkzM1xcdTE5MzVcXHUxOTM3XFx1MTkzOVxcdTE5M2JcXHU2NTAyO1xcdTY1NmE7XFx1NjU2MTtcXHU2NTVlO1xcdTY1M2M7XFx1NjUyNDtcXHU2NTFjXFx1MDEwMGV2XFx1MDEyM1xcdTE5NDJiYXJcXHU4MDNiXFx4YTZcXHU0MGE2XFx1MDIwMGNlaW9cXHUxOTUxXFx1MTk1NlxcdTE5NWFcXHUxOTYwcjtcXHVjMDAwXFx1ZDgzNVxcdWRjYjdtaTtcXHU2MDRmbVxcdTAxMDA7ZVxcdTE3MWFcXHUxNzFjbFxcdTAxODA7YmhcXHUxOTY4XFx1MTk2OVxcdTE5NmJcXHU0MDVjO1xcdTY5YzVzdWI7XFx1NjdjOFxcdTAxNmNcXHUxOTc0XFx1MTk3ZWxcXHUwMTAwO2VcXHUxOTc5XFx1MTk3YVxcdTYwMjJ0XFx4YmJcXHUxOTdhcFxcdTAxODA7RWVcXHUwMTJmXFx1MTk4NVxcdTE5ODc7XFx1NmFhZVxcdTAxMDA7cVxcdTA2ZGNcXHUwNmRiXFx1MGNlMVxcdTE5YTdcXDBcXHUxOWU4XFx1MWExMVxcdTFhMTVcXHUxYTMyXFwwXFx1MWEzN1xcdTFhNTBcXDBcXDBcXHUxYWI0XFwwXFwwXFx1MWFjMVxcMFxcMFxcdTFiMjFcXHUxYjJlXFx1MWI0ZFxcdTFiNTJcXDBcXHUxYmZkXFwwXFx1MWMwY1xcdTAxODBjcHJcXHUxOWFkXFx1MTliMlxcdTE5ZGR1dGU7XFx1NDEwN1xcdTAzMDA7YWJjZHNcXHUxOWJmXFx1MTljMFxcdTE5YzRcXHUxOWNhXFx1MTlkNVxcdTE5ZDlcXHU2MjI5bmQ7XFx1NmE0NHJjdXA7XFx1NmE0OVxcdTAxMDBhdVxcdTE5Y2ZcXHUxOWQycDtcXHU2YTRicDtcXHU2YTQ3b3Q7XFx1NmE0MDtcXHVjMDAwXFx1MjIyOVxcdWZlMDBcXHUwMTAwZW9cXHUxOWUyXFx1MTllNXQ7XFx1NjA0MVxceGVlXFx1MDY5M1xcdTAyMDBhZWl1XFx1MTlmMFxcdTE5ZmJcXHUxYTAxXFx1MWEwNVxcdTAxZjBcXHUxOWY1XFwwXFx1MTlmOHM7XFx1NmE0ZG9uO1xcdTQxMGRkaWxcXHU4MDNiXFx4ZTdcXHU0MGU3cmM7XFx1NDEwOXBzXFx1MDEwMDtzXFx1MWEwY1xcdTFhMGRcXHU2YTRjbTtcXHU2YTUwb3Q7XFx1NDEwYlxcdTAxODBkbW5cXHUxYTFiXFx1MWEyMFxcdTFhMjZpbFxcdTgwYmJcXHhiOFxcdTAxYWRwdHl2O1xcdTY5YjJ0XFx1ODEwMFxceGEyO2VcXHUxYTJkXFx1MWEyZVxcdTQwYTJyXFx4ZTRcXHUwMWIycjtcXHVjMDAwXFx1ZDgzNVxcdWRkMjBcXHUwMTgwY2VpXFx1MWEzZFxcdTFhNDBcXHUxYTRkeTtcXHU0NDQ3Y2tcXHUwMTAwO21cXHUxYTQ3XFx1MWE0OFxcdTY3MTNhcmtcXHhiYlxcdTFhNDg7XFx1NDNjN3JcXHUwMzgwO0VjZWZtc1xcdTFhNWZcXHUxYTYwXFx1MWE2MlxcdTFhNmJcXHUxYWE0XFx1MWFhYVxcdTFhYWVcXHU2NWNiO1xcdTY5YzNcXHUwMTgwO2VsXFx1MWE2OVxcdTFhNmFcXHUxYTZkXFx1NDJjNnE7XFx1NjI1N2VcXHUwMjYxXFx1MWE3NFxcMFxcMFxcdTFhODhycm93XFx1MDEwMGxyXFx1MWE3Y1xcdTFhODFlZnQ7XFx1NjFiYWlnaHQ7XFx1NjFiYlxcdTAyODBSU2FjZFxcdTFhOTJcXHUxYTk0XFx1MWE5NlxcdTFhOWFcXHUxYTlmXFx4YmJcXHUwZjQ3O1xcdTY0YzhzdDtcXHU2MjliaXJjO1xcdTYyOWFhc2g7XFx1NjI5ZG5pbnQ7XFx1NmExMGlkO1xcdTZhZWZjaXI7XFx1NjljMnVic1xcdTAxMDA7dVxcdTFhYmJcXHUxYWJjXFx1NjY2M2l0XFx4YmJcXHUxYWJjXFx1MDJlY1xcdTFhYzdcXHUxYWQ0XFx1MWFmYVxcMFxcdTFiMGFvblxcdTAxMDA7ZVxcdTFhY2RcXHUxYWNlXFx1NDAzYVxcdTAxMDA7cVxceGM3XFx4YzZcXHUwMjZkXFx1MWFkOVxcMFxcMFxcdTFhZTJhXFx1MDEwMDt0XFx1MWFkZVxcdTFhZGZcXHU0MDJjO1xcdTQwNDBcXHUwMTgwO2ZsXFx1MWFlOFxcdTFhZTlcXHUxYWViXFx1NjIwMVxceGVlXFx1MTE2MGVcXHUwMTAwbXhcXHUxYWYxXFx1MWFmNmVudFxceGJiXFx1MWFlOWVcXHhmM1xcdTAyNGRcXHUwMWU3XFx1MWFmZVxcMFxcdTFiMDdcXHUwMTAwO2RcXHUxMmJiXFx1MWIwMm90O1xcdTZhNmRuXFx4ZjRcXHUwMjQ2XFx1MDE4MGZyeVxcdTFiMTBcXHUxYjE0XFx1MWIxNztcXHVjMDAwXFx1ZDgzNVxcdWRkNTRvXFx4ZTRcXHUwMjU0XFx1ODEwMFxceGE5O3NcXHUwMTU1XFx1MWIxZHI7XFx1NjExN1xcdTAxMDBhb1xcdTFiMjVcXHUxYjI5cnI7XFx1NjFiNXNzO1xcdTY3MTdcXHUwMTAwY3VcXHUxYjMyXFx1MWIzN3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2I4XFx1MDEwMGJwXFx1MWIzY1xcdTFiNDRcXHUwMTAwO2VcXHUxYjQxXFx1MWI0MlxcdTZhY2Y7XFx1NmFkMVxcdTAxMDA7ZVxcdTFiNDlcXHUxYjRhXFx1NmFkMDtcXHU2YWQyZG90O1xcdTYyZWZcXHUwMzgwZGVscHJ2d1xcdTFiNjBcXHUxYjZjXFx1MWI3N1xcdTFiODJcXHUxYmFjXFx1MWJkNFxcdTFiZjlhcnJcXHUwMTAwbHJcXHUxYjY4XFx1MWI2YTtcXHU2OTM4O1xcdTY5MzVcXHUwMjcwXFx1MWI3MlxcMFxcMFxcdTFiNzVyO1xcdTYyZGVjO1xcdTYyZGZhcnJcXHUwMTAwO3BcXHUxYjdmXFx1MWI4MFxcdTYxYjY7XFx1NjkzZFxcdTAzMDA7YmNkb3NcXHUxYjhmXFx1MWI5MFxcdTFiOTZcXHUxYmExXFx1MWJhNVxcdTFiYThcXHU2MjJhcmNhcDtcXHU2YTQ4XFx1MDEwMGF1XFx1MWI5YlxcdTFiOWVwO1xcdTZhNDZwO1xcdTZhNGFvdDtcXHU2MjhkcjtcXHU2YTQ1O1xcdWMwMDBcXHUyMjJhXFx1ZmUwMFxcdTAyMDBhbHJ2XFx1MWJiNVxcdTFiYmZcXHUxYmRlXFx1MWJlM3JyXFx1MDEwMDttXFx1MWJiY1xcdTFiYmRcXHU2MWI3O1xcdTY5M2N5XFx1MDE4MGV2d1xcdTFiYzdcXHUxYmQ0XFx1MWJkOHFcXHUwMjcwXFx1MWJjZVxcMFxcMFxcdTFiZDJyZVxceGUzXFx1MWI3M3VcXHhlM1xcdTFiNzVlZTtcXHU2MmNlZWRnZTtcXHU2MmNmZW5cXHU4MDNiXFx4YTRcXHU0MGE0ZWFycm93XFx1MDEwMGxyXFx1MWJlZVxcdTFiZjNlZnRcXHhiYlxcdTFiODBpZ2h0XFx4YmJcXHUxYmJkZVxceGU0XFx1MWJkZFxcdTAxMDBjaVxcdTFjMDFcXHUxYzA3b25pblxceGY0XFx1MDFmN250O1xcdTYyMzFsY3R5O1xcdTYzMmRcXHUwOTgwQUhhYmNkZWZoaWpsb3JzdHV3elxcdTFjMzhcXHUxYzNiXFx1MWMzZlxcdTFjNWRcXHUxYzY5XFx1MWM3NVxcdTFjOGFcXHUxYzllXFx1MWNhY1xcdTFjYjdcXHUxY2ZiXFx1MWNmZlxcdTFkMGRcXHUxZDdiXFx1MWQ5MVxcdTFkYWJcXHUxZGJiXFx1MWRjNlxcdTFkY2RyXFx4ZjJcXHUwMzgxYXI7XFx1Njk2NVxcdTAyMDBnbHJzXFx1MWM0OFxcdTFjNGRcXHUxYzUyXFx1MWM1NGdlcjtcXHU2MDIwZXRoO1xcdTYxMzhcXHhmMlxcdTExMzNoXFx1MDEwMDt2XFx1MWM1YVxcdTFjNWJcXHU2MDEwXFx4YmJcXHUwOTBhXFx1MDE2YlxcdTFjNjFcXHUxYzY3YXJvdztcXHU2OTBmYVxceGUzXFx1MDMxNVxcdTAxMDBheVxcdTFjNmVcXHUxYzczcm9uO1xcdTQxMGY7XFx1NDQzNFxcdTAxODA7YW9cXHUwMzMyXFx1MWM3Y1xcdTFjODRcXHUwMTAwZ3JcXHUwMmJmXFx1MWM4MXI7XFx1NjFjYXRzZXE7XFx1NmE3N1xcdTAxODBnbG1cXHUxYzkxXFx1MWM5NFxcdTFjOThcXHU4MDNiXFx4YjBcXHU0MGIwdGE7XFx1NDNiNHB0eXY7XFx1NjliMVxcdTAxMDBpclxcdTFjYTNcXHUxY2E4c2h0O1xcdTY5N2Y7XFx1YzAwMFxcdWQ4MzVcXHVkZDIxYXJcXHUwMTAwbHJcXHUxY2IzXFx1MWNiNVxceGJiXFx1MDhkY1xceGJiXFx1MTAxZVxcdTAyODBhZWdzdlxcdTFjYzJcXHUwMzc4XFx1MWNkNlxcdTFjZGNcXHUxY2UwbVxcdTAxODA7b3NcXHUwMzI2XFx1MWNjYVxcdTFjZDRuZFxcdTAxMDA7c1xcdTAzMjZcXHUxY2QxdWl0O1xcdTY2NjZhbW1hO1xcdTQzZGRpbjtcXHU2MmYyXFx1MDE4MDtpb1xcdTFjZTdcXHUxY2U4XFx1MWNmOFxcdTQwZjdkZVxcdTgxMDBcXHhmNztvXFx1MWNlN1xcdTFjZjBudGltZXM7XFx1NjJjN25cXHhmOFxcdTFjZjdjeTtcXHU0NDUyY1xcdTAyNmZcXHUxZDA2XFwwXFwwXFx1MWQwYXJuO1xcdTYzMWVvcDtcXHU2MzBkXFx1MDI4MGxwdHV3XFx1MWQxOFxcdTFkMWRcXHUxZDIyXFx1MWQ0OVxcdTFkNTVsYXI7XFx1NDAyNGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDU1XFx1MDI4MDtlbXBzXFx1MDMwYlxcdTFkMmRcXHUxZDM3XFx1MWQzZFxcdTFkNDJxXFx1MDEwMDtkXFx1MDM1MlxcdTFkMzNvdDtcXHU2MjUxaW51cztcXHU2MjM4bHVzO1xcdTYyMTRxdWFyZTtcXHU2MmExYmxlYmFyd2VkZ1xceGU1XFx4ZmFuXFx1MDE4MGFkaFxcdTExMmVcXHUxZDVkXFx1MWQ2N293bmFycm93XFx4ZjNcXHUxYzgzYXJwb29uXFx1MDEwMGxyXFx1MWQ3MlxcdTFkNzZlZlxceGY0XFx1MWNiNGlnaFxceGY0XFx1MWNiNlxcdTAxNjJcXHUxZDdmXFx1MWQ4NWthcm9cXHhmN1xcdTBmNDJcXHUwMjZmXFx1MWQ4YVxcMFxcMFxcdTFkOGVybjtcXHU2MzFmb3A7XFx1NjMwY1xcdTAxODBjb3RcXHUxZDk4XFx1MWRhM1xcdTFkYTZcXHUwMTAwcnlcXHUxZDlkXFx1MWRhMTtcXHVjMDAwXFx1ZDgzNVxcdWRjYjk7XFx1NDQ1NWw7XFx1NjlmNnJvaztcXHU0MTExXFx1MDEwMGRyXFx1MWRiMFxcdTFkYjRvdDtcXHU2MmYxaVxcdTAxMDA7ZlxcdTFkYmFcXHUxODE2XFx1NjViZlxcdTAxMDBhaFxcdTFkYzBcXHUxZGMzclxceGYyXFx1MDQyOWFcXHhmMlxcdTBmYTZhbmdsZTtcXHU2OWE2XFx1MDEwMGNpXFx1MWRkMlxcdTFkZDV5O1xcdTQ0NWZncmFycjtcXHU2N2ZmXFx1MDkwMERhY2RlZmdsbW5vcHFyc3R1eFxcdTFlMDFcXHUxZTA5XFx1MWUxOVxcdTFlMzhcXHUwNTc4XFx1MWUzY1xcdTFlNDlcXHUxZTYxXFx1MWU3ZVxcdTFlYTVcXHUxZWFmXFx1MWViZFxcdTFlZTFcXHUxZjJhXFx1MWYzN1xcdTFmNDRcXHUxZjRlXFx1MWY1YVxcdTAxMDBEb1xcdTFlMDZcXHUxZDM0b1xceGY0XFx1MWM4OVxcdTAxMDBjc1xcdTFlMGVcXHUxZTE0dXRlXFx1ODAzYlxceGU5XFx1NDBlOXRlcjtcXHU2YTZlXFx1MDIwMGFpb3lcXHUxZTIyXFx1MWUyN1xcdTFlMzFcXHUxZTM2cm9uO1xcdTQxMWJyXFx1MDEwMDtjXFx1MWUyZFxcdTFlMmVcXHU2MjU2XFx1ODAzYlxceGVhXFx1NDBlYWxvbjtcXHU2MjU1O1xcdTQ0NGRvdDtcXHU0MTE3XFx1MDEwMERyXFx1MWU0MVxcdTFlNDVvdDtcXHU2MjUyO1xcdWMwMDBcXHVkODM1XFx1ZGQyMlxcdTAxODA7cnNcXHUxZTUwXFx1MWU1MVxcdTFlNTdcXHU2YTlhYXZlXFx1ODAzYlxceGU4XFx1NDBlOFxcdTAxMDA7ZFxcdTFlNWNcXHUxZTVkXFx1NmE5Nm90O1xcdTZhOThcXHUwMjAwO2lsc1xcdTFlNmFcXHUxZTZiXFx1MWU3MlxcdTFlNzRcXHU2YTk5bnRlcnM7XFx1NjNlNztcXHU2MTEzXFx1MDEwMDtkXFx1MWU3OVxcdTFlN2FcXHU2YTk1b3Q7XFx1NmE5N1xcdTAxODBhcHNcXHUxZTg1XFx1MWU4OVxcdTFlOTdjcjtcXHU0MTEzdHlcXHUwMTgwO3N2XFx1MWU5MlxcdTFlOTNcXHUxZTk1XFx1NjIwNWV0XFx4YmJcXHUxZTkzcFxcdTAxMDAxO1xcdTFlOWRcXHUxZWE0XFx1MDEzM1xcdTFlYTFcXHUxZWEzO1xcdTYwMDQ7XFx1NjAwNVxcdTYwMDNcXHUwMTAwZ3NcXHUxZWFhXFx1MWVhYztcXHU0MTRicDtcXHU2MDAyXFx1MDEwMGdwXFx1MWViNFxcdTFlYjhvbjtcXHU0MTE5ZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNTZcXHUwMTgwYWxzXFx1MWVjNFxcdTFlY2VcXHUxZWQyclxcdTAxMDA7c1xcdTFlY2FcXHUxZWNiXFx1NjJkNWw7XFx1NjllM3VzO1xcdTZhNzFpXFx1MDE4MDtsdlxcdTFlZGFcXHUxZWRiXFx1MWVkZlxcdTQzYjVvblxceGJiXFx1MWVkYjtcXHU0M2Y1XFx1MDIwMGNzdXZcXHUxZWVhXFx1MWVmM1xcdTFmMGJcXHUxZjIzXFx1MDEwMGlvXFx1MWVlZlxcdTFlMzFyY1xceGJiXFx1MWUyZVxcdTAyNjlcXHUxZWY5XFwwXFwwXFx1MWVmYlxceGVkXFx1MDU0OGFudFxcdTAxMDBnbFxcdTFmMDJcXHUxZjA2dHJcXHhiYlxcdTFlNWRlc3NcXHhiYlxcdTFlN2FcXHUwMTgwYWVpXFx1MWYxMlxcdTFmMTZcXHUxZjFhbHM7XFx1NDAzZHN0O1xcdTYyNWZ2XFx1MDEwMDtEXFx1MDIzNVxcdTFmMjBEO1xcdTZhNzhwYXJzbDtcXHU2OWU1XFx1MDEwMERhXFx1MWYyZlxcdTFmMzNvdDtcXHU2MjUzcnI7XFx1Njk3MVxcdTAxODBjZGlcXHUxZjNlXFx1MWY0MVxcdTFlZjhyO1xcdTYxMmZvXFx4ZjRcXHUwMzUyXFx1MDEwMGFoXFx1MWY0OVxcdTFmNGI7XFx1NDNiN1xcdTgwM2JcXHhmMFxcdTQwZjBcXHUwMTAwbXJcXHUxZjUzXFx1MWY1N2xcXHU4MDNiXFx4ZWJcXHU0MGVibztcXHU2MGFjXFx1MDE4MGNpcFxcdTFmNjFcXHUxZjY0XFx1MWY2N2w7XFx1NDAyMXNcXHhmNFxcdTA1NmVcXHUwMTAwZW9cXHUxZjZjXFx1MWY3NGN0YXRpb1xceGVlXFx1MDU1OW5lbnRpYWxcXHhlNVxcdTA1NzlcXHUwOWUxXFx1MWY5MlxcMFxcdTFmOWVcXDBcXHUxZmExXFx1MWZhN1xcMFxcMFxcdTFmYzZcXHUxZmNjXFwwXFx1MWZkM1xcMFxcdTFmZTZcXHUxZmVhXFx1MjAwMFxcMFxcdTIwMDhcXHUyMDVhbGxpbmdkb3RzZVxceGYxXFx1MWU0NHk7XFx1NDQ0NG1hbGU7XFx1NjY0MFxcdTAxODBpbHJcXHUxZmFkXFx1MWZiM1xcdTFmYzFsaWc7XFx1ODAwMFxcdWZiMDNcXHUwMjY5XFx1MWZiOVxcMFxcMFxcdTFmYmRnO1xcdTgwMDBcXHVmYjAwaWc7XFx1ODAwMFxcdWZiMDQ7XFx1YzAwMFxcdWQ4MzVcXHVkZDIzbGlnO1xcdTgwMDBcXHVmYjAxbGlnO1xcdWMwMDBmalxcdTAxODBhbHRcXHUxZmQ5XFx1MWZkY1xcdTFmZTF0O1xcdTY2NmRpZztcXHU4MDAwXFx1ZmIwMm5zO1xcdTY1YjFvZjtcXHU0MTkyXFx1MDFmMFxcdTFmZWVcXDBcXHUxZmYzZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNTdcXHUwMTAwYWtcXHUwNWJmXFx1MWZmN1xcdTAxMDA7dlxcdTFmZmNcXHUxZmZkXFx1NjJkNDtcXHU2YWQ5YXJ0aW50O1xcdTZhMGRcXHUwMTAwYW9cXHUyMDBjXFx1MjA1NVxcdTAxMDBjc1xcdTIwMTFcXHUyMDUyXFx1MDNiMVxcdTIwMWFcXHUyMDMwXFx1MjAzOFxcdTIwNDVcXHUyMDQ4XFwwXFx1MjA1MFxcdTAzYjJcXHUyMDIyXFx1MjAyNVxcdTIwMjdcXHUyMDJhXFx1MjAyY1xcMFxcdTIwMmVcXHU4MDNiXFx4YmRcXHU0MGJkO1xcdTYxNTNcXHU4MDNiXFx4YmNcXHU0MGJjO1xcdTYxNTU7XFx1NjE1OTtcXHU2MTViXFx1MDFiM1xcdTIwMzRcXDBcXHUyMDM2O1xcdTYxNTQ7XFx1NjE1NlxcdTAyYjRcXHUyMDNlXFx1MjA0MVxcMFxcMFxcdTIwNDNcXHU4MDNiXFx4YmVcXHU0MGJlO1xcdTYxNTc7XFx1NjE1YzU7XFx1NjE1OFxcdTAxYjZcXHUyMDRjXFwwXFx1MjA0ZTtcXHU2MTVhO1xcdTYxNWQ4O1xcdTYxNWVsO1xcdTYwNDR3bjtcXHU2MzIyY3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2JiXFx1MDg4MEVhYmNkZWZnaWpsbm9yc3R2XFx1MjA4MlxcdTIwODlcXHUyMDlmXFx1MjBhNVxcdTIwYjBcXHUyMGI0XFx1MjBmMFxcdTIwZjVcXHUyMGZhXFx1MjBmZlxcdTIxMDNcXHUyMTEyXFx1MjEzOFxcdTAzMTdcXHUyMTNlXFx1MjE1MlxcdTIxOWVcXHUwMTAwO2xcXHUwNjRkXFx1MjA4NztcXHU2YThjXFx1MDE4MGNtcFxcdTIwOTBcXHUyMDk1XFx1MjA5ZHV0ZTtcXHU0MWY1bWFcXHUwMTAwO2RcXHUyMDljXFx1MWNkYVxcdTQzYjM7XFx1NmE4NnJldmU7XFx1NDExZlxcdTAxMDBpeVxcdTIwYWFcXHUyMGFlcmM7XFx1NDExZDtcXHU0NDMzb3Q7XFx1NDEyMVxcdTAyMDA7bHFzXFx1MDYzZVxcdTA2NDJcXHUyMGJkXFx1MjBjOVxcdTAxODA7cXNcXHUwNjNlXFx1MDY0Y1xcdTIwYzRsYW5cXHhmNFxcdTA2NjVcXHUwMjAwO2NkbFxcdTA2NjVcXHUyMGQyXFx1MjBkNVxcdTIwZTVjO1xcdTZhYTlvdFxcdTAxMDA7b1xcdTIwZGNcXHUyMGRkXFx1NmE4MFxcdTAxMDA7bFxcdTIwZTJcXHUyMGUzXFx1NmE4MjtcXHU2YTg0XFx1MDEwMDtlXFx1MjBlYVxcdTIwZWRcXHVjMDAwXFx1MjJkYlxcdWZlMDBzO1xcdTZhOTRyO1xcdWMwMDBcXHVkODM1XFx1ZGQyNFxcdTAxMDA7Z1xcdTA2NzNcXHUwNjFibWVsO1xcdTYxMzdjeTtcXHU0NDUzXFx1MDIwMDtFYWpcXHUwNjVhXFx1MjEwY1xcdTIxMGVcXHUyMTEwO1xcdTZhOTI7XFx1NmFhNTtcXHU2YWE0XFx1MDIwMEVhZXNcXHUyMTFiXFx1MjExZFxcdTIxMjlcXHUyMTM0O1xcdTYyNjlwXFx1MDEwMDtwXFx1MjEyM1xcdTIxMjRcXHU2YThhcm94XFx4YmJcXHUyMTI0XFx1MDEwMDtxXFx1MjEyZVxcdTIxMmZcXHU2YTg4XFx1MDEwMDtxXFx1MjEyZVxcdTIxMWJpbTtcXHU2MmU3cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDU4XFx1MDEwMGNpXFx1MjE0M1xcdTIxNDZyO1xcdTYxMGFtXFx1MDE4MDtlbFxcdTA2NmJcXHUyMTRlXFx1MjE1MDtcXHU2YThlO1xcdTZhOTBcXHU4MzAwPjtjZGxxclxcdTA1ZWVcXHUyMTYwXFx1MjE2YVxcdTIxNmVcXHUyMTczXFx1MjE3OVxcdTAxMDBjaVxcdTIxNjVcXHUyMTY3O1xcdTZhYTdyO1xcdTZhN2FvdDtcXHU2MmQ3UGFyO1xcdTY5OTV1ZXN0O1xcdTZhN2NcXHUwMjgwYWRlbHNcXHUyMTg0XFx1MjE2YVxcdTIxOTBcXHUwNjU2XFx1MjE5YlxcdTAxZjBcXHUyMTg5XFwwXFx1MjE4ZXByb1xceGY4XFx1MjA5ZXI7XFx1Njk3OHFcXHUwMTAwbHFcXHUwNjNmXFx1MjE5Nmxlc1xceGYzXFx1MjA4OGlcXHhlZFxcdTA2NmJcXHUwMTAwZW5cXHUyMWEzXFx1MjFhZHJ0bmVxcTtcXHVjMDAwXFx1MjI2OVxcdWZlMDBcXHhjNVxcdTIxYWFcXHUwNTAwQWFiY2Vma29zeVxcdTIxYzRcXHUyMWM3XFx1MjFmMVxcdTIxZjVcXHUyMWZhXFx1MjIxOFxcdTIyMWRcXHUyMjJmXFx1MjI2OFxcdTIyN2RyXFx4ZjJcXHUwM2EwXFx1MDIwMGlsbXJcXHUyMWQwXFx1MjFkNFxcdTIxZDdcXHUyMWRicnNcXHhmMFxcdTE0ODRmXFx4YmJcXHUyMDI0aWxcXHhmNFxcdTA2YTlcXHUwMTAwZHJcXHUyMWUwXFx1MjFlNGN5O1xcdTQ0NGFcXHUwMTgwO2N3XFx1MDhmNFxcdTIxZWJcXHUyMWVmaXI7XFx1Njk0ODtcXHU2MWFkYXI7XFx1NjEwZmlyYztcXHU0MTI1XFx1MDE4MGFsclxcdTIyMDFcXHUyMjBlXFx1MjIxM3J0c1xcdTAxMDA7dVxcdTIyMDlcXHUyMjBhXFx1NjY2NWl0XFx4YmJcXHUyMjBhbGlwO1xcdTYwMjZjb247XFx1NjJiOXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDI1c1xcdTAxMDBld1xcdTIyMjNcXHUyMjI5YXJvdztcXHU2OTI1YXJvdztcXHU2OTI2XFx1MDI4MGFtb3ByXFx1MjIzYVxcdTIyM2VcXHUyMjQzXFx1MjI1ZVxcdTIyNjNycjtcXHU2MWZmdGh0O1xcdTYyM2JrXFx1MDEwMGxyXFx1MjI0OVxcdTIyNTNlZnRhcnJvdztcXHU2MWE5aWdodGFycm93O1xcdTYxYWFmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1OWJhcjtcXHU2MDE1XFx1MDE4MGNsdFxcdTIyNmZcXHUyMjc0XFx1MjI3OHI7XFx1YzAwMFxcdWQ4MzVcXHVkY2JkYXNcXHhlOFxcdTIxZjRyb2s7XFx1NDEyN1xcdTAxMDBicFxcdTIyODJcXHUyMjg3dWxsO1xcdTYwNDNoZW5cXHhiYlxcdTFjNWJcXHUwYWUxXFx1MjJhM1xcMFxcdTIyYWFcXDBcXHUyMmI4XFx1MjJjNVxcdTIyY2VcXDBcXHUyMmQ1XFx1MjJmM1xcMFxcMFxcdTIyZjhcXHUyMzIyXFx1MjM2N1xcdTIzNjJcXHUyMzdmXFwwXFx1MjM4NlxcdTIzYWFcXHUyM2I0Y3V0ZVxcdTgwM2JcXHhlZFxcdTQwZWRcXHUwMTgwO2l5XFx1MDc3MVxcdTIyYjBcXHUyMmI1cmNcXHU4MDNiXFx4ZWVcXHU0MGVlO1xcdTQ0MzhcXHUwMTAwY3hcXHUyMmJjXFx1MjJiZnk7XFx1NDQzNWNsXFx1ODAzYlxceGExXFx1NDBhMVxcdTAxMDBmclxcdTAzOWZcXHUyMmM5O1xcdWMwMDBcXHVkODM1XFx1ZGQyNnJhdmVcXHU4MDNiXFx4ZWNcXHU0MGVjXFx1MDIwMDtpbm9cXHUwNzNlXFx1MjJkZFxcdTIyZTlcXHUyMmVlXFx1MDEwMGluXFx1MjJlMlxcdTIyZTZudDtcXHU2YTBjdDtcXHU2MjJkZmluO1xcdTY5ZGN0YTtcXHU2MTI5bGlnO1xcdTQxMzNcXHUwMTgwYW9wXFx1MjJmZVxcdTIzMWFcXHUyMzFkXFx1MDE4MGNndFxcdTIzMDVcXHUyMzA4XFx1MjMxN3I7XFx1NDEyYlxcdTAxODBlbHBcXHUwNzFmXFx1MjMwZlxcdTIzMTNpblxceGU1XFx1MDc4ZWFyXFx4ZjRcXHUwNzIwaDtcXHU0MTMxZjtcXHU2MmI3ZWQ7XFx1NDFiNVxcdTAyODA7Y2ZvdFxcdTA0ZjRcXHUyMzJjXFx1MjMzMVxcdTIzM2RcXHUyMzQxYXJlO1xcdTYxMDVpblxcdTAxMDA7dFxcdTIzMzhcXHUyMzM5XFx1NjIxZWllO1xcdTY5ZGRkb1xceGY0XFx1MjMxOVxcdTAyODA7Y2VscFxcdTA3NTdcXHUyMzRjXFx1MjM1MFxcdTIzNWJcXHUyMzYxYWw7XFx1NjJiYVxcdTAxMDBnclxcdTIzNTVcXHUyMzU5ZXJcXHhmM1xcdTE1NjNcXHhlM1xcdTIzNGRhcmhrO1xcdTZhMTdyb2Q7XFx1NmEzY1xcdTAyMDBjZ3B0XFx1MjM2ZlxcdTIzNzJcXHUyMzc2XFx1MjM3Ynk7XFx1NDQ1MW9uO1xcdTQxMmZmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1YWE7XFx1NDNiOXVlc3RcXHU4MDNiXFx4YmZcXHU0MGJmXFx1MDEwMGNpXFx1MjM4YVxcdTIzOGZyO1xcdWMwMDBcXHVkODM1XFx1ZGNiZW5cXHUwMjgwO0Vkc3ZcXHUwNGY0XFx1MjM5YlxcdTIzOWRcXHUyM2ExXFx1MDRmMztcXHU2MmY5b3Q7XFx1NjJmNVxcdTAxMDA7dlxcdTIzYTZcXHUyM2E3XFx1NjJmNDtcXHU2MmYzXFx1MDEwMDtpXFx1MDc3N1xcdTIzYWVsZGU7XFx1NDEyOVxcdTAxZWJcXHUyM2I4XFwwXFx1MjNiY2N5O1xcdTQ0NTZsXFx1ODAzYlxceGVmXFx1NDBlZlxcdTAzMDBjZm1vc3VcXHUyM2NjXFx1MjNkN1xcdTIzZGNcXHUyM2UxXFx1MjNlN1xcdTIzZjVcXHUwMTAwaXlcXHUyM2QxXFx1MjNkNXJjO1xcdTQxMzU7XFx1NDQzOXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDI3YXRoO1xcdTQyMzdwZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNWJcXHUwMWUzXFx1MjNlY1xcMFxcdTIzZjFyO1xcdWMwMDBcXHVkODM1XFx1ZGNiZnJjeTtcXHU0NDU4a2N5O1xcdTQ0NTRcXHUwNDAwYWNmZ2hqb3NcXHUyNDBiXFx1MjQxNlxcdTI0MjJcXHUyNDI3XFx1MjQyZFxcdTI0MzFcXHUyNDM1XFx1MjQzYnBwYVxcdTAxMDA7dlxcdTI0MTNcXHUyNDE0XFx1NDNiYTtcXHU0M2YwXFx1MDEwMGV5XFx1MjQxYlxcdTI0MjBkaWw7XFx1NDEzNztcXHU0NDNhcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMjhyZWVuO1xcdTQxMzhjeTtcXHU0NDQ1Y3k7XFx1NDQ1Y3BmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1Y2NyO1xcdWMwMDBcXHVkODM1XFx1ZGNjMFxcdTBiODBBQkVIYWJjZGVmZ2hqbG1ub3Byc3R1dlxcdTI0NzBcXHUyNDgxXFx1MjQ4NlxcdTI0OGRcXHUyNDkxXFx1MjUwZVxcdTI1M2RcXHUyNTVhXFx1MjU4MFxcdTI2NGVcXHUyNjVlXFx1MjY2NVxcdTI2NzlcXHUyNjdkXFx1MjY5YVxcdTI2YjJcXHUyNmQ4XFx1Mjc1ZFxcdTI3NjhcXHUyNzhiXFx1MjdjMFxcdTI4MDFcXHUyODEyXFx1MDE4MGFydFxcdTI0NzdcXHUyNDdhXFx1MjQ3Y3JcXHhmMlxcdTA5YzZcXHhmMlxcdTAzOTVhaWw7XFx1NjkxYmFycjtcXHU2OTBlXFx1MDEwMDtnXFx1MDk5NFxcdTI0OGI7XFx1NmE4YmFyO1xcdTY5NjJcXHUwOTYzXFx1MjRhNVxcMFxcdTI0YWFcXDBcXHUyNGIxXFwwXFwwXFwwXFwwXFwwXFx1MjRiNVxcdTI0YmFcXDBcXHUyNGM2XFx1MjRjOFxcdTI0Y2RcXDBcXHUyNGY5dXRlO1xcdTQxM2FtcHR5djtcXHU2OWI0cmFcXHhlZVxcdTA4NGNiZGE7XFx1NDNiYmdcXHUwMTgwO2RsXFx1MDg4ZVxcdTI0YzFcXHUyNGMzO1xcdTY5OTFcXHhlNVxcdTA4OGU7XFx1NmE4NXVvXFx1ODAzYlxceGFiXFx1NDBhYnJcXHUwNDAwO2JmaGxwc3RcXHUwODk5XFx1MjRkZVxcdTI0ZTZcXHUyNGU5XFx1MjRlYlxcdTI0ZWVcXHUyNGYxXFx1MjRmNVxcdTAxMDA7ZlxcdTA4OWRcXHUyNGUzcztcXHU2OTFmcztcXHU2OTFkXFx4ZWJcXHUyMjUycDtcXHU2MWFibDtcXHU2OTM5aW07XFx1Njk3M2w7XFx1NjFhMlxcdTAxODA7YWVcXHUyNGZmXFx1MjUwMFxcdTI1MDRcXHU2YWFiaWw7XFx1NjkxOVxcdTAxMDA7c1xcdTI1MDlcXHUyNTBhXFx1NmFhZDtcXHVjMDAwXFx1MmFhZFxcdWZlMDBcXHUwMTgwYWJyXFx1MjUxNVxcdTI1MTlcXHUyNTFkcnI7XFx1NjkwY3JrO1xcdTY3NzJcXHUwMTAwYWtcXHUyNTIyXFx1MjUyY2NcXHUwMTAwZWtcXHUyNTI4XFx1MjUyYTtcXHU0MDdiO1xcdTQwNWJcXHUwMTAwZXNcXHUyNTMxXFx1MjUzMztcXHU2OThibFxcdTAxMDBkdVxcdTI1MzlcXHUyNTNiO1xcdTY5OGY7XFx1Njk4ZFxcdTAyMDBhZXV5XFx1MjU0NlxcdTI1NGJcXHUyNTU2XFx1MjU1OHJvbjtcXHU0MTNlXFx1MDEwMGRpXFx1MjU1MFxcdTI1NTRpbDtcXHU0MTNjXFx4ZWNcXHUwOGIwXFx4ZTJcXHUyNTI5O1xcdTQ0M2JcXHUwMjAwY3Fyc1xcdTI1NjNcXHUyNTY2XFx1MjU2ZFxcdTI1N2RhO1xcdTY5MzZ1b1xcdTAxMDA7clxcdTBlMTlcXHUxNzQ2XFx1MDEwMGR1XFx1MjU3MlxcdTI1NzdoYXI7XFx1Njk2N3NoYXI7XFx1Njk0Ymg7XFx1NjFiMlxcdTAyODA7Zmdxc1xcdTI1OGJcXHUyNThjXFx1MDk4OVxcdTI1ZjNcXHUyNWZmXFx1NjI2NHRcXHUwMjgwYWhscnRcXHUyNTk4XFx1MjVhNFxcdTI1YjdcXHUyNWMyXFx1MjVlOHJyb3dcXHUwMTAwO3RcXHUwODk5XFx1MjVhMWFcXHhlOVxcdTI0ZjZhcnBvb25cXHUwMTAwZHVcXHUyNWFmXFx1MjViNG93blxceGJiXFx1MDQ1YXBcXHhiYlxcdTA5NjZlZnRhcnJvd3M7XFx1NjFjN2lnaHRcXHUwMTgwYWhzXFx1MjVjZFxcdTI1ZDZcXHUyNWRlcnJvd1xcdTAxMDA7c1xcdTA4ZjRcXHUwOGE3YXJwb29uXFx4ZjNcXHUwZjk4cXVpZ2Fycm9cXHhmN1xcdTIxZjBocmVldGltZXM7XFx1NjJjYlxcdTAxODA7cXNcXHUyNThiXFx1MDk5M1xcdTI1ZmFsYW5cXHhmNFxcdTA5YWNcXHUwMjgwO2NkZ3NcXHUwOWFjXFx1MjYwYVxcdTI2MGRcXHUyNjFkXFx1MjYyOGM7XFx1NmFhOG90XFx1MDEwMDtvXFx1MjYxNFxcdTI2MTVcXHU2YTdmXFx1MDEwMDtyXFx1MjYxYVxcdTI2MWJcXHU2YTgxO1xcdTZhODNcXHUwMTAwO2VcXHUyNjIyXFx1MjYyNVxcdWMwMDBcXHUyMmRhXFx1ZmUwMHM7XFx1NmE5M1xcdTAyODBhZGVnc1xcdTI2MzNcXHUyNjM5XFx1MjYzZFxcdTI2NDlcXHUyNjRicHByb1xceGY4XFx1MjRjNm90O1xcdTYyZDZxXFx1MDEwMGdxXFx1MjY0M1xcdTI2NDVcXHhmNFxcdTA5ODlndFxceGYyXFx1MjQ4Y1xceGY0XFx1MDk5YmlcXHhlZFxcdTA5YjJcXHUwMTgwaWxyXFx1MjY1NVxcdTA4ZTFcXHUyNjVhc2h0O1xcdTY5N2M7XFx1YzAwMFxcdWQ4MzVcXHVkZDI5XFx1MDEwMDtFXFx1MDk5Y1xcdTI2NjM7XFx1NmE5MVxcdTAxNjFcXHUyNjY5XFx1MjY3NnJcXHUwMTAwZHVcXHUyNWIyXFx1MjY2ZVxcdTAxMDA7bFxcdTA5NjVcXHUyNjczO1xcdTY5NmFsaztcXHU2NTg0Y3k7XFx1NDQ1OVxcdTAyODA7YWNodFxcdTBhNDhcXHUyNjg4XFx1MjY4YlxcdTI2OTFcXHUyNjk2clxceGYyXFx1MjVjMW9ybmVcXHhmMlxcdTFkMDhhcmQ7XFx1Njk2YnJpO1xcdTY1ZmFcXHUwMTAwaW9cXHUyNjlmXFx1MjZhNGRvdDtcXHU0MTQwdXN0XFx1MDEwMDthXFx1MjZhY1xcdTI2YWRcXHU2M2IwY2hlXFx4YmJcXHUyNmFkXFx1MDIwMEVhZXNcXHUyNmJiXFx1MjZiZFxcdTI2YzlcXHUyNmQ0O1xcdTYyNjhwXFx1MDEwMDtwXFx1MjZjM1xcdTI2YzRcXHU2YTg5cm94XFx4YmJcXHUyNmM0XFx1MDEwMDtxXFx1MjZjZVxcdTI2Y2ZcXHU2YTg3XFx1MDEwMDtxXFx1MjZjZVxcdTI2YmJpbTtcXHU2MmU2XFx1MDQwMGFibm9wdHd6XFx1MjZlOVxcdTI2ZjRcXHUyNmY3XFx1MjcxYVxcdTI3MmZcXHUyNzQxXFx1Mjc0N1xcdTI3NTBcXHUwMTAwbnJcXHUyNmVlXFx1MjZmMWc7XFx1NjdlY3I7XFx1NjFmZHJcXHhlYlxcdTA4YzFnXFx1MDE4MGxtclxcdTI2ZmZcXHUyNzBkXFx1MjcxNGVmdFxcdTAxMDBhclxcdTA5ZTZcXHUyNzA3aWdodFxceGUxXFx1MDlmMmFwc3RvO1xcdTY3ZmNpZ2h0XFx4ZTFcXHUwOWZkcGFycm93XFx1MDEwMGxyXFx1MjcyNVxcdTI3MjllZlxceGY0XFx1MjRlZGlnaHQ7XFx1NjFhY1xcdTAxODBhZmxcXHUyNzM2XFx1MjczOVxcdTI3M2RyO1xcdTY5ODU7XFx1YzAwMFxcdWQ4MzVcXHVkZDVkdXM7XFx1NmEyZGltZXM7XFx1NmEzNFxcdTAxNjFcXHUyNzRiXFx1Mjc0ZnN0O1xcdTYyMTdcXHhlMVxcdTEzNGVcXHUwMTgwO2VmXFx1Mjc1N1xcdTI3NThcXHUxODAwXFx1NjVjYW5nZVxceGJiXFx1Mjc1OGFyXFx1MDEwMDtsXFx1Mjc2NFxcdTI3NjVcXHU0MDI4dDtcXHU2OTkzXFx1MDI4MGFjaG10XFx1Mjc3M1xcdTI3NzZcXHUyNzdjXFx1Mjc4NVxcdTI3ODdyXFx4ZjJcXHUwOGE4b3JuZVxceGYyXFx1MWQ4Y2FyXFx1MDEwMDtkXFx1MGY5OFxcdTI3ODM7XFx1Njk2ZDtcXHU2MDBlcmk7XFx1NjJiZlxcdTAzMDBhY2hpcXRcXHUyNzk4XFx1Mjc5ZFxcdTBhNDBcXHUyN2EyXFx1MjdhZVxcdTI3YmJxdW87XFx1NjAzOXI7XFx1YzAwMFxcdWQ4MzVcXHVkY2MxbVxcdTAxODA7ZWdcXHUwOWIyXFx1MjdhYVxcdTI3YWM7XFx1NmE4ZDtcXHU2YThmXFx1MDEwMGJ1XFx1MjUyYVxcdTI3YjNvXFx1MDEwMDtyXFx1MGUxZlxcdTI3Yjk7XFx1NjAxYXJvaztcXHU0MTQyXFx1ODQwMDw7Y2RoaWxxclxcdTA4MmJcXHUyN2QyXFx1MjYzOVxcdTI3ZGNcXHUyN2UwXFx1MjdlNVxcdTI3ZWFcXHUyN2YwXFx1MDEwMGNpXFx1MjdkN1xcdTI3ZDk7XFx1NmFhNnI7XFx1NmE3OXJlXFx4ZTVcXHUyNWYybWVzO1xcdTYyYzlhcnI7XFx1Njk3NnVlc3Q7XFx1NmE3YlxcdTAxMDBQaVxcdTI3ZjVcXHUyN2Y5YXI7XFx1Njk5NlxcdTAxODA7ZWZcXHUyODAwXFx1MDkyZFxcdTE4MWJcXHU2NWMzclxcdTAxMDBkdVxcdTI4MDdcXHUyODBkc2hhcjtcXHU2OTRhaGFyO1xcdTY5NjZcXHUwMTAwZW5cXHUyODE3XFx1MjgyMXJ0bmVxcTtcXHVjMDAwXFx1MjI2OFxcdWZlMDBcXHhjNVxcdTI4MWVcXHUwNzAwRGFjZGVmaGlsbm9wc3VcXHUyODQwXFx1Mjg0NVxcdTI4ODJcXHUyODhlXFx1Mjg5M1xcdTI4YTBcXHUyOGE1XFx1MjhhOFxcdTI4ZGFcXHUyOGUyXFx1MjhlNFxcdTBhODNcXHUyOGYzXFx1MjkwMkRvdDtcXHU2MjNhXFx1MDIwMGNscHJcXHUyODRlXFx1Mjg1MlxcdTI4NjNcXHUyODdkclxcdTgwM2JcXHhhZlxcdTQwYWZcXHUwMTAwZXRcXHUyODU3XFx1Mjg1OTtcXHU2NjQyXFx1MDEwMDtlXFx1Mjg1ZVxcdTI4NWZcXHU2NzIwc2VcXHhiYlxcdTI4NWZcXHUwMTAwO3NcXHUxMDNiXFx1Mjg2OHRvXFx1MDIwMDtkbHVcXHUxMDNiXFx1Mjg3M1xcdTI4NzdcXHUyODdib3dcXHhlZVxcdTA0OGNlZlxceGY0XFx1MDkwZlxceGYwXFx1MTNkMWtlcjtcXHU2NWFlXFx1MDEwMG95XFx1Mjg4N1xcdTI4OGNtbWE7XFx1NmEyOTtcXHU0NDNjYXNoO1xcdTYwMTRhc3VyZWRhbmdsZVxceGJiXFx1MTYyNnI7XFx1YzAwMFxcdWQ4MzVcXHVkZDJhbztcXHU2MTI3XFx1MDE4MGNkblxcdTI4YWZcXHUyOGI0XFx1MjhjOXJvXFx1ODAzYlxceGI1XFx1NDBiNVxcdTAyMDA7YWNkXFx1MTQ2NFxcdTI4YmRcXHUyOGMwXFx1MjhjNHNcXHhmNFxcdTE2YTdpcjtcXHU2YWYwb3RcXHU4MGJiXFx4YjdcXHUwMWI1dXNcXHUwMTgwO2JkXFx1MjhkMlxcdTE5MDNcXHUyOGQzXFx1NjIxMlxcdTAxMDA7dVxcdTFkM2NcXHUyOGQ4O1xcdTZhMmFcXHUwMTYzXFx1MjhkZVxcdTI4ZTFwO1xcdTZhZGJcXHhmMlxcdTIyMTJcXHhmMFxcdTBhODFcXHUwMTAwZHBcXHUyOGU5XFx1MjhlZWVscztcXHU2MmE3ZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNWVcXHUwMTAwY3RcXHUyOGY4XFx1MjhmZHI7XFx1YzAwMFxcdWQ4MzVcXHVkY2MycG9zXFx4YmJcXHUxNTlkXFx1MDE4MDtsbVxcdTI5MDlcXHUyOTBhXFx1MjkwZFxcdTQzYmN0aW1hcDtcXHU2MmI4XFx1MGMwMEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2d1xcdTI5NDJcXHUyOTUzXFx1Mjk3ZVxcdTI5ODlcXHUyOTk4XFx1MjlkYVxcdTI5ZTlcXHUyYTE1XFx1MmExYVxcdTJhNThcXHUyYTVkXFx1MmE4M1xcdTJhOTVcXHUyYWE0XFx1MmFhOFxcdTJiMDRcXHUyYjA3XFx1MmI0NFxcdTJiN2ZcXHUyYmFlXFx1MmMzNFxcdTJjNjdcXHUyYzdjXFx1MmNlOVxcdTAxMDBndFxcdTI5NDdcXHUyOTRiO1xcdWMwMDBcXHUyMmQ5XFx1MDMzOFxcdTAxMDA7dlxcdTI5NTBcXHUwYmNmXFx1YzAwMFxcdTIyNmJcXHUyMGQyXFx1MDE4MGVsdFxcdTI5NWFcXHUyOTcyXFx1Mjk3NmZ0XFx1MDEwMGFyXFx1Mjk2MVxcdTI5Njdycm93O1xcdTYxY2RpZ2h0YXJyb3c7XFx1NjFjZTtcXHVjMDAwXFx1MjJkOFxcdTAzMzhcXHUwMTAwO3ZcXHUyOTdiXFx1MGM0N1xcdWMwMDBcXHUyMjZhXFx1MjBkMmlnaHRhcnJvdztcXHU2MWNmXFx1MDEwMERkXFx1Mjk4ZVxcdTI5OTNhc2g7XFx1NjJhZmFzaDtcXHU2MmFlXFx1MDI4MGJjbnB0XFx1MjlhM1xcdTI5YTdcXHUyOWFjXFx1MjliMVxcdTI5Y2NsYVxceGJiXFx1MDJkZXV0ZTtcXHU0MTQ0ZztcXHVjMDAwXFx1MjIyMFxcdTIwZDJcXHUwMjgwO0Vpb3BcXHUwZDg0XFx1MjliY1xcdTI5YzBcXHUyOWM1XFx1MjljODtcXHVjMDAwXFx1MmE3MFxcdTAzMzhkO1xcdWMwMDBcXHUyMjRiXFx1MDMzOHM7XFx1NDE0OXJvXFx4ZjhcXHUwZDg0dXJcXHUwMTAwO2FcXHUyOWQzXFx1MjlkNFxcdTY2NmVsXFx1MDEwMDtzXFx1MjlkM1xcdTBiMzhcXHUwMWYzXFx1MjlkZlxcMFxcdTI5ZTNwXFx1ODBiYlxceGEwXFx1MGIzN21wXFx1MDEwMDtlXFx1MGJmOVxcdTBjMDBcXHUwMjgwYWVvdXlcXHUyOWY0XFx1MjlmZVxcdTJhMDNcXHUyYTEwXFx1MmExM1xcdTAxZjBcXHUyOWY5XFwwXFx1MjlmYjtcXHU2YTQzb247XFx1NDE0OGRpbDtcXHU0MTQ2bmdcXHUwMTAwO2RcXHUwZDdlXFx1MmEwYW90O1xcdWMwMDBcXHUyYTZkXFx1MDMzOHA7XFx1NmE0MjtcXHU0NDNkYXNoO1xcdTYwMTNcXHUwMzgwO0FhZHFzeFxcdTBiOTJcXHUyYTI5XFx1MmEyZFxcdTJhM2JcXHUyYTQxXFx1MmE0NVxcdTJhNTBycjtcXHU2MWQ3clxcdTAxMDBoclxcdTJhMzNcXHUyYTM2aztcXHU2OTI0XFx1MDEwMDtvXFx1MTNmMlxcdTEzZjBvdDtcXHVjMDAwXFx1MjI1MFxcdTAzMzh1aVxceGY2XFx1MGI2M1xcdTAxMDBlaVxcdTJhNGFcXHUyYTRlYXI7XFx1NjkyOFxceGVkXFx1MGI5OGlzdFxcdTAxMDA7c1xcdTBiYTBcXHUwYjlmcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMmJcXHUwMjAwRWVzdFxcdTBiYzVcXHUyYTY2XFx1MmE3OVxcdTJhN2NcXHUwMTgwO3FzXFx1MGJiY1xcdTJhNmRcXHUwYmUxXFx1MDE4MDtxc1xcdTBiYmNcXHUwYmM1XFx1MmE3NGxhblxceGY0XFx1MGJlMmlcXHhlZFxcdTBiZWFcXHUwMTAwO3JcXHUwYmI2XFx1MmE4MVxceGJiXFx1MGJiN1xcdTAxODBBYXBcXHUyYThhXFx1MmE4ZFxcdTJhOTFyXFx4ZjJcXHUyOTcxcnI7XFx1NjFhZWFyO1xcdTZhZjJcXHUwMTgwO3N2XFx1MGY4ZFxcdTJhOWNcXHUwZjhjXFx1MDEwMDtkXFx1MmFhMVxcdTJhYTJcXHU2MmZjO1xcdTYyZmFjeTtcXHU0NDVhXFx1MDM4MEFFYWRlc3RcXHUyYWI3XFx1MmFiYVxcdTJhYmVcXHUyYWMyXFx1MmFjNVxcdTJhZjZcXHUyYWY5clxceGYyXFx1Mjk2NjtcXHVjMDAwXFx1MjI2NlxcdTAzMzhycjtcXHU2MTlhcjtcXHU2MDI1XFx1MDIwMDtmcXNcXHUwYzNiXFx1MmFjZVxcdTJhZTNcXHUyYWVmdFxcdTAxMDBhclxcdTJhZDRcXHUyYWQ5cnJvXFx4ZjdcXHUyYWMxaWdodGFycm9cXHhmN1xcdTJhOTBcXHUwMTgwO3FzXFx1MGMzYlxcdTJhYmFcXHUyYWVhbGFuXFx4ZjRcXHUwYzU1XFx1MDEwMDtzXFx1MGM1NVxcdTJhZjRcXHhiYlxcdTBjMzZpXFx4ZWRcXHUwYzVkXFx1MDEwMDtyXFx1MGMzNVxcdTJhZmVpXFx1MDEwMDtlXFx1MGMxYVxcdTBjMjVpXFx4ZTRcXHUwZDkwXFx1MDEwMHB0XFx1MmIwY1xcdTJiMTFmO1xcdWMwMDBcXHVkODM1XFx1ZGQ1ZlxcdTgxODBcXHhhYztpblxcdTJiMTlcXHUyYjFhXFx1MmIzNlxcdTQwYWNuXFx1MDIwMDtFZHZcXHUwYjg5XFx1MmIyNFxcdTJiMjhcXHUyYjJlO1xcdWMwMDBcXHUyMmY5XFx1MDMzOG90O1xcdWMwMDBcXHUyMmY1XFx1MDMzOFxcdTAxZTFcXHUwYjg5XFx1MmIzM1xcdTJiMzU7XFx1NjJmNztcXHU2MmY2aVxcdTAxMDA7dlxcdTBjYjhcXHUyYjNjXFx1MDFlMVxcdTBjYjhcXHUyYjQxXFx1MmI0MztcXHU2MmZlO1xcdTYyZmRcXHUwMTgwYW9yXFx1MmI0YlxcdTJiNjNcXHUyYjY5clxcdTAyMDA7YXN0XFx1MGI3YlxcdTJiNTVcXHUyYjVhXFx1MmI1ZmxsZVxceGVjXFx1MGI3Ymw7XFx1YzAwMFxcdTJhZmRcXHUyMGU1O1xcdWMwMDBcXHUyMjAyXFx1MDMzOGxpbnQ7XFx1NmExNFxcdTAxODA7Y2VcXHUwYzkyXFx1MmI3MFxcdTJiNzN1XFx4ZTVcXHUwY2E1XFx1MDEwMDtjXFx1MGM5OFxcdTJiNzhcXHUwMTAwO2VcXHUwYzkyXFx1MmI3ZFxceGYxXFx1MGM5OFxcdTAyMDBBYWl0XFx1MmI4OFxcdTJiOGJcXHUyYjlkXFx1MmJhN3JcXHhmMlxcdTI5ODhyclxcdTAxODA7Y3dcXHUyYjk0XFx1MmI5NVxcdTJiOTlcXHU2MTliO1xcdWMwMDBcXHUyOTMzXFx1MDMzODtcXHVjMDAwXFx1MjE5ZFxcdTAzMzhnaHRhcnJvd1xceGJiXFx1MmI5NXJpXFx1MDEwMDtlXFx1MGNjYlxcdTBjZDZcXHUwMzgwY2hpbXBxdVxcdTJiYmRcXHUyYmNkXFx1MmJkOVxcdTJiMDRcXHUwYjc4XFx1MmJlNFxcdTJiZWZcXHUwMjAwO2NlclxcdTBkMzJcXHUyYmM2XFx1MGQzN1xcdTJiYzl1XFx4ZTVcXHUwZDQ1O1xcdWMwMDBcXHVkODM1XFx1ZGNjM29ydFxcdTAyNmRcXHUyYjA1XFwwXFwwXFx1MmJkNmFyXFx4ZTFcXHUyYjU2bVxcdTAxMDA7ZVxcdTBkNmVcXHUyYmRmXFx1MDEwMDtxXFx1MGQ3NFxcdTBkNzNzdVxcdTAxMDBicFxcdTJiZWJcXHUyYmVkXFx4ZTVcXHUwY2Y4XFx4ZTVcXHUwZDBiXFx1MDE4MGJjcFxcdTJiZjZcXHUyYzExXFx1MmMxOVxcdTAyMDA7RWVzXFx1MmJmZlxcdTJjMDBcXHUwZDIyXFx1MmMwNFxcdTYyODQ7XFx1YzAwMFxcdTJhYzVcXHUwMzM4ZXRcXHUwMTAwO2VcXHUwZDFiXFx1MmMwYnFcXHUwMTAwO3FcXHUwZDIzXFx1MmMwMGNcXHUwMTAwO2VcXHUwZDMyXFx1MmMxN1xceGYxXFx1MGQzOFxcdTAyMDA7RWVzXFx1MmMyMlxcdTJjMjNcXHUwZDVmXFx1MmMyN1xcdTYyODU7XFx1YzAwMFxcdTJhYzZcXHUwMzM4ZXRcXHUwMTAwO2VcXHUwZDU4XFx1MmMyZXFcXHUwMTAwO3FcXHUwZDYwXFx1MmMyM1xcdTAyMDBnaWxyXFx1MmMzZFxcdTJjM2ZcXHUyYzQ1XFx1MmM0N1xceGVjXFx1MGJkN2xkZVxcdTgwM2JcXHhmMVxcdTQwZjFcXHhlN1xcdTBjNDNpYW5nbGVcXHUwMTAwbHJcXHUyYzUyXFx1MmM1Y2VmdFxcdTAxMDA7ZVxcdTBjMWFcXHUyYzVhXFx4ZjFcXHUwYzI2aWdodFxcdTAxMDA7ZVxcdTBjY2JcXHUyYzY1XFx4ZjFcXHUwY2Q3XFx1MDEwMDttXFx1MmM2Y1xcdTJjNmRcXHU0M2JkXFx1MDE4MDtlc1xcdTJjNzRcXHUyYzc1XFx1MmM3OVxcdTQwMjNybztcXHU2MTE2cDtcXHU2MDA3XFx1MDQ4MERIYWRnaWxyc1xcdTJjOGZcXHUyYzk0XFx1MmM5OVxcdTJjOWVcXHUyY2EzXFx1MmNiMFxcdTJjYjZcXHUyY2QzXFx1MmNlM2FzaDtcXHU2MmFkYXJyO1xcdTY5MDRwO1xcdWMwMDBcXHUyMjRkXFx1MjBkMmFzaDtcXHU2MmFjXFx1MDEwMGV0XFx1MmNhOFxcdTJjYWM7XFx1YzAwMFxcdTIyNjVcXHUyMGQyO1xcdWMwMDA+XFx1MjBkMm5maW47XFx1NjlkZVxcdTAxODBBZXRcXHUyY2JkXFx1MmNjMVxcdTJjYzVycjtcXHU2OTAyO1xcdWMwMDBcXHUyMjY0XFx1MjBkMlxcdTAxMDA7clxcdTJjY2FcXHUyY2NkXFx1YzAwMDxcXHUyMGQyaWU7XFx1YzAwMFxcdTIyYjRcXHUyMGQyXFx1MDEwMEF0XFx1MmNkOFxcdTJjZGNycjtcXHU2OTAzcmllO1xcdWMwMDBcXHUyMmI1XFx1MjBkMmltO1xcdWMwMDBcXHUyMjNjXFx1MjBkMlxcdTAxODBBYW5cXHUyY2YwXFx1MmNmNFxcdTJkMDJycjtcXHU2MWQ2clxcdTAxMDBoclxcdTJjZmFcXHUyY2ZkaztcXHU2OTIzXFx1MDEwMDtvXFx1MTNlN1xcdTEzZTVlYXI7XFx1NjkyN1xcdTEyNTNcXHUxYTk1XFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFx1MmQyZFxcMFxcdTJkMzhcXHUyZDQ4XFx1MmQ2MFxcdTJkNjVcXHUyZDcyXFx1MmQ4NFxcdTFiMDdcXDBcXDBcXHUyZDhkXFx1MmRhYlxcMFxcdTJkYzhcXHUyZGNlXFwwXFx1MmRkY1xcdTJlMTlcXHUyZTJiXFx1MmUzZVxcdTJlNDNcXHUwMTAwY3NcXHUyZDMxXFx1MWE5N3V0ZVxcdTgwM2JcXHhmM1xcdTQwZjNcXHUwMTAwaXlcXHUyZDNjXFx1MmQ0NXJcXHUwMTAwO2NcXHUxYTllXFx1MmQ0MlxcdTgwM2JcXHhmNFxcdTQwZjQ7XFx1NDQzZVxcdTAyODBhYmlvc1xcdTFhYTBcXHUyZDUyXFx1MmQ1N1xcdTAxYzhcXHUyZDVhbGFjO1xcdTQxNTF2O1xcdTZhMzhvbGQ7XFx1NjliY2xpZztcXHU0MTUzXFx1MDEwMGNyXFx1MmQ2OVxcdTJkNmRpcjtcXHU2OWJmO1xcdWMwMDBcXHVkODM1XFx1ZGQyY1xcdTAzNmZcXHUyZDc5XFwwXFwwXFx1MmQ3Y1xcMFxcdTJkODJuO1xcdTQyZGJhdmVcXHU4MDNiXFx4ZjJcXHU0MGYyO1xcdTY5YzFcXHUwMTAwYm1cXHUyZDg4XFx1MGRmNGFyO1xcdTY5YjVcXHUwMjAwYWNpdFxcdTJkOTVcXHUyZDk4XFx1MmRhNVxcdTJkYThyXFx4ZjJcXHUxYTgwXFx1MDEwMGlyXFx1MmQ5ZFxcdTJkYTByO1xcdTY5YmVvc3M7XFx1NjliYm5cXHhlNVxcdTBlNTI7XFx1NjljMFxcdTAxODBhZWlcXHUyZGIxXFx1MmRiNVxcdTJkYjljcjtcXHU0MTRkZ2E7XFx1NDNjOVxcdTAxODBjZG5cXHUyZGMwXFx1MmRjNVxcdTAxY2Ryb247XFx1NDNiZjtcXHU2OWI2cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDYwXFx1MDE4MGFlbFxcdTJkZDRcXHUyZGQ3XFx1MDFkMnI7XFx1NjliN3JwO1xcdTY5YjlcXHUwMzgwO2FkaW9zdlxcdTJkZWFcXHUyZGViXFx1MmRlZVxcdTJlMDhcXHUyZTBkXFx1MmUxMFxcdTJlMTZcXHU2MjI4clxceGYyXFx1MWE4NlxcdTAyMDA7ZWZtXFx1MmRmN1xcdTJkZjhcXHUyZTAyXFx1MmUwNVxcdTZhNWRyXFx1MDEwMDtvXFx1MmRmZVxcdTJkZmZcXHU2MTM0ZlxceGJiXFx1MmRmZlxcdTgwM2JcXHhhYVxcdTQwYWFcXHU4MDNiXFx4YmFcXHU0MGJhZ29mO1xcdTYyYjZyO1xcdTZhNTZsb3BlO1xcdTZhNTc7XFx1NmE1YlxcdTAxODBjbG9cXHUyZTFmXFx1MmUyMVxcdTJlMjdcXHhmMlxcdTJlMDFhc2hcXHU4MDNiXFx4ZjhcXHU0MGY4bDtcXHU2Mjk4aVxcdTAxNmNcXHUyZTJmXFx1MmUzNGRlXFx1ODAzYlxceGY1XFx1NDBmNWVzXFx1MDEwMDthXFx1MDFkYlxcdTJlM2FzO1xcdTZhMzZtbFxcdTgwM2JcXHhmNlxcdTQwZjZiYXI7XFx1NjMzZFxcdTBhZTFcXHUyZTVlXFwwXFx1MmU3ZFxcMFxcdTJlODBcXHUyZTlkXFwwXFx1MmVhMlxcdTJlYjlcXDBcXDBcXHUyZWNiXFx1MGU5Y1xcMFxcdTJmMTNcXDBcXDBcXHUyZjJiXFx1MmZiY1xcMFxcdTJmYzhyXFx1MDIwMDthc3RcXHUwNDAzXFx1MmU2N1xcdTJlNzJcXHUwZTg1XFx1ODEwMFxceGI2O2xcXHUyZTZkXFx1MmU2ZVxcdTQwYjZsZVxceGVjXFx1MDQwM1xcdTAyNjlcXHUyZTc4XFwwXFwwXFx1MmU3Ym07XFx1NmFmMztcXHU2YWZkeTtcXHU0NDNmclxcdTAyODBjaW1wdFxcdTJlOGJcXHUyZThmXFx1MmU5M1xcdTE4NjVcXHUyZTk3bnQ7XFx1NDAyNW9kO1xcdTQwMmVpbDtcXHU2MDMwZW5rO1xcdTYwMzFyO1xcdWMwMDBcXHVkODM1XFx1ZGQyZFxcdTAxODBpbW9cXHUyZWE4XFx1MmViMFxcdTJlYjRcXHUwMTAwO3ZcXHUyZWFkXFx1MmVhZVxcdTQzYzY7XFx1NDNkNW1hXFx4ZjRcXHUwYTc2bmU7XFx1NjYwZVxcdTAxODA7dHZcXHUyZWJmXFx1MmVjMFxcdTJlYzhcXHU0M2MwY2hmb3JrXFx4YmJcXHUxZmZkO1xcdTQzZDZcXHUwMTAwYXVcXHUyZWNmXFx1MmVkZm5cXHUwMTAwY2tcXHUyZWQ1XFx1MmVkZGtcXHUwMTAwO2hcXHUyMWY0XFx1MmVkYjtcXHU2MTBlXFx4ZjZcXHUyMWY0c1xcdTA0ODA7YWJjZGVtc3RcXHUyZWYzXFx1MmVmNFxcdTE5MDhcXHUyZWY5XFx1MmVmZFxcdTJmMDRcXHUyZjA2XFx1MmYwYVxcdTJmMGVcXHU0MDJiY2lyO1xcdTZhMjNpcjtcXHU2YTIyXFx1MDEwMG91XFx1MWQ0MFxcdTJmMDI7XFx1NmEyNTtcXHU2YTcyblxcdTgwYmJcXHhiMVxcdTBlOWRpbTtcXHU2YTI2d287XFx1NmEyN1xcdTAxODBpcHVcXHUyZjE5XFx1MmYyMFxcdTJmMjVudGludDtcXHU2YTE1ZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNjFuZFxcdTgwM2JcXHhhM1xcdTQwYTNcXHUwNTAwO0VhY2Vpbm9zdVxcdTBlYzhcXHUyZjNmXFx1MmY0MVxcdTJmNDRcXHUyZjQ3XFx1MmY4MVxcdTJmODlcXHUyZjkyXFx1MmY3ZVxcdTJmYjY7XFx1NmFiM3A7XFx1NmFiN3VcXHhlNVxcdTBlZDlcXHUwMTAwO2NcXHUwZWNlXFx1MmY0Y1xcdTAzMDA7YWNlbnNcXHUwZWM4XFx1MmY1OVxcdTJmNWZcXHUyZjY2XFx1MmY2OFxcdTJmN2VwcHJvXFx4ZjhcXHUyZjQzdXJseWVcXHhmMVxcdTBlZDlcXHhmMVxcdTBlY2VcXHUwMTgwYWVzXFx1MmY2ZlxcdTJmNzZcXHUyZjdhcHByb3g7XFx1NmFiOXFxO1xcdTZhYjVpbTtcXHU2MmU4aVxceGVkXFx1MGVkZm1lXFx1MDEwMDtzXFx1MmY4OFxcdTBlYWVcXHU2MDMyXFx1MDE4MEVhc1xcdTJmNzhcXHUyZjkwXFx1MmY3YVxceGYwXFx1MmY3NVxcdTAxODBkZnBcXHUwZWVjXFx1MmY5OVxcdTJmYWZcXHUwMTgwYWxzXFx1MmZhMFxcdTJmYTVcXHUyZmFhbGFyO1xcdTYzMmVpbmU7XFx1NjMxMnVyZjtcXHU2MzEzXFx1MDEwMDt0XFx1MGVmYlxcdTJmYjRcXHhlZlxcdTBlZmJyZWw7XFx1NjJiMFxcdTAxMDBjaVxcdTJmYzBcXHUyZmM1cjtcXHVjMDAwXFx1ZDgzNVxcdWRjYzU7XFx1NDNjOG5jc3A7XFx1NjAwOFxcdTAzMDBmaW9wc3VcXHUyZmRhXFx1MjJlMlxcdTJmZGZcXHUyZmU1XFx1MmZlYlxcdTJmZjFyO1xcdWMwMDBcXHVkODM1XFx1ZGQyZXBmO1xcdWMwMDBcXHVkODM1XFx1ZGQ2MnJpbWU7XFx1NjA1N2NyO1xcdWMwMDBcXHVkODM1XFx1ZGNjNlxcdTAxODBhZW9cXHUyZmY4XFx1MzAwOVxcdTMwMTN0XFx1MDEwMGVpXFx1MmZmZVxcdTMwMDVybmlvblxceGYzXFx1MDZiMG50O1xcdTZhMTZzdFxcdTAxMDA7ZVxcdTMwMTBcXHUzMDExXFx1NDAzZlxceGYxXFx1MWYxOVxceGY0XFx1MGYxNFxcdTBhODBBQkhhYmNkZWZoaWxtbm9wcnN0dXhcXHUzMDQwXFx1MzA1MVxcdTMwNTVcXHUzMDU5XFx1MzBlMFxcdTMxMGVcXHUzMTJiXFx1MzE0N1xcdTMxNjJcXHUzMTcyXFx1MzE4ZVxcdTMyMDZcXHUzMjE1XFx1MzIyNFxcdTMyMjlcXHUzMjU4XFx1MzI2ZVxcdTMyNzJcXHUzMjkwXFx1MzJiMFxcdTMyYjdcXHUwMTgwYXJ0XFx1MzA0N1xcdTMwNGFcXHUzMDRjclxceGYyXFx1MTBiM1xceGYyXFx1MDNkZGFpbDtcXHU2OTFjYXJcXHhmMlxcdTFjNjVhcjtcXHU2OTY0XFx1MDM4MGNkZW5xcnRcXHUzMDY4XFx1MzA3NVxcdTMwNzhcXHUzMDdmXFx1MzA4ZlxcdTMwOTRcXHUzMGNjXFx1MDEwMGV1XFx1MzA2ZFxcdTMwNzE7XFx1YzAwMFxcdTIyM2RcXHUwMzMxdGU7XFx1NDE1NWlcXHhlM1xcdTExNmVtcHR5djtcXHU2OWIzZ1xcdTAyMDA7ZGVsXFx1MGZkMVxcdTMwODlcXHUzMDhiXFx1MzA4ZDtcXHU2OTkyO1xcdTY5YTVcXHhlNVxcdTBmZDF1b1xcdTgwM2JcXHhiYlxcdTQwYmJyXFx1MDU4MDthYmNmaGxwc3R3XFx1MGZkY1xcdTMwYWNcXHUzMGFmXFx1MzBiN1xcdTMwYjlcXHUzMGJjXFx1MzBiZVxcdTMwYzBcXHUzMGMzXFx1MzBjN1xcdTMwY2FwO1xcdTY5NzVcXHUwMTAwO2ZcXHUwZmUwXFx1MzBiNHM7XFx1NjkyMDtcXHU2OTMzcztcXHU2OTFlXFx4ZWJcXHUyMjVkXFx4ZjBcXHUyNzJlbDtcXHU2OTQ1aW07XFx1Njk3NGw7XFx1NjFhMztcXHU2MTlkXFx1MDEwMGFpXFx1MzBkMVxcdTMwZDVpbDtcXHU2OTFhb1xcdTAxMDA7blxcdTMwZGJcXHUzMGRjXFx1NjIzNmFsXFx4ZjNcXHUwZjFlXFx1MDE4MGFiclxcdTMwZTdcXHUzMGVhXFx1MzBlZXJcXHhmMlxcdTE3ZTVyaztcXHU2NzczXFx1MDEwMGFrXFx1MzBmM1xcdTMwZmRjXFx1MDEwMGVrXFx1MzBmOVxcdTMwZmI7XFx1NDA3ZDtcXHU0MDVkXFx1MDEwMGVzXFx1MzEwMlxcdTMxMDQ7XFx1Njk4Y2xcXHUwMTAwZHVcXHUzMTBhXFx1MzEwYztcXHU2OThlO1xcdTY5OTBcXHUwMjAwYWV1eVxcdTMxMTdcXHUzMTFjXFx1MzEyN1xcdTMxMjlyb247XFx1NDE1OVxcdTAxMDBkaVxcdTMxMjFcXHUzMTI1aWw7XFx1NDE1N1xceGVjXFx1MGZmMlxceGUyXFx1MzBmYTtcXHU0NDQwXFx1MDIwMGNscXNcXHUzMTM0XFx1MzEzN1xcdTMxM2RcXHUzMTQ0YTtcXHU2OTM3ZGhhcjtcXHU2OTY5dW9cXHUwMTAwO3JcXHUwMjBlXFx1MDIwZGg7XFx1NjFiM1xcdTAxODBhY2dcXHUzMTRlXFx1MzE1ZlxcdTBmNDRsXFx1MDIwMDtpcHNcXHUwZjc4XFx1MzE1OFxcdTMxNWJcXHUxMDljblxceGU1XFx1MTBiYmFyXFx4ZjRcXHUwZmE5dDtcXHU2NWFkXFx1MDE4MGlsclxcdTMxNjlcXHUxMDIzXFx1MzE2ZXNodDtcXHU2OTdkO1xcdWMwMDBcXHVkODM1XFx1ZGQyZlxcdTAxMDBhb1xcdTMxNzdcXHUzMTg2clxcdTAxMDBkdVxcdTMxN2RcXHUzMTdmXFx4YmJcXHUwNDdiXFx1MDEwMDtsXFx1MTA5MVxcdTMxODQ7XFx1Njk2Y1xcdTAxMDA7dlxcdTMxOGJcXHUzMThjXFx1NDNjMTtcXHU0M2YxXFx1MDE4MGduc1xcdTMxOTVcXHUzMWY5XFx1MzFmY2h0XFx1MDMwMGFobHJzdFxcdTMxYTRcXHUzMWIwXFx1MzFjMlxcdTMxZDhcXHUzMWU0XFx1MzFlZXJyb3dcXHUwMTAwO3RcXHUwZmRjXFx1MzFhZGFcXHhlOVxcdTMwYzhhcnBvb25cXHUwMTAwZHVcXHUzMWJiXFx1MzFiZm93XFx4ZWVcXHUzMTdlcFxceGJiXFx1MTA5MmVmdFxcdTAxMDBhaFxcdTMxY2FcXHUzMWQwcnJvd1xceGYzXFx1MGZlYWFycG9vblxceGYzXFx1MDU1MWlnaHRhcnJvd3M7XFx1NjFjOXF1aWdhcnJvXFx4ZjdcXHUzMGNiaHJlZXRpbWVzO1xcdTYyY2NnO1xcdTQyZGFpbmdkb3RzZVxceGYxXFx1MWYzMlxcdTAxODBhaG1cXHUzMjBkXFx1MzIxMFxcdTMyMTNyXFx4ZjJcXHUwZmVhYVxceGYyXFx1MDU1MTtcXHU2MDBmb3VzdFxcdTAxMDA7YVxcdTMyMWVcXHUzMjFmXFx1NjNiMWNoZVxceGJiXFx1MzIxZm1pZDtcXHU2YWVlXFx1MDIwMGFicHRcXHUzMjMyXFx1MzIzZFxcdTMyNDBcXHUzMjUyXFx1MDEwMG5yXFx1MzIzN1xcdTMyM2FnO1xcdTY3ZWRyO1xcdTYxZmVyXFx4ZWJcXHUxMDAzXFx1MDE4MGFmbFxcdTMyNDdcXHUzMjRhXFx1MzI0ZXI7XFx1Njk4NjtcXHVjMDAwXFx1ZDgzNVxcdWRkNjN1cztcXHU2YTJlaW1lcztcXHU2YTM1XFx1MDEwMGFwXFx1MzI1ZFxcdTMyNjdyXFx1MDEwMDtnXFx1MzI2M1xcdTMyNjRcXHU0MDI5dDtcXHU2OTk0b2xpbnQ7XFx1NmExMmFyXFx4ZjJcXHUzMWUzXFx1MDIwMGFjaHFcXHUzMjdiXFx1MzI4MFxcdTEwYmNcXHUzMjg1cXVvO1xcdTYwM2FyO1xcdWMwMDBcXHVkODM1XFx1ZGNjN1xcdTAxMDBidVxcdTMwZmJcXHUzMjhhb1xcdTAxMDA7clxcdTAyMTRcXHUwMjEzXFx1MDE4MGhpclxcdTMyOTdcXHUzMjliXFx1MzJhMHJlXFx4ZTVcXHUzMWY4bWVzO1xcdTYyY2FpXFx1MDIwMDtlZmxcXHUzMmFhXFx1MTA1OVxcdTE4MjFcXHUzMmFiXFx1NjViOXRyaTtcXHU2OWNlbHVoYXI7XFx1Njk2ODtcXHU2MTFlXFx1MGQ2MVxcdTMyZDVcXHUzMmRiXFx1MzJkZlxcdTMzMmNcXHUzMzM4XFx1MzM3MVxcMFxcdTMzN2FcXHUzM2E0XFwwXFwwXFx1MzNlY1xcdTMzZjBcXDBcXHUzNDI4XFx1MzQ0OFxcdTM0NWFcXHUzNGFkXFx1MzRiMVxcdTM0Y2FcXHUzNGYxXFwwXFx1MzYxNlxcMFxcMFxcdTM2MzNjdXRlO1xcdTQxNWJxdVxceGVmXFx1MjdiYVxcdTA1MDA7RWFjZWlucHN5XFx1MTFlZFxcdTMyZjNcXHUzMmY1XFx1MzJmZlxcdTMzMDJcXHUzMzBiXFx1MzMwZlxcdTMzMWZcXHUzMzI2XFx1MzMyOTtcXHU2YWI0XFx1MDFmMFxcdTMyZmFcXDBcXHUzMmZjO1xcdTZhYjhvbjtcXHU0MTYxdVxceGU1XFx1MTFmZVxcdTAxMDA7ZFxcdTExZjNcXHUzMzA3aWw7XFx1NDE1ZnJjO1xcdTQxNWRcXHUwMTgwRWFzXFx1MzMxNlxcdTMzMThcXHUzMzFiO1xcdTZhYjZwO1xcdTZhYmFpbTtcXHU2MmU5b2xpbnQ7XFx1NmExM2lcXHhlZFxcdTEyMDQ7XFx1NDQ0MW90XFx1MDE4MDtiZVxcdTMzMzRcXHUxZDQ3XFx1MzMzNVxcdTYyYzU7XFx1NmE2NlxcdTAzODBBYWNtc3R4XFx1MzM0NlxcdTMzNGFcXHUzMzU3XFx1MzM1YlxcdTMzNWVcXHUzMzYzXFx1MzM2ZHJyO1xcdTYxZDhyXFx1MDEwMGhyXFx1MzM1MFxcdTMzNTJcXHhlYlxcdTIyMjhcXHUwMTAwO29cXHUwYTM2XFx1MGEzNHRcXHU4MDNiXFx4YTdcXHU0MGE3aTtcXHU0MDNid2FyO1xcdTY5MjltXFx1MDEwMGluXFx1MzM2OVxceGYwbnVcXHhmM1xceGYxdDtcXHU2NzM2clxcdTAxMDA7b1xcdTMzNzZcXHUyMDU1XFx1YzAwMFxcdWQ4MzVcXHVkZDMwXFx1MDIwMGFjb3lcXHUzMzgyXFx1MzM4NlxcdTMzOTFcXHUzM2EwcnA7XFx1NjY2ZlxcdTAxMDBoeVxcdTMzOGJcXHUzMzhmY3k7XFx1NDQ0OTtcXHU0NDQ4cnRcXHUwMjZkXFx1MzM5OVxcMFxcMFxcdTMzOWNpXFx4ZTRcXHUxNDY0YXJhXFx4ZWNcXHUyZTZmXFx1ODAzYlxceGFkXFx1NDBhZFxcdTAxMDBnbVxcdTMzYThcXHUzM2I0bWFcXHUwMTgwO2Z2XFx1MzNiMVxcdTMzYjJcXHUzM2IyXFx1NDNjMztcXHU0M2MyXFx1MDQwMDtkZWdsbnByXFx1MTJhYlxcdTMzYzVcXHUzM2M5XFx1MzNjZVxcdTMzZDZcXHUzM2RlXFx1MzNlMVxcdTMzZTZvdDtcXHU2YTZhXFx1MDEwMDtxXFx1MTJiMVxcdTEyYjBcXHUwMTAwO0VcXHUzM2QzXFx1MzNkNFxcdTZhOWU7XFx1NmFhMFxcdTAxMDA7RVxcdTMzZGJcXHUzM2RjXFx1NmE5ZDtcXHU2YTlmZTtcXHU2MjQ2bHVzO1xcdTZhMjRhcnI7XFx1Njk3MmFyXFx4ZjJcXHUxMTNkXFx1MDIwMGFlaXRcXHUzM2Y4XFx1MzQwOFxcdTM0MGZcXHUzNDE3XFx1MDEwMGxzXFx1MzNmZFxcdTM0MDRsc2V0bVxceGU5XFx1MzM2YWhwO1xcdTZhMzNwYXJzbDtcXHU2OWU0XFx1MDEwMGRsXFx1MTQ2M1xcdTM0MTRlO1xcdTYzMjNcXHUwMTAwO2VcXHUzNDFjXFx1MzQxZFxcdTZhYWFcXHUwMTAwO3NcXHUzNDIyXFx1MzQyM1xcdTZhYWM7XFx1YzAwMFxcdTJhYWNcXHVmZTAwXFx1MDE4MGZscFxcdTM0MmVcXHUzNDMzXFx1MzQ0MnRjeTtcXHU0NDRjXFx1MDEwMDtiXFx1MzQzOFxcdTM0MzlcXHU0MDJmXFx1MDEwMDthXFx1MzQzZVxcdTM0M2ZcXHU2OWM0cjtcXHU2MzNmZjtcXHVjMDAwXFx1ZDgzNVxcdWRkNjRhXFx1MDEwMGRyXFx1MzQ0ZFxcdTA0MDJlc1xcdTAxMDA7dVxcdTM0NTRcXHUzNDU1XFx1NjY2MGl0XFx4YmJcXHUzNDU1XFx1MDE4MGNzdVxcdTM0NjBcXHUzNDc5XFx1MzQ5ZlxcdTAxMDBhdVxcdTM0NjVcXHUzNDZmcFxcdTAxMDA7c1xcdTExODhcXHUzNDZiO1xcdWMwMDBcXHUyMjkzXFx1ZmUwMHBcXHUwMTAwO3NcXHUxMWI0XFx1MzQ3NTtcXHVjMDAwXFx1MjI5NFxcdWZlMDB1XFx1MDEwMGJwXFx1MzQ3ZlxcdTM0OGZcXHUwMTgwO2VzXFx1MTE5N1xcdTExOWNcXHUzNDg2ZXRcXHUwMTAwO2VcXHUxMTk3XFx1MzQ4ZFxceGYxXFx1MTE5ZFxcdTAxODA7ZXNcXHUxMWE4XFx1MTFhZFxcdTM0OTZldFxcdTAxMDA7ZVxcdTExYThcXHUzNDlkXFx4ZjFcXHUxMWFlXFx1MDE4MDthZlxcdTExN2JcXHUzNGE2XFx1MDViMHJcXHUwMTY1XFx1MzRhYlxcdTA1YjFcXHhiYlxcdTExN2NhclxceGYyXFx1MTE0OFxcdTAyMDBjZW10XFx1MzRiOVxcdTM0YmVcXHUzNGMyXFx1MzRjNXI7XFx1YzAwMFxcdWQ4MzVcXHVkY2M4dG1cXHhlZVxceGYxaVxceGVjXFx1MzQxNWFyXFx4ZTZcXHUxMWJlXFx1MDEwMGFyXFx1MzRjZVxcdTM0ZDVyXFx1MDEwMDtmXFx1MzRkNFxcdTE3YmZcXHU2NjA2XFx1MDEwMGFuXFx1MzRkYVxcdTM0ZWRpZ2h0XFx1MDEwMGVwXFx1MzRlM1xcdTM0ZWFwc2lsb1xceGVlXFx1MWVlMGhcXHhlOVxcdTJlYWZzXFx4YmJcXHUyODUyXFx1MDI4MGJjbW5wXFx1MzRmYlxcdTM1NWVcXHUxMjA5XFx1MzU4YlxcdTM1OGVcXHUwNDgwO0VkZW1ucHJzXFx1MzUwZVxcdTM1MGZcXHUzNTExXFx1MzUxNVxcdTM1MWVcXHUzNTIzXFx1MzUyY1xcdTM1MzFcXHUzNTM2XFx1NjI4MjtcXHU2YWM1b3Q7XFx1NmFiZFxcdTAxMDA7ZFxcdTExZGFcXHUzNTFhb3Q7XFx1NmFjM3VsdDtcXHU2YWMxXFx1MDEwMEVlXFx1MzUyOFxcdTM1MmE7XFx1NmFjYjtcXHU2MjhhbHVzO1xcdTZhYmZhcnI7XFx1Njk3OVxcdTAxODBlaXVcXHUzNTNkXFx1MzU1MlxcdTM1NTV0XFx1MDE4MDtlblxcdTM1MGVcXHUzNTQ1XFx1MzU0YnFcXHUwMTAwO3FcXHUxMWRhXFx1MzUwZmVxXFx1MDEwMDtxXFx1MzUyYlxcdTM1MjhtO1xcdTZhYzdcXHUwMTAwYnBcXHUzNTVhXFx1MzU1YztcXHU2YWQ1O1xcdTZhZDNjXFx1MDMwMDthY2Vuc1xcdTExZWRcXHUzNTZjXFx1MzU3MlxcdTM1NzlcXHUzNTdiXFx1MzMyNnBwcm9cXHhmOFxcdTMyZmF1cmx5ZVxceGYxXFx1MTFmZVxceGYxXFx1MTFmM1xcdTAxODBhZXNcXHUzNTgyXFx1MzU4OFxcdTMzMWJwcHJvXFx4ZjhcXHUzMzFhcVxceGYxXFx1MzMxN2c7XFx1NjY2YVxcdTA2ODAxMjM7RWRlaGxtbnBzXFx1MzVhOVxcdTM1YWNcXHUzNWFmXFx1MTIxY1xcdTM1YjJcXHUzNWI0XFx1MzVjMFxcdTM1YzlcXHUzNWQ1XFx1MzVkYVxcdTM1ZGZcXHUzNWU4XFx1MzVlZFxcdTgwM2JcXHhiOVxcdTQwYjlcXHU4MDNiXFx4YjJcXHU0MGIyXFx1ODAzYlxceGIzXFx1NDBiMztcXHU2YWM2XFx1MDEwMG9zXFx1MzViOVxcdTM1YmN0O1xcdTZhYmV1YjtcXHU2YWQ4XFx1MDEwMDtkXFx1MTIyMlxcdTM1YzVvdDtcXHU2YWM0c1xcdTAxMDBvdVxcdTM1Y2ZcXHUzNWQybDtcXHU2N2M5YjtcXHU2YWQ3YXJyO1xcdTY5N2J1bHQ7XFx1NmFjMlxcdTAxMDBFZVxcdTM1ZTRcXHUzNWU2O1xcdTZhY2M7XFx1NjI4Ymx1cztcXHU2YWMwXFx1MDE4MGVpdVxcdTM1ZjRcXHUzNjA5XFx1MzYwY3RcXHUwMTgwO2VuXFx1MTIxY1xcdTM1ZmNcXHUzNjAycVxcdTAxMDA7cVxcdTEyMjJcXHUzNWIyZXFcXHUwMTAwO3FcXHUzNWU3XFx1MzVlNG07XFx1NmFjOFxcdTAxMDBicFxcdTM2MTFcXHUzNjEzO1xcdTZhZDQ7XFx1NmFkNlxcdTAxODBBYW5cXHUzNjFjXFx1MzYyMFxcdTM2MmRycjtcXHU2MWQ5clxcdTAxMDBoclxcdTM2MjZcXHUzNjI4XFx4ZWJcXHUyMjJlXFx1MDEwMDtvXFx1MGEyYlxcdTBhMjl3YXI7XFx1NjkyYWxpZ1xcdTgwM2JcXHhkZlxcdTQwZGZcXHUwYmUxXFx1MzY1MVxcdTM2NWRcXHUzNjYwXFx1MTJjZVxcdTM2NzNcXHUzNjc5XFwwXFx1MzY3ZVxcdTM2YzJcXDBcXDBcXDBcXDBcXDBcXHUzNmRiXFx1MzcwM1xcMFxcdTM3MDlcXHUzNzZjXFwwXFwwXFwwXFx1Mzc4N1xcdTAyNzJcXHUzNjU2XFwwXFwwXFx1MzY1YmdldDtcXHU2MzE2O1xcdTQzYzRyXFx4ZWJcXHUwZTVmXFx1MDE4MGFleVxcdTM2NjZcXHUzNjZiXFx1MzY3MHJvbjtcXHU0MTY1ZGlsO1xcdTQxNjM7XFx1NDQ0MmxyZWM7XFx1NjMxNXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDMxXFx1MDIwMGVpa29cXHUzNjg2XFx1MzY5ZFxcdTM2YjVcXHUzNmJjXFx1MDFmMlxcdTM2OGJcXDBcXHUzNjkxZVxcdTAxMDA0ZlxcdTEyODRcXHUxMjgxYVxcdTAxODA7c3ZcXHUzNjk4XFx1MzY5OVxcdTM2OWJcXHU0M2I4eW07XFx1NDNkMVxcdTAxMDBjblxcdTM2YTJcXHUzNmIya1xcdTAxMDBhc1xcdTM2YThcXHUzNmFlcHByb1xceGY4XFx1MTJjMWltXFx4YmJcXHUxMmFjc1xceGYwXFx1MTI5ZVxcdTAxMDBhc1xcdTM2YmFcXHUzNmFlXFx4ZjBcXHUxMmMxcm5cXHU4MDNiXFx4ZmVcXHU0MGZlXFx1MDFlY1xcdTAzMWZcXHUzNmM2XFx1MjJlN2VzXFx1ODE4MFxceGQ3O2JkXFx1MzZjZlxcdTM2ZDBcXHUzNmQ4XFx1NDBkN1xcdTAxMDA7YVxcdTE5MGZcXHUzNmQ1cjtcXHU2YTMxO1xcdTZhMzBcXHUwMTgwZXBzXFx1MzZlMVxcdTM2ZTNcXHUzNzAwXFx4ZTFcXHUyYTRkXFx1MDIwMDtiY2ZcXHUwNDg2XFx1MzZlY1xcdTM2ZjBcXHUzNmY0b3Q7XFx1NjMzNmlyO1xcdTZhZjFcXHUwMTAwO29cXHUzNmY5XFx1MzZmY1xcdWMwMDBcXHVkODM1XFx1ZGQ2NXJrO1xcdTZhZGFcXHhlMVxcdTMzNjJyaW1lO1xcdTYwMzRcXHUwMTgwYWlwXFx1MzcwZlxcdTM3MTJcXHUzNzY0ZFxceGU1XFx1MTI0OFxcdTAzODBhZGVtcHN0XFx1MzcyMVxcdTM3NGRcXHUzNzQwXFx1Mzc1MVxcdTM3NTdcXHUzNzVjXFx1Mzc1Zm5nbGVcXHUwMjgwO2RscXJcXHUzNzMwXFx1MzczMVxcdTM3MzZcXHUzNzQwXFx1Mzc0MlxcdTY1YjVvd25cXHhiYlxcdTFkYmJlZnRcXHUwMTAwO2VcXHUyODAwXFx1MzczZVxceGYxXFx1MDkyZTtcXHU2MjVjaWdodFxcdTAxMDA7ZVxcdTMyYWFcXHUzNzRiXFx4ZjFcXHUxMDVhb3Q7XFx1NjVlY2ludXM7XFx1NmEzYWx1cztcXHU2YTM5YjtcXHU2OWNkaW1lO1xcdTZhM2Jleml1bTtcXHU2M2UyXFx1MDE4MGNodFxcdTM3NzJcXHUzNzdkXFx1Mzc4MVxcdTAxMDByeVxcdTM3NzdcXHUzNzdiO1xcdWMwMDBcXHVkODM1XFx1ZGNjOTtcXHU0NDQ2Y3k7XFx1NDQ1YnJvaztcXHU0MTY3XFx1MDEwMGlvXFx1Mzc4YlxcdTM3OGV4XFx4ZjRcXHUxNzc3aGVhZFxcdTAxMDBsclxcdTM3OTdcXHUzN2EwZWZ0YXJyb1xceGY3XFx1MDg0ZmlnaHRhcnJvd1xceGJiXFx1MGY1ZFxcdTA5MDBBSGFiY2RmZ2hsbW9wcnN0dXdcXHUzN2QwXFx1MzdkM1xcdTM3ZDdcXHUzN2U0XFx1MzdmMFxcdTM3ZmNcXHUzODBlXFx1MzgxY1xcdTM4MjNcXHUzODM0XFx1Mzg1MVxcdTM4NWRcXHUzODZiXFx1MzhhOVxcdTM4Y2NcXHUzOGQyXFx1MzhlYVxcdTM4ZjZyXFx4ZjJcXHUwM2VkYXI7XFx1Njk2M1xcdTAxMDBjclxcdTM3ZGNcXHUzN2UydXRlXFx1ODAzYlxceGZhXFx1NDBmYVxceGYyXFx1MTE1MHJcXHUwMWUzXFx1MzdlYVxcMFxcdTM3ZWR5O1xcdTQ0NWV2ZTtcXHU0MTZkXFx1MDEwMGl5XFx1MzdmNVxcdTM3ZmFyY1xcdTgwM2JcXHhmYlxcdTQwZmI7XFx1NDQ0M1xcdTAxODBhYmhcXHUzODAzXFx1MzgwNlxcdTM4MGJyXFx4ZjJcXHUxM2FkbGFjO1xcdTQxNzFhXFx4ZjJcXHUxM2MzXFx1MDEwMGlyXFx1MzgxM1xcdTM4MThzaHQ7XFx1Njk3ZTtcXHVjMDAwXFx1ZDgzNVxcdWRkMzJyYXZlXFx1ODAzYlxceGY5XFx1NDBmOVxcdTAxNjFcXHUzODI3XFx1MzgzMXJcXHUwMTAwbHJcXHUzODJjXFx1MzgyZVxceGJiXFx1MDk1N1xceGJiXFx1MTA4M2xrO1xcdTY1ODBcXHUwMTAwY3RcXHUzODM5XFx1Mzg0ZFxcdTAyNmZcXHUzODNmXFwwXFwwXFx1Mzg0YXJuXFx1MDEwMDtlXFx1Mzg0NVxcdTM4NDZcXHU2MzFjclxceGJiXFx1Mzg0Nm9wO1xcdTYzMGZyaTtcXHU2NWY4XFx1MDEwMGFsXFx1Mzg1NlxcdTM4NWFjcjtcXHU0MTZiXFx1ODBiYlxceGE4XFx1MDM0OVxcdTAxMDBncFxcdTM4NjJcXHUzODY2b247XFx1NDE3M2Y7XFx1YzAwMFxcdWQ4MzVcXHVkZDY2XFx1MDMwMGFkaGxzdVxcdTExNGJcXHUzODc4XFx1Mzg3ZFxcdTEzNzJcXHUzODkxXFx1MzhhMG93blxceGUxXFx1MTNiM2FycG9vblxcdTAxMDBsclxcdTM4ODhcXHUzODhjZWZcXHhmNFxcdTM4MmRpZ2hcXHhmNFxcdTM4MmZpXFx1MDE4MDtobFxcdTM4OTlcXHUzODlhXFx1Mzg5Y1xcdTQzYzVcXHhiYlxcdTEzZmFvblxceGJiXFx1Mzg5YXBhcnJvd3M7XFx1NjFjOFxcdTAxODBjaXRcXHUzOGIwXFx1MzhjNFxcdTM4YzhcXHUwMjZmXFx1MzhiNlxcMFxcMFxcdTM4YzFyblxcdTAxMDA7ZVxcdTM4YmNcXHUzOGJkXFx1NjMxZHJcXHhiYlxcdTM4YmRvcDtcXHU2MzBlbmc7XFx1NDE2ZnJpO1xcdTY1ZjljcjtcXHVjMDAwXFx1ZDgzNVxcdWRjY2FcXHUwMTgwZGlyXFx1MzhkOVxcdTM4ZGRcXHUzOGUyb3Q7XFx1NjJmMGxkZTtcXHU0MTY5aVxcdTAxMDA7ZlxcdTM3MzBcXHUzOGU4XFx4YmJcXHUxODEzXFx1MDEwMGFtXFx1MzhlZlxcdTM4ZjJyXFx4ZjJcXHUzOGE4bFxcdTgwM2JcXHhmY1xcdTQwZmNhbmdsZTtcXHU2OWE3XFx1MDc4MEFCRGFjZGVmbG5vcHJzelxcdTM5MWNcXHUzOTFmXFx1MzkyOVxcdTM5MmRcXHUzOWI1XFx1MzliOFxcdTM5YmRcXHUzOWRmXFx1MzllNFxcdTM5ZThcXHUzOWYzXFx1MzlmOVxcdTM5ZmRcXHUzYTAxXFx1M2EyMHJcXHhmMlxcdTAzZjdhclxcdTAxMDA7dlxcdTM5MjZcXHUzOTI3XFx1NmFlODtcXHU2YWU5YXNcXHhlOFxcdTAzZTFcXHUwMTAwbnJcXHUzOTMyXFx1MzkzN2dydDtcXHU2OTljXFx1MDM4MGVrbnByc3RcXHUzNGUzXFx1Mzk0NlxcdTM5NGJcXHUzOTUyXFx1Mzk1ZFxcdTM5NjRcXHUzOTk2YXBwXFx4ZTFcXHUyNDE1b3RoaW5cXHhlN1xcdTFlOTZcXHUwMTgwaGlyXFx1MzRlYlxcdTJlYzhcXHUzOTU5b3BcXHhmNFxcdTJmYjVcXHUwMTAwO2hcXHUxM2I3XFx1Mzk2MlxceGVmXFx1MzE4ZFxcdTAxMDBpdVxcdTM5NjlcXHUzOTZkZ21cXHhlMVxcdTMzYjNcXHUwMTAwYnBcXHUzOTcyXFx1Mzk4NHNldG5lcVxcdTAxMDA7cVxcdTM5N2RcXHUzOTgwXFx1YzAwMFxcdTIyOGFcXHVmZTAwO1xcdWMwMDBcXHUyYWNiXFx1ZmUwMHNldG5lcVxcdTAxMDA7cVxcdTM5OGZcXHUzOTkyXFx1YzAwMFxcdTIyOGJcXHVmZTAwO1xcdWMwMDBcXHUyYWNjXFx1ZmUwMFxcdTAxMDBoclxcdTM5OWJcXHUzOTlmZXRcXHhlMVxcdTM2OWNpYW5nbGVcXHUwMTAwbHJcXHUzOWFhXFx1MzlhZmVmdFxceGJiXFx1MDkyNWlnaHRcXHhiYlxcdTEwNTF5O1xcdTQ0MzJhc2hcXHhiYlxcdTEwMzZcXHUwMTgwZWxyXFx1MzljNFxcdTM5ZDJcXHUzOWQ3XFx1MDE4MDtiZVxcdTJkZWFcXHUzOWNiXFx1MzljZmFyO1xcdTYyYmJxO1xcdTYyNWFsaXA7XFx1NjJlZVxcdTAxMDBidFxcdTM5ZGNcXHUxNDY4YVxceGYyXFx1MTQ2OXI7XFx1YzAwMFxcdWQ4MzVcXHVkZDMzdHJcXHhlOVxcdTM5YWVzdVxcdTAxMDBicFxcdTM5ZWZcXHUzOWYxXFx4YmJcXHUwZDFjXFx4YmJcXHUwZDU5cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDY3cm9cXHhmMFxcdTBlZmJ0clxceGU5XFx1MzliNFxcdTAxMDBjdVxcdTNhMDZcXHUzYTBicjtcXHVjMDAwXFx1ZDgzNVxcdWRjY2JcXHUwMTAwYnBcXHUzYTEwXFx1M2ExOG5cXHUwMTAwRWVcXHUzOTgwXFx1M2ExNlxceGJiXFx1Mzk3ZW5cXHUwMTAwRWVcXHUzOTkyXFx1M2ExZVxceGJiXFx1Mzk5MGlnemFnO1xcdTY5OWFcXHUwMzgwY2Vmb3Byc1xcdTNhMzZcXHUzYTNiXFx1M2E1NlxcdTNhNWJcXHUzYTU0XFx1M2E2MVxcdTNhNmFpcmM7XFx1NDE3NVxcdTAxMDBkaVxcdTNhNDBcXHUzYTUxXFx1MDEwMGJnXFx1M2E0NVxcdTNhNDlhcjtcXHU2YTVmZVxcdTAxMDA7cVxcdTE1ZmFcXHUzYTRmO1xcdTYyNTllcnA7XFx1NjExOHI7XFx1YzAwMFxcdWQ4MzVcXHVkZDM0cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDY4XFx1MDEwMDtlXFx1MTQ3OVxcdTNhNjZhdFxceGU4XFx1MTQ3OWNyO1xcdWMwMDBcXHVkODM1XFx1ZGNjY1xcdTBhZTNcXHUxNzhlXFx1M2E4N1xcMFxcdTNhOGJcXDBcXHUzYTkwXFx1M2E5YlxcMFxcMFxcdTNhOWRcXHUzYWE4XFx1M2FhYlxcdTNhYWZcXDBcXDBcXHUzYWMzXFx1M2FjZVxcMFxcdTNhZDhcXHUxN2RjXFx1MTdkZnRyXFx4ZTlcXHUxN2QxcjtcXHVjMDAwXFx1ZDgzNVxcdWRkMzVcXHUwMTAwQWFcXHUzYTk0XFx1M2E5N3JcXHhmMlxcdTAzYzNyXFx4ZjJcXHUwOWY2O1xcdTQzYmVcXHUwMTAwQWFcXHUzYWExXFx1M2FhNHJcXHhmMlxcdTAzYjhyXFx4ZjJcXHUwOWViYVxceGYwXFx1MjcxM2lzO1xcdTYyZmJcXHUwMTgwZHB0XFx1MTdhNFxcdTNhYjVcXHUzYWJlXFx1MDEwMGZsXFx1M2FiYVxcdTE3YTk7XFx1YzAwMFxcdWQ4MzVcXHVkZDY5aW1cXHhlNVxcdTE3YjJcXHUwMTAwQWFcXHUzYWM3XFx1M2FjYXJcXHhmMlxcdTAzY2VyXFx4ZjJcXHUwYTAxXFx1MDEwMGNxXFx1M2FkMlxcdTE3YjhyO1xcdWMwMDBcXHVkODM1XFx1ZGNjZFxcdTAxMDBwdFxcdTE3ZDZcXHUzYWRjclxceGU5XFx1MTdkNFxcdTA0MDBhY2VmaW9zdVxcdTNhZjBcXHUzYWZkXFx1M2IwOFxcdTNiMGNcXHUzYjExXFx1M2IxNVxcdTNiMWJcXHUzYjIxY1xcdTAxMDB1eVxcdTNhZjZcXHUzYWZidGVcXHU4MDNiXFx4ZmRcXHU0MGZkO1xcdTQ0NGZcXHUwMTAwaXlcXHUzYjAyXFx1M2IwNnJjO1xcdTQxNzc7XFx1NDQ0Ym5cXHU4MDNiXFx4YTVcXHU0MGE1cjtcXHVjMDAwXFx1ZDgzNVxcdWRkMzZjeTtcXHU0NDU3cGY7XFx1YzAwMFxcdWQ4MzVcXHVkZDZhY3I7XFx1YzAwMFxcdWQ4MzVcXHVkY2NlXFx1MDEwMGNtXFx1M2IyNlxcdTNiMjl5O1xcdTQ0NGVsXFx1ODAzYlxceGZmXFx1NDBmZlxcdTA1MDBhY2RlZmhpb3N3XFx1M2I0MlxcdTNiNDhcXHUzYjU0XFx1M2I1OFxcdTNiNjRcXHUzYjY5XFx1M2I2ZFxcdTNiNzRcXHUzYjdhXFx1M2I4MGN1dGU7XFx1NDE3YVxcdTAxMDBheVxcdTNiNGRcXHUzYjUycm9uO1xcdTQxN2U7XFx1NDQzN290O1xcdTQxN2NcXHUwMTAwZXRcXHUzYjVkXFx1M2I2MXRyXFx4ZTZcXHUxNTVmYTtcXHU0M2I2cjtcXHVjMDAwXFx1ZDgzNVxcdWRkMzdjeTtcXHU0NDM2Z3JhcnI7XFx1NjFkZHBmO1xcdWMwMDBcXHVkODM1XFx1ZGQ2YmNyO1xcdWMwMDBcXHVkODM1XFx1ZGNjZlxcdTAxMDBqblxcdTNiODVcXHUzYjg3O1xcdTYwMGRqO1xcdTYwMGNcIlxuICAgIC5zcGxpdChcIlwiKVxuICAgIC5tYXAoKGMpID0+IGMuY2hhckNvZGVBdCgwKSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVjb2RlLWRhdGEtaHRtbC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js":
|
|
/*!*****************************************************************************************!*\
|
|
!*** ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js ***!
|
|
\*****************************************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ xmlDecodeTree: () => (/* binding */ xmlDecodeTree)\n/* harmony export */ });\n// Generated using scripts/write-decode-map.ts\nconst xmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9kaXN0L2VzbS9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEteG1sLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNPO0FBQ1A7QUFDQSw2REFBNkQsU0FBUyxRQUFRLFFBQVEsVUFBVTtBQUNoRztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvZGlzdC9lc20vZ2VuZXJhdGVkL2RlY29kZS1kYXRhLXhtbC5qcz9lZDY2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCB1c2luZyBzY3JpcHRzL3dyaXRlLWRlY29kZS1tYXAudHNcbmV4cG9ydCBjb25zdCB4bWxEZWNvZGVUcmVlID0gLyogI19fUFVSRV9fICovIG5ldyBVaW50MTZBcnJheShcbi8vIHByZXR0aWVyLWlnbm9yZVxuLyogI19fUFVSRV9fICovIFwiXFx1MDIwMGFnbHFcXHRcXHgxNVxceDE4XFx4MWJcXHUwMjZkXFx4MGZcXDBcXDBcXHgxMnA7XFx1NDAyNm9zO1xcdTQwMjd0O1xcdTQwM2V0O1xcdTQwM2N1b3Q7XFx1NDAyMlwiXG4gICAgLnNwbGl0KFwiXCIpXG4gICAgLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWNvZGUtZGF0YS14bWwuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |