@m2c2kit/build-helpers 0.3.30 → 0.3.31
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.
- package/dist/index.js +275 -1448
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -19,20 +19,6 @@ import { fileURLToPath as fileURLToPath$1 } from 'node:url';
|
|
|
19
19
|
import 'node:stream';
|
|
20
20
|
import child_process$2 from 'child_process';
|
|
21
21
|
|
|
22
|
-
// Generated using scripts/write-decode-map.ts
|
|
23
|
-
const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
24
|
-
// prettier-ignore
|
|
25
|
-
/* #__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"
|
|
26
|
-
.split("")
|
|
27
|
-
.map((c) => c.charCodeAt(0)));
|
|
28
|
-
|
|
29
|
-
// Generated using scripts/write-decode-map.ts
|
|
30
|
-
const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
31
|
-
// prettier-ignore
|
|
32
|
-
/* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
33
|
-
.split("")
|
|
34
|
-
.map((c) => c.charCodeAt(0)));
|
|
35
|
-
|
|
36
22
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
37
23
|
var _a;
|
|
38
24
|
const decodeMap = new Map([
|
|
@@ -71,7 +57,7 @@ const decodeMap = new Map([
|
|
|
71
57
|
*/
|
|
72
58
|
const fromCodePoint =
|
|
73
59
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
74
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a :
|
|
60
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
75
61
|
let output = "";
|
|
76
62
|
if (codePoint > 65535) {
|
|
77
63
|
codePoint -= 65536;
|
|
@@ -80,7 +66,7 @@ const fromCodePoint =
|
|
|
80
66
|
}
|
|
81
67
|
output += String.fromCharCode(codePoint);
|
|
82
68
|
return output;
|
|
83
|
-
};
|
|
69
|
+
});
|
|
84
70
|
/**
|
|
85
71
|
* Replace the given code point with a replacement character if it is a
|
|
86
72
|
* surrogate or is outside the valid range. Otherwise return the code
|
|
@@ -95,6 +81,58 @@ function replaceCodePoint(codePoint) {
|
|
|
95
81
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
96
82
|
}
|
|
97
83
|
|
|
84
|
+
/*
|
|
85
|
+
* Shared base64 decode helper for generated decode data.
|
|
86
|
+
* Assumes global atob is available.
|
|
87
|
+
*/
|
|
88
|
+
function decodeBase64(input) {
|
|
89
|
+
const binary =
|
|
90
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
91
|
+
typeof atob === "function"
|
|
92
|
+
? // Browser (and Node >=16)
|
|
93
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
94
|
+
atob(input)
|
|
95
|
+
: // Older Node versions (<16)
|
|
96
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
97
|
+
typeof Buffer.from === "function"
|
|
98
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
99
|
+
Buffer.from(input, "base64").toString("binary")
|
|
100
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
101
|
+
new Buffer(input, "base64").toString("binary");
|
|
102
|
+
const evenLength = binary.length & -2; // Round down to even length
|
|
103
|
+
const out = new Uint16Array(evenLength / 2);
|
|
104
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
105
|
+
const lo = binary.charCodeAt(index);
|
|
106
|
+
const hi = binary.charCodeAt(index + 1);
|
|
107
|
+
out[outIndex++] = lo | (hi << 8);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Generated using scripts/write-decode-map.ts
|
|
113
|
+
const htmlDecodeTree = /* #__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
114
|
+
|
|
115
|
+
// Generated using scripts/write-decode-map.ts
|
|
116
|
+
const xmlDecodeTree = /* #__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
120
|
+
*
|
|
121
|
+
* Bit layout (16 bits total):
|
|
122
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
123
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
124
|
+
* If valueLength==0: compact run flag.
|
|
125
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
126
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
127
|
+
*/
|
|
128
|
+
var BinTrieFlags;
|
|
129
|
+
(function (BinTrieFlags) {
|
|
130
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
131
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
132
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
133
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
134
|
+
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
135
|
+
|
|
98
136
|
var CharCodes$1;
|
|
99
137
|
(function (CharCodes) {
|
|
100
138
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -112,12 +150,6 @@ var CharCodes$1;
|
|
|
112
150
|
})(CharCodes$1 || (CharCodes$1 = {}));
|
|
113
151
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
114
152
|
const TO_LOWER_BIT = 32;
|
|
115
|
-
var BinTrieFlags;
|
|
116
|
-
(function (BinTrieFlags) {
|
|
117
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
118
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
119
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
120
|
-
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
121
153
|
function isNumber$1(code) {
|
|
122
154
|
return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
|
|
123
155
|
}
|
|
@@ -162,6 +194,7 @@ var DecodingMode;
|
|
|
162
194
|
class EntityDecoder {
|
|
163
195
|
constructor(
|
|
164
196
|
/** The tree used to decode entities. */
|
|
197
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
165
198
|
decodeTree,
|
|
166
199
|
/**
|
|
167
200
|
* The function that is called when a codepoint is decoded.
|
|
@@ -195,6 +228,8 @@ class EntityDecoder {
|
|
|
195
228
|
this.excess = 1;
|
|
196
229
|
/** The mode in which the decoder is operating. */
|
|
197
230
|
this.decodeMode = DecodingMode.Strict;
|
|
231
|
+
/** The number of characters that have been consumed in the current run. */
|
|
232
|
+
this.runConsumed = 0;
|
|
198
233
|
}
|
|
199
234
|
/** Resets the instance to make it reusable. */
|
|
200
235
|
startEntity(decodeMode) {
|
|
@@ -204,6 +239,7 @@ class EntityDecoder {
|
|
|
204
239
|
this.treeIndex = 0;
|
|
205
240
|
this.excess = 1;
|
|
206
241
|
this.consumed = 1;
|
|
242
|
+
this.runConsumed = 0;
|
|
207
243
|
}
|
|
208
244
|
/**
|
|
209
245
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
@@ -262,15 +298,6 @@ class EntityDecoder {
|
|
|
262
298
|
this.state = EntityDecoderState.NumericDecimal;
|
|
263
299
|
return this.stateNumericDecimal(input, offset);
|
|
264
300
|
}
|
|
265
|
-
addToNumericResult(input, start, end, base) {
|
|
266
|
-
if (start !== end) {
|
|
267
|
-
const digitCount = end - start;
|
|
268
|
-
this.result =
|
|
269
|
-
this.result * Math.pow(base, digitCount) +
|
|
270
|
-
Number.parseInt(input.substr(start, digitCount), base);
|
|
271
|
-
this.consumed += digitCount;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
301
|
/**
|
|
275
302
|
* Parses a hexadecimal numeric entity.
|
|
276
303
|
*
|
|
@@ -281,19 +308,22 @@ class EntityDecoder {
|
|
|
281
308
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
282
309
|
*/
|
|
283
310
|
stateNumericHex(input, offset) {
|
|
284
|
-
const startIndex = offset;
|
|
285
311
|
while (offset < input.length) {
|
|
286
312
|
const char = input.charCodeAt(offset);
|
|
287
313
|
if (isNumber$1(char) || isHexadecimalCharacter(char)) {
|
|
288
|
-
|
|
314
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
315
|
+
const digit = char <= CharCodes$1.NINE
|
|
316
|
+
? char - CharCodes$1.ZERO
|
|
317
|
+
: (char | TO_LOWER_BIT) - CharCodes$1.LOWER_A + 10;
|
|
318
|
+
this.result = this.result * 16 + digit;
|
|
319
|
+
this.consumed++;
|
|
320
|
+
offset++;
|
|
289
321
|
}
|
|
290
322
|
else {
|
|
291
|
-
this.addToNumericResult(input, startIndex, offset, 16);
|
|
292
323
|
return this.emitNumericEntity(char, 3);
|
|
293
324
|
}
|
|
294
325
|
}
|
|
295
|
-
|
|
296
|
-
return -1;
|
|
326
|
+
return -1; // Incomplete entity
|
|
297
327
|
}
|
|
298
328
|
/**
|
|
299
329
|
* Parses a decimal numeric entity.
|
|
@@ -305,19 +335,18 @@ class EntityDecoder {
|
|
|
305
335
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
306
336
|
*/
|
|
307
337
|
stateNumericDecimal(input, offset) {
|
|
308
|
-
const startIndex = offset;
|
|
309
338
|
while (offset < input.length) {
|
|
310
339
|
const char = input.charCodeAt(offset);
|
|
311
340
|
if (isNumber$1(char)) {
|
|
312
|
-
|
|
341
|
+
this.result = this.result * 10 + (char - CharCodes$1.ZERO);
|
|
342
|
+
this.consumed++;
|
|
343
|
+
offset++;
|
|
313
344
|
}
|
|
314
345
|
else {
|
|
315
|
-
this.addToNumericResult(input, startIndex, offset, 10);
|
|
316
346
|
return this.emitNumericEntity(char, 2);
|
|
317
347
|
}
|
|
318
348
|
}
|
|
319
|
-
|
|
320
|
-
return -1;
|
|
349
|
+
return -1; // Incomplete entity
|
|
321
350
|
}
|
|
322
351
|
/**
|
|
323
352
|
* Validate and emit a numeric entity.
|
|
@@ -367,10 +396,64 @@ class EntityDecoder {
|
|
|
367
396
|
stateNamedEntity(input, offset) {
|
|
368
397
|
const { decodeTree } = this;
|
|
369
398
|
let current = decodeTree[this.treeIndex];
|
|
370
|
-
// The
|
|
399
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
371
400
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
372
|
-
|
|
401
|
+
while (offset < input.length) {
|
|
402
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
403
|
+
if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
|
|
404
|
+
const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
405
|
+
// If we are starting a run, check the first char.
|
|
406
|
+
if (this.runConsumed === 0) {
|
|
407
|
+
const firstChar = current & BinTrieFlags.JUMP_TABLE;
|
|
408
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
409
|
+
return this.result === 0
|
|
410
|
+
? 0
|
|
411
|
+
: this.emitNotTerminatedNamedEntity();
|
|
412
|
+
}
|
|
413
|
+
offset++;
|
|
414
|
+
this.excess++;
|
|
415
|
+
this.runConsumed++;
|
|
416
|
+
}
|
|
417
|
+
// Check remaining characters in the run.
|
|
418
|
+
while (this.runConsumed < runLength) {
|
|
419
|
+
if (offset >= input.length) {
|
|
420
|
+
return -1;
|
|
421
|
+
}
|
|
422
|
+
const charIndexInPacked = this.runConsumed - 1;
|
|
423
|
+
const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
|
|
424
|
+
const expectedChar = charIndexInPacked % 2 === 0
|
|
425
|
+
? packedWord & 0xff
|
|
426
|
+
: (packedWord >> 8) & 0xff;
|
|
427
|
+
if (input.charCodeAt(offset) !== expectedChar) {
|
|
428
|
+
this.runConsumed = 0;
|
|
429
|
+
return this.result === 0
|
|
430
|
+
? 0
|
|
431
|
+
: this.emitNotTerminatedNamedEntity();
|
|
432
|
+
}
|
|
433
|
+
offset++;
|
|
434
|
+
this.excess++;
|
|
435
|
+
this.runConsumed++;
|
|
436
|
+
}
|
|
437
|
+
this.runConsumed = 0;
|
|
438
|
+
this.treeIndex += 1 + (runLength >> 1);
|
|
439
|
+
current = decodeTree[this.treeIndex];
|
|
440
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
441
|
+
}
|
|
442
|
+
if (offset >= input.length)
|
|
443
|
+
break;
|
|
373
444
|
const char = input.charCodeAt(offset);
|
|
445
|
+
/*
|
|
446
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
447
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
448
|
+
* a value on the current node, it requires a semicolon, and the
|
|
449
|
+
* current input character is a semicolon, emit the entity using the
|
|
450
|
+
* current node (without descending further).
|
|
451
|
+
*/
|
|
452
|
+
if (char === CharCodes$1.SEMI &&
|
|
453
|
+
valueLength !== 0 &&
|
|
454
|
+
(current & BinTrieFlags.FLAG13) !== 0) {
|
|
455
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
456
|
+
}
|
|
374
457
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
375
458
|
if (this.treeIndex < 0) {
|
|
376
459
|
return this.result === 0 ||
|
|
@@ -392,12 +475,16 @@ class EntityDecoder {
|
|
|
392
475
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
393
476
|
}
|
|
394
477
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
395
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
478
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
479
|
+
(current & BinTrieFlags.FLAG13) === 0) {
|
|
396
480
|
this.result = this.treeIndex;
|
|
397
481
|
this.consumed += this.excess;
|
|
398
482
|
this.excess = 0;
|
|
399
483
|
}
|
|
400
484
|
}
|
|
485
|
+
// Increment offset & excess for next iteration
|
|
486
|
+
offset++;
|
|
487
|
+
this.excess++;
|
|
401
488
|
}
|
|
402
489
|
return -1;
|
|
403
490
|
}
|
|
@@ -426,7 +513,8 @@ class EntityDecoder {
|
|
|
426
513
|
emitNamedEntityData(result, valueLength, consumed) {
|
|
427
514
|
const { decodeTree } = this;
|
|
428
515
|
this.emitCodePoint(valueLength === 1
|
|
429
|
-
? decodeTree[result] &
|
|
516
|
+
? decodeTree[result] &
|
|
517
|
+
~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
|
|
430
518
|
: decodeTree[result + 1], consumed);
|
|
431
519
|
if (valueLength === 3) {
|
|
432
520
|
// For multi-byte values, we need to emit the second byte.
|
|
@@ -494,21 +582,27 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
|
494
582
|
? -1
|
|
495
583
|
: decodeTree[nodeIndex + value] - 1;
|
|
496
584
|
}
|
|
497
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
585
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
586
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
587
|
+
/*
|
|
588
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
589
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
590
|
+
*/
|
|
591
|
+
let lo = 0;
|
|
592
|
+
let hi = branchCount - 1;
|
|
501
593
|
while (lo <= hi) {
|
|
502
594
|
const mid = (lo + hi) >>> 1;
|
|
503
|
-
const
|
|
504
|
-
|
|
595
|
+
const slot = mid >> 1;
|
|
596
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
597
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
598
|
+
if (midKey < char) {
|
|
505
599
|
lo = mid + 1;
|
|
506
600
|
}
|
|
507
|
-
else if (
|
|
601
|
+
else if (midKey > char) {
|
|
508
602
|
hi = mid - 1;
|
|
509
603
|
}
|
|
510
604
|
else {
|
|
511
|
-
return decodeTree[
|
|
605
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
512
606
|
}
|
|
513
607
|
}
|
|
514
608
|
return -1;
|
|
@@ -1090,15 +1184,22 @@ class Tokenizer {
|
|
|
1090
1184
|
: DecodingMode.Attribute);
|
|
1091
1185
|
}
|
|
1092
1186
|
stateInEntity() {
|
|
1093
|
-
const
|
|
1187
|
+
const indexInBuffer = this.index - this.offset;
|
|
1188
|
+
const length = this.entityDecoder.write(this.buffer, indexInBuffer);
|
|
1094
1189
|
// If `length` is positive, we are done with the entity.
|
|
1095
1190
|
if (length >= 0) {
|
|
1096
1191
|
this.state = this.baseState;
|
|
1097
1192
|
if (length === 0) {
|
|
1098
|
-
this.index
|
|
1193
|
+
this.index -= 1;
|
|
1099
1194
|
}
|
|
1100
1195
|
}
|
|
1101
1196
|
else {
|
|
1197
|
+
if (indexInBuffer < this.buffer.length &&
|
|
1198
|
+
this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) {
|
|
1199
|
+
this.state = this.baseState;
|
|
1200
|
+
this.index -= 1;
|
|
1201
|
+
return;
|
|
1202
|
+
}
|
|
1102
1203
|
// Mark buffer as consumed.
|
|
1103
1204
|
this.index = this.offset + this.buffer.length - 1;
|
|
1104
1205
|
}
|
|
@@ -5673,7 +5774,7 @@ function encode(decoded) {
|
|
|
5673
5774
|
return writer.flush();
|
|
5674
5775
|
}
|
|
5675
5776
|
|
|
5676
|
-
|
|
5777
|
+
class BitSet {
|
|
5677
5778
|
constructor(arg) {
|
|
5678
5779
|
this.bits = arg instanceof BitSet ? arg.bits.slice() : [];
|
|
5679
5780
|
}
|
|
@@ -5685,9 +5786,9 @@ let BitSet$1 = class BitSet {
|
|
|
5685
5786
|
has(n) {
|
|
5686
5787
|
return !!(this.bits[n >> 5] & (1 << (n & 31)));
|
|
5687
5788
|
}
|
|
5688
|
-
}
|
|
5789
|
+
}
|
|
5689
5790
|
|
|
5690
|
-
|
|
5791
|
+
class Chunk {
|
|
5691
5792
|
constructor(start, end, content) {
|
|
5692
5793
|
this.start = start;
|
|
5693
5794
|
this.end = end;
|
|
@@ -5864,9 +5965,9 @@ let Chunk$1 = class Chunk {
|
|
|
5864
5965
|
if (this.outro.length) return true;
|
|
5865
5966
|
}
|
|
5866
5967
|
}
|
|
5867
|
-
}
|
|
5968
|
+
}
|
|
5868
5969
|
|
|
5869
|
-
function getBtoa
|
|
5970
|
+
function getBtoa() {
|
|
5870
5971
|
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
|
5871
5972
|
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
|
5872
5973
|
} else if (typeof Buffer === 'function') {
|
|
@@ -5878,9 +5979,9 @@ function getBtoa$1() {
|
|
|
5878
5979
|
}
|
|
5879
5980
|
}
|
|
5880
5981
|
|
|
5881
|
-
const btoa
|
|
5982
|
+
const btoa = /*#__PURE__*/ getBtoa();
|
|
5882
5983
|
|
|
5883
|
-
|
|
5984
|
+
class SourceMap {
|
|
5884
5985
|
constructor(properties) {
|
|
5885
5986
|
this.version = 3;
|
|
5886
5987
|
this.file = properties.file;
|
|
@@ -5901,11 +6002,11 @@ let SourceMap$1 = class SourceMap {
|
|
|
5901
6002
|
}
|
|
5902
6003
|
|
|
5903
6004
|
toUrl() {
|
|
5904
|
-
return 'data:application/json;charset=utf-8;base64,' + btoa
|
|
6005
|
+
return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());
|
|
5905
6006
|
}
|
|
5906
|
-
}
|
|
6007
|
+
}
|
|
5907
6008
|
|
|
5908
|
-
function guessIndent
|
|
6009
|
+
function guessIndent(code) {
|
|
5909
6010
|
const lines = code.split('\n');
|
|
5910
6011
|
|
|
5911
6012
|
const tabbed = lines.filter((line) => /^\t+/.test(line));
|
|
@@ -5931,7 +6032,7 @@ function guessIndent$1(code) {
|
|
|
5931
6032
|
return new Array(min + 1).join(' ');
|
|
5932
6033
|
}
|
|
5933
6034
|
|
|
5934
|
-
function getRelativePath
|
|
6035
|
+
function getRelativePath(from, to) {
|
|
5935
6036
|
const fromParts = from.split(/[/\\]/);
|
|
5936
6037
|
const toParts = to.split(/[/\\]/);
|
|
5937
6038
|
|
|
@@ -5950,13 +6051,13 @@ function getRelativePath$1(from, to) {
|
|
|
5950
6051
|
return fromParts.concat(toParts).join('/');
|
|
5951
6052
|
}
|
|
5952
6053
|
|
|
5953
|
-
const toString
|
|
6054
|
+
const toString = Object.prototype.toString;
|
|
5954
6055
|
|
|
5955
|
-
function isObject
|
|
5956
|
-
return toString
|
|
6056
|
+
function isObject(thing) {
|
|
6057
|
+
return toString.call(thing) === '[object Object]';
|
|
5957
6058
|
}
|
|
5958
6059
|
|
|
5959
|
-
function getLocator
|
|
6060
|
+
function getLocator(source) {
|
|
5960
6061
|
const originalLines = source.split('\n');
|
|
5961
6062
|
const lineOffsets = [];
|
|
5962
6063
|
|
|
@@ -5982,9 +6083,9 @@ function getLocator$1(source) {
|
|
|
5982
6083
|
};
|
|
5983
6084
|
}
|
|
5984
6085
|
|
|
5985
|
-
const wordRegex
|
|
6086
|
+
const wordRegex = /\w/;
|
|
5986
6087
|
|
|
5987
|
-
|
|
6088
|
+
class Mappings {
|
|
5988
6089
|
constructor(hires) {
|
|
5989
6090
|
this.hires = hires;
|
|
5990
6091
|
this.generatedCodeLine = 0;
|
|
@@ -6052,7 +6153,7 @@ let Mappings$1 = class Mappings {
|
|
|
6052
6153
|
|
|
6053
6154
|
if (this.hires === 'boundary') {
|
|
6054
6155
|
// in hires "boundary", group segments per word boundary than per char
|
|
6055
|
-
if (wordRegex
|
|
6156
|
+
if (wordRegex.test(original[originalCharIndex])) {
|
|
6056
6157
|
// for first char in the boundary found, start the boundary by pushing a segment
|
|
6057
6158
|
if (!charInHiresBoundary) {
|
|
6058
6159
|
this.rawSegments.push(segment);
|
|
@@ -6094,19 +6195,19 @@ let Mappings$1 = class Mappings {
|
|
|
6094
6195
|
|
|
6095
6196
|
this.generatedCodeColumn += lines[lines.length - 1].length;
|
|
6096
6197
|
}
|
|
6097
|
-
}
|
|
6198
|
+
}
|
|
6098
6199
|
|
|
6099
|
-
const n
|
|
6200
|
+
const n = '\n';
|
|
6100
6201
|
|
|
6101
|
-
const warned
|
|
6202
|
+
const warned = {
|
|
6102
6203
|
insertLeft: false,
|
|
6103
6204
|
insertRight: false,
|
|
6104
6205
|
storeName: false,
|
|
6105
6206
|
};
|
|
6106
6207
|
|
|
6107
|
-
|
|
6208
|
+
class MagicString {
|
|
6108
6209
|
constructor(string, options = {}) {
|
|
6109
|
-
const chunk = new Chunk
|
|
6210
|
+
const chunk = new Chunk(0, string.length, string);
|
|
6110
6211
|
|
|
6111
6212
|
Object.defineProperties(this, {
|
|
6112
6213
|
original: { writable: true, value: string },
|
|
@@ -6119,7 +6220,7 @@ let MagicString$1 = class MagicString {
|
|
|
6119
6220
|
byEnd: { writable: true, value: {} },
|
|
6120
6221
|
filename: { writable: true, value: options.filename },
|
|
6121
6222
|
indentExclusionRanges: { writable: true, value: options.indentExclusionRanges },
|
|
6122
|
-
sourcemapLocations: { writable: true, value: new BitSet
|
|
6223
|
+
sourcemapLocations: { writable: true, value: new BitSet() },
|
|
6123
6224
|
storedNames: { writable: true, value: {} },
|
|
6124
6225
|
indentStr: { writable: true, value: undefined },
|
|
6125
6226
|
ignoreList: { writable: true, value: options.ignoreList },
|
|
@@ -6204,7 +6305,7 @@ let MagicString$1 = class MagicString {
|
|
|
6204
6305
|
cloned.indentExclusionRanges = this.indentExclusionRanges.slice();
|
|
6205
6306
|
}
|
|
6206
6307
|
|
|
6207
|
-
cloned.sourcemapLocations = new BitSet
|
|
6308
|
+
cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);
|
|
6208
6309
|
|
|
6209
6310
|
cloned.intro = this.intro;
|
|
6210
6311
|
cloned.outro = this.outro;
|
|
@@ -6217,9 +6318,9 @@ let MagicString$1 = class MagicString {
|
|
|
6217
6318
|
|
|
6218
6319
|
const sourceIndex = 0;
|
|
6219
6320
|
const names = Object.keys(this.storedNames);
|
|
6220
|
-
const mappings = new Mappings
|
|
6321
|
+
const mappings = new Mappings(options.hires);
|
|
6221
6322
|
|
|
6222
|
-
const locate = getLocator
|
|
6323
|
+
const locate = getLocator(this.original);
|
|
6223
6324
|
|
|
6224
6325
|
if (this.intro) {
|
|
6225
6326
|
mappings.advance(this.intro);
|
|
@@ -6251,7 +6352,7 @@ let MagicString$1 = class MagicString {
|
|
|
6251
6352
|
return {
|
|
6252
6353
|
file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
|
|
6253
6354
|
sources: [
|
|
6254
|
-
options.source ? getRelativePath
|
|
6355
|
+
options.source ? getRelativePath(options.file || '', options.source) : options.file || '',
|
|
6255
6356
|
],
|
|
6256
6357
|
sourcesContent: options.includeContent ? [this.original] : undefined,
|
|
6257
6358
|
names,
|
|
@@ -6261,12 +6362,12 @@ let MagicString$1 = class MagicString {
|
|
|
6261
6362
|
}
|
|
6262
6363
|
|
|
6263
6364
|
generateMap(options) {
|
|
6264
|
-
return new SourceMap
|
|
6365
|
+
return new SourceMap(this.generateDecodedMap(options));
|
|
6265
6366
|
}
|
|
6266
6367
|
|
|
6267
6368
|
_ensureindentStr() {
|
|
6268
6369
|
if (this.indentStr === undefined) {
|
|
6269
|
-
this.indentStr = guessIndent
|
|
6370
|
+
this.indentStr = guessIndent(this.original);
|
|
6270
6371
|
}
|
|
6271
6372
|
}
|
|
6272
6373
|
|
|
@@ -6283,7 +6384,7 @@ let MagicString$1 = class MagicString {
|
|
|
6283
6384
|
indent(indentStr, options) {
|
|
6284
6385
|
const pattern = /^[^\r\n]/gm;
|
|
6285
6386
|
|
|
6286
|
-
if (isObject
|
|
6387
|
+
if (isObject(indentStr)) {
|
|
6287
6388
|
options = indentStr;
|
|
6288
6389
|
indentStr = undefined;
|
|
6289
6390
|
}
|
|
@@ -6375,22 +6476,22 @@ let MagicString$1 = class MagicString {
|
|
|
6375
6476
|
}
|
|
6376
6477
|
|
|
6377
6478
|
insertLeft(index, content) {
|
|
6378
|
-
if (!warned
|
|
6479
|
+
if (!warned.insertLeft) {
|
|
6379
6480
|
console.warn(
|
|
6380
6481
|
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
|
6381
6482
|
);
|
|
6382
|
-
warned
|
|
6483
|
+
warned.insertLeft = true;
|
|
6383
6484
|
}
|
|
6384
6485
|
|
|
6385
6486
|
return this.appendLeft(index, content);
|
|
6386
6487
|
}
|
|
6387
6488
|
|
|
6388
6489
|
insertRight(index, content) {
|
|
6389
|
-
if (!warned
|
|
6490
|
+
if (!warned.insertRight) {
|
|
6390
6491
|
console.warn(
|
|
6391
6492
|
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
|
6392
6493
|
);
|
|
6393
|
-
warned
|
|
6494
|
+
warned.insertRight = true;
|
|
6394
6495
|
}
|
|
6395
6496
|
|
|
6396
6497
|
return this.prependRight(index, content);
|
|
@@ -6463,11 +6564,11 @@ let MagicString$1 = class MagicString {
|
|
|
6463
6564
|
this._split(end);
|
|
6464
6565
|
|
|
6465
6566
|
if (options === true) {
|
|
6466
|
-
if (!warned
|
|
6567
|
+
if (!warned.storeName) {
|
|
6467
6568
|
console.warn(
|
|
6468
6569
|
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
|
6469
6570
|
);
|
|
6470
|
-
warned
|
|
6571
|
+
warned.storeName = true;
|
|
6471
6572
|
}
|
|
6472
6573
|
|
|
6473
6574
|
options = { storeName: true };
|
|
@@ -6500,7 +6601,7 @@ let MagicString$1 = class MagicString {
|
|
|
6500
6601
|
first.edit(content, storeName, !overwrite);
|
|
6501
6602
|
} else {
|
|
6502
6603
|
// must be inserting at the end
|
|
6503
|
-
const newChunk = new Chunk
|
|
6604
|
+
const newChunk = new Chunk(start, end, '').edit(content, storeName);
|
|
6504
6605
|
|
|
6505
6606
|
// TODO last chunk in the array may not be the last chunk, if it's moved...
|
|
6506
6607
|
last.next = newChunk;
|
|
@@ -6619,30 +6720,30 @@ let MagicString$1 = class MagicString {
|
|
|
6619
6720
|
}
|
|
6620
6721
|
|
|
6621
6722
|
lastLine() {
|
|
6622
|
-
let lineIndex = this.outro.lastIndexOf(n
|
|
6723
|
+
let lineIndex = this.outro.lastIndexOf(n);
|
|
6623
6724
|
if (lineIndex !== -1) return this.outro.substr(lineIndex + 1);
|
|
6624
6725
|
let lineStr = this.outro;
|
|
6625
6726
|
let chunk = this.lastChunk;
|
|
6626
6727
|
do {
|
|
6627
6728
|
if (chunk.outro.length > 0) {
|
|
6628
|
-
lineIndex = chunk.outro.lastIndexOf(n
|
|
6729
|
+
lineIndex = chunk.outro.lastIndexOf(n);
|
|
6629
6730
|
if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;
|
|
6630
6731
|
lineStr = chunk.outro + lineStr;
|
|
6631
6732
|
}
|
|
6632
6733
|
|
|
6633
6734
|
if (chunk.content.length > 0) {
|
|
6634
|
-
lineIndex = chunk.content.lastIndexOf(n
|
|
6735
|
+
lineIndex = chunk.content.lastIndexOf(n);
|
|
6635
6736
|
if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;
|
|
6636
6737
|
lineStr = chunk.content + lineStr;
|
|
6637
6738
|
}
|
|
6638
6739
|
|
|
6639
6740
|
if (chunk.intro.length > 0) {
|
|
6640
|
-
lineIndex = chunk.intro.lastIndexOf(n
|
|
6741
|
+
lineIndex = chunk.intro.lastIndexOf(n);
|
|
6641
6742
|
if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;
|
|
6642
6743
|
lineStr = chunk.intro + lineStr;
|
|
6643
6744
|
}
|
|
6644
6745
|
} while ((chunk = chunk.previous));
|
|
6645
|
-
lineIndex = this.intro.lastIndexOf(n
|
|
6746
|
+
lineIndex = this.intro.lastIndexOf(n);
|
|
6646
6747
|
if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;
|
|
6647
6748
|
return this.intro + lineStr;
|
|
6648
6749
|
}
|
|
@@ -6732,7 +6833,7 @@ let MagicString$1 = class MagicString {
|
|
|
6732
6833
|
_splitChunk(chunk, index) {
|
|
6733
6834
|
if (chunk.edited && chunk.content.length) {
|
|
6734
6835
|
// zero-length edited chunks are a special case (overlapping replacements)
|
|
6735
|
-
const loc = getLocator
|
|
6836
|
+
const loc = getLocator(this.original)(index);
|
|
6736
6837
|
throw new Error(
|
|
6737
6838
|
`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`,
|
|
6738
6839
|
);
|
|
@@ -6964,7 +7065,7 @@ let MagicString$1 = class MagicString {
|
|
|
6964
7065
|
|
|
6965
7066
|
return this._replaceRegexp(searchValue, replacement);
|
|
6966
7067
|
}
|
|
6967
|
-
}
|
|
7068
|
+
}
|
|
6968
7069
|
|
|
6969
7070
|
const HASH_CHARACTER_LENGTH = 16;
|
|
6970
7071
|
function hashM2c2kitAssets(rootDir, cwd = "") {
|
|
@@ -6973,7 +7074,7 @@ function hashM2c2kitAssets(rootDir, cwd = "") {
|
|
|
6973
7074
|
name: "hash-m2c2kit-assets",
|
|
6974
7075
|
renderChunk: {
|
|
6975
7076
|
handler(code) {
|
|
6976
|
-
const magicString = new MagicString
|
|
7077
|
+
const magicString = new MagicString(code);
|
|
6977
7078
|
magicString.replace(
|
|
6978
7079
|
new RegExp("__NO_M2C2KIT_MANIFEST_JSON_URL__", "g"),
|
|
6979
7080
|
"manifest.json"
|
|
@@ -7178,7 +7279,7 @@ function restoreImportMeta(pattern = "import_meta = {};", replacement = "import_
|
|
|
7178
7279
|
name: "restore-import-meta",
|
|
7179
7280
|
renderChunk: {
|
|
7180
7281
|
handler(code) {
|
|
7181
|
-
const magicString = new MagicString
|
|
7282
|
+
const magicString = new MagicString(code);
|
|
7182
7283
|
magicString.replace(new RegExp(pattern, "g"), replacement);
|
|
7183
7284
|
return {
|
|
7184
7285
|
code: magicString.toString(),
|
|
@@ -7548,7 +7649,7 @@ var http2$1 = ">= 8.8";
|
|
|
7548
7649
|
var https$1 = true;
|
|
7549
7650
|
var inspector$1 = ">= 8";
|
|
7550
7651
|
var _linklist$1 = "< 8";
|
|
7551
|
-
var module$
|
|
7652
|
+
var module$2 = true;
|
|
7552
7653
|
var net$1 = true;
|
|
7553
7654
|
var os$1 = true;
|
|
7554
7655
|
var path$2 = true;
|
|
@@ -7733,7 +7834,7 @@ var require$$1$1 = {
|
|
|
7733
7834
|
">= 19"
|
|
7734
7835
|
],
|
|
7735
7836
|
_linklist: _linklist$1,
|
|
7736
|
-
module: module$
|
|
7837
|
+
module: module$2,
|
|
7737
7838
|
"node:module": [
|
|
7738
7839
|
">= 14.18 && < 15",
|
|
7739
7840
|
">= 16"
|
|
@@ -8412,7 +8513,7 @@ var http2 = ">= 8.8";
|
|
|
8412
8513
|
var https = true;
|
|
8413
8514
|
var inspector = ">= 8";
|
|
8414
8515
|
var _linklist = "< 8";
|
|
8415
|
-
var module = true;
|
|
8516
|
+
var module$1 = true;
|
|
8416
8517
|
var net = true;
|
|
8417
8518
|
var os = true;
|
|
8418
8519
|
var path$1 = true;
|
|
@@ -8597,7 +8698,7 @@ var require$$1 = {
|
|
|
8597
8698
|
">= 19"
|
|
8598
8699
|
],
|
|
8599
8700
|
_linklist: _linklist,
|
|
8600
|
-
module: module,
|
|
8701
|
+
module: module$1,
|
|
8601
8702
|
"node:module": [
|
|
8602
8703
|
">= 14.18 && < 15",
|
|
8603
8704
|
">= 16"
|
|
@@ -11598,9 +11699,9 @@ var hasRequiredUtils$4;
|
|
|
11598
11699
|
function requireUtils$4 () {
|
|
11599
11700
|
if (hasRequiredUtils$4) return utils$3;
|
|
11600
11701
|
hasRequiredUtils$4 = 1;
|
|
11601
|
-
(function (exports) {
|
|
11702
|
+
(function (exports$1) {
|
|
11602
11703
|
|
|
11603
|
-
exports.isInteger = num => {
|
|
11704
|
+
exports$1.isInteger = num => {
|
|
11604
11705
|
if (typeof num === 'number') {
|
|
11605
11706
|
return Number.isInteger(num);
|
|
11606
11707
|
}
|
|
@@ -11614,15 +11715,15 @@ function requireUtils$4 () {
|
|
|
11614
11715
|
* Find a node of the given type
|
|
11615
11716
|
*/
|
|
11616
11717
|
|
|
11617
|
-
exports.find = (node, type) => node.nodes.find(node => node.type === type);
|
|
11718
|
+
exports$1.find = (node, type) => node.nodes.find(node => node.type === type);
|
|
11618
11719
|
|
|
11619
11720
|
/**
|
|
11620
11721
|
* Find a node of the given type
|
|
11621
11722
|
*/
|
|
11622
11723
|
|
|
11623
|
-
exports.exceedsLimit = (min, max, step = 1, limit) => {
|
|
11724
|
+
exports$1.exceedsLimit = (min, max, step = 1, limit) => {
|
|
11624
11725
|
if (limit === false) return false;
|
|
11625
|
-
if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
|
|
11726
|
+
if (!exports$1.isInteger(min) || !exports$1.isInteger(max)) return false;
|
|
11626
11727
|
return ((Number(max) - Number(min)) / Number(step)) >= limit;
|
|
11627
11728
|
};
|
|
11628
11729
|
|
|
@@ -11630,7 +11731,7 @@ function requireUtils$4 () {
|
|
|
11630
11731
|
* Escape the given node with '\\' before node.value
|
|
11631
11732
|
*/
|
|
11632
11733
|
|
|
11633
|
-
exports.escapeNode = (block, n = 0, type) => {
|
|
11734
|
+
exports$1.escapeNode = (block, n = 0, type) => {
|
|
11634
11735
|
const node = block.nodes[n];
|
|
11635
11736
|
if (!node) return;
|
|
11636
11737
|
|
|
@@ -11646,7 +11747,7 @@ function requireUtils$4 () {
|
|
|
11646
11747
|
* Returns true if the given brace node should be enclosed in literal braces
|
|
11647
11748
|
*/
|
|
11648
11749
|
|
|
11649
|
-
exports.encloseBrace = node => {
|
|
11750
|
+
exports$1.encloseBrace = node => {
|
|
11650
11751
|
if (node.type !== 'brace') return false;
|
|
11651
11752
|
if ((node.commas >> 0 + node.ranges >> 0) === 0) {
|
|
11652
11753
|
node.invalid = true;
|
|
@@ -11659,7 +11760,7 @@ function requireUtils$4 () {
|
|
|
11659
11760
|
* Returns true if a brace node is invalid.
|
|
11660
11761
|
*/
|
|
11661
11762
|
|
|
11662
|
-
exports.isInvalidBrace = block => {
|
|
11763
|
+
exports$1.isInvalidBrace = block => {
|
|
11663
11764
|
if (block.type !== 'brace') return false;
|
|
11664
11765
|
if (block.invalid === true || block.dollar) return true;
|
|
11665
11766
|
if ((block.commas >> 0 + block.ranges >> 0) === 0) {
|
|
@@ -11677,7 +11778,7 @@ function requireUtils$4 () {
|
|
|
11677
11778
|
* Returns true if a node is an open or close node
|
|
11678
11779
|
*/
|
|
11679
11780
|
|
|
11680
|
-
exports.isOpenOrClose = node => {
|
|
11781
|
+
exports$1.isOpenOrClose = node => {
|
|
11681
11782
|
if (node.type === 'open' || node.type === 'close') {
|
|
11682
11783
|
return true;
|
|
11683
11784
|
}
|
|
@@ -11688,7 +11789,7 @@ function requireUtils$4 () {
|
|
|
11688
11789
|
* Reduce an array of text nodes.
|
|
11689
11790
|
*/
|
|
11690
11791
|
|
|
11691
|
-
exports.reduce = nodes => nodes.reduce((acc, node) => {
|
|
11792
|
+
exports$1.reduce = nodes => nodes.reduce((acc, node) => {
|
|
11692
11793
|
if (node.type === 'text') acc.push(node.value);
|
|
11693
11794
|
if (node.type === 'range') node.type = 'text';
|
|
11694
11795
|
return acc;
|
|
@@ -11698,7 +11799,7 @@ function requireUtils$4 () {
|
|
|
11698
11799
|
* Flatten an array
|
|
11699
11800
|
*/
|
|
11700
11801
|
|
|
11701
|
-
exports.flatten = (...args) => {
|
|
11802
|
+
exports$1.flatten = (...args) => {
|
|
11702
11803
|
const result = [];
|
|
11703
11804
|
|
|
11704
11805
|
const flat = arr => {
|
|
@@ -13306,7 +13407,7 @@ var hasRequiredUtils$3;
|
|
|
13306
13407
|
function requireUtils$3 () {
|
|
13307
13408
|
if (hasRequiredUtils$3) return utils$2;
|
|
13308
13409
|
hasRequiredUtils$3 = 1;
|
|
13309
|
-
(function (exports) {
|
|
13410
|
+
(function (exports$1) {
|
|
13310
13411
|
|
|
13311
13412
|
const path = path$3;
|
|
13312
13413
|
const win32 = process.platform === 'win32';
|
|
@@ -13317,19 +13418,19 @@ function requireUtils$3 () {
|
|
|
13317
13418
|
REGEX_SPECIAL_CHARS_GLOBAL
|
|
13318
13419
|
} = requireConstants$3();
|
|
13319
13420
|
|
|
13320
|
-
exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
13321
|
-
exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
13322
|
-
exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
|
|
13323
|
-
exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
13324
|
-
exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
13421
|
+
exports$1.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
13422
|
+
exports$1.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
13423
|
+
exports$1.isRegexChar = str => str.length === 1 && exports$1.hasRegexChars(str);
|
|
13424
|
+
exports$1.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
13425
|
+
exports$1.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
13325
13426
|
|
|
13326
|
-
exports.removeBackslashes = str => {
|
|
13427
|
+
exports$1.removeBackslashes = str => {
|
|
13327
13428
|
return str.replace(REGEX_REMOVE_BACKSLASH, match => {
|
|
13328
13429
|
return match === '\\' ? '' : match;
|
|
13329
13430
|
});
|
|
13330
13431
|
};
|
|
13331
13432
|
|
|
13332
|
-
exports.supportsLookbehinds = () => {
|
|
13433
|
+
exports$1.supportsLookbehinds = () => {
|
|
13333
13434
|
const segs = process.version.slice(1).split('.').map(Number);
|
|
13334
13435
|
if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
|
|
13335
13436
|
return true;
|
|
@@ -13337,21 +13438,21 @@ function requireUtils$3 () {
|
|
|
13337
13438
|
return false;
|
|
13338
13439
|
};
|
|
13339
13440
|
|
|
13340
|
-
exports.isWindows = options => {
|
|
13441
|
+
exports$1.isWindows = options => {
|
|
13341
13442
|
if (options && typeof options.windows === 'boolean') {
|
|
13342
13443
|
return options.windows;
|
|
13343
13444
|
}
|
|
13344
13445
|
return win32 === true || path.sep === '\\';
|
|
13345
13446
|
};
|
|
13346
13447
|
|
|
13347
|
-
exports.escapeLast = (input, char, lastIdx) => {
|
|
13448
|
+
exports$1.escapeLast = (input, char, lastIdx) => {
|
|
13348
13449
|
const idx = input.lastIndexOf(char, lastIdx);
|
|
13349
13450
|
if (idx === -1) return input;
|
|
13350
|
-
if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
|
|
13451
|
+
if (input[idx - 1] === '\\') return exports$1.escapeLast(input, char, idx - 1);
|
|
13351
13452
|
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
13352
13453
|
};
|
|
13353
13454
|
|
|
13354
|
-
exports.removePrefix = (input, state = {}) => {
|
|
13455
|
+
exports$1.removePrefix = (input, state = {}) => {
|
|
13355
13456
|
let output = input;
|
|
13356
13457
|
if (output.startsWith('./')) {
|
|
13357
13458
|
output = output.slice(2);
|
|
@@ -13360,7 +13461,7 @@ function requireUtils$3 () {
|
|
|
13360
13461
|
return output;
|
|
13361
13462
|
};
|
|
13362
13463
|
|
|
13363
|
-
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
13464
|
+
exports$1.wrapOutput = (input, state = {}, options = {}) => {
|
|
13364
13465
|
const prepend = options.contains ? '' : '^';
|
|
13365
13466
|
const append = options.contains ? '' : '$';
|
|
13366
13467
|
|
|
@@ -16217,11 +16318,11 @@ var hasRequiredFs$2;
|
|
|
16217
16318
|
function requireFs$2 () {
|
|
16218
16319
|
if (hasRequiredFs$2) return fs$2;
|
|
16219
16320
|
hasRequiredFs$2 = 1;
|
|
16220
|
-
(function (exports) {
|
|
16221
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16222
|
-
exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
|
|
16321
|
+
(function (exports$1) {
|
|
16322
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
16323
|
+
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
16223
16324
|
const fs = require$$0;
|
|
16224
|
-
exports.FILE_SYSTEM_ADAPTER = {
|
|
16325
|
+
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
16225
16326
|
lstat: fs.lstat,
|
|
16226
16327
|
stat: fs.stat,
|
|
16227
16328
|
lstatSync: fs.lstatSync,
|
|
@@ -16229,11 +16330,11 @@ function requireFs$2 () {
|
|
|
16229
16330
|
};
|
|
16230
16331
|
function createFileSystemAdapter(fsMethods) {
|
|
16231
16332
|
if (fsMethods === undefined) {
|
|
16232
|
-
return exports.FILE_SYSTEM_ADAPTER;
|
|
16333
|
+
return exports$1.FILE_SYSTEM_ADAPTER;
|
|
16233
16334
|
}
|
|
16234
|
-
return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16335
|
+
return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16235
16336
|
}
|
|
16236
|
-
exports.createFileSystemAdapter = createFileSystemAdapter;
|
|
16337
|
+
exports$1.createFileSystemAdapter = createFileSystemAdapter;
|
|
16237
16338
|
} (fs$2));
|
|
16238
16339
|
return fs$2;
|
|
16239
16340
|
}
|
|
@@ -16647,11 +16748,11 @@ var hasRequiredFs;
|
|
|
16647
16748
|
function requireFs () {
|
|
16648
16749
|
if (hasRequiredFs) return fs;
|
|
16649
16750
|
hasRequiredFs = 1;
|
|
16650
|
-
(function (exports) {
|
|
16651
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16652
|
-
exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
|
|
16751
|
+
(function (exports$1) {
|
|
16752
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
16753
|
+
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
16653
16754
|
const fs = require$$0;
|
|
16654
|
-
exports.FILE_SYSTEM_ADAPTER = {
|
|
16755
|
+
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
16655
16756
|
lstat: fs.lstat,
|
|
16656
16757
|
stat: fs.stat,
|
|
16657
16758
|
lstatSync: fs.lstatSync,
|
|
@@ -16661,11 +16762,11 @@ function requireFs () {
|
|
|
16661
16762
|
};
|
|
16662
16763
|
function createFileSystemAdapter(fsMethods) {
|
|
16663
16764
|
if (fsMethods === undefined) {
|
|
16664
|
-
return exports.FILE_SYSTEM_ADAPTER;
|
|
16765
|
+
return exports$1.FILE_SYSTEM_ADAPTER;
|
|
16665
16766
|
}
|
|
16666
|
-
return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16767
|
+
return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16667
16768
|
}
|
|
16668
|
-
exports.createFileSystemAdapter = createFileSystemAdapter;
|
|
16769
|
+
exports$1.createFileSystemAdapter = createFileSystemAdapter;
|
|
16669
16770
|
} (fs));
|
|
16670
16771
|
return fs;
|
|
16671
16772
|
}
|
|
@@ -18169,9 +18270,9 @@ var hasRequiredSettings;
|
|
|
18169
18270
|
function requireSettings () {
|
|
18170
18271
|
if (hasRequiredSettings) return settings;
|
|
18171
18272
|
hasRequiredSettings = 1;
|
|
18172
|
-
(function (exports) {
|
|
18173
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18174
|
-
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
18273
|
+
(function (exports$1) {
|
|
18274
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
18275
|
+
exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
18175
18276
|
const fs = require$$0;
|
|
18176
18277
|
const os = os$2;
|
|
18177
18278
|
/**
|
|
@@ -18179,7 +18280,7 @@ function requireSettings () {
|
|
|
18179
18280
|
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
|
18180
18281
|
*/
|
|
18181
18282
|
const CPU_COUNT = Math.max(os.cpus().length, 1);
|
|
18182
|
-
exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
|
18283
|
+
exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
|
18183
18284
|
lstat: fs.lstat,
|
|
18184
18285
|
lstatSync: fs.lstatSync,
|
|
18185
18286
|
stat: fs.stat,
|
|
@@ -18224,10 +18325,10 @@ function requireSettings () {
|
|
|
18224
18325
|
return option === undefined ? value : option;
|
|
18225
18326
|
}
|
|
18226
18327
|
_getFileSystemMethods(methods = {}) {
|
|
18227
|
-
return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
|
18328
|
+
return Object.assign(Object.assign({}, exports$1.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
|
18228
18329
|
}
|
|
18229
18330
|
}
|
|
18230
|
-
exports.default = Settings;
|
|
18331
|
+
exports$1.default = Settings;
|
|
18231
18332
|
} (settings));
|
|
18232
18333
|
return settings;
|
|
18233
18334
|
}
|
|
@@ -20094,7 +20195,7 @@ var hasRequiredRe;
|
|
|
20094
20195
|
function requireRe () {
|
|
20095
20196
|
if (hasRequiredRe) return re.exports;
|
|
20096
20197
|
hasRequiredRe = 1;
|
|
20097
|
-
(function (module, exports) {
|
|
20198
|
+
(function (module, exports$1) {
|
|
20098
20199
|
|
|
20099
20200
|
const {
|
|
20100
20201
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -20102,14 +20203,14 @@ function requireRe () {
|
|
|
20102
20203
|
MAX_LENGTH,
|
|
20103
20204
|
} = requireConstants$1();
|
|
20104
20205
|
const debug = requireDebug();
|
|
20105
|
-
exports = module.exports = {};
|
|
20206
|
+
exports$1 = module.exports = {};
|
|
20106
20207
|
|
|
20107
20208
|
// The actual regexps go on exports.re
|
|
20108
|
-
const re = exports.re = [];
|
|
20109
|
-
const safeRe = exports.safeRe = [];
|
|
20110
|
-
const src = exports.src = [];
|
|
20111
|
-
const safeSrc = exports.safeSrc = [];
|
|
20112
|
-
const t = exports.t = {};
|
|
20209
|
+
const re = exports$1.re = [];
|
|
20210
|
+
const safeRe = exports$1.safeRe = [];
|
|
20211
|
+
const src = exports$1.src = [];
|
|
20212
|
+
const safeSrc = exports$1.safeSrc = [];
|
|
20213
|
+
const t = exports$1.t = {};
|
|
20113
20214
|
let R = 0;
|
|
20114
20215
|
|
|
20115
20216
|
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
|
@@ -20273,7 +20374,7 @@ function requireRe () {
|
|
|
20273
20374
|
createToken('LONETILDE', '(?:~>?)');
|
|
20274
20375
|
|
|
20275
20376
|
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true);
|
|
20276
|
-
exports.tildeTrimReplace = '$1~';
|
|
20377
|
+
exports$1.tildeTrimReplace = '$1~';
|
|
20277
20378
|
|
|
20278
20379
|
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
|
|
20279
20380
|
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -20283,7 +20384,7 @@ function requireRe () {
|
|
|
20283
20384
|
createToken('LONECARET', '(?:\\^)');
|
|
20284
20385
|
|
|
20285
20386
|
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true);
|
|
20286
|
-
exports.caretTrimReplace = '$1^';
|
|
20387
|
+
exports$1.caretTrimReplace = '$1^';
|
|
20287
20388
|
|
|
20288
20389
|
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
|
|
20289
20390
|
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -20296,7 +20397,7 @@ function requireRe () {
|
|
|
20296
20397
|
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
|
20297
20398
|
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
|
|
20298
20399
|
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
|
|
20299
|
-
exports.comparatorTrimReplace = '$1$2$3';
|
|
20400
|
+
exports$1.comparatorTrimReplace = '$1$2$3';
|
|
20300
20401
|
|
|
20301
20402
|
// Something like `1.2.3 - 1.2.4`
|
|
20302
20403
|
// Note that these all use the loose form, because they'll be
|
|
@@ -23086,7 +23187,7 @@ function addModuleMetadata() {
|
|
|
23086
23187
|
transform: {
|
|
23087
23188
|
async handler(code) {
|
|
23088
23189
|
const pkg = JSON.parse(await readFile("./package.json", "utf8"));
|
|
23089
|
-
const magicString = new MagicString
|
|
23190
|
+
const magicString = new MagicString(code);
|
|
23090
23191
|
magicString.replace(
|
|
23091
23192
|
new RegExp(
|
|
23092
23193
|
"moduleMetadata:\\s*Constants.MODULE_METADATA_PLACEHOLDER",
|
|
@@ -23103,1280 +23204,6 @@ function addModuleMetadata() {
|
|
|
23103
23204
|
};
|
|
23104
23205
|
}
|
|
23105
23206
|
|
|
23106
|
-
class BitSet {
|
|
23107
|
-
constructor(arg) {
|
|
23108
|
-
this.bits = arg instanceof BitSet ? arg.bits.slice() : [];
|
|
23109
|
-
}
|
|
23110
|
-
|
|
23111
|
-
add(n) {
|
|
23112
|
-
this.bits[n >> 5] |= 1 << (n & 31);
|
|
23113
|
-
}
|
|
23114
|
-
|
|
23115
|
-
has(n) {
|
|
23116
|
-
return !!(this.bits[n >> 5] & (1 << (n & 31)));
|
|
23117
|
-
}
|
|
23118
|
-
}
|
|
23119
|
-
|
|
23120
|
-
class Chunk {
|
|
23121
|
-
constructor(start, end, content) {
|
|
23122
|
-
this.start = start;
|
|
23123
|
-
this.end = end;
|
|
23124
|
-
this.original = content;
|
|
23125
|
-
|
|
23126
|
-
this.intro = '';
|
|
23127
|
-
this.outro = '';
|
|
23128
|
-
|
|
23129
|
-
this.content = content;
|
|
23130
|
-
this.storeName = false;
|
|
23131
|
-
this.edited = false;
|
|
23132
|
-
|
|
23133
|
-
{
|
|
23134
|
-
this.previous = null;
|
|
23135
|
-
this.next = null;
|
|
23136
|
-
}
|
|
23137
|
-
}
|
|
23138
|
-
|
|
23139
|
-
appendLeft(content) {
|
|
23140
|
-
this.outro += content;
|
|
23141
|
-
}
|
|
23142
|
-
|
|
23143
|
-
appendRight(content) {
|
|
23144
|
-
this.intro = this.intro + content;
|
|
23145
|
-
}
|
|
23146
|
-
|
|
23147
|
-
clone() {
|
|
23148
|
-
const chunk = new Chunk(this.start, this.end, this.original);
|
|
23149
|
-
|
|
23150
|
-
chunk.intro = this.intro;
|
|
23151
|
-
chunk.outro = this.outro;
|
|
23152
|
-
chunk.content = this.content;
|
|
23153
|
-
chunk.storeName = this.storeName;
|
|
23154
|
-
chunk.edited = this.edited;
|
|
23155
|
-
|
|
23156
|
-
return chunk;
|
|
23157
|
-
}
|
|
23158
|
-
|
|
23159
|
-
contains(index) {
|
|
23160
|
-
return this.start < index && index < this.end;
|
|
23161
|
-
}
|
|
23162
|
-
|
|
23163
|
-
eachNext(fn) {
|
|
23164
|
-
let chunk = this;
|
|
23165
|
-
while (chunk) {
|
|
23166
|
-
fn(chunk);
|
|
23167
|
-
chunk = chunk.next;
|
|
23168
|
-
}
|
|
23169
|
-
}
|
|
23170
|
-
|
|
23171
|
-
eachPrevious(fn) {
|
|
23172
|
-
let chunk = this;
|
|
23173
|
-
while (chunk) {
|
|
23174
|
-
fn(chunk);
|
|
23175
|
-
chunk = chunk.previous;
|
|
23176
|
-
}
|
|
23177
|
-
}
|
|
23178
|
-
|
|
23179
|
-
edit(content, storeName, contentOnly) {
|
|
23180
|
-
this.content = content;
|
|
23181
|
-
if (!contentOnly) {
|
|
23182
|
-
this.intro = '';
|
|
23183
|
-
this.outro = '';
|
|
23184
|
-
}
|
|
23185
|
-
this.storeName = storeName;
|
|
23186
|
-
|
|
23187
|
-
this.edited = true;
|
|
23188
|
-
|
|
23189
|
-
return this;
|
|
23190
|
-
}
|
|
23191
|
-
|
|
23192
|
-
prependLeft(content) {
|
|
23193
|
-
this.outro = content + this.outro;
|
|
23194
|
-
}
|
|
23195
|
-
|
|
23196
|
-
prependRight(content) {
|
|
23197
|
-
this.intro = content + this.intro;
|
|
23198
|
-
}
|
|
23199
|
-
|
|
23200
|
-
reset() {
|
|
23201
|
-
this.intro = '';
|
|
23202
|
-
this.outro = '';
|
|
23203
|
-
if (this.edited) {
|
|
23204
|
-
this.content = this.original;
|
|
23205
|
-
this.storeName = false;
|
|
23206
|
-
this.edited = false;
|
|
23207
|
-
}
|
|
23208
|
-
}
|
|
23209
|
-
|
|
23210
|
-
split(index) {
|
|
23211
|
-
const sliceIndex = index - this.start;
|
|
23212
|
-
|
|
23213
|
-
const originalBefore = this.original.slice(0, sliceIndex);
|
|
23214
|
-
const originalAfter = this.original.slice(sliceIndex);
|
|
23215
|
-
|
|
23216
|
-
this.original = originalBefore;
|
|
23217
|
-
|
|
23218
|
-
const newChunk = new Chunk(index, this.end, originalAfter);
|
|
23219
|
-
newChunk.outro = this.outro;
|
|
23220
|
-
this.outro = '';
|
|
23221
|
-
|
|
23222
|
-
this.end = index;
|
|
23223
|
-
|
|
23224
|
-
if (this.edited) {
|
|
23225
|
-
// after split we should save the edit content record into the correct chunk
|
|
23226
|
-
// to make sure sourcemap correct
|
|
23227
|
-
// For example:
|
|
23228
|
-
// ' test'.trim()
|
|
23229
|
-
// split -> ' ' + 'test'
|
|
23230
|
-
// ✔️ edit -> '' + 'test'
|
|
23231
|
-
// ✖️ edit -> 'test' + ''
|
|
23232
|
-
// TODO is this block necessary?...
|
|
23233
|
-
newChunk.edit('', false);
|
|
23234
|
-
this.content = '';
|
|
23235
|
-
} else {
|
|
23236
|
-
this.content = originalBefore;
|
|
23237
|
-
}
|
|
23238
|
-
|
|
23239
|
-
newChunk.next = this.next;
|
|
23240
|
-
if (newChunk.next) newChunk.next.previous = newChunk;
|
|
23241
|
-
newChunk.previous = this;
|
|
23242
|
-
this.next = newChunk;
|
|
23243
|
-
|
|
23244
|
-
return newChunk;
|
|
23245
|
-
}
|
|
23246
|
-
|
|
23247
|
-
toString() {
|
|
23248
|
-
return this.intro + this.content + this.outro;
|
|
23249
|
-
}
|
|
23250
|
-
|
|
23251
|
-
trimEnd(rx) {
|
|
23252
|
-
this.outro = this.outro.replace(rx, '');
|
|
23253
|
-
if (this.outro.length) return true;
|
|
23254
|
-
|
|
23255
|
-
const trimmed = this.content.replace(rx, '');
|
|
23256
|
-
|
|
23257
|
-
if (trimmed.length) {
|
|
23258
|
-
if (trimmed !== this.content) {
|
|
23259
|
-
this.split(this.start + trimmed.length).edit('', undefined, true);
|
|
23260
|
-
if (this.edited) {
|
|
23261
|
-
// save the change, if it has been edited
|
|
23262
|
-
this.edit(trimmed, this.storeName, true);
|
|
23263
|
-
}
|
|
23264
|
-
}
|
|
23265
|
-
return true;
|
|
23266
|
-
} else {
|
|
23267
|
-
this.edit('', undefined, true);
|
|
23268
|
-
|
|
23269
|
-
this.intro = this.intro.replace(rx, '');
|
|
23270
|
-
if (this.intro.length) return true;
|
|
23271
|
-
}
|
|
23272
|
-
}
|
|
23273
|
-
|
|
23274
|
-
trimStart(rx) {
|
|
23275
|
-
this.intro = this.intro.replace(rx, '');
|
|
23276
|
-
if (this.intro.length) return true;
|
|
23277
|
-
|
|
23278
|
-
const trimmed = this.content.replace(rx, '');
|
|
23279
|
-
|
|
23280
|
-
if (trimmed.length) {
|
|
23281
|
-
if (trimmed !== this.content) {
|
|
23282
|
-
const newChunk = this.split(this.end - trimmed.length);
|
|
23283
|
-
if (this.edited) {
|
|
23284
|
-
// save the change, if it has been edited
|
|
23285
|
-
newChunk.edit(trimmed, this.storeName, true);
|
|
23286
|
-
}
|
|
23287
|
-
this.edit('', undefined, true);
|
|
23288
|
-
}
|
|
23289
|
-
return true;
|
|
23290
|
-
} else {
|
|
23291
|
-
this.edit('', undefined, true);
|
|
23292
|
-
|
|
23293
|
-
this.outro = this.outro.replace(rx, '');
|
|
23294
|
-
if (this.outro.length) return true;
|
|
23295
|
-
}
|
|
23296
|
-
}
|
|
23297
|
-
}
|
|
23298
|
-
|
|
23299
|
-
function getBtoa() {
|
|
23300
|
-
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
|
23301
|
-
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
|
23302
|
-
} else if (typeof Buffer === 'function') {
|
|
23303
|
-
return (str) => Buffer.from(str, 'utf-8').toString('base64');
|
|
23304
|
-
} else {
|
|
23305
|
-
return () => {
|
|
23306
|
-
throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');
|
|
23307
|
-
};
|
|
23308
|
-
}
|
|
23309
|
-
}
|
|
23310
|
-
|
|
23311
|
-
const btoa = /*#__PURE__*/ getBtoa();
|
|
23312
|
-
|
|
23313
|
-
class SourceMap {
|
|
23314
|
-
constructor(properties) {
|
|
23315
|
-
this.version = 3;
|
|
23316
|
-
this.file = properties.file;
|
|
23317
|
-
this.sources = properties.sources;
|
|
23318
|
-
this.sourcesContent = properties.sourcesContent;
|
|
23319
|
-
this.names = properties.names;
|
|
23320
|
-
this.mappings = encode(properties.mappings);
|
|
23321
|
-
if (typeof properties.x_google_ignoreList !== 'undefined') {
|
|
23322
|
-
this.x_google_ignoreList = properties.x_google_ignoreList;
|
|
23323
|
-
}
|
|
23324
|
-
if (typeof properties.debugId !== 'undefined') {
|
|
23325
|
-
this.debugId = properties.debugId;
|
|
23326
|
-
}
|
|
23327
|
-
}
|
|
23328
|
-
|
|
23329
|
-
toString() {
|
|
23330
|
-
return JSON.stringify(this);
|
|
23331
|
-
}
|
|
23332
|
-
|
|
23333
|
-
toUrl() {
|
|
23334
|
-
return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());
|
|
23335
|
-
}
|
|
23336
|
-
}
|
|
23337
|
-
|
|
23338
|
-
function guessIndent(code) {
|
|
23339
|
-
const lines = code.split('\n');
|
|
23340
|
-
|
|
23341
|
-
const tabbed = lines.filter((line) => /^\t+/.test(line));
|
|
23342
|
-
const spaced = lines.filter((line) => /^ {2,}/.test(line));
|
|
23343
|
-
|
|
23344
|
-
if (tabbed.length === 0 && spaced.length === 0) {
|
|
23345
|
-
return null;
|
|
23346
|
-
}
|
|
23347
|
-
|
|
23348
|
-
// More lines tabbed than spaced? Assume tabs, and
|
|
23349
|
-
// default to tabs in the case of a tie (or nothing
|
|
23350
|
-
// to go on)
|
|
23351
|
-
if (tabbed.length >= spaced.length) {
|
|
23352
|
-
return '\t';
|
|
23353
|
-
}
|
|
23354
|
-
|
|
23355
|
-
// Otherwise, we need to guess the multiple
|
|
23356
|
-
const min = spaced.reduce((previous, current) => {
|
|
23357
|
-
const numSpaces = /^ +/.exec(current)[0].length;
|
|
23358
|
-
return Math.min(numSpaces, previous);
|
|
23359
|
-
}, Infinity);
|
|
23360
|
-
|
|
23361
|
-
return new Array(min + 1).join(' ');
|
|
23362
|
-
}
|
|
23363
|
-
|
|
23364
|
-
function getRelativePath(from, to) {
|
|
23365
|
-
const fromParts = from.split(/[/\\]/);
|
|
23366
|
-
const toParts = to.split(/[/\\]/);
|
|
23367
|
-
|
|
23368
|
-
fromParts.pop(); // get dirname
|
|
23369
|
-
|
|
23370
|
-
while (fromParts[0] === toParts[0]) {
|
|
23371
|
-
fromParts.shift();
|
|
23372
|
-
toParts.shift();
|
|
23373
|
-
}
|
|
23374
|
-
|
|
23375
|
-
if (fromParts.length) {
|
|
23376
|
-
let i = fromParts.length;
|
|
23377
|
-
while (i--) fromParts[i] = '..';
|
|
23378
|
-
}
|
|
23379
|
-
|
|
23380
|
-
return fromParts.concat(toParts).join('/');
|
|
23381
|
-
}
|
|
23382
|
-
|
|
23383
|
-
const toString = Object.prototype.toString;
|
|
23384
|
-
|
|
23385
|
-
function isObject(thing) {
|
|
23386
|
-
return toString.call(thing) === '[object Object]';
|
|
23387
|
-
}
|
|
23388
|
-
|
|
23389
|
-
function getLocator(source) {
|
|
23390
|
-
const originalLines = source.split('\n');
|
|
23391
|
-
const lineOffsets = [];
|
|
23392
|
-
|
|
23393
|
-
for (let i = 0, pos = 0; i < originalLines.length; i++) {
|
|
23394
|
-
lineOffsets.push(pos);
|
|
23395
|
-
pos += originalLines[i].length + 1;
|
|
23396
|
-
}
|
|
23397
|
-
|
|
23398
|
-
return function locate(index) {
|
|
23399
|
-
let i = 0;
|
|
23400
|
-
let j = lineOffsets.length;
|
|
23401
|
-
while (i < j) {
|
|
23402
|
-
const m = (i + j) >> 1;
|
|
23403
|
-
if (index < lineOffsets[m]) {
|
|
23404
|
-
j = m;
|
|
23405
|
-
} else {
|
|
23406
|
-
i = m + 1;
|
|
23407
|
-
}
|
|
23408
|
-
}
|
|
23409
|
-
const line = i - 1;
|
|
23410
|
-
const column = index - lineOffsets[line];
|
|
23411
|
-
return { line, column };
|
|
23412
|
-
};
|
|
23413
|
-
}
|
|
23414
|
-
|
|
23415
|
-
const wordRegex = /\w/;
|
|
23416
|
-
|
|
23417
|
-
class Mappings {
|
|
23418
|
-
constructor(hires) {
|
|
23419
|
-
this.hires = hires;
|
|
23420
|
-
this.generatedCodeLine = 0;
|
|
23421
|
-
this.generatedCodeColumn = 0;
|
|
23422
|
-
this.raw = [];
|
|
23423
|
-
this.rawSegments = this.raw[this.generatedCodeLine] = [];
|
|
23424
|
-
this.pending = null;
|
|
23425
|
-
}
|
|
23426
|
-
|
|
23427
|
-
addEdit(sourceIndex, content, loc, nameIndex) {
|
|
23428
|
-
if (content.length) {
|
|
23429
|
-
const contentLengthMinusOne = content.length - 1;
|
|
23430
|
-
let contentLineEnd = content.indexOf('\n', 0);
|
|
23431
|
-
let previousContentLineEnd = -1;
|
|
23432
|
-
// Loop through each line in the content and add a segment, but stop if the last line is empty,
|
|
23433
|
-
// else code afterwards would fill one line too many
|
|
23434
|
-
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
|
23435
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23436
|
-
if (nameIndex >= 0) {
|
|
23437
|
-
segment.push(nameIndex);
|
|
23438
|
-
}
|
|
23439
|
-
this.rawSegments.push(segment);
|
|
23440
|
-
|
|
23441
|
-
this.generatedCodeLine += 1;
|
|
23442
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23443
|
-
this.generatedCodeColumn = 0;
|
|
23444
|
-
|
|
23445
|
-
previousContentLineEnd = contentLineEnd;
|
|
23446
|
-
contentLineEnd = content.indexOf('\n', contentLineEnd + 1);
|
|
23447
|
-
}
|
|
23448
|
-
|
|
23449
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23450
|
-
if (nameIndex >= 0) {
|
|
23451
|
-
segment.push(nameIndex);
|
|
23452
|
-
}
|
|
23453
|
-
this.rawSegments.push(segment);
|
|
23454
|
-
|
|
23455
|
-
this.advance(content.slice(previousContentLineEnd + 1));
|
|
23456
|
-
} else if (this.pending) {
|
|
23457
|
-
this.rawSegments.push(this.pending);
|
|
23458
|
-
this.advance(content);
|
|
23459
|
-
}
|
|
23460
|
-
|
|
23461
|
-
this.pending = null;
|
|
23462
|
-
}
|
|
23463
|
-
|
|
23464
|
-
addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {
|
|
23465
|
-
let originalCharIndex = chunk.start;
|
|
23466
|
-
let first = true;
|
|
23467
|
-
// when iterating each char, check if it's in a word boundary
|
|
23468
|
-
let charInHiresBoundary = false;
|
|
23469
|
-
|
|
23470
|
-
while (originalCharIndex < chunk.end) {
|
|
23471
|
-
if (original[originalCharIndex] === '\n') {
|
|
23472
|
-
loc.line += 1;
|
|
23473
|
-
loc.column = 0;
|
|
23474
|
-
this.generatedCodeLine += 1;
|
|
23475
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23476
|
-
this.generatedCodeColumn = 0;
|
|
23477
|
-
first = true;
|
|
23478
|
-
charInHiresBoundary = false;
|
|
23479
|
-
} else {
|
|
23480
|
-
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
|
23481
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23482
|
-
|
|
23483
|
-
if (this.hires === 'boundary') {
|
|
23484
|
-
// in hires "boundary", group segments per word boundary than per char
|
|
23485
|
-
if (wordRegex.test(original[originalCharIndex])) {
|
|
23486
|
-
// for first char in the boundary found, start the boundary by pushing a segment
|
|
23487
|
-
if (!charInHiresBoundary) {
|
|
23488
|
-
this.rawSegments.push(segment);
|
|
23489
|
-
charInHiresBoundary = true;
|
|
23490
|
-
}
|
|
23491
|
-
} else {
|
|
23492
|
-
// for non-word char, end the boundary by pushing a segment
|
|
23493
|
-
this.rawSegments.push(segment);
|
|
23494
|
-
charInHiresBoundary = false;
|
|
23495
|
-
}
|
|
23496
|
-
} else {
|
|
23497
|
-
this.rawSegments.push(segment);
|
|
23498
|
-
}
|
|
23499
|
-
}
|
|
23500
|
-
|
|
23501
|
-
loc.column += 1;
|
|
23502
|
-
this.generatedCodeColumn += 1;
|
|
23503
|
-
first = false;
|
|
23504
|
-
}
|
|
23505
|
-
|
|
23506
|
-
originalCharIndex += 1;
|
|
23507
|
-
}
|
|
23508
|
-
|
|
23509
|
-
this.pending = null;
|
|
23510
|
-
}
|
|
23511
|
-
|
|
23512
|
-
advance(str) {
|
|
23513
|
-
if (!str) return;
|
|
23514
|
-
|
|
23515
|
-
const lines = str.split('\n');
|
|
23516
|
-
|
|
23517
|
-
if (lines.length > 1) {
|
|
23518
|
-
for (let i = 0; i < lines.length - 1; i++) {
|
|
23519
|
-
this.generatedCodeLine++;
|
|
23520
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23521
|
-
}
|
|
23522
|
-
this.generatedCodeColumn = 0;
|
|
23523
|
-
}
|
|
23524
|
-
|
|
23525
|
-
this.generatedCodeColumn += lines[lines.length - 1].length;
|
|
23526
|
-
}
|
|
23527
|
-
}
|
|
23528
|
-
|
|
23529
|
-
const n = '\n';
|
|
23530
|
-
|
|
23531
|
-
const warned = {
|
|
23532
|
-
insertLeft: false,
|
|
23533
|
-
insertRight: false,
|
|
23534
|
-
storeName: false,
|
|
23535
|
-
};
|
|
23536
|
-
|
|
23537
|
-
class MagicString {
|
|
23538
|
-
constructor(string, options = {}) {
|
|
23539
|
-
const chunk = new Chunk(0, string.length, string);
|
|
23540
|
-
|
|
23541
|
-
Object.defineProperties(this, {
|
|
23542
|
-
original: { writable: true, value: string },
|
|
23543
|
-
outro: { writable: true, value: '' },
|
|
23544
|
-
intro: { writable: true, value: '' },
|
|
23545
|
-
firstChunk: { writable: true, value: chunk },
|
|
23546
|
-
lastChunk: { writable: true, value: chunk },
|
|
23547
|
-
lastSearchedChunk: { writable: true, value: chunk },
|
|
23548
|
-
byStart: { writable: true, value: {} },
|
|
23549
|
-
byEnd: { writable: true, value: {} },
|
|
23550
|
-
filename: { writable: true, value: options.filename },
|
|
23551
|
-
indentExclusionRanges: { writable: true, value: options.indentExclusionRanges },
|
|
23552
|
-
sourcemapLocations: { writable: true, value: new BitSet() },
|
|
23553
|
-
storedNames: { writable: true, value: {} },
|
|
23554
|
-
indentStr: { writable: true, value: undefined },
|
|
23555
|
-
ignoreList: { writable: true, value: options.ignoreList },
|
|
23556
|
-
offset: { writable: true, value: options.offset || 0 },
|
|
23557
|
-
});
|
|
23558
|
-
|
|
23559
|
-
this.byStart[0] = chunk;
|
|
23560
|
-
this.byEnd[string.length] = chunk;
|
|
23561
|
-
}
|
|
23562
|
-
|
|
23563
|
-
addSourcemapLocation(char) {
|
|
23564
|
-
this.sourcemapLocations.add(char);
|
|
23565
|
-
}
|
|
23566
|
-
|
|
23567
|
-
append(content) {
|
|
23568
|
-
if (typeof content !== 'string') throw new TypeError('outro content must be a string');
|
|
23569
|
-
|
|
23570
|
-
this.outro += content;
|
|
23571
|
-
return this;
|
|
23572
|
-
}
|
|
23573
|
-
|
|
23574
|
-
appendLeft(index, content) {
|
|
23575
|
-
index = index + this.offset;
|
|
23576
|
-
|
|
23577
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23578
|
-
|
|
23579
|
-
this._split(index);
|
|
23580
|
-
|
|
23581
|
-
const chunk = this.byEnd[index];
|
|
23582
|
-
|
|
23583
|
-
if (chunk) {
|
|
23584
|
-
chunk.appendLeft(content);
|
|
23585
|
-
} else {
|
|
23586
|
-
this.intro += content;
|
|
23587
|
-
}
|
|
23588
|
-
return this;
|
|
23589
|
-
}
|
|
23590
|
-
|
|
23591
|
-
appendRight(index, content) {
|
|
23592
|
-
index = index + this.offset;
|
|
23593
|
-
|
|
23594
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23595
|
-
|
|
23596
|
-
this._split(index);
|
|
23597
|
-
|
|
23598
|
-
const chunk = this.byStart[index];
|
|
23599
|
-
|
|
23600
|
-
if (chunk) {
|
|
23601
|
-
chunk.appendRight(content);
|
|
23602
|
-
} else {
|
|
23603
|
-
this.outro += content;
|
|
23604
|
-
}
|
|
23605
|
-
return this;
|
|
23606
|
-
}
|
|
23607
|
-
|
|
23608
|
-
clone() {
|
|
23609
|
-
const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });
|
|
23610
|
-
|
|
23611
|
-
let originalChunk = this.firstChunk;
|
|
23612
|
-
let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());
|
|
23613
|
-
|
|
23614
|
-
while (originalChunk) {
|
|
23615
|
-
cloned.byStart[clonedChunk.start] = clonedChunk;
|
|
23616
|
-
cloned.byEnd[clonedChunk.end] = clonedChunk;
|
|
23617
|
-
|
|
23618
|
-
const nextOriginalChunk = originalChunk.next;
|
|
23619
|
-
const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();
|
|
23620
|
-
|
|
23621
|
-
if (nextClonedChunk) {
|
|
23622
|
-
clonedChunk.next = nextClonedChunk;
|
|
23623
|
-
nextClonedChunk.previous = clonedChunk;
|
|
23624
|
-
|
|
23625
|
-
clonedChunk = nextClonedChunk;
|
|
23626
|
-
}
|
|
23627
|
-
|
|
23628
|
-
originalChunk = nextOriginalChunk;
|
|
23629
|
-
}
|
|
23630
|
-
|
|
23631
|
-
cloned.lastChunk = clonedChunk;
|
|
23632
|
-
|
|
23633
|
-
if (this.indentExclusionRanges) {
|
|
23634
|
-
cloned.indentExclusionRanges = this.indentExclusionRanges.slice();
|
|
23635
|
-
}
|
|
23636
|
-
|
|
23637
|
-
cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);
|
|
23638
|
-
|
|
23639
|
-
cloned.intro = this.intro;
|
|
23640
|
-
cloned.outro = this.outro;
|
|
23641
|
-
|
|
23642
|
-
return cloned;
|
|
23643
|
-
}
|
|
23644
|
-
|
|
23645
|
-
generateDecodedMap(options) {
|
|
23646
|
-
options = options || {};
|
|
23647
|
-
|
|
23648
|
-
const sourceIndex = 0;
|
|
23649
|
-
const names = Object.keys(this.storedNames);
|
|
23650
|
-
const mappings = new Mappings(options.hires);
|
|
23651
|
-
|
|
23652
|
-
const locate = getLocator(this.original);
|
|
23653
|
-
|
|
23654
|
-
if (this.intro) {
|
|
23655
|
-
mappings.advance(this.intro);
|
|
23656
|
-
}
|
|
23657
|
-
|
|
23658
|
-
this.firstChunk.eachNext((chunk) => {
|
|
23659
|
-
const loc = locate(chunk.start);
|
|
23660
|
-
|
|
23661
|
-
if (chunk.intro.length) mappings.advance(chunk.intro);
|
|
23662
|
-
|
|
23663
|
-
if (chunk.edited) {
|
|
23664
|
-
mappings.addEdit(
|
|
23665
|
-
sourceIndex,
|
|
23666
|
-
chunk.content,
|
|
23667
|
-
loc,
|
|
23668
|
-
chunk.storeName ? names.indexOf(chunk.original) : -1,
|
|
23669
|
-
);
|
|
23670
|
-
} else {
|
|
23671
|
-
mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);
|
|
23672
|
-
}
|
|
23673
|
-
|
|
23674
|
-
if (chunk.outro.length) mappings.advance(chunk.outro);
|
|
23675
|
-
});
|
|
23676
|
-
|
|
23677
|
-
return {
|
|
23678
|
-
file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
|
|
23679
|
-
sources: [
|
|
23680
|
-
options.source ? getRelativePath(options.file || '', options.source) : options.file || '',
|
|
23681
|
-
],
|
|
23682
|
-
sourcesContent: options.includeContent ? [this.original] : undefined,
|
|
23683
|
-
names,
|
|
23684
|
-
mappings: mappings.raw,
|
|
23685
|
-
x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,
|
|
23686
|
-
};
|
|
23687
|
-
}
|
|
23688
|
-
|
|
23689
|
-
generateMap(options) {
|
|
23690
|
-
return new SourceMap(this.generateDecodedMap(options));
|
|
23691
|
-
}
|
|
23692
|
-
|
|
23693
|
-
_ensureindentStr() {
|
|
23694
|
-
if (this.indentStr === undefined) {
|
|
23695
|
-
this.indentStr = guessIndent(this.original);
|
|
23696
|
-
}
|
|
23697
|
-
}
|
|
23698
|
-
|
|
23699
|
-
_getRawIndentString() {
|
|
23700
|
-
this._ensureindentStr();
|
|
23701
|
-
return this.indentStr;
|
|
23702
|
-
}
|
|
23703
|
-
|
|
23704
|
-
getIndentString() {
|
|
23705
|
-
this._ensureindentStr();
|
|
23706
|
-
return this.indentStr === null ? '\t' : this.indentStr;
|
|
23707
|
-
}
|
|
23708
|
-
|
|
23709
|
-
indent(indentStr, options) {
|
|
23710
|
-
const pattern = /^[^\r\n]/gm;
|
|
23711
|
-
|
|
23712
|
-
if (isObject(indentStr)) {
|
|
23713
|
-
options = indentStr;
|
|
23714
|
-
indentStr = undefined;
|
|
23715
|
-
}
|
|
23716
|
-
|
|
23717
|
-
if (indentStr === undefined) {
|
|
23718
|
-
this._ensureindentStr();
|
|
23719
|
-
indentStr = this.indentStr || '\t';
|
|
23720
|
-
}
|
|
23721
|
-
|
|
23722
|
-
if (indentStr === '') return this; // noop
|
|
23723
|
-
|
|
23724
|
-
options = options || {};
|
|
23725
|
-
|
|
23726
|
-
// Process exclusion ranges
|
|
23727
|
-
const isExcluded = {};
|
|
23728
|
-
|
|
23729
|
-
if (options.exclude) {
|
|
23730
|
-
const exclusions =
|
|
23731
|
-
typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;
|
|
23732
|
-
exclusions.forEach((exclusion) => {
|
|
23733
|
-
for (let i = exclusion[0]; i < exclusion[1]; i += 1) {
|
|
23734
|
-
isExcluded[i] = true;
|
|
23735
|
-
}
|
|
23736
|
-
});
|
|
23737
|
-
}
|
|
23738
|
-
|
|
23739
|
-
let shouldIndentNextCharacter = options.indentStart !== false;
|
|
23740
|
-
const replacer = (match) => {
|
|
23741
|
-
if (shouldIndentNextCharacter) return `${indentStr}${match}`;
|
|
23742
|
-
shouldIndentNextCharacter = true;
|
|
23743
|
-
return match;
|
|
23744
|
-
};
|
|
23745
|
-
|
|
23746
|
-
this.intro = this.intro.replace(pattern, replacer);
|
|
23747
|
-
|
|
23748
|
-
let charIndex = 0;
|
|
23749
|
-
let chunk = this.firstChunk;
|
|
23750
|
-
|
|
23751
|
-
while (chunk) {
|
|
23752
|
-
const end = chunk.end;
|
|
23753
|
-
|
|
23754
|
-
if (chunk.edited) {
|
|
23755
|
-
if (!isExcluded[charIndex]) {
|
|
23756
|
-
chunk.content = chunk.content.replace(pattern, replacer);
|
|
23757
|
-
|
|
23758
|
-
if (chunk.content.length) {
|
|
23759
|
-
shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n';
|
|
23760
|
-
}
|
|
23761
|
-
}
|
|
23762
|
-
} else {
|
|
23763
|
-
charIndex = chunk.start;
|
|
23764
|
-
|
|
23765
|
-
while (charIndex < end) {
|
|
23766
|
-
if (!isExcluded[charIndex]) {
|
|
23767
|
-
const char = this.original[charIndex];
|
|
23768
|
-
|
|
23769
|
-
if (char === '\n') {
|
|
23770
|
-
shouldIndentNextCharacter = true;
|
|
23771
|
-
} else if (char !== '\r' && shouldIndentNextCharacter) {
|
|
23772
|
-
shouldIndentNextCharacter = false;
|
|
23773
|
-
|
|
23774
|
-
if (charIndex === chunk.start) {
|
|
23775
|
-
chunk.prependRight(indentStr);
|
|
23776
|
-
} else {
|
|
23777
|
-
this._splitChunk(chunk, charIndex);
|
|
23778
|
-
chunk = chunk.next;
|
|
23779
|
-
chunk.prependRight(indentStr);
|
|
23780
|
-
}
|
|
23781
|
-
}
|
|
23782
|
-
}
|
|
23783
|
-
|
|
23784
|
-
charIndex += 1;
|
|
23785
|
-
}
|
|
23786
|
-
}
|
|
23787
|
-
|
|
23788
|
-
charIndex = chunk.end;
|
|
23789
|
-
chunk = chunk.next;
|
|
23790
|
-
}
|
|
23791
|
-
|
|
23792
|
-
this.outro = this.outro.replace(pattern, replacer);
|
|
23793
|
-
|
|
23794
|
-
return this;
|
|
23795
|
-
}
|
|
23796
|
-
|
|
23797
|
-
insert() {
|
|
23798
|
-
throw new Error(
|
|
23799
|
-
'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',
|
|
23800
|
-
);
|
|
23801
|
-
}
|
|
23802
|
-
|
|
23803
|
-
insertLeft(index, content) {
|
|
23804
|
-
if (!warned.insertLeft) {
|
|
23805
|
-
console.warn(
|
|
23806
|
-
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
|
23807
|
-
);
|
|
23808
|
-
warned.insertLeft = true;
|
|
23809
|
-
}
|
|
23810
|
-
|
|
23811
|
-
return this.appendLeft(index, content);
|
|
23812
|
-
}
|
|
23813
|
-
|
|
23814
|
-
insertRight(index, content) {
|
|
23815
|
-
if (!warned.insertRight) {
|
|
23816
|
-
console.warn(
|
|
23817
|
-
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
|
23818
|
-
);
|
|
23819
|
-
warned.insertRight = true;
|
|
23820
|
-
}
|
|
23821
|
-
|
|
23822
|
-
return this.prependRight(index, content);
|
|
23823
|
-
}
|
|
23824
|
-
|
|
23825
|
-
move(start, end, index) {
|
|
23826
|
-
start = start + this.offset;
|
|
23827
|
-
end = end + this.offset;
|
|
23828
|
-
index = index + this.offset;
|
|
23829
|
-
|
|
23830
|
-
if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');
|
|
23831
|
-
|
|
23832
|
-
this._split(start);
|
|
23833
|
-
this._split(end);
|
|
23834
|
-
this._split(index);
|
|
23835
|
-
|
|
23836
|
-
const first = this.byStart[start];
|
|
23837
|
-
const last = this.byEnd[end];
|
|
23838
|
-
|
|
23839
|
-
const oldLeft = first.previous;
|
|
23840
|
-
const oldRight = last.next;
|
|
23841
|
-
|
|
23842
|
-
const newRight = this.byStart[index];
|
|
23843
|
-
if (!newRight && last === this.lastChunk) return this;
|
|
23844
|
-
const newLeft = newRight ? newRight.previous : this.lastChunk;
|
|
23845
|
-
|
|
23846
|
-
if (oldLeft) oldLeft.next = oldRight;
|
|
23847
|
-
if (oldRight) oldRight.previous = oldLeft;
|
|
23848
|
-
|
|
23849
|
-
if (newLeft) newLeft.next = first;
|
|
23850
|
-
if (newRight) newRight.previous = last;
|
|
23851
|
-
|
|
23852
|
-
if (!first.previous) this.firstChunk = last.next;
|
|
23853
|
-
if (!last.next) {
|
|
23854
|
-
this.lastChunk = first.previous;
|
|
23855
|
-
this.lastChunk.next = null;
|
|
23856
|
-
}
|
|
23857
|
-
|
|
23858
|
-
first.previous = newLeft;
|
|
23859
|
-
last.next = newRight || null;
|
|
23860
|
-
|
|
23861
|
-
if (!newLeft) this.firstChunk = first;
|
|
23862
|
-
if (!newRight) this.lastChunk = last;
|
|
23863
|
-
return this;
|
|
23864
|
-
}
|
|
23865
|
-
|
|
23866
|
-
overwrite(start, end, content, options) {
|
|
23867
|
-
options = options || {};
|
|
23868
|
-
return this.update(start, end, content, { ...options, overwrite: !options.contentOnly });
|
|
23869
|
-
}
|
|
23870
|
-
|
|
23871
|
-
update(start, end, content, options) {
|
|
23872
|
-
start = start + this.offset;
|
|
23873
|
-
end = end + this.offset;
|
|
23874
|
-
|
|
23875
|
-
if (typeof content !== 'string') throw new TypeError('replacement content must be a string');
|
|
23876
|
-
|
|
23877
|
-
if (this.original.length !== 0) {
|
|
23878
|
-
while (start < 0) start += this.original.length;
|
|
23879
|
-
while (end < 0) end += this.original.length;
|
|
23880
|
-
}
|
|
23881
|
-
|
|
23882
|
-
if (end > this.original.length) throw new Error('end is out of bounds');
|
|
23883
|
-
if (start === end)
|
|
23884
|
-
throw new Error(
|
|
23885
|
-
'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',
|
|
23886
|
-
);
|
|
23887
|
-
|
|
23888
|
-
this._split(start);
|
|
23889
|
-
this._split(end);
|
|
23890
|
-
|
|
23891
|
-
if (options === true) {
|
|
23892
|
-
if (!warned.storeName) {
|
|
23893
|
-
console.warn(
|
|
23894
|
-
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
|
23895
|
-
);
|
|
23896
|
-
warned.storeName = true;
|
|
23897
|
-
}
|
|
23898
|
-
|
|
23899
|
-
options = { storeName: true };
|
|
23900
|
-
}
|
|
23901
|
-
const storeName = options !== undefined ? options.storeName : false;
|
|
23902
|
-
const overwrite = options !== undefined ? options.overwrite : false;
|
|
23903
|
-
|
|
23904
|
-
if (storeName) {
|
|
23905
|
-
const original = this.original.slice(start, end);
|
|
23906
|
-
Object.defineProperty(this.storedNames, original, {
|
|
23907
|
-
writable: true,
|
|
23908
|
-
value: true,
|
|
23909
|
-
enumerable: true,
|
|
23910
|
-
});
|
|
23911
|
-
}
|
|
23912
|
-
|
|
23913
|
-
const first = this.byStart[start];
|
|
23914
|
-
const last = this.byEnd[end];
|
|
23915
|
-
|
|
23916
|
-
if (first) {
|
|
23917
|
-
let chunk = first;
|
|
23918
|
-
while (chunk !== last) {
|
|
23919
|
-
if (chunk.next !== this.byStart[chunk.end]) {
|
|
23920
|
-
throw new Error('Cannot overwrite across a split point');
|
|
23921
|
-
}
|
|
23922
|
-
chunk = chunk.next;
|
|
23923
|
-
chunk.edit('', false);
|
|
23924
|
-
}
|
|
23925
|
-
|
|
23926
|
-
first.edit(content, storeName, !overwrite);
|
|
23927
|
-
} else {
|
|
23928
|
-
// must be inserting at the end
|
|
23929
|
-
const newChunk = new Chunk(start, end, '').edit(content, storeName);
|
|
23930
|
-
|
|
23931
|
-
// TODO last chunk in the array may not be the last chunk, if it's moved...
|
|
23932
|
-
last.next = newChunk;
|
|
23933
|
-
newChunk.previous = last;
|
|
23934
|
-
}
|
|
23935
|
-
return this;
|
|
23936
|
-
}
|
|
23937
|
-
|
|
23938
|
-
prepend(content) {
|
|
23939
|
-
if (typeof content !== 'string') throw new TypeError('outro content must be a string');
|
|
23940
|
-
|
|
23941
|
-
this.intro = content + this.intro;
|
|
23942
|
-
return this;
|
|
23943
|
-
}
|
|
23944
|
-
|
|
23945
|
-
prependLeft(index, content) {
|
|
23946
|
-
index = index + this.offset;
|
|
23947
|
-
|
|
23948
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23949
|
-
|
|
23950
|
-
this._split(index);
|
|
23951
|
-
|
|
23952
|
-
const chunk = this.byEnd[index];
|
|
23953
|
-
|
|
23954
|
-
if (chunk) {
|
|
23955
|
-
chunk.prependLeft(content);
|
|
23956
|
-
} else {
|
|
23957
|
-
this.intro = content + this.intro;
|
|
23958
|
-
}
|
|
23959
|
-
return this;
|
|
23960
|
-
}
|
|
23961
|
-
|
|
23962
|
-
prependRight(index, content) {
|
|
23963
|
-
index = index + this.offset;
|
|
23964
|
-
|
|
23965
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23966
|
-
|
|
23967
|
-
this._split(index);
|
|
23968
|
-
|
|
23969
|
-
const chunk = this.byStart[index];
|
|
23970
|
-
|
|
23971
|
-
if (chunk) {
|
|
23972
|
-
chunk.prependRight(content);
|
|
23973
|
-
} else {
|
|
23974
|
-
this.outro = content + this.outro;
|
|
23975
|
-
}
|
|
23976
|
-
return this;
|
|
23977
|
-
}
|
|
23978
|
-
|
|
23979
|
-
remove(start, end) {
|
|
23980
|
-
start = start + this.offset;
|
|
23981
|
-
end = end + this.offset;
|
|
23982
|
-
|
|
23983
|
-
if (this.original.length !== 0) {
|
|
23984
|
-
while (start < 0) start += this.original.length;
|
|
23985
|
-
while (end < 0) end += this.original.length;
|
|
23986
|
-
}
|
|
23987
|
-
|
|
23988
|
-
if (start === end) return this;
|
|
23989
|
-
|
|
23990
|
-
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
|
23991
|
-
if (start > end) throw new Error('end must be greater than start');
|
|
23992
|
-
|
|
23993
|
-
this._split(start);
|
|
23994
|
-
this._split(end);
|
|
23995
|
-
|
|
23996
|
-
let chunk = this.byStart[start];
|
|
23997
|
-
|
|
23998
|
-
while (chunk) {
|
|
23999
|
-
chunk.intro = '';
|
|
24000
|
-
chunk.outro = '';
|
|
24001
|
-
chunk.edit('');
|
|
24002
|
-
|
|
24003
|
-
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
|
24004
|
-
}
|
|
24005
|
-
return this;
|
|
24006
|
-
}
|
|
24007
|
-
|
|
24008
|
-
reset(start, end) {
|
|
24009
|
-
start = start + this.offset;
|
|
24010
|
-
end = end + this.offset;
|
|
24011
|
-
|
|
24012
|
-
if (this.original.length !== 0) {
|
|
24013
|
-
while (start < 0) start += this.original.length;
|
|
24014
|
-
while (end < 0) end += this.original.length;
|
|
24015
|
-
}
|
|
24016
|
-
|
|
24017
|
-
if (start === end) return this;
|
|
24018
|
-
|
|
24019
|
-
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
|
24020
|
-
if (start > end) throw new Error('end must be greater than start');
|
|
24021
|
-
|
|
24022
|
-
this._split(start);
|
|
24023
|
-
this._split(end);
|
|
24024
|
-
|
|
24025
|
-
let chunk = this.byStart[start];
|
|
24026
|
-
|
|
24027
|
-
while (chunk) {
|
|
24028
|
-
chunk.reset();
|
|
24029
|
-
|
|
24030
|
-
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
|
24031
|
-
}
|
|
24032
|
-
return this;
|
|
24033
|
-
}
|
|
24034
|
-
|
|
24035
|
-
lastChar() {
|
|
24036
|
-
if (this.outro.length) return this.outro[this.outro.length - 1];
|
|
24037
|
-
let chunk = this.lastChunk;
|
|
24038
|
-
do {
|
|
24039
|
-
if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];
|
|
24040
|
-
if (chunk.content.length) return chunk.content[chunk.content.length - 1];
|
|
24041
|
-
if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];
|
|
24042
|
-
} while ((chunk = chunk.previous));
|
|
24043
|
-
if (this.intro.length) return this.intro[this.intro.length - 1];
|
|
24044
|
-
return '';
|
|
24045
|
-
}
|
|
24046
|
-
|
|
24047
|
-
lastLine() {
|
|
24048
|
-
let lineIndex = this.outro.lastIndexOf(n);
|
|
24049
|
-
if (lineIndex !== -1) return this.outro.substr(lineIndex + 1);
|
|
24050
|
-
let lineStr = this.outro;
|
|
24051
|
-
let chunk = this.lastChunk;
|
|
24052
|
-
do {
|
|
24053
|
-
if (chunk.outro.length > 0) {
|
|
24054
|
-
lineIndex = chunk.outro.lastIndexOf(n);
|
|
24055
|
-
if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;
|
|
24056
|
-
lineStr = chunk.outro + lineStr;
|
|
24057
|
-
}
|
|
24058
|
-
|
|
24059
|
-
if (chunk.content.length > 0) {
|
|
24060
|
-
lineIndex = chunk.content.lastIndexOf(n);
|
|
24061
|
-
if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;
|
|
24062
|
-
lineStr = chunk.content + lineStr;
|
|
24063
|
-
}
|
|
24064
|
-
|
|
24065
|
-
if (chunk.intro.length > 0) {
|
|
24066
|
-
lineIndex = chunk.intro.lastIndexOf(n);
|
|
24067
|
-
if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;
|
|
24068
|
-
lineStr = chunk.intro + lineStr;
|
|
24069
|
-
}
|
|
24070
|
-
} while ((chunk = chunk.previous));
|
|
24071
|
-
lineIndex = this.intro.lastIndexOf(n);
|
|
24072
|
-
if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;
|
|
24073
|
-
return this.intro + lineStr;
|
|
24074
|
-
}
|
|
24075
|
-
|
|
24076
|
-
slice(start = 0, end = this.original.length - this.offset) {
|
|
24077
|
-
start = start + this.offset;
|
|
24078
|
-
end = end + this.offset;
|
|
24079
|
-
|
|
24080
|
-
if (this.original.length !== 0) {
|
|
24081
|
-
while (start < 0) start += this.original.length;
|
|
24082
|
-
while (end < 0) end += this.original.length;
|
|
24083
|
-
}
|
|
24084
|
-
|
|
24085
|
-
let result = '';
|
|
24086
|
-
|
|
24087
|
-
// find start chunk
|
|
24088
|
-
let chunk = this.firstChunk;
|
|
24089
|
-
while (chunk && (chunk.start > start || chunk.end <= start)) {
|
|
24090
|
-
// found end chunk before start
|
|
24091
|
-
if (chunk.start < end && chunk.end >= end) {
|
|
24092
|
-
return result;
|
|
24093
|
-
}
|
|
24094
|
-
|
|
24095
|
-
chunk = chunk.next;
|
|
24096
|
-
}
|
|
24097
|
-
|
|
24098
|
-
if (chunk && chunk.edited && chunk.start !== start)
|
|
24099
|
-
throw new Error(`Cannot use replaced character ${start} as slice start anchor.`);
|
|
24100
|
-
|
|
24101
|
-
const startChunk = chunk;
|
|
24102
|
-
while (chunk) {
|
|
24103
|
-
if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {
|
|
24104
|
-
result += chunk.intro;
|
|
24105
|
-
}
|
|
24106
|
-
|
|
24107
|
-
const containsEnd = chunk.start < end && chunk.end >= end;
|
|
24108
|
-
if (containsEnd && chunk.edited && chunk.end !== end)
|
|
24109
|
-
throw new Error(`Cannot use replaced character ${end} as slice end anchor.`);
|
|
24110
|
-
|
|
24111
|
-
const sliceStart = startChunk === chunk ? start - chunk.start : 0;
|
|
24112
|
-
const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;
|
|
24113
|
-
|
|
24114
|
-
result += chunk.content.slice(sliceStart, sliceEnd);
|
|
24115
|
-
|
|
24116
|
-
if (chunk.outro && (!containsEnd || chunk.end === end)) {
|
|
24117
|
-
result += chunk.outro;
|
|
24118
|
-
}
|
|
24119
|
-
|
|
24120
|
-
if (containsEnd) {
|
|
24121
|
-
break;
|
|
24122
|
-
}
|
|
24123
|
-
|
|
24124
|
-
chunk = chunk.next;
|
|
24125
|
-
}
|
|
24126
|
-
|
|
24127
|
-
return result;
|
|
24128
|
-
}
|
|
24129
|
-
|
|
24130
|
-
// TODO deprecate this? not really very useful
|
|
24131
|
-
snip(start, end) {
|
|
24132
|
-
const clone = this.clone();
|
|
24133
|
-
clone.remove(0, start);
|
|
24134
|
-
clone.remove(end, clone.original.length);
|
|
24135
|
-
|
|
24136
|
-
return clone;
|
|
24137
|
-
}
|
|
24138
|
-
|
|
24139
|
-
_split(index) {
|
|
24140
|
-
if (this.byStart[index] || this.byEnd[index]) return;
|
|
24141
|
-
|
|
24142
|
-
let chunk = this.lastSearchedChunk;
|
|
24143
|
-
const searchForward = index > chunk.end;
|
|
24144
|
-
|
|
24145
|
-
while (chunk) {
|
|
24146
|
-
if (chunk.contains(index)) return this._splitChunk(chunk, index);
|
|
24147
|
-
|
|
24148
|
-
chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];
|
|
24149
|
-
}
|
|
24150
|
-
}
|
|
24151
|
-
|
|
24152
|
-
_splitChunk(chunk, index) {
|
|
24153
|
-
if (chunk.edited && chunk.content.length) {
|
|
24154
|
-
// zero-length edited chunks are a special case (overlapping replacements)
|
|
24155
|
-
const loc = getLocator(this.original)(index);
|
|
24156
|
-
throw new Error(
|
|
24157
|
-
`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`,
|
|
24158
|
-
);
|
|
24159
|
-
}
|
|
24160
|
-
|
|
24161
|
-
const newChunk = chunk.split(index);
|
|
24162
|
-
|
|
24163
|
-
this.byEnd[index] = chunk;
|
|
24164
|
-
this.byStart[index] = newChunk;
|
|
24165
|
-
this.byEnd[newChunk.end] = newChunk;
|
|
24166
|
-
|
|
24167
|
-
if (chunk === this.lastChunk) this.lastChunk = newChunk;
|
|
24168
|
-
|
|
24169
|
-
this.lastSearchedChunk = chunk;
|
|
24170
|
-
return true;
|
|
24171
|
-
}
|
|
24172
|
-
|
|
24173
|
-
toString() {
|
|
24174
|
-
let str = this.intro;
|
|
24175
|
-
|
|
24176
|
-
let chunk = this.firstChunk;
|
|
24177
|
-
while (chunk) {
|
|
24178
|
-
str += chunk.toString();
|
|
24179
|
-
chunk = chunk.next;
|
|
24180
|
-
}
|
|
24181
|
-
|
|
24182
|
-
return str + this.outro;
|
|
24183
|
-
}
|
|
24184
|
-
|
|
24185
|
-
isEmpty() {
|
|
24186
|
-
let chunk = this.firstChunk;
|
|
24187
|
-
do {
|
|
24188
|
-
if (
|
|
24189
|
-
(chunk.intro.length && chunk.intro.trim()) ||
|
|
24190
|
-
(chunk.content.length && chunk.content.trim()) ||
|
|
24191
|
-
(chunk.outro.length && chunk.outro.trim())
|
|
24192
|
-
)
|
|
24193
|
-
return false;
|
|
24194
|
-
} while ((chunk = chunk.next));
|
|
24195
|
-
return true;
|
|
24196
|
-
}
|
|
24197
|
-
|
|
24198
|
-
length() {
|
|
24199
|
-
let chunk = this.firstChunk;
|
|
24200
|
-
let length = 0;
|
|
24201
|
-
do {
|
|
24202
|
-
length += chunk.intro.length + chunk.content.length + chunk.outro.length;
|
|
24203
|
-
} while ((chunk = chunk.next));
|
|
24204
|
-
return length;
|
|
24205
|
-
}
|
|
24206
|
-
|
|
24207
|
-
trimLines() {
|
|
24208
|
-
return this.trim('[\\r\\n]');
|
|
24209
|
-
}
|
|
24210
|
-
|
|
24211
|
-
trim(charType) {
|
|
24212
|
-
return this.trimStart(charType).trimEnd(charType);
|
|
24213
|
-
}
|
|
24214
|
-
|
|
24215
|
-
trimEndAborted(charType) {
|
|
24216
|
-
const rx = new RegExp((charType || '\\s') + '+$');
|
|
24217
|
-
|
|
24218
|
-
this.outro = this.outro.replace(rx, '');
|
|
24219
|
-
if (this.outro.length) return true;
|
|
24220
|
-
|
|
24221
|
-
let chunk = this.lastChunk;
|
|
24222
|
-
|
|
24223
|
-
do {
|
|
24224
|
-
const end = chunk.end;
|
|
24225
|
-
const aborted = chunk.trimEnd(rx);
|
|
24226
|
-
|
|
24227
|
-
// if chunk was trimmed, we have a new lastChunk
|
|
24228
|
-
if (chunk.end !== end) {
|
|
24229
|
-
if (this.lastChunk === chunk) {
|
|
24230
|
-
this.lastChunk = chunk.next;
|
|
24231
|
-
}
|
|
24232
|
-
|
|
24233
|
-
this.byEnd[chunk.end] = chunk;
|
|
24234
|
-
this.byStart[chunk.next.start] = chunk.next;
|
|
24235
|
-
this.byEnd[chunk.next.end] = chunk.next;
|
|
24236
|
-
}
|
|
24237
|
-
|
|
24238
|
-
if (aborted) return true;
|
|
24239
|
-
chunk = chunk.previous;
|
|
24240
|
-
} while (chunk);
|
|
24241
|
-
|
|
24242
|
-
return false;
|
|
24243
|
-
}
|
|
24244
|
-
|
|
24245
|
-
trimEnd(charType) {
|
|
24246
|
-
this.trimEndAborted(charType);
|
|
24247
|
-
return this;
|
|
24248
|
-
}
|
|
24249
|
-
trimStartAborted(charType) {
|
|
24250
|
-
const rx = new RegExp('^' + (charType || '\\s') + '+');
|
|
24251
|
-
|
|
24252
|
-
this.intro = this.intro.replace(rx, '');
|
|
24253
|
-
if (this.intro.length) return true;
|
|
24254
|
-
|
|
24255
|
-
let chunk = this.firstChunk;
|
|
24256
|
-
|
|
24257
|
-
do {
|
|
24258
|
-
const end = chunk.end;
|
|
24259
|
-
const aborted = chunk.trimStart(rx);
|
|
24260
|
-
|
|
24261
|
-
if (chunk.end !== end) {
|
|
24262
|
-
// special case...
|
|
24263
|
-
if (chunk === this.lastChunk) this.lastChunk = chunk.next;
|
|
24264
|
-
|
|
24265
|
-
this.byEnd[chunk.end] = chunk;
|
|
24266
|
-
this.byStart[chunk.next.start] = chunk.next;
|
|
24267
|
-
this.byEnd[chunk.next.end] = chunk.next;
|
|
24268
|
-
}
|
|
24269
|
-
|
|
24270
|
-
if (aborted) return true;
|
|
24271
|
-
chunk = chunk.next;
|
|
24272
|
-
} while (chunk);
|
|
24273
|
-
|
|
24274
|
-
return false;
|
|
24275
|
-
}
|
|
24276
|
-
|
|
24277
|
-
trimStart(charType) {
|
|
24278
|
-
this.trimStartAborted(charType);
|
|
24279
|
-
return this;
|
|
24280
|
-
}
|
|
24281
|
-
|
|
24282
|
-
hasChanged() {
|
|
24283
|
-
return this.original !== this.toString();
|
|
24284
|
-
}
|
|
24285
|
-
|
|
24286
|
-
_replaceRegexp(searchValue, replacement) {
|
|
24287
|
-
function getReplacement(match, str) {
|
|
24288
|
-
if (typeof replacement === 'string') {
|
|
24289
|
-
return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => {
|
|
24290
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter
|
|
24291
|
-
if (i === '$') return '$';
|
|
24292
|
-
if (i === '&') return match[0];
|
|
24293
|
-
const num = +i;
|
|
24294
|
-
if (num < match.length) return match[+i];
|
|
24295
|
-
return `$${i}`;
|
|
24296
|
-
});
|
|
24297
|
-
} else {
|
|
24298
|
-
return replacement(...match, match.index, str, match.groups);
|
|
24299
|
-
}
|
|
24300
|
-
}
|
|
24301
|
-
function matchAll(re, str) {
|
|
24302
|
-
let match;
|
|
24303
|
-
const matches = [];
|
|
24304
|
-
while ((match = re.exec(str))) {
|
|
24305
|
-
matches.push(match);
|
|
24306
|
-
}
|
|
24307
|
-
return matches;
|
|
24308
|
-
}
|
|
24309
|
-
if (searchValue.global) {
|
|
24310
|
-
const matches = matchAll(searchValue, this.original);
|
|
24311
|
-
matches.forEach((match) => {
|
|
24312
|
-
if (match.index != null) {
|
|
24313
|
-
const replacement = getReplacement(match, this.original);
|
|
24314
|
-
if (replacement !== match[0]) {
|
|
24315
|
-
this.overwrite(match.index, match.index + match[0].length, replacement);
|
|
24316
|
-
}
|
|
24317
|
-
}
|
|
24318
|
-
});
|
|
24319
|
-
} else {
|
|
24320
|
-
const match = this.original.match(searchValue);
|
|
24321
|
-
if (match && match.index != null) {
|
|
24322
|
-
const replacement = getReplacement(match, this.original);
|
|
24323
|
-
if (replacement !== match[0]) {
|
|
24324
|
-
this.overwrite(match.index, match.index + match[0].length, replacement);
|
|
24325
|
-
}
|
|
24326
|
-
}
|
|
24327
|
-
}
|
|
24328
|
-
return this;
|
|
24329
|
-
}
|
|
24330
|
-
|
|
24331
|
-
_replaceString(string, replacement) {
|
|
24332
|
-
const { original } = this;
|
|
24333
|
-
const index = original.indexOf(string);
|
|
24334
|
-
|
|
24335
|
-
if (index !== -1) {
|
|
24336
|
-
this.overwrite(index, index + string.length, replacement);
|
|
24337
|
-
}
|
|
24338
|
-
|
|
24339
|
-
return this;
|
|
24340
|
-
}
|
|
24341
|
-
|
|
24342
|
-
replace(searchValue, replacement) {
|
|
24343
|
-
if (typeof searchValue === 'string') {
|
|
24344
|
-
return this._replaceString(searchValue, replacement);
|
|
24345
|
-
}
|
|
24346
|
-
|
|
24347
|
-
return this._replaceRegexp(searchValue, replacement);
|
|
24348
|
-
}
|
|
24349
|
-
|
|
24350
|
-
_replaceAllString(string, replacement) {
|
|
24351
|
-
const { original } = this;
|
|
24352
|
-
const stringLength = string.length;
|
|
24353
|
-
for (
|
|
24354
|
-
let index = original.indexOf(string);
|
|
24355
|
-
index !== -1;
|
|
24356
|
-
index = original.indexOf(string, index + stringLength)
|
|
24357
|
-
) {
|
|
24358
|
-
const previous = original.slice(index, index + stringLength);
|
|
24359
|
-
if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
|
|
24360
|
-
}
|
|
24361
|
-
|
|
24362
|
-
return this;
|
|
24363
|
-
}
|
|
24364
|
-
|
|
24365
|
-
replaceAll(searchValue, replacement) {
|
|
24366
|
-
if (typeof searchValue === 'string') {
|
|
24367
|
-
return this._replaceAllString(searchValue, replacement);
|
|
24368
|
-
}
|
|
24369
|
-
|
|
24370
|
-
if (!searchValue.global) {
|
|
24371
|
-
throw new TypeError(
|
|
24372
|
-
'MagicString.prototype.replaceAll called with a non-global RegExp argument',
|
|
24373
|
-
);
|
|
24374
|
-
}
|
|
24375
|
-
|
|
24376
|
-
return this._replaceRegexp(searchValue, replacement);
|
|
24377
|
-
}
|
|
24378
|
-
}
|
|
24379
|
-
|
|
24380
23207
|
var utils = {};
|
|
24381
23208
|
|
|
24382
23209
|
var constants;
|
|
@@ -24571,7 +23398,7 @@ var hasRequiredUtils;
|
|
|
24571
23398
|
function requireUtils () {
|
|
24572
23399
|
if (hasRequiredUtils) return utils;
|
|
24573
23400
|
hasRequiredUtils = 1;
|
|
24574
|
-
(function (exports) {
|
|
23401
|
+
(function (exports$1) {
|
|
24575
23402
|
|
|
24576
23403
|
const path = path$3;
|
|
24577
23404
|
const win32 = process.platform === 'win32';
|
|
@@ -24582,19 +23409,19 @@ function requireUtils () {
|
|
|
24582
23409
|
REGEX_SPECIAL_CHARS_GLOBAL
|
|
24583
23410
|
} = requireConstants();
|
|
24584
23411
|
|
|
24585
|
-
exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
24586
|
-
exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
24587
|
-
exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
|
|
24588
|
-
exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
24589
|
-
exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
23412
|
+
exports$1.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
23413
|
+
exports$1.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
23414
|
+
exports$1.isRegexChar = str => str.length === 1 && exports$1.hasRegexChars(str);
|
|
23415
|
+
exports$1.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
23416
|
+
exports$1.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
24590
23417
|
|
|
24591
|
-
exports.removeBackslashes = str => {
|
|
23418
|
+
exports$1.removeBackslashes = str => {
|
|
24592
23419
|
return str.replace(REGEX_REMOVE_BACKSLASH, match => {
|
|
24593
23420
|
return match === '\\' ? '' : match;
|
|
24594
23421
|
});
|
|
24595
23422
|
};
|
|
24596
23423
|
|
|
24597
|
-
exports.supportsLookbehinds = () => {
|
|
23424
|
+
exports$1.supportsLookbehinds = () => {
|
|
24598
23425
|
const segs = process.version.slice(1).split('.').map(Number);
|
|
24599
23426
|
if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
|
|
24600
23427
|
return true;
|
|
@@ -24602,21 +23429,21 @@ function requireUtils () {
|
|
|
24602
23429
|
return false;
|
|
24603
23430
|
};
|
|
24604
23431
|
|
|
24605
|
-
exports.isWindows = options => {
|
|
23432
|
+
exports$1.isWindows = options => {
|
|
24606
23433
|
if (options && typeof options.windows === 'boolean') {
|
|
24607
23434
|
return options.windows;
|
|
24608
23435
|
}
|
|
24609
23436
|
return win32 === true || path.sep === '\\';
|
|
24610
23437
|
};
|
|
24611
23438
|
|
|
24612
|
-
exports.escapeLast = (input, char, lastIdx) => {
|
|
23439
|
+
exports$1.escapeLast = (input, char, lastIdx) => {
|
|
24613
23440
|
const idx = input.lastIndexOf(char, lastIdx);
|
|
24614
23441
|
if (idx === -1) return input;
|
|
24615
|
-
if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
|
|
23442
|
+
if (input[idx - 1] === '\\') return exports$1.escapeLast(input, char, idx - 1);
|
|
24616
23443
|
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
24617
23444
|
};
|
|
24618
23445
|
|
|
24619
|
-
exports.removePrefix = (input, state = {}) => {
|
|
23446
|
+
exports$1.removePrefix = (input, state = {}) => {
|
|
24620
23447
|
let output = input;
|
|
24621
23448
|
if (output.startsWith('./')) {
|
|
24622
23449
|
output = output.slice(2);
|
|
@@ -24625,7 +23452,7 @@ function requireUtils () {
|
|
|
24625
23452
|
return output;
|
|
24626
23453
|
};
|
|
24627
23454
|
|
|
24628
|
-
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
23455
|
+
exports$1.wrapOutput = (input, state = {}, options = {}) => {
|
|
24629
23456
|
const prepend = options.contains ? '' : '^';
|
|
24630
23457
|
const append = options.contains ? '' : '$';
|
|
24631
23458
|
|