uni-highlight.min.js 198 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254
  1. /*
  2. Highlight.js v11.7.0
  3. (c) 2006-2022 undefined and other contributors
  4. License: BSD-3-Clause
  5. */
  6. var e = {
  7. exports: {}
  8. };
  9. function n(e) {
  10. return e instanceof Map ? e.clear = e.delete = e.set = () => {
  11. throw Error("map is read-only")
  12. } : e instanceof Set && (e.add = e.clear = e.delete = () => {
  13. throw Error("set is read-only")
  14. }), Object.freeze(e), Object.getOwnPropertyNames(e).forEach((t => {
  15. var a = e[t];
  16. "object" != typeof a || Object.isFrozen(a) || n(a)
  17. })), e
  18. }
  19. e.exports = n, e.exports.default = n;
  20. class t {
  21. constructor(e) {
  22. void 0 === e.data && (e.data = {}), this.data = e.data, this.isMatchIgnored = !1
  23. }
  24. ignoreMatch() {
  25. this.isMatchIgnored = !0
  26. }
  27. }
  28. function a(e) {
  29. return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g,
  30. "&#x27;")
  31. }
  32. function i(e, ...n) {
  33. const t = Object.create(null);
  34. for (const n in e) t[n] = e[n];
  35. return n.forEach((e => {
  36. for (const n in e) t[n] = e[n]
  37. })), t
  38. }
  39. const r = e => !!e.scope || e.sublanguage && e.language;
  40. class s {
  41. constructor(e, n) {
  42. this.buffer = "", this.classPrefix = n.classPrefix, e.walk(this)
  43. }
  44. addText(e) {
  45. this.buffer += a(e)
  46. }
  47. openNode(e) {
  48. if (!r(e)) return;
  49. let n = "";
  50. n = e.sublanguage ? "language-" + e.language : ((e, {
  51. prefix: n
  52. }) => {
  53. if (e.includes(".")) {
  54. const t = e.split(".");
  55. return [`${n}${t.shift()}`, ...t.map(((e, n) => `${e}${"_".repeat(n+1)}`))].join(" ")
  56. }
  57. return `${n}${e}`
  58. })(e.scope, {
  59. prefix: this.classPrefix
  60. }), this.span(n)
  61. }
  62. closeNode(e) {
  63. r(e) && (this.buffer += "</span>")
  64. }
  65. value() {
  66. return this.buffer
  67. }
  68. span(e) {
  69. this.buffer += `<span class="${e}">`
  70. }
  71. }
  72. const o = (e = {}) => {
  73. const n = {
  74. children: []
  75. };
  76. return Object.assign(n, e), n
  77. };
  78. class l {
  79. constructor() {
  80. this.rootNode = o(), this.stack = [this.rootNode]
  81. }
  82. get top() {
  83. return this.stack[this.stack.length - 1]
  84. }
  85. get root() {
  86. return this.rootNode
  87. }
  88. add(e) {
  89. this.top.children.push(e)
  90. }
  91. openNode(e) {
  92. const n = o({
  93. scope: e
  94. });
  95. this.add(n), this.stack.push(n)
  96. }
  97. closeNode() {
  98. if (this.stack.length > 1) return this.stack.pop()
  99. }
  100. closeAllNodes() {
  101. for (; this.closeNode(););
  102. }
  103. toJSON() {
  104. return JSON.stringify(this.rootNode, null, 4)
  105. }
  106. walk(e) {
  107. return this.constructor._walk(e, this.rootNode)
  108. }
  109. static _walk(e, n) {
  110. return "string" == typeof n ? e.addText(n) : n.children && (e.openNode(n),
  111. n.children.forEach((n => this._walk(e, n))), e.closeNode(n)), e
  112. }
  113. static _collapse(e) {
  114. "string" != typeof e && e.children && (e.children.every((e => "string" == typeof e)) ? e.children = [e.children
  115. .join("")
  116. ] : e.children.forEach((e => {
  117. l._collapse(e)
  118. })))
  119. }
  120. }
  121. class c extends l {
  122. constructor(e) {
  123. super(), this.options = e
  124. }
  125. addKeyword(e, n) {
  126. "" !== e && (this.openNode(n), this.addText(e), this.closeNode())
  127. }
  128. addText(e) {
  129. "" !== e && this.add(e)
  130. }
  131. addSublanguage(e, n) {
  132. const t = e.root;
  133. t.sublanguage = !0, t.language = n, this.add(t)
  134. }
  135. toHTML() {
  136. return new s(this, this.options).value()
  137. }
  138. finalize() {
  139. return !0
  140. }
  141. }
  142. function d(e) {
  143. return e ? "string" == typeof e ? e : e.source : null
  144. }
  145. function g(e) {
  146. return m("(?=", e, ")")
  147. }
  148. function u(e) {
  149. return m("(?:", e, ")*")
  150. }
  151. function b(e) {
  152. return m("(?:", e, ")?")
  153. }
  154. function m(...e) {
  155. return e.map((e => d(e))).join("")
  156. }
  157. function p(...e) {
  158. const n = (e => {
  159. const n = e[e.length - 1];
  160. return "object" == typeof n && n.constructor === Object ? (e.splice(e.length - 1, 1), n) : {}
  161. })(e);
  162. return "(" + (n.capture ? "" : "?:") + e.map((e => d(e))).join("|") + ")"
  163. }
  164. function _(e) {
  165. return RegExp(e.toString() + "|").exec("").length - 1
  166. }
  167. const h = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
  168. function f(e, {
  169. joinWith: n
  170. }) {
  171. let t = 0;
  172. return e.map((e => {
  173. t += 1;
  174. const n = t;
  175. let a = d(e),
  176. i = "";
  177. for (; a.length > 0;) {
  178. const e = h.exec(a);
  179. if (!e) {
  180. i += a;
  181. break
  182. }
  183. i += a.substring(0, e.index),
  184. a = a.substring(e.index + e[0].length), "\\" === e[0][0] && e[1] ? i += "\\" + (Number(e[1]) + n) : (i +=
  185. e[0],
  186. "(" === e[0] && t++)
  187. }
  188. return i
  189. })).map((e => `(${e})`)).join(n)
  190. }
  191. const E = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
  192. y = {
  193. begin: "\\\\[\\s\\S]",
  194. relevance: 0
  195. },
  196. w = {
  197. scope: "string",
  198. begin: "'",
  199. end: "'",
  200. illegal: "\\n",
  201. contains: [y]
  202. },
  203. N = {
  204. scope: "string",
  205. begin: '"',
  206. end: '"',
  207. illegal: "\\n",
  208. contains: [y]
  209. },
  210. v = (e, n, t = {}) => {
  211. const a = i({
  212. scope: "comment",
  213. begin: e,
  214. end: n,
  215. contains: []
  216. }, t);
  217. a.contains.push({
  218. scope: "doctag",
  219. begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
  220. end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,
  221. excludeBegin: !0,
  222. relevance: 0
  223. });
  224. const r = p("I", "a", "is", "so", "us", "to", "at", "if", "in", "it", "on", /[A-Za-z]+['](d|ve|re|ll|t|s|n)/,
  225. /[A-Za-z]+[-][a-z]+/, /[A-Za-z][a-z]{2,}/);
  226. return a.contains.push({
  227. begin: m(/[ ]+/, "(", r, /[.]?[:]?([.][ ]|[ ])/, "){3}")
  228. }), a
  229. },
  230. O = v("//", "$"),
  231. k = v("/\\*", "\\*/"),
  232. x = v("#", "$");
  233. var M = Object.freeze({
  234. __proto__: null,
  235. MATCH_NOTHING_RE: /\b\B/,
  236. IDENT_RE: "[a-zA-Z]\\w*",
  237. UNDERSCORE_IDENT_RE: "[a-zA-Z_]\\w*",
  238. NUMBER_RE: "\\b\\d+(\\.\\d+)?",
  239. C_NUMBER_RE: E,
  240. BINARY_NUMBER_RE: "\\b(0b[01]+)",
  241. RE_STARTERS_RE: "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
  242. SHEBANG: (e = {}) => {
  243. const n = /^#![ ]*\//;
  244. return e.binary && (e.begin = m(n, /.*\b/, e.binary, /\b.*/)), i({
  245. scope: "meta",
  246. begin: n,
  247. end: /$/,
  248. relevance: 0,
  249. "on:begin": (e, n) => {
  250. 0 !== e.index && n.ignoreMatch()
  251. }
  252. }, e)
  253. },
  254. BACKSLASH_ESCAPE: y,
  255. APOS_STRING_MODE: w,
  256. QUOTE_STRING_MODE: N,
  257. PHRASAL_WORDS_MODE: {
  258. begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
  259. },
  260. COMMENT: v,
  261. C_LINE_COMMENT_MODE: O,
  262. C_BLOCK_COMMENT_MODE: k,
  263. HASH_COMMENT_MODE: x,
  264. NUMBER_MODE: {
  265. scope: "number",
  266. begin: "\\b\\d+(\\.\\d+)?",
  267. relevance: 0
  268. },
  269. C_NUMBER_MODE: {
  270. scope: "number",
  271. begin: E,
  272. relevance: 0
  273. },
  274. BINARY_NUMBER_MODE: {
  275. scope: "number",
  276. begin: "\\b(0b[01]+)",
  277. relevance: 0
  278. },
  279. REGEXP_MODE: {
  280. begin: /(?=\/[^/\n]*\/)/,
  281. contains: [{
  282. scope: "regexp",
  283. begin: /\//,
  284. end: /\/[gimuy]*/,
  285. illegal: /\n/,
  286. contains: [y, {
  287. begin: /\[/,
  288. end: /\]/,
  289. relevance: 0,
  290. contains: [y]
  291. }]
  292. }]
  293. },
  294. TITLE_MODE: {
  295. scope: "title",
  296. begin: "[a-zA-Z]\\w*",
  297. relevance: 0
  298. },
  299. UNDERSCORE_TITLE_MODE: {
  300. scope: "title",
  301. begin: "[a-zA-Z_]\\w*",
  302. relevance: 0
  303. },
  304. METHOD_GUARD: {
  305. begin: "\\.\\s*[a-zA-Z_]\\w*",
  306. relevance: 0
  307. },
  308. END_SAME_AS_BEGIN: e => Object.assign(e, {
  309. "on:begin": (e, n) => {
  310. n.data._beginMatch = e[1]
  311. },
  312. "on:end": (e, n) => {
  313. n.data._beginMatch !== e[1] && n.ignoreMatch()
  314. }
  315. })
  316. });
  317. function S(e, n) {
  318. "." === e.input[e.index - 1] && n.ignoreMatch()
  319. }
  320. function A(e, n) {
  321. void 0 !== e.className && (e.scope = e.className, delete e.className)
  322. }
  323. function C(e, n) {
  324. n && e.beginKeywords && (e.begin = "\\b(" + e.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)",
  325. e.__beforeBegin = S, e.keywords = e.keywords || e.beginKeywords, delete e.beginKeywords,
  326. void 0 === e.relevance && (e.relevance = 0))
  327. }
  328. function T(e, n) {
  329. Array.isArray(e.illegal) && (e.illegal = p(...e.illegal))
  330. }
  331. function R(e, n) {
  332. if (e.match) {
  333. if (e.begin || e.end) throw Error("begin & end are not supported with match");
  334. e.begin = e.match, delete e.match
  335. }
  336. }
  337. function D(e, n) {
  338. void 0 === e.relevance && (e.relevance = 1)
  339. }
  340. const I = (e, n) => {
  341. if (!e.beforeMatch) return;
  342. if (e.starts) throw Error("beforeMatch cannot be used with starts");
  343. const t = Object.assign({}, e);
  344. Object.keys(e).forEach((n => {
  345. delete e[n]
  346. })), e.keywords = t.keywords, e.begin = m(t.beforeMatch, g(t.begin)), e.starts = {
  347. relevance: 0,
  348. contains: [Object.assign(t, {
  349. endsParent: !0
  350. })]
  351. }, e.relevance = 0, delete t.beforeMatch
  352. },
  353. L = ["of", "and", "for", "in", "not", "or", "if", "then", "parent", "list", "value"];
  354. function B(e, n, t = "keyword") {
  355. const a = Object.create(null);
  356. return "string" == typeof e ? i(t, e.split(" ")) : Array.isArray(e) ? i(t, e) : Object.keys(e).forEach((t => {
  357. Object.assign(a, B(e[t], n, t))
  358. })), a;
  359. function i(e, t) {
  360. n && (t = t.map((e => e.toLowerCase()))), t.forEach((n => {
  361. const t = n.split("|");
  362. a[t[0]] = [e, $(t[0], t[1])]
  363. }))
  364. }
  365. }
  366. function $(e, n) {
  367. return n ? Number(n) : (e => L.includes(e.toLowerCase()))(e) ? 0 : 1
  368. }
  369. const z = {},
  370. F = e => {
  371. console.error(e)
  372. },
  373. U = (e, ...n) => {
  374. console.log("WARN: " + e, ...n)
  375. },
  376. j = (e, n) => {
  377. z[`${e}/${n}`] || (console.log(`Deprecated as of ${e}. ${n}`), z[`${e}/${n}`] = !0)
  378. },
  379. P = Error();
  380. function K(e, n, {
  381. key: t
  382. }) {
  383. let a = 0;
  384. const i = e[t],
  385. r = {},
  386. s = {};
  387. for (let e = 1; e <= n.length; e++) s[e + a] = i[e], r[e + a] = !0, a += _(n[e - 1]);
  388. e[t] = s, e[t]._emit = r, e[t]._multi = !0
  389. }
  390. function H(e) {
  391. (e => {
  392. e.scope && "object" == typeof e.scope && null !== e.scope && (e.beginScope = e.scope,
  393. delete e.scope)
  394. })(e), "string" == typeof e.beginScope && (e.beginScope = {
  395. _wrap: e.beginScope
  396. }), "string" == typeof e.endScope && (e.endScope = {
  397. _wrap: e.endScope
  398. }), (e => {
  399. if (Array.isArray(e.begin)) {
  400. if (e.skip || e.excludeBegin || e.returnBegin) throw F(
  401. "skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
  402. P;
  403. if ("object" != typeof e.beginScope || null === e.beginScope) throw F("beginScope must be object"),
  404. P;
  405. K(e, e.begin, {
  406. key: "beginScope"
  407. }), e.begin = f(e.begin, {
  408. joinWith: ""
  409. })
  410. }
  411. })(e), (e => {
  412. if (Array.isArray(e.end)) {
  413. if (e.skip || e.excludeEnd || e.returnEnd) throw F(
  414. "skip, excludeEnd, returnEnd not compatible with endScope: {}"),
  415. P;
  416. if ("object" != typeof e.endScope || null === e.endScope) throw F("endScope must be object"),
  417. P;
  418. K(e, e.end, {
  419. key: "endScope"
  420. }), e.end = f(e.end, {
  421. joinWith: ""
  422. })
  423. }
  424. })(e)
  425. }
  426. function q(e) {
  427. function n(n, t) {
  428. return RegExp(d(n), "m" + (e.case_insensitive ? "i" : "") + (e.unicodeRegex ? "u" : "") + (t ? "g" : ""))
  429. }
  430. class t {
  431. constructor() {
  432. this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0
  433. }
  434. addRule(e, n) {
  435. n.position = this.position++, this.matchIndexes[this.matchAt] = n, this.regexes.push([n, e]),
  436. this.matchAt += _(e) + 1
  437. }
  438. compile() {
  439. 0 === this.regexes.length && (this.exec = () => null);
  440. const e = this.regexes.map((e => e[1]));
  441. this.matcherRe = n(f(e, {
  442. joinWith: "|"
  443. }), !0), this.lastIndex = 0
  444. }
  445. exec(e) {
  446. this.matcherRe.lastIndex = this.lastIndex;
  447. const n = this.matcherRe.exec(e);
  448. if (!n) return null;
  449. const t = n.findIndex(((e, n) => n > 0 && void 0 !== e)),
  450. a = this.matchIndexes[t];
  451. return n.splice(0, t), Object.assign(n, a)
  452. }
  453. }
  454. class a {
  455. constructor() {
  456. this.rules = [], this.multiRegexes = [],
  457. this.count = 0, this.lastIndex = 0, this.regexIndex = 0
  458. }
  459. getMatcher(e) {
  460. if (this.multiRegexes[e]) return this.multiRegexes[e];
  461. const n = new t;
  462. return this.rules.slice(e).forEach((([e, t]) => n.addRule(e, t))),
  463. n.compile(), this.multiRegexes[e] = n, n
  464. }
  465. resumingScanAtSamePosition() {
  466. return 0 !== this.regexIndex
  467. }
  468. considerAll() {
  469. this.regexIndex = 0
  470. }
  471. addRule(e, n) {
  472. this.rules.push([e, n]), "begin" === n.type && this.count++
  473. }
  474. exec(e) {
  475. const n = this.getMatcher(this.regexIndex);
  476. n.lastIndex = this.lastIndex;
  477. let t = n.exec(e);
  478. if (this.resumingScanAtSamePosition())
  479. if (t && t.index === this.lastIndex);
  480. else {
  481. const n = this.getMatcher(0);
  482. n.lastIndex = this.lastIndex + 1, t = n.exec(e)
  483. }
  484. return t && (this.regexIndex += t.position + 1,
  485. this.regexIndex === this.count && this.considerAll()), t
  486. }
  487. }
  488. if (e.compilerExtensions || (e.compilerExtensions = []),
  489. e.contains && e.contains.includes("self")) throw Error(
  490. "ERR: contains `self` is not supported at the top-level of a language. See documentation.");
  491. return e.classNameAliases = i(e.classNameAliases || {}),
  492. function t(r, s) {
  493. const o = r;
  494. if (r.isCompiled) return o;
  495. [A, R, H, I].forEach((e => e(r, s))), e.compilerExtensions.forEach((e => e(r, s))),
  496. r.__beforeBegin = null, [C, T, D].forEach((e => e(r, s))), r.isCompiled = !0;
  497. let l = null;
  498. return "object" == typeof r.keywords && r.keywords.$pattern && (r.keywords = Object.assign({}, r.keywords),
  499. l = r.keywords.$pattern,
  500. delete r.keywords.$pattern), l = l || /\w+/, r.keywords && (r.keywords = B(r.keywords, e.case_insensitive)),
  501. o.keywordPatternRe = n(l, !0),
  502. s && (r.begin || (r.begin = /\B|\b/), o.beginRe = n(o.begin), r.end || r.endsWithParent || (r.end = /\B|\b/),
  503. r.end && (o.endRe = n(o.end)),
  504. o.terminatorEnd = d(o.end) || "", r.endsWithParent && s.terminatorEnd && (o.terminatorEnd += (r.end ? "|" :
  505. "") + s.terminatorEnd)),
  506. r.illegal && (o.illegalRe = n(r.illegal)),
  507. r.contains || (r.contains = []), r.contains = [].concat(...r.contains.map((e => (e => (e.variants && !e
  508. .cachedVariants && (e.cachedVariants = e.variants.map((n => i(e, {
  509. variants: null
  510. }, n)))), e.cachedVariants ? e.cachedVariants : Z(e) ? i(e, {
  511. starts: e.starts ? i(e.starts) : null
  512. }) : Object.isFrozen(e) ? i(e) : e))("self" === e ? r : e)))), r.contains.forEach((e => {
  513. t(e, o)
  514. })), r.starts && t(r.starts, s), o.matcher = (e => {
  515. const n = new a;
  516. return e.contains.forEach((e => n.addRule(e.begin, {
  517. rule: e,
  518. type: "begin"
  519. }))), e.terminatorEnd && n.addRule(e.terminatorEnd, {
  520. type: "end"
  521. }), e.illegal && n.addRule(e.illegal, {
  522. type: "illegal"
  523. }), n
  524. })(o), o
  525. }(e)
  526. }
  527. function Z(e) {
  528. return !!e && (e.endsWithParent || Z(e.starts))
  529. }
  530. class G extends Error {
  531. constructor(e, n) {
  532. super(e), this.name = "HTMLInjectionError", this.html = n
  533. }
  534. }
  535. const W = a,
  536. Q = i,
  537. X = Symbol("nomatch");
  538. var V = (n => {
  539. const a = Object.create(null),
  540. i = Object.create(null),
  541. r = [];
  542. let s = !0;
  543. const o = "Could not find the language '{}', did you forget to load/include a language module?",
  544. l = {
  545. disableAutodetect: !0,
  546. name: "Plain text",
  547. contains: []
  548. };
  549. let d = {
  550. ignoreUnescapedHTML: !1,
  551. throwUnescapedHTML: !1,
  552. noHighlightRe: /^(no-?highlight)$/i,
  553. languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
  554. classPrefix: "hljs-",
  555. cssSelector: "pre code",
  556. languages: null,
  557. __emitter: c
  558. };
  559. function _(e) {
  560. return d.noHighlightRe.test(e)
  561. }
  562. function h(e, n, t) {
  563. let a = "",
  564. i = "";
  565. "object" == typeof n ? (a = e,
  566. t = n.ignoreIllegals, i = n.language) : (j("10.7.0", "highlight(lang, code, ...args) has been deprecated."),
  567. j("10.7.0",
  568. "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
  569. i = e, a = n), void 0 === t && (t = !0);
  570. const r = {
  571. code: a,
  572. language: i
  573. };
  574. x("before:highlight", r);
  575. const s = r.result ? r.result : f(r.language, r.code, t);
  576. return s.code = r.code, x("after:highlight", s), s
  577. }
  578. function f(e, n, i, r) {
  579. const l = Object.create(null);
  580. function c() {
  581. if (!k.keywords) return void M.addText(S);
  582. let e = 0;
  583. k.keywordPatternRe.lastIndex = 0;
  584. let n = k.keywordPatternRe.exec(S),
  585. t = "";
  586. for (; n;) {
  587. t += S.substring(e, n.index);
  588. const i = w.case_insensitive ? n[0].toLowerCase() : n[0],
  589. r = (a = i, k.keywords[a]);
  590. if (r) {
  591. const [e, a] = r
  592. ;
  593. if (M.addText(t), t = "", l[i] = (l[i] || 0) + 1, l[i] <= 7 && (A += a), e.startsWith("_")) t += n[0];
  594. else {
  595. const t = w.classNameAliases[e] || e;
  596. M.addKeyword(n[0], t)
  597. }
  598. } else t += n[0];
  599. e = k.keywordPatternRe.lastIndex, n = k.keywordPatternRe.exec(S)
  600. }
  601. var a;
  602. t += S.substring(e), M.addText(t)
  603. }
  604. function g() {
  605. null != k.subLanguage ? (() => {
  606. if ("" === S) return;
  607. let e = null;
  608. if ("string" == typeof k.subLanguage) {
  609. if (!a[k.subLanguage]) return void M.addText(S);
  610. e = f(k.subLanguage, S, !0, x[k.subLanguage]), x[k.subLanguage] = e._top
  611. } else e = E(S, k.subLanguage.length ? k.subLanguage : null);
  612. k.relevance > 0 && (A += e.relevance), M.addSublanguage(e._emitter, e.language)
  613. })() : c(), S = ""
  614. }
  615. function u(e, n) {
  616. let t = 1;
  617. const a = n.length - 1;
  618. for (; t <= a;) {
  619. if (!e._emit[t]) {
  620. t++;
  621. continue
  622. }
  623. const a = w.classNameAliases[e[t]] || e[t],
  624. i = n[t];
  625. a ? M.addKeyword(i, a) : (S = i, c(), S = ""), t++
  626. }
  627. }
  628. function b(e, n) {
  629. return e.scope && "string" == typeof e.scope && M.openNode(w.classNameAliases[e.scope] || e.scope),
  630. e.beginScope && (e.beginScope._wrap ? (M.addKeyword(S, w.classNameAliases[e.beginScope._wrap] || e
  631. .beginScope._wrap),
  632. S = "") : e.beginScope._multi && (u(e.beginScope, n), S = "")), k = Object.create(e, {
  633. parent: {
  634. value: k
  635. }
  636. }), k
  637. }
  638. function m(e, n, a) {
  639. let i = ((e, n) => {
  640. const t = e && e.exec(n);
  641. return t && 0 === t.index
  642. })(e.endRe, a);
  643. if (i) {
  644. if (e["on:end"]) {
  645. const a = new t(e);
  646. e["on:end"](n, a), a.isMatchIgnored && (i = !1)
  647. }
  648. if (i) {
  649. for (; e.endsParent && e.parent;) e = e.parent;
  650. return e
  651. }
  652. }
  653. if (e.endsWithParent) return m(e.parent, n, a)
  654. }
  655. function p(e) {
  656. return 0 === k.matcher.regexIndex ? (S += e[0], 1) : (R = !0, 0)
  657. }
  658. function _(e) {
  659. const t = e[0],
  660. a = n.substring(e.index),
  661. i = m(k, e, a);
  662. if (!i) return X;
  663. const r = k;
  664. k.endScope && k.endScope._wrap ? (g(),
  665. M.addKeyword(t, k.endScope._wrap)) : k.endScope && k.endScope._multi ? (g(),
  666. u(k.endScope, e)) : r.skip ? S += t : (r.returnEnd || r.excludeEnd || (S += t),
  667. g(), r.excludeEnd && (S = t));
  668. do {
  669. k.scope && M.closeNode(), k.skip || k.subLanguage || (A += k.relevance), k = k.parent
  670. } while (k !== i.parent);
  671. return i.starts && b(i.starts, e), r.returnEnd ? 0 : t.length
  672. }
  673. let h = {};
  674. function y(a, r) {
  675. const o = r && r[0];
  676. if (S += a, null == o) return g(), 0;
  677. if ("begin" === h.type && "end" === r.type && h.index === r.index && "" === o) {
  678. if (S += n.slice(r.index, r.index + 1), !s) {
  679. const n = Error(`0 width match regex (${e})`);
  680. throw n.languageName = e, n.badRule = h.rule, n
  681. }
  682. return 1
  683. }
  684. if (h = r, "begin" === r.type) return (e => {
  685. const n = e[0],
  686. a = e.rule,
  687. i = new t(a),
  688. r = [a.__beforeBegin, a["on:begin"]];
  689. for (const t of r)
  690. if (t && (t(e, i), i.isMatchIgnored)) return p(n);
  691. return a.skip ? S += n : (a.excludeBegin && (S += n),
  692. g(), a.returnBegin || a.excludeBegin || (S = n)), b(a, e), a.returnBegin ? 0 : n.length
  693. })(r);
  694. if ("illegal" === r.type && !i) {
  695. const e = Error('Illegal lexeme "' + o + '" for mode "' + (k.scope || "<unnamed>") + '"');
  696. throw e.mode = k, e
  697. }
  698. if ("end" === r.type) {
  699. const e = _(r);
  700. if (e !== X) return e
  701. }
  702. if ("illegal" === r.type && "" === o) return 1;
  703. if (T > 1e5 && T > 3 * r.index) throw Error("potential infinite loop, way more iterations than matches");
  704. return S += o, o.length
  705. }
  706. const w = v(e);
  707. if (!w) throw F(o.replace("{}", e)), Error('Unknown language: "' + e + '"');
  708. const N = q(w);
  709. let O = "",
  710. k = r || N;
  711. const x = {},
  712. M = new d.__emitter(d);
  713. (() => {
  714. const e = [];
  715. for (let n = k; n !== w; n = n.parent) n.scope && e.unshift(n.scope);
  716. e.forEach((e => M.openNode(e)))
  717. })();
  718. let S = "",
  719. A = 0,
  720. C = 0,
  721. T = 0,
  722. R = !1;
  723. try {
  724. for (k.matcher.considerAll();;) {
  725. T++, R ? R = !1 : k.matcher.considerAll(), k.matcher.lastIndex = C;
  726. const e = k.matcher.exec(n);
  727. if (!e) break;
  728. const t = y(n.substring(C, e.index), e);
  729. C = e.index + t
  730. }
  731. return y(n.substring(C)), M.closeAllNodes(), M.finalize(), O = M.toHTML(), {
  732. language: e,
  733. value: O,
  734. relevance: A,
  735. illegal: !1,
  736. _emitter: M,
  737. _top: k
  738. }
  739. } catch (t) {
  740. if (t.message && t.message.includes("Illegal")) return {
  741. language: e,
  742. value: W(n),
  743. illegal: !0,
  744. relevance: 0,
  745. _illegalBy: {
  746. message: t.message,
  747. index: C,
  748. context: n.slice(C - 100, C + 100),
  749. mode: t.mode,
  750. resultSoFar: O
  751. },
  752. _emitter: M
  753. };
  754. if (s) return {
  755. language: e,
  756. value: W(n),
  757. illegal: !1,
  758. relevance: 0,
  759. errorRaised: t,
  760. _emitter: M,
  761. _top: k
  762. };
  763. throw t
  764. }
  765. }
  766. function E(e, n) {
  767. n = n || d.languages || Object.keys(a);
  768. const t = (e => {
  769. const n = {
  770. value: W(e),
  771. illegal: !1,
  772. relevance: 0,
  773. _top: l,
  774. _emitter: new d.__emitter(d)
  775. };
  776. return n._emitter.addText(e), n
  777. })(e),
  778. i = n.filter(v).filter(k).map((n => f(n, e, !1)));
  779. i.unshift(t);
  780. const r = i.sort(((e, n) => {
  781. if (e.relevance !== n.relevance) return n.relevance - e.relevance;
  782. if (e.language && n.language) {
  783. if (v(e.language).supersetOf === n.language) return 1;
  784. if (v(n.language).supersetOf === e.language) return -1
  785. }
  786. return 0
  787. })),
  788. [s, o] = r,
  789. c = s;
  790. return c.secondBest = o, c
  791. }
  792. function y(e) {
  793. let n = null;
  794. const t = (e => {
  795. let n = e.className + " ";
  796. n += e.parentNode ? e.parentNode.className : "";
  797. const t = d.languageDetectRe.exec(n);
  798. if (t) {
  799. const n = v(t[1]);
  800. return n || (U(o.replace("{}", t[1])),
  801. U("Falling back to no-highlight mode for this block.", e)), n ? t[1] : "no-highlight"
  802. }
  803. return n.split(/\s+/).find((e => _(e) || v(e)))
  804. })(e);
  805. if (_(t)) return;
  806. if (x("before:highlightElement", {
  807. el: e,
  808. language: t
  809. }), e.children.length > 0 && (d.ignoreUnescapedHTML || (console.warn(
  810. "One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
  811. console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
  812. console.warn("The element with unescaped HTML:"),
  813. console.warn(e)), d.throwUnescapedHTML)) throw new G("One of your code blocks includes unescaped HTML.", e
  814. .innerHTML);
  815. n = e;
  816. const a = n.textContent,
  817. r = t ? h(a, {
  818. language: t,
  819. ignoreIllegals: !0
  820. }) : E(a);
  821. e.innerHTML = r.value, ((e, n, t) => {
  822. const a = n && i[n] || t;
  823. e.classList.add("hljs"), e.classList.add("language-" + a)
  824. })(e, t, r.language), e.result = {
  825. language: r.language,
  826. re: r.relevance,
  827. relevance: r.relevance
  828. }, r.secondBest && (e.secondBest = {
  829. language: r.secondBest.language,
  830. relevance: r.secondBest.relevance
  831. }), x("after:highlightElement", {
  832. el: e,
  833. result: r,
  834. text: a
  835. })
  836. }
  837. let w = !1;
  838. function N() {
  839. "loading" !== document.readyState ? document.querySelectorAll(d.cssSelector).forEach(y) : w = !0
  840. }
  841. function v(e) {
  842. return e = (e || "").toLowerCase(), a[e] || a[i[e]]
  843. }
  844. function O(e, {
  845. languageName: n
  846. }) {
  847. "string" == typeof e && (e = [e]), e.forEach((e => {
  848. i[e.toLowerCase()] = n
  849. }))
  850. }
  851. function k(e) {
  852. const n = v(e);
  853. return n && !n.disableAutodetect
  854. }
  855. function x(e, n) {
  856. const t = e;
  857. r.forEach((e => {
  858. e[t] && e[t](n)
  859. }))
  860. }
  861. "undefined" != typeof window && window.addEventListener && window.addEventListener("DOMContentLoaded", (() => {
  862. w && N()
  863. }), !1), Object.assign(n, {
  864. highlight: h,
  865. highlightAuto: E,
  866. highlightAll: N,
  867. highlightElement: y,
  868. highlightBlock: e => (j("10.7.0", "highlightBlock will be removed entirely in v12.0"),
  869. j("10.7.0", "Please use highlightElement now."), y(e)),
  870. configure: e => {
  871. d = Q(d, e)
  872. },
  873. initHighlighting: () => {
  874. N(), j("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.")
  875. },
  876. initHighlightingOnLoad: () => {
  877. N(), j("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.")
  878. },
  879. registerLanguage: (e, t) => {
  880. let i = null;
  881. try {
  882. i = t(n)
  883. } catch (n) {
  884. if (F("Language definition for '{}' could not be registered.".replace("{}", e)),
  885. !s) throw n;
  886. F(n), i = l
  887. }
  888. i.name || (i.name = e), a[e] = i, i.rawDefinition = t.bind(null, n), i.aliases && O(i.aliases, {
  889. languageName: e
  890. })
  891. },
  892. unregisterLanguage: e => {
  893. delete a[e];
  894. for (const n of Object.keys(i)) i[n] === e && delete i[n]
  895. },
  896. listLanguages: () => Object.keys(a),
  897. getLanguage: v,
  898. registerAliases: O,
  899. autoDetection: k,
  900. inherit: Q,
  901. addPlugin: e => {
  902. (e => {
  903. e["before:highlightBlock"] && !e["before:highlightElement"] && (e["before:highlightElement"] =
  904. n => {
  905. e["before:highlightBlock"](Object.assign({
  906. block: n.el
  907. }, n))
  908. }), e["after:highlightBlock"] && !e["after:highlightElement"] && (e["after:highlightElement"] =
  909. n => {
  910. e["after:highlightBlock"](Object.assign({
  911. block: n.el
  912. }, n))
  913. })
  914. })(e), r.push(e)
  915. }
  916. }), n.debugMode = () => {
  917. s = !1
  918. }, n.safeMode = () => {
  919. s = !0
  920. }, n.versionString = "11.7.0", n.regex = {
  921. concat: m,
  922. lookahead: g,
  923. either: p,
  924. optional: b,
  925. anyNumberOfTimes: u
  926. };
  927. for (const n in M) "object" == typeof M[n] && e.exports(M[n]);
  928. return Object.assign(n, M), n
  929. })({});
  930. const J = e => ({
  931. IMPORTANT: {
  932. scope: "meta",
  933. begin: "!important"
  934. },
  935. BLOCK_COMMENT: e.C_BLOCK_COMMENT_MODE,
  936. HEXCOLOR: {
  937. scope: "number",
  938. begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/
  939. },
  940. FUNCTION_DISPATCH: {
  941. className: "built_in",
  942. begin: /[\w-]+(?=\()/
  943. },
  944. ATTRIBUTE_SELECTOR_MODE: {
  945. scope: "selector-attr",
  946. begin: /\[/,
  947. end: /\]/,
  948. illegal: "$",
  949. contains: [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
  950. },
  951. CSS_NUMBER_MODE: {
  952. scope: "number",
  953. begin: e.NUMBER_RE +
  954. "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
  955. relevance: 0
  956. },
  957. CSS_VARIABLE: {
  958. className: "attr",
  959. begin: /--[A-Za-z][A-Za-z0-9_-]*/
  960. }
  961. }),
  962. Y = ["a", "abbr", "address", "article", "aside", "audio", "b", "blockquote", "body", "button", "canvas", "caption",
  963. "cite", "code", "dd", "del", "details", "dfn", "div", "dl", "dt", "em", "fieldset", "figcaption", "figure",
  964. "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "html", "i", "iframe", "img", "input",
  965. "ins", "kbd", "label", "legend", "li", "main", "mark", "menu", "nav", "object", "ol", "p", "q", "quote", "samp",
  966. "section", "span", "strong", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time",
  967. "tr", "ul", "var", "video"
  968. ],
  969. ee = ["any-hover", "any-pointer", "aspect-ratio", "color", "color-gamut", "color-index", "device-aspect-ratio",
  970. "device-height", "device-width", "display-mode", "forced-colors", "grid", "height", "hover", "inverted-colors",
  971. "monochrome", "orientation", "overflow-block", "overflow-inline", "pointer", "prefers-color-scheme",
  972. "prefers-contrast", "prefers-reduced-motion", "prefers-reduced-transparency", "resolution", "scan", "scripting",
  973. "update", "width", "min-width", "max-width", "min-height", "max-height"
  974. ],
  975. ne = ["active", "any-link", "blank", "checked", "current", "default", "defined", "dir", "disabled", "drop", "empty",
  976. "enabled", "first", "first-child", "first-of-type", "fullscreen", "future", "focus", "focus-visible",
  977. "focus-within", "has", "host", "host-context", "hover", "indeterminate", "in-range", "invalid", "is", "lang",
  978. "last-child", "last-of-type", "left", "link", "local-link", "not", "nth-child", "nth-col", "nth-last-child",
  979. "nth-last-col", "nth-last-of-type", "nth-of-type", "only-child", "only-of-type", "optional", "out-of-range", "past",
  980. "placeholder-shown", "read-only", "read-write", "required", "right", "root", "scope", "target", "target-within",
  981. "user-invalid", "valid", "visited", "where"
  982. ],
  983. te = ["after", "backdrop", "before", "cue", "cue-region", "first-letter", "first-line", "grammar-error", "marker",
  984. "part", "placeholder", "selection", "slotted", "spelling-error"
  985. ],
  986. ae = ["align-content", "align-items", "align-self", "all", "animation", "animation-delay", "animation-direction",
  987. "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state",
  988. "animation-timing-function", "backface-visibility", "background", "background-attachment", "background-blend-mode",
  989. "background-clip", "background-color", "background-image", "background-origin", "background-position",
  990. "background-repeat", "background-size", "block-size", "border", "border-block", "border-block-color",
  991. "border-block-end", "border-block-end-color", "border-block-end-style", "border-block-end-width",
  992. "border-block-start", "border-block-start-color", "border-block-start-style", "border-block-start-width",
  993. "border-block-style", "border-block-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius",
  994. "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color",
  995. "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source",
  996. "border-image-width", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color",
  997. "border-inline-end-style", "border-inline-end-width", "border-inline-start", "border-inline-start-color",
  998. "border-inline-start-style", "border-inline-start-width", "border-inline-style", "border-inline-width",
  999. "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right",
  1000. "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top",
  1001. "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width",
  1002. "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before",
  1003. "break-inside", "caption-side", "caret-color", "clear", "clip", "clip-path", "clip-rule", "color", "column-count",
  1004. "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width",
  1005. "column-span", "column-width", "columns", "contain", "content", "content-visibility", "counter-increment",
  1006. "counter-reset", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "empty-cells", "filter",
  1007. "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "flow",
  1008. "font", "font-display", "font-family", "font-feature-settings", "font-kerning", "font-language-override",
  1009. "font-size", "font-size-adjust", "font-smoothing", "font-stretch", "font-style", "font-synthesis", "font-variant",
  1010. "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric",
  1011. "font-variant-position", "font-variation-settings", "font-weight", "gap", "glyph-orientation-vertical", "grid",
  1012. "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end",
  1013. "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-start", "grid-template",
  1014. "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens",
  1015. "icon", "image-orientation", "image-rendering", "image-resolution", "ime-mode", "inline-size", "isolation",
  1016. "justify-content", "left", "letter-spacing", "line-break", "line-height", "list-style", "list-style-image",
  1017. "list-style-position", "list-style-type", "margin", "margin-block", "margin-block-end", "margin-block-start",
  1018. "margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right",
  1019. "margin-top", "marks", "mask", "mask-border", "mask-border-mode", "mask-border-outset", "mask-border-repeat",
  1020. "mask-border-slice", "mask-border-source", "mask-border-width", "mask-clip", "mask-composite", "mask-image",
  1021. "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size", "mask-type", "max-block-size",
  1022. "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width",
  1023. "mix-blend-mode", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "none", "normal", "object-fit",
  1024. "object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style",
  1025. "outline-width", "overflow", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-block",
  1026. "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline", "padding-inline-end",
  1027. "padding-inline-start", "padding-left", "padding-right", "padding-top", "page-break-after", "page-break-before",
  1028. "page-break-inside", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pointer-events",
  1029. "position", "quotes", "resize", "rest", "rest-after", "rest-before", "right", "row-gap", "scroll-margin",
  1030. "scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom",
  1031. "scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left",
  1032. "scroll-margin-right", "scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end",
  1033. "scroll-padding-block-start", "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end",
  1034. "scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right", "scroll-padding-top",
  1035. "scroll-snap-align", "scroll-snap-stop", "scroll-snap-type", "scrollbar-color", "scrollbar-gutter",
  1036. "scrollbar-width", "shape-image-threshold", "shape-margin", "shape-outside", "speak", "speak-as", "src", "tab-size",
  1037. "table-layout", "text-align", "text-align-all", "text-align-last", "text-combine-upright", "text-decoration",
  1038. "text-decoration-color", "text-decoration-line", "text-decoration-style", "text-emphasis", "text-emphasis-color",
  1039. "text-emphasis-position", "text-emphasis-style", "text-indent", "text-justify", "text-orientation", "text-overflow",
  1040. "text-rendering", "text-shadow", "text-transform", "text-underline-position", "top", "transform", "transform-box",
  1041. "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration",
  1042. "transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility",
  1043. "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
  1044. "voice-volume", "white-space", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap",
  1045. "writing-mode", "z-index"
  1046. ].reverse(),
  1047. ie = ne.concat(te);
  1048. var re = "\\.([0-9](_*[0-9])*)",
  1049. se = "[0-9a-fA-F](_*[0-9a-fA-F])*",
  1050. oe = {
  1051. className: "number",
  1052. variants: [{
  1053. begin: `(\\b([0-9](_*[0-9])*)((${re})|\\.)?|(${re}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
  1054. }, {
  1055. begin: `\\b([0-9](_*[0-9])*)((${re})[fFdD]?\\b|\\.([fFdD]\\b)?)`
  1056. }, {
  1057. begin: `(${re})[fFdD]?\\b`
  1058. }, {
  1059. begin: "\\b([0-9](_*[0-9])*)[fFdD]\\b"
  1060. }, {
  1061. begin: `\\b0[xX]((${se})\\.?|(${se})?\\.(${se}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
  1062. }, {
  1063. begin: "\\b(0|[1-9](_*[0-9])*)[lL]?\\b"
  1064. }, {
  1065. begin: `\\b0[xX](${se})[lL]?\\b`
  1066. }, {
  1067. begin: "\\b0(_*[0-7])*[lL]?\\b"
  1068. }, {
  1069. begin: "\\b0[bB][01](_*[01])*[lL]?\\b"
  1070. }],
  1071. relevance: 0
  1072. };
  1073. function le(e, n, t) {
  1074. return -1 === t ? "" : e.replace(n, (a => le(e, n, t - 1)))
  1075. }
  1076. const ce = "[A-Za-z$_][0-9A-Za-z$_]*",
  1077. de = ["as", "in", "of", "if", "for", "while", "finally", "var", "new", "function", "do", "return", "void", "else",
  1078. "break", "catch", "instanceof", "with", "throw", "case", "default", "try", "switch", "continue", "typeof", "delete",
  1079. "let", "yield", "const", "class", "debugger", "async", "await", "static", "import", "from", "export", "extends"
  1080. ],
  1081. ge = ["true", "false", "null", "undefined", "NaN", "Infinity"],
  1082. ue = ["Object", "Function", "Boolean", "Symbol", "Math", "Date", "Number", "BigInt", "String", "RegExp", "Array",
  1083. "Float32Array", "Float64Array", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Int32Array",
  1084. "Uint16Array", "Uint32Array", "BigInt64Array", "BigUint64Array", "Set", "Map", "WeakSet", "WeakMap", "ArrayBuffer",
  1085. "SharedArrayBuffer", "Atomics", "DataView", "JSON", "Promise", "Generator", "GeneratorFunction", "AsyncFunction",
  1086. "Reflect", "Proxy", "Intl", "WebAssembly"
  1087. ],
  1088. be = ["Error", "EvalError", "InternalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"],
  1089. me = ["setInterval", "setTimeout", "clearInterval", "clearTimeout", "require", "exports", "eval", "isFinite", "isNaN",
  1090. "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape"
  1091. ],
  1092. pe = ["arguments", "this", "super", "console", "window", "document", "localStorage", "module", "global"],
  1093. _e = [].concat(me, ue, be);
  1094. function he(e) {
  1095. const n = e.regex,
  1096. t = ce,
  1097. a = {
  1098. begin: /<[A-Za-z0-9\\._:-]+/,
  1099. end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
  1100. isTrulyOpeningTag: (e, n) => {
  1101. const t = e[0].length + e.index,
  1102. a = e.input[t];
  1103. if ("<" === a || "," === a) return void n.ignoreMatch();
  1104. let i;
  1105. ">" === a && (((e, {
  1106. after: n
  1107. }) => {
  1108. const t = "</" + e[0].slice(1);
  1109. return -1 !== e.input.indexOf(t, n)
  1110. })(e, {
  1111. after: t
  1112. }) || n.ignoreMatch());
  1113. const r = e.input.substring(t);
  1114. ((i = r.match(/^\s*=/)) || (i = r.match(/^\s+extends\s+/)) && 0 === i.index) && n.ignoreMatch()
  1115. }
  1116. },
  1117. i = {
  1118. $pattern: ce,
  1119. keyword: de,
  1120. literal: ge,
  1121. built_in: _e,
  1122. "variable.language": pe
  1123. },
  1124. r = "\\.([0-9](_?[0-9])*)",
  1125. s = "0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",
  1126. o = {
  1127. className: "number",
  1128. variants: [{
  1129. begin: `(\\b(${s})((${r})|\\.)?|(${r}))[eE][+-]?([0-9](_?[0-9])*)\\b`
  1130. }, {
  1131. begin: `\\b(${s})\\b((${r})\\b|\\.)?|(${r})\\b`
  1132. }, {
  1133. begin: "\\b(0|[1-9](_?[0-9])*)n\\b"
  1134. }, {
  1135. begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"
  1136. }, {
  1137. begin: "\\b0[bB][0-1](_?[0-1])*n?\\b"
  1138. }, {
  1139. begin: "\\b0[oO][0-7](_?[0-7])*n?\\b"
  1140. }, {
  1141. begin: "\\b0[0-7]+n?\\b"
  1142. }],
  1143. relevance: 0
  1144. },
  1145. l = {
  1146. className: "subst",
  1147. begin: "\\$\\{",
  1148. end: "\\}",
  1149. keywords: i,
  1150. contains: []
  1151. },
  1152. c = {
  1153. begin: "html`",
  1154. end: "",
  1155. starts: {
  1156. end: "`",
  1157. returnEnd: !1,
  1158. contains: [e.BACKSLASH_ESCAPE, l],
  1159. subLanguage: "xml"
  1160. }
  1161. },
  1162. d = {
  1163. begin: "css`",
  1164. end: "",
  1165. starts: {
  1166. end: "`",
  1167. returnEnd: !1,
  1168. contains: [e.BACKSLASH_ESCAPE, l],
  1169. subLanguage: "css"
  1170. }
  1171. },
  1172. g = {
  1173. className: "string",
  1174. begin: "`",
  1175. end: "`",
  1176. contains: [e.BACKSLASH_ESCAPE, l]
  1177. },
  1178. u = {
  1179. className: "comment",
  1180. variants: [e.COMMENT(/\/\*\*(?!\/)/, "\\*/", {
  1181. relevance: 0,
  1182. contains: [{
  1183. begin: "(?=@[A-Za-z]+)",
  1184. relevance: 0,
  1185. contains: [{
  1186. className: "doctag",
  1187. begin: "@[A-Za-z]+"
  1188. }, {
  1189. className: "type",
  1190. begin: "\\{",
  1191. end: "\\}",
  1192. excludeEnd: !0,
  1193. excludeBegin: !0,
  1194. relevance: 0
  1195. }, {
  1196. className: "variable",
  1197. begin: t + "(?=\\s*(-)|$)",
  1198. endsParent: !0,
  1199. relevance: 0
  1200. }, {
  1201. begin: /(?=[^\n])\s/,
  1202. relevance: 0
  1203. }]
  1204. }]
  1205. }), e.C_BLOCK_COMMENT_MODE, e.C_LINE_COMMENT_MODE]
  1206. },
  1207. b = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, {
  1208. match: /\$\d+/
  1209. }, o];
  1210. l.contains = b.concat({
  1211. begin: /\{/,
  1212. end: /\}/,
  1213. keywords: i,
  1214. contains: ["self"].concat(b)
  1215. });
  1216. const m = [].concat(u, l.contains),
  1217. p = m.concat([{
  1218. begin: /\(/,
  1219. end: /\)/,
  1220. keywords: i,
  1221. contains: ["self"].concat(m)
  1222. }]),
  1223. _ = {
  1224. className: "params",
  1225. begin: /\(/,
  1226. end: /\)/,
  1227. excludeBegin: !0,
  1228. excludeEnd: !0,
  1229. keywords: i,
  1230. contains: p
  1231. },
  1232. h = {
  1233. variants: [{
  1234. match: [/class/, /\s+/, t, /\s+/, /extends/, /\s+/, n.concat(t, "(", n.concat(/\./, t), ")*")],
  1235. scope: {
  1236. 1: "keyword",
  1237. 3: "title.class",
  1238. 5: "keyword",
  1239. 7: "title.class.inherited"
  1240. }
  1241. }, {
  1242. match: [/class/, /\s+/, t],
  1243. scope: {
  1244. 1: "keyword",
  1245. 3: "title.class"
  1246. }
  1247. }]
  1248. },
  1249. f = {
  1250. relevance: 0,
  1251. match: n.either(/\bJSON/, /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,
  1252. /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
  1253. className: "title.class",
  1254. keywords: {
  1255. _: [...ue, ...be]
  1256. }
  1257. },
  1258. E = {
  1259. variants: [{
  1260. match: [/function/, /\s+/, t, /(?=\s*\()/]
  1261. }, {
  1262. match: [/function/, /\s*(?=\()/]
  1263. }],
  1264. className: {
  1265. 1: "keyword",
  1266. 3: "title.function"
  1267. },
  1268. label: "func.def",
  1269. contains: [_],
  1270. illegal: /%/
  1271. },
  1272. y = {
  1273. match: n.concat(/\b/, (w = [...me, "super", "import"], n.concat("(?!", w.join("|"), ")")), t, n.lookahead(/\(/)),
  1274. className: "title.function",
  1275. relevance: 0
  1276. };
  1277. var w;
  1278. const N = {
  1279. begin: n.concat(/\./, n.lookahead(n.concat(t, /(?![0-9A-Za-z$_(])/))),
  1280. end: t,
  1281. excludeBegin: !0,
  1282. keywords: "prototype",
  1283. className: "property",
  1284. relevance: 0
  1285. },
  1286. v = {
  1287. match: [/get|set/, /\s+/, t, /(?=\()/],
  1288. className: {
  1289. 1: "keyword",
  1290. 3: "title.function"
  1291. },
  1292. contains: [{
  1293. begin: /\(\)/
  1294. }, _]
  1295. },
  1296. O = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + e.UNDERSCORE_IDENT_RE + ")\\s*=>",
  1297. k = {
  1298. match: [/const|var|let/, /\s+/, t, /\s*/, /=\s*/, /(async\s*)?/, n.lookahead(O)],
  1299. keywords: "async",
  1300. className: {
  1301. 1: "keyword",
  1302. 3: "title.function"
  1303. },
  1304. contains: [_]
  1305. };
  1306. return {
  1307. name: "Javascript",
  1308. aliases: ["js", "jsx", "mjs", "cjs"],
  1309. keywords: i,
  1310. exports: {
  1311. PARAMS_CONTAINS: p,
  1312. CLASS_REFERENCE: f
  1313. },
  1314. illegal: /#(?![$_A-z])/,
  1315. contains: [e.SHEBANG({
  1316. label: "shebang",
  1317. binary: "node",
  1318. relevance: 5
  1319. }), {
  1320. label: "use_strict",
  1321. className: "meta",
  1322. relevance: 10,
  1323. begin: /^\s*['"]use (strict|asm)['"]/
  1324. }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, u, {
  1325. match: /\$\d+/
  1326. }, o, f, {
  1327. className: "attr",
  1328. begin: t + n.lookahead(":"),
  1329. relevance: 0
  1330. }, k, {
  1331. begin: "(" + e.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
  1332. keywords: "return throw case",
  1333. relevance: 0,
  1334. contains: [u, e.REGEXP_MODE, {
  1335. className: "function",
  1336. begin: O,
  1337. returnBegin: !0,
  1338. end: "\\s*=>",
  1339. contains: [{
  1340. className: "params",
  1341. variants: [{
  1342. begin: e.UNDERSCORE_IDENT_RE,
  1343. relevance: 0
  1344. }, {
  1345. className: null,
  1346. begin: /\(\s*\)/,
  1347. skip: !0
  1348. }, {
  1349. begin: /\(/,
  1350. end: /\)/,
  1351. excludeBegin: !0,
  1352. excludeEnd: !0,
  1353. keywords: i,
  1354. contains: p
  1355. }]
  1356. }]
  1357. }, {
  1358. begin: /,/,
  1359. relevance: 0
  1360. }, {
  1361. match: /\s+/,
  1362. relevance: 0
  1363. }, {
  1364. variants: [{
  1365. begin: "<>",
  1366. end: "</>"
  1367. }, {
  1368. match: /<[A-Za-z0-9\\._:-]+\s*\/>/
  1369. }, {
  1370. begin: a.begin,
  1371. "on:begin": a.isTrulyOpeningTag,
  1372. end: a.end
  1373. }],
  1374. subLanguage: "xml",
  1375. contains: [{
  1376. begin: a.begin,
  1377. end: a.end,
  1378. skip: !0,
  1379. contains: ["self"]
  1380. }]
  1381. }]
  1382. }, E, {
  1383. beginKeywords: "while if switch catch for"
  1384. }, {
  1385. begin: "\\b(?!function)" + e.UNDERSCORE_IDENT_RE +
  1386. "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
  1387. returnBegin: !0,
  1388. label: "func.def",
  1389. contains: [_, e.inherit(e.TITLE_MODE, {
  1390. begin: t,
  1391. className: "title.function"
  1392. })]
  1393. }, {
  1394. match: /\.\.\./,
  1395. relevance: 0
  1396. }, N, {
  1397. match: "\\$" + t,
  1398. relevance: 0
  1399. }, {
  1400. match: [/\bconstructor(?=\s*\()/],
  1401. className: {
  1402. 1: "title.function"
  1403. },
  1404. contains: [_]
  1405. }, y, {
  1406. relevance: 0,
  1407. match: /\b[A-Z][A-Z_0-9]+\b/,
  1408. className: "variable.constant"
  1409. }, h, v, {
  1410. match: /\$[(.]/
  1411. }]
  1412. }
  1413. }
  1414. const fe = e => m(/\b/, e, /\w$/.test(e) ? /\b/ : /\B/),
  1415. Ee = ["Protocol", "Type"].map(fe),
  1416. ye = ["init", "self"].map(fe),
  1417. we = ["Any", "Self"],
  1418. Ne = ["actor", "any", "associatedtype", "async", "await", /as\?/, /as!/, "as", "break", "case", "catch", "class",
  1419. "continue", "convenience", "default", "defer", "deinit", "didSet", "distributed", "do", "dynamic", "else", "enum",
  1420. "extension", "fallthrough", /fileprivate\(set\)/, "fileprivate", "final", "for", "func", "get", "guard", "if",
  1421. "import", "indirect", "infix", /init\?/, /init!/, "inout", /internal\(set\)/, "internal", "in", "is", "isolated",
  1422. "nonisolated", "lazy", "let", "mutating", "nonmutating", /open\(set\)/, "open", "operator", "optional", "override",
  1423. "postfix", "precedencegroup", "prefix", /private\(set\)/, "private", "protocol", /public\(set\)/, "public",
  1424. "repeat", "required", "rethrows", "return", "set", "some", "static", "struct", "subscript", "super", "switch",
  1425. "throws", "throw", /try\?/, /try!/, "try", "typealias", /unowned\(safe\)/, /unowned\(unsafe\)/, "unowned", "var",
  1426. "weak", "where", "while", "willSet"
  1427. ],
  1428. ve = ["false", "nil", "true"],
  1429. Oe = ["assignment", "associativity", "higherThan", "left", "lowerThan", "none", "right"],
  1430. ke = ["#colorLiteral", "#column", "#dsohandle", "#else", "#elseif", "#endif", "#error", "#file", "#fileID",
  1431. "#fileLiteral", "#filePath", "#function", "#if", "#imageLiteral", "#keyPath", "#line", "#selector",
  1432. "#sourceLocation", "#warn_unqualified_access", "#warning"
  1433. ],
  1434. xe = ["abs", "all", "any", "assert", "assertionFailure", "debugPrint", "dump", "fatalError", "getVaList",
  1435. "isKnownUniquelyReferenced", "max", "min", "numericCast", "pointwiseMax", "pointwiseMin", "precondition",
  1436. "preconditionFailure", "print", "readLine", "repeatElement", "sequence", "stride", "swap",
  1437. "swift_unboxFromSwiftValueWithType", "transcode", "type", "unsafeBitCast", "unsafeDowncast", "withExtendedLifetime",
  1438. "withUnsafeMutablePointer", "withUnsafePointer", "withVaList", "withoutActuallyEscaping", "zip"
  1439. ],
  1440. Me = p(/[/=\-+!*%<>&|^~?]/, /[\u00A1-\u00A7]/, /[\u00A9\u00AB]/, /[\u00AC\u00AE]/, /[\u00B0\u00B1]/,
  1441. /[\u00B6\u00BB\u00BF\u00D7\u00F7]/, /[\u2016-\u2017]/, /[\u2020-\u2027]/, /[\u2030-\u203E]/, /[\u2041-\u2053]/,
  1442. /[\u2055-\u205E]/, /[\u2190-\u23FF]/, /[\u2500-\u2775]/, /[\u2794-\u2BFF]/, /[\u2E00-\u2E7F]/, /[\u3001-\u3003]/,
  1443. /[\u3008-\u3020]/, /[\u3030]/),
  1444. Se = p(Me, /[\u0300-\u036F]/, /[\u1DC0-\u1DFF]/, /[\u20D0-\u20FF]/, /[\uFE00-\uFE0F]/, /[\uFE20-\uFE2F]/),
  1445. Ae = m(Me, Se, "*"),
  1446. Ce = p(/[a-zA-Z_]/, /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,
  1447. /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,
  1448. /[\u1E00-\u1FFF]/, /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,
  1449. /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, /[\u2C00-\u2DFF\u2E80-\u2FFF]/,
  1450. /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,
  1451. /[\uFE47-\uFEFE\uFF00-\uFFFD]/),
  1452. Te = p(Ce, /\d/, /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),
  1453. Re = m(Ce, Te, "*"),
  1454. De = m(/[A-Z]/, Te, "*"),
  1455. Ie = ["autoclosure", m(/convention\(/, p("swift", "block", "c"), /\)/), "discardableResult", "dynamicCallable",
  1456. "dynamicMemberLookup", "escaping", "frozen", "GKInspectable", "IBAction", "IBDesignable", "IBInspectable",
  1457. "IBOutlet", "IBSegueAction", "inlinable", "main", "nonobjc", "NSApplicationMain", "NSCopying", "NSManaged", m(
  1458. /objc\(/, Re, /\)/), "objc", "objcMembers", "propertyWrapper", "requires_stored_property_inits", "resultBuilder",
  1459. "testable", "UIApplicationMain", "unknown", "usableFromInline"
  1460. ],
  1461. Le = ["iOS", "iOSApplicationExtension", "macOS", "macOSApplicationExtension", "macCatalyst",
  1462. "macCatalystApplicationExtension", "watchOS", "watchOSApplicationExtension", "tvOS", "tvOSApplicationExtension",
  1463. "swift"
  1464. ];
  1465. var Be = Object.freeze({
  1466. __proto__: null,
  1467. grmr_bash: e => {
  1468. const n = e.regex,
  1469. t = {},
  1470. a = {
  1471. begin: /\$\{/,
  1472. end: /\}/,
  1473. contains: ["self", {
  1474. begin: /:-/,
  1475. contains: [t]
  1476. }]
  1477. };
  1478. Object.assign(t, {
  1479. className: "variable",
  1480. variants: [{
  1481. begin: n.concat(/\$[\w\d#@][\w\d_]*/, "(?![\\w\\d])(?![$])")
  1482. }, a]
  1483. });
  1484. const i = {
  1485. className: "subst",
  1486. begin: /\$\(/,
  1487. end: /\)/,
  1488. contains: [e.BACKSLASH_ESCAPE]
  1489. },
  1490. r = {
  1491. begin: /<<-?\s*(?=\w+)/,
  1492. starts: {
  1493. contains: [e.END_SAME_AS_BEGIN({
  1494. begin: /(\w+)/,
  1495. end: /(\w+)/,
  1496. className: "string"
  1497. })]
  1498. }
  1499. },
  1500. s = {
  1501. className: "string",
  1502. begin: /"/,
  1503. end: /"/,
  1504. contains: [e.BACKSLASH_ESCAPE, t, i]
  1505. };
  1506. i.contains.push(s);
  1507. const o = {
  1508. begin: /\$?\(\(/,
  1509. end: /\)\)/,
  1510. contains: [{
  1511. begin: /\d+#[0-9a-f]+/,
  1512. className: "number"
  1513. }, e.NUMBER_MODE, t]
  1514. },
  1515. l = e.SHEBANG({
  1516. binary: "(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",
  1517. relevance: 10
  1518. }),
  1519. c = {
  1520. className: "function",
  1521. begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
  1522. returnBegin: !0,
  1523. contains: [e.inherit(e.TITLE_MODE, {
  1524. begin: /\w[\w\d_]*/
  1525. })],
  1526. relevance: 0
  1527. };
  1528. return {
  1529. name: "Bash",
  1530. aliases: ["sh"],
  1531. keywords: {
  1532. $pattern: /\b[a-z][a-z0-9._-]+\b/,
  1533. keyword: ["if", "then", "else", "elif", "fi", "for", "while", "in", "do", "done", "case", "esac",
  1534. "function"
  1535. ],
  1536. literal: ["true", "false"],
  1537. built_in: ["break", "cd", "continue", "eval", "exec", "exit", "export", "getopts", "hash", "pwd",
  1538. "readonly", "return", "shift", "test", "times", "trap", "umask", "unset", "alias", "bind", "builtin",
  1539. "caller", "command", "declare", "echo", "enable", "help", "let", "local", "logout", "mapfile",
  1540. "printf", "read", "readarray", "source", "type", "typeset", "ulimit", "unalias", "set", "shopt",
  1541. "autoload", "bg", "bindkey", "bye", "cap", "chdir", "clone", "comparguments", "compcall", "compctl",
  1542. "compdescribe", "compfiles", "compgroups", "compquote", "comptags", "comptry", "compvalues", "dirs",
  1543. "disable", "disown", "echotc", "echoti", "emulate", "fc", "fg", "float", "functions", "getcap",
  1544. "getln", "history", "integer", "jobs", "kill", "limit", "log", "noglob", "popd", "print", "pushd",
  1545. "pushln", "rehash", "sched", "setcap", "setopt", "stat", "suspend", "ttyctl", "unfunction", "unhash",
  1546. "unlimit", "unsetopt", "vared", "wait", "whence", "where", "which", "zcompile", "zformat", "zftp",
  1547. "zle", "zmodload", "zparseopts", "zprof", "zpty", "zregexparse", "zsocket", "zstyle", "ztcp", "chcon",
  1548. "chgrp", "chown", "chmod", "cp", "dd", "df", "dir", "dircolors", "ln", "ls", "mkdir", "mkfifo",
  1549. "mknod", "mktemp", "mv", "realpath", "rm", "rmdir", "shred", "sync", "touch", "truncate", "vdir",
  1550. "b2sum", "base32", "base64", "cat", "cksum", "comm", "csplit", "cut", "expand", "fmt", "fold", "head",
  1551. "join", "md5sum", "nl", "numfmt", "od", "paste", "ptx", "pr", "sha1sum", "sha224sum", "sha256sum",
  1552. "sha384sum", "sha512sum", "shuf", "sort", "split", "sum", "tac", "tail", "tr", "tsort", "unexpand",
  1553. "uniq", "wc", "arch", "basename", "chroot", "date", "dirname", "du", "echo", "env", "expr", "factor",
  1554. "groups", "hostid", "id", "link", "logname", "nice", "nohup", "nproc", "pathchk", "pinky", "printenv",
  1555. "printf", "pwd", "readlink", "runcon", "seq", "sleep", "stat", "stdbuf", "stty", "tee", "test",
  1556. "timeout", "tty", "uname", "unlink", "uptime", "users", "who", "whoami", "yes"
  1557. ]
  1558. },
  1559. contains: [l, e.SHEBANG(), c, o, e.HASH_COMMENT_MODE, r, {
  1560. match: /(\/[a-z._-]+)+/
  1561. }, s, {
  1562. className: "",
  1563. begin: /\\"/
  1564. }, {
  1565. className: "string",
  1566. begin: /'/,
  1567. end: /'/
  1568. }, t]
  1569. }
  1570. },
  1571. grmr_c: e => {
  1572. const n = e.regex,
  1573. t = e.COMMENT("//", "$", {
  1574. contains: [{
  1575. begin: /\\\n/
  1576. }]
  1577. }),
  1578. a = "[a-zA-Z_]\\w*::",
  1579. i = "(decltype\\(auto\\)|" + n.optional(a) + "[a-zA-Z_]\\w*" + n.optional("<[^<>]+>") + ")",
  1580. r = {
  1581. className: "type",
  1582. variants: [{
  1583. begin: "\\b[a-z\\d_]*_t\\b"
  1584. }, {
  1585. match: /\batomic_[a-z]{3,6}\b/
  1586. }]
  1587. },
  1588. s = {
  1589. className: "string",
  1590. variants: [{
  1591. begin: '(u8?|U|L)?"',
  1592. end: '"',
  1593. illegal: "\\n",
  1594. contains: [e.BACKSLASH_ESCAPE]
  1595. }, {
  1596. begin: "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
  1597. end: "'",
  1598. illegal: "."
  1599. }, e.END_SAME_AS_BEGIN({
  1600. begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
  1601. end: /\)([^()\\ ]{0,16})"/
  1602. })]
  1603. },
  1604. o = {
  1605. className: "number",
  1606. variants: [{
  1607. begin: "\\b(0b[01']+)"
  1608. }, {
  1609. begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
  1610. }, {
  1611. begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
  1612. }],
  1613. relevance: 0
  1614. },
  1615. l = {
  1616. className: "meta",
  1617. begin: /#\s*[a-z]+\b/,
  1618. end: /$/,
  1619. keywords: {
  1620. keyword: "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
  1621. },
  1622. contains: [{
  1623. begin: /\\\n/,
  1624. relevance: 0
  1625. }, e.inherit(s, {
  1626. className: "string"
  1627. }), {
  1628. className: "string",
  1629. begin: /<.*?>/
  1630. }, t, e.C_BLOCK_COMMENT_MODE]
  1631. },
  1632. c = {
  1633. className: "title",
  1634. begin: n.optional(a) + e.IDENT_RE,
  1635. relevance: 0
  1636. },
  1637. d = n.optional(a) + e.IDENT_RE + "\\s*\\(",
  1638. g = {
  1639. keyword: ["asm", "auto", "break", "case", "continue", "default", "do", "else", "enum", "extern", "for",
  1640. "fortran", "goto", "if", "inline", "register", "restrict", "return", "sizeof", "struct", "switch",
  1641. "typedef", "union", "volatile", "while", "_Alignas", "_Alignof", "_Atomic", "_Generic", "_Noreturn",
  1642. "_Static_assert", "_Thread_local", "alignas", "alignof", "noreturn", "static_assert", "thread_local",
  1643. "_Pragma"
  1644. ],
  1645. type: ["float", "double", "signed", "unsigned", "int", "short", "long", "char", "void", "_Bool",
  1646. "_Complex", "_Imaginary", "_Decimal32", "_Decimal64", "_Decimal128", "const", "static", "complex",
  1647. "bool", "imaginary"
  1648. ],
  1649. literal: "true false NULL",
  1650. built_in: "std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"
  1651. },
  1652. u = [l, r, t, e.C_BLOCK_COMMENT_MODE, o, s],
  1653. b = {
  1654. variants: [{
  1655. begin: /=/,
  1656. end: /;/
  1657. }, {
  1658. begin: /\(/,
  1659. end: /\)/
  1660. }, {
  1661. beginKeywords: "new throw return else",
  1662. end: /;/
  1663. }],
  1664. keywords: g,
  1665. contains: u.concat([{
  1666. begin: /\(/,
  1667. end: /\)/,
  1668. keywords: g,
  1669. contains: u.concat(["self"]),
  1670. relevance: 0
  1671. }]),
  1672. relevance: 0
  1673. },
  1674. m = {
  1675. begin: "(" + i + "[\\*&\\s]+)+" + d,
  1676. returnBegin: !0,
  1677. end: /[{;=]/,
  1678. excludeEnd: !0,
  1679. keywords: g,
  1680. illegal: /[^\w\s\*&:<>.]/,
  1681. contains: [{
  1682. begin: "decltype\\(auto\\)",
  1683. keywords: g,
  1684. relevance: 0
  1685. }, {
  1686. begin: d,
  1687. returnBegin: !0,
  1688. contains: [e.inherit(c, {
  1689. className: "title.function"
  1690. })],
  1691. relevance: 0
  1692. }, {
  1693. relevance: 0,
  1694. match: /,/
  1695. }, {
  1696. className: "params",
  1697. begin: /\(/,
  1698. end: /\)/,
  1699. keywords: g,
  1700. relevance: 0,
  1701. contains: [t, e.C_BLOCK_COMMENT_MODE, s, o, r, {
  1702. begin: /\(/,
  1703. end: /\)/,
  1704. keywords: g,
  1705. relevance: 0,
  1706. contains: ["self", t, e.C_BLOCK_COMMENT_MODE, s, o, r]
  1707. }]
  1708. }, r, t, e.C_BLOCK_COMMENT_MODE, l]
  1709. };
  1710. return {
  1711. name: "C",
  1712. aliases: ["h"],
  1713. keywords: g,
  1714. disableAutodetect: !0,
  1715. illegal: "</",
  1716. contains: [].concat(b, m, u, [l, {
  1717. begin: e.IDENT_RE + "::",
  1718. keywords: g
  1719. }, {
  1720. className: "class",
  1721. beginKeywords: "enum class struct union",
  1722. end: /[{;:<>=]/,
  1723. contains: [{
  1724. beginKeywords: "final class struct"
  1725. }, e.TITLE_MODE]
  1726. }]),
  1727. exports: {
  1728. preprocessor: l,
  1729. strings: s,
  1730. keywords: g
  1731. }
  1732. }
  1733. },
  1734. grmr_cpp: e => {
  1735. const n = e.regex,
  1736. t = e.COMMENT("//", "$", {
  1737. contains: [{
  1738. begin: /\\\n/
  1739. }]
  1740. }),
  1741. a = "[a-zA-Z_]\\w*::",
  1742. i = "(?!struct)(decltype\\(auto\\)|" + n.optional(a) + "[a-zA-Z_]\\w*" + n.optional("<[^<>]+>") + ")",
  1743. r = {
  1744. className: "type",
  1745. begin: "\\b[a-z\\d_]*_t\\b"
  1746. },
  1747. s = {
  1748. className: "string",
  1749. variants: [{
  1750. begin: '(u8?|U|L)?"',
  1751. end: '"',
  1752. illegal: "\\n",
  1753. contains: [e.BACKSLASH_ESCAPE]
  1754. }, {
  1755. begin: "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
  1756. end: "'",
  1757. illegal: "."
  1758. }, e.END_SAME_AS_BEGIN({
  1759. begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,
  1760. end: /\)([^()\\ ]{0,16})"/
  1761. })]
  1762. },
  1763. o = {
  1764. className: "number",
  1765. variants: [{
  1766. begin: "\\b(0b[01']+)"
  1767. }, {
  1768. begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
  1769. }, {
  1770. begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
  1771. }],
  1772. relevance: 0
  1773. },
  1774. l = {
  1775. className: "meta",
  1776. begin: /#\s*[a-z]+\b/,
  1777. end: /$/,
  1778. keywords: {
  1779. keyword: "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
  1780. },
  1781. contains: [{
  1782. begin: /\\\n/,
  1783. relevance: 0
  1784. }, e.inherit(s, {
  1785. className: "string"
  1786. }), {
  1787. className: "string",
  1788. begin: /<.*?>/
  1789. }, t, e.C_BLOCK_COMMENT_MODE]
  1790. },
  1791. c = {
  1792. className: "title",
  1793. begin: n.optional(a) + e.IDENT_RE,
  1794. relevance: 0
  1795. },
  1796. d = n.optional(a) + e.IDENT_RE + "\\s*\\(",
  1797. g = {
  1798. type: ["bool", "char", "char16_t", "char32_t", "char8_t", "double", "float", "int", "long", "short",
  1799. "void", "wchar_t", "unsigned", "signed", "const", "static"
  1800. ],
  1801. keyword: ["alignas", "alignof", "and", "and_eq", "asm", "atomic_cancel", "atomic_commit",
  1802. "atomic_noexcept", "auto", "bitand", "bitor", "break", "case", "catch", "class", "co_await",
  1803. "co_return", "co_yield", "compl", "concept", "const_cast|10", "consteval", "constexpr", "constinit",
  1804. "continue", "decltype", "default", "delete", "do", "dynamic_cast|10", "else", "enum", "explicit",
  1805. "export", "extern", "false", "final", "for", "friend", "goto", "if", "import", "inline", "module",
  1806. "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq",
  1807. "override", "private", "protected", "public", "reflexpr", "register", "reinterpret_cast|10",
  1808. "requires", "return", "sizeof", "static_assert", "static_cast|10", "struct", "switch", "synchronized",
  1809. "template", "this", "thread_local", "throw", "transaction_safe", "transaction_safe_dynamic", "true",
  1810. "try", "typedef", "typeid", "typename", "union", "using", "virtual", "volatile", "while", "xor",
  1811. "xor_eq"
  1812. ],
  1813. literal: ["NULL", "false", "nullopt", "nullptr", "true"],
  1814. built_in: ["_Pragma"],
  1815. _type_hints: ["any", "auto_ptr", "barrier", "binary_semaphore", "bitset", "complex", "condition_variable",
  1816. "condition_variable_any", "counting_semaphore", "deque", "false_type", "future", "imaginary",
  1817. "initializer_list", "istringstream", "jthread", "latch", "lock_guard", "multimap", "multiset",
  1818. "mutex", "optional", "ostringstream", "packaged_task", "pair", "promise", "priority_queue", "queue",
  1819. "recursive_mutex", "recursive_timed_mutex", "scoped_lock", "set", "shared_future", "shared_lock",
  1820. "shared_mutex", "shared_timed_mutex", "shared_ptr", "stack", "string_view", "stringstream",
  1821. "timed_mutex", "thread", "true_type", "tuple", "unique_lock", "unique_ptr", "unordered_map",
  1822. "unordered_multimap", "unordered_multiset", "unordered_set", "variant", "vector", "weak_ptr",
  1823. "wstring", "wstring_view"
  1824. ]
  1825. },
  1826. u = {
  1827. className: "function.dispatch",
  1828. relevance: 0,
  1829. keywords: {
  1830. _hint: ["abort", "abs", "acos", "apply", "as_const", "asin", "atan", "atan2", "calloc", "ceil", "cerr",
  1831. "cin", "clog", "cos", "cosh", "cout", "declval", "endl", "exchange", "exit", "exp", "fabs", "floor",
  1832. "fmod", "forward", "fprintf", "fputs", "free", "frexp", "fscanf", "future", "invoke", "isalnum",
  1833. "isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace", "isupper",
  1834. "isxdigit", "labs", "launder", "ldexp", "log", "log10", "make_pair", "make_shared",
  1835. "make_shared_for_overwrite", "make_tuple", "make_unique", "malloc", "memchr", "memcmp", "memcpy",
  1836. "memset", "modf", "move", "pow", "printf", "putchar", "puts", "realloc", "scanf", "sin", "sinh",
  1837. "snprintf", "sprintf", "sqrt", "sscanf", "std", "stderr", "stdin", "stdout", "strcat", "strchr",
  1838. "strcmp", "strcpy", "strcspn", "strlen", "strncat", "strncmp", "strncpy", "strpbrk", "strrchr",
  1839. "strspn", "strstr", "swap", "tan", "tanh", "terminate", "to_underlying", "tolower", "toupper",
  1840. "vfprintf", "visit", "vprintf", "vsprintf"
  1841. ]
  1842. },
  1843. begin: n.concat(/\b/, /(?!decltype)/, /(?!if)/, /(?!for)/, /(?!switch)/, /(?!while)/, e.IDENT_RE, n
  1844. .lookahead(/(<[^<>]+>|)\s*\(/))
  1845. },
  1846. b = [u, l, r, t, e.C_BLOCK_COMMENT_MODE, o, s],
  1847. m = {
  1848. variants: [{
  1849. begin: /=/,
  1850. end: /;/
  1851. }, {
  1852. begin: /\(/,
  1853. end: /\)/
  1854. }, {
  1855. beginKeywords: "new throw return else",
  1856. end: /;/
  1857. }],
  1858. keywords: g,
  1859. contains: b.concat([{
  1860. begin: /\(/,
  1861. end: /\)/,
  1862. keywords: g,
  1863. contains: b.concat(["self"]),
  1864. relevance: 0
  1865. }]),
  1866. relevance: 0
  1867. },
  1868. p = {
  1869. className: "function",
  1870. begin: "(" + i + "[\\*&\\s]+)+" + d,
  1871. returnBegin: !0,
  1872. end: /[{;=]/,
  1873. excludeEnd: !0,
  1874. keywords: g,
  1875. illegal: /[^\w\s\*&:<>.]/,
  1876. contains: [{
  1877. begin: "decltype\\(auto\\)",
  1878. keywords: g,
  1879. relevance: 0
  1880. }, {
  1881. begin: d,
  1882. returnBegin: !0,
  1883. contains: [c],
  1884. relevance: 0
  1885. }, {
  1886. begin: /::/,
  1887. relevance: 0
  1888. }, {
  1889. begin: /:/,
  1890. endsWithParent: !0,
  1891. contains: [s, o]
  1892. }, {
  1893. relevance: 0,
  1894. match: /,/
  1895. }, {
  1896. className: "params",
  1897. begin: /\(/,
  1898. end: /\)/,
  1899. keywords: g,
  1900. relevance: 0,
  1901. contains: [t, e.C_BLOCK_COMMENT_MODE, s, o, r, {
  1902. begin: /\(/,
  1903. end: /\)/,
  1904. keywords: g,
  1905. relevance: 0,
  1906. contains: ["self", t, e.C_BLOCK_COMMENT_MODE, s, o, r]
  1907. }]
  1908. }, r, t, e.C_BLOCK_COMMENT_MODE, l]
  1909. };
  1910. return {
  1911. name: "C++",
  1912. aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"],
  1913. keywords: g,
  1914. illegal: "</",
  1915. classNameAliases: {
  1916. "function.dispatch": "built_in"
  1917. },
  1918. contains: [].concat(m, p, u, b, [l, {
  1919. begin: "\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",
  1920. end: ">",
  1921. keywords: g,
  1922. contains: ["self", r]
  1923. }, {
  1924. begin: e.IDENT_RE + "::",
  1925. keywords: g
  1926. }, {
  1927. match: [/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, /\s+/, /\w+/],
  1928. className: {
  1929. 1: "keyword",
  1930. 3: "title.class"
  1931. }
  1932. }])
  1933. }
  1934. },
  1935. grmr_csharp: e => {
  1936. const n = {
  1937. keyword: ["abstract", "as", "base", "break", "case", "catch", "class", "const", "continue", "do", "else",
  1938. "event", "explicit", "extern", "finally", "fixed", "for", "foreach", "goto", "if", "implicit", "in",
  1939. "interface", "internal", "is", "lock", "namespace", "new", "operator", "out", "override", "params",
  1940. "private", "protected", "public", "readonly", "record", "ref", "return", "scoped", "sealed", "sizeof",
  1941. "stackalloc", "static", "struct", "switch", "this", "throw", "try", "typeof", "unchecked", "unsafe",
  1942. "using", "virtual", "void", "volatile", "while"
  1943. ].concat(["add", "alias", "and", "ascending", "async", "await", "by", "descending", "equals", "from",
  1944. "get", "global", "group", "init", "into", "join", "let", "nameof", "not", "notnull", "on", "or",
  1945. "orderby", "partial", "remove", "select", "set", "unmanaged", "value|0", "var", "when", "where",
  1946. "with", "yield"
  1947. ]),
  1948. built_in: ["bool", "byte", "char", "decimal", "delegate", "double", "dynamic", "enum", "float", "int",
  1949. "long", "nint", "nuint", "object", "sbyte", "short", "string", "ulong", "uint", "ushort"
  1950. ],
  1951. literal: ["default", "false", "null", "true"]
  1952. },
  1953. t = e.inherit(e.TITLE_MODE, {
  1954. begin: "[a-zA-Z](\\.?\\w)*"
  1955. }),
  1956. a = {
  1957. className: "number",
  1958. variants: [{
  1959. begin: "\\b(0b[01']+)"
  1960. }, {
  1961. begin: "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"
  1962. }, {
  1963. begin: "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
  1964. }],
  1965. relevance: 0
  1966. },
  1967. i = {
  1968. className: "string",
  1969. begin: '@"',
  1970. end: '"',
  1971. contains: [{
  1972. begin: '""'
  1973. }]
  1974. },
  1975. r = e.inherit(i, {
  1976. illegal: /\n/
  1977. }),
  1978. s = {
  1979. className: "subst",
  1980. begin: /\{/,
  1981. end: /\}/,
  1982. keywords: n
  1983. },
  1984. o = e.inherit(s, {
  1985. illegal: /\n/
  1986. }),
  1987. l = {
  1988. className: "string",
  1989. begin: /\$"/,
  1990. end: '"',
  1991. illegal: /\n/,
  1992. contains: [{
  1993. begin: /\{\{/
  1994. }, {
  1995. begin: /\}\}/
  1996. }, e.BACKSLASH_ESCAPE, o]
  1997. },
  1998. c = {
  1999. className: "string",
  2000. begin: /\$@"/,
  2001. end: '"',
  2002. contains: [{
  2003. begin: /\{\{/
  2004. }, {
  2005. begin: /\}\}/
  2006. }, {
  2007. begin: '""'
  2008. }, s]
  2009. },
  2010. d = e.inherit(c, {
  2011. illegal: /\n/,
  2012. contains: [{
  2013. begin: /\{\{/
  2014. }, {
  2015. begin: /\}\}/
  2016. }, {
  2017. begin: '""'
  2018. }, o]
  2019. });
  2020. s.contains = [c, l, i, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, a, e.C_BLOCK_COMMENT_MODE],
  2021. o.contains = [d, l, r, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, a, e.inherit(e.C_BLOCK_COMMENT_MODE, {
  2022. illegal: /\n/
  2023. })];
  2024. const g = {
  2025. variants: [c, l, i, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
  2026. },
  2027. u = {
  2028. begin: "<",
  2029. end: ">",
  2030. contains: [{
  2031. beginKeywords: "in out"
  2032. }, t]
  2033. },
  2034. b = e.IDENT_RE + "(<" + e.IDENT_RE + "(\\s*,\\s*" + e.IDENT_RE + ")*>)?(\\[\\])?",
  2035. m = {
  2036. begin: "@" + e.IDENT_RE,
  2037. relevance: 0
  2038. };
  2039. return {
  2040. name: "C#",
  2041. aliases: ["cs", "c#"],
  2042. keywords: n,
  2043. illegal: /::/,
  2044. contains: [e.COMMENT("///", "$", {
  2045. returnBegin: !0,
  2046. contains: [{
  2047. className: "doctag",
  2048. variants: [{
  2049. begin: "///",
  2050. relevance: 0
  2051. }, {
  2052. begin: "\x3c!--|--\x3e"
  2053. }, {
  2054. begin: "</?",
  2055. end: ">"
  2056. }]
  2057. }]
  2058. }), e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
  2059. className: "meta",
  2060. begin: "#",
  2061. end: "$",
  2062. keywords: {
  2063. keyword: "if else elif endif define undef warning error line region endregion pragma checksum"
  2064. }
  2065. }, g, a, {
  2066. beginKeywords: "class interface",
  2067. relevance: 0,
  2068. end: /[{;=]/,
  2069. illegal: /[^\s:,]/,
  2070. contains: [{
  2071. beginKeywords: "where class"
  2072. }, t, u, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2073. }, {
  2074. beginKeywords: "namespace",
  2075. relevance: 0,
  2076. end: /[{;=]/,
  2077. illegal: /[^\s:]/,
  2078. contains: [t, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2079. }, {
  2080. beginKeywords: "record",
  2081. relevance: 0,
  2082. end: /[{;=]/,
  2083. illegal: /[^\s:]/,
  2084. contains: [t, u, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2085. }, {
  2086. className: "meta",
  2087. begin: "^\\s*\\[(?=[\\w])",
  2088. excludeBegin: !0,
  2089. end: "\\]",
  2090. excludeEnd: !0,
  2091. contains: [{
  2092. className: "string",
  2093. begin: /"/,
  2094. end: /"/
  2095. }]
  2096. }, {
  2097. beginKeywords: "new return throw await else",
  2098. relevance: 0
  2099. }, {
  2100. className: "function",
  2101. begin: "(" + b + "\\s+)+" + e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(",
  2102. returnBegin: !0,
  2103. end: /\s*[{;=]/,
  2104. excludeEnd: !0,
  2105. keywords: n,
  2106. contains: [{
  2107. beginKeywords: "public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",
  2108. relevance: 0
  2109. }, {
  2110. begin: e.IDENT_RE + "\\s*(<[^=]+>\\s*)?\\(",
  2111. returnBegin: !0,
  2112. contains: [e.TITLE_MODE, u],
  2113. relevance: 0
  2114. }, {
  2115. match: /\(\)/
  2116. }, {
  2117. className: "params",
  2118. begin: /\(/,
  2119. end: /\)/,
  2120. excludeBegin: !0,
  2121. excludeEnd: !0,
  2122. keywords: n,
  2123. relevance: 0,
  2124. contains: [g, a, e.C_BLOCK_COMMENT_MODE]
  2125. }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2126. }, m]
  2127. }
  2128. },
  2129. grmr_css: e => {
  2130. const n = e.regex,
  2131. t = J(e),
  2132. a = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE];
  2133. return {
  2134. name: "CSS",
  2135. case_insensitive: !0,
  2136. illegal: /[=|'\$]/,
  2137. keywords: {
  2138. keyframePosition: "from to"
  2139. },
  2140. classNameAliases: {
  2141. keyframePosition: "selector-tag"
  2142. },
  2143. contains: [t.BLOCK_COMMENT, {
  2144. begin: /-(webkit|moz|ms|o)-(?=[a-z])/
  2145. }, t.CSS_NUMBER_MODE, {
  2146. className: "selector-id",
  2147. begin: /#[A-Za-z0-9_-]+/,
  2148. relevance: 0
  2149. }, {
  2150. className: "selector-class",
  2151. begin: "\\.[a-zA-Z-][a-zA-Z0-9_-]*",
  2152. relevance: 0
  2153. }, t.ATTRIBUTE_SELECTOR_MODE, {
  2154. className: "selector-pseudo",
  2155. variants: [{
  2156. begin: ":(" + ne.join("|") + ")"
  2157. }, {
  2158. begin: ":(:)?(" + te.join("|") + ")"
  2159. }]
  2160. }, t.CSS_VARIABLE, {
  2161. className: "attribute",
  2162. begin: "\\b(" + ae.join("|") + ")\\b"
  2163. }, {
  2164. begin: /:/,
  2165. end: /[;}{]/,
  2166. contains: [t.BLOCK_COMMENT, t.HEXCOLOR, t.IMPORTANT, t.CSS_NUMBER_MODE, ...a, {
  2167. begin: /(url|data-uri)\(/,
  2168. end: /\)/,
  2169. relevance: 0,
  2170. keywords: {
  2171. built_in: "url data-uri"
  2172. },
  2173. contains: [...a, {
  2174. className: "string",
  2175. begin: /[^)]/,
  2176. endsWithParent: !0,
  2177. excludeEnd: !0
  2178. }]
  2179. }, t.FUNCTION_DISPATCH]
  2180. }, {
  2181. begin: n.lookahead(/@/),
  2182. end: "[{;]",
  2183. relevance: 0,
  2184. illegal: /:/,
  2185. contains: [{
  2186. className: "keyword",
  2187. begin: /@-?\w[\w]*(-\w+)*/
  2188. }, {
  2189. begin: /\s/,
  2190. endsWithParent: !0,
  2191. excludeEnd: !0,
  2192. relevance: 0,
  2193. keywords: {
  2194. $pattern: /[a-z-]+/,
  2195. keyword: "and or not only",
  2196. attribute: ee.join(" ")
  2197. },
  2198. contains: [{
  2199. begin: /[a-z-]+(?=:)/,
  2200. className: "attribute"
  2201. }, ...a, t.CSS_NUMBER_MODE]
  2202. }]
  2203. }, {
  2204. className: "selector-tag",
  2205. begin: "\\b(" + Y.join("|") + ")\\b"
  2206. }]
  2207. }
  2208. },
  2209. grmr_diff: e => {
  2210. const n = e.regex;
  2211. return {
  2212. name: "Diff",
  2213. aliases: ["patch"],
  2214. contains: [{
  2215. className: "meta",
  2216. relevance: 10,
  2217. match: n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, /^\*\*\* +\d+,\d+ +\*\*\*\*$/, /^--- +\d+,\d+ +----$/)
  2218. }, {
  2219. className: "comment",
  2220. variants: [{
  2221. begin: n.either(/Index: /, /^index/, /={3,}/, /^-{3}/, /^\*{3} /, /^\+{3}/, /^diff --git/),
  2222. end: /$/
  2223. }, {
  2224. match: /^\*{15}$/
  2225. }]
  2226. }, {
  2227. className: "addition",
  2228. begin: /^\+/,
  2229. end: /$/
  2230. }, {
  2231. className: "deletion",
  2232. begin: /^-/,
  2233. end: /$/
  2234. }, {
  2235. className: "addition",
  2236. begin: /^!/,
  2237. end: /$/
  2238. }]
  2239. }
  2240. },
  2241. grmr_go: e => {
  2242. const n = {
  2243. keyword: ["break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for",
  2244. "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select",
  2245. "struct", "switch", "type", "var"
  2246. ],
  2247. type: ["bool", "byte", "complex64", "complex128", "error", "float32", "float64", "int8", "int16", "int32",
  2248. "int64", "string", "uint8", "uint16", "uint32", "uint64", "int", "uint", "uintptr", "rune"
  2249. ],
  2250. literal: ["true", "false", "iota", "nil"],
  2251. built_in: ["append", "cap", "close", "complex", "copy", "imag", "len", "make", "new", "panic", "print",
  2252. "println", "real", "recover", "delete"
  2253. ]
  2254. };
  2255. return {
  2256. name: "Go",
  2257. aliases: ["golang"],
  2258. keywords: n,
  2259. illegal: "</",
  2260. contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
  2261. className: "string",
  2262. variants: [e.QUOTE_STRING_MODE, e.APOS_STRING_MODE, {
  2263. begin: "`",
  2264. end: "`"
  2265. }]
  2266. }, {
  2267. className: "number",
  2268. variants: [{
  2269. begin: e.C_NUMBER_RE + "[i]",
  2270. relevance: 1
  2271. }, e.C_NUMBER_MODE]
  2272. }, {
  2273. begin: /:=/
  2274. }, {
  2275. className: "function",
  2276. beginKeywords: "func",
  2277. end: "\\s*(\\{|$)",
  2278. excludeEnd: !0,
  2279. contains: [e.TITLE_MODE, {
  2280. className: "params",
  2281. begin: /\(/,
  2282. end: /\)/,
  2283. endsParent: !0,
  2284. keywords: n,
  2285. illegal: /["']/
  2286. }]
  2287. }]
  2288. }
  2289. },
  2290. grmr_graphql: e => {
  2291. const n = e.regex;
  2292. return {
  2293. name: "GraphQL",
  2294. aliases: ["gql"],
  2295. case_insensitive: !0,
  2296. disableAutodetect: !1,
  2297. keywords: {
  2298. keyword: ["query", "mutation", "subscription", "type", "input", "schema", "directive", "interface",
  2299. "union", "scalar", "fragment", "enum", "on"
  2300. ],
  2301. literal: ["true", "false", "null"]
  2302. },
  2303. contains: [e.HASH_COMMENT_MODE, e.QUOTE_STRING_MODE, e.NUMBER_MODE, {
  2304. scope: "punctuation",
  2305. match: /[.]{3}/,
  2306. relevance: 0
  2307. }, {
  2308. scope: "punctuation",
  2309. begin: /[\!\(\)\:\=\[\]\{\|\}]{1}/,
  2310. relevance: 0
  2311. }, {
  2312. scope: "variable",
  2313. begin: /\$/,
  2314. end: /\W/,
  2315. excludeEnd: !0,
  2316. relevance: 0
  2317. }, {
  2318. scope: "meta",
  2319. match: /@\w+/,
  2320. excludeEnd: !0
  2321. }, {
  2322. scope: "symbol",
  2323. begin: n.concat(/[_A-Za-z][_0-9A-Za-z]*/, n.lookahead(/\s*:/)),
  2324. relevance: 0
  2325. }],
  2326. illegal: [/[;<']/, /BEGIN/]
  2327. }
  2328. },
  2329. grmr_ini: e => {
  2330. const n = e.regex,
  2331. t = {
  2332. className: "number",
  2333. relevance: 0,
  2334. variants: [{
  2335. begin: /([+-]+)?[\d]+_[\d_]+/
  2336. }, {
  2337. begin: e.NUMBER_RE
  2338. }]
  2339. },
  2340. a = e.COMMENT();
  2341. a.variants = [{
  2342. begin: /;/,
  2343. end: /$/
  2344. }, {
  2345. begin: /#/,
  2346. end: /$/
  2347. }];
  2348. const i = {
  2349. className: "variable",
  2350. variants: [{
  2351. begin: /\$[\w\d"][\w\d_]*/
  2352. }, {
  2353. begin: /\$\{(.*?)\}/
  2354. }]
  2355. },
  2356. r = {
  2357. className: "literal",
  2358. begin: /\bon|off|true|false|yes|no\b/
  2359. },
  2360. s = {
  2361. className: "string",
  2362. contains: [e.BACKSLASH_ESCAPE],
  2363. variants: [{
  2364. begin: "'''",
  2365. end: "'''",
  2366. relevance: 10
  2367. }, {
  2368. begin: '"""',
  2369. end: '"""',
  2370. relevance: 10
  2371. }, {
  2372. begin: '"',
  2373. end: '"'
  2374. }, {
  2375. begin: "'",
  2376. end: "'"
  2377. }]
  2378. },
  2379. o = {
  2380. begin: /\[/,
  2381. end: /\]/,
  2382. contains: [a, r, i, s, t, "self"],
  2383. relevance: 0
  2384. },
  2385. l = n.either(/[A-Za-z0-9_-]+/, /"(\\"|[^"])*"/, /'[^']*'/);
  2386. return {
  2387. name: "TOML, also INI",
  2388. aliases: ["toml"],
  2389. case_insensitive: !0,
  2390. illegal: /\S/,
  2391. contains: [a, {
  2392. className: "section",
  2393. begin: /\[+/,
  2394. end: /\]+/
  2395. }, {
  2396. begin: n.concat(l, "(\\s*\\.\\s*", l, ")*", n.lookahead(/\s*=\s*[^#\s]/)),
  2397. className: "attr",
  2398. starts: {
  2399. end: /$/,
  2400. contains: [a, o, r, i, s, t]
  2401. }
  2402. }]
  2403. }
  2404. },
  2405. grmr_java: e => {
  2406. const n = e.regex,
  2407. t = "[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",
  2408. a = t + le("(?:<" + t + "~~~(?:\\s*,\\s*" + t + "~~~)*>)?", /~~~/g, 2),
  2409. i = {
  2410. keyword: ["synchronized", "abstract", "private", "var", "static", "if", "const ", "for", "while",
  2411. "strictfp", "finally", "protected", "import", "native", "final", "void", "enum", "else", "break",
  2412. "transient", "catch", "instanceof", "volatile", "case", "assert", "package", "default", "public",
  2413. "try", "switch", "continue", "throws", "protected", "public", "private", "module", "requires",
  2414. "exports", "do", "sealed", "yield", "permits"
  2415. ],
  2416. literal: ["false", "true", "null"],
  2417. type: ["char", "boolean", "long", "float", "int", "byte", "short", "double"],
  2418. built_in: ["super", "this"]
  2419. },
  2420. r = {
  2421. className: "meta",
  2422. begin: "@" + t,
  2423. contains: [{
  2424. begin: /\(/,
  2425. end: /\)/,
  2426. contains: ["self"]
  2427. }]
  2428. },
  2429. s = {
  2430. className: "params",
  2431. begin: /\(/,
  2432. end: /\)/,
  2433. keywords: i,
  2434. relevance: 0,
  2435. contains: [e.C_BLOCK_COMMENT_MODE],
  2436. endsParent: !0
  2437. };
  2438. return {
  2439. name: "Java",
  2440. aliases: ["jsp"],
  2441. keywords: i,
  2442. illegal: /<\/|#/,
  2443. contains: [e.COMMENT("/\\*\\*", "\\*/", {
  2444. relevance: 0,
  2445. contains: [{
  2446. begin: /\w+@/,
  2447. relevance: 0
  2448. }, {
  2449. className: "doctag",
  2450. begin: "@[A-Za-z]+"
  2451. }]
  2452. }), {
  2453. begin: /import java\.[a-z]+\./,
  2454. keywords: "import",
  2455. relevance: 2
  2456. }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, {
  2457. begin: /"""/,
  2458. end: /"""/,
  2459. className: "string",
  2460. contains: [e.BACKSLASH_ESCAPE]
  2461. }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, {
  2462. match: [/\b(?:class|interface|enum|extends|implements|new)/, /\s+/, t],
  2463. className: {
  2464. 1: "keyword",
  2465. 3: "title.class"
  2466. }
  2467. }, {
  2468. match: /non-sealed/,
  2469. scope: "keyword"
  2470. }, {
  2471. begin: [n.concat(/(?!else)/, t), /\s+/, t, /\s+/, /=(?!=)/],
  2472. className: {
  2473. 1: "type",
  2474. 3: "variable",
  2475. 5: "operator"
  2476. }
  2477. }, {
  2478. begin: [/record/, /\s+/, t],
  2479. className: {
  2480. 1: "keyword",
  2481. 3: "title.class"
  2482. },
  2483. contains: [s, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2484. }, {
  2485. beginKeywords: "new throw return else",
  2486. relevance: 0
  2487. }, {
  2488. begin: ["(?:" + a + "\\s+)", e.UNDERSCORE_IDENT_RE, /\s*(?=\()/],
  2489. className: {
  2490. 2: "title.function"
  2491. },
  2492. keywords: i,
  2493. contains: [{
  2494. className: "params",
  2495. begin: /\(/,
  2496. end: /\)/,
  2497. keywords: i,
  2498. relevance: 0,
  2499. contains: [r, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, oe, e.C_BLOCK_COMMENT_MODE]
  2500. }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  2501. }, oe, r]
  2502. }
  2503. },
  2504. grmr_javascript: he,
  2505. grmr_json: e => {
  2506. const n = ["true", "false", "null"],
  2507. t = {
  2508. scope: "literal",
  2509. beginKeywords: n.join(" ")
  2510. };
  2511. return {
  2512. name: "JSON",
  2513. keywords: {
  2514. literal: n
  2515. },
  2516. contains: [{
  2517. className: "attr",
  2518. begin: /"(\\.|[^\\"\r\n])*"(?=\s*:)/,
  2519. relevance: 1.01
  2520. }, {
  2521. match: /[{}[\],:]/,
  2522. className: "punctuation",
  2523. relevance: 0
  2524. }, e.QUOTE_STRING_MODE, t, e.C_NUMBER_MODE, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE],
  2525. illegal: "\\S"
  2526. }
  2527. },
  2528. grmr_kotlin: e => {
  2529. const n = {
  2530. keyword: "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",
  2531. built_in: "Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
  2532. literal: "true false null"
  2533. },
  2534. t = {
  2535. className: "symbol",
  2536. begin: e.UNDERSCORE_IDENT_RE + "@"
  2537. },
  2538. a = {
  2539. className: "subst",
  2540. begin: /\$\{/,
  2541. end: /\}/,
  2542. contains: [e.C_NUMBER_MODE]
  2543. },
  2544. i = {
  2545. className: "variable",
  2546. begin: "\\$" + e.UNDERSCORE_IDENT_RE
  2547. },
  2548. r = {
  2549. className: "string",
  2550. variants: [{
  2551. begin: '"""',
  2552. end: '"""(?=[^"])',
  2553. contains: [i, a]
  2554. }, {
  2555. begin: "'",
  2556. end: "'",
  2557. illegal: /\n/,
  2558. contains: [e.BACKSLASH_ESCAPE]
  2559. }, {
  2560. begin: '"',
  2561. end: '"',
  2562. illegal: /\n/,
  2563. contains: [e.BACKSLASH_ESCAPE, i, a]
  2564. }]
  2565. };
  2566. a.contains.push(r);
  2567. const s = {
  2568. className: "meta",
  2569. begin: "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*" + e
  2570. .UNDERSCORE_IDENT_RE + ")?"
  2571. },
  2572. o = {
  2573. className: "meta",
  2574. begin: "@" + e.UNDERSCORE_IDENT_RE,
  2575. contains: [{
  2576. begin: /\(/,
  2577. end: /\)/,
  2578. contains: [e.inherit(r, {
  2579. className: "string"
  2580. }), "self"]
  2581. }]
  2582. },
  2583. l = oe,
  2584. c = e.COMMENT("/\\*", "\\*/", {
  2585. contains: [e.C_BLOCK_COMMENT_MODE]
  2586. }),
  2587. d = {
  2588. variants: [{
  2589. className: "type",
  2590. begin: e.UNDERSCORE_IDENT_RE
  2591. }, {
  2592. begin: /\(/,
  2593. end: /\)/,
  2594. contains: []
  2595. }]
  2596. },
  2597. g = d;
  2598. return g.variants[1].contains = [d], d.variants[1].contains = [g], {
  2599. name: "Kotlin",
  2600. aliases: ["kt", "kts"],
  2601. keywords: n,
  2602. contains: [e.COMMENT("/\\*\\*", "\\*/", {
  2603. relevance: 0,
  2604. contains: [{
  2605. className: "doctag",
  2606. begin: "@[A-Za-z]+"
  2607. }]
  2608. }), e.C_LINE_COMMENT_MODE, c, {
  2609. className: "keyword",
  2610. begin: /\b(break|continue|return|this)\b/,
  2611. starts: {
  2612. contains: [{
  2613. className: "symbol",
  2614. begin: /@\w+/
  2615. }]
  2616. }
  2617. }, t, s, o, {
  2618. className: "function",
  2619. beginKeywords: "fun",
  2620. end: "[(]|$",
  2621. returnBegin: !0,
  2622. excludeEnd: !0,
  2623. keywords: n,
  2624. relevance: 5,
  2625. contains: [{
  2626. begin: e.UNDERSCORE_IDENT_RE + "\\s*\\(",
  2627. returnBegin: !0,
  2628. relevance: 0,
  2629. contains: [e.UNDERSCORE_TITLE_MODE]
  2630. }, {
  2631. className: "type",
  2632. begin: /</,
  2633. end: />/,
  2634. keywords: "reified",
  2635. relevance: 0
  2636. }, {
  2637. className: "params",
  2638. begin: /\(/,
  2639. end: /\)/,
  2640. endsParent: !0,
  2641. keywords: n,
  2642. relevance: 0,
  2643. contains: [{
  2644. begin: /:/,
  2645. end: /[=,\/]/,
  2646. endsWithParent: !0,
  2647. contains: [d, e.C_LINE_COMMENT_MODE, c],
  2648. relevance: 0
  2649. }, e.C_LINE_COMMENT_MODE, c, s, o, r, e.C_NUMBER_MODE]
  2650. }, c]
  2651. }, {
  2652. begin: [/class|interface|trait/, /\s+/, e.UNDERSCORE_IDENT_RE],
  2653. beginScope: {
  2654. 3: "title.class"
  2655. },
  2656. keywords: "class interface trait",
  2657. end: /[:\{(]|$/,
  2658. excludeEnd: !0,
  2659. illegal: "extends implements",
  2660. contains: [{
  2661. beginKeywords: "public protected internal private constructor"
  2662. }, e.UNDERSCORE_TITLE_MODE, {
  2663. className: "type",
  2664. begin: /</,
  2665. end: />/,
  2666. excludeBegin: !0,
  2667. excludeEnd: !0,
  2668. relevance: 0
  2669. }, {
  2670. className: "type",
  2671. begin: /[,:]\s*/,
  2672. end: /[<\(,){\s]|$/,
  2673. excludeBegin: !0,
  2674. returnEnd: !0
  2675. }, s, o]
  2676. }, r, {
  2677. className: "meta",
  2678. begin: "^#!/usr/bin/env",
  2679. end: "$",
  2680. illegal: "\n"
  2681. }, l]
  2682. }
  2683. },
  2684. grmr_less: e => {
  2685. const n = J(e),
  2686. t = ie,
  2687. a = "([\\w-]+|@\\{[\\w-]+\\})",
  2688. i = [],
  2689. r = [],
  2690. s = e => ({
  2691. className: "string",
  2692. begin: "~?" + e + ".*?" + e
  2693. }),
  2694. o = (e, n, t) => ({
  2695. className: e,
  2696. begin: n,
  2697. relevance: t
  2698. }),
  2699. l = {
  2700. $pattern: /[a-z-]+/,
  2701. keyword: "and or not only",
  2702. attribute: ee.join(" ")
  2703. },
  2704. c = {
  2705. begin: "\\(",
  2706. end: "\\)",
  2707. contains: r,
  2708. keywords: l,
  2709. relevance: 0
  2710. };
  2711. r.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, s("'"), s('"'), n.CSS_NUMBER_MODE, {
  2712. begin: "(url|data-uri)\\(",
  2713. starts: {
  2714. className: "string",
  2715. end: "[\\)\\n]",
  2716. excludeEnd: !0
  2717. }
  2718. }, n.HEXCOLOR, c, o("variable", "@@?[\\w-]+", 10), o("variable", "@\\{[\\w-]+\\}"), o("built_in",
  2719. "~?`[^`]*?`"), {
  2720. className: "attribute",
  2721. begin: "[\\w-]+\\s*:",
  2722. end: ":",
  2723. returnBegin: !0,
  2724. excludeEnd: !0
  2725. }, n.IMPORTANT, {
  2726. beginKeywords: "and not"
  2727. }, n.FUNCTION_DISPATCH);
  2728. const d = r.concat({
  2729. begin: /\{/,
  2730. end: /\}/,
  2731. contains: i
  2732. }),
  2733. g = {
  2734. beginKeywords: "when",
  2735. endsWithParent: !0,
  2736. contains: [{
  2737. beginKeywords: "and not"
  2738. }].concat(r)
  2739. },
  2740. u = {
  2741. begin: a + "\\s*:",
  2742. returnBegin: !0,
  2743. end: /[;}]/,
  2744. relevance: 0,
  2745. contains: [{
  2746. begin: /-(webkit|moz|ms|o)-/
  2747. }, n.CSS_VARIABLE, {
  2748. className: "attribute",
  2749. begin: "\\b(" + ae.join("|") + ")\\b",
  2750. end: /(?=:)/,
  2751. starts: {
  2752. endsWithParent: !0,
  2753. illegal: "[<=$]",
  2754. relevance: 0,
  2755. contains: r
  2756. }
  2757. }]
  2758. },
  2759. b = {
  2760. className: "keyword",
  2761. begin: "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
  2762. starts: {
  2763. end: "[;{}]",
  2764. keywords: l,
  2765. returnEnd: !0,
  2766. contains: r,
  2767. relevance: 0
  2768. }
  2769. },
  2770. m = {
  2771. className: "variable",
  2772. variants: [{
  2773. begin: "@[\\w-]+\\s*:",
  2774. relevance: 15
  2775. }, {
  2776. begin: "@[\\w-]+"
  2777. }],
  2778. starts: {
  2779. end: "[;}]",
  2780. returnEnd: !0,
  2781. contains: d
  2782. }
  2783. },
  2784. p = {
  2785. variants: [{
  2786. begin: "[\\.#:&\\[>]",
  2787. end: "[;{}]"
  2788. }, {
  2789. begin: a,
  2790. end: /\{/
  2791. }],
  2792. returnBegin: !0,
  2793. returnEnd: !0,
  2794. illegal: "[<='$\"]",
  2795. relevance: 0,
  2796. contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, g, o("keyword", "all\\b"), o("variable",
  2797. "@\\{[\\w-]+\\}"), {
  2798. begin: "\\b(" + Y.join("|") + ")\\b",
  2799. className: "selector-tag"
  2800. }, n.CSS_NUMBER_MODE, o("selector-tag", a, 0), o("selector-id", "#" + a), o("selector-class", "\\." +
  2801. a, 0), o("selector-tag", "&", 0), n.ATTRIBUTE_SELECTOR_MODE, {
  2802. className: "selector-pseudo",
  2803. begin: ":(" + ne.join("|") + ")"
  2804. }, {
  2805. className: "selector-pseudo",
  2806. begin: ":(:)?(" + te.join("|") + ")"
  2807. }, {
  2808. begin: /\(/,
  2809. end: /\)/,
  2810. relevance: 0,
  2811. contains: d
  2812. }, {
  2813. begin: "!important"
  2814. }, n.FUNCTION_DISPATCH]
  2815. },
  2816. _ = {
  2817. begin: `[\\w-]+:(:)?(${t.join("|")})`,
  2818. returnBegin: !0,
  2819. contains: [p]
  2820. };
  2821. return i.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, b, m, _, u, p, g, n.FUNCTION_DISPATCH), {
  2822. name: "Less",
  2823. case_insensitive: !0,
  2824. illegal: "[=>'/<($\"]",
  2825. contains: i
  2826. }
  2827. },
  2828. grmr_lua: e => {
  2829. const n = "\\[=*\\[",
  2830. t = "\\]=*\\]",
  2831. a = {
  2832. begin: n,
  2833. end: t,
  2834. contains: ["self"]
  2835. },
  2836. i = [e.COMMENT("--(?!\\[=*\\[)", "$"), e.COMMENT("--\\[=*\\[", t, {
  2837. contains: [a],
  2838. relevance: 10
  2839. })];
  2840. return {
  2841. name: "Lua",
  2842. keywords: {
  2843. $pattern: e.UNDERSCORE_IDENT_RE,
  2844. literal: "true false nil",
  2845. keyword: "and break do else elseif end for goto if in local not or repeat return then until while",
  2846. built_in: "_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"
  2847. },
  2848. contains: i.concat([{
  2849. className: "function",
  2850. beginKeywords: "function",
  2851. end: "\\)",
  2852. contains: [e.inherit(e.TITLE_MODE, {
  2853. begin: "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"
  2854. }), {
  2855. className: "params",
  2856. begin: "\\(",
  2857. endsWithParent: !0,
  2858. contains: i
  2859. }].concat(i)
  2860. }, e.C_NUMBER_MODE, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, {
  2861. className: "string",
  2862. begin: n,
  2863. end: t,
  2864. contains: [a],
  2865. relevance: 5
  2866. }])
  2867. }
  2868. },
  2869. grmr_makefile: e => {
  2870. const n = {
  2871. className: "variable",
  2872. variants: [{
  2873. begin: "\\$\\(" + e.UNDERSCORE_IDENT_RE + "\\)",
  2874. contains: [e.BACKSLASH_ESCAPE]
  2875. }, {
  2876. begin: /\$[@%<?\^\+\*]/
  2877. }]
  2878. },
  2879. t = {
  2880. className: "string",
  2881. begin: /"/,
  2882. end: /"/,
  2883. contains: [e.BACKSLASH_ESCAPE, n]
  2884. },
  2885. a = {
  2886. className: "variable",
  2887. begin: /\$\([\w-]+\s/,
  2888. end: /\)/,
  2889. keywords: {
  2890. built_in: "subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"
  2891. },
  2892. contains: [n]
  2893. },
  2894. i = {
  2895. begin: "^" + e.UNDERSCORE_IDENT_RE + "\\s*(?=[:+?]?=)"
  2896. },
  2897. r = {
  2898. className: "section",
  2899. begin: /^[^\s]+:/,
  2900. end: /$/,
  2901. contains: [n]
  2902. };
  2903. return {
  2904. name: "Makefile",
  2905. aliases: ["mk", "mak", "make"],
  2906. keywords: {
  2907. $pattern: /[\w-]+/,
  2908. keyword: "define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"
  2909. },
  2910. contains: [e.HASH_COMMENT_MODE, n, t, a, i, {
  2911. className: "meta",
  2912. begin: /^\.PHONY:/,
  2913. end: /$/,
  2914. keywords: {
  2915. $pattern: /[\.\w]+/,
  2916. keyword: ".PHONY"
  2917. }
  2918. }, r]
  2919. }
  2920. },
  2921. grmr_xml: e => {
  2922. const n = e.regex,
  2923. t = n.concat(
  2924. /(?:[A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/,
  2925. n.optional(
  2926. /(?:[\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*:/
  2927. ),
  2928. /(?:[\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*/
  2929. ),
  2930. a = {
  2931. className: "symbol",
  2932. begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/
  2933. },
  2934. i = {
  2935. begin: /\s/,
  2936. contains: [{
  2937. className: "keyword",
  2938. begin: /#?[a-z_][a-z1-9_-]+/,
  2939. illegal: /\n/
  2940. }]
  2941. },
  2942. r = e.inherit(i, {
  2943. begin: /\(/,
  2944. end: /\)/
  2945. }),
  2946. s = e.inherit(e.APOS_STRING_MODE, {
  2947. className: "string"
  2948. }),
  2949. o = e.inherit(e.QUOTE_STRING_MODE, {
  2950. className: "string"
  2951. }),
  2952. l = {
  2953. endsWithParent: !0,
  2954. illegal: /</,
  2955. relevance: 0,
  2956. contains: [{
  2957. className: "attr",
  2958. begin: /(?:[\x2D\.0-:A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])+/,
  2959. relevance: 0
  2960. }, {
  2961. begin: /=\s*/,
  2962. relevance: 0,
  2963. contains: [{
  2964. className: "string",
  2965. endsParent: !0,
  2966. variants: [{
  2967. begin: /"/,
  2968. end: /"/,
  2969. contains: [a]
  2970. }, {
  2971. begin: /'/,
  2972. end: /'/,
  2973. contains: [a]
  2974. }, {
  2975. begin: /[^\s"'=<>`]+/
  2976. }]
  2977. }]
  2978. }]
  2979. };
  2980. return {
  2981. name: "HTML, XML",
  2982. aliases: ["html", "xhtml", "rss", "atom", "xjb", "xsd", "xsl", "plist", "wsf", "svg"],
  2983. case_insensitive: !0,
  2984. unicodeRegex: !0,
  2985. contains: [{
  2986. className: "meta",
  2987. begin: /<![a-z]/,
  2988. end: />/,
  2989. relevance: 10,
  2990. contains: [i, o, s, r, {
  2991. begin: /\[/,
  2992. end: /\]/,
  2993. contains: [{
  2994. className: "meta",
  2995. begin: /<![a-z]/,
  2996. end: />/,
  2997. contains: [i, r, o, s]
  2998. }]
  2999. }]
  3000. }, e.COMMENT(/<!--/, /-->/, {
  3001. relevance: 10
  3002. }), {
  3003. begin: /<!\[CDATA\[/,
  3004. end: /\]\]>/,
  3005. relevance: 10
  3006. }, a, {
  3007. className: "meta",
  3008. end: /\?>/,
  3009. variants: [{
  3010. begin: /<\?xml/,
  3011. relevance: 10,
  3012. contains: [o]
  3013. }, {
  3014. begin: /<\?[a-z][a-z0-9]+/
  3015. }]
  3016. }, {
  3017. className: "tag",
  3018. begin: /<style(?=\s|>)/,
  3019. end: />/,
  3020. keywords: {
  3021. name: "style"
  3022. },
  3023. contains: [l],
  3024. starts: {
  3025. end: /<\/style>/,
  3026. returnEnd: !0,
  3027. subLanguage: ["css", "xml"]
  3028. }
  3029. }, {
  3030. className: "tag",
  3031. begin: /<script(?=\s|>)/,
  3032. end: />/,
  3033. keywords: {
  3034. name: "script"
  3035. },
  3036. contains: [l],
  3037. starts: {
  3038. end: /<\/script>/,
  3039. returnEnd: !0,
  3040. subLanguage: ["javascript", "handlebars", "xml"]
  3041. }
  3042. }, {
  3043. className: "tag",
  3044. begin: /<>|<\/>/
  3045. }, {
  3046. className: "tag",
  3047. begin: n.concat(/</, n.lookahead(n.concat(t, n.either(/\/>/, />/, /\s/)))),
  3048. end: /\/?>/,
  3049. contains: [{
  3050. className: "name",
  3051. begin: t,
  3052. relevance: 0,
  3053. starts: l
  3054. }]
  3055. }, {
  3056. className: "tag",
  3057. begin: n.concat(/<\//, n.lookahead(n.concat(t, />/))),
  3058. contains: [{
  3059. className: "name",
  3060. begin: t,
  3061. relevance: 0
  3062. }, {
  3063. begin: />/,
  3064. relevance: 0,
  3065. endsParent: !0
  3066. }]
  3067. }]
  3068. }
  3069. },
  3070. grmr_markdown: e => {
  3071. const n = {
  3072. begin: /<\/?[A-Za-z_]/,
  3073. end: ">",
  3074. subLanguage: "xml",
  3075. relevance: 0
  3076. },
  3077. t = {
  3078. variants: [{
  3079. begin: /\[.+?\]\[.*?\]/,
  3080. relevance: 0
  3081. }, {
  3082. begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
  3083. relevance: 2
  3084. }, {
  3085. begin: e.regex.concat(/\[.+?\]\(/, /[A-Za-z][A-Za-z0-9+.-]*/, /:\/\/.*?\)/),
  3086. relevance: 2
  3087. }, {
  3088. begin: /\[.+?\]\([./?&#].*?\)/,
  3089. relevance: 1
  3090. }, {
  3091. begin: /\[.*?\]\(.*?\)/,
  3092. relevance: 0
  3093. }],
  3094. returnBegin: !0,
  3095. contains: [{
  3096. match: /\[(?=\])/
  3097. }, {
  3098. className: "string",
  3099. relevance: 0,
  3100. begin: "\\[",
  3101. end: "\\]",
  3102. excludeBegin: !0,
  3103. returnEnd: !0
  3104. }, {
  3105. className: "link",
  3106. relevance: 0,
  3107. begin: "\\]\\(",
  3108. end: "\\)",
  3109. excludeBegin: !0,
  3110. excludeEnd: !0
  3111. }, {
  3112. className: "symbol",
  3113. relevance: 0,
  3114. begin: "\\]\\[",
  3115. end: "\\]",
  3116. excludeBegin: !0,
  3117. excludeEnd: !0
  3118. }]
  3119. },
  3120. a = {
  3121. className: "strong",
  3122. contains: [],
  3123. variants: [{
  3124. begin: /_{2}(?!\s)/,
  3125. end: /_{2}/
  3126. }, {
  3127. begin: /\*{2}(?!\s)/,
  3128. end: /\*{2}/
  3129. }]
  3130. },
  3131. i = {
  3132. className: "emphasis",
  3133. contains: [],
  3134. variants: [{
  3135. begin: /\*(?![*\s])/,
  3136. end: /\*/
  3137. }, {
  3138. begin: /_(?![_\s])/,
  3139. end: /_/,
  3140. relevance: 0
  3141. }]
  3142. },
  3143. r = e.inherit(a, {
  3144. contains: []
  3145. }),
  3146. s = e.inherit(i, {
  3147. contains: []
  3148. });
  3149. a.contains.push(s), i.contains.push(r);
  3150. let o = [n, t];
  3151. return [a, i, r, s].forEach((e => {
  3152. e.contains = e.contains.concat(o)
  3153. })), o = o.concat(a, i), {
  3154. name: "Markdown",
  3155. aliases: ["md", "mkdown", "mkd"],
  3156. contains: [{
  3157. className: "section",
  3158. variants: [{
  3159. begin: "^#{1,6}",
  3160. end: "$",
  3161. contains: o
  3162. }, {
  3163. begin: "(?=^.+?\\n[=-]{2,}$)",
  3164. contains: [{
  3165. begin: "^[=-]*$"
  3166. }, {
  3167. begin: "^",
  3168. end: "\\n",
  3169. contains: o
  3170. }]
  3171. }]
  3172. }, n, {
  3173. className: "bullet",
  3174. begin: "^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
  3175. end: "\\s+",
  3176. excludeEnd: !0
  3177. }, a, i, {
  3178. className: "quote",
  3179. begin: "^>\\s+",
  3180. contains: o,
  3181. end: "$"
  3182. }, {
  3183. className: "code",
  3184. variants: [{
  3185. begin: "(`{3,})[^`](.|\\n)*?\\1`*[ ]*"
  3186. }, {
  3187. begin: "(~{3,})[^~](.|\\n)*?\\1~*[ ]*"
  3188. }, {
  3189. begin: "```",
  3190. end: "```+[ ]*$"
  3191. }, {
  3192. begin: "~~~",
  3193. end: "~~~+[ ]*$"
  3194. }, {
  3195. begin: "`.+?`"
  3196. }, {
  3197. begin: "(?=^( {4}|\\t))",
  3198. contains: [{
  3199. begin: "^( {4}|\\t)",
  3200. end: "(\\n)$"
  3201. }],
  3202. relevance: 0
  3203. }]
  3204. }, {
  3205. begin: "^[-\\*]{3,}",
  3206. end: "$"
  3207. }, t, {
  3208. begin: /^\[[^\n]+\]:/,
  3209. returnBegin: !0,
  3210. contains: [{
  3211. className: "symbol",
  3212. begin: /\[/,
  3213. end: /\]/,
  3214. excludeBegin: !0,
  3215. excludeEnd: !0
  3216. }, {
  3217. className: "link",
  3218. begin: /:\s*/,
  3219. end: /$/,
  3220. excludeBegin: !0
  3221. }]
  3222. }]
  3223. }
  3224. },
  3225. grmr_objectivec: e => {
  3226. const n = /[a-zA-Z@][a-zA-Z0-9_]*/,
  3227. t = {
  3228. $pattern: n,
  3229. keyword: ["@interface", "@class", "@protocol", "@implementation"]
  3230. };
  3231. return {
  3232. name: "Objective-C",
  3233. aliases: ["mm", "objc", "obj-c", "obj-c++", "objective-c++"],
  3234. keywords: {
  3235. "variable.language": ["this", "super"],
  3236. $pattern: n,
  3237. keyword: ["while", "export", "sizeof", "typedef", "const", "struct", "for", "union", "volatile", "static",
  3238. "mutable", "if", "do", "return", "goto", "enum", "else", "break", "extern", "asm", "case", "default",
  3239. "register", "explicit", "typename", "switch", "continue", "inline", "readonly", "assign", "readwrite",
  3240. "self", "@synchronized", "id", "typeof", "nonatomic", "IBOutlet", "IBAction", "strong", "weak",
  3241. "copy", "in", "out", "inout", "bycopy", "byref", "oneway", "__strong", "__weak", "__block",
  3242. "__autoreleasing", "@private", "@protected", "@public", "@try", "@property", "@end", "@throw",
  3243. "@catch", "@finally", "@autoreleasepool", "@synthesize", "@dynamic", "@selector", "@optional",
  3244. "@required", "@encode", "@package", "@import", "@defs", "@compatibility_alias", "__bridge",
  3245. "__bridge_transfer", "__bridge_retained", "__bridge_retain", "__covariant", "__contravariant",
  3246. "__kindof", "_Nonnull", "_Nullable", "_Null_unspecified", "__FUNCTION__", "__PRETTY_FUNCTION__",
  3247. "__attribute__", "getter", "setter", "retain", "unsafe_unretained", "nonnull", "nullable",
  3248. "null_unspecified", "null_resettable", "class", "instancetype", "NS_DESIGNATED_INITIALIZER",
  3249. "NS_UNAVAILABLE", "NS_REQUIRES_SUPER", "NS_RETURNS_INNER_POINTER", "NS_INLINE", "NS_AVAILABLE",
  3250. "NS_DEPRECATED", "NS_ENUM", "NS_OPTIONS", "NS_SWIFT_UNAVAILABLE", "NS_ASSUME_NONNULL_BEGIN",
  3251. "NS_ASSUME_NONNULL_END", "NS_REFINED_FOR_SWIFT", "NS_SWIFT_NAME", "NS_SWIFT_NOTHROW", "NS_DURING",
  3252. "NS_HANDLER", "NS_ENDHANDLER", "NS_VALUERETURN", "NS_VOIDRETURN"
  3253. ],
  3254. literal: ["false", "true", "FALSE", "TRUE", "nil", "YES", "NO", "NULL"],
  3255. built_in: ["dispatch_once_t", "dispatch_queue_t", "dispatch_sync", "dispatch_async", "dispatch_once"],
  3256. type: ["int", "float", "char", "unsigned", "signed", "short", "long", "double", "wchar_t", "unichar",
  3257. "void", "bool", "BOOL", "id|0", "_Bool"
  3258. ]
  3259. },
  3260. illegal: "</",
  3261. contains: [{
  3262. className: "built_in",
  3263. begin: "\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"
  3264. }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, e.C_NUMBER_MODE, e.QUOTE_STRING_MODE, e
  3265. .APOS_STRING_MODE, {
  3266. className: "string",
  3267. variants: [{
  3268. begin: '@"',
  3269. end: '"',
  3270. illegal: "\\n",
  3271. contains: [e.BACKSLASH_ESCAPE]
  3272. }]
  3273. }, {
  3274. className: "meta",
  3275. begin: /#\s*[a-z]+\b/,
  3276. end: /$/,
  3277. keywords: {
  3278. keyword: "if else elif endif define undef warning error line pragma ifdef ifndef include"
  3279. },
  3280. contains: [{
  3281. begin: /\\\n/,
  3282. relevance: 0
  3283. }, e.inherit(e.QUOTE_STRING_MODE, {
  3284. className: "string"
  3285. }), {
  3286. className: "string",
  3287. begin: /<.*?>/,
  3288. end: /$/,
  3289. illegal: "\\n"
  3290. }, e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE]
  3291. }, {
  3292. className: "class",
  3293. begin: "(" + t.keyword.join("|") + ")\\b",
  3294. end: /(\{|$)/,
  3295. excludeEnd: !0,
  3296. keywords: t,
  3297. contains: [e.UNDERSCORE_TITLE_MODE]
  3298. }, {
  3299. begin: "\\." + e.UNDERSCORE_IDENT_RE,
  3300. relevance: 0
  3301. }
  3302. ]
  3303. }
  3304. },
  3305. grmr_perl: e => {
  3306. const n = e.regex,
  3307. t = /[dualxmsipngr]{0,12}/,
  3308. a = {
  3309. $pattern: /[\w.]+/,
  3310. keyword: "abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0"
  3311. },
  3312. i = {
  3313. className: "subst",
  3314. begin: "[$@]\\{",
  3315. end: "\\}",
  3316. keywords: a
  3317. },
  3318. r = {
  3319. begin: /->\{/,
  3320. end: /\}/
  3321. },
  3322. s = {
  3323. variants: [{
  3324. begin: /\$\d/
  3325. }, {
  3326. begin: n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/, "(?![A-Za-z])(?![@$%])")
  3327. }, {
  3328. begin: /[$%@][^\s\w{]/,
  3329. relevance: 0
  3330. }]
  3331. },
  3332. o = [e.BACKSLASH_ESCAPE, i, s],
  3333. l = [/!/, /\//, /\|/, /\?/, /'/, /"/, /#/],
  3334. c = (e, a, i = "\\1") => {
  3335. const r = "\\1" === i ? i : n.concat(i, a);
  3336. return n.concat(n.concat("(?:", e, ")"), a, /(?:\\.|[^\\\/])*?/, r, /(?:\\.|[^\\\/])*?/, i, t)
  3337. },
  3338. d = (e, a, i) => n.concat(n.concat("(?:", e, ")"), a, /(?:\\.|[^\\\/])*?/, i, t),
  3339. g = [s, e.HASH_COMMENT_MODE, e.COMMENT(/^=\w/, /=cut/, {
  3340. endsWithParent: !0
  3341. }), r, {
  3342. className: "string",
  3343. contains: o,
  3344. variants: [{
  3345. begin: "q[qwxr]?\\s*\\(",
  3346. end: "\\)",
  3347. relevance: 5
  3348. }, {
  3349. begin: "q[qwxr]?\\s*\\[",
  3350. end: "\\]",
  3351. relevance: 5
  3352. }, {
  3353. begin: "q[qwxr]?\\s*\\{",
  3354. end: "\\}",
  3355. relevance: 5
  3356. }, {
  3357. begin: "q[qwxr]?\\s*\\|",
  3358. end: "\\|",
  3359. relevance: 5
  3360. }, {
  3361. begin: "q[qwxr]?\\s*<",
  3362. end: ">",
  3363. relevance: 5
  3364. }, {
  3365. begin: "qw\\s+q",
  3366. end: "q",
  3367. relevance: 5
  3368. }, {
  3369. begin: "'",
  3370. end: "'",
  3371. contains: [e.BACKSLASH_ESCAPE]
  3372. }, {
  3373. begin: '"',
  3374. end: '"'
  3375. }, {
  3376. begin: "`",
  3377. end: "`",
  3378. contains: [e.BACKSLASH_ESCAPE]
  3379. }, {
  3380. begin: /\{\w+\}/,
  3381. relevance: 0
  3382. }, {
  3383. begin: "-?\\w+\\s*=>",
  3384. relevance: 0
  3385. }]
  3386. }, {
  3387. className: "number",
  3388. begin: "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
  3389. relevance: 0
  3390. }, {
  3391. begin: "(\\/\\/|" + e.RE_STARTERS_RE + "|\\b(split|return|print|reverse|grep)\\b)\\s*",
  3392. keywords: "split return print reverse grep",
  3393. relevance: 0,
  3394. contains: [e.HASH_COMMENT_MODE, {
  3395. className: "regexp",
  3396. variants: [{
  3397. begin: c("s|tr|y", n.either(...l, {
  3398. capture: !0
  3399. }))
  3400. }, {
  3401. begin: c("s|tr|y", "\\(", "\\)")
  3402. }, {
  3403. begin: c("s|tr|y", "\\[", "\\]")
  3404. }, {
  3405. begin: c("s|tr|y", "\\{", "\\}")
  3406. }],
  3407. relevance: 2
  3408. }, {
  3409. className: "regexp",
  3410. variants: [{
  3411. begin: /(m|qr)\/\//,
  3412. relevance: 0
  3413. }, {
  3414. begin: d("(?:m|qr)?", /\//, /\//)
  3415. }, {
  3416. begin: d("m|qr", n.either(...l, {
  3417. capture: !0
  3418. }), /\1/)
  3419. }, {
  3420. begin: d("m|qr", /\(/, /\)/)
  3421. }, {
  3422. begin: d("m|qr", /\[/, /\]/)
  3423. }, {
  3424. begin: d("m|qr", /\{/, /\}/)
  3425. }]
  3426. }]
  3427. }, {
  3428. className: "function",
  3429. beginKeywords: "sub",
  3430. end: "(\\s*\\(.*?\\))?[;{]",
  3431. excludeEnd: !0,
  3432. relevance: 5,
  3433. contains: [e.TITLE_MODE]
  3434. }, {
  3435. begin: "-\\w\\b",
  3436. relevance: 0
  3437. }, {
  3438. begin: "^__DATA__$",
  3439. end: "^__END__$",
  3440. subLanguage: "mojolicious",
  3441. contains: [{
  3442. begin: "^@@.*",
  3443. end: "$",
  3444. className: "comment"
  3445. }]
  3446. }];
  3447. return i.contains = g, r.contains = g, {
  3448. name: "Perl",
  3449. aliases: ["pl", "pm"],
  3450. keywords: a,
  3451. contains: g
  3452. }
  3453. },
  3454. grmr_php: e => {
  3455. const n = e.regex,
  3456. t = /(?![A-Za-z0-9])(?![$])/,
  3457. a = n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/, t),
  3458. i = n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/, t),
  3459. r = {
  3460. scope: "variable",
  3461. match: "\\$+" + a
  3462. },
  3463. s = {
  3464. scope: "subst",
  3465. variants: [{
  3466. begin: /\$\w+/
  3467. }, {
  3468. begin: /\{\$/,
  3469. end: /\}/
  3470. }]
  3471. },
  3472. o = e.inherit(e.APOS_STRING_MODE, {
  3473. illegal: null
  3474. }),
  3475. l = "[ \t\n]",
  3476. c = {
  3477. scope: "string",
  3478. variants: [e.inherit(e.QUOTE_STRING_MODE, {
  3479. illegal: null,
  3480. contains: e.QUOTE_STRING_MODE.contains.concat(s)
  3481. }), o, e.END_SAME_AS_BEGIN({
  3482. begin: /<<<[ \t]*(\w+)\n/,
  3483. end: /[ \t]*(\w+)\b/,
  3484. contains: e.QUOTE_STRING_MODE.contains.concat(s)
  3485. })]
  3486. },
  3487. d = {
  3488. scope: "number",
  3489. variants: [{
  3490. begin: "\\b0[bB][01]+(?:_[01]+)*\\b"
  3491. }, {
  3492. begin: "\\b0[oO][0-7]+(?:_[0-7]+)*\\b"
  3493. }, {
  3494. begin: "\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"
  3495. }, {
  3496. begin: "(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"
  3497. }],
  3498. relevance: 0
  3499. },
  3500. g = ["false", "null", "true"],
  3501. u = ["__CLASS__", "__DIR__", "__FILE__", "__FUNCTION__", "__COMPILER_HALT_OFFSET__", "__LINE__",
  3502. "__METHOD__", "__NAMESPACE__", "__TRAIT__", "die", "echo", "exit", "include", "include_once", "print",
  3503. "require", "require_once", "array", "abstract", "and", "as", "binary", "bool", "boolean", "break",
  3504. "callable", "case", "catch", "class", "clone", "const", "continue", "declare", "default", "do", "double",
  3505. "else", "elseif", "empty", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "endwhile", "enum",
  3506. "eval", "extends", "final", "finally", "float", "for", "foreach", "from", "global", "goto", "if",
  3507. "implements", "instanceof", "insteadof", "int", "integer", "interface", "isset", "iterable", "list",
  3508. "match|0", "mixed", "new", "never", "object", "or", "private", "protected", "public", "readonly", "real",
  3509. "return", "string", "switch", "throw", "trait", "try", "unset", "use", "var", "void", "while", "xor",
  3510. "yield"
  3511. ],
  3512. b = ["Error|0", "AppendIterator", "ArgumentCountError", "ArithmeticError", "ArrayIterator", "ArrayObject",
  3513. "AssertionError", "BadFunctionCallException", "BadMethodCallException", "CachingIterator",
  3514. "CallbackFilterIterator", "CompileError", "Countable", "DirectoryIterator", "DivisionByZeroError",
  3515. "DomainException", "EmptyIterator", "ErrorException", "Exception", "FilesystemIterator", "FilterIterator",
  3516. "GlobIterator", "InfiniteIterator", "InvalidArgumentException", "IteratorIterator", "LengthException",
  3517. "LimitIterator", "LogicException", "MultipleIterator", "NoRewindIterator", "OutOfBoundsException",
  3518. "OutOfRangeException", "OuterIterator", "OverflowException", "ParentIterator", "ParseError",
  3519. "RangeException", "RecursiveArrayIterator", "RecursiveCachingIterator", "RecursiveCallbackFilterIterator",
  3520. "RecursiveDirectoryIterator", "RecursiveFilterIterator", "RecursiveIterator", "RecursiveIteratorIterator",
  3521. "RecursiveRegexIterator", "RecursiveTreeIterator", "RegexIterator", "RuntimeException",
  3522. "SeekableIterator", "SplDoublyLinkedList", "SplFileInfo", "SplFileObject", "SplFixedArray", "SplHeap",
  3523. "SplMaxHeap", "SplMinHeap", "SplObjectStorage", "SplObserver", "SplPriorityQueue", "SplQueue", "SplStack",
  3524. "SplSubject", "SplTempFileObject", "TypeError", "UnderflowException", "UnexpectedValueException",
  3525. "UnhandledMatchError", "ArrayAccess", "BackedEnum", "Closure", "Fiber", "Generator", "Iterator",
  3526. "IteratorAggregate", "Serializable", "Stringable", "Throwable", "Traversable", "UnitEnum",
  3527. "WeakReference", "WeakMap", "Directory", "__PHP_Incomplete_Class", "parent", "php_user_filter", "self",
  3528. "static", "stdClass"
  3529. ],
  3530. m = {
  3531. keyword: u,
  3532. literal: (e => {
  3533. const n = [];
  3534. return e.forEach((e => {
  3535. n.push(e), e.toLowerCase() === e ? n.push(e.toUpperCase()) : n.push(e.toLowerCase())
  3536. })), n
  3537. })(g),
  3538. built_in: b
  3539. },
  3540. p = e => e.map((e => e.replace(/\|\d+$/, ""))),
  3541. _ = {
  3542. variants: [{
  3543. match: [/new/, n.concat(l, "+"), n.concat("(?!", p(b).join("\\b|"), "\\b)"), i],
  3544. scope: {
  3545. 1: "keyword",
  3546. 4: "title.class"
  3547. }
  3548. }]
  3549. },
  3550. h = n.concat(a, "\\b(?!\\()"),
  3551. f = {
  3552. variants: [{
  3553. match: [n.concat(/::/, n.lookahead(/(?!class\b)/)), h],
  3554. scope: {
  3555. 2: "variable.constant"
  3556. }
  3557. }, {
  3558. match: [/::/, /class/],
  3559. scope: {
  3560. 2: "variable.language"
  3561. }
  3562. }, {
  3563. match: [i, n.concat(/::/, n.lookahead(/(?!class\b)/)), h],
  3564. scope: {
  3565. 1: "title.class",
  3566. 3: "variable.constant"
  3567. }
  3568. }, {
  3569. match: [i, n.concat("::", n.lookahead(/(?!class\b)/))],
  3570. scope: {
  3571. 1: "title.class"
  3572. }
  3573. }, {
  3574. match: [i, /::/, /class/],
  3575. scope: {
  3576. 1: "title.class",
  3577. 3: "variable.language"
  3578. }
  3579. }]
  3580. },
  3581. E = {
  3582. scope: "attr",
  3583. match: n.concat(a, n.lookahead(":"), n.lookahead(/(?!::)/))
  3584. },
  3585. y = {
  3586. relevance: 0,
  3587. begin: /\(/,
  3588. end: /\)/,
  3589. keywords: m,
  3590. contains: [E, r, f, e.C_BLOCK_COMMENT_MODE, c, d, _]
  3591. },
  3592. w = {
  3593. relevance: 0,
  3594. match: [/\b/, n.concat("(?!fn\\b|function\\b|", p(u).join("\\b|"), "|", p(b).join("\\b|"), "\\b)"), a, n
  3595. .concat(l, "*"), n.lookahead(/(?=\()/)
  3596. ],
  3597. scope: {
  3598. 3: "title.function.invoke"
  3599. },
  3600. contains: [y]
  3601. };
  3602. y.contains.push(w);
  3603. const N = [E, f, e.C_BLOCK_COMMENT_MODE, c, d, _];
  3604. return {
  3605. case_insensitive: !1,
  3606. keywords: m,
  3607. contains: [{
  3608. begin: n.concat(/#\[\s*/, i),
  3609. beginScope: "meta",
  3610. end: /]/,
  3611. endScope: "meta",
  3612. keywords: {
  3613. literal: g,
  3614. keyword: ["new", "array"]
  3615. },
  3616. contains: [{
  3617. begin: /\[/,
  3618. end: /]/,
  3619. keywords: {
  3620. literal: g,
  3621. keyword: ["new", "array"]
  3622. },
  3623. contains: ["self", ...N]
  3624. }, ...N, {
  3625. scope: "meta",
  3626. match: i
  3627. }]
  3628. }, e.HASH_COMMENT_MODE, e.COMMENT("//", "$"), e.COMMENT("/\\*", "\\*/", {
  3629. contains: [{
  3630. scope: "doctag",
  3631. match: "@[A-Za-z]+"
  3632. }]
  3633. }), {
  3634. match: /__halt_compiler\(\);/,
  3635. keywords: "__halt_compiler",
  3636. starts: {
  3637. scope: "comment",
  3638. end: e.MATCH_NOTHING_RE,
  3639. contains: [{
  3640. match: /\?>/,
  3641. scope: "meta",
  3642. endsParent: !0
  3643. }]
  3644. }
  3645. }, {
  3646. scope: "meta",
  3647. variants: [{
  3648. begin: /<\?php/,
  3649. relevance: 10
  3650. }, {
  3651. begin: /<\?=/
  3652. }, {
  3653. begin: /<\?/,
  3654. relevance: .1
  3655. }, {
  3656. begin: /\?>/
  3657. }]
  3658. }, {
  3659. scope: "variable.language",
  3660. match: /\$this\b/
  3661. }, r, w, f, {
  3662. match: [/const/, /\s/, a],
  3663. scope: {
  3664. 1: "keyword",
  3665. 3: "variable.constant"
  3666. }
  3667. }, _, {
  3668. scope: "function",
  3669. relevance: 0,
  3670. beginKeywords: "fn function",
  3671. end: /[;{]/,
  3672. excludeEnd: !0,
  3673. illegal: "[$%\\[]",
  3674. contains: [{
  3675. beginKeywords: "use"
  3676. }, e.UNDERSCORE_TITLE_MODE, {
  3677. begin: "=>",
  3678. endsParent: !0
  3679. }, {
  3680. scope: "params",
  3681. begin: "\\(",
  3682. end: "\\)",
  3683. excludeBegin: !0,
  3684. excludeEnd: !0,
  3685. keywords: m,
  3686. contains: ["self", r, f, e.C_BLOCK_COMMENT_MODE, c, d]
  3687. }]
  3688. }, {
  3689. scope: "class",
  3690. variants: [{
  3691. beginKeywords: "enum",
  3692. illegal: /[($"]/
  3693. }, {
  3694. beginKeywords: "class interface trait",
  3695. illegal: /[:($"]/
  3696. }],
  3697. relevance: 0,
  3698. end: /\{/,
  3699. excludeEnd: !0,
  3700. contains: [{
  3701. beginKeywords: "extends implements"
  3702. }, e.UNDERSCORE_TITLE_MODE]
  3703. }, {
  3704. beginKeywords: "namespace",
  3705. relevance: 0,
  3706. end: ";",
  3707. illegal: /[.']/,
  3708. contains: [e.inherit(e.UNDERSCORE_TITLE_MODE, {
  3709. scope: "title.class"
  3710. })]
  3711. }, {
  3712. beginKeywords: "use",
  3713. relevance: 0,
  3714. end: ";",
  3715. contains: [{
  3716. match: /\b(as|const|function)\b/,
  3717. scope: "keyword"
  3718. }, e.UNDERSCORE_TITLE_MODE]
  3719. }, c, d]
  3720. }
  3721. },
  3722. grmr_php_template: e => ({
  3723. name: "PHP template",
  3724. subLanguage: "xml",
  3725. contains: [{
  3726. begin: /<\?(php|=)?/,
  3727. end: /\?>/,
  3728. subLanguage: "php",
  3729. contains: [{
  3730. begin: "/\\*",
  3731. end: "\\*/",
  3732. skip: !0
  3733. }, {
  3734. begin: 'b"',
  3735. end: '"',
  3736. skip: !0
  3737. }, {
  3738. begin: "b'",
  3739. end: "'",
  3740. skip: !0
  3741. }, e.inherit(e.APOS_STRING_MODE, {
  3742. illegal: null,
  3743. className: null,
  3744. contains: null,
  3745. skip: !0
  3746. }), e.inherit(e.QUOTE_STRING_MODE, {
  3747. illegal: null,
  3748. className: null,
  3749. contains: null,
  3750. skip: !0
  3751. })]
  3752. }]
  3753. }),
  3754. grmr_plaintext: e => ({
  3755. name: "Plain text",
  3756. aliases: ["text", "txt"],
  3757. disableAutodetect: !0
  3758. }),
  3759. grmr_python: e => {
  3760. const n = e.regex,
  3761. t = /(?:[A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFC5D\uFC64-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDF9\uFE71\uFE73\uFE77\uFE79\uFE7B\uFE7D\uFE7F-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037B-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u0870-\u0887\u0889-\u088E\u0898-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF3\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECE\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1715\u171F-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B4C\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFC5D\uFC64-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDF9\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE71\uFE73\uFE77\uFE79\uFE7B\uFE7D\uFE7F-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDEFD-\uDF1C\uDF27\uDF30-\uDF50\uDF70-\uDF85\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC75\uDC7F-\uDCBA\uDCC2\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E-\uDE41\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39\uDF40-\uDF46]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDF00-\uDF10\uDF12-\uDF3A\uDF3E-\uDF42\uDF50-\uDF59\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC40-\uDC55]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDC30-\uDC6D\uDC8F\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAE\uDEC0-\uDEF9]|\uD839[\uDCD0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF]|\uDB40[\uDD00-\uDDEF])*/,
  3762. a = ["and", "as", "assert", "async", "await", "break", "case", "class", "continue", "def", "del", "elif",
  3763. "else", "except", "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "match",
  3764. "nonlocal|10", "not", "or", "pass", "raise", "return", "try", "while", "with", "yield"
  3765. ],
  3766. i = {
  3767. $pattern: /[A-Za-z]\w+|__\w+__/,
  3768. keyword: a,
  3769. built_in: ["__import__", "abs", "all", "any", "ascii", "bin", "bool", "breakpoint", "bytearray", "bytes",
  3770. "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod",
  3771. "enumerate", "eval", "exec", "filter", "float", "format", "frozenset", "getattr", "globals",
  3772. "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len",
  3773. "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow",
  3774. "print", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted",
  3775. "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip"
  3776. ],
  3777. literal: ["__debug__", "Ellipsis", "False", "None", "NotImplemented", "True"],
  3778. type: ["Any", "Callable", "Coroutine", "Dict", "List", "Literal", "Generic", "Optional", "Sequence",
  3779. "Set", "Tuple", "Type", "Union"
  3780. ]
  3781. },
  3782. r = {
  3783. className: "meta",
  3784. begin: /^(>>>|\.\.\.) /
  3785. },
  3786. s = {
  3787. className: "subst",
  3788. begin: /\{/,
  3789. end: /\}/,
  3790. keywords: i,
  3791. illegal: /#/
  3792. },
  3793. o = {
  3794. begin: /\{\{/,
  3795. relevance: 0
  3796. },
  3797. l = {
  3798. className: "string",
  3799. contains: [e.BACKSLASH_ESCAPE],
  3800. variants: [{
  3801. begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,
  3802. end: /'''/,
  3803. contains: [e.BACKSLASH_ESCAPE, r],
  3804. relevance: 10
  3805. }, {
  3806. begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,
  3807. end: /"""/,
  3808. contains: [e.BACKSLASH_ESCAPE, r],
  3809. relevance: 10
  3810. }, {
  3811. begin: /([fF][rR]|[rR][fF]|[fF])'''/,
  3812. end: /'''/,
  3813. contains: [e.BACKSLASH_ESCAPE, r, o, s]
  3814. }, {
  3815. begin: /([fF][rR]|[rR][fF]|[fF])"""/,
  3816. end: /"""/,
  3817. contains: [e.BACKSLASH_ESCAPE, r, o, s]
  3818. }, {
  3819. begin: /([uU]|[rR])'/,
  3820. end: /'/,
  3821. relevance: 10
  3822. }, {
  3823. begin: /([uU]|[rR])"/,
  3824. end: /"/,
  3825. relevance: 10
  3826. }, {
  3827. begin: /([bB]|[bB][rR]|[rR][bB])'/,
  3828. end: /'/
  3829. }, {
  3830. begin: /([bB]|[bB][rR]|[rR][bB])"/,
  3831. end: /"/
  3832. }, {
  3833. begin: /([fF][rR]|[rR][fF]|[fF])'/,
  3834. end: /'/,
  3835. contains: [e.BACKSLASH_ESCAPE, o, s]
  3836. }, {
  3837. begin: /([fF][rR]|[rR][fF]|[fF])"/,
  3838. end: /"/,
  3839. contains: [e.BACKSLASH_ESCAPE, o, s]
  3840. }, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
  3841. },
  3842. c = "[0-9](_?[0-9])*",
  3843. d = `(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,
  3844. g = "\\b|" + a.join("|"),
  3845. u = {
  3846. className: "number",
  3847. relevance: 0,
  3848. variants: [{
  3849. begin: `(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${g})`
  3850. }, {
  3851. begin: `(${d})[jJ]?`
  3852. }, {
  3853. begin: `\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`
  3854. }, {
  3855. begin: `\\b0[bB](_?[01])+[lL]?(?=${g})`
  3856. }, {
  3857. begin: `\\b0[oO](_?[0-7])+[lL]?(?=${g})`
  3858. }, {
  3859. begin: `\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`
  3860. }, {
  3861. begin: `\\b(${c})[jJ](?=${g})`
  3862. }]
  3863. },
  3864. b = {
  3865. className: "comment",
  3866. begin: n.lookahead(/# type:/),
  3867. end: /$/,
  3868. keywords: i,
  3869. contains: [{
  3870. begin: /# type:/
  3871. }, {
  3872. begin: /#/,
  3873. end: /\b\B/,
  3874. endsWithParent: !0
  3875. }]
  3876. },
  3877. m = {
  3878. className: "params",
  3879. variants: [{
  3880. className: "",
  3881. begin: /\(\s*\)/,
  3882. skip: !0
  3883. }, {
  3884. begin: /\(/,
  3885. end: /\)/,
  3886. excludeBegin: !0,
  3887. excludeEnd: !0,
  3888. keywords: i,
  3889. contains: ["self", r, u, l, e.HASH_COMMENT_MODE]
  3890. }]
  3891. };
  3892. return s.contains = [l, u, r], {
  3893. name: "Python",
  3894. aliases: ["py", "gyp", "ipython"],
  3895. unicodeRegex: !0,
  3896. keywords: i,
  3897. illegal: /(<\/|->|\?)|=>/,
  3898. contains: [r, u, {
  3899. begin: /\bself\b/
  3900. }, {
  3901. beginKeywords: "if",
  3902. relevance: 0
  3903. }, l, b, e.HASH_COMMENT_MODE, {
  3904. match: [/\bdef/, /\s+/, t],
  3905. scope: {
  3906. 1: "keyword",
  3907. 3: "title.function"
  3908. },
  3909. contains: [m]
  3910. }, {
  3911. variants: [{
  3912. match: [/\bclass/, /\s+/, t, /\s*/, /\(\s*/, t, /\s*\)/]
  3913. }, {
  3914. match: [/\bclass/, /\s+/, t]
  3915. }],
  3916. scope: {
  3917. 1: "keyword",
  3918. 3: "title.class",
  3919. 6: "title.class.inherited"
  3920. }
  3921. }, {
  3922. className: "meta",
  3923. begin: /^[\t ]*@/,
  3924. end: /(?=#)|$/,
  3925. contains: [u, m, l]
  3926. }]
  3927. }
  3928. },
  3929. grmr_python_repl: e => ({
  3930. aliases: ["pycon"],
  3931. contains: [{
  3932. className: "meta.prompt",
  3933. starts: {
  3934. end: / |$/,
  3935. starts: {
  3936. end: "$",
  3937. subLanguage: "python"
  3938. }
  3939. },
  3940. variants: [{
  3941. begin: /^>>>(?=[ ]|$)/
  3942. }, {
  3943. begin: /^\.\.\.(?=[ ]|$)/
  3944. }]
  3945. }]
  3946. }),
  3947. grmr_r: e => {
  3948. const n = e.regex,
  3949. t = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,
  3950. a = n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/, /0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,
  3951. /(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),
  3952. i = /[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,
  3953. r = n.either(/[()]/, /[{}]/, /\[\[/, /[[\]]/, /\\/, /,/);
  3954. return {
  3955. name: "R",
  3956. keywords: {
  3957. $pattern: t,
  3958. keyword: "function if in break next repeat else for while",
  3959. literal: "NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",
  3960. built_in: "LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"
  3961. },
  3962. contains: [e.COMMENT(/#'/, /$/, {
  3963. contains: [{
  3964. scope: "doctag",
  3965. match: /@examples/,
  3966. starts: {
  3967. end: n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/, /\n^(?!#')/)),
  3968. endsParent: !0
  3969. }
  3970. }, {
  3971. scope: "doctag",
  3972. begin: "@param",
  3973. end: /$/,
  3974. contains: [{
  3975. scope: "variable",
  3976. variants: [{
  3977. match: t
  3978. }, {
  3979. match: /`(?:\\.|[^`\\])+`/
  3980. }],
  3981. endsParent: !0
  3982. }]
  3983. }, {
  3984. scope: "doctag",
  3985. match: /@[a-zA-Z]+/
  3986. }, {
  3987. scope: "keyword",
  3988. match: /\\[a-zA-Z]+/
  3989. }]
  3990. }), e.HASH_COMMENT_MODE, {
  3991. scope: "string",
  3992. contains: [e.BACKSLASH_ESCAPE],
  3993. variants: [e.END_SAME_AS_BEGIN({
  3994. begin: /[rR]"(-*)\(/,
  3995. end: /\)(-*)"/
  3996. }), e.END_SAME_AS_BEGIN({
  3997. begin: /[rR]"(-*)\{/,
  3998. end: /\}(-*)"/
  3999. }), e.END_SAME_AS_BEGIN({
  4000. begin: /[rR]"(-*)\[/,
  4001. end: /\](-*)"/
  4002. }), e.END_SAME_AS_BEGIN({
  4003. begin: /[rR]'(-*)\(/,
  4004. end: /\)(-*)'/
  4005. }), e.END_SAME_AS_BEGIN({
  4006. begin: /[rR]'(-*)\{/,
  4007. end: /\}(-*)'/
  4008. }), e.END_SAME_AS_BEGIN({
  4009. begin: /[rR]'(-*)\[/,
  4010. end: /\](-*)'/
  4011. }), {
  4012. begin: '"',
  4013. end: '"',
  4014. relevance: 0
  4015. }, {
  4016. begin: "'",
  4017. end: "'",
  4018. relevance: 0
  4019. }]
  4020. }, {
  4021. relevance: 0,
  4022. variants: [{
  4023. scope: {
  4024. 1: "operator",
  4025. 2: "number"
  4026. },
  4027. match: [i, a]
  4028. }, {
  4029. scope: {
  4030. 1: "operator",
  4031. 2: "number"
  4032. },
  4033. match: [/%[^%]*%/, a]
  4034. }, {
  4035. scope: {
  4036. 1: "punctuation",
  4037. 2: "number"
  4038. },
  4039. match: [r, a]
  4040. }, {
  4041. scope: {
  4042. 2: "number"
  4043. },
  4044. match: [/[^a-zA-Z0-9._]|^/, a]
  4045. }]
  4046. }, {
  4047. scope: {
  4048. 3: "operator"
  4049. },
  4050. match: [t, /\s+/, /<-/, /\s+/]
  4051. }, {
  4052. scope: "operator",
  4053. relevance: 0,
  4054. variants: [{
  4055. match: i
  4056. }, {
  4057. match: /%[^%]*%/
  4058. }]
  4059. }, {
  4060. scope: "punctuation",
  4061. relevance: 0,
  4062. match: r
  4063. }, {
  4064. begin: "`",
  4065. end: "`",
  4066. contains: [{
  4067. begin: /\\./
  4068. }]
  4069. }]
  4070. }
  4071. },
  4072. grmr_ruby: e => {
  4073. const n = e.regex,
  4074. t = "([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",
  4075. a = n.either(/\b([A-Z]+[a-z0-9]+)+/, /\b([A-Z]+[a-z0-9]+)+[A-Z]+/),
  4076. i = n.concat(a, /(::\w+)*/),
  4077. r = {
  4078. "variable.constant": ["__FILE__", "__LINE__", "__ENCODING__"],
  4079. "variable.language": ["self", "super"],
  4080. keyword: ["alias", "and", "begin", "BEGIN", "break", "case", "class", "defined", "do", "else", "elsif",
  4081. "end", "END", "ensure", "for", "if", "in", "module", "next", "not", "or", "redo", "require", "rescue",
  4082. "retry", "return", "then", "undef", "unless", "until", "when", "while", "yield", "include", "extend",
  4083. "prepend", "public", "private", "protected", "raise", "throw"
  4084. ],
  4085. built_in: ["proc", "lambda", "attr_accessor", "attr_reader", "attr_writer", "define_method",
  4086. "private_constant", "module_function"
  4087. ],
  4088. literal: ["true", "false", "nil"]
  4089. },
  4090. s = {
  4091. className: "doctag",
  4092. begin: "@[A-Za-z]+"
  4093. },
  4094. o = {
  4095. begin: "#<",
  4096. end: ">"
  4097. },
  4098. l = [e.COMMENT("#", "$", {
  4099. contains: [s]
  4100. }), e.COMMENT("^=begin", "^=end", {
  4101. contains: [s],
  4102. relevance: 10
  4103. }), e.COMMENT("^__END__", e.MATCH_NOTHING_RE)],
  4104. c = {
  4105. className: "subst",
  4106. begin: /#\{/,
  4107. end: /\}/,
  4108. keywords: r
  4109. },
  4110. d = {
  4111. className: "string",
  4112. contains: [e.BACKSLASH_ESCAPE, c],
  4113. variants: [{
  4114. begin: /'/,
  4115. end: /'/
  4116. }, {
  4117. begin: /"/,
  4118. end: /"/
  4119. }, {
  4120. begin: /`/,
  4121. end: /`/
  4122. }, {
  4123. begin: /%[qQwWx]?\(/,
  4124. end: /\)/
  4125. }, {
  4126. begin: /%[qQwWx]?\[/,
  4127. end: /\]/
  4128. }, {
  4129. begin: /%[qQwWx]?\{/,
  4130. end: /\}/
  4131. }, {
  4132. begin: /%[qQwWx]?</,
  4133. end: />/
  4134. }, {
  4135. begin: /%[qQwWx]?\//,
  4136. end: /\//
  4137. }, {
  4138. begin: /%[qQwWx]?%/,
  4139. end: /%/
  4140. }, {
  4141. begin: /%[qQwWx]?-/,
  4142. end: /-/
  4143. }, {
  4144. begin: /%[qQwWx]?\|/,
  4145. end: /\|/
  4146. }, {
  4147. begin: /\B\?(\\\d{1,3})/
  4148. }, {
  4149. begin: /\B\?(\\x[A-Fa-f0-9]{1,2})/
  4150. }, {
  4151. begin: /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/
  4152. }, {
  4153. begin: /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/
  4154. }, {
  4155. begin: /\B\?\\(c|C-)[\x20-\x7e]/
  4156. }, {
  4157. begin: /\B\?\\?\S/
  4158. }, {
  4159. begin: n.concat(/<<[-~]?'?/, n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),
  4160. contains: [e.END_SAME_AS_BEGIN({
  4161. begin: /(\w+)/,
  4162. end: /(\w+)/,
  4163. contains: [e.BACKSLASH_ESCAPE, c]
  4164. })]
  4165. }]
  4166. },
  4167. g = "[0-9](_?[0-9])*",
  4168. u = {
  4169. className: "number",
  4170. relevance: 0,
  4171. variants: [{
  4172. begin: `\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`
  4173. }, {
  4174. begin: "\\b0[dD][0-9](_?[0-9])*r?i?\\b"
  4175. }, {
  4176. begin: "\\b0[bB][0-1](_?[0-1])*r?i?\\b"
  4177. }, {
  4178. begin: "\\b0[oO][0-7](_?[0-7])*r?i?\\b"
  4179. }, {
  4180. begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"
  4181. }, {
  4182. begin: "\\b0(_?[0-7])+r?i?\\b"
  4183. }]
  4184. },
  4185. b = {
  4186. variants: [{
  4187. match: /\(\)/
  4188. }, {
  4189. className: "params",
  4190. begin: /\(/,
  4191. end: /(?=\))/,
  4192. excludeBegin: !0,
  4193. endsParent: !0,
  4194. keywords: r
  4195. }]
  4196. },
  4197. m = [d, {
  4198. variants: [{
  4199. match: [/class\s+/, i, /\s+<\s+/, i]
  4200. }, {
  4201. match: [/\b(class|module)\s+/, i]
  4202. }],
  4203. scope: {
  4204. 2: "title.class",
  4205. 4: "title.class.inherited"
  4206. },
  4207. keywords: r
  4208. }, {
  4209. match: [/(include|extend)\s+/, i],
  4210. scope: {
  4211. 2: "title.class"
  4212. },
  4213. keywords: r
  4214. }, {
  4215. relevance: 0,
  4216. match: [i, /\.new[. (]/],
  4217. scope: {
  4218. 1: "title.class"
  4219. }
  4220. }, {
  4221. relevance: 0,
  4222. match: /\b[A-Z][A-Z_0-9]+\b/,
  4223. className: "variable.constant"
  4224. }, {
  4225. relevance: 0,
  4226. match: a,
  4227. scope: "title.class"
  4228. }, {
  4229. match: [/def/, /\s+/, t],
  4230. scope: {
  4231. 1: "keyword",
  4232. 3: "title.function"
  4233. },
  4234. contains: [b]
  4235. }, {
  4236. begin: e.IDENT_RE + "::"
  4237. }, {
  4238. className: "symbol",
  4239. begin: e.UNDERSCORE_IDENT_RE + "(!|\\?)?:",
  4240. relevance: 0
  4241. }, {
  4242. className: "symbol",
  4243. begin: ":(?!\\s)",
  4244. contains: [d, {
  4245. begin: t
  4246. }],
  4247. relevance: 0
  4248. }, u, {
  4249. className: "variable",
  4250. begin: "(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"
  4251. }, {
  4252. className: "params",
  4253. begin: /\|/,
  4254. end: /\|/,
  4255. excludeBegin: !0,
  4256. excludeEnd: !0,
  4257. relevance: 0,
  4258. keywords: r
  4259. }, {
  4260. begin: "(" + e.RE_STARTERS_RE + "|unless)\\s*",
  4261. keywords: "unless",
  4262. contains: [{
  4263. className: "regexp",
  4264. contains: [e.BACKSLASH_ESCAPE, c],
  4265. illegal: /\n/,
  4266. variants: [{
  4267. begin: "/",
  4268. end: "/[a-z]*"
  4269. }, {
  4270. begin: /%r\{/,
  4271. end: /\}[a-z]*/
  4272. }, {
  4273. begin: "%r\\(",
  4274. end: "\\)[a-z]*"
  4275. }, {
  4276. begin: "%r!",
  4277. end: "![a-z]*"
  4278. }, {
  4279. begin: "%r\\[",
  4280. end: "\\][a-z]*"
  4281. }]
  4282. }].concat(o, l),
  4283. relevance: 0
  4284. }].concat(o, l);
  4285. c.contains = m, b.contains = m;
  4286. const p = [{
  4287. begin: /^\s*=>/,
  4288. starts: {
  4289. end: "$",
  4290. contains: m
  4291. }
  4292. }, {
  4293. className: "meta.prompt",
  4294. begin: "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",
  4295. starts: {
  4296. end: "$",
  4297. keywords: r,
  4298. contains: m
  4299. }
  4300. }];
  4301. return l.unshift(o), {
  4302. name: "Ruby",
  4303. aliases: ["rb", "gemspec", "podspec", "thor", "irb"],
  4304. keywords: r,
  4305. illegal: /\/\*/,
  4306. contains: [e.SHEBANG({
  4307. binary: "ruby"
  4308. })].concat(p).concat(l).concat(m)
  4309. }
  4310. },
  4311. grmr_rust: e => {
  4312. const n = e.regex,
  4313. t = {
  4314. className: "title.function.invoke",
  4315. relevance: 0,
  4316. begin: n.concat(/\b/, /(?!let\b)/, e.IDENT_RE, n.lookahead(/\s*\(/))
  4317. },
  4318. a = "([ui](8|16|32|64|128|size)|f(32|64))?",
  4319. i = ["drop ", "Copy", "Send", "Sized", "Sync", "Drop", "Fn", "FnMut", "FnOnce", "ToOwned", "Clone", "Debug",
  4320. "PartialEq", "PartialOrd", "Eq", "Ord", "AsRef", "AsMut", "Into", "From", "Default", "Iterator", "Extend",
  4321. "IntoIterator", "DoubleEndedIterator", "ExactSizeIterator", "SliceConcatExt", "ToString", "assert!",
  4322. "assert_eq!", "bitflags!", "bytes!", "cfg!", "col!", "concat!", "concat_idents!", "debug_assert!",
  4323. "debug_assert_eq!", "env!", "panic!", "file!", "format!", "format_args!", "include_bytes!",
  4324. "include_str!", "line!", "local_data_key!", "module_path!", "option_env!", "print!", "println!",
  4325. "select!", "stringify!", "try!", "unimplemented!", "unreachable!", "vec!", "write!", "writeln!",
  4326. "macro_rules!", "assert_ne!", "debug_assert_ne!"
  4327. ],
  4328. r = ["i8", "i16", "i32", "i64", "i128", "isize", "u8", "u16", "u32", "u64", "u128", "usize", "f32", "f64",
  4329. "str", "char", "bool", "Box", "Option", "Result", "String", "Vec"
  4330. ];
  4331. return {
  4332. name: "Rust",
  4333. aliases: ["rs"],
  4334. keywords: {
  4335. $pattern: e.IDENT_RE + "!?",
  4336. type: r,
  4337. keyword: ["abstract", "as", "async", "await", "become", "box", "break", "const", "continue", "crate",
  4338. "do", "dyn", "else", "enum", "extern", "false", "final", "fn", "for", "if", "impl", "in", "let",
  4339. "loop", "macro", "match", "mod", "move", "mut", "override", "priv", "pub", "ref", "return", "self",
  4340. "Self", "static", "struct", "super", "trait", "true", "try", "type", "typeof", "unsafe", "unsized",
  4341. "use", "virtual", "where", "while", "yield"
  4342. ],
  4343. literal: ["true", "false", "Some", "None", "Ok", "Err"],
  4344. built_in: i
  4345. },
  4346. illegal: "</",
  4347. contains: [e.C_LINE_COMMENT_MODE, e.COMMENT("/\\*", "\\*/", {
  4348. contains: ["self"]
  4349. }), e.inherit(e.QUOTE_STRING_MODE, {
  4350. begin: /b?"/,
  4351. illegal: null
  4352. }), {
  4353. className: "string",
  4354. variants: [{
  4355. begin: /b?r(#*)"(.|\n)*?"\1(?!#)/
  4356. }, {
  4357. begin: /b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/
  4358. }]
  4359. }, {
  4360. className: "symbol",
  4361. begin: /'[a-zA-Z_][a-zA-Z0-9_]*/
  4362. }, {
  4363. className: "number",
  4364. variants: [{
  4365. begin: "\\b0b([01_]+)" + a
  4366. }, {
  4367. begin: "\\b0o([0-7_]+)" + a
  4368. }, {
  4369. begin: "\\b0x([A-Fa-f0-9_]+)" + a
  4370. }, {
  4371. begin: "\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)" + a
  4372. }],
  4373. relevance: 0
  4374. }, {
  4375. begin: [/fn/, /\s+/, e.UNDERSCORE_IDENT_RE],
  4376. className: {
  4377. 1: "keyword",
  4378. 3: "title.function"
  4379. }
  4380. }, {
  4381. className: "meta",
  4382. begin: "#!?\\[",
  4383. end: "\\]",
  4384. contains: [{
  4385. className: "string",
  4386. begin: /"/,
  4387. end: /"/
  4388. }]
  4389. }, {
  4390. begin: [/let/, /\s+/, /(?:mut\s+)?/, e.UNDERSCORE_IDENT_RE],
  4391. className: {
  4392. 1: "keyword",
  4393. 3: "keyword",
  4394. 4: "variable"
  4395. }
  4396. }, {
  4397. begin: [/for/, /\s+/, e.UNDERSCORE_IDENT_RE, /\s+/, /in/],
  4398. className: {
  4399. 1: "keyword",
  4400. 3: "variable",
  4401. 5: "keyword"
  4402. }
  4403. }, {
  4404. begin: [/type/, /\s+/, e.UNDERSCORE_IDENT_RE],
  4405. className: {
  4406. 1: "keyword",
  4407. 3: "title.class"
  4408. }
  4409. }, {
  4410. begin: [/(?:trait|enum|struct|union|impl|for)/, /\s+/, e.UNDERSCORE_IDENT_RE],
  4411. className: {
  4412. 1: "keyword",
  4413. 3: "title.class"
  4414. }
  4415. }, {
  4416. begin: e.IDENT_RE + "::",
  4417. keywords: {
  4418. keyword: "Self",
  4419. built_in: i,
  4420. type: r
  4421. }
  4422. }, {
  4423. className: "punctuation",
  4424. begin: "->"
  4425. }, t]
  4426. }
  4427. },
  4428. grmr_scss: e => {
  4429. const n = J(e),
  4430. t = te,
  4431. a = ne,
  4432. i = "@[a-z-]+",
  4433. r = {
  4434. className: "variable",
  4435. begin: "(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",
  4436. relevance: 0
  4437. };
  4438. return {
  4439. name: "SCSS",
  4440. case_insensitive: !0,
  4441. illegal: "[=/|']",
  4442. contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, n.CSS_NUMBER_MODE, {
  4443. className: "selector-id",
  4444. begin: "#[A-Za-z0-9_-]+",
  4445. relevance: 0
  4446. }, {
  4447. className: "selector-class",
  4448. begin: "\\.[A-Za-z0-9_-]+",
  4449. relevance: 0
  4450. }, n.ATTRIBUTE_SELECTOR_MODE, {
  4451. className: "selector-tag",
  4452. begin: "\\b(" + Y.join("|") + ")\\b",
  4453. relevance: 0
  4454. }, {
  4455. className: "selector-pseudo",
  4456. begin: ":(" + a.join("|") + ")"
  4457. }, {
  4458. className: "selector-pseudo",
  4459. begin: ":(:)?(" + t.join("|") + ")"
  4460. }, r, {
  4461. begin: /\(/,
  4462. end: /\)/,
  4463. contains: [n.CSS_NUMBER_MODE]
  4464. }, n.CSS_VARIABLE, {
  4465. className: "attribute",
  4466. begin: "\\b(" + ae.join("|") + ")\\b"
  4467. }, {
  4468. begin: "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
  4469. }, {
  4470. begin: /:/,
  4471. end: /[;}{]/,
  4472. relevance: 0,
  4473. contains: [n.BLOCK_COMMENT, r, n.HEXCOLOR, n.CSS_NUMBER_MODE, e.QUOTE_STRING_MODE, e.APOS_STRING_MODE,
  4474. n.IMPORTANT, n.FUNCTION_DISPATCH
  4475. ]
  4476. }, {
  4477. begin: "@(page|font-face)",
  4478. keywords: {
  4479. $pattern: i,
  4480. keyword: "@page @font-face"
  4481. }
  4482. }, {
  4483. begin: "@",
  4484. end: "[{;]",
  4485. returnBegin: !0,
  4486. keywords: {
  4487. $pattern: /[a-z-]+/,
  4488. keyword: "and or not only",
  4489. attribute: ee.join(" ")
  4490. },
  4491. contains: [{
  4492. begin: i,
  4493. className: "keyword"
  4494. }, {
  4495. begin: /[a-z-]+(?=:)/,
  4496. className: "attribute"
  4497. }, r, e.QUOTE_STRING_MODE, e.APOS_STRING_MODE, n.HEXCOLOR, n.CSS_NUMBER_MODE]
  4498. }, n.FUNCTION_DISPATCH]
  4499. }
  4500. },
  4501. grmr_shell: e => ({
  4502. name: "Shell Session",
  4503. aliases: ["console", "shellsession"],
  4504. contains: [{
  4505. className: "meta.prompt",
  4506. begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,
  4507. starts: {
  4508. end: /[^\\](?=\s*$)/,
  4509. subLanguage: "bash"
  4510. }
  4511. }]
  4512. }),
  4513. grmr_sql: e => {
  4514. const n = e.regex,
  4515. t = e.COMMENT("--", "$"),
  4516. a = ["true", "false", "unknown"],
  4517. i = ["bigint", "binary", "blob", "boolean", "char", "character", "clob", "date", "dec", "decfloat",
  4518. "decimal", "float", "int", "integer", "interval", "nchar", "nclob", "national", "numeric", "real", "row",
  4519. "smallint", "time", "timestamp", "varchar", "varying", "varbinary"
  4520. ],
  4521. r = ["abs", "acos", "array_agg", "asin", "atan", "avg", "cast", "ceil", "ceiling", "coalesce", "corr",
  4522. "cos", "cosh", "count", "covar_pop", "covar_samp", "cume_dist", "dense_rank", "deref", "element", "exp",
  4523. "extract", "first_value", "floor", "json_array", "json_arrayagg", "json_exists", "json_object",
  4524. "json_objectagg", "json_query", "json_table", "json_table_primitive", "json_value", "lag", "last_value",
  4525. "lead", "listagg", "ln", "log", "log10", "lower", "max", "min", "mod", "nth_value", "ntile", "nullif",
  4526. "percent_rank", "percentile_cont", "percentile_disc", "position", "position_regex", "power", "rank",
  4527. "regr_avgx", "regr_avgy", "regr_count", "regr_intercept", "regr_r2", "regr_slope", "regr_sxx", "regr_sxy",
  4528. "regr_syy", "row_number", "sin", "sinh", "sqrt", "stddev_pop", "stddev_samp", "substring",
  4529. "substring_regex", "sum", "tan", "tanh", "translate", "translate_regex", "treat", "trim", "trim_array",
  4530. "unnest", "upper", "value_of", "var_pop", "var_samp", "width_bucket"
  4531. ],
  4532. s = ["create table", "insert into", "primary key", "foreign key", "not null", "alter table",
  4533. "add constraint", "grouping sets", "on overflow", "character set", "respect nulls", "ignore nulls",
  4534. "nulls first", "nulls last", "depth first", "breadth first"
  4535. ],
  4536. o = r,
  4537. l = ["abs", "acos", "all", "allocate", "alter", "and", "any", "are", "array", "array_agg",
  4538. "array_max_cardinality", "as", "asensitive", "asin", "asymmetric", "at", "atan", "atomic",
  4539. "authorization", "avg", "begin", "begin_frame", "begin_partition", "between", "bigint", "binary", "blob",
  4540. "boolean", "both", "by", "call", "called", "cardinality", "cascaded", "case", "cast", "ceil", "ceiling",
  4541. "char", "char_length", "character", "character_length", "check", "classifier", "clob", "close",
  4542. "coalesce", "collate", "collect", "column", "commit", "condition", "connect", "constraint", "contains",
  4543. "convert", "copy", "corr", "corresponding", "cos", "cosh", "count", "covar_pop", "covar_samp", "create",
  4544. "cross", "cube", "cume_dist", "current", "current_catalog", "current_date",
  4545. "current_default_transform_group", "current_path", "current_role", "current_row", "current_schema",
  4546. "current_time", "current_timestamp", "current_path", "current_role", "current_transform_group_for_type",
  4547. "current_user", "cursor", "cycle", "date", "day", "deallocate", "dec", "decimal", "decfloat", "declare",
  4548. "default", "define", "delete", "dense_rank", "deref", "describe", "deterministic", "disconnect",
  4549. "distinct", "double", "drop", "dynamic", "each", "element", "else", "empty", "end", "end_frame",
  4550. "end_partition", "end-exec", "equals", "escape", "every", "except", "exec", "execute", "exists", "exp",
  4551. "external", "extract", "false", "fetch", "filter", "first_value", "float", "floor", "for", "foreign",
  4552. "frame_row", "free", "from", "full", "function", "fusion", "get", "global", "grant", "group", "grouping",
  4553. "groups", "having", "hold", "hour", "identity", "in", "indicator", "initial", "inner", "inout",
  4554. "insensitive", "insert", "int", "integer", "intersect", "intersection", "interval", "into", "is", "join",
  4555. "json_array", "json_arrayagg", "json_exists", "json_object", "json_objectagg", "json_query", "json_table",
  4556. "json_table_primitive", "json_value", "lag", "language", "large", "last_value", "lateral", "lead",
  4557. "leading", "left", "like", "like_regex", "listagg", "ln", "local", "localtime", "localtimestamp", "log",
  4558. "log10", "lower", "match", "match_number", "match_recognize", "matches", "max", "member", "merge",
  4559. "method", "min", "minute", "mod", "modifies", "module", "month", "multiset", "national", "natural",
  4560. "nchar", "nclob", "new", "no", "none", "normalize", "not", "nth_value", "ntile", "null", "nullif",
  4561. "numeric", "octet_length", "occurrences_regex", "of", "offset", "old", "omit", "on", "one", "only",
  4562. "open", "or", "order", "out", "outer", "over", "overlaps", "overlay", "parameter", "partition", "pattern",
  4563. "per", "percent", "percent_rank", "percentile_cont", "percentile_disc", "period", "portion", "position",
  4564. "position_regex", "power", "precedes", "precision", "prepare", "primary", "procedure", "ptf", "range",
  4565. "rank", "reads", "real", "recursive", "ref", "references", "referencing", "regr_avgx", "regr_avgy",
  4566. "regr_count", "regr_intercept", "regr_r2", "regr_slope", "regr_sxx", "regr_sxy", "regr_syy", "release",
  4567. "result", "return", "returns", "revoke", "right", "rollback", "rollup", "row", "row_number", "rows",
  4568. "running", "savepoint", "scope", "scroll", "search", "second", "seek", "select", "sensitive",
  4569. "session_user", "set", "show", "similar", "sin", "sinh", "skip", "smallint", "some", "specific",
  4570. "specifictype", "sql", "sqlexception", "sqlstate", "sqlwarning", "sqrt", "start", "static", "stddev_pop",
  4571. "stddev_samp", "submultiset", "subset", "substring", "substring_regex", "succeeds", "sum", "symmetric",
  4572. "system", "system_time", "system_user", "table", "tablesample", "tan", "tanh", "then", "time",
  4573. "timestamp", "timezone_hour", "timezone_minute", "to", "trailing", "translate", "translate_regex",
  4574. "translation", "treat", "trigger", "trim", "trim_array", "true", "truncate", "uescape", "union", "unique",
  4575. "unknown", "unnest", "update", "upper", "user", "using", "value", "values", "value_of", "var_pop",
  4576. "var_samp", "varbinary", "varchar", "varying", "versioning", "when", "whenever", "where", "width_bucket",
  4577. "window", "with", "within", "without", "year", "add", "asc", "collation", "desc", "final", "first",
  4578. "last", "view"
  4579. ].filter((e => !r.includes(e))),
  4580. c = {
  4581. begin: n.concat(/\b/, n.either(...o), /\s*\(/),
  4582. relevance: 0,
  4583. keywords: {
  4584. built_in: o
  4585. }
  4586. };
  4587. return {
  4588. name: "SQL",
  4589. case_insensitive: !0,
  4590. illegal: /[{}]|<\//,
  4591. keywords: {
  4592. $pattern: /\b[\w\.]+/,
  4593. keyword: ((e, {
  4594. exceptions: n,
  4595. when: t
  4596. } = {}) => {
  4597. const a = t;
  4598. return n = n || [], e.map((e => e.match(/\|\d+$/) || n.includes(e) ? e : a(e) ? e + "|0" : e))
  4599. })(l, {
  4600. when: e => e.length < 3
  4601. }),
  4602. literal: a,
  4603. type: i,
  4604. built_in: ["current_catalog", "current_date", "current_default_transform_group", "current_path",
  4605. "current_role", "current_schema", "current_transform_group_for_type", "current_user", "session_user",
  4606. "system_time", "system_user", "current_time", "localtime", "current_timestamp", "localtimestamp"
  4607. ]
  4608. },
  4609. contains: [{
  4610. begin: n.either(...s),
  4611. relevance: 0,
  4612. keywords: {
  4613. $pattern: /[\w\.]+/,
  4614. keyword: l.concat(s),
  4615. literal: a,
  4616. type: i
  4617. }
  4618. }, {
  4619. className: "type",
  4620. begin: n.either("double precision", "large object", "with timezone", "without timezone")
  4621. }, c, {
  4622. className: "variable",
  4623. begin: /@[a-z0-9]+/
  4624. }, {
  4625. className: "string",
  4626. variants: [{
  4627. begin: /'/,
  4628. end: /'/,
  4629. contains: [{
  4630. begin: /''/
  4631. }]
  4632. }]
  4633. }, {
  4634. begin: /"/,
  4635. end: /"/,
  4636. contains: [{
  4637. begin: /""/
  4638. }]
  4639. }, e.C_NUMBER_MODE, e.C_BLOCK_COMMENT_MODE, t, {
  4640. className: "operator",
  4641. begin: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,
  4642. relevance: 0
  4643. }]
  4644. }
  4645. },
  4646. grmr_swift: e => {
  4647. const n = {
  4648. match: /\s+/,
  4649. relevance: 0
  4650. },
  4651. t = e.COMMENT("/\\*", "\\*/", {
  4652. contains: ["self"]
  4653. }),
  4654. a = [e.C_LINE_COMMENT_MODE, t],
  4655. i = {
  4656. match: [/\./, p(...Ee, ...ye)],
  4657. className: {
  4658. 2: "keyword"
  4659. }
  4660. },
  4661. r = {
  4662. match: m(/\./, p(...Ne)),
  4663. relevance: 0
  4664. },
  4665. s = Ne.filter((e => "string" == typeof e)).concat(["_|0"]),
  4666. o = {
  4667. variants: [{
  4668. className: "keyword",
  4669. match: p(...Ne.filter((e => "string" != typeof e)).concat(we).map(fe), ...ye)
  4670. }]
  4671. },
  4672. l = {
  4673. $pattern: p(/\b\w+/, /#\w+/),
  4674. keyword: s.concat(ke),
  4675. literal: ve
  4676. },
  4677. c = [i, r, o],
  4678. d = [{
  4679. match: m(/\./, p(...xe)),
  4680. relevance: 0
  4681. }, {
  4682. className: "built_in",
  4683. match: m(/\b/, p(...xe), /(?=\()/)
  4684. }],
  4685. u = {
  4686. match: /->/,
  4687. relevance: 0
  4688. },
  4689. b = [u, {
  4690. className: "operator",
  4691. relevance: 0,
  4692. variants: [{
  4693. match: Ae
  4694. }, {
  4695. match: `\\.(\\.|${Se})+`
  4696. }]
  4697. }],
  4698. _ = "([0-9a-fA-F]_*)+",
  4699. h = {
  4700. className: "number",
  4701. relevance: 0,
  4702. variants: [{
  4703. match: "\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"
  4704. }, {
  4705. match: `\\b0x(${_})(\\.(${_}))?([pP][+-]?(([0-9]_*)+))?\\b`
  4706. }, {
  4707. match: /\b0o([0-7]_*)+\b/
  4708. }, {
  4709. match: /\b0b([01]_*)+\b/
  4710. }]
  4711. },
  4712. f = (e = "") => ({
  4713. className: "subst",
  4714. variants: [{
  4715. match: m(/\\/, e, /[0\\tnr"']/)
  4716. }, {
  4717. match: m(/\\/, e, /u\{[0-9a-fA-F]{1,8}\}/)
  4718. }]
  4719. }),
  4720. E = (e = "") => ({
  4721. className: "subst",
  4722. match: m(/\\/, e, /[\t ]*(?:[\r\n]|\r\n)/)
  4723. }),
  4724. y = (e = "") => ({
  4725. className: "subst",
  4726. label: "interpol",
  4727. begin: m(/\\/, e, /\(/),
  4728. end: /\)/
  4729. }),
  4730. w = (e = "") => ({
  4731. begin: m(e, /"""/),
  4732. end: m(/"""/, e),
  4733. contains: [f(e), E(e), y(e)]
  4734. }),
  4735. N = (e = "") => ({
  4736. begin: m(e, /"/),
  4737. end: m(/"/, e),
  4738. contains: [f(e), y(e)]
  4739. }),
  4740. v = {
  4741. className: "string",
  4742. variants: [w(), w("#"), w("##"), w("###"), N(), N("#"), N("##"), N("###")]
  4743. },
  4744. O = {
  4745. match: m(/`/, Re, /`/)
  4746. },
  4747. k = [O, {
  4748. className: "variable",
  4749. match: /\$\d+/
  4750. }, {
  4751. className: "variable",
  4752. match: `\\$${Te}+`
  4753. }],
  4754. x = [{
  4755. match: /(@|#(un)?)available/,
  4756. className: "keyword",
  4757. starts: {
  4758. contains: [{
  4759. begin: /\(/,
  4760. end: /\)/,
  4761. keywords: Le,
  4762. contains: [...b, h, v]
  4763. }]
  4764. }
  4765. }, {
  4766. className: "keyword",
  4767. match: m(/@/, p(...Ie))
  4768. }, {
  4769. className: "meta",
  4770. match: m(/@/, Re)
  4771. }],
  4772. M = {
  4773. match: g(/\b[A-Z]/),
  4774. relevance: 0,
  4775. contains: [{
  4776. className: "type",
  4777. match: m(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, Te, "+")
  4778. }, {
  4779. className: "type",
  4780. match: De,
  4781. relevance: 0
  4782. }, {
  4783. match: /[?!]+/,
  4784. relevance: 0
  4785. }, {
  4786. match: /\.\.\./,
  4787. relevance: 0
  4788. }, {
  4789. match: m(/\s+&\s+/, g(De)),
  4790. relevance: 0
  4791. }]
  4792. },
  4793. S = {
  4794. begin: /</,
  4795. end: />/,
  4796. keywords: l,
  4797. contains: [...a, ...c, ...x, u, M]
  4798. };
  4799. M.contains.push(S);
  4800. const A = {
  4801. begin: /\(/,
  4802. end: /\)/,
  4803. relevance: 0,
  4804. keywords: l,
  4805. contains: ["self", {
  4806. match: m(Re, /\s*:/),
  4807. keywords: "_|0",
  4808. relevance: 0
  4809. }, ...a, ...c, ...d, ...b, h, v, ...k, ...x, M]
  4810. },
  4811. C = {
  4812. begin: /</,
  4813. end: />/,
  4814. contains: [...a, M]
  4815. },
  4816. T = {
  4817. begin: /\(/,
  4818. end: /\)/,
  4819. keywords: l,
  4820. contains: [{
  4821. begin: p(g(m(Re, /\s*:/)), g(m(Re, /\s+/, Re, /\s*:/))),
  4822. end: /:/,
  4823. relevance: 0,
  4824. contains: [{
  4825. className: "keyword",
  4826. match: /\b_\b/
  4827. }, {
  4828. className: "params",
  4829. match: Re
  4830. }]
  4831. }, ...a, ...c, ...b, h, v, ...x, M, A],
  4832. endsParent: !0,
  4833. illegal: /["']/
  4834. },
  4835. R = {
  4836. match: [/func/, /\s+/, p(O.match, Re, Ae)],
  4837. className: {
  4838. 1: "keyword",
  4839. 3: "title.function"
  4840. },
  4841. contains: [C, T, n],
  4842. illegal: [/\[/, /%/]
  4843. },
  4844. D = {
  4845. match: [/\b(?:subscript|init[?!]?)/, /\s*(?=[<(])/],
  4846. className: {
  4847. 1: "keyword"
  4848. },
  4849. contains: [C, T, n],
  4850. illegal: /\[|%/
  4851. },
  4852. I = {
  4853. match: [/operator/, /\s+/, Ae],
  4854. className: {
  4855. 1: "keyword",
  4856. 3: "title"
  4857. }
  4858. },
  4859. L = {
  4860. begin: [/precedencegroup/, /\s+/, De],
  4861. className: {
  4862. 1: "keyword",
  4863. 3: "title"
  4864. },
  4865. contains: [M],
  4866. keywords: [...Oe, ...ve],
  4867. end: /}/
  4868. };
  4869. for (const e of v.variants) {
  4870. const n = e.contains.find((e => "interpol" === e.label));
  4871. n.keywords = l;
  4872. const t = [...c, ...d, ...b, h, v, ...k];
  4873. n.contains = [...t, {
  4874. begin: /\(/,
  4875. end: /\)/,
  4876. contains: ["self", ...t]
  4877. }]
  4878. }
  4879. return {
  4880. name: "Swift",
  4881. keywords: l,
  4882. contains: [...a, R, D, {
  4883. beginKeywords: "struct protocol class extension enum actor",
  4884. end: "\\{",
  4885. excludeEnd: !0,
  4886. keywords: l,
  4887. contains: [e.inherit(e.TITLE_MODE, {
  4888. className: "title.class",
  4889. begin: /[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/
  4890. }), ...c]
  4891. }, I, L, {
  4892. beginKeywords: "import",
  4893. end: /$/,
  4894. contains: [...a],
  4895. relevance: 0
  4896. }, ...c, ...d, ...b, h, v, ...k, ...x, M, A]
  4897. }
  4898. },
  4899. grmr_typescript: e => {
  4900. const n = he(e),
  4901. t = ["any", "void", "number", "boolean", "string", "object", "never", "symbol", "bigint", "unknown"],
  4902. a = {
  4903. beginKeywords: "namespace",
  4904. end: /\{/,
  4905. excludeEnd: !0,
  4906. contains: [n.exports.CLASS_REFERENCE]
  4907. },
  4908. i = {
  4909. beginKeywords: "interface",
  4910. end: /\{/,
  4911. excludeEnd: !0,
  4912. keywords: {
  4913. keyword: "interface extends",
  4914. built_in: t
  4915. },
  4916. contains: [n.exports.CLASS_REFERENCE]
  4917. },
  4918. r = {
  4919. $pattern: ce,
  4920. keyword: de.concat(["type", "namespace", "interface", "public", "private", "protected", "implements",
  4921. "declare", "abstract", "readonly", "enum", "override"
  4922. ]),
  4923. literal: ge,
  4924. built_in: _e.concat(t),
  4925. "variable.language": pe
  4926. },
  4927. s = {
  4928. className: "meta",
  4929. begin: "@[A-Za-z$_][0-9A-Za-z$_]*"
  4930. },
  4931. o = (e, n, t) => {
  4932. const a = e.contains.findIndex((e => e.label === n));
  4933. if (-1 === a) throw Error("can not find mode to replace");
  4934. e.contains.splice(a, 1, t)
  4935. };
  4936. return Object.assign(n.keywords, r),
  4937. n.exports.PARAMS_CONTAINS.push(s), n.contains = n.contains.concat([s, a, i]),
  4938. o(n, "shebang", e.SHEBANG()), o(n, "use_strict", {
  4939. className: "meta",
  4940. relevance: 10,
  4941. begin: /^\s*['"]use strict['"]/
  4942. }), n.contains.find((e => "func.def" === e.label)).relevance = 0, Object.assign(n, {
  4943. name: "TypeScript",
  4944. aliases: ["ts", "tsx"]
  4945. }), n
  4946. },
  4947. grmr_vbnet: e => {
  4948. const n = e.regex,
  4949. t = /\d{1,2}\/\d{1,2}\/\d{4}/,
  4950. a = /\d{4}-\d{1,2}-\d{1,2}/,
  4951. i = /(\d|1[012])(:\d+){0,2} *(AM|PM)/,
  4952. r = /\d{1,2}(:\d{1,2}){1,2}/,
  4953. s = {
  4954. className: "literal",
  4955. variants: [{
  4956. begin: n.concat(/# */, n.either(a, t), / *#/)
  4957. }, {
  4958. begin: n.concat(/# */, r, / *#/)
  4959. }, {
  4960. begin: n.concat(/# */, i, / *#/)
  4961. }, {
  4962. begin: n.concat(/# */, n.either(a, t), / +/, n.either(i, r), / *#/)
  4963. }]
  4964. },
  4965. o = e.COMMENT(/'''/, /$/, {
  4966. contains: [{
  4967. className: "doctag",
  4968. begin: /<\/?/,
  4969. end: />/
  4970. }]
  4971. }),
  4972. l = e.COMMENT(null, /$/, {
  4973. variants: [{
  4974. begin: /'/
  4975. }, {
  4976. begin: /([\t ]|^)REM(?=\s)/
  4977. }]
  4978. });
  4979. return {
  4980. name: "Visual Basic .NET",
  4981. aliases: ["vb"],
  4982. case_insensitive: !0,
  4983. classNameAliases: {
  4984. label: "symbol"
  4985. },
  4986. keywords: {
  4987. keyword: "addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",
  4988. built_in: "addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",
  4989. type: "boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",
  4990. literal: "true false nothing"
  4991. },
  4992. illegal: "//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",
  4993. contains: [{
  4994. className: "string",
  4995. begin: /"(""|[^/n])"C\b/
  4996. }, {
  4997. className: "string",
  4998. begin: /"/,
  4999. end: /"/,
  5000. illegal: /\n/,
  5001. contains: [{
  5002. begin: /""/
  5003. }]
  5004. }, s, {
  5005. className: "number",
  5006. relevance: 0,
  5007. variants: [{
  5008. begin: /\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/
  5009. }, {
  5010. begin: /\b\d[\d_]*((U?[SIL])|[%&])?/
  5011. }, {
  5012. begin: /&H[\dA-F_]+((U?[SIL])|[%&])?/
  5013. }, {
  5014. begin: /&O[0-7_]+((U?[SIL])|[%&])?/
  5015. }, {
  5016. begin: /&B[01_]+((U?[SIL])|[%&])?/
  5017. }]
  5018. }, {
  5019. className: "label",
  5020. begin: /^\w+:/
  5021. }, o, l, {
  5022. className: "meta",
  5023. begin: /[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,
  5024. end: /$/,
  5025. keywords: {
  5026. keyword: "const disable else elseif enable end externalsource if region then"
  5027. },
  5028. contains: [l]
  5029. }]
  5030. }
  5031. },
  5032. grmr_wasm: e => {
  5033. e.regex;
  5034. const n = e.COMMENT(/\(;/, /;\)/);
  5035. return n.contains.push("self"), {
  5036. name: "WebAssembly",
  5037. keywords: {
  5038. $pattern: /[\w.]+/,
  5039. keyword: ["anyfunc", "block", "br", "br_if", "br_table", "call", "call_indirect", "data", "drop",
  5040. "elem", "else", "end", "export", "func", "global.get", "global.set", "local.get", "local.set",
  5041. "local.tee", "get_global", "get_local", "global", "if", "import", "local", "loop", "memory",
  5042. "memory.grow", "memory.size", "module", "mut", "nop", "offset", "param", "result", "return",
  5043. "select", "set_global", "set_local", "start", "table", "tee_local", "then", "type", "unreachable"
  5044. ]
  5045. },
  5046. contains: [e.COMMENT(/;;/, /$/), n, {
  5047. match: [/(?:offset|align)/, /\s*/, /=/],
  5048. className: {
  5049. 1: "keyword",
  5050. 3: "operator"
  5051. }
  5052. }, {
  5053. className: "variable",
  5054. begin: /\$[\w_]+/
  5055. }, {
  5056. match: /(\((?!;)|\))+/,
  5057. className: "punctuation",
  5058. relevance: 0
  5059. }, {
  5060. begin: [/(?:func|call|call_indirect)/, /\s+/, /\$[^\s)]+/],
  5061. className: {
  5062. 1: "keyword",
  5063. 3: "title.function"
  5064. }
  5065. }, e.QUOTE_STRING_MODE, {
  5066. match: /(i32|i64|f32|f64)(?!\.)/,
  5067. className: "type"
  5068. }, {
  5069. className: "keyword",
  5070. match: /\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/
  5071. }, {
  5072. className: "number",
  5073. relevance: 0,
  5074. match: /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/
  5075. }]
  5076. }
  5077. },
  5078. grmr_yaml: e => {
  5079. const n = "true false yes no null",
  5080. t = "[\\w#;/?:@&=+$,.~*'()[\\]]+",
  5081. a = {
  5082. className: "string",
  5083. relevance: 0,
  5084. variants: [{
  5085. begin: /'/,
  5086. end: /'/
  5087. }, {
  5088. begin: /"/,
  5089. end: /"/
  5090. }, {
  5091. begin: /\S+/
  5092. }],
  5093. contains: [e.BACKSLASH_ESCAPE, {
  5094. className: "template-variable",
  5095. variants: [{
  5096. begin: /\{\{/,
  5097. end: /\}\}/
  5098. }, {
  5099. begin: /%\{/,
  5100. end: /\}/
  5101. }]
  5102. }]
  5103. },
  5104. i = e.inherit(a, {
  5105. variants: [{
  5106. begin: /'/,
  5107. end: /'/
  5108. }, {
  5109. begin: /"/,
  5110. end: /"/
  5111. }, {
  5112. begin: /[^\s,{}[\]]+/
  5113. }]
  5114. }),
  5115. r = {
  5116. end: ",",
  5117. endsWithParent: !0,
  5118. excludeEnd: !0,
  5119. keywords: n,
  5120. relevance: 0
  5121. },
  5122. s = {
  5123. begin: /\{/,
  5124. end: /\}/,
  5125. contains: [r],
  5126. illegal: "\\n",
  5127. relevance: 0
  5128. },
  5129. o = {
  5130. begin: "\\[",
  5131. end: "\\]",
  5132. contains: [r],
  5133. illegal: "\\n",
  5134. relevance: 0
  5135. },
  5136. l = [{
  5137. className: "attr",
  5138. variants: [{
  5139. begin: "\\w[\\w :\\/.-]*:(?=[ \t]|$)"
  5140. }, {
  5141. begin: '"\\w[\\w :\\/.-]*":(?=[ \t]|$)'
  5142. }, {
  5143. begin: "'\\w[\\w :\\/.-]*':(?=[ \t]|$)"
  5144. }]
  5145. }, {
  5146. className: "meta",
  5147. begin: "^---\\s*$",
  5148. relevance: 10
  5149. }, {
  5150. className: "string",
  5151. begin: "[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"
  5152. }, {
  5153. begin: "<%[%=-]?",
  5154. end: "[%-]?%>",
  5155. subLanguage: "ruby",
  5156. excludeBegin: !0,
  5157. excludeEnd: !0,
  5158. relevance: 0
  5159. }, {
  5160. className: "type",
  5161. begin: "!\\w+!" + t
  5162. }, {
  5163. className: "type",
  5164. begin: "!<" + t + ">"
  5165. }, {
  5166. className: "type",
  5167. begin: "!" + t
  5168. }, {
  5169. className: "type",
  5170. begin: "!!" + t
  5171. }, {
  5172. className: "meta",
  5173. begin: "&" + e.UNDERSCORE_IDENT_RE + "$"
  5174. }, {
  5175. className: "meta",
  5176. begin: "\\*" + e.UNDERSCORE_IDENT_RE + "$"
  5177. }, {
  5178. className: "bullet",
  5179. begin: "-(?=[ ]|$)",
  5180. relevance: 0
  5181. }, e.HASH_COMMENT_MODE, {
  5182. beginKeywords: n,
  5183. keywords: {
  5184. literal: n
  5185. }
  5186. }, {
  5187. className: "number",
  5188. begin: "\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"
  5189. }, {
  5190. className: "number",
  5191. begin: e.C_NUMBER_RE + "\\b",
  5192. relevance: 0
  5193. }, s, o, a],
  5194. c = [...l];
  5195. return c.pop(), c.push(i), r.contains = c, {
  5196. name: "YAML",
  5197. case_insensitive: !0,
  5198. aliases: ["yml"],
  5199. contains: l
  5200. }
  5201. }
  5202. });
  5203. const $e = V;
  5204. for (const e of Object.keys(Be)) {
  5205. const n = e.replace("grmr_", "").replace("_", "-");
  5206. $e.registerLanguage(n, Be[e])
  5207. }
  5208. export {
  5209. $e as
  5210. default
  5211. };