@angular/ssr 20.0.0-next.4 → 20.0.0-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -454,7 +454,7 @@ function requireCssSyntaxError () {
454
454
  if (hasRequiredCssSyntaxError) return cssSyntaxError;
455
455
  hasRequiredCssSyntaxError = 1;
456
456
 
457
- let pico = requirePicocolors_browser();
457
+ let pico = /*@__PURE__*/ requirePicocolors_browser();
458
458
 
459
459
  let terminalHighlight = require$$2;
460
460
 
@@ -6140,634 +6140,96 @@ class DomHandler {
6140
6140
  }
6141
6141
  }
6142
6142
 
6143
- // Generated using scripts/write-decode-map.ts
6144
- var htmlDecodeTree = new Uint16Array(
6145
- // prettier-ignore
6146
- "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
6147
- .split("")
6148
- .map((c) => c.charCodeAt(0)));
6149
-
6150
- // Generated using scripts/write-decode-map.ts
6151
- var xmlDecodeTree = new Uint16Array(
6152
- // prettier-ignore
6153
- "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
6154
- .split("")
6155
- .map((c) => c.charCodeAt(0)));
6156
-
6157
- // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
6158
- var _a;
6159
- const decodeMap = new Map([
6160
- [0, 65533],
6161
- // C1 Unicode control character reference replacements
6162
- [128, 8364],
6163
- [130, 8218],
6164
- [131, 402],
6165
- [132, 8222],
6166
- [133, 8230],
6167
- [134, 8224],
6168
- [135, 8225],
6169
- [136, 710],
6170
- [137, 8240],
6171
- [138, 352],
6172
- [139, 8249],
6173
- [140, 338],
6174
- [142, 381],
6175
- [145, 8216],
6176
- [146, 8217],
6177
- [147, 8220],
6178
- [148, 8221],
6179
- [149, 8226],
6180
- [150, 8211],
6181
- [151, 8212],
6182
- [152, 732],
6183
- [153, 8482],
6184
- [154, 353],
6185
- [155, 8250],
6186
- [156, 339],
6187
- [158, 382],
6188
- [159, 376],
6143
+ const xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
6144
+ const xmlCodeMap = new Map([
6145
+ [34, "&quot;"],
6146
+ [38, "&amp;"],
6147
+ [39, "&apos;"],
6148
+ [60, "&lt;"],
6149
+ [62, "&gt;"],
6189
6150
  ]);
6151
+ // For compatibility with node < 4, we wrap `codePointAt`
6152
+ const getCodePoint =
6153
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
6154
+ String.prototype.codePointAt != null
6155
+ ? (str, index) => str.codePointAt(index)
6156
+ : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
6157
+ (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
6158
+ ? (c.charCodeAt(index) - 0xd800) * 0x400 +
6159
+ c.charCodeAt(index + 1) -
6160
+ 0xdc00 +
6161
+ 0x10000
6162
+ : c.charCodeAt(index);
6190
6163
  /**
6191
- * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
6164
+ * Encodes all non-ASCII characters, as well as characters not valid in XML
6165
+ * documents using XML entities.
6166
+ *
6167
+ * If a character has no equivalent entity, a
6168
+ * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
6192
6169
  */
6193
- const fromCodePoint =
6194
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
6195
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
6196
- let output = "";
6197
- if (codePoint > 0xffff) {
6198
- codePoint -= 0x10000;
6199
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
6200
- codePoint = 0xdc00 | (codePoint & 0x3ff);
6170
+ function encodeXML(str) {
6171
+ let ret = "";
6172
+ let lastIdx = 0;
6173
+ let match;
6174
+ while ((match = xmlReplacer.exec(str)) !== null) {
6175
+ const i = match.index;
6176
+ const char = str.charCodeAt(i);
6177
+ const next = xmlCodeMap.get(char);
6178
+ if (next !== undefined) {
6179
+ ret += str.substring(lastIdx, i) + next;
6180
+ lastIdx = i + 1;
6181
+ }
6182
+ else {
6183
+ ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;
6184
+ // Increase by 1 if we have a surrogate pair
6185
+ lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
6186
+ }
6201
6187
  }
6202
- output += String.fromCharCode(codePoint);
6203
- return output;
6204
- };
6188
+ return ret + str.substr(lastIdx);
6189
+ }
6205
6190
  /**
6206
- * Replace the given code point with a replacement character if it is a
6207
- * surrogate or is outside the valid range. Otherwise return the code
6208
- * point unchanged.
6191
+ * Creates a function that escapes all characters matched by the given regular
6192
+ * expression using the given map of characters to escape to their entities.
6193
+ *
6194
+ * @param regex Regular expression to match characters to escape.
6195
+ * @param map Map of characters to escape to their entities.
6196
+ *
6197
+ * @returns Function that escapes all characters matched by the given regular
6198
+ * expression using the given map of characters to escape to their entities.
6209
6199
  */
6210
- function replaceCodePoint(codePoint) {
6211
- var _a;
6212
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
6213
- return 0xfffd;
6214
- }
6215
- return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
6216
- }
6217
-
6218
- var CharCodes$1;
6219
- (function (CharCodes) {
6220
- CharCodes[CharCodes["NUM"] = 35] = "NUM";
6221
- CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
6222
- CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
6223
- CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
6224
- CharCodes[CharCodes["NINE"] = 57] = "NINE";
6225
- CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
6226
- CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
6227
- CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
6228
- CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
6229
- CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
6230
- CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
6231
- CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
6232
- })(CharCodes$1 || (CharCodes$1 = {}));
6233
- /** Bit that needs to be set to convert an upper case ASCII character to lower case */
6234
- const TO_LOWER_BIT = 0b100000;
6235
- var BinTrieFlags;
6236
- (function (BinTrieFlags) {
6237
- BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
6238
- BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
6239
- BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
6240
- })(BinTrieFlags || (BinTrieFlags = {}));
6241
- function isNumber(code) {
6242
- return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
6243
- }
6244
- function isHexadecimalCharacter(code) {
6245
- return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_F) ||
6246
- (code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_F));
6247
- }
6248
- function isAsciiAlphaNumeric(code) {
6249
- return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_Z) ||
6250
- (code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_Z) ||
6251
- isNumber(code));
6200
+ function getEscaper(regex, map) {
6201
+ return function escape(data) {
6202
+ let match;
6203
+ let lastIdx = 0;
6204
+ let result = "";
6205
+ while ((match = regex.exec(data))) {
6206
+ if (lastIdx !== match.index) {
6207
+ result += data.substring(lastIdx, match.index);
6208
+ }
6209
+ // We know that this character will be in the map.
6210
+ result += map.get(match[0].charCodeAt(0));
6211
+ // Every match will be of length 1
6212
+ lastIdx = match.index + 1;
6213
+ }
6214
+ return result + data.substring(lastIdx);
6215
+ };
6252
6216
  }
6253
6217
  /**
6254
- * Checks if the given character is a valid end character for an entity in an attribute.
6218
+ * Encodes all characters that have to be escaped in HTML attributes,
6219
+ * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6255
6220
  *
6256
- * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
6257
- * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
6221
+ * @param data String to escape.
6258
6222
  */
6259
- function isEntityInAttributeInvalidEnd(code) {
6260
- return code === CharCodes$1.EQUALS || isAsciiAlphaNumeric(code);
6261
- }
6262
- var EntityDecoderState;
6263
- (function (EntityDecoderState) {
6264
- EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
6265
- EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
6266
- EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
6267
- EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
6268
- EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
6269
- })(EntityDecoderState || (EntityDecoderState = {}));
6270
- var DecodingMode;
6271
- (function (DecodingMode) {
6272
- /** Entities in text nodes that can end with any character. */
6273
- DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
6274
- /** Only allow entities terminated with a semicolon. */
6275
- DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
6276
- /** Entities in attributes have limitations on ending characters. */
6277
- DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
6278
- })(DecodingMode || (DecodingMode = {}));
6223
+ const escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
6224
+ [34, "&quot;"],
6225
+ [38, "&amp;"],
6226
+ [160, "&nbsp;"],
6227
+ ]));
6279
6228
  /**
6280
- * Token decoder with support of writing partial entities.
6281
- */
6282
- class EntityDecoder {
6283
- constructor(
6284
- /** The tree used to decode entities. */
6285
- decodeTree,
6286
- /**
6287
- * The function that is called when a codepoint is decoded.
6288
- *
6289
- * For multi-byte named entities, this will be called multiple times,
6290
- * with the second codepoint, and the same `consumed` value.
6291
- *
6292
- * @param codepoint The decoded codepoint.
6293
- * @param consumed The number of bytes consumed by the decoder.
6294
- */
6295
- emitCodePoint,
6296
- /** An object that is used to produce errors. */
6297
- errors) {
6298
- this.decodeTree = decodeTree;
6299
- this.emitCodePoint = emitCodePoint;
6300
- this.errors = errors;
6301
- /** The current state of the decoder. */
6302
- this.state = EntityDecoderState.EntityStart;
6303
- /** Characters that were consumed while parsing an entity. */
6304
- this.consumed = 1;
6305
- /**
6306
- * The result of the entity.
6307
- *
6308
- * Either the result index of a numeric entity, or the codepoint of a
6309
- * numeric entity.
6310
- */
6311
- this.result = 0;
6312
- /** The current index in the decode tree. */
6313
- this.treeIndex = 0;
6314
- /** The number of characters that were consumed in excess. */
6315
- this.excess = 1;
6316
- /** The mode in which the decoder is operating. */
6317
- this.decodeMode = DecodingMode.Strict;
6318
- }
6319
- /** Resets the instance to make it reusable. */
6320
- startEntity(decodeMode) {
6321
- this.decodeMode = decodeMode;
6322
- this.state = EntityDecoderState.EntityStart;
6323
- this.result = 0;
6324
- this.treeIndex = 0;
6325
- this.excess = 1;
6326
- this.consumed = 1;
6327
- }
6328
- /**
6329
- * Write an entity to the decoder. This can be called multiple times with partial entities.
6330
- * If the entity is incomplete, the decoder will return -1.
6331
- *
6332
- * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
6333
- * entity is incomplete, and resume when the next string is written.
6334
- *
6335
- * @param string The string containing the entity (or a continuation of the entity).
6336
- * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
6337
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
6338
- */
6339
- write(str, offset) {
6340
- switch (this.state) {
6341
- case EntityDecoderState.EntityStart: {
6342
- if (str.charCodeAt(offset) === CharCodes$1.NUM) {
6343
- this.state = EntityDecoderState.NumericStart;
6344
- this.consumed += 1;
6345
- return this.stateNumericStart(str, offset + 1);
6346
- }
6347
- this.state = EntityDecoderState.NamedEntity;
6348
- return this.stateNamedEntity(str, offset);
6349
- }
6350
- case EntityDecoderState.NumericStart: {
6351
- return this.stateNumericStart(str, offset);
6352
- }
6353
- case EntityDecoderState.NumericDecimal: {
6354
- return this.stateNumericDecimal(str, offset);
6355
- }
6356
- case EntityDecoderState.NumericHex: {
6357
- return this.stateNumericHex(str, offset);
6358
- }
6359
- case EntityDecoderState.NamedEntity: {
6360
- return this.stateNamedEntity(str, offset);
6361
- }
6362
- }
6363
- }
6364
- /**
6365
- * Switches between the numeric decimal and hexadecimal states.
6366
- *
6367
- * Equivalent to the `Numeric character reference state` in the HTML spec.
6368
- *
6369
- * @param str The string containing the entity (or a continuation of the entity).
6370
- * @param offset The current offset.
6371
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
6372
- */
6373
- stateNumericStart(str, offset) {
6374
- if (offset >= str.length) {
6375
- return -1;
6376
- }
6377
- if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes$1.LOWER_X) {
6378
- this.state = EntityDecoderState.NumericHex;
6379
- this.consumed += 1;
6380
- return this.stateNumericHex(str, offset + 1);
6381
- }
6382
- this.state = EntityDecoderState.NumericDecimal;
6383
- return this.stateNumericDecimal(str, offset);
6384
- }
6385
- addToNumericResult(str, start, end, base) {
6386
- if (start !== end) {
6387
- const digitCount = end - start;
6388
- this.result =
6389
- this.result * Math.pow(base, digitCount) +
6390
- parseInt(str.substr(start, digitCount), base);
6391
- this.consumed += digitCount;
6392
- }
6393
- }
6394
- /**
6395
- * Parses a hexadecimal numeric entity.
6396
- *
6397
- * Equivalent to the `Hexademical character reference state` in the HTML spec.
6398
- *
6399
- * @param str The string containing the entity (or a continuation of the entity).
6400
- * @param offset The current offset.
6401
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
6402
- */
6403
- stateNumericHex(str, offset) {
6404
- const startIdx = offset;
6405
- while (offset < str.length) {
6406
- const char = str.charCodeAt(offset);
6407
- if (isNumber(char) || isHexadecimalCharacter(char)) {
6408
- offset += 1;
6409
- }
6410
- else {
6411
- this.addToNumericResult(str, startIdx, offset, 16);
6412
- return this.emitNumericEntity(char, 3);
6413
- }
6414
- }
6415
- this.addToNumericResult(str, startIdx, offset, 16);
6416
- return -1;
6417
- }
6418
- /**
6419
- * Parses a decimal numeric entity.
6420
- *
6421
- * Equivalent to the `Decimal character reference state` in the HTML spec.
6422
- *
6423
- * @param str The string containing the entity (or a continuation of the entity).
6424
- * @param offset The current offset.
6425
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
6426
- */
6427
- stateNumericDecimal(str, offset) {
6428
- const startIdx = offset;
6429
- while (offset < str.length) {
6430
- const char = str.charCodeAt(offset);
6431
- if (isNumber(char)) {
6432
- offset += 1;
6433
- }
6434
- else {
6435
- this.addToNumericResult(str, startIdx, offset, 10);
6436
- return this.emitNumericEntity(char, 2);
6437
- }
6438
- }
6439
- this.addToNumericResult(str, startIdx, offset, 10);
6440
- return -1;
6441
- }
6442
- /**
6443
- * Validate and emit a numeric entity.
6444
- *
6445
- * Implements the logic from the `Hexademical character reference start
6446
- * state` and `Numeric character reference end state` in the HTML spec.
6447
- *
6448
- * @param lastCp The last code point of the entity. Used to see if the
6449
- * entity was terminated with a semicolon.
6450
- * @param expectedLength The minimum number of characters that should be
6451
- * consumed. Used to validate that at least one digit
6452
- * was consumed.
6453
- * @returns The number of characters that were consumed.
6454
- */
6455
- emitNumericEntity(lastCp, expectedLength) {
6456
- var _a;
6457
- // Ensure we consumed at least one digit.
6458
- if (this.consumed <= expectedLength) {
6459
- (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
6460
- return 0;
6461
- }
6462
- // Figure out if this is a legit end of the entity
6463
- if (lastCp === CharCodes$1.SEMI) {
6464
- this.consumed += 1;
6465
- }
6466
- else if (this.decodeMode === DecodingMode.Strict) {
6467
- return 0;
6468
- }
6469
- this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
6470
- if (this.errors) {
6471
- if (lastCp !== CharCodes$1.SEMI) {
6472
- this.errors.missingSemicolonAfterCharacterReference();
6473
- }
6474
- this.errors.validateNumericCharacterReference(this.result);
6475
- }
6476
- return this.consumed;
6477
- }
6478
- /**
6479
- * Parses a named entity.
6480
- *
6481
- * Equivalent to the `Named character reference state` in the HTML spec.
6482
- *
6483
- * @param str The string containing the entity (or a continuation of the entity).
6484
- * @param offset The current offset.
6485
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
6486
- */
6487
- stateNamedEntity(str, offset) {
6488
- const { decodeTree } = this;
6489
- let current = decodeTree[this.treeIndex];
6490
- // The mask is the number of bytes of the value, including the current byte.
6491
- let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
6492
- for (; offset < str.length; offset++, this.excess++) {
6493
- const char = str.charCodeAt(offset);
6494
- this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
6495
- if (this.treeIndex < 0) {
6496
- return this.result === 0 ||
6497
- // If we are parsing an attribute
6498
- (this.decodeMode === DecodingMode.Attribute &&
6499
- // We shouldn't have consumed any characters after the entity,
6500
- (valueLength === 0 ||
6501
- // And there should be no invalid characters.
6502
- isEntityInAttributeInvalidEnd(char)))
6503
- ? 0
6504
- : this.emitNotTerminatedNamedEntity();
6505
- }
6506
- current = decodeTree[this.treeIndex];
6507
- valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
6508
- // If the branch is a value, store it and continue
6509
- if (valueLength !== 0) {
6510
- // If the entity is terminated by a semicolon, we are done.
6511
- if (char === CharCodes$1.SEMI) {
6512
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
6513
- }
6514
- // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
6515
- if (this.decodeMode !== DecodingMode.Strict) {
6516
- this.result = this.treeIndex;
6517
- this.consumed += this.excess;
6518
- this.excess = 0;
6519
- }
6520
- }
6521
- }
6522
- return -1;
6523
- }
6524
- /**
6525
- * Emit a named entity that was not terminated with a semicolon.
6526
- *
6527
- * @returns The number of characters consumed.
6528
- */
6529
- emitNotTerminatedNamedEntity() {
6530
- var _a;
6531
- const { result, decodeTree } = this;
6532
- const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
6533
- this.emitNamedEntityData(result, valueLength, this.consumed);
6534
- (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
6535
- return this.consumed;
6536
- }
6537
- /**
6538
- * Emit a named entity.
6539
- *
6540
- * @param result The index of the entity in the decode tree.
6541
- * @param valueLength The number of bytes in the entity.
6542
- * @param consumed The number of characters consumed.
6543
- *
6544
- * @returns The number of characters consumed.
6545
- */
6546
- emitNamedEntityData(result, valueLength, consumed) {
6547
- const { decodeTree } = this;
6548
- this.emitCodePoint(valueLength === 1
6549
- ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
6550
- : decodeTree[result + 1], consumed);
6551
- if (valueLength === 3) {
6552
- // For multi-byte values, we need to emit the second byte.
6553
- this.emitCodePoint(decodeTree[result + 2], consumed);
6554
- }
6555
- return consumed;
6556
- }
6557
- /**
6558
- * Signal to the parser that the end of the input was reached.
6559
- *
6560
- * Remaining data will be emitted and relevant errors will be produced.
6561
- *
6562
- * @returns The number of characters consumed.
6563
- */
6564
- end() {
6565
- var _a;
6566
- switch (this.state) {
6567
- case EntityDecoderState.NamedEntity: {
6568
- // Emit a named entity if we have one.
6569
- return this.result !== 0 &&
6570
- (this.decodeMode !== DecodingMode.Attribute ||
6571
- this.result === this.treeIndex)
6572
- ? this.emitNotTerminatedNamedEntity()
6573
- : 0;
6574
- }
6575
- // Otherwise, emit a numeric entity if we have one.
6576
- case EntityDecoderState.NumericDecimal: {
6577
- return this.emitNumericEntity(0, 2);
6578
- }
6579
- case EntityDecoderState.NumericHex: {
6580
- return this.emitNumericEntity(0, 3);
6581
- }
6582
- case EntityDecoderState.NumericStart: {
6583
- (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
6584
- return 0;
6585
- }
6586
- case EntityDecoderState.EntityStart: {
6587
- // Return 0 if we have no entity.
6588
- return 0;
6589
- }
6590
- }
6591
- }
6592
- }
6593
- /**
6594
- * Creates a function that decodes entities in a string.
6595
- *
6596
- * @param decodeTree The decode tree.
6597
- * @returns A function that decodes entities in a string.
6598
- */
6599
- function getDecoder(decodeTree) {
6600
- let ret = "";
6601
- const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));
6602
- return function decodeWithTrie(str, decodeMode) {
6603
- let lastIndex = 0;
6604
- let offset = 0;
6605
- while ((offset = str.indexOf("&", offset)) >= 0) {
6606
- ret += str.slice(lastIndex, offset);
6607
- decoder.startEntity(decodeMode);
6608
- const len = decoder.write(str,
6609
- // Skip the "&"
6610
- offset + 1);
6611
- if (len < 0) {
6612
- lastIndex = offset + decoder.end();
6613
- break;
6614
- }
6615
- lastIndex = offset + len;
6616
- // If `len` is 0, skip the current `&` and continue.
6617
- offset = len === 0 ? lastIndex + 1 : lastIndex;
6618
- }
6619
- const result = ret + str.slice(lastIndex);
6620
- // Make sure we don't keep a reference to the final string.
6621
- ret = "";
6622
- return result;
6623
- };
6624
- }
6625
- /**
6626
- * Determines the branch of the current node that is taken given the current
6627
- * character. This function is used to traverse the trie.
6628
- *
6629
- * @param decodeTree The trie.
6630
- * @param current The current node.
6631
- * @param nodeIdx The index right after the current node and its value.
6632
- * @param char The current character.
6633
- * @returns The index of the next node, or -1 if no branch is taken.
6634
- */
6635
- function determineBranch(decodeTree, current, nodeIdx, char) {
6636
- const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
6637
- const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
6638
- // Case 1: Single branch encoded in jump offset
6639
- if (branchCount === 0) {
6640
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
6641
- }
6642
- // Case 2: Multiple branches encoded in jump table
6643
- if (jumpOffset) {
6644
- const value = char - jumpOffset;
6645
- return value < 0 || value >= branchCount
6646
- ? -1
6647
- : decodeTree[nodeIdx + value] - 1;
6648
- }
6649
- // Case 3: Multiple branches encoded in dictionary
6650
- // Binary search for the character.
6651
- let lo = nodeIdx;
6652
- let hi = lo + branchCount - 1;
6653
- while (lo <= hi) {
6654
- const mid = (lo + hi) >>> 1;
6655
- const midVal = decodeTree[mid];
6656
- if (midVal < char) {
6657
- lo = mid + 1;
6658
- }
6659
- else if (midVal > char) {
6660
- hi = mid - 1;
6661
- }
6662
- else {
6663
- return decodeTree[mid + branchCount];
6664
- }
6665
- }
6666
- return -1;
6667
- }
6668
- getDecoder(htmlDecodeTree);
6669
- getDecoder(xmlDecodeTree);
6670
-
6671
- // Generated using scripts/write-encode-map.ts
6672
- function restoreDiff(arr) {
6673
- for (let i = 1; i < arr.length; i++) {
6674
- arr[i][0] += arr[i - 1][0] + 1;
6675
- }
6676
- return arr;
6677
- }
6678
- // prettier-ignore
6679
- new Map(/* #__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* #__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* #__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
6680
-
6681
- const xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
6682
- const xmlCodeMap = new Map([
6683
- [34, "&quot;"],
6684
- [38, "&amp;"],
6685
- [39, "&apos;"],
6686
- [60, "&lt;"],
6687
- [62, "&gt;"],
6688
- ]);
6689
- // For compatibility with node < 4, we wrap `codePointAt`
6690
- const getCodePoint =
6691
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
6692
- String.prototype.codePointAt != null
6693
- ? (str, index) => str.codePointAt(index)
6694
- : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
6695
- (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
6696
- ? (c.charCodeAt(index) - 0xd800) * 0x400 +
6697
- c.charCodeAt(index + 1) -
6698
- 0xdc00 +
6699
- 0x10000
6700
- : c.charCodeAt(index);
6701
- /**
6702
- * Encodes all non-ASCII characters, as well as characters not valid in XML
6703
- * documents using XML entities.
6704
- *
6705
- * If a character has no equivalent entity, a
6706
- * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
6707
- */
6708
- function encodeXML(str) {
6709
- let ret = "";
6710
- let lastIdx = 0;
6711
- let match;
6712
- while ((match = xmlReplacer.exec(str)) !== null) {
6713
- const i = match.index;
6714
- const char = str.charCodeAt(i);
6715
- const next = xmlCodeMap.get(char);
6716
- if (next !== undefined) {
6717
- ret += str.substring(lastIdx, i) + next;
6718
- lastIdx = i + 1;
6719
- }
6720
- else {
6721
- ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;
6722
- // Increase by 1 if we have a surrogate pair
6723
- lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
6724
- }
6725
- }
6726
- return ret + str.substr(lastIdx);
6727
- }
6728
- /**
6729
- * Creates a function that escapes all characters matched by the given regular
6730
- * expression using the given map of characters to escape to their entities.
6731
- *
6732
- * @param regex Regular expression to match characters to escape.
6733
- * @param map Map of characters to escape to their entities.
6734
- *
6735
- * @returns Function that escapes all characters matched by the given regular
6736
- * expression using the given map of characters to escape to their entities.
6737
- */
6738
- function getEscaper(regex, map) {
6739
- return function escape(data) {
6740
- let match;
6741
- let lastIdx = 0;
6742
- let result = "";
6743
- while ((match = regex.exec(data))) {
6744
- if (lastIdx !== match.index) {
6745
- result += data.substring(lastIdx, match.index);
6746
- }
6747
- // We know that this character will be in the map.
6748
- result += map.get(match[0].charCodeAt(0));
6749
- // Every match will be of length 1
6750
- lastIdx = match.index + 1;
6751
- }
6752
- return result + data.substring(lastIdx);
6753
- };
6754
- }
6755
- /**
6756
- * Encodes all characters that have to be escaped in HTML attributes,
6757
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6758
- *
6759
- * @param data String to escape.
6760
- */
6761
- const escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
6762
- [34, "&quot;"],
6763
- [38, "&amp;"],
6764
- [160, "&nbsp;"],
6765
- ]));
6766
- /**
6767
- * Encodes all characters that have to be escaped in HTML text,
6768
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6769
- *
6770
- * @param data String to escape.
6229
+ * Encodes all characters that have to be escaped in HTML text,
6230
+ * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6231
+ *
6232
+ * @param data String to escape.
6771
6233
  */
6772
6234
  const escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
6773
6235
  [38, "&amp;"],
@@ -6776,44 +6238,6 @@ const escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
6776
6238
  [160, "&nbsp;"],
6777
6239
  ]));
6778
6240
 
6779
- /** The level of entities to support. */
6780
- var EntityLevel;
6781
- (function (EntityLevel) {
6782
- /** Support only XML entities. */
6783
- EntityLevel[EntityLevel["XML"] = 0] = "XML";
6784
- /** Support HTML entities, which are a superset of XML entities. */
6785
- EntityLevel[EntityLevel["HTML"] = 1] = "HTML";
6786
- })(EntityLevel || (EntityLevel = {}));
6787
- var EncodingMode;
6788
- (function (EncodingMode) {
6789
- /**
6790
- * The output is UTF-8 encoded. Only characters that need escaping within
6791
- * XML will be escaped.
6792
- */
6793
- EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8";
6794
- /**
6795
- * The output consists only of ASCII characters. Characters that need
6796
- * escaping within HTML, and characters that aren't ASCII characters will
6797
- * be escaped.
6798
- */
6799
- EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII";
6800
- /**
6801
- * Encode all characters that have an equivalent entity, as well as all
6802
- * characters that are not ASCII characters.
6803
- */
6804
- EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive";
6805
- /**
6806
- * Encode all characters that have to be escaped in HTML attributes,
6807
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6808
- */
6809
- EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute";
6810
- /**
6811
- * Encode all characters that have to be escaped in HTML text,
6812
- * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
6813
- */
6814
- EncodingMode[EncodingMode["Text"] = 4] = "Text";
6815
- })(EncodingMode || (EncodingMode = {}));
6816
-
6817
6241
  const elementNames = new Map([
6818
6242
  "altGlyph",
6819
6243
  "altGlyphDef",
@@ -8539,26 +7963,6 @@ function parseSelector(subselects, selector, selectorIndex) {
8539
7963
  return selectorIndex;
8540
7964
  }
8541
7965
 
8542
- const attribValChars = ["\\", '"'];
8543
- const pseudoValChars = [...attribValChars, "(", ")"];
8544
- new Set(attribValChars.map((c) => c.charCodeAt(0)));
8545
- new Set(pseudoValChars.map((c) => c.charCodeAt(0)));
8546
- new Set([
8547
- ...pseudoValChars,
8548
- "~",
8549
- "^",
8550
- "$",
8551
- "*",
8552
- "+",
8553
- "!",
8554
- "|",
8555
- ":",
8556
- "[",
8557
- "]",
8558
- " ",
8559
- ".",
8560
- ].map((c) => c.charCodeAt(0)));
8561
-
8562
7966
  const procedure = new Map([
8563
7967
  [SelectorType.Universal, 50],
8564
7968
  [SelectorType.Tag, 30],
@@ -9129,581 +8533,1076 @@ const filters = {
9129
8533
  // NOTE: can't be unpacked, as :has uses this for side-effects
9130
8534
  return (elem) => equals(context[0], elem) && next(elem);
9131
8535
  }
9132
- return (elem) => context.includes(elem) && next(elem);
8536
+ return (elem) => context.includes(elem) && next(elem);
8537
+ },
8538
+ hover: dynamicStatePseudo("isHovered"),
8539
+ visited: dynamicStatePseudo("isVisited"),
8540
+ active: dynamicStatePseudo("isActive"),
8541
+ };
8542
+ /**
8543
+ * Dynamic state pseudos. These depend on optional Adapter methods.
8544
+ *
8545
+ * @param name The name of the adapter method to call.
8546
+ * @returns Pseudo for the `filters` object.
8547
+ */
8548
+ function dynamicStatePseudo(name) {
8549
+ return function dynamicPseudo(next, _rule, { adapter }) {
8550
+ const func = adapter[name];
8551
+ if (typeof func !== "function") {
8552
+ return boolbase.falseFunc;
8553
+ }
8554
+ return function active(elem) {
8555
+ return func(elem) && next(elem);
8556
+ };
8557
+ };
8558
+ }
8559
+
8560
+ // While filters are precompiled, pseudos get called when they are needed
8561
+ const pseudos = {
8562
+ empty(elem, { adapter }) {
8563
+ return !adapter.getChildren(elem).some((elem) =>
8564
+ // FIXME: `getText` call is potentially expensive.
8565
+ adapter.isTag(elem) || adapter.getText(elem) !== "");
8566
+ },
8567
+ "first-child"(elem, { adapter, equals }) {
8568
+ if (adapter.prevElementSibling) {
8569
+ return adapter.prevElementSibling(elem) == null;
8570
+ }
8571
+ const firstChild = adapter
8572
+ .getSiblings(elem)
8573
+ .find((elem) => adapter.isTag(elem));
8574
+ return firstChild != null && equals(elem, firstChild);
8575
+ },
8576
+ "last-child"(elem, { adapter, equals }) {
8577
+ const siblings = adapter.getSiblings(elem);
8578
+ for (let i = siblings.length - 1; i >= 0; i--) {
8579
+ if (equals(elem, siblings[i]))
8580
+ return true;
8581
+ if (adapter.isTag(siblings[i]))
8582
+ break;
8583
+ }
8584
+ return false;
8585
+ },
8586
+ "first-of-type"(elem, { adapter, equals }) {
8587
+ const siblings = adapter.getSiblings(elem);
8588
+ const elemName = adapter.getName(elem);
8589
+ for (let i = 0; i < siblings.length; i++) {
8590
+ const currentSibling = siblings[i];
8591
+ if (equals(elem, currentSibling))
8592
+ return true;
8593
+ if (adapter.isTag(currentSibling) &&
8594
+ adapter.getName(currentSibling) === elemName) {
8595
+ break;
8596
+ }
8597
+ }
8598
+ return false;
8599
+ },
8600
+ "last-of-type"(elem, { adapter, equals }) {
8601
+ const siblings = adapter.getSiblings(elem);
8602
+ const elemName = adapter.getName(elem);
8603
+ for (let i = siblings.length - 1; i >= 0; i--) {
8604
+ const currentSibling = siblings[i];
8605
+ if (equals(elem, currentSibling))
8606
+ return true;
8607
+ if (adapter.isTag(currentSibling) &&
8608
+ adapter.getName(currentSibling) === elemName) {
8609
+ break;
8610
+ }
8611
+ }
8612
+ return false;
8613
+ },
8614
+ "only-of-type"(elem, { adapter, equals }) {
8615
+ const elemName = adapter.getName(elem);
8616
+ return adapter
8617
+ .getSiblings(elem)
8618
+ .every((sibling) => equals(elem, sibling) ||
8619
+ !adapter.isTag(sibling) ||
8620
+ adapter.getName(sibling) !== elemName);
8621
+ },
8622
+ "only-child"(elem, { adapter, equals }) {
8623
+ return adapter
8624
+ .getSiblings(elem)
8625
+ .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));
8626
+ },
8627
+ };
8628
+ function verifyPseudoArgs(func, name, subselect, argIndex) {
8629
+ if (subselect === null) {
8630
+ if (func.length > argIndex) {
8631
+ throw new Error(`Pseudo-class :${name} requires an argument`);
8632
+ }
8633
+ }
8634
+ else if (func.length === argIndex) {
8635
+ throw new Error(`Pseudo-class :${name} doesn't have any arguments`);
8636
+ }
8637
+ }
8638
+
8639
+ /**
8640
+ * Aliases are pseudos that are expressed as selectors.
8641
+ */
8642
+ const aliases = {
8643
+ // Links
8644
+ "any-link": ":is(a, area, link)[href]",
8645
+ link: ":any-link:not(:visited)",
8646
+ // Forms
8647
+ // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
8648
+ disabled: `:is(
8649
+ :is(button, input, select, textarea, optgroup, option)[disabled],
8650
+ optgroup[disabled] > option,
8651
+ fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)
8652
+ )`,
8653
+ enabled: ":not(:disabled)",
8654
+ checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
8655
+ required: ":is(input, select, textarea)[required]",
8656
+ optional: ":is(input, select, textarea):not([required])",
8657
+ // JQuery extensions
8658
+ // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
8659
+ selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
8660
+ checkbox: "[type=checkbox]",
8661
+ file: "[type=file]",
8662
+ password: "[type=password]",
8663
+ radio: "[type=radio]",
8664
+ reset: "[type=reset]",
8665
+ image: "[type=image]",
8666
+ submit: "[type=submit]",
8667
+ parent: ":not(:empty)",
8668
+ header: ":is(h1, h2, h3, h4, h5, h6)",
8669
+ button: ":is(button, input[type=button])",
8670
+ input: ":is(input, textarea, select, button)",
8671
+ text: "input:is(:not([type!='']), [type=text])",
8672
+ };
8673
+
8674
+ /** Used as a placeholder for :has. Will be replaced with the actual element. */
8675
+ const PLACEHOLDER_ELEMENT = {};
8676
+ function ensureIsTag(next, adapter) {
8677
+ if (next === boolbase.falseFunc)
8678
+ return boolbase.falseFunc;
8679
+ return (elem) => adapter.isTag(elem) && next(elem);
8680
+ }
8681
+ function getNextSiblings(elem, adapter) {
8682
+ const siblings = adapter.getSiblings(elem);
8683
+ if (siblings.length <= 1)
8684
+ return [];
8685
+ const elemIndex = siblings.indexOf(elem);
8686
+ if (elemIndex < 0 || elemIndex === siblings.length - 1)
8687
+ return [];
8688
+ return siblings.slice(elemIndex + 1).filter(adapter.isTag);
8689
+ }
8690
+ function copyOptions(options) {
8691
+ // Not copied: context, rootFunc
8692
+ return {
8693
+ xmlMode: !!options.xmlMode,
8694
+ lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,
8695
+ lowerCaseTags: !!options.lowerCaseTags,
8696
+ quirksMode: !!options.quirksMode,
8697
+ cacheResults: !!options.cacheResults,
8698
+ pseudos: options.pseudos,
8699
+ adapter: options.adapter,
8700
+ equals: options.equals,
8701
+ };
8702
+ }
8703
+ const is = (next, token, options, context, compileToken) => {
8704
+ const func = compileToken(token, copyOptions(options), context);
8705
+ return func === boolbase.trueFunc
8706
+ ? next
8707
+ : func === boolbase.falseFunc
8708
+ ? boolbase.falseFunc
8709
+ : (elem) => func(elem) && next(elem);
8710
+ };
8711
+ /*
8712
+ * :not, :has, :is, :matches and :where have to compile selectors
8713
+ * doing this in src/pseudos.ts would lead to circular dependencies,
8714
+ * so we add them here
8715
+ */
8716
+ const subselects = {
8717
+ is,
8718
+ /**
8719
+ * `:matches` and `:where` are aliases for `:is`.
8720
+ */
8721
+ matches: is,
8722
+ where: is,
8723
+ not(next, token, options, context, compileToken) {
8724
+ const func = compileToken(token, copyOptions(options), context);
8725
+ return func === boolbase.falseFunc
8726
+ ? next
8727
+ : func === boolbase.trueFunc
8728
+ ? boolbase.falseFunc
8729
+ : (elem) => !func(elem) && next(elem);
8730
+ },
8731
+ has(next, subselect, options, _context, compileToken) {
8732
+ const { adapter } = options;
8733
+ const opts = copyOptions(options);
8734
+ opts.relativeSelector = true;
8735
+ const context = subselect.some((s) => s.some(isTraversal))
8736
+ ? // Used as a placeholder. Will be replaced with the actual element.
8737
+ [PLACEHOLDER_ELEMENT]
8738
+ : undefined;
8739
+ const compiled = compileToken(subselect, opts, context);
8740
+ if (compiled === boolbase.falseFunc)
8741
+ return boolbase.falseFunc;
8742
+ const hasElement = ensureIsTag(compiled, adapter);
8743
+ // If `compiled` is `trueFunc`, we can skip this.
8744
+ if (context && compiled !== boolbase.trueFunc) {
8745
+ /*
8746
+ * `shouldTestNextSiblings` will only be true if the query starts with
8747
+ * a traversal (sibling or adjacent). That means we will always have a context.
8748
+ */
8749
+ const { shouldTestNextSiblings = false } = compiled;
8750
+ return (elem) => {
8751
+ if (!next(elem))
8752
+ return false;
8753
+ context[0] = elem;
8754
+ const childs = adapter.getChildren(elem);
8755
+ const nextElements = shouldTestNextSiblings
8756
+ ? [...childs, ...getNextSiblings(elem, adapter)]
8757
+ : childs;
8758
+ return adapter.existsOne(hasElement, nextElements);
8759
+ };
8760
+ }
8761
+ return (elem) => next(elem) &&
8762
+ adapter.existsOne(hasElement, adapter.getChildren(elem));
9133
8763
  },
9134
- hover: dynamicStatePseudo("isHovered"),
9135
- visited: dynamicStatePseudo("isVisited"),
9136
- active: dynamicStatePseudo("isActive"),
9137
8764
  };
9138
- /**
9139
- * Dynamic state pseudos. These depend on optional Adapter methods.
9140
- *
9141
- * @param name The name of the adapter method to call.
9142
- * @returns Pseudo for the `filters` object.
9143
- */
9144
- function dynamicStatePseudo(name) {
9145
- return function dynamicPseudo(next, _rule, { adapter }) {
9146
- const func = adapter[name];
9147
- if (typeof func !== "function") {
9148
- return boolbase.falseFunc;
8765
+
8766
+ function compilePseudoSelector(next, selector, options, context, compileToken) {
8767
+ var _a;
8768
+ const { name, data } = selector;
8769
+ if (Array.isArray(data)) {
8770
+ if (!(name in subselects)) {
8771
+ throw new Error(`Unknown pseudo-class :${name}(${data})`);
9149
8772
  }
9150
- return function active(elem) {
9151
- return func(elem) && next(elem);
9152
- };
9153
- };
8773
+ return subselects[name](next, data, options, context, compileToken);
8774
+ }
8775
+ const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];
8776
+ const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name];
8777
+ if (typeof stringPseudo === "string") {
8778
+ if (data != null) {
8779
+ throw new Error(`Pseudo ${name} doesn't have any arguments`);
8780
+ }
8781
+ // The alias has to be parsed here, to make sure options are respected.
8782
+ const alias = parse$1(stringPseudo);
8783
+ return subselects["is"](next, alias, options, context, compileToken);
8784
+ }
8785
+ if (typeof userPseudo === "function") {
8786
+ verifyPseudoArgs(userPseudo, name, data, 1);
8787
+ return (elem) => userPseudo(elem, data) && next(elem);
8788
+ }
8789
+ if (name in filters) {
8790
+ return filters[name](next, data, options, context);
8791
+ }
8792
+ if (name in pseudos) {
8793
+ const pseudo = pseudos[name];
8794
+ verifyPseudoArgs(pseudo, name, data, 2);
8795
+ return (elem) => pseudo(elem, options, data) && next(elem);
8796
+ }
8797
+ throw new Error(`Unknown pseudo-class :${name}`);
9154
8798
  }
9155
8799
 
9156
- // While filters are precompiled, pseudos get called when they are needed
9157
- const pseudos = {
9158
- empty(elem, { adapter }) {
9159
- return !adapter.getChildren(elem).some((elem) =>
9160
- // FIXME: `getText` call is potentially expensive.
9161
- adapter.isTag(elem) || adapter.getText(elem) !== "");
9162
- },
9163
- "first-child"(elem, { adapter, equals }) {
9164
- if (adapter.prevElementSibling) {
9165
- return adapter.prevElementSibling(elem) == null;
8800
+ function getElementParent(node, adapter) {
8801
+ const parent = adapter.getParent(node);
8802
+ if (parent && adapter.isTag(parent)) {
8803
+ return parent;
8804
+ }
8805
+ return null;
8806
+ }
8807
+ /*
8808
+ * All available rules
8809
+ */
8810
+ function compileGeneralSelector(next, selector, options, context, compileToken) {
8811
+ const { adapter, equals } = options;
8812
+ switch (selector.type) {
8813
+ case SelectorType.PseudoElement: {
8814
+ throw new Error("Pseudo-elements are not supported by css-select");
9166
8815
  }
9167
- const firstChild = adapter
9168
- .getSiblings(elem)
9169
- .find((elem) => adapter.isTag(elem));
9170
- return firstChild != null && equals(elem, firstChild);
9171
- },
9172
- "last-child"(elem, { adapter, equals }) {
9173
- const siblings = adapter.getSiblings(elem);
9174
- for (let i = siblings.length - 1; i >= 0; i--) {
9175
- if (equals(elem, siblings[i]))
9176
- return true;
9177
- if (adapter.isTag(siblings[i]))
9178
- break;
8816
+ case SelectorType.ColumnCombinator: {
8817
+ throw new Error("Column combinators are not yet supported by css-select");
9179
8818
  }
9180
- return false;
9181
- },
9182
- "first-of-type"(elem, { adapter, equals }) {
9183
- const siblings = adapter.getSiblings(elem);
9184
- const elemName = adapter.getName(elem);
9185
- for (let i = 0; i < siblings.length; i++) {
9186
- const currentSibling = siblings[i];
9187
- if (equals(elem, currentSibling))
9188
- return true;
9189
- if (adapter.isTag(currentSibling) &&
9190
- adapter.getName(currentSibling) === elemName) {
9191
- break;
8819
+ case SelectorType.Attribute: {
8820
+ if (selector.namespace != null) {
8821
+ throw new Error("Namespaced attributes are not yet supported by css-select");
8822
+ }
8823
+ if (!options.xmlMode || options.lowerCaseAttributeNames) {
8824
+ selector.name = selector.name.toLowerCase();
9192
8825
  }
8826
+ return attributeRules[selector.action](next, selector, options);
9193
8827
  }
9194
- return false;
9195
- },
9196
- "last-of-type"(elem, { adapter, equals }) {
9197
- const siblings = adapter.getSiblings(elem);
9198
- const elemName = adapter.getName(elem);
9199
- for (let i = siblings.length - 1; i >= 0; i--) {
9200
- const currentSibling = siblings[i];
9201
- if (equals(elem, currentSibling))
9202
- return true;
9203
- if (adapter.isTag(currentSibling) &&
9204
- adapter.getName(currentSibling) === elemName) {
9205
- break;
8828
+ case SelectorType.Pseudo: {
8829
+ return compilePseudoSelector(next, selector, options, context, compileToken);
8830
+ }
8831
+ // Tags
8832
+ case SelectorType.Tag: {
8833
+ if (selector.namespace != null) {
8834
+ throw new Error("Namespaced tag names are not yet supported by css-select");
9206
8835
  }
8836
+ let { name } = selector;
8837
+ if (!options.xmlMode || options.lowerCaseTags) {
8838
+ name = name.toLowerCase();
8839
+ }
8840
+ return function tag(elem) {
8841
+ return adapter.getName(elem) === name && next(elem);
8842
+ };
9207
8843
  }
9208
- return false;
9209
- },
9210
- "only-of-type"(elem, { adapter, equals }) {
9211
- const elemName = adapter.getName(elem);
9212
- return adapter
9213
- .getSiblings(elem)
9214
- .every((sibling) => equals(elem, sibling) ||
9215
- !adapter.isTag(sibling) ||
9216
- adapter.getName(sibling) !== elemName);
9217
- },
9218
- "only-child"(elem, { adapter, equals }) {
9219
- return adapter
9220
- .getSiblings(elem)
9221
- .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));
9222
- },
9223
- };
9224
- function verifyPseudoArgs(func, name, subselect, argIndex) {
9225
- if (subselect === null) {
9226
- if (func.length > argIndex) {
9227
- throw new Error(`Pseudo-class :${name} requires an argument`);
8844
+ // Traversal
8845
+ case SelectorType.Descendant: {
8846
+ if (options.cacheResults === false ||
8847
+ typeof WeakSet === "undefined") {
8848
+ return function descendant(elem) {
8849
+ let current = elem;
8850
+ while ((current = getElementParent(current, adapter))) {
8851
+ if (next(current)) {
8852
+ return true;
8853
+ }
8854
+ }
8855
+ return false;
8856
+ };
8857
+ }
8858
+ // @ts-expect-error `ElementNode` is not extending object
8859
+ const isFalseCache = new WeakSet();
8860
+ return function cachedDescendant(elem) {
8861
+ let current = elem;
8862
+ while ((current = getElementParent(current, adapter))) {
8863
+ if (!isFalseCache.has(current)) {
8864
+ if (adapter.isTag(current) && next(current)) {
8865
+ return true;
8866
+ }
8867
+ isFalseCache.add(current);
8868
+ }
8869
+ }
8870
+ return false;
8871
+ };
8872
+ }
8873
+ case "_flexibleDescendant": {
8874
+ // Include element itself, only used while querying an array
8875
+ return function flexibleDescendant(elem) {
8876
+ let current = elem;
8877
+ do {
8878
+ if (next(current))
8879
+ return true;
8880
+ } while ((current = getElementParent(current, adapter)));
8881
+ return false;
8882
+ };
8883
+ }
8884
+ case SelectorType.Parent: {
8885
+ return function parent(elem) {
8886
+ return adapter
8887
+ .getChildren(elem)
8888
+ .some((elem) => adapter.isTag(elem) && next(elem));
8889
+ };
8890
+ }
8891
+ case SelectorType.Child: {
8892
+ return function child(elem) {
8893
+ const parent = adapter.getParent(elem);
8894
+ return parent != null && adapter.isTag(parent) && next(parent);
8895
+ };
8896
+ }
8897
+ case SelectorType.Sibling: {
8898
+ return function sibling(elem) {
8899
+ const siblings = adapter.getSiblings(elem);
8900
+ for (let i = 0; i < siblings.length; i++) {
8901
+ const currentSibling = siblings[i];
8902
+ if (equals(elem, currentSibling))
8903
+ break;
8904
+ if (adapter.isTag(currentSibling) && next(currentSibling)) {
8905
+ return true;
8906
+ }
8907
+ }
8908
+ return false;
8909
+ };
8910
+ }
8911
+ case SelectorType.Adjacent: {
8912
+ if (adapter.prevElementSibling) {
8913
+ return function adjacent(elem) {
8914
+ const previous = adapter.prevElementSibling(elem);
8915
+ return previous != null && next(previous);
8916
+ };
8917
+ }
8918
+ return function adjacent(elem) {
8919
+ const siblings = adapter.getSiblings(elem);
8920
+ let lastElement;
8921
+ for (let i = 0; i < siblings.length; i++) {
8922
+ const currentSibling = siblings[i];
8923
+ if (equals(elem, currentSibling))
8924
+ break;
8925
+ if (adapter.isTag(currentSibling)) {
8926
+ lastElement = currentSibling;
8927
+ }
8928
+ }
8929
+ return !!lastElement && next(lastElement);
8930
+ };
8931
+ }
8932
+ case SelectorType.Universal: {
8933
+ if (selector.namespace != null && selector.namespace !== "*") {
8934
+ throw new Error("Namespaced universal selectors are not yet supported by css-select");
8935
+ }
8936
+ return next;
9228
8937
  }
9229
8938
  }
9230
- else if (func.length === argIndex) {
9231
- throw new Error(`Pseudo-class :${name} doesn't have any arguments`);
9232
- }
9233
8939
  }
9234
8940
 
9235
- /**
9236
- * Aliases are pseudos that are expressed as selectors.
9237
- */
9238
- const aliases = {
9239
- // Links
9240
- "any-link": ":is(a, area, link)[href]",
9241
- link: ":any-link:not(:visited)",
9242
- // Forms
9243
- // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
9244
- disabled: `:is(
9245
- :is(button, input, select, textarea, optgroup, option)[disabled],
9246
- optgroup[disabled] > option,
9247
- fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)
9248
- )`,
9249
- enabled: ":not(:disabled)",
9250
- checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
9251
- required: ":is(input, select, textarea)[required]",
9252
- optional: ":is(input, select, textarea):not([required])",
9253
- // JQuery extensions
9254
- // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
9255
- selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
9256
- checkbox: "[type=checkbox]",
9257
- file: "[type=file]",
9258
- password: "[type=password]",
9259
- radio: "[type=radio]",
9260
- reset: "[type=reset]",
9261
- image: "[type=image]",
9262
- submit: "[type=submit]",
9263
- parent: ":not(:empty)",
9264
- header: ":is(h1, h2, h3, h4, h5, h6)",
9265
- button: ":is(button, input[type=button])",
9266
- input: ":is(input, textarea, select, button)",
9267
- text: "input:is(:not([type!='']), [type=text])",
9268
- };
9269
-
9270
- /** Used as a placeholder for :has. Will be replaced with the actual element. */
9271
- const PLACEHOLDER_ELEMENT = {};
9272
- function ensureIsTag(next, adapter) {
9273
- if (next === boolbase.falseFunc)
9274
- return boolbase.falseFunc;
9275
- return (elem) => adapter.isTag(elem) && next(elem);
9276
- }
9277
- function getNextSiblings(elem, adapter) {
9278
- const siblings = adapter.getSiblings(elem);
9279
- if (siblings.length <= 1)
9280
- return [];
9281
- const elemIndex = siblings.indexOf(elem);
9282
- if (elemIndex < 0 || elemIndex === siblings.length - 1)
9283
- return [];
9284
- return siblings.slice(elemIndex + 1).filter(adapter.isTag);
8941
+ function compileUnsafe(selector, options, context) {
8942
+ const token = typeof selector === "string" ? parse$1(selector) : selector;
8943
+ return compileToken(token, options, context);
9285
8944
  }
9286
- function copyOptions(options) {
9287
- // Not copied: context, rootFunc
9288
- return {
9289
- xmlMode: !!options.xmlMode,
9290
- lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,
9291
- lowerCaseTags: !!options.lowerCaseTags,
9292
- quirksMode: !!options.quirksMode,
9293
- cacheResults: !!options.cacheResults,
9294
- pseudos: options.pseudos,
9295
- adapter: options.adapter,
9296
- equals: options.equals,
9297
- };
8945
+ function includesScopePseudo(t) {
8946
+ return (t.type === SelectorType.Pseudo &&
8947
+ (t.name === "scope" ||
8948
+ (Array.isArray(t.data) &&
8949
+ t.data.some((data) => data.some(includesScopePseudo)))));
9298
8950
  }
9299
- const is = (next, token, options, context, compileToken) => {
9300
- const func = compileToken(token, copyOptions(options), context);
9301
- return func === boolbase.trueFunc
9302
- ? next
9303
- : func === boolbase.falseFunc
9304
- ? boolbase.falseFunc
9305
- : (elem) => func(elem) && next(elem);
8951
+ const DESCENDANT_TOKEN = { type: SelectorType.Descendant };
8952
+ const FLEXIBLE_DESCENDANT_TOKEN = {
8953
+ type: "_flexibleDescendant",
8954
+ };
8955
+ const SCOPE_TOKEN = {
8956
+ type: SelectorType.Pseudo,
8957
+ name: "scope",
8958
+ data: null,
9306
8959
  };
9307
8960
  /*
9308
- * :not, :has, :is, :matches and :where have to compile selectors
9309
- * doing this in src/pseudos.ts would lead to circular dependencies,
9310
- * so we add them here
8961
+ * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
8962
+ * http://www.w3.org/TR/selectors4/#absolutizing
9311
8963
  */
9312
- const subselects = {
9313
- is,
9314
- /**
9315
- * `:matches` and `:where` are aliases for `:is`.
9316
- */
9317
- matches: is,
9318
- where: is,
9319
- not(next, token, options, context, compileToken) {
9320
- const func = compileToken(token, copyOptions(options), context);
9321
- return func === boolbase.falseFunc
9322
- ? next
9323
- : func === boolbase.trueFunc
9324
- ? boolbase.falseFunc
9325
- : (elem) => !func(elem) && next(elem);
9326
- },
9327
- has(next, subselect, options, _context, compileToken) {
9328
- const { adapter } = options;
9329
- const opts = copyOptions(options);
9330
- opts.relativeSelector = true;
9331
- const context = subselect.some((s) => s.some(isTraversal))
9332
- ? // Used as a placeholder. Will be replaced with the actual element.
9333
- [PLACEHOLDER_ELEMENT]
9334
- : undefined;
9335
- const compiled = compileToken(subselect, opts, context);
9336
- if (compiled === boolbase.falseFunc)
9337
- return boolbase.falseFunc;
9338
- const hasElement = ensureIsTag(compiled, adapter);
9339
- // If `compiled` is `trueFunc`, we can skip this.
9340
- if (context && compiled !== boolbase.trueFunc) {
9341
- /*
9342
- * `shouldTestNextSiblings` will only be true if the query starts with
9343
- * a traversal (sibling or adjacent). That means we will always have a context.
9344
- */
9345
- const { shouldTestNextSiblings = false } = compiled;
9346
- return (elem) => {
9347
- if (!next(elem))
9348
- return false;
9349
- context[0] = elem;
9350
- const childs = adapter.getChildren(elem);
9351
- const nextElements = shouldTestNextSiblings
9352
- ? [...childs, ...getNextSiblings(elem, adapter)]
9353
- : childs;
9354
- return adapter.existsOne(hasElement, nextElements);
9355
- };
8964
+ function absolutize(token, { adapter }, context) {
8965
+ // TODO Use better check if the context is a document
8966
+ const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {
8967
+ const parent = adapter.isTag(e) && adapter.getParent(e);
8968
+ return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));
8969
+ }));
8970
+ for (const t of token) {
8971
+ if (t.length > 0 &&
8972
+ isTraversal(t[0]) &&
8973
+ t[0].type !== SelectorType.Descendant) ;
8974
+ else if (hasContext && !t.some(includesScopePseudo)) {
8975
+ t.unshift(DESCENDANT_TOKEN);
9356
8976
  }
9357
- return (elem) => next(elem) &&
9358
- adapter.existsOne(hasElement, adapter.getChildren(elem));
9359
- },
9360
- };
9361
-
9362
- function compilePseudoSelector(next, selector, options, context, compileToken) {
8977
+ else {
8978
+ continue;
8979
+ }
8980
+ t.unshift(SCOPE_TOKEN);
8981
+ }
8982
+ }
8983
+ function compileToken(token, options, context) {
9363
8984
  var _a;
9364
- const { name, data } = selector;
9365
- if (Array.isArray(data)) {
9366
- if (!(name in subselects)) {
9367
- throw new Error(`Unknown pseudo-class :${name}(${data})`);
8985
+ token.forEach(sortByProcedure);
8986
+ context = (_a = options.context) !== null && _a !== void 0 ? _a : context;
8987
+ const isArrayContext = Array.isArray(context);
8988
+ const finalContext = context && (Array.isArray(context) ? context : [context]);
8989
+ // Check if the selector is relative
8990
+ if (options.relativeSelector !== false) {
8991
+ absolutize(token, options, finalContext);
8992
+ }
8993
+ else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {
8994
+ throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
8995
+ }
8996
+ let shouldTestNextSiblings = false;
8997
+ const query = token
8998
+ .map((rules) => {
8999
+ if (rules.length >= 2) {
9000
+ const [first, second] = rules;
9001
+ if (first.type !== SelectorType.Pseudo ||
9002
+ first.name !== "scope") ;
9003
+ else if (isArrayContext &&
9004
+ second.type === SelectorType.Descendant) {
9005
+ rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
9006
+ }
9007
+ else if (second.type === SelectorType.Adjacent ||
9008
+ second.type === SelectorType.Sibling) {
9009
+ shouldTestNextSiblings = true;
9010
+ }
9368
9011
  }
9369
- return subselects[name](next, data, options, context, compileToken);
9012
+ return compileRules(rules, options, finalContext);
9013
+ })
9014
+ .reduce(reduceRules, boolbase.falseFunc);
9015
+ query.shouldTestNextSiblings = shouldTestNextSiblings;
9016
+ return query;
9017
+ }
9018
+ function compileRules(rules, options, context) {
9019
+ var _a;
9020
+ return rules.reduce((previous, rule) => previous === boolbase.falseFunc
9021
+ ? boolbase.falseFunc
9022
+ : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);
9023
+ }
9024
+ function reduceRules(a, b) {
9025
+ if (b === boolbase.falseFunc || a === boolbase.trueFunc) {
9026
+ return a;
9370
9027
  }
9371
- const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];
9372
- const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name];
9373
- if (typeof stringPseudo === "string") {
9374
- if (data != null) {
9375
- throw new Error(`Pseudo ${name} doesn't have any arguments`);
9028
+ if (a === boolbase.falseFunc || b === boolbase.trueFunc) {
9029
+ return b;
9030
+ }
9031
+ return function combine(elem) {
9032
+ return a(elem) || b(elem);
9033
+ };
9034
+ }
9035
+
9036
+ const defaultEquals = (a, b) => a === b;
9037
+ const defaultOptions = {
9038
+ adapter: DomUtils,
9039
+ equals: defaultEquals,
9040
+ };
9041
+ function convertOptionFormats(options) {
9042
+ var _a, _b, _c, _d;
9043
+ /*
9044
+ * We force one format of options to the other one.
9045
+ */
9046
+ // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.
9047
+ const opts = options !== null && options !== void 0 ? options : defaultOptions;
9048
+ // @ts-expect-error Same as above.
9049
+ (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);
9050
+ // @ts-expect-error `equals` does not exist on `Options`
9051
+ (_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);
9052
+ return opts;
9053
+ }
9054
+ function getSelectorFunc(searchFunc) {
9055
+ return function select(query, elements, options) {
9056
+ const opts = convertOptionFormats(options);
9057
+ if (typeof query !== "function") {
9058
+ query = compileUnsafe(query, opts, elements);
9376
9059
  }
9377
- // The alias has to be parsed here, to make sure options are respected.
9378
- const alias = parse$1(stringPseudo);
9379
- return subselects["is"](next, alias, options, context, compileToken);
9060
+ const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);
9061
+ return searchFunc(query, filteredElements, opts);
9062
+ };
9063
+ }
9064
+ function prepareContext(elems, adapter, shouldTestNextSiblings = false) {
9065
+ /*
9066
+ * Add siblings if the query requires them.
9067
+ * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
9068
+ */
9069
+ if (shouldTestNextSiblings) {
9070
+ elems = appendNextSiblings(elems, adapter);
9380
9071
  }
9381
- if (typeof userPseudo === "function") {
9382
- verifyPseudoArgs(userPseudo, name, data, 1);
9383
- return (elem) => userPseudo(elem, data) && next(elem);
9072
+ return Array.isArray(elems)
9073
+ ? adapter.removeSubsets(elems)
9074
+ : adapter.getChildren(elems);
9075
+ }
9076
+ function appendNextSiblings(elem, adapter) {
9077
+ // Order matters because jQuery seems to check the children before the siblings
9078
+ const elems = Array.isArray(elem) ? elem.slice(0) : [elem];
9079
+ const elemsLength = elems.length;
9080
+ for (let i = 0; i < elemsLength; i++) {
9081
+ const nextSiblings = getNextSiblings(elems[i], adapter);
9082
+ elems.push(...nextSiblings);
9384
9083
  }
9385
- if (name in filters) {
9386
- return filters[name](next, data, options, context);
9084
+ return elems;
9085
+ }
9086
+ /**
9087
+ * @template Node The generic Node type for the DOM adapter being used.
9088
+ * @template ElementNode The Node type for elements for the DOM adapter being used.
9089
+ * @param elems Elements to query. If it is an element, its children will be queried..
9090
+ * @param query can be either a CSS selector string or a compiled query function.
9091
+ * @param [options] options for querying the document.
9092
+ * @see compile for supported selector queries.
9093
+ * @returns All matching elements.
9094
+ *
9095
+ */
9096
+ const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
9097
+ ? []
9098
+ : options.adapter.findAll(query, elems));
9099
+ /**
9100
+ * @template Node The generic Node type for the DOM adapter being used.
9101
+ * @template ElementNode The Node type for elements for the DOM adapter being used.
9102
+ * @param elems Elements to query. If it is an element, its children will be queried..
9103
+ * @param query can be either a CSS selector string or a compiled query function.
9104
+ * @param [options] options for querying the document.
9105
+ * @see compile for supported selector queries.
9106
+ * @returns the first match, or null if there was no match.
9107
+ */
9108
+ const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
9109
+ ? null
9110
+ : options.adapter.findOne(query, elems));
9111
+
9112
+ // Generated using scripts/write-decode-map.ts
9113
+ const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
9114
+ // prettier-ignore
9115
+ /* #__PURE__ */ "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
9116
+ .split("")
9117
+ .map((c) => c.charCodeAt(0)));
9118
+
9119
+ // Generated using scripts/write-decode-map.ts
9120
+ const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
9121
+ // prettier-ignore
9122
+ /* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
9123
+ .split("")
9124
+ .map((c) => c.charCodeAt(0)));
9125
+
9126
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
9127
+ var _a;
9128
+ const decodeMap = new Map([
9129
+ [0, 65533],
9130
+ // C1 Unicode control character reference replacements
9131
+ [128, 8364],
9132
+ [130, 8218],
9133
+ [131, 402],
9134
+ [132, 8222],
9135
+ [133, 8230],
9136
+ [134, 8224],
9137
+ [135, 8225],
9138
+ [136, 710],
9139
+ [137, 8240],
9140
+ [138, 352],
9141
+ [139, 8249],
9142
+ [140, 338],
9143
+ [142, 381],
9144
+ [145, 8216],
9145
+ [146, 8217],
9146
+ [147, 8220],
9147
+ [148, 8221],
9148
+ [149, 8226],
9149
+ [150, 8211],
9150
+ [151, 8212],
9151
+ [152, 732],
9152
+ [153, 8482],
9153
+ [154, 353],
9154
+ [155, 8250],
9155
+ [156, 339],
9156
+ [158, 382],
9157
+ [159, 376],
9158
+ ]);
9159
+ /**
9160
+ * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
9161
+ */
9162
+ const fromCodePoint =
9163
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
9164
+ (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
9165
+ let output = "";
9166
+ if (codePoint > 65535) {
9167
+ codePoint -= 65536;
9168
+ output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
9169
+ codePoint = 56320 | (codePoint & 1023);
9387
9170
  }
9388
- if (name in pseudos) {
9389
- const pseudo = pseudos[name];
9390
- verifyPseudoArgs(pseudo, name, data, 2);
9391
- return (elem) => pseudo(elem, options, data) && next(elem);
9171
+ output += String.fromCharCode(codePoint);
9172
+ return output;
9173
+ };
9174
+ /**
9175
+ * Replace the given code point with a replacement character if it is a
9176
+ * surrogate or is outside the valid range. Otherwise return the code
9177
+ * point unchanged.
9178
+ */
9179
+ function replaceCodePoint(codePoint) {
9180
+ var _a;
9181
+ if ((codePoint >= 55296 && codePoint <= 57343) ||
9182
+ codePoint > 1114111) {
9183
+ return 65533;
9392
9184
  }
9393
- throw new Error(`Unknown pseudo-class :${name}`);
9185
+ return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
9394
9186
  }
9395
9187
 
9396
- function getElementParent(node, adapter) {
9397
- const parent = adapter.getParent(node);
9398
- if (parent && adapter.isTag(parent)) {
9399
- return parent;
9400
- }
9401
- return null;
9188
+ var CharCodes$1;
9189
+ (function (CharCodes) {
9190
+ CharCodes[CharCodes["NUM"] = 35] = "NUM";
9191
+ CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
9192
+ CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
9193
+ CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
9194
+ CharCodes[CharCodes["NINE"] = 57] = "NINE";
9195
+ CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
9196
+ CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
9197
+ CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
9198
+ CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
9199
+ CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
9200
+ CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
9201
+ CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
9202
+ })(CharCodes$1 || (CharCodes$1 = {}));
9203
+ /** Bit that needs to be set to convert an upper case ASCII character to lower case */
9204
+ const TO_LOWER_BIT = 32;
9205
+ var BinTrieFlags;
9206
+ (function (BinTrieFlags) {
9207
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
9208
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
9209
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
9210
+ })(BinTrieFlags || (BinTrieFlags = {}));
9211
+ function isNumber(code) {
9212
+ return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
9402
9213
  }
9403
- /*
9404
- * All available rules
9214
+ function isHexadecimalCharacter(code) {
9215
+ return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_F) ||
9216
+ (code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_F));
9217
+ }
9218
+ function isAsciiAlphaNumeric(code) {
9219
+ return ((code >= CharCodes$1.UPPER_A && code <= CharCodes$1.UPPER_Z) ||
9220
+ (code >= CharCodes$1.LOWER_A && code <= CharCodes$1.LOWER_Z) ||
9221
+ isNumber(code));
9222
+ }
9223
+ /**
9224
+ * Checks if the given character is a valid end character for an entity in an attribute.
9225
+ *
9226
+ * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
9227
+ * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
9405
9228
  */
9406
- function compileGeneralSelector(next, selector, options, context, compileToken) {
9407
- const { adapter, equals } = options;
9408
- switch (selector.type) {
9409
- case SelectorType.PseudoElement: {
9410
- throw new Error("Pseudo-elements are not supported by css-select");
9411
- }
9412
- case SelectorType.ColumnCombinator: {
9413
- throw new Error("Column combinators are not yet supported by css-select");
9414
- }
9415
- case SelectorType.Attribute: {
9416
- if (selector.namespace != null) {
9417
- throw new Error("Namespaced attributes are not yet supported by css-select");
9229
+ function isEntityInAttributeInvalidEnd(code) {
9230
+ return code === CharCodes$1.EQUALS || isAsciiAlphaNumeric(code);
9231
+ }
9232
+ var EntityDecoderState;
9233
+ (function (EntityDecoderState) {
9234
+ EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
9235
+ EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
9236
+ EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
9237
+ EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
9238
+ EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
9239
+ })(EntityDecoderState || (EntityDecoderState = {}));
9240
+ var DecodingMode;
9241
+ (function (DecodingMode) {
9242
+ /** Entities in text nodes that can end with any character. */
9243
+ DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
9244
+ /** Only allow entities terminated with a semicolon. */
9245
+ DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
9246
+ /** Entities in attributes have limitations on ending characters. */
9247
+ DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
9248
+ })(DecodingMode || (DecodingMode = {}));
9249
+ /**
9250
+ * Token decoder with support of writing partial entities.
9251
+ */
9252
+ class EntityDecoder {
9253
+ constructor(
9254
+ /** The tree used to decode entities. */
9255
+ decodeTree,
9256
+ /**
9257
+ * The function that is called when a codepoint is decoded.
9258
+ *
9259
+ * For multi-byte named entities, this will be called multiple times,
9260
+ * with the second codepoint, and the same `consumed` value.
9261
+ *
9262
+ * @param codepoint The decoded codepoint.
9263
+ * @param consumed The number of bytes consumed by the decoder.
9264
+ */
9265
+ emitCodePoint,
9266
+ /** An object that is used to produce errors. */
9267
+ errors) {
9268
+ this.decodeTree = decodeTree;
9269
+ this.emitCodePoint = emitCodePoint;
9270
+ this.errors = errors;
9271
+ /** The current state of the decoder. */
9272
+ this.state = EntityDecoderState.EntityStart;
9273
+ /** Characters that were consumed while parsing an entity. */
9274
+ this.consumed = 1;
9275
+ /**
9276
+ * The result of the entity.
9277
+ *
9278
+ * Either the result index of a numeric entity, or the codepoint of a
9279
+ * numeric entity.
9280
+ */
9281
+ this.result = 0;
9282
+ /** The current index in the decode tree. */
9283
+ this.treeIndex = 0;
9284
+ /** The number of characters that were consumed in excess. */
9285
+ this.excess = 1;
9286
+ /** The mode in which the decoder is operating. */
9287
+ this.decodeMode = DecodingMode.Strict;
9288
+ }
9289
+ /** Resets the instance to make it reusable. */
9290
+ startEntity(decodeMode) {
9291
+ this.decodeMode = decodeMode;
9292
+ this.state = EntityDecoderState.EntityStart;
9293
+ this.result = 0;
9294
+ this.treeIndex = 0;
9295
+ this.excess = 1;
9296
+ this.consumed = 1;
9297
+ }
9298
+ /**
9299
+ * Write an entity to the decoder. This can be called multiple times with partial entities.
9300
+ * If the entity is incomplete, the decoder will return -1.
9301
+ *
9302
+ * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
9303
+ * entity is incomplete, and resume when the next string is written.
9304
+ *
9305
+ * @param input The string containing the entity (or a continuation of the entity).
9306
+ * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
9307
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
9308
+ */
9309
+ write(input, offset) {
9310
+ switch (this.state) {
9311
+ case EntityDecoderState.EntityStart: {
9312
+ if (input.charCodeAt(offset) === CharCodes$1.NUM) {
9313
+ this.state = EntityDecoderState.NumericStart;
9314
+ this.consumed += 1;
9315
+ return this.stateNumericStart(input, offset + 1);
9316
+ }
9317
+ this.state = EntityDecoderState.NamedEntity;
9318
+ return this.stateNamedEntity(input, offset);
9418
9319
  }
9419
- if (!options.xmlMode || options.lowerCaseAttributeNames) {
9420
- selector.name = selector.name.toLowerCase();
9320
+ case EntityDecoderState.NumericStart: {
9321
+ return this.stateNumericStart(input, offset);
9421
9322
  }
9422
- return attributeRules[selector.action](next, selector, options);
9423
- }
9424
- case SelectorType.Pseudo: {
9425
- return compilePseudoSelector(next, selector, options, context, compileToken);
9426
- }
9427
- // Tags
9428
- case SelectorType.Tag: {
9429
- if (selector.namespace != null) {
9430
- throw new Error("Namespaced tag names are not yet supported by css-select");
9323
+ case EntityDecoderState.NumericDecimal: {
9324
+ return this.stateNumericDecimal(input, offset);
9431
9325
  }
9432
- let { name } = selector;
9433
- if (!options.xmlMode || options.lowerCaseTags) {
9434
- name = name.toLowerCase();
9326
+ case EntityDecoderState.NumericHex: {
9327
+ return this.stateNumericHex(input, offset);
9435
9328
  }
9436
- return function tag(elem) {
9437
- return adapter.getName(elem) === name && next(elem);
9438
- };
9439
- }
9440
- // Traversal
9441
- case SelectorType.Descendant: {
9442
- if (options.cacheResults === false ||
9443
- typeof WeakSet === "undefined") {
9444
- return function descendant(elem) {
9445
- let current = elem;
9446
- while ((current = getElementParent(current, adapter))) {
9447
- if (next(current)) {
9448
- return true;
9449
- }
9450
- }
9451
- return false;
9452
- };
9329
+ case EntityDecoderState.NamedEntity: {
9330
+ return this.stateNamedEntity(input, offset);
9453
9331
  }
9454
- // @ts-expect-error `ElementNode` is not extending object
9455
- const isFalseCache = new WeakSet();
9456
- return function cachedDescendant(elem) {
9457
- let current = elem;
9458
- while ((current = getElementParent(current, adapter))) {
9459
- if (!isFalseCache.has(current)) {
9460
- if (adapter.isTag(current) && next(current)) {
9461
- return true;
9462
- }
9463
- isFalseCache.add(current);
9464
- }
9465
- }
9466
- return false;
9467
- };
9468
- }
9469
- case "_flexibleDescendant": {
9470
- // Include element itself, only used while querying an array
9471
- return function flexibleDescendant(elem) {
9472
- let current = elem;
9473
- do {
9474
- if (next(current))
9475
- return true;
9476
- } while ((current = getElementParent(current, adapter)));
9477
- return false;
9478
- };
9479
9332
  }
9480
- case SelectorType.Parent: {
9481
- return function parent(elem) {
9482
- return adapter
9483
- .getChildren(elem)
9484
- .some((elem) => adapter.isTag(elem) && next(elem));
9485
- };
9333
+ }
9334
+ /**
9335
+ * Switches between the numeric decimal and hexadecimal states.
9336
+ *
9337
+ * Equivalent to the `Numeric character reference state` in the HTML spec.
9338
+ *
9339
+ * @param input The string containing the entity (or a continuation of the entity).
9340
+ * @param offset The current offset.
9341
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
9342
+ */
9343
+ stateNumericStart(input, offset) {
9344
+ if (offset >= input.length) {
9345
+ return -1;
9486
9346
  }
9487
- case SelectorType.Child: {
9488
- return function child(elem) {
9489
- const parent = adapter.getParent(elem);
9490
- return parent != null && adapter.isTag(parent) && next(parent);
9491
- };
9347
+ if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes$1.LOWER_X) {
9348
+ this.state = EntityDecoderState.NumericHex;
9349
+ this.consumed += 1;
9350
+ return this.stateNumericHex(input, offset + 1);
9492
9351
  }
9493
- case SelectorType.Sibling: {
9494
- return function sibling(elem) {
9495
- const siblings = adapter.getSiblings(elem);
9496
- for (let i = 0; i < siblings.length; i++) {
9497
- const currentSibling = siblings[i];
9498
- if (equals(elem, currentSibling))
9499
- break;
9500
- if (adapter.isTag(currentSibling) && next(currentSibling)) {
9501
- return true;
9502
- }
9503
- }
9504
- return false;
9505
- };
9352
+ this.state = EntityDecoderState.NumericDecimal;
9353
+ return this.stateNumericDecimal(input, offset);
9354
+ }
9355
+ addToNumericResult(input, start, end, base) {
9356
+ if (start !== end) {
9357
+ const digitCount = end - start;
9358
+ this.result =
9359
+ this.result * Math.pow(base, digitCount) +
9360
+ Number.parseInt(input.substr(start, digitCount), base);
9361
+ this.consumed += digitCount;
9506
9362
  }
9507
- case SelectorType.Adjacent: {
9508
- if (adapter.prevElementSibling) {
9509
- return function adjacent(elem) {
9510
- const previous = adapter.prevElementSibling(elem);
9511
- return previous != null && next(previous);
9512
- };
9363
+ }
9364
+ /**
9365
+ * Parses a hexadecimal numeric entity.
9366
+ *
9367
+ * Equivalent to the `Hexademical character reference state` in the HTML spec.
9368
+ *
9369
+ * @param input The string containing the entity (or a continuation of the entity).
9370
+ * @param offset The current offset.
9371
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
9372
+ */
9373
+ stateNumericHex(input, offset) {
9374
+ const startIndex = offset;
9375
+ while (offset < input.length) {
9376
+ const char = input.charCodeAt(offset);
9377
+ if (isNumber(char) || isHexadecimalCharacter(char)) {
9378
+ offset += 1;
9379
+ }
9380
+ else {
9381
+ this.addToNumericResult(input, startIndex, offset, 16);
9382
+ return this.emitNumericEntity(char, 3);
9513
9383
  }
9514
- return function adjacent(elem) {
9515
- const siblings = adapter.getSiblings(elem);
9516
- let lastElement;
9517
- for (let i = 0; i < siblings.length; i++) {
9518
- const currentSibling = siblings[i];
9519
- if (equals(elem, currentSibling))
9520
- break;
9521
- if (adapter.isTag(currentSibling)) {
9522
- lastElement = currentSibling;
9523
- }
9524
- }
9525
- return !!lastElement && next(lastElement);
9526
- };
9527
9384
  }
9528
- case SelectorType.Universal: {
9529
- if (selector.namespace != null && selector.namespace !== "*") {
9530
- throw new Error("Namespaced universal selectors are not yet supported by css-select");
9385
+ this.addToNumericResult(input, startIndex, offset, 16);
9386
+ return -1;
9387
+ }
9388
+ /**
9389
+ * Parses a decimal numeric entity.
9390
+ *
9391
+ * Equivalent to the `Decimal character reference state` in the HTML spec.
9392
+ *
9393
+ * @param input The string containing the entity (or a continuation of the entity).
9394
+ * @param offset The current offset.
9395
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
9396
+ */
9397
+ stateNumericDecimal(input, offset) {
9398
+ const startIndex = offset;
9399
+ while (offset < input.length) {
9400
+ const char = input.charCodeAt(offset);
9401
+ if (isNumber(char)) {
9402
+ offset += 1;
9403
+ }
9404
+ else {
9405
+ this.addToNumericResult(input, startIndex, offset, 10);
9406
+ return this.emitNumericEntity(char, 2);
9531
9407
  }
9532
- return next;
9533
9408
  }
9409
+ this.addToNumericResult(input, startIndex, offset, 10);
9410
+ return -1;
9534
9411
  }
9535
- }
9536
-
9537
- function compileUnsafe(selector, options, context) {
9538
- const token = typeof selector === "string" ? parse$1(selector) : selector;
9539
- return compileToken(token, options, context);
9540
- }
9541
- function includesScopePseudo(t) {
9542
- return (t.type === SelectorType.Pseudo &&
9543
- (t.name === "scope" ||
9544
- (Array.isArray(t.data) &&
9545
- t.data.some((data) => data.some(includesScopePseudo)))));
9546
- }
9547
- const DESCENDANT_TOKEN = { type: SelectorType.Descendant };
9548
- const FLEXIBLE_DESCENDANT_TOKEN = {
9549
- type: "_flexibleDescendant",
9550
- };
9551
- const SCOPE_TOKEN = {
9552
- type: SelectorType.Pseudo,
9553
- name: "scope",
9554
- data: null,
9555
- };
9556
- /*
9557
- * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
9558
- * http://www.w3.org/TR/selectors4/#absolutizing
9559
- */
9560
- function absolutize(token, { adapter }, context) {
9561
- // TODO Use better check if the context is a document
9562
- const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {
9563
- const parent = adapter.isTag(e) && adapter.getParent(e);
9564
- return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));
9565
- }));
9566
- for (const t of token) {
9567
- if (t.length > 0 &&
9568
- isTraversal(t[0]) &&
9569
- t[0].type !== SelectorType.Descendant) ;
9570
- else if (hasContext && !t.some(includesScopePseudo)) {
9571
- t.unshift(DESCENDANT_TOKEN);
9412
+ /**
9413
+ * Validate and emit a numeric entity.
9414
+ *
9415
+ * Implements the logic from the `Hexademical character reference start
9416
+ * state` and `Numeric character reference end state` in the HTML spec.
9417
+ *
9418
+ * @param lastCp The last code point of the entity. Used to see if the
9419
+ * entity was terminated with a semicolon.
9420
+ * @param expectedLength The minimum number of characters that should be
9421
+ * consumed. Used to validate that at least one digit
9422
+ * was consumed.
9423
+ * @returns The number of characters that were consumed.
9424
+ */
9425
+ emitNumericEntity(lastCp, expectedLength) {
9426
+ var _a;
9427
+ // Ensure we consumed at least one digit.
9428
+ if (this.consumed <= expectedLength) {
9429
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
9430
+ return 0;
9572
9431
  }
9573
- else {
9574
- continue;
9432
+ // Figure out if this is a legit end of the entity
9433
+ if (lastCp === CharCodes$1.SEMI) {
9434
+ this.consumed += 1;
9575
9435
  }
9576
- t.unshift(SCOPE_TOKEN);
9577
- }
9578
- }
9579
- function compileToken(token, options, context) {
9580
- var _a;
9581
- token.forEach(sortByProcedure);
9582
- context = (_a = options.context) !== null && _a !== void 0 ? _a : context;
9583
- const isArrayContext = Array.isArray(context);
9584
- const finalContext = context && (Array.isArray(context) ? context : [context]);
9585
- // Check if the selector is relative
9586
- if (options.relativeSelector !== false) {
9587
- absolutize(token, options, finalContext);
9588
- }
9589
- else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {
9590
- throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
9436
+ else if (this.decodeMode === DecodingMode.Strict) {
9437
+ return 0;
9438
+ }
9439
+ this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
9440
+ if (this.errors) {
9441
+ if (lastCp !== CharCodes$1.SEMI) {
9442
+ this.errors.missingSemicolonAfterCharacterReference();
9443
+ }
9444
+ this.errors.validateNumericCharacterReference(this.result);
9445
+ }
9446
+ return this.consumed;
9591
9447
  }
9592
- let shouldTestNextSiblings = false;
9593
- const query = token
9594
- .map((rules) => {
9595
- if (rules.length >= 2) {
9596
- const [first, second] = rules;
9597
- if (first.type !== SelectorType.Pseudo ||
9598
- first.name !== "scope") ;
9599
- else if (isArrayContext &&
9600
- second.type === SelectorType.Descendant) {
9601
- rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
9448
+ /**
9449
+ * Parses a named entity.
9450
+ *
9451
+ * Equivalent to the `Named character reference state` in the HTML spec.
9452
+ *
9453
+ * @param input The string containing the entity (or a continuation of the entity).
9454
+ * @param offset The current offset.
9455
+ * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
9456
+ */
9457
+ stateNamedEntity(input, offset) {
9458
+ const { decodeTree } = this;
9459
+ let current = decodeTree[this.treeIndex];
9460
+ // The mask is the number of bytes of the value, including the current byte.
9461
+ let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
9462
+ for (; offset < input.length; offset++, this.excess++) {
9463
+ const char = input.charCodeAt(offset);
9464
+ this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
9465
+ if (this.treeIndex < 0) {
9466
+ return this.result === 0 ||
9467
+ // If we are parsing an attribute
9468
+ (this.decodeMode === DecodingMode.Attribute &&
9469
+ // We shouldn't have consumed any characters after the entity,
9470
+ (valueLength === 0 ||
9471
+ // And there should be no invalid characters.
9472
+ isEntityInAttributeInvalidEnd(char)))
9473
+ ? 0
9474
+ : this.emitNotTerminatedNamedEntity();
9602
9475
  }
9603
- else if (second.type === SelectorType.Adjacent ||
9604
- second.type === SelectorType.Sibling) {
9605
- shouldTestNextSiblings = true;
9476
+ current = decodeTree[this.treeIndex];
9477
+ valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
9478
+ // If the branch is a value, store it and continue
9479
+ if (valueLength !== 0) {
9480
+ // If the entity is terminated by a semicolon, we are done.
9481
+ if (char === CharCodes$1.SEMI) {
9482
+ return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
9483
+ }
9484
+ // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
9485
+ if (this.decodeMode !== DecodingMode.Strict) {
9486
+ this.result = this.treeIndex;
9487
+ this.consumed += this.excess;
9488
+ this.excess = 0;
9489
+ }
9606
9490
  }
9607
9491
  }
9608
- return compileRules(rules, options, finalContext);
9609
- })
9610
- .reduce(reduceRules, boolbase.falseFunc);
9611
- query.shouldTestNextSiblings = shouldTestNextSiblings;
9612
- return query;
9613
- }
9614
- function compileRules(rules, options, context) {
9615
- var _a;
9616
- return rules.reduce((previous, rule) => previous === boolbase.falseFunc
9617
- ? boolbase.falseFunc
9618
- : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);
9619
- }
9620
- function reduceRules(a, b) {
9621
- if (b === boolbase.falseFunc || a === boolbase.trueFunc) {
9622
- return a;
9492
+ return -1;
9623
9493
  }
9624
- if (a === boolbase.falseFunc || b === boolbase.trueFunc) {
9625
- return b;
9494
+ /**
9495
+ * Emit a named entity that was not terminated with a semicolon.
9496
+ *
9497
+ * @returns The number of characters consumed.
9498
+ */
9499
+ emitNotTerminatedNamedEntity() {
9500
+ var _a;
9501
+ const { result, decodeTree } = this;
9502
+ const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
9503
+ this.emitNamedEntityData(result, valueLength, this.consumed);
9504
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
9505
+ return this.consumed;
9626
9506
  }
9627
- return function combine(elem) {
9628
- return a(elem) || b(elem);
9629
- };
9630
- }
9631
-
9632
- const defaultEquals = (a, b) => a === b;
9633
- const defaultOptions = {
9634
- adapter: DomUtils,
9635
- equals: defaultEquals,
9636
- };
9637
- function convertOptionFormats(options) {
9638
- var _a, _b, _c, _d;
9639
- /*
9640
- * We force one format of options to the other one.
9507
+ /**
9508
+ * Emit a named entity.
9509
+ *
9510
+ * @param result The index of the entity in the decode tree.
9511
+ * @param valueLength The number of bytes in the entity.
9512
+ * @param consumed The number of characters consumed.
9513
+ *
9514
+ * @returns The number of characters consumed.
9641
9515
  */
9642
- // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.
9643
- const opts = options !== null && options !== void 0 ? options : defaultOptions;
9644
- // @ts-expect-error Same as above.
9645
- (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);
9646
- // @ts-expect-error `equals` does not exist on `Options`
9647
- (_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);
9648
- return opts;
9649
- }
9650
- function getSelectorFunc(searchFunc) {
9651
- return function select(query, elements, options) {
9652
- const opts = convertOptionFormats(options);
9653
- if (typeof query !== "function") {
9654
- query = compileUnsafe(query, opts, elements);
9516
+ emitNamedEntityData(result, valueLength, consumed) {
9517
+ const { decodeTree } = this;
9518
+ this.emitCodePoint(valueLength === 1
9519
+ ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
9520
+ : decodeTree[result + 1], consumed);
9521
+ if (valueLength === 3) {
9522
+ // For multi-byte values, we need to emit the second byte.
9523
+ this.emitCodePoint(decodeTree[result + 2], consumed);
9655
9524
  }
9656
- const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);
9657
- return searchFunc(query, filteredElements, opts);
9658
- };
9659
- }
9660
- function prepareContext(elems, adapter, shouldTestNextSiblings = false) {
9661
- /*
9662
- * Add siblings if the query requires them.
9663
- * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
9664
- */
9665
- if (shouldTestNextSiblings) {
9666
- elems = appendNextSiblings(elems, adapter);
9525
+ return consumed;
9667
9526
  }
9668
- return Array.isArray(elems)
9669
- ? adapter.removeSubsets(elems)
9670
- : adapter.getChildren(elems);
9671
- }
9672
- function appendNextSiblings(elem, adapter) {
9673
- // Order matters because jQuery seems to check the children before the siblings
9674
- const elems = Array.isArray(elem) ? elem.slice(0) : [elem];
9675
- const elemsLength = elems.length;
9676
- for (let i = 0; i < elemsLength; i++) {
9677
- const nextSiblings = getNextSiblings(elems[i], adapter);
9678
- elems.push(...nextSiblings);
9527
+ /**
9528
+ * Signal to the parser that the end of the input was reached.
9529
+ *
9530
+ * Remaining data will be emitted and relevant errors will be produced.
9531
+ *
9532
+ * @returns The number of characters consumed.
9533
+ */
9534
+ end() {
9535
+ var _a;
9536
+ switch (this.state) {
9537
+ case EntityDecoderState.NamedEntity: {
9538
+ // Emit a named entity if we have one.
9539
+ return this.result !== 0 &&
9540
+ (this.decodeMode !== DecodingMode.Attribute ||
9541
+ this.result === this.treeIndex)
9542
+ ? this.emitNotTerminatedNamedEntity()
9543
+ : 0;
9544
+ }
9545
+ // Otherwise, emit a numeric entity if we have one.
9546
+ case EntityDecoderState.NumericDecimal: {
9547
+ return this.emitNumericEntity(0, 2);
9548
+ }
9549
+ case EntityDecoderState.NumericHex: {
9550
+ return this.emitNumericEntity(0, 3);
9551
+ }
9552
+ case EntityDecoderState.NumericStart: {
9553
+ (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
9554
+ return 0;
9555
+ }
9556
+ case EntityDecoderState.EntityStart: {
9557
+ // Return 0 if we have no entity.
9558
+ return 0;
9559
+ }
9560
+ }
9679
9561
  }
9680
- return elems;
9681
9562
  }
9682
9563
  /**
9683
- * @template Node The generic Node type for the DOM adapter being used.
9684
- * @template ElementNode The Node type for elements for the DOM adapter being used.
9685
- * @param elems Elements to query. If it is an element, its children will be queried..
9686
- * @param query can be either a CSS selector string or a compiled query function.
9687
- * @param [options] options for querying the document.
9688
- * @see compile for supported selector queries.
9689
- * @returns All matching elements.
9564
+ * Determines the branch of the current node that is taken given the current
9565
+ * character. This function is used to traverse the trie.
9690
9566
  *
9567
+ * @param decodeTree The trie.
9568
+ * @param current The current node.
9569
+ * @param nodeIdx The index right after the current node and its value.
9570
+ * @param char The current character.
9571
+ * @returns The index of the next node, or -1 if no branch is taken.
9691
9572
  */
9692
- const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
9693
- ? []
9694
- : options.adapter.findAll(query, elems));
9695
- /**
9696
- * @template Node The generic Node type for the DOM adapter being used.
9697
- * @template ElementNode The Node type for elements for the DOM adapter being used.
9698
- * @param elems Elements to query. If it is an element, its children will be queried..
9699
- * @param query can be either a CSS selector string or a compiled query function.
9700
- * @param [options] options for querying the document.
9701
- * @see compile for supported selector queries.
9702
- * @returns the first match, or null if there was no match.
9703
- */
9704
- const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0
9705
- ? null
9706
- : options.adapter.findOne(query, elems));
9573
+ function determineBranch(decodeTree, current, nodeIndex, char) {
9574
+ const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
9575
+ const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
9576
+ // Case 1: Single branch encoded in jump offset
9577
+ if (branchCount === 0) {
9578
+ return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
9579
+ }
9580
+ // Case 2: Multiple branches encoded in jump table
9581
+ if (jumpOffset) {
9582
+ const value = char - jumpOffset;
9583
+ return value < 0 || value >= branchCount
9584
+ ? -1
9585
+ : decodeTree[nodeIndex + value] - 1;
9586
+ }
9587
+ // Case 3: Multiple branches encoded in dictionary
9588
+ // Binary search for the character.
9589
+ let lo = nodeIndex;
9590
+ let hi = lo + branchCount - 1;
9591
+ while (lo <= hi) {
9592
+ const mid = (lo + hi) >>> 1;
9593
+ const midValue = decodeTree[mid];
9594
+ if (midValue < char) {
9595
+ lo = mid + 1;
9596
+ }
9597
+ else if (midValue > char) {
9598
+ hi = mid - 1;
9599
+ }
9600
+ else {
9601
+ return decodeTree[mid + branchCount];
9602
+ }
9603
+ }
9604
+ return -1;
9605
+ }
9707
9606
 
9708
9607
  var CharCodes;
9709
9608
  (function (CharCodes) {
@@ -9807,6 +9706,7 @@ const Sequences = {
9807
9706
  TextareaEnd: new Uint8Array([
9808
9707
  0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,
9809
9708
  ]), // `</textarea`
9709
+ XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`
9810
9710
  };
9811
9711
  class Tokenizer {
9812
9712
  constructor({ xmlMode = false, decodeEntities = true, }, cbs) {
@@ -10035,7 +9935,8 @@ class Tokenizer {
10035
9935
  else if (lower === Sequences.ScriptEnd[2]) {
10036
9936
  this.state = State.BeforeSpecialS;
10037
9937
  }
10038
- else if (lower === Sequences.TitleEnd[2]) {
9938
+ else if (lower === Sequences.TitleEnd[2] ||
9939
+ lower === Sequences.XmpEnd[2]) {
10039
9940
  this.state = State.BeforeSpecialT;
10040
9941
  }
10041
9942
  else {
@@ -10248,15 +10149,23 @@ class Tokenizer {
10248
10149
  }
10249
10150
  stateBeforeSpecialT(c) {
10250
10151
  const lower = c | 0x20;
10251
- if (lower === Sequences.TitleEnd[3]) {
10252
- this.startSpecial(Sequences.TitleEnd, 4);
10253
- }
10254
- else if (lower === Sequences.TextareaEnd[3]) {
10255
- this.startSpecial(Sequences.TextareaEnd, 4);
10256
- }
10257
- else {
10258
- this.state = State.InTagName;
10259
- this.stateInTagName(c); // Consume the token again
10152
+ switch (lower) {
10153
+ case Sequences.TitleEnd[3]: {
10154
+ this.startSpecial(Sequences.TitleEnd, 4);
10155
+ break;
10156
+ }
10157
+ case Sequences.TextareaEnd[3]: {
10158
+ this.startSpecial(Sequences.TextareaEnd, 4);
10159
+ break;
10160
+ }
10161
+ case Sequences.XmpEnd[3]: {
10162
+ this.startSpecial(Sequences.XmpEnd, 4);
10163
+ break;
10164
+ }
10165
+ default: {
10166
+ this.state = State.InTagName;
10167
+ this.stateInTagName(c); // Consume the token again
10168
+ }
10260
10169
  }
10261
10170
  }
10262
10171
  startEntity() {
@@ -10982,7 +10891,7 @@ function parseDocument(data, options) {
10982
10891
  return handler.root;
10983
10892
  }
10984
10893
 
10985
- var picocolors_browserExports = requirePicocolors_browser();
10894
+ var picocolors_browserExports = /*@__PURE__*/ requirePicocolors_browser();
10986
10895
  var pc = /*@__PURE__*/getDefaultExportFromCjs(picocolors_browserExports);
10987
10896
 
10988
10897
  function parseStylesheet(stylesheet) {
@@ -11438,34 +11347,15 @@ function isSubpath(basePath, currentPath) {
11438
11347
  return !_pathModule.relative(basePath, currentPath).startsWith("..");
11439
11348
  }
11440
11349
 
11441
- var __defProp = Object.defineProperty;
11442
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11443
- var __publicField = (obj, key, value) => {
11444
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11445
- return value;
11446
- };
11447
- var __accessCheck = (obj, member, msg) => {
11448
- if (!member.has(obj))
11449
- throw TypeError("Cannot " + msg);
11450
- };
11451
- var __privateGet = (obj, member, getter) => {
11452
- __accessCheck(obj, member, "read from private field");
11453
- return getter ? getter.call(obj) : member.get(obj);
11454
- };
11455
- var __privateAdd = (obj, member, value) => {
11456
- if (member.has(obj))
11457
- throw TypeError("Cannot add the same private member more than once");
11458
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
11459
- };
11460
- var _selectorCache;
11461
11350
  const removePseudoClassesAndElementsPattern = /(?<!\\)::?[a-z-]+(?:\(.+\))?/gi;
11351
+ const doubleNestingPattern = />\s*(?=>|$)/g;
11462
11352
  const removeTrailingCommasPattern = /\(\s*,|,\s*\)/g;
11463
11353
  class Beasties {
11354
+ #selectorCache = /* @__PURE__ */ new Map();
11355
+ options;
11356
+ logger;
11357
+ fs;
11464
11358
  constructor(options = {}) {
11465
- __privateAdd(this, _selectorCache, /* @__PURE__ */ new Map());
11466
- __publicField(this, "options");
11467
- __publicField(this, "logger");
11468
- __publicField(this, "fs");
11469
11359
  this.options = Object.assign({
11470
11360
  logLevel: "info",
11471
11361
  path: "",
@@ -11486,8 +11376,7 @@ class Beasties {
11486
11376
  const callback = (err, data) => {
11487
11377
  if (err)
11488
11378
  reject(err);
11489
- else
11490
- resolve(data.toString());
11379
+ else resolve(data.toString());
11491
11380
  };
11492
11381
  if (fs && fs.readFile) {
11493
11382
  fs.readFile(filename, callback);
@@ -11616,11 +11505,6 @@ class Beasties {
11616
11505
  */
11617
11506
  async embedLinkedStylesheet(link, document) {
11618
11507
  const href = link.getAttribute("href");
11619
- let media = link.getAttribute("media");
11620
- if (media && !validateMediaQuery(media)) {
11621
- media = void 0;
11622
- }
11623
- const preloadMode = this.options.preload;
11624
11508
  if (!href?.endsWith(".css")) {
11625
11509
  return void 0;
11626
11510
  }
@@ -11637,6 +11521,11 @@ class Beasties {
11637
11521
  if (this.checkInlineThreshold(link, style, sheet)) {
11638
11522
  return;
11639
11523
  }
11524
+ let media = link.getAttribute("media");
11525
+ if (media && !validateMediaQuery(media)) {
11526
+ media = void 0;
11527
+ }
11528
+ const preloadMode = this.options.preload;
11640
11529
  let cssLoaderPreamble = "function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}";
11641
11530
  const lazy = preloadMode === "js-lazy";
11642
11531
  if (lazy) {
@@ -11673,13 +11562,20 @@ class Beasties {
11673
11562
  link.setAttribute("title", "styles");
11674
11563
  link.setAttribute("onload", `this.title='';this.rel='stylesheet'`);
11675
11564
  noscriptFallback = true;
11565
+ } else if (preloadMode === "swap-low") {
11566
+ link.setAttribute("rel", "alternate stylesheet");
11567
+ link.setAttribute("title", "styles");
11568
+ link.setAttribute("onload", `this.title='';this.rel='stylesheet'`);
11569
+ noscriptFallback = true;
11676
11570
  } else if (preloadMode === "swap") {
11677
11571
  link.setAttribute("onload", "this.rel='stylesheet'");
11572
+ updateLinkToPreload = true;
11678
11573
  noscriptFallback = true;
11679
11574
  } else {
11680
11575
  const bodyLink = link.cloneNode(false);
11681
11576
  bodyLink.removeAttribute("id");
11682
11577
  document.body.appendChild(bodyLink);
11578
+ style.$$links.push(bodyLink);
11683
11579
  updateLinkToPreload = true;
11684
11580
  }
11685
11581
  }
@@ -11701,21 +11597,22 @@ class Beasties {
11701
11597
  pruneSource(style, before, sheetInverse) {
11702
11598
  const minSize = this.options.minimumExternalSize;
11703
11599
  const name = style.$$name;
11704
- if (minSize && sheetInverse.length < minSize) {
11600
+ const shouldInline = minSize && sheetInverse.length < minSize;
11601
+ if (shouldInline) {
11705
11602
  this.logger.info?.(
11706
11603
  `\x1B[32mInlined all of ${name} (non-critical external stylesheet would have been ${sheetInverse.length}b, which was below the threshold of ${minSize})\x1B[39m`
11707
11604
  );
11605
+ }
11606
+ if (shouldInline || !sheetInverse) {
11708
11607
  style.textContent = before;
11709
11608
  if (style.$$links) {
11710
11609
  for (const link of style.$$links) {
11711
11610
  const parent = link.parentNode;
11712
- if (parent)
11713
- parent.removeChild(link);
11611
+ parent?.removeChild(link);
11714
11612
  }
11715
11613
  }
11716
- return true;
11717
11614
  }
11718
- return false;
11615
+ return !!shouldInline;
11719
11616
  }
11720
11617
  /**
11721
11618
  * Parse the stylesheet within a <style> element, then reduce it to contain only rules used by the document.
@@ -11833,7 +11730,7 @@ class Beasties {
11833
11730
  }
11834
11731
  }
11835
11732
  }
11836
- if (rule.type === "atrule" && rule.name === "font-face")
11733
+ if (rule.type === "atrule" && (rule.name === "font-face" || rule.name === "layer"))
11837
11734
  return;
11838
11735
  const hasRemainingRules = ("nodes" in rule && rule.nodes?.some((rule2) => !rule2.$$remove)) ?? true;
11839
11736
  return hasRemainingRules;
@@ -11919,16 +11816,15 @@ class Beasties {
11919
11816
  );
11920
11817
  }
11921
11818
  normalizeCssSelector(sel) {
11922
- let normalizedSelector = __privateGet(this, _selectorCache).get(sel);
11819
+ let normalizedSelector = this.#selectorCache.get(sel);
11923
11820
  if (normalizedSelector !== void 0) {
11924
11821
  return normalizedSelector;
11925
11822
  }
11926
- normalizedSelector = sel.replace(removePseudoClassesAndElementsPattern, "").replace(removeTrailingCommasPattern, (match) => match.includes("(") ? "(" : ")").trim();
11927
- __privateGet(this, _selectorCache).set(sel, normalizedSelector);
11823
+ normalizedSelector = sel.replace(removePseudoClassesAndElementsPattern, "").replace(removeTrailingCommasPattern, (match) => match.includes("(") ? "(" : ")").replace(doubleNestingPattern, "> *").trim();
11824
+ this.#selectorCache.set(sel, normalizedSelector);
11928
11825
  return normalizedSelector;
11929
11826
  }
11930
11827
  }
11931
- _selectorCache = new WeakMap();
11932
11828
  function formatSize(size) {
11933
11829
  if (size <= 0) {
11934
11830
  return "0 bytes";