teddy
Version:
🧸 Teddy is the most readable and easy to learn templating language there is!
4,710 lines • 417 kB
JavaScript
/******/var __webpack_modules__={
/***/"./node_modules/boolbase/index.js":
/*!****************************************!*\
!*** ./node_modules/boolbase/index.js ***!
\****************************************/
/***/module=>{module.exports={trueFunc:function(){return true},falseFunc:function(){return false}};
/***/},
/***/"./node_modules/cheerio-select/lib/esm/helpers.js":
/*!********************************************************!*\
!*** ./node_modules/cheerio-select/lib/esm/helpers.js ***!
\********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getDocumentRoot:()=>/* binding */getDocumentRoot
/* harmony export */,groupSelectors:()=>/* binding */groupSelectors
/* harmony export */});
/* harmony import */var _positionals_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./positionals.js */"./node_modules/cheerio-select/lib/esm/positionals.js");function getDocumentRoot(node){while(node.parent)node=node.parent;return node}function groupSelectors(selectors){const filteredSelectors=[];const plainSelectors=[];for(const selector of selectors)if(selector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_0__.isFilter))filteredSelectors.push(selector);else plainSelectors.push(selector);return[plainSelectors,filteredSelectors]}
//# sourceMappingURL=helpers.js.map
/***/},
/***/"./node_modules/cheerio-select/lib/esm/index.js":
/*!******************************************************!*\
!*** ./node_modules/cheerio-select/lib/esm/index.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.aliases
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,filters:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.filters
/* harmony export */,is:()=>/* binding */is
/* harmony export */,pseudos:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.pseudos
/* harmony export */,select:()=>/* binding */select
/* harmony export */,some:()=>/* binding */some
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var css_select__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! css-select */"./node_modules/css-select/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _helpers_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./helpers.js */"./node_modules/cheerio-select/lib/esm/helpers.js");
/* harmony import */var _positionals_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./positionals.js */"./node_modules/cheerio-select/lib/esm/positionals.js");
// Re-export pseudo extension points
const UNIVERSAL_SELECTOR={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Universal,namespace:null};const SCOPE_PSEUDO={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo,name:"scope",data:null};function is(element,selector,options={}){return some([element],selector,options)}function some(elements,selector,options={}){if(typeof selector==="function")return elements.some(selector);const[plain,filtered]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));return plain.length>0&&elements.some((0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(plain,options))||filtered.some((sel=>filterBySelector(sel,elements,options).length>0))}function filterByPosition(filter,elems,data,options){const num=typeof data==="string"?parseInt(data,10):NaN;switch(filter){case"first":case"lt":
// Already done in `getLimit`
return elems;case"last":return elems.length>0?[elems[elems.length-1]]:elems;case"nth":case"eq":return isFinite(num)&&Math.abs(num)<elems.length?[num<0?elems[elems.length+num]:elems[num]]:[];case"gt":return isFinite(num)?elems.slice(num+1):[];case"even":return elems.filter(((_,i)=>i%2===0));case"odd":return elems.filter(((_,i)=>i%2===1));case"not":{const filtered=new Set(filterParsed(data,elems,options));return elems.filter((e=>!filtered.has(e)))}}}function filter(selector,elements,options={}){return filterParsed((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector),elements,options)}
/**
* Filter a set of elements by a selector.
*
* Will return elements in the original order.
*
* @param selector Selector to filter by.
* @param elements Elements to filter.
* @param options Options for selector.
*/function filterParsed(selector,elements,options){if(elements.length===0)return[];const[plainSelectors,filteredSelectors]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)(selector);let found;if(plainSelectors.length){const filtered=filterElements(elements,plainSelectors,options);
// If there are no filters, just return
if(filteredSelectors.length===0)return filtered;
// Otherwise, we have to do some filtering
if(filtered.length)found=new Set(filtered)}for(let i=0;i<filteredSelectors.length&&(found===null||found===void 0?void 0:found.size)!==elements.length;i++){const filteredSelector=filteredSelectors[i];const missing=found?elements.filter((e=>domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(e)&&!found.has(e))):elements;if(missing.length===0)break;const filtered=filterBySelector(filteredSelector,elements,options);if(filtered.length)if(!found){
/*
* If we haven't found anything before the last selector,
* just return what we found now.
*/
if(i===filteredSelectors.length-1)return filtered;found=new Set(filtered)}else filtered.forEach((el=>found.add(el)))}return typeof found!=="undefined"?found.size===elements.length?elements:// Filter elements to preserve order
elements.filter((el=>found.has(el))):[]}function filterBySelector(selector,elements,options){var _a;if(selector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)){
/*
* Get root node, run selector with the scope
* set to all of our nodes.
*/
const root=(_a=options.root)!==null&&_a!==void 0?_a:(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.getDocumentRoot)(elements[0]);const opts={...options,context:elements,relativeSelector:false};selector.push(SCOPE_PSEUDO);return findFilterElements(root,selector,opts,true,elements.length)}
// Performance optimization: If we don't have to traverse, just filter set.
return findFilterElements(elements,selector,options,false,elements.length)}function select(selector,root,options={},limit=1/0){if(typeof selector==="function")return find(root,selector);const[plain,filtered]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));const results=filtered.map((sel=>findFilterElements(root,sel,options,true,limit)));
// Plain selectors can be queried in a single go
if(plain.length)results.push(findElements(root,plain,options,limit));if(results.length===0)return[];
// If there was only a single selector, just return the result
if(results.length===1)return results[0];
// Sort results, filtering for duplicates
return domutils__WEBPACK_IMPORTED_MODULE_1__.uniqueSort(results.reduce(((a,b)=>[...a,...b])))}
/**
*
* @param root Element(s) to search from.
* @param selector Selector to look for.
* @param options Options for querying.
* @param queryForSelector Query multiple levels deep for the initial selector, even if it doesn't contain a traversal.
*/function findFilterElements(root,selector,options,queryForSelector,totalLimit){const filterIndex=selector.findIndex(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter);const sub=selector.slice(0,filterIndex);const filter=selector[filterIndex];
// If we are at the end of the selector, we can limit the number of elements to retrieve.
const partLimit=selector.length-1===filterIndex?totalLimit:1/0;
/*
* Set the number of elements to retrieve.
* Eg. for :first, we only have to get a single element.
*/const limit=(0,_positionals_js__WEBPACK_IMPORTED_MODULE_4__.getLimit)(filter.name,filter.data,partLimit);if(limit===0)return[];
/*
* Skip `findElements` call if our selector starts with a positional
* pseudo.
*/const elemsNoLimit=sub.length===0&&!Array.isArray(root)?domutils__WEBPACK_IMPORTED_MODULE_1__.getChildren(root).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag):sub.length===0?(Array.isArray(root)?root:[root]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag):queryForSelector||sub.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)?findElements(root,[sub],options,limit):filterElements(root,[sub],options);const elems=elemsNoLimit.slice(0,limit);let result=filterByPosition(filter.name,elems,filter.data,options);if(result.length===0||selector.length===filterIndex+1)return result;const remainingSelector=selector.slice(filterIndex+1);const remainingHasTraversal=remainingSelector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal);if(remainingHasTraversal){if((0,css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)(remainingSelector[0])){const{type}=remainingSelector[0];if(type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Sibling||type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Adjacent)
// If we have a sibling traversal, we need to also look at the siblings.
result=(0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(result,domutils__WEBPACK_IMPORTED_MODULE_1__,true);
// Avoid a traversal-first selector error.
remainingSelector.unshift(UNIVERSAL_SELECTOR)}options={...options,
// Avoid absolutizing the selector
relativeSelector:false,
/*
* Add a custom root func, to make sure traversals don't match elements
* that aren't a part of the considered tree.
*/
rootFunc:el=>result.includes(el)}}else if(options.rootFunc&&options.rootFunc!==boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc)options={...options,rootFunc:boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc};
/*
* If we have another filter, recursively call `findFilterElements`,
* with the `recursive` flag disabled. We only have to look for more
* elements when we see a traversal.
*
* Otherwise,
*/return remainingSelector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter)?findFilterElements(result,remainingSelector,options,false,totalLimit):remainingHasTraversal?// Query existing elements to resolve traversal.
findElements(result,[remainingSelector],options,totalLimit):// If we don't have any more traversals, simply filter elements.
filterElements(result,[remainingSelector],options)}function findElements(root,sel,options,limit){const query=(0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel,options,root);return find(root,query,limit)}function find(root,query,limit=1/0){const elems=(0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(root,domutils__WEBPACK_IMPORTED_MODULE_1__,query.shouldTestNextSiblings);return domutils__WEBPACK_IMPORTED_MODULE_1__.find((node=>domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(node)&&query(node)),elems,true,limit)}function filterElements(elements,sel,options){const els=(Array.isArray(elements)?elements:[elements]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag);if(els.length===0)return els;const query=(0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel,options);return query===boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc?els:els.filter(query)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/cheerio-select/lib/esm/positionals.js":
/*!************************************************************!*\
!*** ./node_modules/cheerio-select/lib/esm/positionals.js ***!
\************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */filterNames:()=>/* binding */filterNames
/* harmony export */,getLimit:()=>/* binding */getLimit
/* harmony export */,isFilter:()=>/* binding */isFilter
/* harmony export */});const filterNames=new Set(["first","last","eq","gt","nth","lt","even","odd"]);function isFilter(s){if(s.type!=="pseudo")return false;if(filterNames.has(s.name))return true;if(s.name==="not"&&Array.isArray(s.data))
// Only consider `:not` with embedded filters
return s.data.some((s=>s.some(isFilter)));return false}function getLimit(filter,data,partLimit){const num=data!=null?parseInt(data,10):NaN;switch(filter){case"first":return 1;case"nth":case"eq":return isFinite(num)?num>=0?num+1:1/0:0;case"lt":return isFinite(num)?num>=0?Math.min(num,partLimit):1/0:0;case"gt":return isFinite(num)?1/0:0;case"odd":return 2*partLimit;case"even":return 2*partLimit-1;case"last":case"not":return 1/0}}
//# sourceMappingURL=positionals.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/attributes.js":
/*!*************************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/attributes.js ***!
\*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */addClass:()=>/* binding */addClass
/* harmony export */,attr:()=>/* binding */attr
/* harmony export */,data:()=>/* binding */data
/* harmony export */,hasClass:()=>/* binding */hasClass
/* harmony export */,prop:()=>/* binding */prop
/* harmony export */,removeAttr:()=>/* binding */removeAttr
/* harmony export */,removeClass:()=>/* binding */removeClass
/* harmony export */,toggleClass:()=>/* binding */toggleClass
/* harmony export */,val:()=>/* binding */val
/* harmony export */});
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
* Methods for getting and modifying attributes.
*
* @module cheerio/attributes
*/const hasOwn=Object.prototype.hasOwnProperty;const rspace=/\s+/;const dataAttrPrefix="data-";
// Attributes that are booleans
const rboolean=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;
// Matches strings that look like JSON objects or arrays
const rbrace=/^{[^]*}$|^\[[^]*]$/;function getAttr(elem,name,xmlMode){var _a;if(!elem||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))return;(_a=elem.attribs)!==null&&_a!==void 0?_a:elem.attribs={};
// Return the entire attribs object if no attribute specified
if(!name)return elem.attribs;if(hasOwn.call(elem.attribs,name))
// Get the (decoded) attribute
return!xmlMode&&rboolean.test(name)?name:elem.attribs[name];
// Mimic the DOM and return text content as value for `option's`
if(elem.name==="option"&&name==="value")return(0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(elem.children);
// Mimic DOM with default value for radios/checkboxes
if(elem.name==="input"&&(elem.attribs["type"]==="radio"||elem.attribs["type"]==="checkbox")&&name==="value")return"on";return}
/**
* Sets the value of an attribute. The attribute will be deleted if the value is
* `null`.
*
* @private
* @param el - The element to set the attribute on.
* @param name - The attribute's name.
* @param value - The attribute's value.
*/function setAttr(el,name,value){if(value===null)removeAttribute(el,name);else el.attribs[name]=`${value}`}function attr(name,value){
// Set the value (with attr map support)
if(typeof name==="object"||value!==void 0){if(typeof value==="function"){if(typeof name!=="string")throw new Error("Bad combination of arguments.");return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))setAttr(el,name,value.call(el,i,el.attribs[name]))}))}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(typeof name==="object")for(const objName of Object.keys(name)){const objValue=name[objName];setAttr(el,objName,objValue)}else setAttr(el,name,value)}))}return arguments.length>1?this:getAttr(this[0],name,this.options.xmlMode)}
/**
* Gets a node's prop.
*
* @private
* @category Attributes
* @param el - Element to get the prop of.
* @param name - Name of the prop.
* @param xmlMode - Disable handling of special HTML attributes.
* @returns The prop's value.
*/function getProp(el,name,xmlMode){return name in el?// @ts-expect-error TS doesn't like us accessing the value directly here.
el[name]:!xmlMode&&rboolean.test(name)?getAttr(el,name,false)!==void 0:getAttr(el,name,xmlMode)}
/**
* Sets the value of a prop.
*
* @private
* @param el - The element to set the prop on.
* @param name - The prop's name.
* @param value - The prop's value.
* @param xmlMode - Disable handling of special HTML attributes.
*/function setProp(el,name,value,xmlMode){if(name in el)
// @ts-expect-error Overriding value
el[name]=value;else setAttr(el,name,!xmlMode&&rboolean.test(name)?value?"":null:`${value}`)}function prop(name,value){var _a;if(typeof name==="string"&&value===void 0){const el=this[0];if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;switch(name){case"style":{const property=this.css();const keys=Object.keys(property);for(let i=0;i<keys.length;i++)property[i]=keys[i];property.length=keys.length;return property}case"tagName":case"nodeName":return el.name.toUpperCase();case"href":case"src":{const prop=(_a=el.attribs)===null||_a===void 0?void 0:_a[name];if(typeof URL!=="undefined"&&(name==="href"&&(el.tagName==="a"||el.tagName==="link")||name==="src"&&(el.tagName==="img"||el.tagName==="iframe"||el.tagName==="audio"||el.tagName==="video"||el.tagName==="source"))&&prop!==void 0&&this.options.baseURI)return new URL(prop,this.options.baseURI).href;return prop}case"innerText":return(0,domutils__WEBPACK_IMPORTED_MODULE_3__.innerText)(el);case"textContent":return(0,domutils__WEBPACK_IMPORTED_MODULE_3__.textContent)(el);case"outerHTML":return this.clone().wrap("<container />").parent().html();case"innerHTML":return this.html();default:return getProp(el,name,this.options.xmlMode)}}if(typeof name==="object"||value!==void 0){if(typeof value==="function"){if(typeof name==="object")throw new TypeError("Bad combination of arguments.");return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))setProp(el,name,value.call(el,i,getProp(el,name,this.options.xmlMode)),this.options.xmlMode)}))}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(typeof name==="object")for(const key of Object.keys(name)){const val=name[key];setProp(el,key,val,this.options.xmlMode)}else setProp(el,name,value,this.options.xmlMode)}))}return}
/**
* Sets the value of a data attribute.
*
* @private
* @param elem - The element to set the data attribute on.
* @param name - The data attribute's name.
* @param value - The data attribute's value.
*/function setData(elem,name,value){var _a;(_a=elem.data)!==null&&_a!==void 0?_a:elem.data={};if(typeof name==="object")Object.assign(elem.data,name);else if(typeof name==="string"&&value!==void 0)elem.data[name]=value}
/**
* Read _all_ HTML5 `data-*` attributes from the equivalent HTML5 `data-*`
* attribute, and cache the value in the node's internal data store.
*
* @private
* @category Attributes
* @param el - Element to get the data attribute of.
* @returns A map with all of the data attributes.
*/function readAllData(el){for(const domName of Object.keys(el.attribs)){if(!domName.startsWith(dataAttrPrefix))continue;const jsName=(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.camelCase)(domName.slice(dataAttrPrefix.length));if(!hasOwn.call(el.data,jsName))el.data[jsName]=parseDataValue(el.attribs[domName])}return el.data}
/**
* Read the specified attribute from the equivalent HTML5 `data-*` attribute,
* and (if present) cache the value in the node's internal data store.
*
* @private
* @category Attributes
* @param el - Element to get the data attribute of.
* @param name - Name of the data attribute.
* @returns The data attribute's value.
*/function readData(el,name){const domName=dataAttrPrefix+(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.cssCase)(name);const data=el.data;if(hasOwn.call(data,name))return data[name];if(hasOwn.call(el.attribs,domName))return data[name]=parseDataValue(el.attribs[domName]);return}
/**
* Coerce string data-* attributes to their corresponding JavaScript primitives.
*
* @private
* @category Attributes
* @param value - The value to parse.
* @returns The parsed value.
*/function parseDataValue(value){if(value==="null")return null;if(value==="true")return true;if(value==="false")return false;const num=Number(value);if(value===String(num))return num;if(rbrace.test(value))try{return JSON.parse(value)}catch{
/* Ignore */}return value}function data(name,value){var _a;const elem=this[0];if(!elem||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))return;const dataEl=elem;(_a=dataEl.data)!==null&&_a!==void 0?_a:dataEl.data={};
// Return the entire data object if no data specified
if(name==null)return readAllData(dataEl);
// Set the value (with attr map support)
if(typeof name==="object"||value!==void 0){(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))if(typeof name==="object")setData(el,name);else setData(el,name,value)}));return this}return readData(dataEl,name)}function val(value){const querying=arguments.length===0;const element=this[0];if(!element||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(element))return querying?void 0:this;switch(element.name){case"textarea":return this.text(value);case"select":{const option=this.find("option:selected");if(!querying){if(this.attr("multiple")==null&&typeof value==="object")return this;this.find("option").removeAttr("selected");const values=typeof value==="object"?value:[value];for(const val of values)this.find(`option[value="${val}"]`).attr("selected","");return this}return this.attr("multiple")?option.toArray().map((el=>(0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(el.children))):option.attr("value")}case"input":case"option":return querying?this.attr("value"):this.attr("value",value)}return}
/**
* Remove an attribute.
*
* @private
* @param elem - Node to remove attribute from.
* @param name - Name of the attribute to remove.
*/function removeAttribute(elem,name){if(!elem.attribs||!hasOwn.call(elem.attribs,name))return;delete elem.attribs[name]}
/**
* Splits a space-separated list of names to individual names.
*
* @category Attributes
* @param names - Names to split.
* @returns - Split names.
*/function splitNames(names){return names?names.trim().split(rspace):[]}
/**
* Method for removing attributes by `name`.
*
* @category Attributes
* @example
*
* ```js
* $('.pear').removeAttr('class').html();
* //=> <li>Pear</li>
*
* $('.apple').attr('id', 'favorite');
* $('.apple').removeAttr('id class').html();
* //=> <li>Apple</li>
* ```
*
* @param name - Name of the attribute.
* @returns The instance itself.
* @see {@link https://api.jquery.com/removeAttr/}
*/function removeAttr(name){const attrNames=splitNames(name);for(const attrName of attrNames)(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(elem=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))removeAttribute(elem,attrName)}));return this}
/**
* Check to see if _any_ of the matched elements have the given `className`.
*
* @category Attributes
* @example
*
* ```js
* $('.pear').hasClass('pear');
* //=> true
*
* $('apple').hasClass('fruit');
* //=> false
*
* $('li').hasClass('pear');
* //=> true
* ```
*
* @param className - Name of the class.
* @returns Indicates if an element has the given `className`.
* @see {@link https://api.jquery.com/hasClass/}
*/function hasClass(className){return this.toArray().some((elem=>{const clazz=(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem)&&elem.attribs["class"];let idx=-1;if(clazz&&className.length>0)while((idx=clazz.indexOf(className,idx+1))>-1){const end=idx+className.length;if((idx===0||rspace.test(clazz[idx-1]))&&(end===clazz.length||rspace.test(clazz[end])))return true}return false}))}
/**
* Adds class(es) to all of the matched elements. Also accepts a `function`.
*
* @category Attributes
* @example
*
* ```js
* $('.pear').addClass('fruit').html();
* //=> <li class="pear fruit">Pear</li>
*
* $('.apple').addClass('fruit red').html();
* //=> <li class="apple fruit red">Apple</li>
* ```
*
* @param value - Name of new class.
* @returns The instance itself.
* @see {@link https://api.jquery.com/addClass/}
*/function addClass(value){
// Support functions
if(typeof value==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)){const className=el.attribs["class"]||"";addClass.call([el],value.call(el,i,className))}}));
// Return if no value or not a string or function
if(!value||typeof value!=="string")return this;const classNames=value.split(rspace);const numElements=this.length;for(let i=0;i<numElements;i++){const el=this[i];
// If selected element isn't a tag, move on
if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))continue;
// If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes
const className=getAttr(el,"class",false);if(className){let setClass=` ${className} `;
// Check if class already exists
for(const cn of classNames){const appendClass=`${cn} `;if(!setClass.includes(` ${appendClass}`))setClass+=appendClass}setAttr(el,"class",setClass.trim())}else setAttr(el,"class",classNames.join(" ").trim())}return this}
/**
* Removes one or more space-separated classes from the selected elements. If no
* `className` is defined, all classes will be removed. Also accepts a
* `function`.
*
* @category Attributes
* @example
*
* ```js
* $('.pear').removeClass('pear').html();
* //=> <li class="">Pear</li>
*
* $('.apple').addClass('red').removeClass().html();
* //=> <li class="">Apple</li>
* ```
*
* @param name - Name of the class. If not specified, removes all elements.
* @returns The instance itself.
* @see {@link https://api.jquery.com/removeClass/}
*/function removeClass(name){
// Handle if value is a function
if(typeof name==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))removeClass.call([el],name.call(el,i,el.attribs["class"]||""))}));const classes=splitNames(name);const numClasses=classes.length;const removeAll=arguments.length===0;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(removeAll)
// Short circuit the remove all case as this is the nice one
el.attribs["class"]="";else{const elClasses=splitNames(el.attribs["class"]);let changed=false;for(let j=0;j<numClasses;j++){const index=elClasses.indexOf(classes[j]);if(index>=0){elClasses.splice(index,1);changed=true;
/*
* We have to do another pass to ensure that there are not duplicate
* classes listed
*/j--}}if(changed)el.attribs["class"]=elClasses.join(" ")}}))}
/**
* Add or remove class(es) from the matched elements, depending on either the
* class's presence or the value of the switch argument. Also accepts a
* `function`.
*
* @category Attributes
* @example
*
* ```js
* $('.apple.green').toggleClass('fruit green red').html();
* //=> <li class="apple fruit red">Apple</li>
*
* $('.apple.green').toggleClass('fruit green red', true).html();
* //=> <li class="apple green fruit red">Apple</li>
* ```
*
* @param value - Name of the class. Can also be a function.
* @param stateVal - If specified the state of the class.
* @returns The instance itself.
* @see {@link https://api.jquery.com/toggleClass/}
*/function toggleClass(value,stateVal){
// Support functions
if(typeof value==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))toggleClass.call([el],value.call(el,i,el.attribs["class"]||"",stateVal),stateVal)}));
// Return if no value or not a string or function
if(!value||typeof value!=="string")return this;const classNames=value.split(rspace);const numClasses=classNames.length;const state=typeof stateVal==="boolean"?stateVal?1:-1:0;const numElements=this.length;for(let i=0;i<numElements;i++){const el=this[i];
// If selected element isn't a tag, move on
if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))continue;const elementClasses=splitNames(el.attribs["class"]);
// Check if class already exists
for(let j=0;j<numClasses;j++){
// Check if the class name is currently defined
const index=elementClasses.indexOf(classNames[j]);
// Add if stateValue === true or we are toggling and there is no value
if(state>=0&&index<0)elementClasses.push(classNames[j]);else if(state<=0&&index>=0)
// Otherwise remove but only if the item exists
elementClasses.splice(index,1)}el.attribs["class"]=elementClasses.join(" ")}return this}
//# sourceMappingURL=attributes.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/css.js":
/*!******************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/css.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */css:()=>/* binding */css
/* harmony export */});
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
* Set multiple CSS properties for every matched element.
*
* @category CSS
* @param prop - The names of the properties.
* @param val - The new values.
* @returns The instance itself.
* @see {@link https://api.jquery.com/css/}
*/function css(prop,val){if(prop!=null&&val!=null||
// When `prop` is a "plain" object
typeof prop==="object"&&!Array.isArray(prop))return(0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el))
// `prop` can't be an array here anymore.
setCss(el,prop,val,i)}));if(this.length===0)return;return getCss(this[0],prop)}
/**
* Set styles of all elements.
*
* @private
* @param el - Element to set style of.
* @param prop - Name of property.
* @param value - Value to set property to.
* @param idx - Optional index within the selection.
*/function setCss(el,prop,value,idx){if(typeof prop==="string"){const styles=getCss(el);const val=typeof value==="function"?value.call(el,idx,styles[prop]):value;if(val==="")delete styles[prop];else if(val!=null)styles[prop]=val;el.attribs["style"]=stringify(styles)}else if(typeof prop==="object"){const keys=Object.keys(prop);for(let i=0;i<keys.length;i++){const k=keys[i];setCss(el,k,prop[k],i)}}}function getCss(el,prop){if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el))return;const styles=parse(el.attribs["style"]);if(typeof prop==="string")return styles[prop];if(Array.isArray(prop)){const newStyles={};for(const item of prop)if(styles[item]!=null)newStyles[item]=styles[item];return newStyles}return styles}
/**
* Stringify `obj` to styles.
*
* @private
* @category CSS
* @param obj - Object to stringify.
* @returns The serialized styles.
*/function stringify(obj){return Object.keys(obj).reduce(((str,prop)=>`${str}${str?" ":""}${prop}: ${obj[prop]};`),"")}
/**
* Parse `styles`.
*
* @private
* @category CSS
* @param styles - Styles to be parsed.
* @returns The parsed styles.
*/function parse(styles){styles=(styles||"").trim();if(!styles)return{};const obj={};let key;for(const str of styles.split(";")){const n=str.indexOf(":");
// If there is no :, or if it is the first/last character, add to the previous item's value
if(n<1||n===str.length-1){const trimmed=str.trimEnd();if(trimmed.length>0&&key!==void 0)obj[key]+=`;${trimmed}`}else{key=str.slice(0,n).trim();obj[key]=str.slice(n+1).trim()}}return obj}
//# sourceMappingURL=css.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/extract.js":
/*!**********************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/extract.js ***!
\**********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */extract:()=>/* binding */extract
/* harmony export */});function getExtractDescr(descr){var _a;if(typeof descr==="string")return{selector:descr,value:"textContent"};return{selector:descr.selector,value:(_a=descr.value)!==null&&_a!==void 0?_a:"textContent"}}
/**
* Extract multiple values from a document, and store them in an object.
*
* @param map - An object containing key-value pairs. The keys are the names of
* the properties to be created on the object, and the values are the
* selectors to be used to extract the values.
* @returns An object containing the extracted values.
*/function extract(map){const ret={};for(const key in map){const descr=map[key];const isArray=Array.isArray(descr);const{selector,value}=getExtractDescr(isArray?descr[0]:descr);const fn=typeof value==="function"?value:typeof value==="string"?el=>this._make(el).prop(value):el=>this._make(el).extract(value);if(isArray)ret[key]=this._findBySelector(selector,Number.POSITIVE_INFINITY).map(((_,el)=>fn(el,key,ret))).get();else{const $=this._findBySelector(selector,1);ret[key]=$.length>0?fn($[0],key,ret):void 0}}return ret}
//# sourceMappingURL=extract.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/forms.js":
/*!********************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/forms.js ***!
\********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */serialize:()=>/* binding */serialize
/* harmony export */,serializeArray:()=>/* binding */serializeArray
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/*
* https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js
* https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js
*/const submittableSelector="input,select,textarea,keygen";const r20=/%20/g;const rCRLF=/\r?\n/g;
/**
* Encode a set of form elements as a string for submission.
*
* @category Forms
* @example
*
* ```js
* $('<form><input name="foo" value="bar" /></form>').serialize();
* //=> 'foo=bar'
* ```
*
* @returns The serialized form.
* @see {@link https://api.jquery.com/serialize/}
*/function serialize(){
// Convert form elements into name/value objects
const arr=this.serializeArray();
// Serialize each element into a key/value string
const retArr=arr.map((data=>`${encodeURIComponent(data.name)}=${encodeURIComponent(data.value)}`));
// Return the resulting serialization
return retArr.join("&").replace(r20,"+")}
/**
* Encode a set of form elements as an array of names and values.
*
* @category Forms
* @example
*
* ```js
* $('<form><input name="foo" value="bar" /></form>').serializeArray();
* //=> [ { name: 'foo', value: 'bar' } ]
* ```
*
* @returns The serialized form.
* @see {@link https://api.jquery.com/serializeArray/}
*/function serializeArray(){
// Resolve all form elements from either forms or collections of form elements
return this.map(((_,elem)=>{const $elem=this._make(elem);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.name==="form")return $elem.find(submittableSelector).toArray();return $elem.filter(submittableSelector).toArray()})).filter(
// Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)
'[name!=""]:enabled'+
// And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)
":not(:submit, :button, :image, :reset, :file)"+
// And are either checked/don't have a checkable state
":matches([checked], :not(:checkbox, :radio))").map(((_,elem)=>{var _a;const $elem=this._make(elem);const name=$elem.attr("name");// We have filtered for elements with a name before.
// If there is no value set (e.g. `undefined`, `null`), then default value to empty
const value=(_a=$elem.val())!==null&&_a!==void 0?_a:"";
// If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs
if(Array.isArray(value))return value.map((val=>(
/*
* We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms
* These can occur inside of `<textarea>'s`
*/
{name,value:val.replace(rCRLF,"\r\n")})));
// Otherwise (e.g. `<input type="text">`, return only one key/value pair
return{name,value:value.replace(rCRLF,"\r\n")}})).toArray()}
//# sourceMappingURL=forms.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/manipulation.js":
/*!***************************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/manipulation.js ***!
\***************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_makeDomArray:()=>/* binding */_makeDomArray
/* harmony export */,after:()=>/* binding */after
/* harmony export */,append:()=>/* binding */append
/* harmony export */,appendTo:()=>/* binding */appendTo
/* harmony export */,before:()=>/* binding */before
/* harmony export */,clone:()=>/* binding */clone
/* harmony export */,empty:()=>/* binding */empty
/* harmony export */,html:()=>/* binding */html
/* harmony export */,insertAfter:()=>/* binding */insertAfter
/* harmony export */,insertBefore:()=>/* binding */insertBefore
/* harmony export */,prepend:()=>/* binding */prepend
/* harmony export */,prependTo:()=>/* binding */prependTo
/* harmony export */,remove:()=>/* binding */remove
/* harmony export */,replaceWith:()=>/* binding */replaceWith
/* harmony export */,text:()=>/* binding */text
/* harmony export */,toString:()=>/* binding */toString
/* harmony export */,unwrap:()=>/* binding */unwrap
/* harmony export */,wrap:()=>/* binding */wrap
/* harmony export */,wrapAll:()=>/* binding */wrapAll
/* harmony export */,wrapInner:()=>/* binding */wrapInner
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../parse.js */"./node_modules/cheerio/dist/browser/parse.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
* Methods for modifying the DOM structure.
*
* @module cheerio/manipulation
*/
/**
* Create an array of nodes, recursing into arrays and parsing strings if
* necessary.
*
* @private
* @category Manipulation
* @param elem - Elements to make an array of.
* @param clone - Optionally clone nodes.
* @returns The array of nodes.
*/function _makeDomArray(elem,clone){if(elem==null)return[];if(typeof elem==="string")return this._parse(elem,this.options,false,null).children.slice(0);if("length"in elem){if(elem.length===1)return this._makeDomArray(elem[0],clone);const result=[];for(let i=0;i<elem.length;i++){const el=elem[i];if(typeof el==="object"){if(el==null)continue;if(!("length"in el)){result.push(clone?(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(el,true):el);continue}}result.push(...this._makeDomArray(el,clone))}return result}return[clone?(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(elem,true):elem]}function _insert(concatenator){return function(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);concatenator(dom,el.children,el)}))}}
/**
* Modify an array in-place, removing some number of elements and adding new
* elements directly following them.
*
* @private
* @category Manipulation
* @param array - Target array to splice.
* @param spliceIdx - Index at which to begin changing the array.
* @param spliceCount - Number of elements to remove from the array.
* @param newElems - Elements to insert into the array.
* @param parent - The parent of the node.
* @returns The spliced array.
*/function uniqueSplice(array,spliceIdx,spliceCount,newElems,parent){var _a,_b;const spliceArgs=[spliceIdx,spliceCount,...newElems];const prev=spliceIdx===0?null:array[spliceIdx-1];const next=spliceIdx+spliceCount>=array.length?null:array[spliceIdx+spliceCount];
/*
* Before splicing in new elements, ensure they do not already appear in the
* current array.
*/for(let idx=0;idx<newElems.length;++idx){const node=newElems[idx];const oldParent=node.parent;if(oldParent){const oldSiblings=oldParent.children;const prevIdx=oldSiblings.indexOf(node);if(prevIdx>-1){oldParent.children.splice(prevIdx,1);if(parent===oldParent&&spliceIdx>prevIdx)spliceArgs[0]--}}node.parent=parent;if(node.prev)node.prev.next=(_a=node.next)!==null&&_a!==void 0?_a:null;if(node.next)node.next.prev=(_b=node.prev)!==null&&_b!==void 0?_b:null;node.prev=idx===0?prev:newElems[idx-1];node.next=idx===newElems.length-1?next:newElems[idx+1]}if(prev)prev.next=newElems[0];if(next)next.prev=newElems[newElems.length-1];return array.splice(...spliceArgs)}
/**
* Insert every element in the set of matched elements to the end of the target.
*
* @category Manipulation
* @example
*
* ```js
* $('<li class="plum">Plum</li>').appendTo('#fruits');
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // <li class="plum">Plum</li>
* // </ul>
* ```
*
* @param target - Element to append elements to.
* @returns The instance itself.
* @see {@link https://api.jquery.com/appendTo/}
*/function appendTo(target){const appendTarget=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(target)?target:this._make(target);appendTarget.append(this);return this}
/**
* Insert every element in the set of matched elements to the beginning of the
* target.
*
* @category Manipulation
* @example
*
* ```js
* $('<li class="plum">Plum</li>').prependTo('#fruits');
* $.html();
* //=> <ul id="fruits">
* // <li class="plum">Plum</li>
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @param target - Element to prepend elements to.
* @returns The instance itself.
* @see {@link https://api.jquery.com/prependTo/}
*/function prependTo(target){const prependTarget=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(target)?target:this._make(target);prependTarget.prepend(this);return this}
/**
* Inserts content as the _last_ child of each of the selected elements.
*
* @category Manipulation
* @example
*
* ```js
* $('ul').append('<li class="plum">Plum</li>');
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // <li class="plum">Plum</li>
* // </ul>
* ```
*
* @see {@link https://api.jquery.com/append/}
*/const append=_insert(((dom,children,parent)=>{uniqueSplice(children,children.length,0,dom,parent)}));
/**
* Inserts content as the _first_ child of each of the selected elements.
*
* @category Manipulation
* @example
*
* ```js
* $('ul').prepend('<li class="plum">Plum</li>');
* $.html();
* //=> <ul id="fruits">
* // <li class="plum">Plum</li>
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @see {@link https://api.jquery.com/prepend/}
*/const prepend=_insert(((dom,children,parent)=>{uniqueSplice(children,0,0,dom,parent)}));function _wrap(insert){return function(wrapper){const lastIdx=this.length-1;const lastParent=this.parents().last();for(let i=0;i<this.length;i++){const el=this[i];const wrap=typeof wrapper==="function"?wrapper.call(el,i,el):typeof wrapper==="string"&&!(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(wrapper)?lastParent.find(wrapper).clone():wrapper;const[wrapperDom]=this._makeDomArray(wrap,i<lastIdx);if(!wrapperDom||!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(wrapperDom))continue;let elInsertLocation=wrapperDom;
/*
* Find the deepest child. Only consider the first tag child of each node
* (ignore text); stop if no children are found.
*/let j=0;while(j<elInsertLocation.children.length){const child=elInsertLocation.children[j];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(child)){elInsertLocation=child;j=0}else j++}insert(el,elInsertLocation,[wrapperDom])}return this}}
/**
* The .wrap() function can take any string or object that could be passed to
* the $() factory function to specify a DOM structure. This structure may be
* nested several levels deep, but should contain only one inmost element. A
* copy of this structure will be wrapped around each of the elements in the set
* of matched elements. This method returns the original set of elements for
* chaining purposes.
*
* @category Manipulation
* @example
*
* ```js
* const redFruit = $('<div class="red-fruit"></div>');
* $('.apple').wrap(redFruit);
*
* //=> <ul id="fruits">
* // <div class="red-fruit">
* // <li class="apple">Apple</li>
* // </div>
* // <li class="orange">Orange</li>
* // <li class="plum">Plum</li>
* // </ul>
*
* const healthy = $('<div class="healthy"></div>');
* $('li').wrap(healthy);
*
* //=> <ul id="fruits">
* // <div class="healthy">
* // <li class="apple">Apple</li>
* // </div>
* // <div class="healthy">
* // <li class="orange">Orange</li>
* // </div>
* // <div class="healthy">
* // <li class="plum">Plum</li>
* // </div>
* // </ul>
* ```
*
* @param wrapper - The DOM structure to wrap around each element in the
* selection.
* @see {@link https://api.jquery.com/wrap/}
*/const wrap=_wrap(((el,elInsertLocation,wrapperDom)=>{const{parent}=el;if(!parent)return;const siblings=parent.children;const index=siblings.indexOf(el);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)([el],elInsertLocation);
/*
* The previous operation removed the current element from the `siblings`
* array, so the `dom` array can be inserted without removing any
* additional elements.
*/uniqueSplice(siblings,index,0,wrapperDom,parent)}));
/**
* The .wrapInner() function can take any string or object that could be passed
* to the $() factory function to specify a DOM structure. This structure may be
* nested several levels deep, but should contain only one inmost element. The
* structure will be wrapped around the content of each of the elements in the
* set of matched elements.
*
* @category Manipulation
* @example
*
* ```js
* const redFruit = $('<div class="red-fruit"></div>');
* $('.apple').wrapInner(redFruit);
*
* //=> <ul id="fruits">
* // <li class="apple">
* // <div class="red-fruit">Apple</div>
* // </li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
*
* const healthy = $('<div class="healthy"></div>');
* $('li').wrapInner(healthy);
*
* //=> <ul id="fruits">
* // <li class="apple">
* // <div class="healthy">Apple</div>
* // </li>
* // <li class="orange">
* // <div class="healthy">Orange</div>
* // </li>
* // <li class="pear">
* // <div class="healthy">Pear</div>
* // </li>
* // </ul>
* ```
*
* @param wrapper - The DOM structure to wrap around the content of each element
* in the selection.
* @returns The instance itself, for chaining.
* @see {@link https://api.jquery.com/wrapInner/}
*/const wrapInner=_wrap(((el,elInsertLocation,wrapperDom)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(el.children,elInsertLocation);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(wrapperDom,el)}));
/**
* The .unwrap() function, removes the parents of the set of matched elements
* from the DOM, leaving the matched elements in their place.
*
* @category Manipulation
* @example <caption>without selector</caption>
*
* ```js
* const $ = cheerio.load(
* '<div id=test>\n <div><p>Hello</p></div>\n <div><p>World</p></div>\n</div>',
* );
* $('#test p').unwrap();
*
* //=> <div id=test>
* // <p>Hello</p>
* // <p>World</p>
* // </div>
* ```
*
* @example <caption>with selector</caption>
*
* ```js
* const $ = cheerio.load(
* '<div id=test>\n <p>Hello</p>\n <b><p>World</p></b>\n</div>',
* );
* $('#test p').unwrap('b');
*
* //=> <div id=test>
* // <p>Hello</p>
* // <p>World</p>
* // </div>
* ```
*
* @param selector - A selector to check the parent element against. If an
* element's parent does not match the selector, the element won't be
* unwrapped.
* @returns The instance itself, for chaining.
* @see {@link https://api.jquery.com/unwrap/}
*/function unwrap(selector){this.parent(selector).not("body").each(((_,el)=>{this._make(el).replaceWith(el.children)}));return this}
/**
* The .wrapAll() function can take any string or object that could be passed to
* the $() function to specify a DOM structure. This structure may be nested
* several levels deep, but should contain only one inmost element. The
* structure will be wrapped around all of the elements in the set of matched
* elements, as a single group.
*
* @category Manipulation
* @example <caption>With markup passed to `wrapAll`</caption>
*
* ```js
* const $ = cheerio.load(
* '<div class="container"><div class="inner">First</div><div class="inner">Second</div></div>',
* );
* $('.inner').wrapAll("<div class='new'></div>");
*
* //=> <div class="container">
* // <div class='new'>
* // <div class="inner">First</div>
* // <div class="inner">Second</div>
* // </div>
* // </div>
* ```
*
* @example <caption>With an existing cheerio instance</caption>
*
* ```js
* const $ = cheerio.load(
* '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>',
* );
* const wrap = $('<div><p><em><b></b></em></p></div>');
* $('span').wrapAll(wrap);
*
* //=> <div>
* // <p>
* // <em>
* // <b>
* // <span>Span 1</span>
* // <span>Span 2</span>
* // </b>
* // </em>
* // </p>
* // </div>
* // <strong>Strong</strong>
* ```
*
* @param wrapper - The DOM structure to wrap around all matched elements in the
* selection.
* @returns The instance itself.
* @see {@link https://api.jquery.com/wrapAll/}
*/function wrapAll(wrapper){const el=this[0];if(el){const wrap=this._make(typeof wrapper==="function"?wrapper.call(el,0,el):wrapper).insertBefore(el);
// If html is given as wrapper, wrap may contain text elements
let elInsertLocation;for(let i=0;i<wrap.length;i++)if(wrap[i].type==="tag")elInsertLocation=wrap[i];let j=0;
/*
* Find the deepest child. Only consider the first tag child of each node
* (ignore text); stop if no children are found.
*/while(elInsertLocation&&j<elInsertLocation.children.length){const child=elInsertLocation.children[j];if(child.type==="tag"){elInsertLocation=child;j=0}else j++}if(elInsertLocation)this._make(elInsertLocation).append(this)}return this}
/**
* Insert content next to each element in the set of matched elements.
*
* @category Manipulation
* @example
*
* ```js
* $('.apple').after('<li class="plum">Plum</li>');
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="plum">Plum</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @param elems - HTML string, DOM element, array of DOM elements or Cheerio to
* insert after each element in the set of matched elements.
* @returns The instance itself.
* @see {@link https://api.jquery.com/after/}
*/function after(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el)||!el.parent)return;const siblings=el.parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);
// Add element after `this` element
uniqueSplice(siblings,index+1,0,dom,el.parent)}))}
/**
* Insert every element in the set of matched elements after the target.
*
* @category Manipulation
* @example
*
* ```js
* $('<li class="plum">Plum</li>').insertAfter('.apple');
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="plum">Plum</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @param target - Element to insert elements after.
* @returns The set of newly inserted elements.
* @see {@link https://api.jquery.com/insertAfter/}
*/function insertAfter(target){if(typeof target==="string")target=this._make(target);this.remove();const clones=[];for(const el of this._makeDomArray(target)){const clonedSelf=this.clone().toArray();const{parent}=el;if(!parent)continue;const siblings=parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)continue;
// Add cloned `this` element(s) after target element
uniqueSplice(siblings,index+1,0,clonedSelf,parent);clones.push(...clonedSelf)}return this._make(clones)}
/**
* Insert content previous to each element in the set of matched elements.
*
* @category Manipulation
* @example
*
* ```js
* $('.apple').before('<li class="plum">Plum</li>');
* $.html();
* //=> <ul id="fruits">
* // <li class="plum">Plum</li>
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @param elems - HTML string, DOM element, array of DOM elements or Cheerio to
* insert before each element in the set of matched elements.
* @returns The instance itself.
* @see {@link https://api.jquery.com/before/}
*/function before(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el)||!el.parent)return;const siblings=el.parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);
// Add element before `el` element
uniqueSplice(siblings,index,0,dom,el.parent)}))}
/**
* Insert every element in the set of matched elements before the target.
*
* @category Manipulation
* @example
*
* ```js
* $('<li class="plum">Plum</li>').insertBefore('.apple');
* $.html();
* //=> <ul id="fruits">
* // <li class="plum">Plum</li>
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="pear">Pear</li>
* // </ul>
* ```
*
* @param target - Element to insert elements before.
* @returns The set of newly inserted elements.
* @see {@link https://api.jquery.com/insertBefore/}
*/function insertBefore(target){const targetArr=this._make(target);this.remove();const clones=[];(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(targetArr,(el=>{const clonedSelf=this.clone().toArray();const{parent}=el;if(!parent)return;const siblings=parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;
// Add cloned `this` element(s) after target element
uniqueSplice(siblings,index,0,clonedSelf,parent);clones.push(...clonedSelf)}));return this._make(clones)}
/**
* Removes the set of matched elements from the DOM and all their children.
* `selector` filters the set of matched elements to be removed.
*
* @category Manipulation
* @example
*
* ```js
* $('.pear').remove();
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // </ul>
* ```
*
* @param selector - Optional selector for elements to remove.
* @returns The instance itself.
* @see {@link https://api.jquery.com/remove/}
*/function remove(selector){
// Filter if we have selector
const elems=selector?this.filter(selector):this;(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(elems,(el=>{(0,domutils__WEBPACK_IMPORTED_MODULE_4__.removeElement)(el);el.prev=el.next=el.parent=null}));return this}
/**
* Replaces matched elements with `content`.
*
* @category Manipulation
* @example
*
* ```js
* const plum = $('<li class="plum">Plum</li>');
* $('.pear').replaceWith(plum);
* $.html();
* //=> <ul id="fruits">
* // <li class="apple">Apple</li>
* // <li class="orange">Orange</li>
* // <li class="plum">Plum</li>
* // </ul>
* ```
*
* @param content - Replacement for matched elements.
* @returns The instance itself.
* @see {@link https://api.jquery.com/replaceWith/}
*/function replaceWith(content){return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{const{parent}=el;if(!parent)return;const siblings=parent.children;const cont=typeof content==="function"?content.call(el,i,el):content;const dom=this._makeDomArray(cont);
/*
* In the case that `dom` contains nodes that already exist in other
* structures, ensure those nodes are properly removed.
*/(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(dom,null);const index=siblings.indexOf(el);
// Completely remove old element
uniqueSplice(siblings,index,1,dom,parent);if(!dom.includes(el))el.parent=el.prev=el.next=null}))}
/**
* Removes all children from each item in the selection. Text nodes and comment
* nodes are left as is.
*
* @category Manipulation
* @example
*
* ```js
* $('ul').empty();
* $.html();
* //=> <ul id="fruits"></ul>
* ```
*
* @returns The instance itself.
* @see {@link https://api.jquery.com/empty/}
*/function empty(){return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;el.children.length=0}))}function html(str){if(str===void 0){const el=this[0];if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return null;return this._render(el.children)}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;const content=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(str)?str.toArray():this._parse(`${str}`,this.options,false,el).children;(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(content,el)}))}
/**
* Turns the collection to a string. Alias for `.html()`.
*
* @category Manipulation
* @returns The rendered document.
*/function toString(){return this._render(this)}function text(str){
// If `str` is undefined, act as a "getter"
if(str===void 0)return(0,_static_js__WEBPACK_IMPORTED_MODULE_2__.text)(this);if(typeof str==="function")
// Function support
return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>this._make(el).text(str.call(el,i,(0,_static_js__WEBPACK_IMPORTED_MODULE_2__.text)([el])))));
// Append text node to each selected elements
return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;const textNode=new domhandler__WEBPACK_IMPORTED_MODULE_0__.Text(`${str}`);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(textNode,el)}))}
/**
* Clone the cheerio object.
*
* @category Manipulation
* @example
*
* ```js
* const moreFruit = $('#fruits').clone();
* ```
*
* @returns The cloned object.
* @see {@link https://api.jquery.com/clone/}
*/function clone(){const clone=Array.prototype.map.call(this.get(),(el=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(el,true)));
// Add a root node around the cloned nodes
const root=new domhandler__WEBPACK_IMPORTED_MODULE_0__.Document(clone);for(const node of clone)node.parent=root;return this._make(clone)}
//# sourceMappingURL=manipulation.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/traversing.js":
/*!*************************************************************!*\
!*** ./node_modules/cheerio/dist/browser/api/traversing.js ***!
\*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_findBySelector:()=>/* binding */_findBySelector
/* harmony export */,add:()=>/* binding */add
/* harmony export */,addBack:()=>/* binding */addBack
/* harmony export */,children:()=>/* binding */children
/* harmony export */,closest:()=>/* binding */closest
/* harmony export */,contents:()=>/* binding */contents
/* harmony export */,each:()=>/* binding */each
/* harmony export */,end:()=>/* binding */end
/* harmony export */,eq:()=>/* binding */eq
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,filterArray:()=>/* binding */filterArray
/* harmony export */,find:()=>/* binding */find
/* harmony export */,first:()=>/* binding */first
/* harmony export */,get:()=>/* binding */get
/* harmony export */,has:()=>/* binding */has
/* harmony export */,index:()=>/* binding */index
/* harmony export */,is:()=>/* binding */is
/* harmony export */,last:()=>/* binding */last
/* harmony export */,map:()=>/* binding */map
/* harmony export */,next:()=>/* binding */next
/* harmony export */,nextAll:()=>/* binding */nextAll
/* harmony export */,nextUntil:()=>/* binding */nextUntil
/* harmony export */,not:()=>/* binding */not
/* harmony export */,parent:()=>/* binding */parent
/* harmony export */,parents:()=>/* binding */parents
/* harmony export */,parentsUntil:()=>/* binding */parentsUntil
/* harmony export */,prev:()=>/* binding */prev
/* harmony export */,prevAll:()=>/* binding */prevAll
/* harmony export */,prevUntil:()=>/* binding */prevUntil
/* harmony export */,siblings:()=>/* binding */siblings
/* harmony export */,slice:()=>/* binding */slice
/* harmony export */,toArray:()=>/* binding */toArray
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var cheerio_select__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! cheerio-select */"./node_modules/cheerio-select/lib/esm/index.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
* Methods for traversing the DOM structure.
*
* @module cheerio/traversing
*/const reSiblingSelector=/^\s*[+~]/;
/**
* Get the descendants of each element in the current set of matched elements,
* filtered by a selector, jQuery object, or element.
*
* @category Traversing
* @example
*
* ```js
* $('#fruits').find('li').length;
* //=> 3
* $('#fruits').find($('.apple')).length;
* //=> 1
* ```
*
* @param selectorOrHaystack - Element to look for.
* @returns The found elements.
* @see {@link https://api.jquery.com/find/}
*/function find(selectorOrHaystack){if(!selectorOrHaystack)return this._make([]);if(typeof selectorOrHaystack!=="string"){const haystack=(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(selectorOrHaystack)?selectorOrHaystack.toArray():[selectorOrHaystack];const context=this.toArray();return this._make(haystack.filter((elem=>context.some((node=>(0,_static_js__WEBPACK_IMPORTED_MODULE_3__.contains)(node,elem))))))}return this._findBySelector(selectorOrHaystack,Number.POSITIVE_INFINITY)}
/**
* Find elements by a specific selector.
*
* @private
* @category Traversing
* @param selector - Selector to filter by.
* @param limit - Maximum number of elements to match.
* @returns The found elements.
*/function _findBySelector(selector,limit){var _a;const context=this.toArray();const elems=reSiblingSelector.test(selector)?context:this.children().toArray();const options={context,root:(_a=this._root)===null||_a===void 0?void 0:_a[0],
// Pass options that are recognized by `cheerio-select`
xmlMode:this.options.xmlMode,lowerCaseTags:this.options.lowerCaseTags,lowerCaseAttributeNames:this.options.lowerCaseAttributeNames,pseudos:this.options.pseudos,quirksMode:this.options.quirksMode};return this._make(cheerio_select__WEBPACK_IMPORTED_MODULE_1__.select(selector,elems,options,limit))}
/**
* Creates a matcher, using a particular mapping function. Matchers provide a
* function that finds elements using a generating function, supporting
* filtering.
*
* @private
* @param matchMap - Mapping function.
* @returns - Function for wrapping generating functions.
*/function _getMatcher(matchMap){return function(fn,...postFns){return function(selector){var _a;let matched=matchMap(fn,this);if(selector)matched=filterArray(matched,selector,this.options.xmlMode,(_a=this._root)===null||_a===void 0?void 0:_a[0]);return this._make(
// Post processing is only necessary if there is more than one element.
this.length>1&&matched.length>1?postFns.reduce(((elems,fn)=>fn(elems)),matched):matched)}}}
/** Matcher that adds multiple elements for each entry in the input. */const _matcher=_getMatcher(((fn,elems)=>{let ret=[];for(let i=0;i<elems.length;i++){const value=fn(elems[i]);if(value.length>0)ret=ret.concat(value)}return ret}));
/** Matcher that adds at most one element for each entry in the input. */const _singleMatcher=_getMatcher(((fn,elems)=>{const ret=[];for(let i=0;i<elems.length;i++){const value=fn(elems[i]);if(value!==null)ret.push(value)}return ret}));
/**
* Matcher that supports traversing until a condition is met.
*
* @param nextElem - Function that returns the next element.
* @param postFns - Post processing functions.
* @returns A function usable for `*Until` methods.
*/function _matchUntil(nextElem,...postFns){
// We use a variable here that is used from within the matcher.
let matches=null;const innerMatcher=_getMatcher(((nextElem,elems)=>{const matched=[];(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.domEach)(elems,(elem=>{for(let next;next=nextElem(elem);elem=next){
// FIXME: `matched` might contain duplicates here and the index is too large.
if(matches===null||matches===void 0?void 0:matches(next,matched.length))break;matched.push(next)}}));return matched}))(nextElem,...postFns);return function(selector,filterSelector){
// Override `matches` variable with the new target.
matches=typeof selector==="string"?elem=>cheerio_select__WEBPACK_IMPORTED_MODULE_1__.is(elem,selector,this.options):selector?getFilterFn(selector):null;const ret=innerMatcher.call(this,filterSelector);
// Set `matches` to `null`, so we don't waste memory.
matches=null;return ret}}function _removeDuplicates(elems){return elems.length>1?Array.from(new Set(elems)):elems}
/**
* Get the parent of each element in the current set of matched elements,
* optionally filtered by a selector.
*
* @category Traversing
* @example
*
* ```js
* $('.pear').parent().attr('id');
* //=> fruits
* ```
*
* @param selector - If specified filter for parent.
* @returns The parents.
* @see {@link https://api.jquery.com/parent/}
*/const parent=_singleMatcher((({parent})=>parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(parent)?parent:null),_removeDuplicates);
/**
* Get a set of parents filtered by `selector` of each element in the current
* set of match elements.
*
* @category Traversing
* @example
*
* ```js
* $('.orange').parents().length;
* //=> 2
* $('.orange').parents('#fruits').length;
* //=> 1
* ```
*
* @param selector - If specified filter for parents.
* @returns The parents.
* @see {@link https://api.jquery.com/parents/}
*/const parents=_matcher((elem=>{const matched=[];while(elem.parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(elem.parent)){matched.push(elem.parent);elem=elem.parent}return matched}),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort,(elems=>elems.reverse()));
/**
* Get the ancestors of each element in the current set of matched elements, up
* to but not including the element matched by the selector, DOM node, or
* cheerio object.
*
* @category Traversing
* @example
*
* ```js
* $('.orange').parentsUntil('#food').length;
* //=> 1
* ```
*
* @param selector - Selector for element to stop at.
* @param filterSelector - Optional filter for parents.
* @returns The parents.
* @see {@link https://api.jquery.com/parentsUntil/}
*/const parentsUntil=_matchUntil((({parent})=>parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(parent)?parent:null),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort,(elems=>elems.reverse()));
/**
* For each element in the set, get the first element that matches the selector
* by testing the element itself and traversing up through its ancestors in the
* DOM tree.
*
* @category Traversing
* @example
*
* ```js
* $('.orange').closest();
* //=> []
*
* $('.orange').closest('.apple');
* // => []
*
* $('.orange').closest('li');
* //=> [<li class="orange">Orange</li>]
*
* $('.orange').closest('#fruits');
* //=> [<ul id="fruits"> ... </ul>]
* ```
*
* @param selector - Selector for the element to find.
* @returns The closest nodes.
* @see {@link https://api.jquery.com/closest/}
*/function closest(selector){var _a;const set=[];if(!selector)return this._make(set);const selectOpts={xmlMode:this.options.xmlMode,root:(_a=this._root)===null||_a===void 0?void 0:_a[0]};const selectFn=typeof selector==="string"?elem=>cheerio_select__WEBPACK_IMPORTED_MODULE_1__.is(elem,selector,selectOpts):getFilterFn(selector);(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.domEach)(this,(elem=>{if(elem&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(elem)&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))elem=elem.parent;while(elem&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)){if(selectFn(elem,0)){
// Do not add duplicate elements to the set
if(!set.includes(elem))set.push(elem);break}elem=elem.parent}}));return this._make(set)}
/**
* Gets the next sibling of each selected element, optionally filtered by a
* selector.
*
* @category Traversing
* @example
*
* ```js
* $('.apple').next().hasClass('orange');
* //=> true
* ```
*
* @param selector - If specified filter for sibling.
* @returns The next nodes.
* @see {@link https://api.jquery.com/next/}
*/const next=_singleMatcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.nextElementSibling)(elem)));
/**
* Gets all the following siblings of the each selected element, optionally
* filtered by a selector.
*
* @category Traversing
* @example
*
* ```js
* $('.apple').nextAll();
* //=> [<li class="orange">Orange</li>, <li class="pear">Pear</li>]
* $('.apple').nextAll('.orange');
* //=> [<li class="orange">Orange</li>]
* ```
*
* @param selector - If specified filter for siblings.
* @returns The next nodes.
* @see {@link https://api.jquery.com/nextAll/}
*/const nextAll=_matcher((elem=>{const matched=[];while(elem.next){elem=elem.next;if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))matched.push(elem)}return matched}),_removeDuplicates);
/**
* Gets all the following siblings up to but not including the element matched
* by the selector, optionally filtered by another selector.
*
* @category Traversing
* @example
*
* ```js
* $('.apple').nextUntil('.pear');
* //=> [<li class="orange">Orange</li>]
* ```
*
* @param selector - Selector for element to stop at.
* @param filterSelector - If specified filter for siblings.
* @returns The next nodes.
* @see {@link https://api.jquery.com/nextUntil/}
*/const nextUntil=_matchUntil((el=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.nextElementSibling)(el)),_removeDuplicates);
/**
* Gets the previous sibling of each selected element optionally filtered by a
* selector.
*
* @category Traversing
* @example
*
* ```js
* $('.orange').prev().hasClass('apple');
* //=> true
* ```
*
* @param selector - If specified filter for siblings.
* @returns The previous nodes.
* @see {@link https://api.jquery.com/prev/}
*/const prev=_singleMatcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.prevElementSibling)(elem)));
/**
* Gets all the preceding siblings of each selected element, optionally filtered
* by a selector.
*
* @category Traversing
* @example
*
* ```js
* $('.pear').prevAll();
* //=> [<li class="orange">Orange</li>, <li class="apple">Apple</li>]
*
* $('.pear').prevAll('.orange');
* //=> [<li class="orange">Orange</li>]
* ```
*
* @param selector - If specified filter for siblings.
* @returns The previous nodes.
* @see {@link https://api.jquery.com/prevAll/}
*/const prevAll=_matcher((elem=>{const matched=[];while(elem.prev){elem=elem.prev;if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))matched.push(elem)}return matched}),_removeDuplicates);
/**
* Gets all the preceding siblings up to but not including the element matched
* by the selector, optionally filtered by another selector.
*
* @category Traversing
* @example
*
* ```js
* $('.pear').prevUntil('.apple');
* //=> [<li class="orange">Orange</li>]
* ```
*
* @param selector - Selector for element to stop at.
* @param filterSelector - If specified filter for siblings.
* @returns The previous nodes.
* @see {@link https://api.jquery.com/prevUntil/}
*/const prevUntil=_matchUntil((el=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.prevElementSibling)(el)),_removeDuplicates);
/**
* Get the siblings of each element (excluding the element) in the set of
* matched elements, optionally filtered by a selector.
*
* @category Traversing
* @example
*
* ```js
* $('.pear').siblings().length;
* //=> 2
*
* $('.pear').siblings('.orange').length;
* //=> 1
* ```
*
* @param selector - If specified filter for siblings.
* @returns The siblings.
* @see {@link https://api.jquery.com/siblings/}
*/const siblings=_matcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getSiblings)(elem).filter((el=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(el)&&el!==elem))),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort);
/**
* Gets the element children of each element in the set of matched elements.
*
* @category Traversing
* @example
*
* ```js
* $('#fruits').children().length;
* //=> 3
*
* $('#fruits').children('.pear').text();
* //=> Pear
* ```
*
* @param selector - If specified filter for children.
* @returns The children.
* @see {@link https://api.jquery.com/children/}
*/const children=_matcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getChildren)(elem).filter(domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)),_removeDuplicates);
/**
* Gets the children of each element in the set of matched elements, including
* text and comment nodes.
*
* @category Traversing
* @example
*
* ```js
* $('#fruits').contents().length;
* //=> 3
* ```
*
* @returns The children.
* @see {@link https://api.jquery.com/contents/}
*/function contents(){const elems=this.toArray().reduce(((newElems,elem)=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)?newElems.concat(elem.children):newElems),[]);return this._make(elems)}
/**
* Iterates over a cheerio object, executing a function for each matched
* element. When the callback is fired, the function is fired in the context of
* the DOM element, so `this` refers to the current element, which is equivalent
* to the function parameter `element`. To break out of the `each` loop early,
* return with `false`.
*
* @category Traversing
* @example
*
* ```js
* const fruits = [];
*
* $('li').each(function (i, elem) {
* fruits[i] = $(this).text();
* });
*
* fruits.join(', ');
* //=> Apple, Orange, Pear
* ```
*
* @param fn - Function to execute.
* @returns The instance itself, useful for chaining.
* @see {@link https://api.jquery.com/each/}
*/function each(fn){let i=0;const len=this.length;while(i<len&&fn.call(this[i],i,this[i])!==false)++i;return this}
/**
* Pass each element in the current matched set through a function, producing a
* new Cheerio object containing the return values. The function can return an
* individual data item or an array of data items to be inserted into the
* resulting set. If an array is returned, the elements inside the array are
* inserted into the set. If the function returns null or undefined, no element
* will be inserted.
*
* @category Traversing
* @example
*
* ```js
* $('li')
* .map(function (i, el) {
* // this === el
* return $(this).text();
* })
* .toArray()
* .join(' ');
* //=> "apple orange pear"
* ```
*
* @param fn - Function to execute.
* @returns The mapped elements, wrapped in a Cheerio collection.
* @see {@link https://api.jquery.com/map/}
*/function map(fn){let elems=[];for(let i=0;i<this.length;i++){const el=this[i];const val=fn.call(el,i,el);if(val!=null)elems=elems.concat(val)}return this._make(elems)}
/**
* Creates a function to test if a filter is matched.
*
* @param match - A filter.
* @returns A function that determines if a filter has been matched.
*/function getFilterFn(match){if(typeof match==="function")return(el,i)=>match.call(el,i,el);if((0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(match))return el=>Array.prototype.includes.call(match,el);return function(el){return match===el}}function filter(match){var _a;return this._make(filterArray(this.toArray(),match,this.options.xmlMode,(_a=this._root)===null||_a===void 0?void 0:_a[0]))}function filterArray(nodes,match,xmlMode,root){return typeof match==="string"?cheerio_select__WEBPACK_IMPORTED_MODULE_1__.filter(match,nodes,{xmlMode,root}):nodes.filter(getFilterFn(match))}
/**
* Checks the current list of elements and returns `true` if _any_ of the
* elements match the selector. If using an element or Cheerio selection,
* returns `true` if _any_ of the elements match. If using a predicate function,
* the function is executed in the context of the selected element, so `this`
* refers to the current element.
*
* @category Traversing
* @param selector - Selector for the selection.
* @returns Whether or not the selector matches an element of the instance.
* @see {@link https://api.jquery.com/is/}
*/function is(selector){const nodes=this.toArray();return typeof selector==="string"?cheerio_select__WEBPACK_IMPORTED_MODULE_1__.some(nodes.filter(domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag),selector,this.options):selector?nodes.some(getFilterFn(selector)):false}
/**
* Remove elements from the set of matched elements. Given a Cheerio object that
* represents a set of DOM elements, the `.not()` method constructs a new
* Cheerio object from a subset of the matching elements. The supplied selector
* is tested against each element; the elements that don't match the selector
* will be included in the result.
*
* The `.not()` method can take a function as its argument in the same way that
* `.filter()` does. Elements for which the function returns `true` are excluded
* from the filtered set; all other elements are included.
*
* @category Traversing
* @example <caption>Selector</caption>
*
* ```js
* $('li').not('.apple').length;
* //=> 2
* ```
*
* @example <caption>Function</caption>
*
* ```js
* $('li').not(function (i, el) {
* // this === el
* return $(this).attr('class') === 'orange';
* }).length; //=> 2
* ```
*
* @param match - Value to look for, following the rules above.
* @returns The filtered collection.
* @see {@link https://api.jquery.com/not/}
*/function not(match){let nodes=this.toArray();if(typeof match==="string"){const matches=new Set(cheerio_select__WEBPACK_IMPORTED_MODULE_1__.filter(match,nodes,this.options));nodes=nodes.filter((el=>!matches.has(el)))}else{const filterFn=getFilterFn(match);nodes=nodes.filter(((el,i)=>!filterFn(el,i)))}return this._make(nodes)}
/**
* Filters the set of matched elements to only those which have the given DOM
* element as a descendant or which have a descendant that matches the given
* selector. Equivalent to `.filter(':has(selector)')`.
*
* @category Traversing
* @example <caption>Selector</caption>
*
* ```js
* $('ul').has('.pear').attr('id');
* //=> fruits
* ```
*
* @example <caption>Element</caption>
*
* ```js
* $('ul').has($('.pear')[0]).attr('id');
* //=> fruits
* ```
*
* @param selectorOrHaystack - Element to look for.
* @returns The filtered collection.
* @see {@link https://api.jquery.com/has/}
*/function has(selectorOrHaystack){return this.filter(typeof selectorOrHaystack==="string"?// Using the `:has` selector here short-circuits searches.
`:has(${selectorOrHaystack})`:(_,el)=>this._make(el).find(selectorOrHaystack).length>0)}
/**
* Will select the first element of a cheerio object.
*
* @category Traversing
* @example
*
* ```js
* $('#fruits').children().first().text();
* //=> Apple
* ```
*
* @returns The first element.
* @see {@link https://api.jquery.com/first/}
*/function first(){return this.length>1?this._make(this[0]):this}
/**
* Will select the last element of a cheerio object.
*
* @category Traversing
* @example
*
* ```js
* $('#fruits').children().last().text();
* //=> Pear
* ```
*
* @returns The last element.
* @see {@link https://api.jquery.com/last/}
*/function last(){return this.length>0?this._make(this[this.length-1]):this}
/**
* Reduce the set of matched elements to the one at the specified index. Use
* `.eq(-i)` to count backwards from the last selected element.
*
* @category Traversing
* @example
*
* ```js
* $('li').eq(0).text();
* //=> Apple
*
* $('li').eq(-1).text();
* //=> Pear
* ```
*
* @param i - Index of the element to select.
* @returns The element at the `i`th position.
* @see {@link https://api.jquery.com/eq/}
*/function eq(i){var _a;i=+i;
// Use the first identity optimization if possible
if(i===0&&this.length<=1)return this;if(i<0)i=this.length+i;return this._make((_a=this[i])!==null&&_a!==void 0?_a:[])}function get(i){if(i==null)return this.toArray();return this[i<0?this.length+i:i]}
/**
* Retrieve all the DOM elements contained in the jQuery set as an array.
*
* @example
*
* ```js
* $('li').toArray();
* //=> [ {...}, {...}, {...} ]
* ```
*
* @returns The contained items.
*/function toArray(){return Array.prototype.slice.call(this)}
/**
* Search for a given element from among the matched elements.
*
* @category Traversing
* @example
*
* ```js
* $('.pear').index();
* //=> 2 $('.orange').index('li');
* //=> 1
* $('.apple').index($('#fruit, li'));
* //=> 1
* ```
*
* @param selectorOrNeedle - Element to look for.
* @returns The index of the element.
* @see {@link https://api.jquery.com/index/}
*/function index(selectorOrNeedle){let $haystack;let needle;if(selectorOrNeedle==null){$haystack=this.parent().children();needle=this[0]}else if(typeof selectorOrNeedle==="string"){$haystack=this._make(selectorOrNeedle);needle=this[0]}else{
// eslint-disable-next-line @typescript-eslint/no-this-alias, unicorn/no-this-assignment
$haystack=this;needle=(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(selectorOrNeedle)?selectorOrNeedle[0]:selectorOrNeedle}return Array.prototype.indexOf.call($haystack,needle)}
/**
* Gets the elements matching the specified range (0-based position).
*
* @category Traversing
* @example
*
* ```js
* $('li').slice(1).eq(0).text();
* //=> 'Orange'
*
* $('li').slice(1, 2).length;
* //=> 1
* ```
*
* @param start - A position at which the elements begin to be selected. If
* negative, it indicates an offset from the end of the set.
* @param end - A position at which the elements stop being selected. If
* negative, it indicates an offset from the end of the set. If omitted, the
* range continues until the end of the set.
* @returns The elements matching the specified range.
* @see {@link https://api.jquery.com/slice/}
*/function slice(start,end){return this._make(Array.prototype.slice.call(this,start,end))}
/**
* End the most recent filtering operation in the current chain and return the
* set of matched elements to its previous state.
*
* @category Traversing
* @example
*
* ```js
* $('li').eq(0).end().length;
* //=> 3
* ```
*
* @returns The previous state of the set of matched elements.
* @see {@link https://api.jquery.com/end/}
*/function end(){var _a;return(_a=this.prevObject)!==null&&_a!==void 0?_a:this._make([])}
/**
* Add elements to the set of matched elements.
*
* @category Traversing
* @example
*
* ```js
* $('.apple').add('.orange').length;
* //=> 2
* ```
*
* @param other - Elements to add.
* @param context - Optionally the context of the new selection.
* @returns The combined set.
* @see {@link https://api.jquery.com/add/}
*/function add(other,context){const selection=this._make(other,context);const contents=(0,domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort)([...this.get(),...selection.get()]);return this._make(contents)}
/**
* Add the previous set of elements on the stack to the current set, optionally
* filtered by a selector.
*
* @category Traversing
* @example
*
* ```js
* $('li').eq(0).addBack('.orange').length;
* //=> 2
* ```
*
* @param selector - Selector for the elements to add.
* @returns The combined set.
* @see {@link https://api.jquery.com/addBack/}
*/function addBack(selector){return this.prevObject?this.add(selector?this.prevObject.filter(selector):this.prevObject):this}
//# sourceMappingURL=traversing.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/cheerio.js":
/*!******************************************************!*\
!*** ./node_modules/cheerio/dist/browser/cheerio.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */Cheerio:()=>/* binding */Cheerio
/* harmony export */});
/* harmony import */var _api_attributes_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./api/attributes.js */"./node_modules/cheerio/dist/browser/api/attributes.js");
/* harmony import */var _api_traversing_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./api/traversing.js */"./node_modules/cheerio/dist/browser/api/traversing.js");
/* harmony import */var _api_manipulation_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./api/manipulation.js */"./node_modules/cheerio/dist/browser/api/manipulation.js");
/* harmony import */var _api_css_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./api/css.js */"./node_modules/cheerio/dist/browser/api/css.js");
/* harmony import */var _api_forms_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./api/forms.js */"./node_modules/cheerio/dist/browser/api/forms.js");
/* harmony import */var _api_extract_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! ./api/extract.js */"./node_modules/cheerio/dist/browser/api/extract.js");
/**
* The cheerio class is the central class of the library. It wraps a set of
* elements and provides an API for traversing, modifying, and interacting with
* the set.
*
* Loading a document will return the Cheerio class bound to the root element of
* the document. The class will be instantiated when querying the document (when
* calling `$('selector')`).
*
* @example This is the HTML markup we will be using in all of the API examples:
*
* ```html
* <ul id="fruits">
* <li class="apple">Apple</li>
* <li class="orange">Orange</li>
* <li class="pear">Pear</li>
* </ul>
* ```
*/class Cheerio{
/**
* Instance of cheerio. Methods are specified in the modules. Usage of this
* constructor is not recommended. Please use `$.load` instead.
*
* @private
* @param elements - The new selection.
* @param root - Sets the root node.
* @param options - Options for the instance.
*/
constructor(elements,root,options){this.length=0;this.options=options;this._root=root;if(elements){for(let idx=0;idx<elements.length;idx++)this[idx]=elements[idx];this.length=elements.length}}}
/** Set a signature of the object. */Cheerio.prototype.cheerio="[cheerio object]";
/*
* Make cheerio an array-like object
*/Cheerio.prototype.splice=Array.prototype.splice;
// Support for (const element of $(...)) iteration:
Cheerio.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator];
// Plug in the API
Object.assign(Cheerio.prototype,_api_attributes_js__WEBPACK_IMPORTED_MODULE_0__,_api_traversing_js__WEBPACK_IMPORTED_MODULE_1__,_api_manipulation_js__WEBPACK_IMPORTED_MODULE_2__,_api_css_js__WEBPACK_IMPORTED_MODULE_3__,_api_forms_js__WEBPACK_IMPORTED_MODULE_4__,_api_extract_js__WEBPACK_IMPORTED_MODULE_5__);
//# sourceMappingURL=cheerio.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/load.js":
/*!***************************************************!*\
!*** ./node_modules/cheerio/dist/browser/load.js ***!
\***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getLoad:()=>/* binding */getLoad
/* harmony export */});
/* harmony import */var _options_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./options.js */"./node_modules/cheerio/dist/browser/options.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _cheerio_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./cheerio.js */"./node_modules/cheerio/dist/browser/cheerio.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./utils.js */"./node_modules/cheerio/dist/browser/utils.js");function getLoad(parse,render){
/**
* Create a querying function, bound to a document created from the provided
* markup.
*
* Note that similar to web browser contexts, this operation may introduce
* `<html>`, `<head>`, and `<body>` elements; set `isDocument` to `false` to
* switch to fragment mode and disable this.
*
* @param content - Markup to be loaded.
* @param options - Options for the created instance.
* @param isDocument - Allows parser to be switched to fragment mode.
* @returns The loaded document.
* @see {@link https://cheerio.js.org#loading} for additional usage information.
*/
return function load(content,options,isDocument=true){if(content==null)throw new Error("cheerio.load() expects a string");const internalOpts=(0,_options_js__WEBPACK_IMPORTED_MODULE_0__.flattenOptions)(options);const initialRoot=parse(content,internalOpts,isDocument,null);
/**
* Create an extended class here, so that extensions only live on one
* instance.
*/class LoadedCheerio extends _cheerio_js__WEBPACK_IMPORTED_MODULE_2__.Cheerio{_make(selector,context){const cheerio=initialize(selector,context);cheerio.prevObject=this;return cheerio}_parse(content,options,isDocument,context){return parse(content,options,isDocument,context)}_render(dom){return render(dom,this.options)}}function initialize(selector,context,root=initialRoot,opts){
// $($)
if(selector&&(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(selector))return selector;const options=(0,_options_js__WEBPACK_IMPORTED_MODULE_0__.flattenOptions)(opts,internalOpts);const r=typeof root==="string"?[parse(root,options,false,null)]:"length"in root?root:[root];const rootInstance=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(r)?r:new LoadedCheerio(r,null,options);
// Add a cyclic reference, so that calling methods on `_root` never fails.
rootInstance._root=rootInstance;
// $(), $(null), $(undefined), $(false)
if(!selector)return new LoadedCheerio(void 0,rootInstance,options);const elements=typeof selector==="string"&&(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(selector)?// $(<html>)
parse(selector,options,false,null).children:isNode(selector)?// $(dom)
[selector]:Array.isArray(selector)?// $([dom])
selector:void 0;const instance=new LoadedCheerio(elements,rootInstance,options);if(elements)return instance;if(typeof selector!=="string")throw new TypeError("Unexpected type of selector");
// We know that our selector is a string now.
let search=selector;const searchContext=context?// If we don't have a context, maybe we have a root, from loading
typeof context==="string"?(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(context)?// $('li', '<ul>...</ul>')
new LoadedCheerio([parse(context,options,false,null)],rootInstance,options):(// $('li', 'ul')
// $('li', 'ul')
search=`${context} ${search}`,rootInstance):(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(context)?// $('li', $)
context:// $('li', node), $('li', [nodes])
new LoadedCheerio(Array.isArray(context)?context:[context],rootInstance,options):rootInstance;
// If we still don't have a context, return
if(!searchContext)return instance;
/*
* #id, .class, tag
*/return searchContext.find(search)}
// Add in static methods & properties
Object.assign(initialize,_static_js__WEBPACK_IMPORTED_MODULE_1__,{load,
// `_root` and `_options` are used in static methods.
_root:initialRoot,_options:internalOpts,
// Add `fn` for plugins
fn:LoadedCheerio.prototype,
// Add the prototype here to maintain `instanceof` behavior.
prototype:LoadedCheerio.prototype});return initialize}}function isNode(obj){return!!obj.name||obj.type==="root"||obj.type==="text"||obj.type==="comment"}
//# sourceMappingURL=load.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/options.js":
/*!******************************************************!*\
!*** ./node_modules/cheerio/dist/browser/options.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */flattenOptions:()=>/* binding */flattenOptions
/* harmony export */});const defaultOpts={_useHtmlParser2:false};
/**
* Flatten the options for Cheerio.
*
* This will set `_useHtmlParser2` to true if `xml` is set to true.
*
* @param options - The options to flatten.
* @param baseOptions - The base options to use.
* @returns The flattened options.
*/function flattenOptions(options,baseOptions){if(!options)return baseOptions!==null&&baseOptions!==void 0?baseOptions:defaultOpts;const opts={_useHtmlParser2:!!options.xmlMode,...baseOptions,...options};if(options.xml){opts._useHtmlParser2=true;opts.xmlMode=true;if(options.xml!==true)Object.assign(opts,options.xml)}else if(options.xmlMode)opts._useHtmlParser2=true;return opts}
//# sourceMappingURL=options.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/parse.js":
/*!****************************************************!*\
!*** ./node_modules/cheerio/dist/browser/parse.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getParse:()=>/* binding */getParse
/* harmony export */,update:()=>/* binding */update
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
* Get the parse function with options.
*
* @param parser - The parser function.
* @returns The parse function with options.
*/function getParse(parser){
/**
* Parse a HTML string or a node.
*
* @param content - The HTML string or node.
* @param options - The parser options.
* @param isDocument - If `content` is a document.
* @param context - The context node in the DOM tree.
* @returns The parsed document node.
*/
return function(content,options,isDocument,context){if(typeof Buffer!=="undefined"&&Buffer.isBuffer(content))content=content.toString();if(typeof content==="string")return parser(content,options,isDocument,context);const doc=content;if(!Array.isArray(doc)&&(0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isDocument)(doc))
// If `doc` is already a root, just return it
return doc;
// Add conent to new root element
const root=new domhandler__WEBPACK_IMPORTED_MODULE_1__.Document([]);
// Update the DOM using the root
update(doc,root);return root}}
/**
* Update the dom structure, for one changed layer.
*
* @param newChilds - The new children.
* @param parent - The new parent.
* @returns The parent node.
*/function update(newChilds,parent){
// Normalize
const arr=Array.isArray(newChilds)?newChilds:[newChilds];
// Update parent
if(parent)parent.children=arr;else parent=null;
// Update neighbors
for(let i=0;i<arr.length;i++){const node=arr[i];
// Cleanly remove existing nodes from their previous structures.
if(node.parent&&node.parent.children!==arr)(0,domutils__WEBPACK_IMPORTED_MODULE_0__.removeElement)(node);if(parent){node.prev=arr[i-1]||null;node.next=arr[i+1]||null}else node.prev=node.next=null;node.parent=parent}return parent}
//# sourceMappingURL=parse.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/slim.js":
/*!***************************************************!*\
!*** ./node_modules/cheerio/dist/browser/slim.js ***!
\***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */contains:()=>/* reexport safe */_static_js__WEBPACK_IMPORTED_MODULE_4__.contains
/* harmony export */,load:()=>/* binding */load
/* harmony export */,merge:()=>/* reexport safe */_static_js__WEBPACK_IMPORTED_MODULE_4__.merge
/* harmony export */});
/* harmony import */var _load_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./load.js */"./node_modules/cheerio/dist/browser/load.js");
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./parse.js */"./node_modules/cheerio/dist/browser/parse.js");
/* harmony import */var dom_serializer__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! dom-serializer */"./node_modules/dom-serializer/lib/esm/index.js");
/* harmony import */var htmlparser2__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! htmlparser2 */"./node_modules/htmlparser2/lib/esm/index.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./static.js */"./node_modules/cheerio/dist/browser/static.js");
/**
* @file Alternative entry point for Cheerio that always uses htmlparser2. This
* way, parse5 won't be loaded, saving some memory.
*/
/**
* Create a querying function, bound to a document created from the provided
* markup.
*
* @param content - Markup to be loaded.
* @param options - Options for the created instance.
* @param isDocument - Always `false` here, as we are always using
* `htmlparser2`.
* @returns The loaded document.
* @see {@link https://cheerio.js.org#loading} for additional usage information.
*/const load=(0,_load_js__WEBPACK_IMPORTED_MODULE_0__.getLoad)((0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.getParse)(htmlparser2__WEBPACK_IMPORTED_MODULE_3__.parseDocument),dom_serializer__WEBPACK_IMPORTED_MODULE_2__["default"]);
//# sourceMappingURL=slim.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/static.js":
/*!*****************************************************!*\
!*** ./node_modules/cheerio/dist/browser/static.js ***!
\*****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */contains:()=>/* binding */contains
/* harmony export */,extract:()=>/* binding */extract
/* harmony export */,html:()=>/* binding */html
/* harmony export */,merge:()=>/* binding */merge
/* harmony export */,parseHTML:()=>/* binding */parseHTML
/* harmony export */,root:()=>/* binding */root
/* harmony export */,text:()=>/* binding */text
/* harmony export */,xml:()=>/* binding */xml
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var _options_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./options.js */"./node_modules/cheerio/dist/browser/options.js");
/**
* Helper function to render a DOM.
*
* @param that - Cheerio instance to render.
* @param dom - The DOM to render. Defaults to `that`'s root.
* @param options - Options for rendering.
* @returns The rendered document.
*/function render(that,dom,options){if(!that)return"";return that(dom!==null&&dom!==void 0?dom:that._root.children,null,void 0,options).toString()}
/**
* Checks if a passed object is an options object.
*
* @param dom - Object to check if it is an options object.
* @param options - Options object.
* @returns Whether the object is an options object.
*/function isOptions(dom,options){return!options&&typeof dom==="object"&&dom!=null&&!("length"in dom)&&!("type"in dom)}function html(dom,options){
/*
* Be flexible about parameters, sometimes we call html(),
* with options as only parameter
* check dom argument for dom element specific properties
* assume there is no 'length' or 'type' properties in the options object
*/
const toRender=isOptions(dom)?(options=dom,void 0):dom;
/*
* Sometimes `$.html()` is used without preloading html,
* so fallback non-existing options to the default ones.
*/const opts={...this===null||this===void 0?void 0:this._options,...(0,_options_js__WEBPACK_IMPORTED_MODULE_1__.flattenOptions)(options)};return render(this,toRender,opts)}
/**
* Render the document as XML.
*
* @category Static
* @param dom - Element to render.
* @returns THe rendered document.
*/function xml(dom){const options={...this._options,xmlMode:true};return render(this,dom,options)}
/**
* Render the document as text.
*
* This returns the `textContent` of the passed elements. The result will
* include the contents of `<script>` and `<style>` elements. To avoid this, use
* `.prop('innerText')` instead.
*
* @category Static
* @param elements - Elements to render.
* @returns The rendered document.
*/function text(elements){const elems=elements!==null&&elements!==void 0?elements:this?this.root():[];let ret="";for(let i=0;i<elems.length;i++)ret+=(0,domutils__WEBPACK_IMPORTED_MODULE_0__.textContent)(elems[i]);return ret}function parseHTML(data,context,keepScripts=(typeof context==="boolean"?context:false)){if(!data||typeof data!=="string")return null;if(typeof context==="boolean")keepScripts=context;const parsed=this.load(data,this._options,false);if(!keepScripts)parsed("script").remove();
/*
* The `children` array is used by Cheerio internally to group elements that
* share the same parents. When nodes created through `parseHTML` are
* inserted into previously-existing DOM structures, they will be removed
* from the `children` array. The results of `parseHTML` should remain
* constant across these operations, so a shallow copy should be returned.
*/return[...parsed.root()[0].children]}
/**
* Sometimes you need to work with the top-level root element. To query it, you
* can use `$.root()`.
*
* @category Static
* @example
*
* ```js
* $.root().append('<ul id="vegetables"></ul>').html();
* //=> <ul id="fruits">...</ul><ul id="vegetables"></ul>
* ```
*
* @returns Cheerio instance wrapping the root node.
* @alias Cheerio.root
*/function root(){return this(this._root)}
/**
* Checks to see if the `contained` DOM element is a descendant of the
* `container` DOM element.
*
* @category Static
* @param container - Potential parent node.
* @param contained - Potential child node.
* @returns Indicates if the nodes contain one another.
* @alias Cheerio.contains
* @see {@link https://api.jquery.com/jQuery.contains/}
*/function contains(container,contained){
// According to the jQuery API, an element does not "contain" itself
if(contained===container)return false;
/*
* Step up the descendants, stopping when the root element is reached
* (signaled by `.parent` returning a reference to the same object)
*/let next=contained;while(next&&next!==next.parent){next=next.parent;if(next===container)return true}return false}
/**
* Extract multiple values from a document, and store them in an object.
*
* @category Static
* @param map - An object containing key-value pairs. The keys are the names of
* the properties to be created on the object, and the values are the
* selectors to be used to extract the values.
* @returns An object containing the extracted values.
*/function extract(map){return this.root().extract(map)}
/**
* $.merge().
*
* @category Static
* @param arr1 - First array.
* @param arr2 - Second array.
* @returns `arr1`, with elements of `arr2` inserted.
* @alias Cheerio.merge
* @see {@link https://api.jquery.com/jQuery.merge/}
*/function merge(arr1,arr2){if(!isArrayLike(arr1)||!isArrayLike(arr2))return;let newLength=arr1.length;const len=+arr2.length;for(let i=0;i<len;i++)arr1[newLength++]=arr2[i];arr1.length=newLength;return arr1}
/**
* Checks if an object is array-like.
*
* @category Static
* @param item - Item to check.
* @returns Indicates if the item is array-like.
*/function isArrayLike(item){if(Array.isArray(item))return true;if(typeof item!=="object"||item===null||!("length"in item)||typeof item.length!=="number"||item.length<0)return false;for(let i=0;i<item.length;i++)if(!(i in item))return false;return true}
//# sourceMappingURL=static.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/utils.js":
/*!****************************************************!*\
!*** ./node_modules/cheerio/dist/browser/utils.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */camelCase:()=>/* binding */camelCase
/* harmony export */,cssCase:()=>/* binding */cssCase
/* harmony export */,domEach:()=>/* binding */domEach
/* harmony export */,isCheerio:()=>/* binding */isCheerio
/* harmony export */,isHtml:()=>/* binding */isHtml
/* harmony export */});
/**
* Checks if an object is a Cheerio instance.
*
* @category Utils
* @param maybeCheerio - The object to check.
* @returns Whether the object is a Cheerio instance.
*/function isCheerio(maybeCheerio){return maybeCheerio.cheerio!=null}
/**
* Convert a string to camel case notation.
*
* @private
* @category Utils
* @param str - The string to be converted.
* @returns String in camel case notation.
*/function camelCase(str){return str.replace(/[._-](\w|$)/g,((_,x)=>x.toUpperCase()))}
/**
* Convert a string from camel case to "CSS case", where word boundaries are
* described by hyphens ("-") and all characters are lower-case.
*
* @private
* @category Utils
* @param str - The string to be converted.
* @returns String in "CSS case".
*/function cssCase(str){return str.replace(/[A-Z]/g,"-$&").toLowerCase()}
/**
* Iterate over each DOM element without creating intermediary Cheerio
* instances.
*
* This is indented for use internally to avoid otherwise unnecessary memory
* pressure introduced by _make.
*
* @category Utils
* @param array - The array to iterate over.
* @param fn - Function to call.
* @returns The original instance.
*/function domEach(array,fn){const len=array.length;for(let i=0;i<len;i++)fn(array[i],i);return array}var CharacterCodes;(function(CharacterCodes){CharacterCodes[CharacterCodes["LowerA"]=97]="LowerA";CharacterCodes[CharacterCodes["LowerZ"]=122]="LowerZ";CharacterCodes[CharacterCodes["UpperA"]=65]="UpperA";CharacterCodes[CharacterCodes["UpperZ"]=90]="UpperZ";CharacterCodes[CharacterCodes["Exclamation"]=33]="Exclamation"})(CharacterCodes||(CharacterCodes={}));
/**
* Check if string is HTML.
*
* Tests for a `<` within a string, immediate followed by a letter and
* eventually followed by a `>`.
*
* @private
* @category Utils
* @param str - The string to check.
* @returns Indicates if `str` is HTML.
*/function isHtml(str){const tagStart=str.indexOf("<");if(tagStart<0||tagStart>str.length-3)return false;const tagChar=str.charCodeAt(tagStart+1);return(tagChar>=CharacterCodes.LowerA&&tagChar<=CharacterCodes.LowerZ||tagChar>=CharacterCodes.UpperA&&tagChar<=CharacterCodes.UpperZ||tagChar===CharacterCodes.Exclamation)&&str.includes(">",tagStart+2)}
//# sourceMappingURL=utils.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/attributes.js":
/*!*******************************************************!*\
!*** ./node_modules/css-select/lib/esm/attributes.js ***!
\*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */attributeRules:()=>/* binding */attributeRules
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/**
* All reserved characters in a regex, used for escaping.
*
* Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license
* https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794
*/const reChars=/[-[\]{}()*+?.,\\^$|#\s]/g;function escapeRegex(value){return value.replace(reChars,"\\$&")}
/**
* Attributes that are case-insensitive in HTML.
*
* @private
* @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors
*/const caseInsensitiveAttributes=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function shouldIgnoreCase(selector,options){return typeof selector.ignoreCase==="boolean"?selector.ignoreCase:selector.ignoreCase==="quirks"?!!options.quirksMode:!options.xmlMode&&caseInsensitiveAttributes.has(selector.name)}
/**
* Attribute selectors
*/const attributeRules={equals(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length===value.length&&attr.toLowerCase()===value&&next(elem)}}return elem=>adapter.getAttributeValue(elem,name)===value&&next(elem)},hyphen(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=value.length;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&(attr.length===len||attr.charAt(len)==="-")&&attr.substr(0,len).toLowerCase()===value&&next(elem)}}return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&(attr.length===len||attr.charAt(len)==="-")&&attr.substr(0,len)===value&&next(elem)}},element(next,data,options){const{adapter}=options;const{name,value}=data;if(/\s/.test(value))return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;const regex=new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`,shouldIgnoreCase(data,options)?"i":"");return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=value.length&®ex.test(attr)&&next(elem)}},exists(next,{name},{adapter}){return elem=>adapter.hasAttrib(elem,name)&&next(elem)},start(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=value.length;if(len===0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=len&&attr.substr(0,len).toLowerCase()===value&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.startsWith(value))&&next(elem)}},end(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=-value.length;if(len===0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{var _a;return((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.substr(len).toLowerCase())===value&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.endsWith(value))&&next(elem)}},any(next,data,options){const{adapter}=options;const{name,value}=data;if(value==="")return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){const regex=new RegExp(escapeRegex(value),"i");return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=value.length&®ex.test(attr)&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.includes(value))&&next(elem)}},not(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;if(value==="")return elem=>!!adapter.getAttributeValue(elem,name)&&next(elem);else if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return(attr==null||attr.length!==value.length||attr.toLowerCase()!==value)&&next(elem)}}return elem=>adapter.getAttributeValue(elem,name)!==value&&next(elem)}};
//# sourceMappingURL=attributes.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/compile.js":
/*!****************************************************!*\
!*** ./node_modules/css-select/lib/esm/compile.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* binding */compile
/* harmony export */,compileToken:()=>/* binding */compileToken
/* harmony export */,compileUnsafe:()=>/* binding */compileUnsafe
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _sort_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./sort.js */"./node_modules/css-select/lib/esm/sort.js");
/* harmony import */var _general_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./general.js */"./node_modules/css-select/lib/esm/general.js");
/* harmony import */var _pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./pseudo-selectors/subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");
/**
* Compiles a selector to an executable function.
*
* @param selector Selector to compile.
* @param options Compilation options.
* @param context Optional context for the selector.
*/function compile(selector,options,context){const next=compileUnsafe(selector,options,context);return(0,_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.ensureIsTag)(next,options.adapter)}function compileUnsafe(selector,options,context){const token=typeof selector==="string"?(0,css_what__WEBPACK_IMPORTED_MODULE_4__.parse)(selector):selector;return compileToken(token,options,context)}function includesScopePseudo(t){return t.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some((data=>data.some(includesScopePseudo))))}const DESCENDANT_TOKEN={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant};const FLEXIBLE_DESCENDANT_TOKEN={type:"_flexibleDescendant"};const SCOPE_TOKEN={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo,name:"scope",data:null};
/*
* CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
* http://www.w3.org/TR/selectors4/#absolutizing
*/function absolutize(token,{adapter},context){
// TODO Use better check if the context is a document
const hasContext=!!(context===null||context===void 0?void 0:context.every((e=>{const parent=adapter.isTag(e)&&adapter.getParent(e);return e===_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.PLACEHOLDER_ELEMENT||parent&&adapter.isTag(parent)})));for(const t of token){if(t.length>0&&(0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)(t[0])&&t[0].type!==css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant);else if(hasContext&&!t.some(includesScopePseudo))t.unshift(DESCENDANT_TOKEN);else continue;t.unshift(SCOPE_TOKEN)}}function compileToken(token,options,context){var _a;token.forEach(_sort_js__WEBPACK_IMPORTED_MODULE_1__["default"]);context=(_a=options.context)!==null&&_a!==void 0?_a:context;const isArrayContext=Array.isArray(context);const finalContext=context&&(Array.isArray(context)?context:[context]);
// Check if the selector is relative
if(options.relativeSelector!==false)absolutize(token,options,finalContext);else if(token.some((t=>t.length>0&&(0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)(t[0]))))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let shouldTestNextSiblings=false;const query=token.map((rules=>{if(rules.length>=2){const[first,second]=rules;if(first.type!==css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo||first.name!=="scope");else if(isArrayContext&&second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant)rules[1]=FLEXIBLE_DESCENDANT_TOKEN;else if(second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Adjacent||second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Sibling)shouldTestNextSiblings=true}return compileRules(rules,options,finalContext)})).reduce(reduceRules,boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc);query.shouldTestNextSiblings=shouldTestNextSiblings;return query}function compileRules(rules,options,context){var _a;return rules.reduce(((previous,rule)=>previous===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:(0,_general_js__WEBPACK_IMPORTED_MODULE_2__.compileGeneralSelector)(previous,rule,options,context,compileToken)),(_a=options.rootFunc)!==null&&_a!==void 0?_a:boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)}function reduceRules(a,b){if(b===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc||a===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)return a;if(a===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc||b===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)return b;return function(elem){return a(elem)||b(elem)}}
//# sourceMappingURL=compile.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/general.js":
/*!****************************************************!*\
!*** ./node_modules/css-select/lib/esm/general.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compileGeneralSelector:()=>/* binding */compileGeneralSelector
/* harmony export */});
/* harmony import */var _attributes_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./attributes.js */"./node_modules/css-select/lib/esm/attributes.js");
/* harmony import */var _pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./pseudo-selectors/index.js */"./node_modules/css-select/lib/esm/pseudo-selectors/index.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");function getElementParent(node,adapter){const parent=adapter.getParent(node);if(parent&&adapter.isTag(parent))return parent;return null}
/*
* All available rules
*/function compileGeneralSelector(next,selector,options,context,compileToken){const{adapter,equals}=options;switch(selector.type){case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Attribute:if(selector.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");if(!options.xmlMode||options.lowerCaseAttributeNames)selector.name=selector.name.toLowerCase();return _attributes_js__WEBPACK_IMPORTED_MODULE_0__.attributeRules[selector.action](next,selector,options);case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Pseudo:return(0,_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_1__.compilePseudoSelector)(next,selector,options,context,compileToken);
// Tags
case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Tag:{if(selector.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name}=selector;if(!options.xmlMode||options.lowerCaseTags)name=name.toLowerCase();return function(elem){return adapter.getName(elem)===name&&next(elem)}}
// Traversal
case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Descendant:{if(options.cacheResults===false||typeof WeakSet==="undefined")return function(elem){let current=elem;while(current=getElementParent(current,adapter))if(next(current))return true;return false};
// @ts-expect-error `ElementNode` is not extending object
const isFalseCache=new WeakSet;return function(elem){let current=elem;while(current=getElementParent(current,adapter))if(!isFalseCache.has(current)){if(adapter.isTag(current)&&next(current))return true;isFalseCache.add(current)}return false}}case"_flexibleDescendant":
// Include element itself, only used while querying an array
return function(elem){let current=elem;do{if(next(current))return true}while(current=getElementParent(current,adapter));return false};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Parent:return function(elem){return adapter.getChildren(elem).some((elem=>adapter.isTag(elem)&&next(elem)))};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Child:return function(elem){const parent=adapter.getParent(elem);return parent!=null&&adapter.isTag(parent)&&next(parent)};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Sibling:return function(elem){const siblings=adapter.getSiblings(elem);for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&next(currentSibling))return true}return false};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Adjacent:if(adapter.prevElementSibling)return function(elem){const previous=adapter.prevElementSibling(elem);return previous!=null&&next(previous)};return function(elem){const siblings=adapter.getSiblings(elem);let lastElement;for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling))lastElement=currentSibling}return!!lastElement&&next(lastElement)};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Universal:if(selector.namespace!=null&&selector.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return next}}
//# sourceMappingURL=general.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/index.js":
/*!**************************************************!*\
!*** ./node_modules/css-select/lib/esm/index.js ***!
\**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_compileToken:()=>/* binding */_compileToken
/* harmony export */,_compileUnsafe:()=>/* binding */_compileUnsafe
/* harmony export */,aliases:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.aliases
/* harmony export */,compile:()=>/* binding */compile
/* harmony export */,default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,filters:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.filters
/* harmony export */,is:()=>/* binding */is
/* harmony export */,prepareContext:()=>/* binding */prepareContext
/* harmony export */,pseudos:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.pseudos
/* harmony export */,selectAll:()=>/* binding */selectAll
/* harmony export */,selectOne:()=>/* binding */selectOne
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _compile_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./compile.js */"./node_modules/css-select/lib/esm/compile.js");
/* harmony import */var _pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./pseudo-selectors/subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");
/* harmony import */var _pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./pseudo-selectors/index.js */"./node_modules/css-select/lib/esm/pseudo-selectors/index.js");const defaultEquals=(a,b)=>a===b;const defaultOptions={adapter:domutils__WEBPACK_IMPORTED_MODULE_0__,equals:defaultEquals};function convertOptionFormats(options){var _a,_b,_c,_d;
/*
* We force one format of options to the other one.
*/
// @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.
const opts=options!==null&&options!==void 0?options:defaultOptions;
// @ts-expect-error Same as above.
(_a=opts.adapter)!==null&&_a!==void 0?_a:opts.adapter=domutils__WEBPACK_IMPORTED_MODULE_0__;
// @ts-expect-error `equals` does not exist on `Options`
(_b=opts.equals)!==null&&_b!==void 0?_b:opts.equals=(_d=(_c=opts.adapter)===null||_c===void 0?void 0:_c.equals)!==null&&_d!==void 0?_d:defaultEquals;return opts}function wrapCompile(func){return function(selector,options,context){const opts=convertOptionFormats(options);return func(selector,opts,context)}}
/**
* Compiles the query, returns a function.
*/const compile=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compile);const _compileUnsafe=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileUnsafe);const _compileToken=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileToken);function getSelectorFunc(searchFunc){return function(query,elements,options){const opts=convertOptionFormats(options);if(typeof query!=="function")query=(0,_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileUnsafe)(query,opts,elements);const filteredElements=prepareContext(elements,opts.adapter,query.shouldTestNextSiblings);return searchFunc(query,filteredElements,opts)}}function prepareContext(elems,adapter,shouldTestNextSiblings=false){
/*
* Add siblings if the query requires them.
* See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
*/
if(shouldTestNextSiblings)elems=appendNextSiblings(elems,adapter);return Array.isArray(elems)?adapter.removeSubsets(elems):adapter.getChildren(elems)}function appendNextSiblings(elem,adapter){
// Order matters because jQuery seems to check the children before the siblings
const elems=Array.isArray(elem)?elem.slice(0):[elem];const elemsLength=elems.length;for(let i=0;i<elemsLength;i++){const nextSiblings=(0,_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.getNextSiblings)(elems[i],adapter);elems.push(...nextSiblings)}return elems}
/**
* @template Node The generic Node type for the DOM adapter being used.
* @template ElementNode The Node type for elements for the DOM adapter being used.
* @param elems Elements to query. If it is an element, its children will be queried..
* @param query can be either a CSS selector string or a compiled query function.
* @param [options] options for querying the document.
* @see compile for supported selector queries.
* @returns All matching elements.
*
*/const selectAll=getSelectorFunc(((query,elems,options)=>query===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc||!elems||elems.length===0?[]:options.adapter.findAll(query,elems)));
/**
* @template Node The generic Node type for the DOM adapter being used.
* @template ElementNode The Node type for elements for the DOM adapter being used.
* @param elems Elements to query. If it is an element, its children will be queried..
* @param query can be either a CSS selector string or a compiled query function.
* @param [options] options for querying the document.
* @see compile for supported selector queries.
* @returns the first match, or null if there was no match.
*/const selectOne=getSelectorFunc(((query,elems,options)=>query===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc||!elems||elems.length===0?null:options.adapter.findOne(query,elems)));
/**
* Tests whether or not an element is matched by query.
*
* @template Node The generic Node type for the DOM adapter being used.
* @template ElementNode The Node type for elements for the DOM adapter being used.
* @param elem The element to test if it matches the query.
* @param query can be either a CSS selector string or a compiled query function.
* @param [options] options for querying the document.
* @see compile for supported selector queries.
* @returns
*/function is(elem,query,options){const opts=convertOptionFormats(options);return(typeof query==="function"?query:(0,_compile_js__WEBPACK_IMPORTED_MODULE_2__.compile)(query,opts))(elem)}
/**
* Alias for selectAll(query, elems, options).
* @see [compile] for supported selector queries.
*/
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=selectAll;
// Export filters, pseudos and aliases to allow users to supply their own.
/** @deprecated Use the `pseudos` option instead. */
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js":
/*!*********************************************************************!*\
!*** ./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js ***!
\*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* binding */aliases
/* harmony export */});
/**
* Aliases are pseudos that are expressed as selectors.
*/const aliases={
// Links
"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",
// Forms
// https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
disabled:`:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",
// JQuery extensions
// https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"};
//# sourceMappingURL=aliases.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/filters.js":
/*!*********************************************************************!*\
!*** ./node_modules/css-select/lib/esm/pseudo-selectors/filters.js ***!
\*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */filters:()=>/* binding */filters
/* harmony export */});
/* harmony import */var nth_check__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! nth-check */"./node_modules/nth-check/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");function getChildFunc(next,adapter){return elem=>{const parent=adapter.getParent(elem);return parent!=null&&adapter.isTag(parent)&&next(elem)}}const filters={contains(next,text,{adapter}){return function(elem){return next(elem)&&adapter.getText(elem).includes(text)}},icontains(next,text,{adapter}){const itext=text.toLowerCase();return function(elem){return next(elem)&&adapter.getText(elem).toLowerCase().includes(itext)}},
// Location specific methods
"nth-child"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=0;i<siblings.length;i++){if(equals(elem,siblings[i]))break;if(adapter.isTag(siblings[i]))pos++}return func(pos)&&next(elem)}},"nth-last-child"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=siblings.length-1;i>=0;i--){if(equals(elem,siblings[i]))break;if(adapter.isTag(siblings[i]))pos++}return func(pos)&&next(elem)}},"nth-of-type"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem))pos++}return func(pos)&&next(elem)}},"nth-last-of-type"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=siblings.length-1;i>=0;i--){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem))pos++}return func(pos)&&next(elem)}},
// TODO determine the actual root element
root(next,_rule,{adapter}){return elem=>{const parent=adapter.getParent(elem);return(parent==null||!adapter.isTag(parent))&&next(elem)}},scope(next,rule,options,context){const{equals}=options;if(!context||context.length===0)
// Equivalent to :root
return filters["root"](next,rule,options);if(context.length===1)
// NOTE: can't be unpacked, as :has uses this for side-effects
return elem=>equals(context[0],elem)&&next(elem);return elem=>context.includes(elem)&&next(elem)},hover:dynamicStatePseudo("isHovered"),visited:dynamicStatePseudo("isVisited"),active:dynamicStatePseudo("isActive")};
/**
* Dynamic state pseudos. These depend on optional Adapter methods.
*
* @param name The name of the adapter method to call.
* @returns Pseudo for the `filters` object.
*/function dynamicStatePseudo(name){return function(next,_rule,{adapter}){const func=adapter[name];if(typeof func!=="function")return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;return function(elem){return func(elem)&&next(elem)}}}
//# sourceMappingURL=filters.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/index.js":
/*!*******************************************************************!*\
!*** ./node_modules/css-select/lib/esm/pseudo-selectors/index.js ***!
\*******************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* reexport safe */_aliases_js__WEBPACK_IMPORTED_MODULE_2__.aliases
/* harmony export */,compilePseudoSelector:()=>/* binding */compilePseudoSelector
/* harmony export */,filters:()=>/* reexport safe */_filters_js__WEBPACK_IMPORTED_MODULE_0__.filters
/* harmony export */,pseudos:()=>/* reexport safe */_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var _filters_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./filters.js */"./node_modules/css-select/lib/esm/pseudo-selectors/filters.js");
/* harmony import */var _pseudos_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./pseudos.js */"./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js");
/* harmony import */var _aliases_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./aliases.js */"./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js");
/* harmony import */var _subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");function compilePseudoSelector(next,selector,options,context,compileToken){var _a;const{name,data}=selector;if(Array.isArray(data)){if(!(name in _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects))throw new Error(`Unknown pseudo-class :${name}(${data})`);return _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects[name](next,data,options,context,compileToken)}const userPseudo=(_a=options.pseudos)===null||_a===void 0?void 0:_a[name];const stringPseudo=typeof userPseudo==="string"?userPseudo:_aliases_js__WEBPACK_IMPORTED_MODULE_2__.aliases[name];if(typeof stringPseudo==="string"){if(data!=null)throw new Error(`Pseudo ${name} doesn't have any arguments`);
// The alias has to be parsed here, to make sure options are respected.
const alias=(0,css_what__WEBPACK_IMPORTED_MODULE_4__.parse)(stringPseudo);return _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects["is"](next,alias,options,context,compileToken)}if(typeof userPseudo==="function"){(0,_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.verifyPseudoArgs)(userPseudo,name,data,1);return elem=>userPseudo(elem,data)&&next(elem)}if(name in _filters_js__WEBPACK_IMPORTED_MODULE_0__.filters)return _filters_js__WEBPACK_IMPORTED_MODULE_0__.filters[name](next,data,options,context);if(name in _pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos){const pseudo=_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos[name];(0,_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.verifyPseudoArgs)(pseudo,name,data,2);return elem=>pseudo(elem,options,data)&&next(elem)}throw new Error(`Unknown pseudo-class :${name}`)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js":
/*!*********************************************************************!*\
!*** ./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js ***!
\*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */pseudos:()=>/* binding */pseudos
/* harmony export */,verifyPseudoArgs:()=>/* binding */verifyPseudoArgs
/* harmony export */});
// While filters are precompiled, pseudos get called when they are needed
const pseudos={empty(elem,{adapter}){return!adapter.getChildren(elem).some((elem=>
// FIXME: `getText` call is potentially expensive.
adapter.isTag(elem)||adapter.getText(elem)!==""))},"first-child"(elem,{adapter,equals}){if(adapter.prevElementSibling)return adapter.prevElementSibling(elem)==null;const firstChild=adapter.getSiblings(elem).find((elem=>adapter.isTag(elem)));return firstChild!=null&&equals(elem,firstChild)},"last-child"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);for(let i=siblings.length-1;i>=0;i--){if(equals(elem,siblings[i]))return true;if(adapter.isTag(siblings[i]))break}return false},"first-of-type"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);const elemName=adapter.getName(elem);for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))return true;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return false},"last-of-type"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);const elemName=adapter.getName(elem);for(let i=siblings.length-1;i>=0;i--){const currentSibling=siblings[i];if(equals(elem,currentSibling))return true;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return false},"only-of-type"(elem,{adapter,equals}){const elemName=adapter.getName(elem);return adapter.getSiblings(elem).every((sibling=>equals(elem,sibling)||!adapter.isTag(sibling)||adapter.getName(sibling)!==elemName))},"only-child"(elem,{adapter,equals}){return adapter.getSiblings(elem).every((sibling=>equals(elem,sibling)||!adapter.isTag(sibling)))}};function verifyPseudoArgs(func,name,subselect,argIndex){if(subselect===null){if(func.length>argIndex)throw new Error(`Pseudo-class :${name} requires an argument`)}else if(func.length===argIndex)throw new Error(`Pseudo-class :${name} doesn't have any arguments`)}
//# sourceMappingURL=pseudos.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js":
/*!************************************************************************!*\
!*** ./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js ***!
\************************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */PLACEHOLDER_ELEMENT:()=>/* binding */PLACEHOLDER_ELEMENT
/* harmony export */,ensureIsTag:()=>/* binding */ensureIsTag
/* harmony export */,getNextSiblings:()=>/* binding */getNextSiblings
/* harmony export */,subselects:()=>/* binding */subselects
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _sort_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../sort.js */"./node_modules/css-select/lib/esm/sort.js");
/** Used as a placeholder for :has. Will be replaced with the actual element. */const PLACEHOLDER_ELEMENT={};function ensureIsTag(next,adapter){if(next===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;return elem=>adapter.isTag(elem)&&next(elem)}function getNextSiblings(elem,adapter){const siblings=adapter.getSiblings(elem);if(siblings.length<=1)return[];const elemIndex=siblings.indexOf(elem);if(elemIndex<0||elemIndex===siblings.length-1)return[];return siblings.slice(elemIndex+1).filter(adapter.isTag)}function copyOptions(options){
// Not copied: context, rootFunc
return{xmlMode:!!options.xmlMode,lowerCaseAttributeNames:!!options.lowerCaseAttributeNames,lowerCaseTags:!!options.lowerCaseTags,quirksMode:!!options.quirksMode,cacheResults:!!options.cacheResults,pseudos:options.pseudos,adapter:options.adapter,equals:options.equals}}const is=(next,token,options,context,compileToken)=>{const func=compileToken(token,copyOptions(options),context);return func===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc?next:func===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:elem=>func(elem)&&next(elem)};
/*
* :not, :has, :is, :matches and :where have to compile selectors
* doing this in src/pseudos.ts would lead to circular dependencies,
* so we add them here
*/const subselects={is,
/**
* `:matches` and `:where` are aliases for `:is`.
*/
matches:is,where:is,not(next,token,options,context,compileToken){const func=compileToken(token,copyOptions(options),context);return func===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?next:func===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:elem=>!func(elem)&&next(elem)},has(next,subselect,options,_context,compileToken){const{adapter}=options;const opts=copyOptions(options);opts.relativeSelector=true;const context=subselect.some((s=>s.some(_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)))?// Used as a placeholder. Will be replaced with the actual element.
[PLACEHOLDER_ELEMENT]:void 0;const compiled=compileToken(subselect,opts,context);if(compiled===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;const hasElement=ensureIsTag(compiled,adapter);
// If `compiled` is `trueFunc`, we can skip this.
if(context&&compiled!==boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc){
/*
* `shouldTestNextSiblings` will only be true if the query starts with
* a traversal (sibling or adjacent). That means we will always have a context.
*/
const{shouldTestNextSiblings=false}=compiled;return elem=>{if(!next(elem))return false;context[0]=elem;const childs=adapter.getChildren(elem);const nextElements=shouldTestNextSiblings?[...childs,...getNextSiblings(elem,adapter)]:childs;return adapter.existsOne(hasElement,nextElements)}}return elem=>next(elem)&&adapter.existsOne(hasElement,adapter.getChildren(elem))}};
//# sourceMappingURL=subselects.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/sort.js":
/*!*************************************************!*\
!*** ./node_modules/css-select/lib/esm/sort.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>/* binding */sortByProcedure
/* harmony export */,isTraversal:()=>/* binding */isTraversal
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");const procedure=new Map([[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Universal,50],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Tag,30],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,1],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo,0]]);function isTraversal(token){return!procedure.has(token.type)}const attributes=new Map([[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Exists,10],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals,8],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Not,7],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Start,6],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.End,6],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Any,5]]);
/**
* Sort the parts of the passed selector,
* as there is potential for optimization
* (some types of selectors are faster than others)
*
* @param arr Selector to sort
*/function sortByProcedure(arr){const procs=arr.map(getProcedure);for(let i=1;i<arr.length;i++){const procNew=procs[i];if(procNew<0)continue;for(let j=i-1;j>=0&&procNew<procs[j];j--){const token=arr[j+1];arr[j+1]=arr[j];arr[j]=token;procs[j+1]=procs[j];procs[j]=procNew}}}function getProcedure(token){var _a,_b;let proc=(_a=procedure.get(token.type))!==null&&_a!==void 0?_a:-1;if(token.type===css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute){proc=(_b=attributes.get(token.action))!==null&&_b!==void 0?_b:4;if(token.action===css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals&&token.name==="id")
// Prefer ID selectors (eg. #ID)
proc=9;if(token.ignoreCase)
/*
* IgnoreCase adds some overhead, prefer "normal" token
* this is a binary operation, to ensure it's still an int
*/
proc>>=1}else if(token.type===css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo)if(!token.data)proc=3;else if(token.name==="has"||token.name==="contains")proc=0;// Expensive in any case
else if(Array.isArray(token.data)){
// Eg. :matches, :not
proc=Math.min(...token.data.map((d=>Math.min(...d.map(getProcedure)))));
// If we have traversals, try to avoid executing this selector
if(proc<0)proc=0}else proc=2;return proc}
//# sourceMappingURL=sort.js.map
/***/},
/***/"./node_modules/css-what/lib/es/parse.js":
/*!***********************************************!*\
!*** ./node_modules/css-what/lib/es/parse.js ***!
\***********************************************/
/***/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */isTraversal:()=>/* binding */isTraversal
/* harmony export */,parse:()=>/* binding */parse
/* harmony export */});
/* harmony import */var _types__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./types */"./node_modules/css-what/lib/es/types.js");const reName=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/;const reEscape=/\\([\da-f]{1,6}\s?|(\s)|.)/gi;const actionTypes=new Map([[126/* Tilde */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Element],[94/* Circumflex */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Start],[36/* Dollar */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.End],[42/* Asterisk */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Any],[33/* ExclamationMark */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Not],[124/* Pipe */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Hyphen]]);
// Pseudos, whose data property is parsed as well.
const unpackPseudos=new Set(["has","not","matches","is","where","host","host-context"]);
/**
* Checks whether a specific selector is a traversal.
* This is useful eg. in swapping the order of elements that
* are not traversals.
*
* @param selector Selector to check.
*/function isTraversal(selector){switch(selector.type){case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Adjacent:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Child:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Parent:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Sibling:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.ColumnCombinator:return true;default:return false}}const stripQuotesFromPseudos=new Set(["contains","icontains"]);
// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152
function funescape(_,escaped,escapedWhitespace){const high=parseInt(escaped,16)-65536;
// NaN means non-codepoint
return high!==high||escapedWhitespace?escaped:high<0?// BMP codepoint
String.fromCharCode(high+65536):// Supplemental Plane codepoint (surrogate pair)
String.fromCharCode(high>>10|55296,high&1023|56320)}function unescapeCSS(str){return str.replace(reEscape,funescape)}function isQuote(c){return c===39/* SingleQuote */||c===34/* DoubleQuote */}function isWhitespace(c){return c===32/* Space */||c===9/* Tab */||c===10/* NewLine */||c===12/* FormFeed */||c===13/* CarriageReturn */}
/**
* Parses `selector`, optionally with the passed `options`.
*
* @param selector Selector to parse.
* @param options Options for parsing.
* @returns Returns a two-dimensional array.
* The first dimension represents selectors separated by commas (eg. `sub1, sub2`),
* the second contains the relevant tokens for that selector.
*/function parse(selector){const subselects=[];const endIndex=parseSelector(subselects,`${selector}`,0);if(endIndex<selector.length)throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);return subselects}function parseSelector(subselects,selector,selectorIndex){let tokens=[];function getName(offset){const match=selector.slice(selectorIndex+offset).match(reName);if(!match)throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);const[name]=match;selectorIndex+=offset+name.length;return unescapeCSS(name)}function stripWhitespace(offset){selectorIndex+=offset;while(selectorIndex<selector.length&&isWhitespace(selector.charCodeAt(selectorIndex)))selectorIndex++}function readValueWithParenthesis(){selectorIndex+=1;const start=selectorIndex;let counter=1;for(;counter>0&&selectorIndex<selector.length;selectorIndex++)if(selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */&&!isEscaped(selectorIndex))counter++;else if(selector.charCodeAt(selectorIndex)===41/* RightParenthesis */&&!isEscaped(selectorIndex))counter--;if(counter)throw new Error("Parenthesis not matched");return unescapeCSS(selector.slice(start,selectorIndex-1))}function isEscaped(pos){let slashCount=0;while(selector.charCodeAt(--pos)===92/* BackSlash */)slashCount++;return(slashCount&1)===1}function ensureNotTraversal(){if(tokens.length>0&&isTraversal(tokens[tokens.length-1]))throw new Error("Did not expect successive traversals.")}function addTraversal(type){if(tokens.length>0&&tokens[tokens.length-1].type===_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant){tokens[tokens.length-1].type=type;return}ensureNotTraversal();tokens.push({type})}function addSpecialAttribute(name,action){tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,name,action,value:getName(1),namespace:null,ignoreCase:"quirks"})}
/**
* We have finished parsing the current part of the selector.
*
* Remove descendant tokens at the end if they exist,
* and return the last index, so that parsing can be
* picked up from here.
*/function finalizeSubselector(){if(tokens.length&&tokens[tokens.length-1].type===_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant)tokens.pop();if(tokens.length===0)throw new Error("Empty sub-selector");subselects.push(tokens)}stripWhitespace(0);if(selector.length===selectorIndex)return selectorIndex;loop:while(selectorIndex<selector.length){const firstChar=selector.charCodeAt(selectorIndex);switch(firstChar){
// Whitespace
case 32/* Space */:case 9/* Tab */:case 10/* NewLine */:case 12/* FormFeed */:case 13/* CarriageReturn */:if(tokens.length===0||tokens[0].type!==_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant){ensureNotTraversal();tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant})}stripWhitespace(1);break;
// Traversals
case 62/* GreaterThan */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Child);stripWhitespace(1);break;case 60/* LessThan */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Parent);stripWhitespace(1);break;case 126/* Tilde */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Sibling);stripWhitespace(1);break;case 43/* Plus */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Adjacent);stripWhitespace(1);break;
// Special attribute selectors: .class, #id
case 46/* Period */:addSpecialAttribute("class",_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Element);break;case 35/* Hash */:addSpecialAttribute("id",_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals);break;case 91/* LeftSquareBracket */:{stripWhitespace(1);
// Determine attribute name and namespace
let name;let namespace=null;if(selector.charCodeAt(selectorIndex)===124/* Pipe */)
// Equivalent to no namespace
name=getName(1);else if(selector.startsWith("*|",selectorIndex)){namespace="*";name=getName(2)}else{name=getName(0);if(selector.charCodeAt(selectorIndex)===124/* Pipe */&&selector.charCodeAt(selectorIndex+1)!==61/* Equal */){namespace=name;name=getName(1)}}stripWhitespace(0);
// Determine comparison operation
let action=_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Exists;const possibleAction=actionTypes.get(selector.charCodeAt(selectorIndex));if(possibleAction){action=possibleAction;if(selector.charCodeAt(selectorIndex+1)!==61/* Equal */)throw new Error("Expected `=`");stripWhitespace(2)}else if(selector.charCodeAt(selectorIndex)===61/* Equal */){action=_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals;stripWhitespace(1)}
// Determine value
let value="";let ignoreCase=null;if(action!=="exists"){if(isQuote(selector.charCodeAt(selectorIndex))){const quote=selector.charCodeAt(selectorIndex);let sectionEnd=selectorIndex+1;while(sectionEnd<selector.length&&(selector.charCodeAt(sectionEnd)!==quote||isEscaped(sectionEnd)))sectionEnd+=1;if(selector.charCodeAt(sectionEnd)!==quote)throw new Error("Attribute value didn't end");value=unescapeCSS(selector.slice(selectorIndex+1,sectionEnd));selectorIndex=sectionEnd+1}else{const valueStart=selectorIndex;while(selectorIndex<selector.length&&(!isWhitespace(selector.charCodeAt(selectorIndex))&&selector.charCodeAt(selectorIndex)!==93/* RightSquareBracket */||isEscaped(selectorIndex)))selectorIndex+=1;value=unescapeCSS(selector.slice(valueStart,selectorIndex))}stripWhitespace(0);
// See if we have a force ignore flag
const forceIgnore=selector.charCodeAt(selectorIndex)|32;
// If the forceIgnore flag is set (either `i` or `s`), use that value
if(forceIgnore===115/* LowerS */){ignoreCase=false;stripWhitespace(1)}else if(forceIgnore===105/* LowerI */){ignoreCase=true;stripWhitespace(1)}}if(selector.charCodeAt(selectorIndex)!==93/* RightSquareBracket */)throw new Error("Attribute selector didn't terminate");selectorIndex+=1;const attributeSelector={type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,name,action,value,namespace,ignoreCase};tokens.push(attributeSelector);break}case 58/* Colon */:{if(selector.charCodeAt(selectorIndex+1)===58/* Colon */){tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.PseudoElement,name:getName(2).toLowerCase(),data:selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */?readValueWithParenthesis():null});continue}const name=getName(1).toLowerCase();let data=null;if(selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */)if(unpackPseudos.has(name)){if(isQuote(selector.charCodeAt(selectorIndex+1)))throw new Error(`Pseudo-selector ${name} cannot be quoted`);data=[];selectorIndex=parseSelector(data,selector,selectorIndex+1);if(selector.charCodeAt(selectorIndex)!==41/* RightParenthesis */)throw new Error(`Missing closing parenthesis in :${name} (${selector})`);selectorIndex+=1}else{data=readValueWithParenthesis();if(stripQuotesFromPseudos.has(name)){const quot=data.charCodeAt(0);if(quot===data.charCodeAt(data.length-1)&&isQuote(quot))data=data.slice(1,-1)}data=unescapeCSS(data)}tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo,name,data});break}case 44/* Comma */:finalizeSubselector();tokens=[];stripWhitespace(1);break;default:{if(selector.startsWith("/*",selectorIndex)){const endIndex=selector.indexOf("*/",selectorIndex+2);if(endIndex<0)throw new Error("Comment was not terminated");selectorIndex=endIndex+2;
// Remove leading whitespace
if(tokens.length===0)stripWhitespace(0);break}let namespace=null;let name;if(firstChar===42/* Asterisk */){selectorIndex+=1;name="*"}else if(firstChar===124/* Pipe */){name="";if(selector.charCodeAt(selectorIndex+1)===124/* Pipe */){addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.ColumnCombinator);stripWhitespace(2);break}}else if(reName.test(selector.slice(selectorIndex)))name=getName(0);else break loop;if(selector.charCodeAt(selectorIndex)===124/* Pipe */&&selector.charCodeAt(selectorIndex+1)!==124/* Pipe */){namespace=name;if(selector.charCodeAt(selectorIndex+1)===42/* Asterisk */){name="*";selectorIndex+=2}else name=getName(1)}tokens.push(name==="*"?{type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Universal,namespace}:{type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Tag,name,namespace})}}}finalizeSubselector();return selectorIndex}
/***/},
/***/"./node_modules/css-what/lib/es/types.js":
/*!***********************************************!*\
!*** ./node_modules/css-what/lib/es/types.js ***!
\***********************************************/
/***/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */AttributeAction:()=>/* binding */AttributeAction
/* harmony export */,IgnoreCaseMode:()=>/* binding */IgnoreCaseMode
/* harmony export */,SelectorType:()=>/* binding */SelectorType
/* harmony export */});var SelectorType;(function(SelectorType){SelectorType["Attribute"]="attribute";SelectorType["Pseudo"]="pseudo";SelectorType["PseudoElement"]="pseudo-element";SelectorType["Tag"]="tag";SelectorType["Universal"]="universal";
// Traversals
SelectorType["Adjacent"]="adjacent";SelectorType["Child"]="child";SelectorType["Descendant"]="descendant";SelectorType["Parent"]="parent";SelectorType["Sibling"]="sibling";SelectorType["ColumnCombinator"]="column-combinator"})(SelectorType||(SelectorType={}));
/**
* Modes for ignore case.
*
* This could be updated to an enum, and the object is
* the current stand-in that will allow code to be updated
* without big changes.
*/const IgnoreCaseMode={Unknown:null,QuirksMode:"quirks",IgnoreCase:true,CaseSensitive:false};var AttributeAction;(function(AttributeAction){AttributeAction["Any"]="any";AttributeAction["Element"]="element";AttributeAction["End"]="end";AttributeAction["Equals"]="equals";AttributeAction["Exists"]="exists";AttributeAction["Hyphen"]="hyphen";AttributeAction["Not"]="not";AttributeAction["Start"]="start"})(AttributeAction||(AttributeAction={}));
/***/},
/***/"./node_modules/dom-serializer/lib/esm/foreignNames.js":
/*!*************************************************************!*\
!*** ./node_modules/dom-serializer/lib/esm/foreignNames.js ***!
\*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */attributeNames:()=>/* binding */attributeNames
/* harmony export */,elementNames:()=>/* binding */elementNames
/* harmony export */});const elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((val=>[val.toLowerCase(),val])));const attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((val=>[val.toLowerCase(),val])));
/***/},
/***/"./node_modules/dom-serializer/lib/esm/index.js":
/*!******************************************************!*\
!*** ./node_modules/dom-serializer/lib/esm/index.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,render:()=>/* binding */render
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var entities__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! entities */"./node_modules/entities/lib/esm/index.js");
/* harmony import */var _foreignNames_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foreignNames.js */"./node_modules/dom-serializer/lib/esm/foreignNames.js");
/*
* Module dependencies
*/
/**
* Mixed-case SVG and MathML tags & attributes
* recognized by the HTML parser.
*
* @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
*/const unencodedElements=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function replaceQuotes(value){return value.replace(/"/g,""")}
/**
* Format attributes
*/function formatAttributes(attributes,opts){var _a;if(!attributes)return;const encode=((_a=opts.encodeEntities)!==null&&_a!==void 0?_a:opts.decodeEntities)===false?replaceQuotes:opts.xmlMode||opts.encodeEntities!=="utf8"?entities__WEBPACK_IMPORTED_MODULE_1__.encodeXML:entities__WEBPACK_IMPORTED_MODULE_1__.escapeAttribute;return Object.keys(attributes).map((key=>{var _a,_b;const value=(_a=attributes[key])!==null&&_a!==void 0?_a:"";if(opts.xmlMode==="foreign")
/* Fix up mixed-case attribute names */
key=(_b=_foreignNames_js__WEBPACK_IMPORTED_MODULE_2__.attributeNames.get(key))!==null&&_b!==void 0?_b:key;if(!opts.emptyAttrs&&!opts.xmlMode&&value==="")return key;return`${key}="${encode(value)}"`})).join(" ")}
/**
* Self-enclosing tags
*/const singleTag=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);
/**
* Renders a DOM node or an array of DOM nodes to a string.
*
* Can be thought of as the equivalent of the `outerHTML` of the passed node(s).
*
* @param node Node to be rendered.
* @param options Changes serialization behavior
*/function render(node,options={}){const nodes="length"in node?node:[node];let output="";for(let i=0;i<nodes.length;i++)output+=renderNode(nodes[i],options);return output}
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=render;function renderNode(node,options){switch(node.type){case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Root:return render(node.children,options);
// @ts-expect-error We don't use `Doctype` yet
case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Doctype:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Directive:return renderDirective(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Comment:return renderComment(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.CDATA:return renderCdata(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Script:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Style:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Tag:return renderTag(node,options);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Text:return renderText(node,options)}}const foreignModeIntegrationPoints=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]);const foreignElements=new Set(["svg","math"]);function renderTag(elem,opts){var _a;
// Handle SVG / MathML in HTML
if(opts.xmlMode==="foreign"){
/* Fix up mixed-case element names */
elem.name=(_a=_foreignNames_js__WEBPACK_IMPORTED_MODULE_2__.elementNames.get(elem.name))!==null&&_a!==void 0?_a:elem.name;
/* Exit foreign mode at integration points */if(elem.parent&&foreignModeIntegrationPoints.has(elem.parent.name))opts={...opts,xmlMode:false}}if(!opts.xmlMode&&foreignElements.has(elem.name))opts={...opts,xmlMode:"foreign"};let tag=`<${elem.name}`;const attribs=formatAttributes(elem.attribs,opts);if(attribs)tag+=` ${attribs}`;if(elem.children.length===0&&(opts.xmlMode?// In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags
opts.selfClosingTags!==false:// User explicitly asked for self-closing tags, even in HTML mode
opts.selfClosingTags&&singleTag.has(elem.name))){if(!opts.xmlMode)tag+=" ";tag+="/>"}else{tag+=">";if(elem.children.length>0)tag+=render(elem.children,opts);if(opts.xmlMode||!singleTag.has(elem.name))tag+=`</${elem.name}>`}return tag}function renderDirective(elem){return`<${elem.data}>`}function renderText(elem,opts){var _a;let data=elem.data||"";
// If entities weren't decoded, no need to encode them back
if(((_a=opts.encodeEntities)!==null&&_a!==void 0?_a:opts.decodeEntities)!==false&&!(!opts.xmlMode&&elem.parent&&unencodedElements.has(elem.parent.name)))data=opts.xmlMode||opts.encodeEntities!=="utf8"?(0,entities__WEBPACK_IMPORTED_MODULE_1__.encodeXML)(data):(0,entities__WEBPACK_IMPORTED_MODULE_1__.escapeText)(data);return data}function renderCdata(elem){return`<![CDATA[${elem.children[0].data}]]>`}function renderComment(elem){return`\x3c!--${elem.data}--\x3e`}
/***/},
/***/"./node_modules/domelementtype/lib/esm/index.js":
/*!******************************************************!*\
!*** ./node_modules/domelementtype/lib/esm/index.js ***!
\******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* binding */CDATA
/* harmony export */,Comment:()=>/* binding */Comment
/* harmony export */,Directive:()=>/* binding */Directive
/* harmony export */,Doctype:()=>/* binding */Doctype
/* harmony export */,ElementType:()=>/* binding */ElementType
/* harmony export */,Root:()=>/* binding */Root
/* harmony export */,Script:()=>/* binding */Script
/* harmony export */,Style:()=>/* binding */Style
/* harmony export */,Tag:()=>/* binding */Tag
/* harmony export */,Text:()=>/* binding */Text
/* harmony export */,isTag:()=>/* binding */isTag
/* harmony export */});
/** Types of elements found in htmlparser2's DOM */var ElementType;(function(ElementType){
/** Type for the root element of a document */
ElementType["Root"]="root";
/** Type for Text */ElementType["Text"]="text";
/** Type for <? ... ?> */ElementType["Directive"]="directive";
/** Type for <!-- ... --> */ElementType["Comment"]="comment";
/** Type for <script> tags */ElementType["Script"]="script";
/** Type for <style> tags */ElementType["Style"]="style";
/** Type for Any tag */ElementType["Tag"]="tag";
/** Type for <![CDATA[ ... ]]> */ElementType["CDATA"]="cdata";
/** Type for <!doctype ...> */ElementType["Doctype"]="doctype"})(ElementType||(ElementType={}));
/**
* Tests whether an element is a tag or not.
*
* @param elem Element to test
*/function isTag(elem){return elem.type===ElementType.Tag||elem.type===ElementType.Script||elem.type===ElementType.Style}
// Exports for backwards compatibility
/** Type for the root element of a document */const Root=ElementType.Root;
/** Type for Text */const Text=ElementType.Text;
/** Type for <? ... ?> */const Directive=ElementType.Directive;
/** Type for <!-- ... --> */const Comment=ElementType.Comment;
/** Type for <script> tags */const Script=ElementType.Script;
/** Type for <style> tags */const Style=ElementType.Style;
/** Type for Any tag */const Tag=ElementType.Tag;
/** Type for <![CDATA[ ... ]]> */const CDATA=ElementType.CDATA;
/** Type for <!doctype ...> */const Doctype=ElementType.Doctype;
/***/},
/***/"./node_modules/domhandler/lib/esm/index.js":
/*!**************************************************!*\
!*** ./node_modules/domhandler/lib/esm/index.js ***!
\**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.CDATA
/* harmony export */,Comment:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Comment
/* harmony export */,DataNode:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.DataNode
/* harmony export */,Document:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Document
/* harmony export */,DomHandler:()=>/* binding */DomHandler
/* harmony export */,Element:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Element
/* harmony export */,Node:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Node
/* harmony export */,NodeWithChildren:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.NodeWithChildren
/* harmony export */,ProcessingInstruction:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.ProcessingInstruction
/* harmony export */,Text:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Text
/* harmony export */,cloneNode:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.cloneNode
/* harmony export */,default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,hasChildren:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.hasChildren
/* harmony export */,isCDATA:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isCDATA
/* harmony export */,isComment:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isComment
/* harmony export */,isDirective:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isDirective
/* harmony export */,isDocument:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isDocument
/* harmony export */,isTag:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isTag
/* harmony export */,isText:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isText
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var _node_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./node.js */"./node_modules/domhandler/lib/esm/node.js");
// Default options
const defaultOpts={withStartIndices:false,withEndIndices:false,xmlMode:false};class DomHandler{
/**
* @param callback Called once parsing has completed.
* @param options Settings for the handler.
* @param elementCB Callback whenever a tag is closed.
*/
constructor(callback,options,elementCB){
/** The elements of the DOM */
this.dom=[];
/** The root element for the DOM */this.root=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Document(this.dom);
/** Indicated whether parsing has been completed. */this.done=false;
/** Stack of open tags. */this.tagStack=[this.root];
/** A data node that is still being written to. */this.lastNode=null;
/** Reference to the parser instance. Used for location information. */this.parser=null;
// Make it possible to skip arguments, for backwards-compatibility
if(typeof options==="function"){elementCB=options;options=defaultOpts}if(typeof callback==="object"){options=callback;callback=void 0}this.callback=callback!==null&&callback!==void 0?callback:null;this.options=options!==null&&options!==void 0?options:defaultOpts;this.elementCB=elementCB!==null&&elementCB!==void 0?elementCB:null}onparserinit(parser){this.parser=parser}
// Resets the handler back to starting state
onreset(){this.dom=[];this.root=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Document(this.dom);this.done=false;this.tagStack=[this.root];this.lastNode=null;this.parser=null}
// Signals the handler that parsing is done
onend(){if(this.done)return;this.done=true;this.parser=null;this.handleCallback(null)}onerror(error){this.handleCallback(error)}onclosetag(){this.lastNode=null;const elem=this.tagStack.pop();if(this.options.withEndIndices)elem.endIndex=this.parser.endIndex;if(this.elementCB)this.elementCB(elem)}onopentag(name,attribs){const type=this.options.xmlMode?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Tag:void 0;const element=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Element(name,attribs,void 0,type);this.addNode(element);this.tagStack.push(element)}ontext(data){const{lastNode}=this;if(lastNode&&lastNode.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text){lastNode.data+=data;if(this.options.withEndIndices)lastNode.endIndex=this.parser.endIndex}else{const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Text(data);this.addNode(node);this.lastNode=node}}oncomment(data){if(this.lastNode&&this.lastNode.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment){this.lastNode.data+=data;return}const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Comment(data);this.addNode(node);this.lastNode=node}oncommentend(){this.lastNode=null}oncdatastart(){const text=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Text("");const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.CDATA([text]);this.addNode(node);text.parent=node;this.lastNode=text}oncdataend(){this.lastNode=null}onprocessinginstruction(name,data){const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.ProcessingInstruction(name,data);this.addNode(node)}handleCallback(error){if(typeof this.callback==="function")this.callback(error,this.dom);else if(error)throw error}addNode(node){const parent=this.tagStack[this.tagStack.length-1];const previousSibling=parent.children[parent.children.length-1];if(this.options.withStartIndices)node.startIndex=this.parser.startIndex;if(this.options.withEndIndices)node.endIndex=this.parser.endIndex;parent.children.push(node);if(previousSibling){node.prev=previousSibling;previousSibling.next=node}node.parent=parent;this.lastNode=null}}
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=DomHandler;
/***/},
/***/"./node_modules/domhandler/lib/esm/node.js":
/*!*************************************************!*\
!*** ./node_modules/domhandler/lib/esm/node.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* binding */CDATA
/* harmony export */,Comment:()=>/* binding */Comment
/* harmony export */,DataNode:()=>/* binding */DataNode
/* harmony export */,Document:()=>/* binding */Document
/* harmony export */,Element:()=>/* binding */Element
/* harmony export */,Node:()=>/* binding */Node
/* harmony export */,NodeWithChildren:()=>/* binding */NodeWithChildren
/* harmony export */,ProcessingInstruction:()=>/* binding */ProcessingInstruction
/* harmony export */,Text:()=>/* binding */Text
/* harmony export */,cloneNode:()=>/* binding */cloneNode
/* harmony export */,hasChildren:()=>/* binding */hasChildren
/* harmony export */,isCDATA:()=>/* binding */isCDATA
/* harmony export */,isComment:()=>/* binding */isComment
/* harmony export */,isDirective:()=>/* binding */isDirective
/* harmony export */,isDocument:()=>/* binding */isDocument
/* harmony export */,isTag:()=>/* binding */isTag
/* harmony export */,isText:()=>/* binding */isText
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/**
* This object will be used as the prototype for Nodes when creating a
* DOM-Level-1-compliant structure.
*/class Node{constructor(){
/** Parent of the node */
this.parent=null;
/** Previous sibling */this.prev=null;
/** Next sibling */this.next=null;
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */this.startIndex=null;
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */this.endIndex=null}
// Read-write aliases for properties
/**
* Same as {@link parent}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
get parentNode(){return this.parent}set parentNode(parent){this.parent=parent}
/**
* Same as {@link prev}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/get previousSibling(){return this.prev}set previousSibling(prev){this.prev=prev}
/**
* Same as {@link next}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/get nextSibling(){return this.next}set nextSibling(next){this.next=next}
/**
* Clone this node, and optionally its children.
*
* @param recursive Clone child nodes as well.
* @returns A clone of the node.
*/cloneNode(recursive=false){return cloneNode(this,recursive)}}
/**
* A node that contains some data.
*/class DataNode extends Node{
/**
* @param data The content of the data node
*/
constructor(data){super();this.data=data}
/**
* Same as {@link data}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/get nodeValue(){return this.data}set nodeValue(data){this.data=data}}
/**
* Text within the document.
*/class Text extends DataNode{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text}get nodeType(){return 3}}
/**
* Comments within the document.
*/class Comment extends DataNode{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment}get nodeType(){return 8}}
/**
* Processing instructions, including doc types.
*/class ProcessingInstruction extends DataNode{constructor(name,data){super(data);this.name=name;this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Directive}get nodeType(){return 1}}
/**
* A `Node` that can have children.
*/class NodeWithChildren extends Node{
/**
* @param children Children of the node. Only certain node types can have children.
*/
constructor(children){super();this.children=children}
// Aliases
/** First child of the node. */
get firstChild(){var _a;return(_a=this.children[0])!==null&&_a!==void 0?_a:null}
/** Last child of the node. */get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}
/**
* Same as {@link children}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/get childNodes(){return this.children}set childNodes(children){this.children=children}}class CDATA extends NodeWithChildren{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.CDATA}get nodeType(){return 4}}
/**
* The root node of the document.
*/class Document extends NodeWithChildren{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Root}get nodeType(){return 9}}
/**
* An element within the DOM.
*/class Element extends NodeWithChildren{
/**
* @param name Name of the tag, eg. `div`, `span`.
* @param attribs Object mapping attribute names to attribute values.
* @param children Children of the node.
*/
constructor(name,attribs,children=[],type=(name==="script"?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Script:name==="style"?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Style:domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Tag)){super(children);this.name=name;this.attribs=attribs;this.type=type}get nodeType(){return 1}
// DOM Level 1 aliases
/**
* Same as {@link name}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
get tagName(){return this.name}set tagName(name){this.name=name}get attributes(){return Object.keys(this.attribs).map((name=>{var _a,_b;return{name,value:this.attribs[name],namespace:(_a=this["x-attribsNamespace"])===null||_a===void 0?void 0:_a[name],prefix:(_b=this["x-attribsPrefix"])===null||_b===void 0?void 0:_b[name]}}))}}
/**
* @param node Node to check.
* @returns `true` if the node is a `Element`, `false` otherwise.
*/function isTag(node){return(0,domelementtype__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)}
/**
* @param node Node to check.
* @returns `true` if the node has the type `CDATA`, `false` otherwise.
*/function isCDATA(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.CDATA}
/**
* @param node Node to check.
* @returns `true` if the node has the type `Text`, `false` otherwise.
*/function isText(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text}
/**
* @param node Node to check.
* @returns `true` if the node has the type `Comment`, `false` otherwise.
*/function isComment(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment}
/**
* @param node Node to check.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
*/function isDirective(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Directive}
/**
* @param node Node to check.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
*/function isDocument(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Root}
/**
* @param node Node to check.
* @returns `true` if the node has children, `false` otherwise.
*/function hasChildren(node){return Object.prototype.hasOwnProperty.call(node,"children")}
/**
* Clone a node, and optionally its children.
*
* @param recursive Clone child nodes as well.
* @returns A clone of the node.
*/function cloneNode(node,recursive=false){let result;if(isText(node))result=new Text(node.data);else if(isComment(node))result=new Comment(node.data);else if(isTag(node)){const children=recursive?cloneChildren(node.children):[];const clone=new Element(node.name,{...node.attribs},children);children.forEach((child=>child.parent=clone));if(node.namespace!=null)clone.namespace=node.namespace;if(node["x-attribsNamespace"])clone["x-attribsNamespace"]={...node["x-attribsNamespace"]};if(node["x-attribsPrefix"])clone["x-attribsPrefix"]={...node["x-attribsPrefix"]};result=clone}else if(isCDATA(node)){const children=recursive?cloneChildren(node.children):[];const clone=new CDATA(children);children.forEach((child=>child.parent=clone));result=clone}else if(isDocument(node)){const children=recursive?cloneChildren(node.children):[];const clone=new Document(children);children.forEach((child=>child.parent=clone));if(node["x-mode"])clone["x-mode"]=node["x-mode"];result=clone}else if(isDirective(node)){const instruction=new ProcessingInstruction(node.name,node.data);if(node["x-name"]!=null){instruction["x-name"]=node["x-name"];instruction["x-publicId"]=node["x-publicId"];instruction["x-systemId"]=node["x-systemId"]}result=instruction}else throw new Error(`Not implemented yet: ${node.type}`);result.startIndex=node.startIndex;result.endIndex=node.endIndex;if(node.sourceCodeLocation!=null)result.sourceCodeLocation=node.sourceCodeLocation;return result}function cloneChildren(childs){const children=childs.map((child=>cloneNode(child,true)));for(let i=1;i<children.length;i++){children[i].prev=children[i-1];children[i-1].next=children[i]}return children}
/***/},
/***/"./node_modules/domutils/lib/esm/feeds.js":
/*!************************************************!*\
!*** ./node_modules/domutils/lib/esm/feeds.js ***!
\************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getFeed:()=>/* binding */getFeed
/* harmony export */});
/* harmony import */var _stringify_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./stringify.js */"./node_modules/domutils/lib/esm/stringify.js");
/* harmony import */var _legacy_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./legacy.js */"./node_modules/domutils/lib/esm/legacy.js");
/**
* Get the feed object from the root of a DOM tree.
*
* @category Feeds
* @param doc - The DOM to to extract the feed from.
* @returns The feed.
*/function getFeed(doc){const feedRoot=getOneElement(isValidFeed,doc);return!feedRoot?null:feedRoot.name==="feed"?getAtomFeed(feedRoot):getRssFeed(feedRoot)}
/**
* Parse an Atom feed.
*
* @param feedRoot The root of the feed.
* @returns The parsed feed.
*/function getAtomFeed(feedRoot){var _a;const childs=feedRoot.children;const feed={type:"atom",items:(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("entry",childs).map((item=>{var _a;const{children}=item;const entry={media:getMediaElements(children)};addConditionally(entry,"id","id",children);addConditionally(entry,"title","title",children);const href=(_a=getOneElement("link",children))===null||_a===void 0?void 0:_a.attribs["href"];if(href)entry.link=href;const description=fetch("summary",children)||fetch("content",children);if(description)entry.description=description;const pubDate=fetch("updated",children);if(pubDate)entry.pubDate=new Date(pubDate);return entry}))};addConditionally(feed,"id","id",childs);addConditionally(feed,"title","title",childs);const href=(_a=getOneElement("link",childs))===null||_a===void 0?void 0:_a.attribs["href"];if(href)feed.link=href;addConditionally(feed,"description","subtitle",childs);const updated=fetch("updated",childs);if(updated)feed.updated=new Date(updated);addConditionally(feed,"author","email",childs,true);return feed}
/**
* Parse a RSS feed.
*
* @param feedRoot The root of the feed.
* @returns The parsed feed.
*/function getRssFeed(feedRoot){var _a,_b;const childs=(_b=(_a=getOneElement("channel",feedRoot.children))===null||_a===void 0?void 0:_a.children)!==null&&_b!==void 0?_b:[];const feed={type:feedRoot.name.substr(0,3),id:"",items:(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("item",feedRoot.children).map((item=>{const{children}=item;const entry={media:getMediaElements(children)};addConditionally(entry,"id","guid",children);addConditionally(entry,"title","title",children);addConditionally(entry,"link","link",children);addConditionally(entry,"description","description",children);const pubDate=fetch("pubDate",children)||fetch("dc:date",children);if(pubDate)entry.pubDate=new Date(pubDate);return entry}))};addConditionally(feed,"title","title",childs);addConditionally(feed,"link","link",childs);addConditionally(feed,"description","description",childs);const updated=fetch("lastBuildDate",childs);if(updated)feed.updated=new Date(updated);addConditionally(feed,"author","managingEditor",childs,true);return feed}const MEDIA_KEYS_STRING=["url","type","lang"];const MEDIA_KEYS_INT=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];
/**
* Get all media elements of a feed item.
*
* @param where Nodes to search in.
* @returns Media elements.
*/function getMediaElements(where){return(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("media:content",where).map((elem=>{const{attribs}=elem;const media={medium:attribs["medium"],isDefault:!!attribs["isDefault"]};for(const attrib of MEDIA_KEYS_STRING)if(attribs[attrib])media[attrib]=attribs[attrib];for(const attrib of MEDIA_KEYS_INT)if(attribs[attrib])media[attrib]=parseInt(attribs[attrib],10);if(attribs["expression"])media.expression=attribs["expression"];return media}))}
/**
* Get one element by tag name.
*
* @param tagName Tag name to look for
* @param node Node to search in
* @returns The element or null
*/function getOneElement(tagName,node){return(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)(tagName,node,true,1)[0]}
/**
* Get the text content of an element with a certain tag name.
*
* @param tagName Tag name to look for.
* @param where Node to search in.
* @param recurse Whether to recurse into child nodes.
* @returns The text content of the element.
*/function fetch(tagName,where,recurse=false){return(0,_stringify_js__WEBPACK_IMPORTED_MODULE_0__.textContent)((0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)(tagName,where,recurse,1)).trim()}
/**
* Adds a property to an object if it has a value.
*
* @param obj Object to be extended
* @param prop Property name
* @param tagName Tag name that contains the conditionally added property
* @param where Element to search for the property
* @param recurse Whether to recurse into child nodes.
*/function addConditionally(obj,prop,tagName,where,recurse=false){const val=fetch(tagName,where,recurse);if(val)obj[prop]=val}
/**
* Checks if an element is a feed root node.
*
* @param value The name of the element to check.
* @returns Whether an element is a feed root node.
*/function isValidFeed(value){return value==="rss"||value==="feed"||value==="rdf:RDF"}
//# sourceMappingURL=feeds.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/helpers.js":
/*!**************************************************!*\
!*** ./node_modules/domutils/lib/esm/helpers.js ***!
\**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DocumentPosition:()=>/* binding */DocumentPosition
/* harmony export */,compareDocumentPosition:()=>/* binding */compareDocumentPosition
/* harmony export */,removeSubsets:()=>/* binding */removeSubsets
/* harmony export */,uniqueSort:()=>/* binding */uniqueSort
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
* Given an array of nodes, remove any member that is contained by another
* member.
*
* @category Helpers
* @param nodes Nodes to filter.
* @returns Remaining nodes that aren't contained by other nodes.
*/function removeSubsets(nodes){let idx=nodes.length;
/*
* Check if each node (or one of its ancestors) is already contained in the
* array.
*/while(--idx>=0){const node=nodes[idx];
/*
* Remove the node if it is not unique.
* We are going through the array from the end, so we only
* have to check nodes that preceed the node under consideration in the array.
*/if(idx>0&&nodes.lastIndexOf(node,idx-1)>=0){nodes.splice(idx,1);continue}for(let ancestor=node.parent;ancestor;ancestor=ancestor.parent)if(nodes.includes(ancestor)){nodes.splice(idx,1);break}}return nodes}
/**
* @category Helpers
* @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}
*/var DocumentPosition;(function(DocumentPosition){DocumentPosition[DocumentPosition["DISCONNECTED"]=1]="DISCONNECTED";DocumentPosition[DocumentPosition["PRECEDING"]=2]="PRECEDING";DocumentPosition[DocumentPosition["FOLLOWING"]=4]="FOLLOWING";DocumentPosition[DocumentPosition["CONTAINS"]=8]="CONTAINS";DocumentPosition[DocumentPosition["CONTAINED_BY"]=16]="CONTAINED_BY"})(DocumentPosition||(DocumentPosition={}));
/**
* Compare the position of one node against another node in any other document,
* returning a bitmask with the values from {@link DocumentPosition}.
*
* Document order:
* > There is an ordering, document order, defined on all the nodes in the
* > document corresponding to the order in which the first character of the
* > XML representation of each node occurs in the XML representation of the
* > document after expansion of general entities. Thus, the document element
* > node will be the first node. Element nodes occur before their children.
* > Thus, document order orders element nodes in order of the occurrence of
* > their start-tag in the XML (after expansion of entities). The attribute
* > nodes of an element occur after the element and before its children. The
* > relative order of attribute nodes is implementation-dependent.
*
* Source:
* http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
*
* @category Helpers
* @param nodeA The first node to use in the comparison
* @param nodeB The second node to use in the comparison
* @returns A bitmask describing the input nodes' relative position.
*
* See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
* a description of these values.
*/function compareDocumentPosition(nodeA,nodeB){const aParents=[];const bParents=[];if(nodeA===nodeB)return 0;let current=(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(nodeA)?nodeA:nodeA.parent;while(current){aParents.unshift(current);current=current.parent}current=(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(nodeB)?nodeB:nodeB.parent;while(current){bParents.unshift(current);current=current.parent}const maxIdx=Math.min(aParents.length,bParents.length);let idx=0;while(idx<maxIdx&&aParents[idx]===bParents[idx])idx++;if(idx===0)return DocumentPosition.DISCONNECTED;const sharedParent=aParents[idx-1];const siblings=sharedParent.children;const aSibling=aParents[idx];const bSibling=bParents[idx];if(siblings.indexOf(aSibling)>siblings.indexOf(bSibling)){if(sharedParent===nodeB)return DocumentPosition.FOLLOWING|DocumentPosition.CONTAINED_BY;return DocumentPosition.FOLLOWING}if(sharedParent===nodeA)return DocumentPosition.PRECEDING|DocumentPosition.CONTAINS;return DocumentPosition.PRECEDING}
/**
* Sort an array of nodes based on their relative position in the document,
* removing any duplicate nodes. If the array contains nodes that do not belong
* to the same document, sort order is unspecified.
*
* @category Helpers
* @param nodes Array of DOM nodes.
* @returns Collection of unique nodes, sorted in document order.
*/function uniqueSort(nodes){nodes=nodes.filter(((node,i,arr)=>!arr.includes(node,i+1)));nodes.sort(((a,b)=>{const relative=compareDocumentPosition(a,b);if(relative&DocumentPosition.PRECEDING)return-1;else if(relative&DocumentPosition.FOLLOWING)return 1;return 0}));return nodes}
//# sourceMappingURL=helpers.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/index.js":
/*!************************************************!*\
!*** ./node_modules/domutils/lib/esm/index.js ***!
\************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DocumentPosition:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.DocumentPosition
/* harmony export */,append:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.append
/* harmony export */,appendChild:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.appendChild
/* harmony export */,compareDocumentPosition:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.compareDocumentPosition
/* harmony export */,existsOne:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.existsOne
/* harmony export */,filter:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.filter
/* harmony export */,find:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.find
/* harmony export */,findAll:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findAll
/* harmony export */,findOne:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findOne
/* harmony export */,findOneChild:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findOneChild
/* harmony export */,getAttributeValue:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getAttributeValue
/* harmony export */,getChildren:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getChildren
/* harmony export */,getElementById:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementById
/* harmony export */,getElements:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElements
/* harmony export */,getElementsByClassName:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByClassName
/* harmony export */,getElementsByTagName:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByTagName
/* harmony export */,getElementsByTagType:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByTagType
/* harmony export */,getFeed:()=>/* reexport safe */_feeds_js__WEBPACK_IMPORTED_MODULE_6__.getFeed
/* harmony export */,getInnerHTML:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getInnerHTML
/* harmony export */,getName:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getName
/* harmony export */,getOuterHTML:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getOuterHTML
/* harmony export */,getParent:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getParent
/* harmony export */,getSiblings:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getSiblings
/* harmony export */,getText:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getText
/* harmony export */,hasAttrib:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.hasAttrib
/* harmony export */,hasChildren:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.hasChildren
/* harmony export */,innerText:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.innerText
/* harmony export */,isCDATA:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isCDATA
/* harmony export */,isComment:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isComment
/* harmony export */,isDocument:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isDocument
/* harmony export */,isTag:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isTag
/* harmony export */,isText:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isText
/* harmony export */,nextElementSibling:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.nextElementSibling
/* harmony export */,prepend:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.prepend
/* harmony export */,prependChild:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.prependChild
/* harmony export */,prevElementSibling:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.prevElementSibling
/* harmony export */,removeElement:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.removeElement
/* harmony export */,removeSubsets:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.removeSubsets
/* harmony export */,replaceElement:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.replaceElement
/* harmony export */,testElement:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.testElement
/* harmony export */,textContent:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.textContent
/* harmony export */,uniqueSort:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.uniqueSort
/* harmony export */});
/* harmony import */var _stringify_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./stringify.js */"./node_modules/domutils/lib/esm/stringify.js");
/* harmony import */var _traversal_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./traversal.js */"./node_modules/domutils/lib/esm/traversal.js");
/* harmony import */var _manipulation_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./manipulation.js */"./node_modules/domutils/lib/esm/manipulation.js");
/* harmony import */var _querying_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./querying.js */"./node_modules/domutils/lib/esm/querying.js");
/* harmony import */var _legacy_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./legacy.js */"./node_modules/domutils/lib/esm/legacy.js");
/* harmony import */var _helpers_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! ./helpers.js */"./node_modules/domutils/lib/esm/helpers.js");
/* harmony import */var _feeds_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(/*! ./feeds.js */"./node_modules/domutils/lib/esm/feeds.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/** @deprecated Use these methods from `domhandler` directly. */
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/legacy.js":
/*!*************************************************!*\
!*** ./node_modules/domutils/lib/esm/legacy.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getElementById:()=>/* binding */getElementById
/* harmony export */,getElements:()=>/* binding */getElements
/* harmony export */,getElementsByClassName:()=>/* binding */getElementsByClassName
/* harmony export */,getElementsByTagName:()=>/* binding */getElementsByTagName
/* harmony export */,getElementsByTagType:()=>/* binding */getElementsByTagType
/* harmony export */,testElement:()=>/* binding */testElement
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _querying_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./querying.js */"./node_modules/domutils/lib/esm/querying.js");
/**
* A map of functions to check nodes against.
*/const Checks={tag_name(name){if(typeof name==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&name(elem.name);else if(name==="*")return domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag;return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.name===name},tag_type(type){if(typeof type==="function")return elem=>type(elem.type);return elem=>elem.type===type},tag_contains(data){if(typeof data==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(elem)&&data(elem.data);return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(elem)&&elem.data===data}};
/**
* Returns a function to check whether a node has an attribute with a particular
* value.
*
* @param attrib Attribute to check.
* @param value Attribute value to look for.
* @returns A function to check whether the a node has an attribute with a
* particular value.
*/function getAttribCheck(attrib,value){if(typeof value==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&value(elem.attribs[attrib]);return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.attribs[attrib]===value}
/**
* Returns a function that returns `true` if either of the input functions
* returns `true` for a node.
*
* @param a First function to combine.
* @param b Second function to combine.
* @returns A function taking a node and returning `true` if either of the input
* functions returns `true` for the node.
*/function combineFuncs(a,b){return elem=>a(elem)||b(elem)}
/**
* Returns a function that executes all checks in `options` and returns `true`
* if any of them match a node.
*
* @param options An object describing nodes to look for.
* @returns A function that executes all checks in `options` and returns `true`
* if any of them match a node.
*/function compileTest(options){const funcs=Object.keys(options).map((key=>{const value=options[key];return Object.prototype.hasOwnProperty.call(Checks,key)?Checks[key](value):getAttribCheck(key,value)}));return funcs.length===0?null:funcs.reduce(combineFuncs)}
/**
* Checks whether a node matches the description in `options`.
*
* @category Legacy Query Functions
* @param options An object describing nodes to look for.
* @param node The element to test.
* @returns Whether the element matches the description in `options`.
*/function testElement(options,node){const test=compileTest(options);return test?test(node):true}
/**
* Returns all nodes that match `options`.
*
* @category Legacy Query Functions
* @param options An object describing nodes to look for.
* @param nodes Nodes to search through.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes that match `options`.
*/function getElements(options,nodes,recurse,limit=1/0){const test=compileTest(options);return test?(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(test,nodes,recurse,limit):[]}
/**
* Returns the node with the supplied ID.
*
* @category Legacy Query Functions
* @param id The unique ID attribute value to look for.
* @param nodes Nodes to search through.
* @param recurse Also consider child nodes.
* @returns The node with the supplied ID.
*/function getElementById(id,nodes,recurse=true){if(!Array.isArray(nodes))nodes=[nodes];return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.findOne)(getAttribCheck("id",id),nodes,recurse)}
/**
* Returns all nodes with the supplied `tagName`.
*
* @category Legacy Query Functions
* @param tagName Tag name to search for.
* @param nodes Nodes to search through.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes with the supplied `tagName`.
*/function getElementsByTagName(tagName,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(Checks["tag_name"](tagName),nodes,recurse,limit)}
/**
* Returns all nodes with the supplied `className`.
*
* @category Legacy Query Functions
* @param className Class name to search for.
* @param nodes Nodes to search through.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes with the supplied `className`.
*/function getElementsByClassName(className,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(getAttribCheck("class",className),nodes,recurse,limit)}
/**
* Returns all nodes with the supplied `type`.
*
* @category Legacy Query Functions
* @param type Element type to look for.
* @param nodes Nodes to search through.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes with the supplied `type`.
*/function getElementsByTagType(type,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(Checks["tag_type"](type),nodes,recurse,limit)}
//# sourceMappingURL=legacy.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/manipulation.js":
/*!*******************************************************!*\
!*** ./node_modules/domutils/lib/esm/manipulation.js ***!
\*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */append:()=>/* binding */append
/* harmony export */,appendChild:()=>/* binding */appendChild
/* harmony export */,prepend:()=>/* binding */prepend
/* harmony export */,prependChild:()=>/* binding */prependChild
/* harmony export */,removeElement:()=>/* binding */removeElement
/* harmony export */,replaceElement:()=>/* binding */replaceElement
/* harmony export */});
/**
* Remove an element from the dom
*
* @category Manipulation
* @param elem The element to be removed
*/function removeElement(elem){if(elem.prev)elem.prev.next=elem.next;if(elem.next)elem.next.prev=elem.prev;if(elem.parent){const childs=elem.parent.children;const childsIndex=childs.lastIndexOf(elem);if(childsIndex>=0)childs.splice(childsIndex,1)}elem.next=null;elem.prev=null;elem.parent=null}
/**
* Replace an element in the dom
*
* @category Manipulation
* @param elem The element to be replaced
* @param replacement The element to be added
*/function replaceElement(elem,replacement){const prev=replacement.prev=elem.prev;if(prev)prev.next=replacement;const next=replacement.next=elem.next;if(next)next.prev=replacement;const parent=replacement.parent=elem.parent;if(parent){const childs=parent.children;childs[childs.lastIndexOf(elem)]=replacement;elem.parent=null}}
/**
* Append a child to an element.
*
* @category Manipulation
* @param parent The element to append to.
* @param child The element to be added as a child.
*/function appendChild(parent,child){removeElement(child);child.next=null;child.parent=parent;if(parent.children.push(child)>1){const sibling=parent.children[parent.children.length-2];sibling.next=child;child.prev=sibling}else child.prev=null}
/**
* Append an element after another.
*
* @category Manipulation
* @param elem The element to append after.
* @param next The element be added.
*/function append(elem,next){removeElement(next);const{parent}=elem;const currNext=elem.next;next.next=currNext;next.prev=elem;elem.next=next;next.parent=parent;if(currNext){currNext.prev=next;if(parent){const childs=parent.children;childs.splice(childs.lastIndexOf(currNext),0,next)}}else if(parent)parent.children.push(next)}
/**
* Prepend a child to an element.
*
* @category Manipulation
* @param parent The element to prepend before.
* @param child The element to be added as a child.
*/function prependChild(parent,child){removeElement(child);child.parent=parent;child.prev=null;if(parent.children.unshift(child)!==1){const sibling=parent.children[1];sibling.prev=child;child.next=sibling}else child.next=null}
/**
* Prepend an element before another.
*
* @category Manipulation
* @param elem The element to prepend before.
* @param prev The element be added.
*/function prepend(elem,prev){removeElement(prev);const{parent}=elem;if(parent){const childs=parent.children;childs.splice(childs.indexOf(elem),0,prev)}if(elem.prev)elem.prev.next=prev;prev.parent=parent;prev.prev=elem.prev;prev.next=elem;elem.prev=prev}
//# sourceMappingURL=manipulation.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/querying.js":
/*!***************************************************!*\
!*** ./node_modules/domutils/lib/esm/querying.js ***!
\***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */existsOne:()=>/* binding */existsOne
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,find:()=>/* binding */find
/* harmony export */,findAll:()=>/* binding */findAll
/* harmony export */,findOne:()=>/* binding */findOne
/* harmony export */,findOneChild:()=>/* binding */findOneChild
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
* Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.
*
* @category Querying
* @param test Function to test nodes on.
* @param node Node to search. Will be included in the result set if it matches.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes passing `test`.
*/function filter(test,node,recurse=true,limit=1/0){return find(test,Array.isArray(node)?node:[node],recurse,limit)}
/**
* Search an array of nodes and their children for nodes passing a test function.
*
* @category Querying
* @param test Function to test nodes on.
* @param nodes Array of nodes to search.
* @param recurse Also consider child nodes.
* @param limit Maximum number of nodes to return.
* @returns All nodes passing `test`.
*/function find(test,nodes,recurse,limit){const result=[];
/** Stack of the arrays we are looking at. */const nodeStack=[Array.isArray(nodes)?nodes:[nodes]];
/** Stack of the indices within the arrays. */const indexStack=[0];for(;;){
// First, check if the current array has any more elements to look at.
if(indexStack[0]>=nodeStack[0].length){
// If we have no more arrays to look at, we are done.
if(indexStack.length===1)return result;
// Otherwise, remove the current array from the stack.
nodeStack.shift();indexStack.shift();
// Loop back to the start to continue with the next array.
continue}const elem=nodeStack[0][indexStack[0]++];if(test(elem)){result.push(elem);if(--limit<=0)return result}if(recurse&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)&&elem.children.length>0){
/*
* Add the children to the stack. We are depth-first, so this is
* the next array we look at.
*/
indexStack.unshift(0);nodeStack.unshift(elem.children)}}}
/**
* Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.
*
* @category Querying
* @param test Function to test nodes on.
* @param nodes Array of nodes to search.
* @returns The first node in the array that passes `test`.
* @deprecated Use `Array.prototype.find` directly.
*/function findOneChild(test,nodes){return nodes.find(test)}
/**
* Finds one element in a tree that passes a test.
*
* @category Querying
* @param test Function to test nodes on.
* @param nodes Node or array of nodes to search.
* @param recurse Also consider child nodes.
* @returns The first node that passes `test`.
*/function findOne(test,nodes,recurse=true){const searchedNodes=Array.isArray(nodes)?nodes:[nodes];for(let i=0;i<searchedNodes.length;i++){const node=searchedNodes[i];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)&&test(node))return node;if(recurse&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&node.children.length>0){const found=findOne(test,node.children,true);if(found)return found}}return null}
/**
* Checks if a tree of nodes contains at least one node passing a test.
*
* @category Querying
* @param test Function to test nodes on.
* @param nodes Array of nodes to search.
* @returns Whether a tree of nodes contains at least one node passing the test.
*/function existsOne(test,nodes){return(Array.isArray(nodes)?nodes:[nodes]).some((node=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)&&test(node)||(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&existsOne(test,node.children)))}
/**
* Search an array of nodes and their children for elements passing a test function.
*
* Same as `find`, but limited to elements and with less options, leading to reduced complexity.
*
* @category Querying
* @param test Function to test nodes on.
* @param nodes Array of nodes to search.
* @returns All nodes passing `test`.
*/function findAll(test,nodes){const result=[];const nodeStack=[Array.isArray(nodes)?nodes:[nodes]];const indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(nodeStack.length===1)return result;
// Otherwise, remove the current array from the stack.
nodeStack.shift();indexStack.shift();
// Loop back to the start to continue with the next array.
continue}const elem=nodeStack[0][indexStack[0]++];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&test(elem))result.push(elem);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)&&elem.children.length>0){indexStack.unshift(0);nodeStack.unshift(elem.children)}}}
//# sourceMappingURL=querying.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/stringify.js":
/*!****************************************************!*\
!*** ./node_modules/domutils/lib/esm/stringify.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getInnerHTML:()=>/* binding */getInnerHTML
/* harmony export */,getOuterHTML:()=>/* binding */getOuterHTML
/* harmony export */,getText:()=>/* binding */getText
/* harmony export */,innerText:()=>/* binding */innerText
/* harmony export */,textContent:()=>/* binding */textContent
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var dom_serializer__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! dom-serializer */"./node_modules/dom-serializer/lib/esm/index.js");
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/**
* @category Stringify
* @deprecated Use the `dom-serializer` module directly.
* @param node Node to get the outer HTML of.
* @param options Options for serialization.
* @returns `node`'s outer HTML.
*/function getOuterHTML(node,options){return(0,dom_serializer__WEBPACK_IMPORTED_MODULE_1__["default"])(node,options)}
/**
* @category Stringify
* @deprecated Use the `dom-serializer` module directly.
* @param node Node to get the inner HTML of.
* @param options Options for serialization.
* @returns `node`'s inner HTML.
*/function getInnerHTML(node,options){return(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)?node.children.map((node=>getOuterHTML(node,options))).join(""):""}
/**
* Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.
*
* @category Stringify
* @deprecated Use `textContent` instead.
* @param node Node to get the inner text of.
* @returns `node`'s inner text.
*/function getText(node){if(Array.isArray(node))return node.map(getText).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node))return node.name==="br"?"\n":getText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isCDATA)(node))return getText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
/**
* Get a node's text content. Ignores comments.
*
* @category Stringify
* @param node Node to get the text content of.
* @returns `node`'s text content.
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}
*/function textContent(node){if(Array.isArray(node))return node.map(textContent).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isComment)(node))return textContent(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
/**
* Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.
*
* @category Stringify
* @param node Node to get the inner text of.
* @returns `node`'s inner text.
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}
*/function innerText(node){if(Array.isArray(node))return node.map(innerText).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&(node.type===domelementtype__WEBPACK_IMPORTED_MODULE_2__.ElementType.Tag||(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isCDATA)(node)))return innerText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
//# sourceMappingURL=stringify.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/traversal.js":
/*!****************************************************!*\
!*** ./node_modules/domutils/lib/esm/traversal.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getAttributeValue:()=>/* binding */getAttributeValue
/* harmony export */,getChildren:()=>/* binding */getChildren
/* harmony export */,getName:()=>/* binding */getName
/* harmony export */,getParent:()=>/* binding */getParent
/* harmony export */,getSiblings:()=>/* binding */getSiblings
/* harmony export */,hasAttrib:()=>/* binding */hasAttrib
/* harmony export */,nextElementSibling:()=>/* binding */nextElementSibling
/* harmony export */,prevElementSibling:()=>/* binding */prevElementSibling
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
* Get a node's children.
*
* @category Traversal
* @param elem Node to get the children of.
* @returns `elem`'s children, or an empty array.
*/function getChildren(elem){return(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)?elem.children:[]}
/**
* Get a node's parent.
*
* @category Traversal
* @param elem Node to get the parent of.
* @returns `elem`'s parent node, or `null` if `elem` is a root node.
*/function getParent(elem){return elem.parent||null}
/**
* Gets an elements siblings, including the element itself.
*
* Attempts to get the children through the element's parent first. If we don't
* have a parent (the element is a root node), we walk the element's `prev` &
* `next` to get all remaining nodes.
*
* @category Traversal
* @param elem Element to get the siblings of.
* @returns `elem`'s siblings, including `elem`.
*/function getSiblings(elem){const parent=getParent(elem);if(parent!=null)return getChildren(parent);const siblings=[elem];let{prev,next}=elem;while(prev!=null){siblings.unshift(prev);({prev}=prev)}while(next!=null){siblings.push(next);({next}=next)}return siblings}
/**
* Gets an attribute from an element.
*
* @category Traversal
* @param elem Element to check.
* @param name Attribute name to retrieve.
* @returns The element's attribute value, or `undefined`.
*/function getAttributeValue(elem,name){var _a;return(_a=elem.attribs)===null||_a===void 0?void 0:_a[name]}
/**
* Checks whether an element has an attribute.
*
* @category Traversal
* @param elem Element to check.
* @param name Attribute name to look for.
* @returns Returns whether `elem` has the attribute `name`.
*/function hasAttrib(elem,name){return elem.attribs!=null&&Object.prototype.hasOwnProperty.call(elem.attribs,name)&&elem.attribs[name]!=null}
/**
* Get the tag name of an element.
*
* @category Traversal
* @param elem The element to get the name for.
* @returns The tag name of `elem`.
*/function getName(elem){return elem.name}
/**
* Returns the next element sibling of a node.
*
* @category Traversal
* @param elem The element to get the next sibling of.
* @returns `elem`'s next sibling that is a tag, or `null` if there is no next
* sibling.
*/function nextElementSibling(elem){let{next}=elem;while(next!==null&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(next))({next}=next);return next}
/**
* Returns the previous element sibling of a node.
*
* @category Traversal
* @param elem The element to get the previous sibling of.
* @returns `elem`'s previous sibling that is a tag, or `null` if there is no
* previous sibling.
*/function prevElementSibling(elem){let{prev}=elem;while(prev!==null&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(prev))({prev}=prev);return prev}
//# sourceMappingURL=traversal.js.map
/***/},
/***/"./node_modules/entities/lib/esm/decode.js":
/*!*************************************************!*\
!*** ./node_modules/entities/lib/esm/decode.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */BinTrieFlags:()=>/* binding */BinTrieFlags
/* harmony export */,DecodingMode:()=>/* binding */DecodingMode
/* harmony export */,EntityDecoder:()=>/* binding */EntityDecoder
/* harmony export */,decodeCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__["default"]
/* harmony export */,decodeHTML:()=>/* binding */decodeHTML
/* harmony export */,decodeHTMLAttribute:()=>/* binding */decodeHTMLAttribute
/* harmony export */,decodeHTMLStrict:()=>/* binding */decodeHTMLStrict
/* harmony export */,decodeXML:()=>/* binding */decodeXML
/* harmony export */,determineBranch:()=>/* binding */determineBranch
/* harmony export */,fromCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint
/* harmony export */,htmlDecodeTree:()=>/* reexport safe */_generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__["default"]
/* harmony export */,replaceCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint
/* harmony export */,xmlDecodeTree:()=>/* reexport safe */_generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__["default"]
/* harmony export */});
/* harmony import */var _generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./generated/decode-data-html.js */"./node_modules/entities/lib/esm/generated/decode-data-html.js");
/* harmony import */var _generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./generated/decode-data-xml.js */"./node_modules/entities/lib/esm/generated/decode-data-xml.js");
/* harmony import */var _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./decode_codepoint.js */"./node_modules/entities/lib/esm/decode_codepoint.js");
// Re-export for use by eg. htmlparser2
var CharCodes;(function(CharCodes){CharCodes[CharCodes["NUM"]=35]="NUM";CharCodes[CharCodes["SEMI"]=59]="SEMI";CharCodes[CharCodes["EQUALS"]=61]="EQUALS";CharCodes[CharCodes["ZERO"]=48]="ZERO";CharCodes[CharCodes["NINE"]=57]="NINE";CharCodes[CharCodes["LOWER_A"]=97]="LOWER_A";CharCodes[CharCodes["LOWER_F"]=102]="LOWER_F";CharCodes[CharCodes["LOWER_X"]=120]="LOWER_X";CharCodes[CharCodes["LOWER_Z"]=122]="LOWER_Z";CharCodes[CharCodes["UPPER_A"]=65]="UPPER_A";CharCodes[CharCodes["UPPER_F"]=70]="UPPER_F";CharCodes[CharCodes["UPPER_Z"]=90]="UPPER_Z"})(CharCodes||(CharCodes={}));
/** Bit that needs to be set to convert an upper case ASCII character to lower case */const TO_LOWER_BIT=32;var BinTrieFlags;(function(BinTrieFlags){BinTrieFlags[BinTrieFlags["VALUE_LENGTH"]=49152]="VALUE_LENGTH";BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"]=16256]="BRANCH_LENGTH";BinTrieFlags[BinTrieFlags["JUMP_TABLE"]=127]="JUMP_TABLE"})(BinTrieFlags||(BinTrieFlags={}));function isNumber(code){return code>=CharCodes.ZERO&&code<=CharCodes.NINE}function isHexadecimalCharacter(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_F||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_F}function isAsciiAlphaNumeric(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_Z||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_Z||isNumber(code)}
/**
* Checks if the given character is a valid end character for an entity in an attribute.
*
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
*/function isEntityInAttributeInvalidEnd(code){return code===CharCodes.EQUALS||isAsciiAlphaNumeric(code)}var EntityDecoderState;(function(EntityDecoderState){EntityDecoderState[EntityDecoderState["EntityStart"]=0]="EntityStart";EntityDecoderState[EntityDecoderState["NumericStart"]=1]="NumericStart";EntityDecoderState[EntityDecoderState["NumericDecimal"]=2]="NumericDecimal";EntityDecoderState[EntityDecoderState["NumericHex"]=3]="NumericHex";EntityDecoderState[EntityDecoderState["NamedEntity"]=4]="NamedEntity"})(EntityDecoderState||(EntityDecoderState={}));var DecodingMode;(function(DecodingMode){
/** Entities in text nodes that can end with any character. */
DecodingMode[DecodingMode["Legacy"]=0]="Legacy";
/** Only allow entities terminated with a semicolon. */DecodingMode[DecodingMode["Strict"]=1]="Strict";
/** Entities in attributes have limitations on ending characters. */DecodingMode[DecodingMode["Attribute"]=2]="Attribute"})(DecodingMode||(DecodingMode={}));
/**
* Token decoder with support of writing partial entities.
*/class EntityDecoder{constructor(
/** The tree used to decode entities. */
decodeTree,
/**
* The function that is called when a codepoint is decoded.
*
* For multi-byte named entities, this will be called multiple times,
* with the second codepoint, and the same `consumed` value.
*
* @param codepoint The decoded codepoint.
* @param consumed The number of bytes consumed by the decoder.
*/
emitCodePoint,
/** An object that is used to produce errors. */
errors){this.decodeTree=decodeTree;this.emitCodePoint=emitCodePoint;this.errors=errors;
/** The current state of the decoder. */this.state=EntityDecoderState.EntityStart;
/** Characters that were consumed while parsing an entity. */this.consumed=1;
/**
* The result of the entity.
*
* Either the result index of a numeric entity, or the codepoint of a
* numeric entity.
*/this.result=0;
/** The current index in the decode tree. */this.treeIndex=0;
/** The number of characters that were consumed in excess. */this.excess=1;
/** The mode in which the decoder is operating. */this.decodeMode=DecodingMode.Strict}
/** Resets the instance to make it reusable. */startEntity(decodeMode){this.decodeMode=decodeMode;this.state=EntityDecoderState.EntityStart;this.result=0;this.treeIndex=0;this.excess=1;this.consumed=1}
/**
* Write an entity to the decoder. This can be called multiple times with partial entities.
* If the entity is incomplete, the decoder will return -1.
*
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
* entity is incomplete, and resume when the next string is written.
*
* @param string The string containing the entity (or a continuation of the entity).
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
*/write(str,offset){switch(this.state){case EntityDecoderState.EntityStart:if(str.charCodeAt(offset)===CharCodes.NUM){this.state=EntityDecoderState.NumericStart;this.consumed+=1;return this.stateNumericStart(str,offset+1)}this.state=EntityDecoderState.NamedEntity;return this.stateNamedEntity(str,offset);case EntityDecoderState.NumericStart:return this.stateNumericStart(str,offset);case EntityDecoderState.NumericDecimal:return this.stateNumericDecimal(str,offset);case EntityDecoderState.NumericHex:return this.stateNumericHex(str,offset);case EntityDecoderState.NamedEntity:return this.stateNamedEntity(str,offset)}}
/**
* Switches between the numeric decimal and hexadecimal states.
*
* Equivalent to the `Numeric character reference state` in the HTML spec.
*
* @param str The string containing the entity (or a continuation of the entity).
* @param offset The current offset.
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
*/stateNumericStart(str,offset){if(offset>=str.length)return-1;if((str.charCodeAt(offset)|TO_LOWER_BIT)===CharCodes.LOWER_X){this.state=EntityDecoderState.NumericHex;this.consumed+=1;return this.stateNumericHex(str,offset+1)}this.state=EntityDecoderState.NumericDecimal;return this.stateNumericDecimal(str,offset)}addToNumericResult(str,start,end,base){if(start!==end){const digitCount=end-start;this.result=this.result*Math.pow(base,digitCount)+parseInt(str.substr(start,digitCount),base);this.consumed+=digitCount}}
/**
* Parses a hexadecimal numeric entity.
*
* Equivalent to the `Hexademical character reference state` in the HTML spec.
*
* @param str The string containing the entity (or a continuation of the entity).
* @param offset The current offset.
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
*/stateNumericHex(str,offset){const startIdx=offset;while(offset<str.length){const char=str.charCodeAt(offset);if(isNumber(char)||isHexadecimalCharacter(char))offset+=1;else{this.addToNumericResult(str,startIdx,offset,16);return this.emitNumericEntity(char,3)}}this.addToNumericResult(str,startIdx,offset,16);return-1}
/**
* Parses a decimal numeric entity.
*
* Equivalent to the `Decimal character reference state` in the HTML spec.
*
* @param str The string containing the entity (or a continuation of the entity).
* @param offset The current offset.
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
*/stateNumericDecimal(str,offset){const startIdx=offset;while(offset<str.length){const char=str.charCodeAt(offset);if(isNumber(char))offset+=1;else{this.addToNumericResult(str,startIdx,offset,10);return this.emitNumericEntity(char,2)}}this.addToNumericResult(str,startIdx,offset,10);return-1}
/**
* Validate and emit a numeric entity.
*
* Implements the logic from the `Hexademical character reference start
* state` and `Numeric character reference end state` in the HTML spec.
*
* @param lastCp The last code point of the entity. Used to see if the
* entity was terminated with a semicolon.
* @param expectedLength The minimum number of characters that should be
* consumed. Used to validate that at least one digit
* was consumed.
* @returns The number of characters that were consumed.
*/emitNumericEntity(lastCp,expectedLength){var _a;
// Ensure we consumed at least one digit.
if(this.consumed<=expectedLength){(_a=this.errors)===null||_a===void 0?void 0:_a.absenceOfDigitsInNumericCharacterReference(this.consumed);return 0}
// Figure out if this is a legit end of the entity
if(lastCp===CharCodes.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode.Strict)return 0;this.emitCodePoint((0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint)(this.result),this.consumed);if(this.errors){if(lastCp!==CharCodes.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}
/**
* Parses a named entity.
*
* Equivalent to the `Named character reference state` in the HTML spec.
*
* @param str The string containing the entity (or a continuation of the entity).
* @param offset The current offset.
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
*/stateNamedEntity(str,offset){const{decodeTree}=this;let current=decodeTree[this.treeIndex];
// The mask is the number of bytes of the value, including the current byte.
let valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;for(;offset<str.length;offset++,this.excess++){const char=str.charCodeAt(offset);this.treeIndex=determineBranch(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char);if(this.treeIndex<0)return this.result===0||
// If we are parsing an attribute
this.decodeMode===DecodingMode.Attribute&&(
// We shouldn't have consumed any characters after the entity,
valueLength===0||
// And there should be no invalid characters.
isEntityInAttributeInvalidEnd(char))?0:this.emitNotTerminatedNamedEntity();current=decodeTree[this.treeIndex];valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;
// If the branch is a value, store it and continue
if(valueLength!==0){
// If the entity is terminated by a semicolon, we are done.
if(char===CharCodes.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
if(this.decodeMode!==DecodingMode.Strict){this.result=this.treeIndex;this.consumed+=this.excess;this.excess=0}}}return-1}
/**
* Emit a named entity that was not terminated with a semicolon.
*
* @returns The number of characters consumed.
*/emitNotTerminatedNamedEntity(){var _a;const{result,decodeTree}=this;const valueLength=(decodeTree[result]&BinTrieFlags.VALUE_LENGTH)>>14;this.emitNamedEntityData(result,valueLength,this.consumed);(_a=this.errors)===null||_a===void 0?void 0:_a.missingSemicolonAfterCharacterReference();return this.consumed}
/**
* Emit a named entity.
*
* @param result The index of the entity in the decode tree.
* @param valueLength The number of bytes in the entity.
* @param consumed The number of characters consumed.
*
* @returns The number of characters consumed.
*/emitNamedEntityData(result,valueLength,consumed){const{decodeTree}=this;this.emitCodePoint(valueLength===1?decodeTree[result]&~BinTrieFlags.VALUE_LENGTH:decodeTree[result+1],consumed);if(valueLength===3)
// For multi-byte values, we need to emit the second byte.
this.emitCodePoint(decodeTree[result+2],consumed);return consumed}
/**
* Signal to the parser that the end of the input was reached.
*
* Remaining data will be emitted and relevant errors will be produced.
*
* @returns The number of characters consumed.
*/end(){var _a;switch(this.state){case EntityDecoderState.NamedEntity:
// Emit a named entity if we have one.
return this.result!==0&&(this.decodeMode!==DecodingMode.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;
// Otherwise, emit a numeric entity if we have one.
case EntityDecoderState.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState.NumericStart:(_a=this.errors)===null||_a===void 0?void 0:_a.absenceOfDigitsInNumericCharacterReference(this.consumed);return 0;case EntityDecoderState.EntityStart:
// Return 0 if we have no entity.
return 0}}}
/**
* Creates a function that decodes entities in a string.
*
* @param decodeTree The decode tree.
* @returns A function that decodes entities in a string.
*/function getDecoder(decodeTree){let ret="";const decoder=new EntityDecoder(decodeTree,(str=>ret+=(0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint)(str)));return function(str,decodeMode){let lastIndex=0;let offset=0;while((offset=str.indexOf("&",offset))>=0){ret+=str.slice(lastIndex,offset);decoder.startEntity(decodeMode);const len=decoder.write(str,
// Skip the "&"
offset+1);if(len<0){lastIndex=offset+decoder.end();break}lastIndex=offset+len;
// If `len` is 0, skip the current `&` and continue.
offset=len===0?lastIndex+1:lastIndex}const result=ret+str.slice(lastIndex);
// Make sure we don't keep a reference to the final string.
ret="";return result}}
/**
* Determines the branch of the current node that is taken given the current
* character. This function is used to traverse the trie.
*
* @param decodeTree The trie.
* @param current The current node.
* @param nodeIdx The index right after the current node and its value.
* @param char The current character.
* @returns The index of the next node, or -1 if no branch is taken.
*/function determineBranch(decodeTree,current,nodeIdx,char){const branchCount=(current&BinTrieFlags.BRANCH_LENGTH)>>7;const jumpOffset=current&BinTrieFlags.JUMP_TABLE;
// Case 1: Single branch encoded in jump offset
if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIdx:-1;
// Case 2: Multiple branches encoded in jump table
if(jumpOffset){const value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIdx+value]-1}
// Case 3: Multiple branches encoded in dictionary
// Binary search for the character.
let lo=nodeIdx;let hi=lo+branchCount-1;while(lo<=hi){const mid=lo+hi>>>1;const midVal=decodeTree[mid];if(midVal<char)lo=mid+1;else if(midVal>char)hi=mid-1;else return decodeTree[mid+branchCount]}return-1}const htmlDecoder=getDecoder(_generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__["default"]);const xmlDecoder=getDecoder(_generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
/**
* Decodes an HTML string.
*
* @param str The string to decode.
* @param mode The decoding mode.
* @returns The decoded string.
*/function decodeHTML(str,mode=DecodingMode.Legacy){return htmlDecoder(str,mode)}
/**
* Decodes an HTML string in an attribute.
*
* @param str The string to decode.
* @returns The decoded string.
*/function decodeHTMLAttribute(str){return htmlDecoder(str,DecodingMode.Attribute)}
/**
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
*
* @param str The string to decode.
* @returns The decoded string.
*/function decodeHTMLStrict(str){return htmlDecoder(str,DecodingMode.Strict)}
/**
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
*
* @param str The string to decode.
* @returns The decoded string.
*/function decodeXML(str){return xmlDecoder(str,DecodingMode.Strict)}
//# sourceMappingURL=decode.js.map
/***/},
/***/"./node_modules/entities/lib/esm/decode_codepoint.js":
/*!***********************************************************!*\
!*** ./node_modules/entities/lib/esm/decode_codepoint.js ***!
\***********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>/* binding */decodeCodePoint
/* harmony export */,fromCodePoint:()=>/* binding */fromCodePoint
/* harmony export */,replaceCodePoint:()=>/* binding */replaceCodePoint
/* harmony export */});
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
var _a;const decodeMap=new Map([[0,65533],
// C1 Unicode control character reference replacements
[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);
/**
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
*/const fromCodePoint=
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
(_a=String.fromCodePoint)!==null&&_a!==void 0?_a:function(codePoint){let output="";if(codePoint>65535){codePoint-=65536;output+=String.fromCharCode(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}output+=String.fromCharCode(codePoint);return output};
/**
* Replace the given code point with a replacement character if it is a
* surrogate or is outside the valid range. Otherwise return the code
* point unchanged.
*/function replaceCodePoint(codePoint){var _a;if(codePoint>=55296&&codePoint<=57343||codePoint>1114111)return 65533;return(_a=decodeMap.get(codePoint))!==null&&_a!==void 0?_a:codePoint}
/**
* Replace the code point if relevant, then convert it to a string.
*
* @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
* @param codePoint The code point to decode.
* @returns The decoded code point.
*/function decodeCodePoint(codePoint){return fromCodePoint(replaceCodePoint(codePoint))}
//# sourceMappingURL=decode_codepoint.js.map
/***/},
/***/"./node_modules/entities/lib/esm/encode.js":
/*!*************************************************!*\
!*** ./node_modules/entities/lib/esm/encode.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */encodeHTML:()=>/* binding */encodeHTML
/* harmony export */,encodeNonAsciiHTML:()=>/* binding */encodeNonAsciiHTML
/* harmony export */});
/* harmony import */var _generated_encode_html_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./generated/encode-html.js */"./node_modules/entities/lib/esm/generated/encode-html.js");
/* harmony import */var _escape_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./escape.js */"./node_modules/entities/lib/esm/escape.js");const htmlReplacer=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
/**
* Encodes all characters in the input using HTML entities. This includes
* characters that are valid ASCII characters in HTML documents, such as `#`.
*
* To get a more compact output, consider using the `encodeNonAsciiHTML`
* function, which will only encode characters that are not valid in HTML
* documents, as well as non-ASCII characters.
*
* If a character has no equivalent entity, a numeric hexadecimal reference
* (eg. `ü`) will be used.
*/function encodeHTML(data){return encodeHTMLTrieRe(htmlReplacer,data)}
/**
* Encodes all non-ASCII characters, as well as characters not valid in HTML
* documents using HTML entities. This function will not encode characters that
* are valid in HTML documents, such as `#`.
*
* If a character has no equivalent entity, a numeric hexadecimal reference
* (eg. `ü`) will be used.
*/function encodeNonAsciiHTML(data){return encodeHTMLTrieRe(_escape_js__WEBPACK_IMPORTED_MODULE_1__.xmlReplacer,data)}function encodeHTMLTrieRe(regExp,str){let ret="";let lastIdx=0;let match;while((match=regExp.exec(str))!==null){const i=match.index;ret+=str.substring(lastIdx,i);const char=str.charCodeAt(i);let next=_generated_encode_html_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(char);if(typeof next==="object"){
// We are in a branch. Try to match the next char.
if(i+1<str.length){const nextChar=str.charCodeAt(i+1);const value=typeof next.n==="number"?next.n===nextChar?next.o:void 0:next.n.get(nextChar);if(value!==void 0){ret+=value;lastIdx=regExp.lastIndex+=1;continue}}next=next.v}
// We might have a tree node without a value; skip and use a numeric entity.
if(next!==void 0){ret+=next;lastIdx=i+1}else{const cp=(0,_escape_js__WEBPACK_IMPORTED_MODULE_1__.getCodePoint)(str,i);ret+=`&#x${cp.toString(16)};`;
// Increase by 1 if we have a surrogate pair
lastIdx=regExp.lastIndex+=Number(cp!==char)}}return ret+str.substr(lastIdx)}
//# sourceMappingURL=encode.js.map
/***/},
/***/"./node_modules/entities/lib/esm/escape.js":
/*!*************************************************!*\
!*** ./node_modules/entities/lib/esm/escape.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */encodeXML:()=>/* binding */encodeXML
/* harmony export */,escape:()=>/* binding */escape
/* harmony export */,escapeAttribute:()=>/* binding */escapeAttribute
/* harmony export */,escapeText:()=>/* binding */escapeText
/* harmony export */,escapeUTF8:()=>/* binding */escapeUTF8
/* harmony export */,getCodePoint:()=>/* binding */getCodePoint
/* harmony export */,xmlReplacer:()=>/* binding */xmlReplacer
/* harmony export */});const xmlReplacer=/["&'<>$\x80-\uFFFF]/g;const xmlCodeMap=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);
// For compatibility with node < 4, we wrap `codePointAt`
const getCodePoint=
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.prototype.codePointAt!=null?(str,index)=>str.codePointAt(index)// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
:(c,index)=>(c.charCodeAt(index)&64512)===55296?(c.charCodeAt(index)-55296)*1024+c.charCodeAt(index+1)-56320+65536:c.charCodeAt(index)
/**
* Encodes all non-ASCII characters, as well as characters not valid in XML
* documents using XML entities.
*
* If a character has no equivalent entity, a
* numeric hexadecimal reference (eg. `ü`) will be used.
*/;function encodeXML(str){let ret="";let lastIdx=0;let match;while((match=xmlReplacer.exec(str))!==null){const i=match.index;const char=str.charCodeAt(i);const next=xmlCodeMap.get(char);if(next!==void 0){ret+=str.substring(lastIdx,i)+next;lastIdx=i+1}else{ret+=`${str.substring(lastIdx,i)}&#x${getCodePoint(str,i).toString(16)};`;
// Increase by 1 if we have a surrogate pair
lastIdx=xmlReplacer.lastIndex+=Number((char&64512)===55296)}}return ret+str.substr(lastIdx)}
/**
* Encodes all non-ASCII characters, as well as characters not valid in XML
* documents using numeric hexadecimal reference (eg. `ü`).
*
* Have a look at `escapeUTF8` if you want a more concise output at the expense
* of reduced transportability.
*
* @param data String to escape.
*/const escape=encodeXML;
/**
* Creates a function that escapes all characters matched by the given regular
* expression using the given map of characters to escape to their entities.
*
* @param regex Regular expression to match characters to escape.
* @param map Map of characters to escape to their entities.
*
* @returns Function that escapes all characters matched by the given regular
* expression using the given map of characters to escape to their entities.
*/function getEscaper(regex,map){return function(data){let match;let lastIdx=0;let result="";while(match=regex.exec(data)){if(lastIdx!==match.index)result+=data.substring(lastIdx,match.index);
// We know that this character will be in the map.
result+=map.get(match[0].charCodeAt(0));
// Every match will be of length 1
lastIdx=match.index+1}return result+data.substring(lastIdx)}}
/**
* Encodes all characters not valid in XML documents using XML entities.
*
* Note that the output will be character-set dependent.
*
* @param data String to escape.
*/const escapeUTF8=getEscaper(/[&<>'"]/g,xmlCodeMap);
/**
* Encodes all characters that have to be escaped in HTML attributes,
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
*
* @param data String to escape.
*/const escapeAttribute=getEscaper(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]]));
/**
* Encodes all characters that have to be escaped in HTML text,
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
*
* @param data String to escape.
*/const escapeText=getEscaper(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));
//# sourceMappingURL=escape.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/decode-data-html.js":
/*!*********************************************************************!*\
!*** ./node_modules/entities/lib/esm/generated/decode-data-html.js ***!
\*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-decode-map.ts
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Uint16Array(
// prettier-ignore
'ᵁ<Õıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegraìȹoɴ\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱còJTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦ëeryThiîtedĀGLଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻Ó䃓Āiyීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬืde耻Õ䃕es;樷ml耻Ö䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtèa;䎖r;愨pf;愤cr;쀀𝒵ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;eᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯᝳ;䎲;愶een;扬r;쀀𝔟gcostuvwឍឝឳេ៕៛ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t»pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ\0\0aĀ;t䀬;䁀ƀ;fl戁îᅠeĀmxent»eóɍǧ\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍ròar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴoôĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»ṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0proør;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼ròòΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonóquigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roøurĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨íistĀ;sடr;쀀𝔫ȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lanôií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lleìl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉uå;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭ååഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñĀ;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;cⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀𝔬ͯ\0\0\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨrò᪀Āirⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀¶;l䂶leìЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴ïrel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⋢⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ìâヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowóarpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓ròaòՑ;怏oustĀ;a㈞掱che»mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì耻䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫwar;椪lig耻ß䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rëƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproøim»ኬsðኞĀas㚺㚮ðrn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xôheadĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roðtré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((c=>c.charCodeAt(0))));
//# sourceMappingURL=decode-data-html.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/decode-data-xml.js":
/*!********************************************************************!*\
!*** ./node_modules/entities/lib/esm/generated/decode-data-xml.js ***!
\********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-decode-map.ts
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Uint16Array(
// prettier-ignore
"Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((c=>c.charCodeAt(0))));
//# sourceMappingURL=decode-data-xml.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/encode-html.js":
/*!****************************************************************!*\
!*** ./node_modules/entities/lib/esm/generated/encode-html.js ***!
\****************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-encode-map.ts
function restoreDiff(arr){for(let i=1;i<arr.length;i++)arr[i][0]+=arr[i-1][0]+1;return arr}
// prettier-ignore
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Map(restoreDiff([[9,"	"],[0,"
"],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[0,"¡"],[0,"¢"],[0,"£"],[0,"¤"],[0,"¥"],[0,"¦"],[0,"§"],[0,"¨"],[0,"©"],[0,"ª"],[0,"«"],[0,"¬"],[0,"­"],[0,"®"],[0,"¯"],[0,"°"],[0,"±"],[0,"²"],[0,"³"],[0,"´"],[0,"µ"],[0,"¶"],[0,"·"],[0,"¸"],[0,"¹"],[0,"º"],[0,"»"],[0,"¼"],[0,"½"],[0,"¾"],[0,"¿"],[0,"À"],[0,"Á"],[0,"Â"],[0,"Ã"],[0,"Ä"],[0,"Å"],[0,"Æ"],[0,"Ç"],[0,"È"],[0,"É"],[0,"Ê"],[0,"Ë"],[0,"Ì"],[0,"Í"],[0,"Î"],[0,"Ï"],[0,"Ð"],[0,"Ñ"],[0,"Ò"],[0,"Ó"],[0,"Ô"],[0,"Õ"],[0,"Ö"],[0,"×"],[0,"Ø"],[0,"Ù"],[0,"Ú"],[0,"Û"],[0,"Ü"],[0,"Ý"],[0,"Þ"],[0,"ß"],[0,"à"],[0,"á"],[0,"â"],[0,"ã"],[0,"ä"],[0,"å"],[0,"æ"],[0,"ç"],[0,"è"],[0,"é"],[0,"ê"],[0,"ë"],[0,"ì"],[0,"í"],[0,"î"],[0,"ï"],[0,"ð"],[0,"ñ"],[0,"ò"],[0,"ó"],[0,"ô"],[0,"õ"],[0,"ö"],[0,"÷"],[0,"ø"],[0,"ù"],[0,"ú"],[0,"û"],[0,"ü"],[0,"ý"],[0,"þ"],[0,"ÿ"],[0,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[0,"ő"],[0,"Œ"],[0,"œ"],[0,"Ŕ"],[0,"ŕ"],[0,"Ŗ"],[0,"ŗ"],[0,"Ř"],[0,"ř"],[0,"Ś"],[0,"ś"],[0,"Ŝ"],[0,"ŝ"],[0,"Ş"],[0,"ş"],[0,"Š"],[0,"š"],[0,"Ţ"],[0,"ţ"],[0,"Ť"],[0,"ť"],[0,"Ŧ"],[0,"ŧ"],[0,"Ũ"],[0,"ũ"],[0,"Ū"],[0,"ū"],[0,"Ŭ"],[0,"ŭ"],[0,"Ů"],[0,"ů"],[0,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[0,"Џ"],[0,"А"],[0,"Б"],[0,"В"],[0,"Г"],[0,"Д"],[0,"Е"],[0,"Ж"],[0,"З"],[0,"И"],[0,"Й"],[0,"К"],[0,"Л"],[0,"М"],[0,"Н"],[0,"О"],[0,"П"],[0,"Р"],[0,"С"],[0,"Т"],[0,"У"],[0,"Ф"],[0,"Х"],[0,"Ц"],[0,"Ч"],[0,"Ш"],[0,"Щ"],[0,"Ъ"],[0,"Ы"],[0,"Ь"],[0,"Э"],[0,"Ю"],[0,"Я"],[0,"а"],[0,"б"],[0,"в"],[0,"г"],[0,"д"],[0,"е"],[0,"ж"],[0,"з"],[0,"и"],[0,"й"],[0,"к"],[0,"л"],[0,"м"],[0,"н"],[0,"о"],[0,"п"],[0,"р"],[0,"с"],[0,"т"],[0,"у"],[0,"ф"],[0,"х"],[0,"ц"],[0,"ч"],[0,"ш"],[0,"щ"],[0,"ъ"],[0,"ы"],[0,"ь"],[0,"э"],[0,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[0,"↻"],[0,"↼"],[0,"↽"],[0,"↾"],[0,"↿"],[0,"⇀"],[0,"⇁"],[0,"⇂"],[0,"⇃"],[0,"⇄"],[0,"⇅"],[0,"⇆"],[0,"⇇"],[0,"⇈"],[0,"⇉"],[0,"⇊"],[0,"⇋"],[0,"⇌"],[0,"⇍"],[0,"⇎"],[0,"⇏"],[0,"⇐"],[0,"⇑"],[0,"⇒"],[0,"⇓"],[0,"⇔"],[0,"⇕"],[0,"⇖"],[0,"⇗"],[0,"⇘"],[0,"⇙"],[0,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(restoreDiff([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(restoreDiff([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[0,"⊾"],[0,"⊿"],[0,"⋀"],[0,"⋁"],[0,"⋂"],[0,"⋃"],[0,"⋄"],[0,"⋅"],[0,"⋆"],[0,"⋇"],[0,"⋈"],[0,"⋉"],[0,"⋊"],[0,"⋋"],[0,"⋌"],[0,"⋍"],[0,"⋎"],[0,"⋏"],[0,"⋐"],[0,"⋑"],[0,"⋒"],[0,"⋓"],[0,"⋔"],[0,"⋕"],[0,"⋖"],[0,"⋗"],[0,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[0,"║"],[0,"╒"],[0,"╓"],[0,"╔"],[0,"╕"],[0,"╖"],[0,"╗"],[0,"╘"],[0,"╙"],[0,"╚"],[0,"╛"],[0,"╜"],[0,"╝"],[0,"╞"],[0,"╟"],[0,"╠"],[0,"╡"],[0,"╢"],[0,"╣"],[0,"╤"],[0,"╥"],[0,"╦"],[0,"╧"],[0,"╨"],[0,"╩"],[0,"╪"],[0,"╫"],[0,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[0,"⥏"],[0,"⥐"],[0,"⥑"],[0,"⥒"],[0,"⥓"],[0,"⥔"],[0,"⥕"],[0,"⥖"],[0,"⥗"],[0,"⥘"],[0,"⥙"],[0,"⥚"],[0,"⥛"],[0,"⥜"],[0,"⥝"],[0,"⥞"],[0,"⥟"],[0,"⥠"],[0,"⥡"],[0,"⥢"],[0,"⥣"],[0,"⥤"],[0,"⥥"],[0,"⥦"],[0,"⥧"],[0,"⥨"],[0,"⥩"],[0,"⥪"],[0,"⥫"],[0,"⥬"],[0,"⥭"],[0,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[0,"⩿"],[0,"⪀"],[0,"⪁"],[0,"⪂"],[0,"⪃"],[0,"⪄"],[0,"⪅"],[0,"⪆"],[0,"⪇"],[0,"⪈"],[0,"⪉"],[0,"⪊"],[0,"⪋"],[0,"⪌"],[0,"⪍"],[0,"⪎"],[0,"⪏"],[0,"⪐"],[0,"⪑"],[0,"⪒"],[0,"⪓"],[0,"⪔"],[0,"⪕"],[0,"⪖"],[0,"⪗"],[0,"⪘"],[0,"⪙"],[0,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(restoreDiff([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[0,"𝔟"],[0,"𝔠"],[0,"𝔡"],[0,"𝔢"],[0,"𝔣"],[0,"𝔤"],[0,"𝔥"],[0,"𝔦"],[0,"𝔧"],[0,"𝔨"],[0,"𝔩"],[0,"𝔪"],[0,"𝔫"],[0,"𝔬"],[0,"𝔭"],[0,"𝔮"],[0,"𝔯"],[0,"𝔰"],[0,"𝔱"],[0,"𝔲"],[0,"𝔳"],[0,"𝔴"],[0,"𝔵"],[0,"𝔶"],[0,"𝔷"],[0,"𝔸"],[0,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[0,"𝕓"],[0,"𝕔"],[0,"𝕕"],[0,"𝕖"],[0,"𝕗"],[0,"𝕘"],[0,"𝕙"],[0,"𝕚"],[0,"𝕛"],[0,"𝕜"],[0,"𝕝"],[0,"𝕞"],[0,"𝕟"],[0,"𝕠"],[0,"𝕡"],[0,"𝕢"],[0,"𝕣"],[0,"𝕤"],[0,"𝕥"],[0,"𝕦"],[0,"𝕧"],[0,"𝕨"],[0,"𝕩"],[0,"𝕪"],[0,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]]));
//# sourceMappingURL=encode-html.js.map
/***/},
/***/"./node_modules/entities/lib/esm/index.js":
/*!************************************************!*\
!*** ./node_modules/entities/lib/esm/index.js ***!
\************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DecodingMode:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode
/* harmony export */,EncodingMode:()=>/* binding */EncodingMode
/* harmony export */,EntityDecoder:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.EntityDecoder
/* harmony export */,EntityLevel:()=>/* binding */EntityLevel
/* harmony export */,decode:()=>/* binding */decode
/* harmony export */,decodeHTML:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML4:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML4Strict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeHTML5:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML5Strict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeHTMLAttribute:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLAttribute
/* harmony export */,decodeHTMLStrict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeStrict:()=>/* binding */decodeStrict
/* harmony export */,decodeXML:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML
/* harmony export */,decodeXMLStrict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML
/* harmony export */,encode:()=>/* binding */encode
/* harmony export */,encodeHTML:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeHTML4:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeHTML5:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeNonAsciiHTML:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeNonAsciiHTML
/* harmony export */,encodeXML:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.encodeXML
/* harmony export */,escape:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escape
/* harmony export */,escapeAttribute:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeAttribute
/* harmony export */,escapeText:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeText
/* harmony export */,escapeUTF8:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeUTF8
/* harmony export */});
/* harmony import */var _decode_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./decode.js */"./node_modules/entities/lib/esm/decode.js");
/* harmony import */var _encode_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./encode.js */"./node_modules/entities/lib/esm/encode.js");
/* harmony import */var _escape_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./escape.js */"./node_modules/entities/lib/esm/escape.js");
/** The level of entities to support. */var EntityLevel;(function(EntityLevel){
/** Support only XML entities. */
EntityLevel[EntityLevel["XML"]=0]="XML";
/** Support HTML entities, which are a superset of XML entities. */EntityLevel[EntityLevel["HTML"]=1]="HTML"})(EntityLevel||(EntityLevel={}));var EncodingMode;(function(EncodingMode){
/**
* The output is UTF-8 encoded. Only characters that need escaping within
* XML will be escaped.
*/
EncodingMode[EncodingMode["UTF8"]=0]="UTF8";
/**
* The output consists only of ASCII characters. Characters that need
* escaping within HTML, and characters that aren't ASCII characters will
* be escaped.
*/EncodingMode[EncodingMode["ASCII"]=1]="ASCII";
/**
* Encode all characters that have an equivalent entity, as well as all
* characters that are not ASCII characters.
*/EncodingMode[EncodingMode["Extensive"]=2]="Extensive";
/**
* Encode all characters that have to be escaped in HTML attributes,
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
*/EncodingMode[EncodingMode["Attribute"]=3]="Attribute";
/**
* Encode all characters that have to be escaped in HTML text,
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
*/EncodingMode[EncodingMode["Text"]=4]="Text"})(EncodingMode||(EncodingMode={}));
/**
* Decodes a string with entities.
*
* @param data String to decode.
* @param options Decoding options.
*/function decode(data,options=EntityLevel.XML){const level=typeof options==="number"?options:options.level;if(level===EntityLevel.HTML){const mode=typeof options==="object"?options.mode:void 0;return(0,_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML)(data,mode)}return(0,_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML)(data)}
/**
* Decodes a string with entities. Does not allow missing trailing semicolons for entities.
*
* @param data String to decode.
* @param options Decoding options.
* @deprecated Use `decode` with the `mode` set to `Strict`.
*/function decodeStrict(data,options=EntityLevel.XML){var _a;const opts=typeof options==="number"?{level:options}:options;(_a=opts.mode)!==null&&_a!==void 0?_a:opts.mode=_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Strict;return decode(data,opts)}
/**
* Encodes a string with entities.
*
* @param data String to encode.
* @param options Encoding options.
*/function encode(data,options=EntityLevel.XML){const opts=typeof options==="number"?{level:options}:options;
// Mode `UTF8` just escapes XML entities
if(opts.mode===EncodingMode.UTF8)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeUTF8)(data);if(opts.mode===EncodingMode.Attribute)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeAttribute)(data);if(opts.mode===EncodingMode.Text)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeText)(data);if(opts.level===EntityLevel.HTML){if(opts.mode===EncodingMode.ASCII)return(0,_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeNonAsciiHTML)(data);return(0,_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML)(data)}
// ASCII and Extensive are equivalent
return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.encodeXML)(data)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/Parser.js":
/*!****************************************************!*\
!*** ./node_modules/htmlparser2/lib/esm/Parser.js ***!
\****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */Parser:()=>/* binding */Parser
/* harmony export */});
/* harmony import */var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./Tokenizer.js */"./node_modules/htmlparser2/lib/esm/Tokenizer.js");
/* harmony import */var entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! entities/lib/decode.js */"./node_modules/entities/lib/esm/decode.js");const formTags=new Set(["input","option","optgroup","select","button","datalist","textarea"]);const pTag=new Set(["p"]);const tableSectionTags=new Set(["thead","tbody"]);const ddtTags=new Set(["dd","dt"]);const rtpTags=new Set(["rt","rp"]);const openImpliesClose=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",pTag],["h1",pTag],["h2",pTag],["h3",pTag],["h4",pTag],["h5",pTag],["h6",pTag],["select",formTags],["input",formTags],["output",formTags],["button",formTags],["datalist",formTags],["textarea",formTags],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",ddtTags],["dt",ddtTags],["address",pTag],["article",pTag],["aside",pTag],["blockquote",pTag],["details",pTag],["div",pTag],["dl",pTag],["fieldset",pTag],["figcaption",pTag],["figure",pTag],["footer",pTag],["form",pTag],["header",pTag],["hr",pTag],["main",pTag],["nav",pTag],["ol",pTag],["pre",pTag],["section",pTag],["table",pTag],["ul",pTag],["rt",rtpTags],["rp",rtpTags],["tbody",tableSectionTags],["tfoot",tableSectionTags]]);const voidElements=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);const foreignContextElements=new Set(["math","svg"]);const htmlIntegrationElements=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]);const reNameEnd=/\s|\//;class Parser{constructor(cbs,options={}){var _a,_b,_c,_d,_e,_f;this.options=options;
/** The start index of the last event. */this.startIndex=0;
/** The end index of the last event. */this.endIndex=0;
/**
* Store the start index of the current open tag,
* so we can update the start index for attributes.
*/this.openTagStart=0;this.tagname="";this.attribname="";this.attribvalue="";this.attribs=null;this.stack=[];this.buffers=[];this.bufferOffset=0;
/** The index of the last written buffer. Used when resuming after a `pause()`. */this.writeIndex=0;
/** Indicates whether the parser has finished running / `.end` has been called. */this.ended=false;this.cbs=cbs!==null&&cbs!==void 0?cbs:{};this.htmlMode=!this.options.xmlMode;this.lowerCaseTagNames=(_a=options.lowerCaseTags)!==null&&_a!==void 0?_a:this.htmlMode;this.lowerCaseAttributeNames=(_b=options.lowerCaseAttributeNames)!==null&&_b!==void 0?_b:this.htmlMode;this.recognizeSelfClosing=(_c=options.recognizeSelfClosing)!==null&&_c!==void 0?_c:!this.htmlMode;this.tokenizer=new((_d=options.Tokenizer)!==null&&_d!==void 0?_d:_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options,this);this.foreignContext=[!this.htmlMode];(_f=(_e=this.cbs).onparserinit)===null||_f===void 0?void 0:_f.call(_e,this)}
// Tokenizer event handlers
/** @internal */
ontext(start,endIndex){var _a,_b;const data=this.getSlice(start,endIndex);this.endIndex=endIndex-1;(_b=(_a=this.cbs).ontext)===null||_b===void 0?void 0:_b.call(_a,data);this.startIndex=endIndex}
/** @internal */ontextentity(cp,endIndex){var _a,_b;this.endIndex=endIndex-1;(_b=(_a=this.cbs).ontext)===null||_b===void 0?void 0:_b.call(_a,(0,entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__.fromCodePoint)(cp));this.startIndex=endIndex}
/**
* Checks if the current tag is a void element. Override this if you want
* to specify your own additional void elements.
*/isVoidElement(name){return this.htmlMode&&voidElements.has(name)}
/** @internal */onopentagname(start,endIndex){this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames)name=name.toLowerCase();this.emitOpenTag(name)}emitOpenTag(name){var _a,_b,_c,_d;this.openTagStart=this.startIndex;this.tagname=name;const impliesClose=this.htmlMode&&openImpliesClose.get(name);if(impliesClose)while(this.stack.length>0&&impliesClose.has(this.stack[0])){const element=this.stack.shift();(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,element,true)}if(!this.isVoidElement(name)){this.stack.unshift(name);if(this.htmlMode)if(foreignContextElements.has(name))this.foreignContext.unshift(true);else if(htmlIntegrationElements.has(name))this.foreignContext.unshift(false)}(_d=(_c=this.cbs).onopentagname)===null||_d===void 0?void 0:_d.call(_c,name);if(this.cbs.onopentag)this.attribs={}}endOpenTag(isImplied){var _a,_b;this.startIndex=this.openTagStart;if(this.attribs){(_b=(_a=this.cbs).onopentag)===null||_b===void 0?void 0:_b.call(_a,this.tagname,this.attribs,isImplied);this.attribs=null}if(this.cbs.onclosetag&&this.isVoidElement(this.tagname))this.cbs.onclosetag(this.tagname,true);this.tagname=""}
/** @internal */onopentagend(endIndex){this.endIndex=endIndex;this.endOpenTag(false);
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onclosetag(start,endIndex){var _a,_b,_c,_d,_e,_f,_g,_h;this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames)name=name.toLowerCase();if(this.htmlMode&&(foreignContextElements.has(name)||htmlIntegrationElements.has(name)))this.foreignContext.shift();if(!this.isVoidElement(name)){const pos=this.stack.indexOf(name);if(pos!==-1)for(let index=0;index<=pos;index++){const element=this.stack.shift();
// We know the stack has sufficient elements.
(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,element,index!==pos)}else if(this.htmlMode&&name==="p"){
// Implicit open before close
this.emitOpenTag("p");this.closeCurrentTag(true)}}else if(this.htmlMode&&name==="br"){
// We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
(_d=(_c=this.cbs).onopentagname)===null||_d===void 0?void 0:_d.call(_c,"br");(_f=(_e=this.cbs).onopentag)===null||_f===void 0?void 0:_f.call(_e,"br",{},true);(_h=(_g=this.cbs).onclosetag)===null||_h===void 0?void 0:_h.call(_g,"br",false)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onselfclosingtag(endIndex){this.endIndex=endIndex;if(this.recognizeSelfClosing||this.foreignContext[0]){this.closeCurrentTag(false);
// Set `startIndex` for next node
this.startIndex=endIndex+1}else
// Ignore the fact that the tag is self-closing.
this.onopentagend(endIndex)}closeCurrentTag(isOpenImplied){var _a,_b;const name=this.tagname;this.endOpenTag(isOpenImplied);
// Self-closing tags will be on the top of the stack
if(this.stack[0]===name){
// If the opening tag isn't implied, the closing tag has to be implied.
(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,name,!isOpenImplied);this.stack.shift()}}
/** @internal */onattribname(start,endIndex){this.startIndex=start;const name=this.getSlice(start,endIndex);this.attribname=this.lowerCaseAttributeNames?name.toLowerCase():name}
/** @internal */onattribdata(start,endIndex){this.attribvalue+=this.getSlice(start,endIndex)}
/** @internal */onattribentity(cp){this.attribvalue+=(0,entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__.fromCodePoint)(cp)}
/** @internal */onattribend(quote,endIndex){var _a,_b;this.endIndex=endIndex;(_b=(_a=this.cbs).onattribute)===null||_b===void 0?void 0:_b.call(_a,this.attribname,this.attribvalue,quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.Double?'"':quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.Single?"'":quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.NoValue?void 0:null);if(this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname))this.attribs[this.attribname]=this.attribvalue;this.attribvalue=""}getInstructionName(value){const index=value.search(reNameEnd);let name=index<0?value:value.substr(0,index);if(this.lowerCaseTagNames)name=name.toLowerCase();return name}
/** @internal */ondeclaration(start,endIndex){this.endIndex=endIndex;const value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){const name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`!${name}`,`!${value}`)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onprocessinginstruction(start,endIndex){this.endIndex=endIndex;const value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){const name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`?${name}`,`?${value}`)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */oncomment(start,endIndex,offset){var _a,_b,_c,_d;this.endIndex=endIndex;(_b=(_a=this.cbs).oncomment)===null||_b===void 0?void 0:_b.call(_a,this.getSlice(start,endIndex-offset));(_d=(_c=this.cbs).oncommentend)===null||_d===void 0?void 0:_d.call(_c);
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */oncdata(start,endIndex,offset){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k;this.endIndex=endIndex;const value=this.getSlice(start,endIndex-offset);if(!this.htmlMode||this.options.recognizeCDATA){(_b=(_a=this.cbs).oncdatastart)===null||_b===void 0?void 0:_b.call(_a);(_d=(_c=this.cbs).ontext)===null||_d===void 0?void 0:_d.call(_c,value);(_f=(_e=this.cbs).oncdataend)===null||_f===void 0?void 0:_f.call(_e)}else{(_h=(_g=this.cbs).oncomment)===null||_h===void 0?void 0:_h.call(_g,`[CDATA[${value}]]`);(_k=(_j=this.cbs).oncommentend)===null||_k===void 0?void 0:_k.call(_j)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onend(){var _a,_b;if(this.cbs.onclosetag){
// Set the end index for all remaining tags
this.endIndex=this.startIndex;for(let index=0;index<this.stack.length;index++)this.cbs.onclosetag(this.stack[index],true)}(_b=(_a=this.cbs).onend)===null||_b===void 0?void 0:_b.call(_a)}
/**
* Resets the parser to a blank state, ready to parse a new HTML document
*/reset(){var _a,_b,_c,_d;(_b=(_a=this.cbs).onreset)===null||_b===void 0?void 0:_b.call(_a);this.tokenizer.reset();this.tagname="";this.attribname="";this.attribs=null;this.stack.length=0;this.startIndex=0;this.endIndex=0;(_d=(_c=this.cbs).onparserinit)===null||_d===void 0?void 0:_d.call(_c,this);this.buffers.length=0;this.foreignContext.length=0;this.foreignContext.unshift(!this.htmlMode);this.bufferOffset=0;this.writeIndex=0;this.ended=false}
/**
* Resets the parser, then parses a complete document and
* pushes it to the handler.
*
* @param data Document to parse.
*/parseComplete(data){this.reset();this.end(data)}getSlice(start,end){while(start-this.bufferOffset>=this.buffers[0].length)this.shiftBuffer();let slice=this.buffers[0].slice(start-this.bufferOffset,end-this.bufferOffset);while(end-this.bufferOffset>this.buffers[0].length){this.shiftBuffer();slice+=this.buffers[0].slice(0,end-this.bufferOffset)}return slice}shiftBuffer(){this.bufferOffset+=this.buffers[0].length;this.writeIndex--;this.buffers.shift()}
/**
* Parses a chunk of data and calls the corresponding callbacks.
*
* @param chunk Chunk to parse.
*/write(chunk){var _a,_b;if(this.ended){(_b=(_a=this.cbs).onerror)===null||_b===void 0?void 0:_b.call(_a,new Error(".write() after done!"));return}this.buffers.push(chunk);if(this.tokenizer.running){this.tokenizer.write(chunk);this.writeIndex++}}
/**
* Parses the end of the buffer and clears the stack, calls onend.
*
* @param chunk Optional final chunk to parse.
*/end(chunk){var _a,_b;if(this.ended){(_b=(_a=this.cbs).onerror)===null||_b===void 0?void 0:_b.call(_a,new Error(".end() after done!"));return}if(chunk)this.write(chunk);this.ended=true;this.tokenizer.end()}
/**
* Pauses parsing. The parser won't emit events until `resume` is called.
*/pause(){this.tokenizer.pause()}
/**
* Resumes parsing after `pause` was called.
*/resume(){this.tokenizer.resume();while(this.tokenizer.running&&this.writeIndex<this.buffers.length)this.tokenizer.write(this.buffers[this.writeIndex++]);if(this.ended)this.tokenizer.end()}
/**
* Alias of `write`, for backwards compatibility.
*
* @param chunk Chunk to parse.
* @deprecated
*/parseChunk(chunk){this.write(chunk)}
/**
* Alias of `end`, for backwards compatibility.
*
* @param chunk Optional final chunk to parse.
* @deprecated
*/done(chunk){this.end(chunk)}}
//# sourceMappingURL=Parser.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/Tokenizer.js":
/*!*******************************************************!*\
!*** ./node_modules/htmlparser2/lib/esm/Tokenizer.js ***!
\*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */QuoteType:()=>/* binding */QuoteType
/* harmony export */,default:()=>/* binding */Tokenizer
/* harmony export */});
/* harmony import */var entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! entities/lib/decode.js */"./node_modules/entities/lib/esm/decode.js");var CharCodes;(function(CharCodes){CharCodes[CharCodes["Tab"]=9]="Tab";CharCodes[CharCodes["NewLine"]=10]="NewLine";CharCodes[CharCodes["FormFeed"]=12]="FormFeed";CharCodes[CharCodes["CarriageReturn"]=13]="CarriageReturn";CharCodes[CharCodes["Space"]=32]="Space";CharCodes[CharCodes["ExclamationMark"]=33]="ExclamationMark";CharCodes[CharCodes["Number"]=35]="Number";CharCodes[CharCodes["Amp"]=38]="Amp";CharCodes[CharCodes["SingleQuote"]=39]="SingleQuote";CharCodes[CharCodes["DoubleQuote"]=34]="DoubleQuote";CharCodes[CharCodes["Dash"]=45]="Dash";CharCodes[CharCodes["Slash"]=47]="Slash";CharCodes[CharCodes["Zero"]=48]="Zero";CharCodes[CharCodes["Nine"]=57]="Nine";CharCodes[CharCodes["Semi"]=59]="Semi";CharCodes[CharCodes["Lt"]=60]="Lt";CharCodes[CharCodes["Eq"]=61]="Eq";CharCodes[CharCodes["Gt"]=62]="Gt";CharCodes[CharCodes["Questionmark"]=63]="Questionmark";CharCodes[CharCodes["UpperA"]=65]="UpperA";CharCodes[CharCodes["LowerA"]=97]="LowerA";CharCodes[CharCodes["UpperF"]=70]="UpperF";CharCodes[CharCodes["LowerF"]=102]="LowerF";CharCodes[CharCodes["UpperZ"]=90]="UpperZ";CharCodes[CharCodes["LowerZ"]=122]="LowerZ";CharCodes[CharCodes["LowerX"]=120]="LowerX";CharCodes[CharCodes["OpeningSquareBracket"]=91]="OpeningSquareBracket"})(CharCodes||(CharCodes={}));
/** All the states the tokenizer can be in. */var State;(function(State){State[State["Text"]=1]="Text";State[State["BeforeTagName"]=2]="BeforeTagName";State[State["InTagName"]=3]="InTagName";State[State["InSelfClosingTag"]=4]="InSelfClosingTag";State[State["BeforeClosingTagName"]=5]="BeforeClosingTagName";State[State["InClosingTagName"]=6]="InClosingTagName";State[State["AfterClosingTagName"]=7]="AfterClosingTagName";
// Attributes
State[State["BeforeAttributeName"]=8]="BeforeAttributeName";State[State["InAttributeName"]=9]="InAttributeName";State[State["AfterAttributeName"]=10]="AfterAttributeName";State[State["BeforeAttributeValue"]=11]="BeforeAttributeValue";State[State["InAttributeValueDq"]=12]="InAttributeValueDq";State[State["InAttributeValueSq"]=13]="InAttributeValueSq";State[State["InAttributeValueNq"]=14]="InAttributeValueNq";
// Declarations
State[State["BeforeDeclaration"]=15]="BeforeDeclaration";State[State["InDeclaration"]=16]="InDeclaration";
// Processing instructions
State[State["InProcessingInstruction"]=17]="InProcessingInstruction";
// Comments & CDATA
State[State["BeforeComment"]=18]="BeforeComment";State[State["CDATASequence"]=19]="CDATASequence";State[State["InSpecialComment"]=20]="InSpecialComment";State[State["InCommentLike"]=21]="InCommentLike";
// Special tags
State[State["BeforeSpecialS"]=22]="BeforeSpecialS";State[State["BeforeSpecialT"]=23]="BeforeSpecialT";State[State["SpecialStartSequence"]=24]="SpecialStartSequence";State[State["InSpecialTag"]=25]="InSpecialTag";State[State["InEntity"]=26]="InEntity"})(State||(State={}));function isWhitespace(c){return c===CharCodes.Space||c===CharCodes.NewLine||c===CharCodes.Tab||c===CharCodes.FormFeed||c===CharCodes.CarriageReturn}function isEndOfTagSection(c){return c===CharCodes.Slash||c===CharCodes.Gt||isWhitespace(c)}function isASCIIAlpha(c){return c>=CharCodes.LowerA&&c<=CharCodes.LowerZ||c>=CharCodes.UpperA&&c<=CharCodes.UpperZ}var QuoteType;(function(QuoteType){QuoteType[QuoteType["NoValue"]=0]="NoValue";QuoteType[QuoteType["Unquoted"]=1]="Unquoted";QuoteType[QuoteType["Single"]=2]="Single";QuoteType[QuoteType["Double"]=3]="Double"})(QuoteType||(QuoteType={}));
/**
* Sequences used to match longer strings.
*
* We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
* sequences with an increased offset.
*/const Sequences={Cdata:new Uint8Array([67,68,65,84,65,91]),// CDATA[
CdataEnd:new Uint8Array([93,93,62]),// ]]>
CommentEnd:new Uint8Array([45,45,62]),// `-->`
ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),// `<\/script`
StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),// `</style`
TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),// `</title`
TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class Tokenizer{constructor({xmlMode=false,decodeEntities=true},cbs){this.cbs=cbs;
/** The current state the tokenizer is in. */this.state=State.Text;
/** The read buffer. */this.buffer="";
/** The beginning of the section that is currently being read. */this.sectionStart=0;
/** The index within the buffer that we are currently looking at. */this.index=0;
/** The start of the last entity. */this.entityStart=0;
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */this.baseState=State.Text;
/** For special parsing behavior inside of script and style tags. */this.isSpecial=false;
/** Indicates whether the tokenizer has been paused. */this.running=true;
/** The offset of the current buffer. */this.offset=0;this.currentSequence=void 0;this.sequenceIndex=0;this.xmlMode=xmlMode;this.decodeEntities=decodeEntities;this.entityDecoder=new entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.EntityDecoder(xmlMode?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.xmlDecodeTree:entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.htmlDecodeTree,((cp,consumed)=>this.emitCodePoint(cp,consumed)))}reset(){this.state=State.Text;this.buffer="";this.sectionStart=0;this.index=0;this.baseState=State.Text;this.currentSequence=void 0;this.running=true;this.offset=0}write(chunk){this.offset+=this.buffer.length;this.buffer=chunk;this.parse()}end(){if(this.running)this.finish()}pause(){this.running=false}resume(){this.running=true;if(this.index<this.buffer.length+this.offset)this.parse()}stateText(c){if(c===CharCodes.Lt||!this.decodeEntities&&this.fastForwardTo(CharCodes.Lt)){if(this.index>this.sectionStart)this.cbs.ontext(this.sectionStart,this.index);this.state=State.BeforeTagName;this.sectionStart=this.index}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateSpecialStartSequence(c){const isEnd=this.sequenceIndex===this.currentSequence.length;const isMatch=isEnd?// If we are at the end of the sequence, make sure the tag name has ended
isEndOfTagSection(c):// Otherwise, do a case-insensitive comparison
(c|32)===this.currentSequence[this.sequenceIndex];if(!isMatch)this.isSpecial=false;else if(!isEnd){this.sequenceIndex++;return}this.sequenceIndex=0;this.state=State.InTagName;this.stateInTagName(c)}
/** Look for an end tag. For <title> tags, also decode entities. */stateInSpecialTag(c){if(this.sequenceIndex===this.currentSequence.length){if(c===CharCodes.Gt||isWhitespace(c)){const endOfText=this.index-this.currentSequence.length;if(this.sectionStart<endOfText){
// Spoof the index so that reported locations match up.
const actualIndex=this.index;this.index=endOfText;this.cbs.ontext(this.sectionStart,endOfText);this.index=actualIndex}this.isSpecial=false;this.sectionStart=endOfText+2;// Skip over the `</`
this.stateInClosingTagName(c);return;// We are done; skip the rest of the function.
}this.sequenceIndex=0}if((c|32)===this.currentSequence[this.sequenceIndex])this.sequenceIndex+=1;else if(this.sequenceIndex===0){if(this.currentSequence===Sequences.TitleEnd){
// We have to parse entities in <title> tags.
if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}else if(this.fastForwardTo(CharCodes.Lt))
// Outside of <title> tags, we can fast-forward.
this.sequenceIndex=1}else
// If we see a `<`, set the sequence index to 1; useful for eg. `<<\/script>`.
this.sequenceIndex=Number(c===CharCodes.Lt)}stateCDATASequence(c){if(c===Sequences.Cdata[this.sequenceIndex]){if(++this.sequenceIndex===Sequences.Cdata.length){this.state=State.InCommentLike;this.currentSequence=Sequences.CdataEnd;this.sequenceIndex=0;this.sectionStart=this.index+1}}else{this.sequenceIndex=0;this.state=State.InDeclaration;this.stateInDeclaration(c);// Reconsume the character
}}
/**
* When we wait for one specific character, we can speed things up
* by skipping through the buffer until we find it.
*
* @returns Whether the character was found.
*/fastForwardTo(c){while(++this.index<this.buffer.length+this.offset)if(this.buffer.charCodeAt(this.index-this.offset)===c)return true;
/*
* We increment the index at the end of the `parse` loop,
* so set it to `buffer.length - 1` here.
*
* TODO: Refactor `parse` to increment index before calling states.
*/this.index=this.buffer.length+this.offset-1;return false}
/**
* Comments and CDATA end with `-->` and `]]>`.
*
* Their common qualities are:
* - Their end sequences have a distinct character they start with.
* - That character is then repeated, so we have to check multiple repeats.
* - All characters but the start character of the sequence can be skipped.
*/stateInCommentLike(c){if(c===this.currentSequence[this.sequenceIndex]){if(++this.sequenceIndex===this.currentSequence.length){if(this.currentSequence===Sequences.CdataEnd)this.cbs.oncdata(this.sectionStart,this.index,2);else this.cbs.oncomment(this.sectionStart,this.index,2);this.sequenceIndex=0;this.sectionStart=this.index+1;this.state=State.Text}}else if(this.sequenceIndex===0){
// Fast-forward to the first character of the sequence
if(this.fastForwardTo(this.currentSequence[0]))this.sequenceIndex=1}else if(c!==this.currentSequence[this.sequenceIndex-1])
// Allow long sequences, eg. --->, ]]]>
this.sequenceIndex=0}
/**
* HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
*
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
* We allow anything that wouldn't end the tag.
*/isTagStartChar(c){return this.xmlMode?!isEndOfTagSection(c):isASCIIAlpha(c)}startSpecial(sequence,offset){this.isSpecial=true;this.currentSequence=sequence;this.sequenceIndex=offset;this.state=State.SpecialStartSequence}stateBeforeTagName(c){if(c===CharCodes.ExclamationMark){this.state=State.BeforeDeclaration;this.sectionStart=this.index+1}else if(c===CharCodes.Questionmark){this.state=State.InProcessingInstruction;this.sectionStart=this.index+1}else if(this.isTagStartChar(c)){const lower=c|32;this.sectionStart=this.index;if(this.xmlMode)this.state=State.InTagName;else if(lower===Sequences.ScriptEnd[2])this.state=State.BeforeSpecialS;else if(lower===Sequences.TitleEnd[2])this.state=State.BeforeSpecialT;else this.state=State.InTagName}else if(c===CharCodes.Slash)this.state=State.BeforeClosingTagName;else{this.state=State.Text;this.stateText(c)}}stateInTagName(c){if(isEndOfTagSection(c)){this.cbs.onopentagname(this.sectionStart,this.index);this.sectionStart=-1;this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}}stateBeforeClosingTagName(c){if(isWhitespace(c));else if(c===CharCodes.Gt)this.state=State.Text;else{this.state=this.isTagStartChar(c)?State.InClosingTagName:State.InSpecialComment;this.sectionStart=this.index}}stateInClosingTagName(c){if(c===CharCodes.Gt||isWhitespace(c)){this.cbs.onclosetag(this.sectionStart,this.index);this.sectionStart=-1;this.state=State.AfterClosingTagName;this.stateAfterClosingTagName(c)}}stateAfterClosingTagName(c){
// Skip everything until ">"
if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeAttributeName(c){if(c===CharCodes.Gt){this.cbs.onopentagend(this.index);if(this.isSpecial){this.state=State.InSpecialTag;this.sequenceIndex=0}else this.state=State.Text;this.sectionStart=this.index+1}else if(c===CharCodes.Slash)this.state=State.InSelfClosingTag;else if(!isWhitespace(c)){this.state=State.InAttributeName;this.sectionStart=this.index}}stateInSelfClosingTag(c){if(c===CharCodes.Gt){this.cbs.onselfclosingtag(this.index);this.state=State.Text;this.sectionStart=this.index+1;this.isSpecial=false;// Reset special state, in case of self-closing special tags
}else if(!isWhitespace(c)){this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}}stateInAttributeName(c){if(c===CharCodes.Eq||isEndOfTagSection(c)){this.cbs.onattribname(this.sectionStart,this.index);this.sectionStart=this.index;this.state=State.AfterAttributeName;this.stateAfterAttributeName(c)}}stateAfterAttributeName(c){if(c===CharCodes.Eq)this.state=State.BeforeAttributeValue;else if(c===CharCodes.Slash||c===CharCodes.Gt){this.cbs.onattribend(QuoteType.NoValue,this.sectionStart);this.sectionStart=-1;this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}else if(!isWhitespace(c)){this.cbs.onattribend(QuoteType.NoValue,this.sectionStart);this.state=State.InAttributeName;this.sectionStart=this.index}}stateBeforeAttributeValue(c){if(c===CharCodes.DoubleQuote){this.state=State.InAttributeValueDq;this.sectionStart=this.index+1}else if(c===CharCodes.SingleQuote){this.state=State.InAttributeValueSq;this.sectionStart=this.index+1}else if(!isWhitespace(c)){this.sectionStart=this.index;this.state=State.InAttributeValueNq;this.stateInAttributeValueNoQuotes(c);// Reconsume token
}}handleInAttributeValue(c,quote){if(c===quote||!this.decodeEntities&&this.fastForwardTo(quote)){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=-1;this.cbs.onattribend(quote===CharCodes.DoubleQuote?QuoteType.Double:QuoteType.Single,this.index+1);this.state=State.BeforeAttributeName}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateInAttributeValueDoubleQuotes(c){this.handleInAttributeValue(c,CharCodes.DoubleQuote)}stateInAttributeValueSingleQuotes(c){this.handleInAttributeValue(c,CharCodes.SingleQuote)}stateInAttributeValueNoQuotes(c){if(isWhitespace(c)||c===CharCodes.Gt){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=-1;this.cbs.onattribend(QuoteType.Unquoted,this.index);this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateBeforeDeclaration(c){if(c===CharCodes.OpeningSquareBracket){this.state=State.CDATASequence;this.sequenceIndex=0}else this.state=c===CharCodes.Dash?State.BeforeComment:State.InDeclaration}stateInDeclaration(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.ondeclaration(this.sectionStart,this.index);this.state=State.Text;this.sectionStart=this.index+1}}stateInProcessingInstruction(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.onprocessinginstruction(this.sectionStart,this.index);this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeComment(c){if(c===CharCodes.Dash){this.state=State.InCommentLike;this.currentSequence=Sequences.CommentEnd;
// Allow short comments (eg. <!-->)
this.sequenceIndex=2;this.sectionStart=this.index+1}else this.state=State.InDeclaration}stateInSpecialComment(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.oncomment(this.sectionStart,this.index,0);this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeSpecialS(c){const lower=c|32;if(lower===Sequences.ScriptEnd[3])this.startSpecial(Sequences.ScriptEnd,4);else if(lower===Sequences.StyleEnd[3])this.startSpecial(Sequences.StyleEnd,4);else{this.state=State.InTagName;this.stateInTagName(c);// Consume the token again
}}stateBeforeSpecialT(c){const lower=c|32;if(lower===Sequences.TitleEnd[3])this.startSpecial(Sequences.TitleEnd,4);else if(lower===Sequences.TextareaEnd[3])this.startSpecial(Sequences.TextareaEnd,4);else{this.state=State.InTagName;this.stateInTagName(c);// Consume the token again
}}startEntity(){this.baseState=this.state;this.state=State.InEntity;this.entityStart=this.index;this.entityDecoder.startEntity(this.xmlMode?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Strict:this.baseState===State.Text||this.baseState===State.InSpecialTag?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Legacy:entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Attribute)}stateInEntity(){const length=this.entityDecoder.write(this.buffer,this.index-this.offset);
// If `length` is positive, we are done with the entity.
if(length>=0){this.state=this.baseState;if(length===0)this.index=this.entityStart}else
// Mark buffer as consumed.
this.index=this.offset+this.buffer.length-1}
/**
* Remove data that has already been consumed from the buffer.
*/cleanup(){
// If we are inside of text or attributes, emit what we already have.
if(this.running&&this.sectionStart!==this.index)if(this.state===State.Text||this.state===State.InSpecialTag&&this.sequenceIndex===0){this.cbs.ontext(this.sectionStart,this.index);this.sectionStart=this.index}else if(this.state===State.InAttributeValueDq||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueNq){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=this.index}}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}
/**
* Iterates through the buffer, calling the function corresponding to the current state.
*
* States that are more likely to be hit are higher up, as a performance improvement.
*/parse(){while(this.shouldContinue()){const c=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case State.Text:this.stateText(c);break;case State.SpecialStartSequence:this.stateSpecialStartSequence(c);break;case State.InSpecialTag:this.stateInSpecialTag(c);break;case State.CDATASequence:this.stateCDATASequence(c);break;case State.InAttributeValueDq:this.stateInAttributeValueDoubleQuotes(c);break;case State.InAttributeName:this.stateInAttributeName(c);break;case State.InCommentLike:this.stateInCommentLike(c);break;case State.InSpecialComment:this.stateInSpecialComment(c);break;case State.BeforeAttributeName:this.stateBeforeAttributeName(c);break;case State.InTagName:this.stateInTagName(c);break;case State.InClosingTagName:this.stateInClosingTagName(c);break;case State.BeforeTagName:this.stateBeforeTagName(c);break;case State.AfterAttributeName:this.stateAfterAttributeName(c);break;case State.InAttributeValueSq:this.stateInAttributeValueSingleQuotes(c);break;case State.BeforeAttributeValue:this.stateBeforeAttributeValue(c);break;case State.BeforeClosingTagName:this.stateBeforeClosingTagName(c);break;case State.AfterClosingTagName:this.stateAfterClosingTagName(c);break;case State.BeforeSpecialS:this.stateBeforeSpecialS(c);break;case State.BeforeSpecialT:this.stateBeforeSpecialT(c);break;case State.InAttributeValueNq:this.stateInAttributeValueNoQuotes(c);break;case State.InSelfClosingTag:this.stateInSelfClosingTag(c);break;case State.InDeclaration:this.stateInDeclaration(c);break;case State.BeforeDeclaration:this.stateBeforeDeclaration(c);break;case State.BeforeComment:this.stateBeforeComment(c);break;case State.InProcessingInstruction:this.stateInProcessingInstruction(c);break;case State.InEntity:this.stateInEntity();break}this.index++}this.cleanup()}finish(){if(this.state===State.InEntity){this.entityDecoder.end();this.state=this.baseState}this.handleTrailingData();this.cbs.onend()}
/** Handle any trailing data. */handleTrailingData(){const endIndex=this.buffer.length+this.offset;
// If there is no remaining data, we are done.
if(this.sectionStart>=endIndex)return;if(this.state===State.InCommentLike)if(this.currentSequence===Sequences.CdataEnd)this.cbs.oncdata(this.sectionStart,endIndex,0);else this.cbs.oncomment(this.sectionStart,endIndex,0);else if(this.state===State.InTagName||this.state===State.BeforeAttributeName||this.state===State.BeforeAttributeValue||this.state===State.AfterAttributeName||this.state===State.InAttributeName||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueDq||this.state===State.InAttributeValueNq||this.state===State.InClosingTagName);else this.cbs.ontext(this.sectionStart,endIndex)}emitCodePoint(cp,consumed){if(this.baseState!==State.Text&&this.baseState!==State.InSpecialTag){if(this.sectionStart<this.entityStart)this.cbs.onattribdata(this.sectionStart,this.entityStart);this.sectionStart=this.entityStart+consumed;this.index=this.sectionStart-1;this.cbs.onattribentity(cp)}else{if(this.sectionStart<this.entityStart)this.cbs.ontext(this.sectionStart,this.entityStart);this.sectionStart=this.entityStart+consumed;this.index=this.sectionStart-1;this.cbs.ontextentity(cp,this.sectionStart)}}}
//# sourceMappingURL=Tokenizer.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/index.js":
/*!***************************************************!*\
!*** ./node_modules/htmlparser2/lib/esm/index.js ***!
\***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DefaultHandler:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler
/* harmony export */,DomHandler:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler
/* harmony export */,DomUtils:()=>/* reexport module object */domutils__WEBPACK_IMPORTED_MODULE_4__
/* harmony export */,ElementType:()=>/* reexport module object */domelementtype__WEBPACK_IMPORTED_MODULE_3__
/* harmony export */,Parser:()=>/* reexport safe */_Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser
/* harmony export */,QuoteType:()=>/* reexport safe */_Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__.QuoteType
/* harmony export */,Tokenizer:()=>/* reexport safe */_Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__["default"]
/* harmony export */,createDocumentStream:()=>/* binding */createDocumentStream
/* harmony export */,createDomStream:()=>/* binding */createDomStream
/* harmony export */,getFeed:()=>/* reexport safe */domutils__WEBPACK_IMPORTED_MODULE_4__.getFeed
/* harmony export */,parseDOM:()=>/* binding */parseDOM
/* harmony export */,parseDocument:()=>/* binding */parseDocument
/* harmony export */,parseFeed:()=>/* binding */parseFeed
/* harmony export */});
/* harmony import */var _Parser_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./Parser.js */"./node_modules/htmlparser2/lib/esm/Parser.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./Tokenizer.js */"./node_modules/htmlparser2/lib/esm/Tokenizer.js");
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
// Helper methods
/**
* Parses the data, returns the resulting document.
*
* @param data The data that should be parsed.
* @param options Optional options for the parser and DOM handler.
*/function parseDocument(data,options){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler(void 0,options);new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options).end(data);return handler.root}
/**
* Parses data, returns an array of the root nodes.
*
* Note that the root nodes still have a `Document` node as their parent.
* Use `parseDocument` to get the `Document` node instead.
*
* @param data The data that should be parsed.
* @param options Optional options for the parser and DOM handler.
* @deprecated Use `parseDocument` instead.
*/function parseDOM(data,options){return parseDocument(data,options).children}
/**
* Creates a parser instance, with an attached DOM handler.
*
* @param callback A callback that will be called once parsing has been completed, with the resulting document.
* @param options Optional options for the parser and DOM handler.
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
*/function createDocumentStream(callback,options,elementCallback){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler((error=>callback(error,handler.root)),options,elementCallback);return new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options)}
/**
* Creates a parser instance, with an attached DOM handler.
*
* @param callback A callback that will be called once parsing has been completed, with an array of root nodes.
* @param options Optional options for the parser and DOM handler.
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
* @deprecated Use `createDocumentStream` instead.
*/function createDomStream(callback,options,elementCallback){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler(callback,options,elementCallback);return new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options)}
/*
* All of the following exports exist for backwards-compatibility.
* They should probably be removed eventually.
*/const parseFeedDefaultOptions={xmlMode:true};
/**
* Parse a feed.
*
* @param feed The feed that should be parsed, as a string.
* @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
*/function parseFeed(feed,options=parseFeedDefaultOptions){return(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getFeed)(parseDOM(feed,options))}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/compile.js":
/*!***************************************************!*\
!*** ./node_modules/nth-check/lib/esm/compile.js ***!
\***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* binding */compile
/* harmony export */,generate:()=>/* binding */generate
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/**
* Returns a function that checks if an elements index matches the given rule
* highly optimized to return the fastest solution.
*
* @param parsed A tuple [a, b], as returned by `parse`.
* @returns A highly optimized function that returns whether an index matches the nth-check.
* @example
*
* ```js
* const check = nthCheck.compile([2, 3]);
*
* check(0); // `false`
* check(1); // `false`
* check(2); // `true`
* check(3); // `false`
* check(4); // `true`
* check(5); // `false`
* check(6); // `true`
* ```
*/function compile(parsed){const a=parsed[0];
// Subtract 1 from `b`, to convert from one- to zero-indexed.
const b=parsed[1]-1;
/*
* When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.
* Besides, the specification states that no elements are
* matched when `a` and `b` are 0.
*
* `b < 0` here as we subtracted 1 from `b` above.
*/if(b<0&&a<=0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;
// When `a` is in the range -1..1, it matches any element (so only `b` is checked).
if(a===-1)return index=>index<=b;if(a===0)return index=>index===b
// When `b <= 0` and `a === 1`, they match any element.;
if(a===1)return b<0?boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc:index=>index>=b
/*
* Otherwise, modulo can be used to check if there is a match.
*
* Modulo doesn't care about the sign, so let's use `a`s absolute value.
*/;const absA=Math.abs(a);
// Get `b mod a`, + a if this is negative.
const bMod=(b%absA+absA)%absA;return a>1?index=>index>=b&&index%absA===bMod:index=>index<=b&&index%absA===bMod}
/**
* Returns a function that produces a monotonously increasing sequence of indices.
*
* If the sequence has an end, the returned function will return `null` after
* the last index in the sequence.
*
* @param parsed A tuple [a, b], as returned by `parse`.
* @returns A function that produces a sequence of indices.
* @example <caption>Always increasing (2n+3)</caption>
*
* ```js
* const gen = nthCheck.generate([2, 3])
*
* gen() // `1`
* gen() // `3`
* gen() // `5`
* gen() // `8`
* gen() // `11`
* ```
*
* @example <caption>With end value (-2n+10)</caption>
*
* ```js
*
* const gen = nthCheck.generate([-2, 5]);
*
* gen() // 0
* gen() // 2
* gen() // 4
* gen() // null
* ```
*/function generate(parsed){const a=parsed[0];
// Subtract 1 from `b`, to convert from one- to zero-indexed.
let b=parsed[1]-1;let n=0;
// Make sure to always return an increasing sequence
if(a<0){const aPos=-a;
// Get `b mod a`
const minValue=(b%aPos+aPos)%aPos;return()=>{const val=minValue+aPos*n++;return val>b?null:val}}if(a===0)return b<0?// There are no result — always return `null`
()=>null// Return `b` exactly once
:()=>n++===0?b:null;if(b<0)b+=a*Math.ceil(-b/a);return()=>a*n+++b}
//# sourceMappingURL=compile.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/index.js":
/*!*************************************************!*\
!*** ./node_modules/nth-check/lib/esm/index.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* reexport safe */_compile_js__WEBPACK_IMPORTED_MODULE_1__.compile
/* harmony export */,default:()=>/* binding */nthCheck
/* harmony export */,generate:()=>/* reexport safe */_compile_js__WEBPACK_IMPORTED_MODULE_1__.generate
/* harmony export */,parse:()=>/* reexport safe */_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse
/* harmony export */,sequence:()=>/* binding */sequence
/* harmony export */});
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./parse.js */"./node_modules/nth-check/lib/esm/parse.js");
/* harmony import */var _compile_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./compile.js */"./node_modules/nth-check/lib/esm/compile.js");
/**
* Parses and compiles a formula to a highly optimized function.
* Combination of {@link parse} and {@link compile}.
*
* If the formula doesn't match any elements,
* it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.
* Otherwise, a function accepting an _index_ is returned, which returns
* whether or not the passed _index_ matches the formula.
*
* Note: The nth-rule starts counting at `1`, the returned function at `0`.
*
* @param formula The formula to compile.
* @example
* const check = nthCheck("2n+3");
*
* check(0); // `false`
* check(1); // `false`
* check(2); // `true`
* check(3); // `false`
* check(4); // `true`
* check(5); // `false`
* check(6); // `true`
*/function nthCheck(formula){return(0,_compile_js__WEBPACK_IMPORTED_MODULE_1__.compile)((0,_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse)(formula))}
/**
* Parses and compiles a formula to a generator that produces a sequence of indices.
* Combination of {@link parse} and {@link generate}.
*
* @param formula The formula to compile.
* @returns A function that produces a sequence of indices.
* @example <caption>Always increasing</caption>
*
* ```js
* const gen = nthCheck.sequence('2n+3')
*
* gen() // `1`
* gen() // `3`
* gen() // `5`
* gen() // `8`
* gen() // `11`
* ```
*
* @example <caption>With end value</caption>
*
* ```js
*
* const gen = nthCheck.sequence('-2n+5');
*
* gen() // 0
* gen() // 2
* gen() // 4
* gen() // null
* ```
*/function sequence(formula){return(0,_compile_js__WEBPACK_IMPORTED_MODULE_1__.generate)((0,_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse)(formula))}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/parse.js":
/*!*************************************************!*\
!*** ./node_modules/nth-check/lib/esm/parse.js ***!
\*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */parse:()=>/* binding */parse
/* harmony export */});
// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is " \t\r\n\f"
const whitespace=new Set([9,10,12,13,32]);const ZERO="0".charCodeAt(0);const NINE="9".charCodeAt(0);
/**
* Parses an expression.
*
* @throws An `Error` if parsing fails.
* @returns An array containing the integer step size and the integer offset of the nth rule.
* @example nthCheck.parse("2n+3"); // returns [2, 3]
*/function parse(formula){formula=formula.trim().toLowerCase();if(formula==="even")return[2,0];else if(formula==="odd")return[2,1];
// Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
let idx=0;let a=0;let sign=readSign();let number=readNumber();if(idx<formula.length&&formula.charAt(idx)==="n"){idx++;a=sign*(number!==null&&number!==void 0?number:1);skipWhitespace();if(idx<formula.length){sign=readSign();skipWhitespace();number=readNumber()}else sign=number=0}
// Throw if there is anything else
if(number===null||idx<formula.length)throw new Error(`n-th rule couldn't be parsed ('${formula}')`);return[a,sign*number];function readSign(){if(formula.charAt(idx)==="-"){idx++;return-1}if(formula.charAt(idx)==="+")idx++;return 1}function readNumber(){const start=idx;let value=0;while(idx<formula.length&&formula.charCodeAt(idx)>=ZERO&&formula.charCodeAt(idx)<=NINE){value=value*10+(formula.charCodeAt(idx)-ZERO);idx++}
// Return `null` if we didn't read anything.
return idx===start?null:value}function skipWhitespace(){while(idx<formula.length&&whitespace.has(formula.charCodeAt(idx)))idx++}}
//# sourceMappingURL=parse.js.map
/***/},
/***/"?2259":
/*!**********************!*\
!*** path (ignored) ***!
\**********************/
/***/()=>{},
/***/"?c221":
/*!********************!*\
!*** fs (ignored) ***!
\********************/
/***/()=>{}
/******/};
/************************************************************************/
/******/ // The module cache
/******/var __webpack_module_cache__={};
/******/
/******/ // The require function
/******/function __webpack_require__(moduleId){
/******/ // Check if module is in cache
/******/var cachedModule=__webpack_module_cache__[moduleId];
/******/if(cachedModule!==void 0)
/******/return cachedModule.exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/var module=__webpack_module_cache__[moduleId]={
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/exports:{}
/******/};
/******/
/******/ // Execute the module function
/******/__webpack_modules__[moduleId](module,module.exports,__webpack_require__);
/******/
/******/ // Return the exports of the module
/******/return module.exports;
/******/}
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/(()=>{
/******/ // define getter functions for harmony exports
/******/__webpack_require__.d=(exports,definition)=>{
/******/for(var key in definition)
/******/if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key))
/******/Object.defineProperty(exports,key,{enumerable:true,get:definition[key]});
/******/
/******/
/******/};
/******/})();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/(()=>{
/******/__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)
/******/})();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/(()=>{
/******/ // define __esModule on exports
/******/__webpack_require__.r=exports=>{
/******/if(typeof Symbol!=="undefined"&&Symbol.toStringTag)
/******/Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
/******/
/******/Object.defineProperty(exports,"__esModule",{value:true});
/******/};
/******/})();
/******/
/************************************************************************/var __webpack_exports__={};
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
(()=>{
/*!******************!*\
!*** ./teddy.js ***!
\******************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
/* harmony import */var fs__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! fs */"?c221");
/* harmony import */var path__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! path */"?2259");
/* harmony import */var cheerio_slim__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! cheerio/slim */"./node_modules/cheerio/dist/browser/slim.js");
// #region globals
// node filesystem module
// node path module
// dom parser
const cheerioOptions={xml:{xmlMode:false,lowerCaseAttributeNames:false,decodeEntities:false}};const browser=cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load.isCheerioPolyfill;// true if we are executing in the browser context
const params={};// teddy parameters
setDefaultParams();// set params to the defaults
let templates={};// loaded templates are stored as object collections, e.g. { "myTemplate.html": "<p>some markup</p>"}
const caches={};// a place to store cached portions of templates
const templateCaches={};// a place to store cached full templates
// #endregion
// #region private methods
// loads the template from the filesystem
function loadTemplate(template){
// ensure template is a string
if(typeof template!=="string"){if(params.verbosity>1)console.warn("teddy.loadTemplate attempted to load a template which is not a string.");return""}const name=template;let register=false;if(!templates[template]&&template.indexOf("<")===-1&&fs__WEBPACK_IMPORTED_MODULE_0__&&fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync){
// template is not found, it is not code, and we're in the node.js context
register=true;
// append extension if not present
if(template.slice(-5)!==".html")template+=".html";try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(template,"utf8")}catch(e){try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(params.templateRoot+template,"utf8")}catch(e){try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(params.templateRoot+"/"+template,"utf8")}catch(e){
// do nothing, attempt to render it as code
register=false}}}}else if(templates[template]){template=templates[template];register=true}else{
// didn't find it; append extension if not present and check it again
if(template.slice(-5)!==".html")template+=".html";if(templates[template]){template=templates[template];register=true}template=removeTeddyComments(template)}if(register){
// register the new template and return the code
template=removeTeddyComments(template);templates[name]=template;return template}else
// return the template name which is presumed to be code
return template.slice(-5)===".html"?template.substring(0,template.length-5):template}
// remove teddy {! comments !} and <!--! comments -->; also replace <!--# content --> with <escape>content</escape>
function removeTeddyComments(renderedTemplate){let oldTemplate;do{oldTemplate=renderedTemplate;let vars;try{vars=matchByDelimiter(renderedTemplate,"{!","!}")}catch(e){return renderedTemplate;// it will match {! comments {! with comments in them !} !} but if there are unbalanced brackets, just return the original text
}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`{!${vars[i]}!}`,"");try{vars=matchByDelimiter(renderedTemplate,"\x3c!--!","--\x3e")}catch(e){return renderedTemplate}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`\x3c!--!${vars[i]}--\x3e`,"");try{vars=matchByDelimiter(renderedTemplate,"\x3c!--#","--\x3e")}catch(e){return renderedTemplate}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`\x3c!--#${vars[i]}--\x3e`,`<escape>${vars[i]}</escape>`)}while(oldTemplate!==renderedTemplate);return renderedTemplate}
// find all cache elements and replace them with the rendered contents of their cache, then remove the cache element
function replaceCacheElements(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("cache:not([defer])");if(tags.length>0)for(const el of tags){if(browser)el.attribs=getAttribs(el);const name=el.attribs.name;if(name.includes("{"))continue;const key=el.attribs.key||"none";if(key.includes("{"))continue;const cache=caches[name];if(cache&&cache.entries){const keyVal=el.attribs.key?getOrSetObjectByDotNotation(model,key):"none";if(cache.entries[keyVal]){const now=Date.now();
// if max age is not set, then there is no max age and the cache content is still valid
// or if last accessed + max age > now then the cache is not stale and the cache is still valid
if(!(cache.maxAge&&!cache.maxage)||cache.entries[keyVal].lastAccessed+(cache.maxAge||cache.maxage)>now){const cacheContent=cache.entries[keyVal].markup;cache.entries[keyVal].lastAccessed=now;dom(el).replaceWith(cacheContent)}else{
// if last accessed + max age <= now then the cache is stale and the cache is no longer valid
delete caches[name].entries[keyVal];dom(el).attr("defer","true");// create a new cache
}}else dom(el).attr("defer","true");// no cache exists for this yet; create after the template renders
}else dom(el).attr("defer","true");// no cache exists for this yet; create after the template renders
parsedTags++}}while(parsedTags);return dom}
// add an id to all <noteddy> or <noparse> tags, then remove their content temporarily until the template is fully parsed
function tagNoParseBlocks(dom,model){let parsedTags;do{parsedTags=0;let tags=dom("noteddy:not([id]), noparse:not([id])");if(tags.length>0)for(const el of tags){const id=model._noTeddyBlocks.push(dom(el).html())-1;dom(el).replaceWith(`<noteddy id="${id}"></noteddy>`);parsedTags++}tags=dom("pre:not([id]):not([parse])");if(tags.length>0)for(const el of tags){const id=model._noTeddyBlocks.push(dom(el).toString())-1;dom(el).replaceWith(`<noteddy id="${id}" pre="true"></noteddy>`);parsedTags++}}while(parsedTags);return dom}
// parse <include> tags
function parseIncludes(dom,model,dynamic){let parsedTags;let passes=0;do{passes++;if(passes>params.maxPasses)throw new Error(`teddy could not finish rendering the template because the max number of passes over the template (${params.maxPasses}) was exceeded; there may be an infinite loop in your template logic.`);parsedTags=0;let tags;
// dynamic includes are includes like <include src="{sourcedFromVariable}"></include>
if(dynamic)tags=dom("include");// parse all includes
else tags=dom("include:not([teddydeferreddynamicinclude])");// parse only includes that aren't dynamic
if(tags.length>0)for(const el of tags){
// ensure this isn't the child of a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get attributes
if(browser)el.attribs=getAttribs(el);const src=el.attribs.src;if(!src){if(params.verbosity>1)console.warn("teddy encountered an include tag with no src attribute.");continue}if(src.startsWith("{")){dom(el).attr("teddydeferreddynamicinclude","true");// mark it dynamic and then skip it
continue}loadTemplate(src);// load the partial into the template list
let contents=templates[src]||"";if(typeof templates[src]!=="string"&¶ms.includeNotFoundBehavior==="display"){contents=`Template "${src}" not found!`;if(params.verbosity>1)console.warn(`teddy encountered an include tag with a src set to a template that could not be found: ${src}`)}const localModel=Object.assign({},model);for(const arg of dom(el).children()){const argName=browser?arg.nodeName?.toLowerCase():arg.name;if(argName==="arg"){if(browser)arg.attribs=getAttribs(arg);const argval=Object.keys(arg.attribs)[0];getOrSetObjectByDotNotation(localModel,argval,dom(arg).html())}}const hasNoteddy=contents.includes("</noteddy>");const hasNoparse=contents.includes("</noparse>");const hasPre=contents.includes("</pre>");const hasIf=contents.includes("</if>");const hasUnless=contents.includes("</unless>");const hasTrue=contents.includes(" true=");const hasFalse=contents.includes(" false=");const hasLoop=contents.includes("</loop>");const hasInline=contents.includes("</inline>");const hasEscape=contents.includes("</escape>")||contents.includes("\x3c!--#");const hasSelected=contents.includes(" selected-value=")||contents.includes(" checked-value=");if(hasEscape)contents=parseEscapes(contents);let localDom;if(hasNoteddy||hasNoparse||hasPre){localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(contents,cheerioOptions);localDom=tagNoParseBlocks(localDom,localModel);contents=localDom.html()}localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(parseVars(contents,localModel),cheerioOptions);if(hasIf||hasUnless)localDom=parseConditionals(localDom,localModel);if(hasTrue||hasFalse)localDom=parseOneLineConditionals(localDom,localModel);if(hasLoop)localDom=parseLoops(localDom,localModel);if(hasInline)localDom=parseInlines(localDom,localModel);if(hasSelected)localDom=parseSelectedAttributeValues(localDom,localModel);dom(el).replaceWith(localDom.html());parsedTags++}}while(parsedTags);return dom}
// parse <if>, <elseif>, <unless>, <elseunless>, and <else> tags
function parseConditionals(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("if, unless");if(tags.length>0)for(const el of tags){
// ensure this isn't the child of a loop or a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="loop"||parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get conditions
let args=[];if(browser)el.attribs=getAttribs(el);for(let attr in el.attribs){if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];// the condition is a duplicate, so remove the `-teddyduplicate1` from `conditionName-teddyduplicate1`, `conditionName-teddyduplicate2`, etc
let val=el.attribs[attr];if(val){if(val.startsWith("{"))val=parseVars(val,model);args.push(`${attr}=${val}`)}else args.push(attr)}
// check if it's an if tag and not an unless tag
let isIf=true;const elName=browser?el.nodeName?.toLowerCase():el.name;if(elName==="unless")isIf=false;
// evaluate conditional
const condResult=evaluateConditional(args,model);if(isIf&&condResult||!isIf&&!condResult){
// render the true block and discard the elseif, elseunless, and else blocks
let nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");dom(el).replaceWith(el.childNodes||el.children);parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
let nextSibling=el.nextSibling;while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":
// get conditions
args=[];if(browser)nextSibling.attribs=getAttribs(nextSibling);for(const attr in nextSibling.attribs){const val=nextSibling.attribs[attr];if(val)args.push(`${attr}=${val}`);else args.push(attr)}if(evaluateConditional(args,model)){
// render the true block and discard the elseif, elseunless, and else blocks
const replaceSibling=nextSibling;dom(replaceSibling).replaceWith(replaceSibling.childNodes||replaceSibling.children);nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");nextSibling=false;parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
const siblingToWipe=nextSibling;nextSibling=nextSibling.nextSibling;dom(siblingToWipe).replaceWith("")}break;case"elseunless":
// get conditions
args=[];if(browser)nextSibling.attribs=getAttribs(nextSibling);for(const attr in nextSibling.attribs){const val=nextSibling.attribs[attr];if(val)args.push(`${attr}=${val}`);else args.push(attr)}if(!evaluateConditional(args,model)){
// render the true block and discard the elseif, elseunless, and else blocks
const replaceSibling=nextSibling;dom(replaceSibling).replaceWith(replaceSibling.childNodes||replaceSibling.children);nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");nextSibling=false;parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
const siblingToWipe=nextSibling;nextSibling=nextSibling.nextSibling;dom(siblingToWipe).replaceWith("")}break;case"else":
// else is always true, so if we've gotten here, then there's nothing to evaluate and we've reached the end of the conditional blocks
dom(nextSibling).replaceWith(nextSibling.childNodes||nextSibling.children);nextSibling=false;parsedTags++;break;case"if":case"unless":
// if we encounter another fresh if statement or unless statement, then there's nothing left to evaluate and we've reached the end of this conditional's blocks
nextSibling=false;break;default:
// if we encounter any other element or a text node we assume there could still be more elseif, elseunless, or else tags ahead so we keep going
nextSibling=nextSibling.nextSibling}}dom(el).replaceWith("");// remove the original if statement once done with finding its siblings
}}}while(parsedTags);return dom}
// evaluates a single <if> or <unless> tag
function evaluateConditional(conditions,model){const conditionsLength=conditions.length;
// loop through conditions and reduce them to booleans
for(let i=0;i<conditionsLength;i++){const condition=conditions[i];if(typeof condition==="boolean")continue;// if the condition is already a boolean then we don't need to reduce it to a boolean to evaluate it
// reject conditions with invalid formatting
if(condition.startsWith("=")||condition.endsWith("=")){if(params.verbosity>1)console.warn('teddy encountered a conditional statement with "=" at the beginning or end of a condition.');return false}if(condition.includes(":")&&!condition.startsWith("not:")){if(params.verbosity>1)console.warn('teddy encountered a conditional statement with a "not:" that isn\'t at the beginning of a condition.');return false}
// deal with boolean logic
if(condition==="and")if(conditions[i-1]&&evaluateCondition(conditions[i+1],model)){
// if both sides of an and are true, then reduce all 3 condition blocks to true
conditions[i-1]=true;conditions[i]=true;conditions[i+1]=true}else{
// if either side of an and is false, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else if(condition==="or")if(conditions[i-1]||evaluateCondition(conditions[i+1],model))
// if either side of an or is true, then reduce all 3 condition blocks to true, as well as all condition blocks that precded this or
conditions.fill(true,0,i+2);else{
// if both sides of an or are false, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else if(condition==="xor")if(!!conditions[i-1]===!!evaluateCondition(conditions[i+1],model)){
// if both sides of an xor are equal to each other, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else{
// if the two sides of an xor are not equal to each other, then reduce all 3 condition blocks to true
conditions[i-1]=true;conditions[i]=true;conditions[i+1]=true}else conditions[i]=evaluateCondition(condition,model)}return conditions.every((item=>item===true))||false;// if any of the booleans are false, then return false. otherwise return true
}
// determines whether a single condition in a teddy conditional is true or false
function evaluateCondition(condition,model){let not;// stores whether the :not modifier is present
if(typeof condition==="string"&&condition.includes("=")){// it's an equality check condition
not=!!condition.startsWith("not:");// true if "not:" is present
if(not)condition=condition.slice(4);// remove the :not prefix
const parts=condition.split("=");// something="Some content"
const cond=parts[0];// something
delete parts[0];// remove the something=
const val=parts.join("");// "Some content" — the path.join method ensures the string gets rebuilt even if it contains another = character
const lookup=getOrSetObjectByDotNotation(model,cond);
// the == is necessary because teddy does type-insensitive equality checks
if(lookup==val)return!not;// eslint-disable-line
else return not;// false
}else{// it's a presence check
not=typeof condition==="string"?!!condition.startsWith("not:"):false;// true if "not:" is present
if(not)condition=condition.slice(4);// remove the :not prefix
const lookup=getOrSetObjectByDotNotation(model,condition);if(lookup){if(typeof lookup==="object"&&Object.keys(lookup).length===0)return not;// false; empty object or array
return!not;// true; var is present
}else return not;// false; var is not present
}}
// render one-line if attributes, e.g. <p if-something="value" true="class='class-applied-if-true'" false="class='class-applied-if-false'">hello</p>
function parseOneLineConditionals(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("[true], [false]");if(tags.length>0)for(const el of tags){
// skip parsing this if it uses variables as part of its conditions; it will get caught in the next pass after parseVars runs
let defer=false;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs){const val=el.attribs[attr];if(val.startsWith("{")){defer=true;break}}if(defer){dom(el).attr("teddydeferredonelineconditional","true");continue}
// ensure this isn't the child of a loop or a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="loop"||parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get conditions
let ifTrue;let ifFalse;if(browser)el.attribs=getAttribs(el);const args=[];for(const origAttr in el.attribs){let attr=origAttr;let val=el.attribs[attr];if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];// the condition is a duplicate, so remove the `-teddyduplicate1` from `conditionName-teddyduplicate1`, `conditionName-teddyduplicate2`, etc
if(val?.startsWith("{"))val=parseVars(val,model);if(attr.startsWith("if-")){const parts=attr.split("if-");if(val)args.push(`${parts[1]}=${val}`);else args.push(parts[1]);dom(el).removeAttr(origAttr)}else if(attr==="true"){ifTrue=val.replaceAll(""",'"');// true="class='blah'"
dom(el).removeAttr(origAttr)}else if(attr==="false"){ifFalse=val.replaceAll(""",'"');// false="class='blah'"
dom(el).removeAttr(origAttr)}else if(attr==="and"||attr==="or"||attr==="xor"){args.push(attr);dom(el).removeAttr(origAttr)}}
// evaluate conditional
if(evaluateConditional(args,model)){if(ifTrue){const parts=ifTrue.split("=");dom(el).attr(parts[0],parts[1]?parts[1].replace(/["']/g,""):"")}parsedTags++}else if(ifFalse){if(ifFalse){const parts=ifFalse.split("=");dom(el).attr(parts[0],parts[1]?parts[1].replace(/["']/g,""):"")}parsedTags++}}}while(parsedTags);return dom}
// render <loop> tags
function parseLoops(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("loop");if(tags.length>0)for(const el of tags){
// get attributes
let loopThrough;let keyName;let valName;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="through"){let attrVal=el.attribs[attr];if(attrVal.startsWith("{"))attrVal=parseVars(attrVal,model);loopThrough=getOrSetObjectByDotNotation(model,attrVal)}else if(attr==="key")keyName=el.attribs[attr];else if(attr==="val")valName=el.attribs[attr];
// reject the loop if it has invalid attributes
if(!loopThrough){if(params.verbosity>1)console.warn("teddy encountered a loop without a through attribute.");dom(el).replaceWith("");continue}if(!keyName&&!valName){if(params.verbosity>1)console.warn("teddy encountered a loop without a key or a val attribute.");dom(el).replaceWith("");continue}
// loop through model[loopThrough] and parse teddy tags within the loop's iteration against the local model
let newMarkup="";let loopContents=dom(el).html();if(loopThrough instanceof Set)loopThrough=[...loopThrough];// convert Sets to arrays
for(const key in loopThrough){const val=loopThrough[key];const localModel=Object.assign({},model);getOrSetObjectByDotNotation(localModel,keyName,key);getOrSetObjectByDotNotation(localModel,valName,val);const hasNoteddyLoopContents=loopContents.includes("</noteddy>");const hasNoparseLoopContents=loopContents.includes("</noparse>");const hasPreLoopContents=loopContents.includes("</pre>");const hasEscape=loopContents.includes("</escape>")||loopContents.includes("\x3c!--#");if(hasEscape)loopContents=parseEscapes(loopContents);if(hasNoteddyLoopContents||hasNoparseLoopContents||hasPreLoopContents){let localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(loopContents,cheerioOptions);localDom=tagNoParseBlocks(localDom,localModel);loopContents=localDom.html()}const localMarkup=parseVars(loopContents,localModel)||"";const hasNoteddy=localMarkup.includes("</noteddy>");const hasNoparse=localMarkup.includes("</noparse>");const hasIf=localMarkup.includes("</if>");const hasUnless=localMarkup.includes("</unless>");const hasTrue=localMarkup.includes(" true=");const hasFalse=localMarkup.includes(" false=");const hasLoop=localMarkup.includes("</loop>");const hasInline=localMarkup.includes("</inline>");const hasSelected=localMarkup.includes(" selected-value=")||localMarkup.includes(" checked-value=");let localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(localMarkup||"",cheerioOptions);if(hasNoteddy||hasNoparse)localDom=tagNoParseBlocks(localDom,localModel);if(hasIf||hasUnless)localDom=parseConditionals(localDom,localModel);if(hasTrue||hasFalse)localDom=parseOneLineConditionals(localDom,localModel);if(hasLoop)localDom=parseLoops(localDom,localModel);if(hasInline)localDom=parseInlines(localDom,localModel);if(hasSelected)localDom=parseSelectedAttributeValues(localDom,localModel);newMarkup+=localDom.html()}const newDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(newMarkup||"",cheerioOptions);dom(el).replaceWith(newDom.html());parsedTags++}}while(parsedTags);return dom}
// render <inline> tags
function parseInlines(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("inline");if(tags.length>0)for(const el of tags){
// get attributes
let css;let js;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="css")css=getOrSetObjectByDotNotation(model,el.attribs[attr]);else if(attr==="js")js=getOrSetObjectByDotNotation(model,el.attribs[attr]);
// reject if it has invalid attributes
if(!css&&!js){if(params.verbosity>1)console.warn("teddy encountered an <inline> element without a css or js attribute.");dom(el).replaceWith("");continue}let replaceWith="";if(css)replaceWith=`<style>${css}</style>`;else replaceWith=`<script>${js}<\/script>`;dom(el).replaceWith(replaceWith);parsedTags++}}while(parsedTags);return dom}
// render <escape> tags
function parseEscapes(templateString){return templateString.replace(/<escape>(.*?)<\/escape>/gs,((_,content)=>escapeEntities(content.trim())))}
// render `selected-value` and `checked-value` attributes
function parseSelectedAttributeValues(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("select[selected-value], [checked-value]");if(tags.length>0)for(const el of tags){
// get attributes
if(browser)el.attribs=getAttribs(el);for(let attr in el.attribs){const origAttr=attr;if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];if(attr==="selected-value"){const val=parseVars(el.attribs[origAttr],model)||el.attribs[origAttr];const children=dom(el).find("option[value]");for(const opt of children){if(browser)opt.attribs=getAttribs(opt);if(opt.attribs.value===val)dom(opt).attr("selected","selected")}dom(el).removeAttr(origAttr)}else if(attr==="checked-value"){const val=parseVars(el.attribs[origAttr],model)||el.attribs[origAttr];const children=dom(el).find('input[type="checkbox"][value], input[type="radio"][value]');for(const opt of children){if(browser)opt.attribs=getAttribs(opt);if(opt.attribs.value===val)dom(opt).attr("checked","checked")}dom(el).removeAttr(origAttr)}}parsedTags++}}while(parsedTags);return dom}
// render {variables}
function parseVars(templateString,model){let vars;try{vars=matchByDelimiter(templateString,"{","}")}catch(e){return templateString;// it will match {vars{withVarsInThem}} but if there are unbalanced brackets, just return the original text
}const varsLength=vars.length;for(let i=0;i<varsLength;i++){let match=vars[i];if(match==="")continue;// empty {}
if(!/^(\d+|[a-zA-Z_$][a-zA-Z0-9_$|{}.-]*(\.[a-zA-Z_$][a-zA-Z0-9_$|{}.-]*)*)$/.test(match)){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${match}}`);continue;// skip invalid variables
}if(match.includes("{")){
// there's a variable inside the variable name
const originalMatch=match;match=parseVars(match,model);try{templateString=templateString.replace(new RegExp(`\${${originalMatch}}`,"i"),(()=>`\${${match}}`));templateString=templateString.replace(new RegExp(`{${originalMatch}}`,"i"),(()=>`{${match}}`))}catch(e){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${originalMatch}}`)}}const lastSixChars=match.slice(-6);if(lastSixChars.includes("|p")){// no parse flag is set
const originalMatch=match;match=match.substring(0,match.length-(lastSixChars.split("|").length-1)*2);// remove last 2-n chars
let parsed=getOrSetObjectByDotNotation(model,match);if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");if(parsed||parsed===""){const id=model._noTeddyBlocks.push(parsed)-1;try{try{templateString=templateString.replace(new RegExp(`\${${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),`<noteddy id="${id}"></noteddy>`);templateString=templateString.replace(new RegExp(`{${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),`<noteddy id="${id}"></noteddy>`)}catch(e){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${originalMatch}}`)}}catch(e){return templateString}}}else if(lastSixChars.includes("|s")){// no escape flag is set
const originalMatch=match;match=match.substring(0,match.length-(lastSixChars.split("|").length-1)*2);// remove last 2-n chars
let parsed=getOrSetObjectByDotNotation(model,match);let skipTemplateLiteralReplacement=false;if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
else if(!parsed&&parsed!==""){skipTemplateLiteralReplacement=true;parsed=`{${originalMatch}}`}if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");try{if(!skipTemplateLiteralReplacement)templateString=templateString.replace(new RegExp(`\${${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed));templateString=templateString.replace(new RegExp(`{${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed))}catch(e){return templateString}}else{// no flags are set
let parsed=getOrSetObjectByDotNotation(model,match);let skipTemplateLiteralReplacement=false;if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
else if(parsed||parsed==="")parsed=escapeEntities(parsed);else if(parsed===0)parsed="0";else{skipTemplateLiteralReplacement=true;parsed=`{${match}}`}if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");try{if(!skipTemplateLiteralReplacement)templateString=templateString.replace(new RegExp(`\${${match}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed));templateString=templateString.replace(new RegExp(`{${match}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed))}catch(e){return templateString}}}return templateString}
// once the template is fully rendered, find all cache elements that still exist and cache their contents
function defineNewCaches(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("cache[defer]");if(tags.length>0)for(const el of tags){if(browser)el.attribs=getAttribs(el);const name=el.attribs.name;const key=el.attribs.key||"none";const maxAge=parseInt(el.attribs.maxAge||el.attribs.maxage)||0;const maxCaches=parseInt(el.attribs.maxCaches||el.attribs.maxcaches)||1e3;const timestamp=Date.now();const markup=dom(el).html();if(!caches[name])caches[name]={key,maxAge,maxCaches,entries:{}};caches[name].entries[el.attribs.key?getOrSetObjectByDotNotation(model,key):"none"]={lastAccessed:timestamp,created:timestamp,markup};
// invalidate oldest cache if we've reached max caches limit
if(Object.keys(caches[name].entries).length>maxCaches){const lowestKeyVal=Object.keys(caches[name].entries).reduce(((a,b)=>caches[name].entries[a].lastAccessed<caches[name].entries[b].lastAccessed?a:b));delete caches[name].entries[lowestKeyVal]}dom(el).replaceWith(markup);parsedTags++}}while(parsedTags);return dom}
// removes any remaining teddy tags from the dom before returning the parsed html to the user
function cleanupStrayTeddyTags(dom){let parsedTags;do{parsedTags=0;const tags=dom("[teddydeferredonelineconditional], pre[parse], include, arg, if, unless, elseif, elseunless, else, loop, cache");if(tags.length>0)for(const el of tags){const tagName=browser?el.nodeName?.toLowerCase():el.name;if(tagName==="include"||tagName==="arg"||tagName==="if"||tagName==="unless"||tagName==="elseif"||tagName==="elseunless"||tagName==="else"||tagName==="loop"||tagName==="cache")dom(el).remove();if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="true"||attr==="false"||attr==="parse"||attr==="teddydeferredonelineconditional"||attr.startsWith("if-"))dom(el).removeAttr(attr)}}while(parsedTags);return dom}
// escapes sensitive characters to prevent xss
const escapeHtmlEntities={"&":"&","<":"<",">":">",'"':""","'":"'"};const entityKeys=Object.keys(escapeHtmlEntities);const ekl=entityKeys.length;function escapeEntities(value){let escapedEntity=false;let newValue="";let i;let j;if(typeof value==="object"){// cannot escape on this value
if(!value)return false;// it is falsey to return false
else if(Array.isArray(value))if(value.length===0)return false;// empty arrays are falsey
else return"[Array]";// print that it is an array with content in it, but do not print the contents
return"[Object]";// just print that it is an object, do not print the contents
}else if(value===void 0)return false;// cannot escape on this value; undefined is falsey
else if(typeof value==="boolean"||typeof value==="number")return value;// cannot escape on these values; if it's already a boolean or a number just return it
else
// loop through value to find html entities
for(i=0;i<value.length;i++){escapedEntity=false;
// loop through list of html entities to escape
for(j=0;j<ekl;j++)if(value[i]===entityKeys[j]){// alter value to show escaped html entities
newValue+=escapeHtmlEntities[entityKeys[j]];escapedEntity=true;break}if(!escapedEntity)newValue+=value[i]}return newValue}
// if an entity is double-encoded, this will fix that
function reverseDoubleEncodedEntities(str){return str.replace(/&(#\d+;|#x[0-9A-Fa-f]+;|[A-Za-z]+;)/g,"&$1")}
// match strings by a custom delimiter
function matchByDelimiter(input,openDelimiter,closeDelimiter){const stack=[];const result=[];const openLength=openDelimiter.length;const closeLength=closeDelimiter.length;for(let i=0;i<input.length;i++)if(input.substring(i,i+openLength)===openDelimiter){stack.push(i+openLength);i+=openLength-1}else if(input.substring(i,i+closeLength)===closeDelimiter){const start=stack.pop();if(stack.length===0)result.push(input.substring(start,i));i+=closeLength-1}const individualSegments=[];const regex=/{!([^{}]*)!}/g;let match;for(const segment of result){while((match=regex.exec(segment))!==null)individualSegments.push(match[1]);individualSegments.push(segment)}return individualSegments}
// gets or sets an object by dot notation, e.g. thing.nestedThing.furtherNestedThing: two arguments gets, three arguments sets
function getOrSetObjectByDotNotation(obj,dotNotation,value){if(!obj)return false;if(!dotNotation||typeof dotNotation==="boolean"||typeof dotNotation==="number")return dotNotation;if(typeof dotNotation==="string")return getOrSetObjectByDotNotation(obj,dotNotation.split("."),value);else if(dotNotation.length===1&&value!==void 0){obj[dotNotation[0]]=value;return obj[dotNotation[0]]}else if(dotNotation.length===0)return obj;else if(dotNotation.length===1){if(obj)return caseInsensitiveLookup(obj,dotNotation[0]);return false}else return getOrSetObjectByDotNotation(caseInsensitiveLookup(obj,dotNotation[0]),dotNotation.slice(1),value);function caseInsensitiveLookup(obj,key){if(key==="length")return obj.length;const lowerCaseKey=key.toLowerCase();const normalizedObj=Object.keys(obj).reduce(((acc,k)=>{acc[k.toLowerCase()]=obj[k];return acc}),{});return normalizedObj[lowerCaseKey]}}
// cheerio polyfill
function getAttribs(element){const attributes=element.attributes;const attributesObject={};for(let i=0;i<attributes.length;i++){const attr=attributes[i];attributesObject[attr.name]=attr.value}return attributesObject}
// #endregion
// #region public methods
// set params to the defaults
function setDefaultParams(){params.verbosity=1;params.templateRoot="./";params.maxPasses=1e3;params.emptyVarBehavior="display";// or 'hide'
params.includeNotFoundBehavior="display";// or 'hide'
}
// mutator method to set verbosity param. takes human-readable string argument and converts it to an integer for more efficient checks against the setting
function setVerbosity(v){switch(v){case"none":case 0:v=0;break;case"verbose":case 2:v=2;break;case"debug":case"DEBUG":case 3:v=3;break;default:// concise
v=1}params.verbosity=v}
// mutator method to set template root param; must be a string
function setTemplateRoot(v){params.templateRoot=String(v)}
// mutator method to set max passes param: the number of times the parser can iterate over the template
function setMaxPasses(v){params.maxPasses=Number(v)}
// mutator method to set empty var behavior param: whether to display {variables} that don't resolve as text ('display') or as an empty string ('hide')
function setEmptyVarBehavior(v){if(v==="hide")params.emptyVarBehavior="hide";else params.emptyVarBehavior="display"}
// mutator method to set include tag not found param: whether to display an error when an <include> tag src can't be found
function setIncludeNotFoundBehavior(v){if(v==="hide")params.includeNotFoundBehavior="hide";else params.includeNotFoundBehavior="display"}
// access templates
function getTemplates(){return templates}
// takes in a template string and outputs a function which when given data will render out html
function compile(templateString){return function(model){return render(templateString,model)}}
// mutator method to cache template
function setTemplate(file,template){templates[file]=template}
// mutator method to clear template cache entirely
function clearTemplates(){templates={}}function setCache(params){if(!templateCaches[params.template])templateCaches[params.template]={};if(params.key)templateCaches[params.template][params.key]={maxAge:params.maxAge||params.maxage,maxCaches:params.maxCaches||params.maxcaches||1e3,entries:{}};else templateCaches[params.template].none={maxAge:params.maxAge||params.maxage,markup:null,created:null}}
// delete one or more cached templates
// 1 string argument deletes the whole cache at that name for template partial caches
// 2 arguments deletes just the value at that keyVal for template partial caches
// 1 object argument assumes we're clearing whole template level cache
function clearCache(name,keyVal){if(typeof name==="string")if(keyVal)delete caches[name].entries[keyVal];else delete caches[name];else if(typeof name==="object"){const params=name;if(params.key)delete templateCaches[params.template][params.key];else delete templateCaches[params.template]}else if(params.verbosity>0)console.error("teddy: invalid params passed to clearCache.")}
// parses a template
function render(template,model,callback){
// ensure template is a string
if(typeof template!=="string"){if(params.verbosity>1)console.warn("teddy.render attempted to render a template which is not a string.");if(typeof callback==="function")return callback(null,"");else return""}
// ensure model is an object
if(typeof model!=="object"){if(params.verbosity>1)console.warn("teddy.render was passed an invalid model.");model={};// allow the template to render if an invalid model is supplied, but it will have an empty model
}
// declare vars
let dom;let renderedTemplate;model._noTeddyBlocks=[];// will store code blocks exempt from teddy parsing
// express.js support
if(model.settings&&model.settings.views&&path__WEBPACK_IMPORTED_MODULE_1__)params.templateRoot=path__WEBPACK_IMPORTED_MODULE_1__.resolve(model.settings.views);
// remove templateRoot from template name if necessary
if(template.slice(params.templateRoot.length)===params.templateRoot)template=template.replace(params.templateRoot,"");
// whole template caching
const templateCache=templateCaches[template];let cacheKey=null;let cacheKeyModelVal=null;if(templateCache){const singletonCache=templateCache.none;if(singletonCache)
// check if the timestamp exceeds max age
if(!singletonCache.created)cacheKey="none";else if(!singletonCache.maxAge&&singletonCache.maxage)
// if no max age is set, then this cache doesn't expire
if(typeof callback==="function")return callback(null,singletonCache.markup);else return singletonCache.markup;else if(singletonCache.created+(singletonCache.maxAge||singletonCache.maxage)<Date.now())cacheKey="none";// if yes re-render the template and cache it again
else
// if no return the cached markup and skip the template render
if(typeof callback==="function")return callback(null,singletonCache.markup);else return singletonCache.markup;else
// loop through its keys
for(const key in templateCache){
// if there's a model value for that key name
cacheKeyModelVal=getOrSetObjectByDotNotation(model,key);if(cacheKeyModelVal){
// loop through its entries
const templateCacheAtThisKey=templateCache[key];for(const entryKey in templateCacheAtThisKey.entries)
// if any entry keys match the model value for that key name
if(entryKey===cacheKeyModelVal){
// check if the timestamp exceeds max age
const entry=templateCacheAtThisKey.entries[entryKey];if(!templateCacheAtThisKey.maxAge&&!templateCacheAtThisKey.maxage)
// if no max age is set, then this cache doesn't expire
if(typeof callback==="function")return callback(null,entry.markup);else return entry.markup;else if(entry.created+(templateCacheAtThisKey.maxAge||templateCacheAtThisKey.maxage)<Date.now()){
// if yes re-render the template and cache it again
cacheKey=key;break}else
// if no return the cached markup and skip the template render
if(typeof callback==="function")return callback(null,entry.markup);else return entry.markup}
// this is a new model value so it needs a new entry
cacheKey=key;break}}}
// start the render
renderedTemplate=loadTemplate(template);
// replace duplicate attributes with temporary unique names before loading into cheerio
if(!browser)renderedTemplate=renderedTemplate.replace(/<([a-zA-Z][a-zA-Z0-9-]*)([^>]*)>/g,((match,tagName,attributes)=>{const attrRegex=/([a-zA-Z0-9-:._]+)(?:=(["'])(.*?)\2|([^>\s]+))?/g;const attrMap=new Map;let count=1;const processedAttributes=attributes.replace(attrRegex,((attrMatch,attrName,quote,attrValue)=>{if(attrMap.has(attrName)){const newAttrName=`${attrName}-teddyduplicate${count++}`;return attrMatch.replace(attrName,newAttrName)}else{attrMap.set(attrName,true);return attrMatch}}));return`<${tagName}${processedAttributes}>`}));const hasEscape=renderedTemplate.includes("</escape>")||renderedTemplate.includes("\x3c!--#");if(hasEscape)renderedTemplate=parseEscapes(renderedTemplate);dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);let oldTemplate;let passes=0;let parseDynamicIncludes=false;do{passes++;if(passes>params.maxPasses){if(params.verbosity>0)console.error(`teddy could not finish rendering the template because the max number of passes over the template (${params.maxPasses}) was exceeded; there may be an infinite loop in your template logic.`);break}const hasCache=renderedTemplate.includes("</cache>");const hasNoteddy=renderedTemplate.includes("</noteddy>");const hasNoparse=renderedTemplate.includes("</noparse>");const hasPre=renderedTemplate.includes("</pre>");const hasIf=renderedTemplate.includes("</if>");const hasUnless=renderedTemplate.includes("</unless>");const hasTrue=renderedTemplate.includes(" true=");const hasFalse=renderedTemplate.includes(" false=");const hasInclude=renderedTemplate.includes("</include>");const hasLoop=renderedTemplate.includes("</loop>");const hasInline=renderedTemplate.includes("</inline>");const hasSelected=renderedTemplate.includes(" selected-value=")||renderedTemplate.includes(" checked-value=");oldTemplate=renderedTemplate||"";if(passes>1){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);if(parseDynamicIncludes)dom=parseIncludes(dom,model,true)}if(hasCache)dom=replaceCacheElements(dom,model);if(hasNoteddy||hasNoparse||hasPre)dom=tagNoParseBlocks(dom,model);if(hasIf||hasUnless)dom=parseConditionals(dom,model);if(hasTrue||hasFalse)dom=parseOneLineConditionals(dom,model);if(hasInclude)dom=parseIncludes(dom,model);if(hasLoop)dom=parseLoops(dom,model);if(hasInline)dom=parseInlines(dom,model);if(hasSelected)dom=parseSelectedAttributeValues(dom,model);const cachesStillPresent=renderedTemplate.includes("</cache>");renderedTemplate=dom.html();renderedTemplate=parseVars(renderedTemplate,model);if(parseDynamicIncludes){renderedTemplate=removeTeddyComments(renderedTemplate);parseDynamicIncludes=false}if(renderedTemplate.includes('teddydeferreddynamicinclude="true"')){oldTemplate="";// reset old template to force another pass
parseDynamicIncludes=true}if(oldTemplate===renderedTemplate&&cachesStillPresent){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);dom=defineNewCaches(dom,model);renderedTemplate=dom.html()}}while(oldTemplate!==renderedTemplate);
// remove stray teddy tags if any exist
if(renderedTemplate.includes('teddydeferredonelineconditional="true"')||renderedTemplate.includes("</include>")||renderedTemplate.includes("</arg>")||renderedTemplate.includes("</if>")||renderedTemplate.includes("</unless>")||renderedTemplate.includes("</elseif>")||renderedTemplate.includes("</elseunless>")||renderedTemplate.includes("</else>")||renderedTemplate.includes("</loop>")||renderedTemplate.includes("</cache>")||renderedTemplate.includes("</pre>")){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);dom=cleanupStrayTeddyTags(dom);renderedTemplate=dom.html()}
// replace <noteddy> blocks with the hidden code
for(const blockId in model._noTeddyBlocks){renderedTemplate=renderedTemplate.replace(`<noteddy id="${blockId}"></noteddy>`,(()=>model._noTeddyBlocks[blockId]));renderedTemplate=renderedTemplate.replace(`<noteddy id="${blockId}" pre="true"></noteddy>`,(()=>model._noTeddyBlocks[blockId]))}if(browser){
// fix double-encoding html entity bug in client-side mode
renderedTemplate=reverseDoubleEncodedEntities(renderedTemplate);
// now that we're done with the render, reset data-teddy-defer-attr-src and data-teddy-defer-attr-href to native attributes
renderedTemplate=renderedTemplate.replaceAll("data-teddy-defer-attr-src","src").replaceAll("data-teddy-defer-attr-href","href")}
// cache the template
if(cacheKey==="none"){templateCaches[template].none.markup=renderedTemplate;templateCaches[template].none.created=Date.now()}else if(cacheKey){if(!templateCaches[template][cacheKey].entries[cacheKeyModelVal])templateCaches[template][cacheKey].entries[cacheKeyModelVal]={};templateCaches[template][cacheKey].entries[cacheKeyModelVal].markup=renderedTemplate;templateCaches[template][cacheKey].entries[cacheKeyModelVal].created=Date.now();
// invalidate oldest cache if we've reached max caches limit
if(Object.keys(templateCaches[template][cacheKey].entries).length>templateCaches[template][cacheKey].maxCaches){const lowestKeyVal=Object.keys(templateCaches[template][cacheKey].entries).reduce(((a,b)=>templateCaches[template][cacheKey].entries[a].created<templateCaches[template][cacheKey].entries[b].created?a:b));delete templateCaches[template][cacheKey].entries[lowestKeyVal]}}if(typeof callback==="function")return callback(null,renderedTemplate);else return renderedTemplate}
// #endregion
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__={params,caches,templateCaches,
// functions
compile,setDefaultParams,setVerbosity,setTemplateRoot,setMaxPasses,setEmptyVarBehavior,setIncludeNotFoundBehavior,getTemplates,setTemplate,clearTemplates,setCache,clearCache,render,__express:render}})();var __webpack_exports__default=__webpack_exports__["default"];export{__webpack_exports__default as default};
//# sourceMappingURL=teddy.mjs.map