From d994676c860b2dadb2869ee92c03e90ef52c032c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 18:52:34 +0000 Subject: [PATCH] Deploy to GitHub pages --- .nojekyll | 0 404.html | 22 + assets/app.DEImvWHW.js | 1 + assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js | 17 + assets/chunks/abap.DXFkqnOI.js | 816 +++++++++++++++++ assets/chunks/actionscript-3.D6NljDpC.js | 1 + assets/chunks/ada.CowR2XfX.js | 1 + assets/chunks/andromeeda.YxQm0tCS.js | 1 + assets/chunks/angular-html.833w9gUK.js | 16 + assets/chunks/angular-ts.BCBvF5Sf.js | 666 ++++++++++++++ assets/chunks/apache.rS0jd3Ly.js | 1 + assets/chunks/apex.Sfo2eW0G.js | 274 ++++++ assets/chunks/apl.7kPAH7yp.js | 87 ++ assets/chunks/applescript.B4yE-MfL.js | 38 + assets/chunks/ara.CG4fK2Nq.js | 21 + assets/chunks/asm.PWN5J14X.js | 1 + assets/chunks/astro.Dtt22nl1.js | 32 + assets/chunks/aurora-x.BaWyeHV_.js | 1 + assets/chunks/awk.i0IPvypD.js | 1 + assets/chunks/ayu-dark.Bn5gmY5k.js | 1 + assets/chunks/ballerina.T9ysyp6P.js | 62 ++ assets/chunks/bat.BPiaQZfK.js | 1 + assets/chunks/beancount.Urb1RsFe.js | 1 + assets/chunks/berry.CxrokwfH.js | 1 + assets/chunks/bibtex.BaedD2tq.js | 1 + assets/chunks/bicep.3ghuYFLd.js | 1 + assets/chunks/blade.Ge7MpD7w.js | 831 ++++++++++++++++++ assets/chunks/c.RCJZWN-0.js | 81 ++ assets/chunks/cadence.Bgpqy2XC.js | 1 + assets/chunks/catppuccin-frappe.CSPeAESR.js | 1 + assets/chunks/catppuccin-latte.BYdKNJ10.js | 1 + .../chunks/catppuccin-macchiato.DVLwECkk.js | 1 + assets/chunks/catppuccin-mocha.CEfge3mM.js | 1 + assets/chunks/clarity.CIekO_uJ.js | 1 + assets/chunks/clojure.BF6G6X0H.js | 1 + assets/chunks/cmake.DXZpi2gR.js | 1 + assets/chunks/cobol.Be8n44jy.js | 1 + assets/chunks/codeql.BOpLLL-w.js | 1 + assets/chunks/coffee.t_LrLW_f.js | 100 +++ assets/chunks/common-lisp.CX2EUjC8.js | 301 +++++++ assets/chunks/cpp.BnO_O5bK.js | 186 ++++ assets/chunks/crystal.DUeHF1Px.js | 25 + assets/chunks/csharp.DISxKEhY.js | 756 ++++++++++++++++ assets/chunks/css.CbYhyuC0.js | 505 +++++++++++ assets/chunks/csv.B2DkETJQ.js | 1 + assets/chunks/cue.C6Aznpr-.js | 1 + assets/chunks/cypher.ByMv4Xf1.js | 1 + assets/chunks/d.PifQWv0n.js | 1 + assets/chunks/dark-plus.KEYLhlmT.js | 1 + assets/chunks/dart.DZLoTQm4.js | 1 + assets/chunks/dax.DsfXcHUZ.js | 29 + assets/chunks/desktop.D71BffLY.js | 1 + assets/chunks/diff.DvyTQcux.js | 1 + assets/chunks/docker.DNR26wTC.js | 1 + assets/chunks/dracula-soft.9B1nZgL-.js | 1 + assets/chunks/dracula.DGO8GyiP.js | 1 + assets/chunks/dream-maker.Eh5U-gDp.js | 52 ++ assets/chunks/elixir.CpdO1lki.js | 17 + assets/chunks/elm.DbZvrHdh.js | 1 + assets/chunks/erb.C8njeWMx.js | 1 + assets/chunks/erlang.DS9ZWoKD.js | 1 + assets/chunks/fennel.C6XIsc4F.js | 1 + assets/chunks/fish.DfeQjIbs.js | 5 + assets/chunks/fortran-fixed-form.Cx0tWteX.js | 1 + assets/chunks/fortran-free-form.D6pmzCqS.js | 1 + assets/chunks/framework.BkavzUpE.js | 17 + assets/chunks/fsharp.COWl2xCs.js | 1 + assets/chunks/gdresource.Dyo1-XBj.js | 1 + assets/chunks/gdscript.CoEqzGFw.js | 44 + assets/chunks/gdshader.B_SUYfiV.js | 1 + assets/chunks/gherkin.DjTlIhuc.js | 1 + assets/chunks/git-commit.aPmGthaS.js | 1 + assets/chunks/git-rebase.wSeoO_tD.js | 1 + assets/chunks/github-dark-default.BXF7Vm5l.js | 1 + assets/chunks/github-dark-dimmed.CRDKj6ck.js | 1 + assets/chunks/github-dark.CzPA46E-.js | 1 + .../chunks/github-light-default.UREJT2Bw.js | 1 + assets/chunks/github-light.CRlnGVMD.js | 1 + assets/chunks/gleam.Dz2Ca8U2.js | 1 + assets/chunks/glimmer-js.CKLJpqca.js | 13 + assets/chunks/glimmer-ts.Bp7XmXVh.js | 13 + assets/chunks/glsl.-GlVTnW0.js | 1 + assets/chunks/gnuplot.nclm9rTJ.js | 266 ++++++ assets/chunks/go.BAMIS8DD.js | 1 + assets/chunks/graphql.C4V4xKFR.js | 4 + assets/chunks/groovy.wChcbJ1V.js | 37 + assets/chunks/hack.B30vrIHT.js | 86 ++ assets/chunks/haml.RaSm5nLU.js | 1 + assets/chunks/handlebars.W0zz18bm.js | 1 + assets/chunks/haskell.DAGYewaG.js | 559 ++++++++++++ assets/chunks/hcl.CudBhkk3.js | 1 + assets/chunks/hjson.DZqG9GXz.js | 50 ++ assets/chunks/hlsl.DmDrTTlz.js | 1 + assets/chunks/houston.CZZ6oYdA.js | 1 + assets/chunks/html-derivative.fiapQfxX.js | 1 + assets/chunks/html.CuK0VrWf.js | 74 ++ assets/chunks/http.DvBm4YdT.js | 1 + assets/chunks/hy.C3qJFuQy.js | 3 + assets/chunks/imba.DxX1Vuw3.js | 223 +++++ assets/chunks/index.D8X3TFxX.js | 13 + assets/chunks/ini.DeVv6D4_.js | 1 + assets/chunks/java.ClXEvkw9.js | 68 ++ assets/chunks/javascript.Dch3xQiY.js | 699 +++++++++++++++ assets/chunks/jinja.DWD-OL5F.js | 1 + assets/chunks/jison.CHwQvgii.js | 1 + assets/chunks/json.CupVZNk8.js | 25 + assets/chunks/json5.Bh8mriwU.js | 17 + assets/chunks/jsonc.DYI1rfmx.js | 25 + assets/chunks/jsonl.BUpeXbsf.js | 25 + assets/chunks/jsonnet.C9d3aiqh.js | 1 + assets/chunks/jssm.Dble9ECP.js | 1 + assets/chunks/jsx.CsyrCbsw.js | 699 +++++++++++++++ assets/chunks/julia.CyGW3mcn.js | 9 + assets/chunks/kotlin.BIxS-Weu.js | 1 + assets/chunks/kusto.DIr-ordK.js | 1 + assets/chunks/latex.CbyClHu1.js | 3 + assets/chunks/less.Du6_OKDb.js | 159 ++++ assets/chunks/light-plus.BsvsQ1iS.js | 1 + assets/chunks/liquid.Cp8214eI.js | 14 + assets/chunks/log.Ksn5IXup.js | 1 + assets/chunks/logo.DdacRhvC.js | 1 + assets/chunks/lua.CHJYZA-p.js | 1 + assets/chunks/make.B9S9BZZh.js | 1 + assets/chunks/markdown.BdfWgkoX.js | 129 +++ assets/chunks/marko.DXVuwHdi.js | 8 + .../chunks/material-theme-darker.BrGg7AAd.js | 1 + .../chunks/material-theme-lighter.DDRuGeQH.js | 1 + .../chunks/material-theme-ocean.CBL0qBdF.js | 1 + .../material-theme-palenight.D7gg1Usp.js | 1 + assets/chunks/material-theme.B2BuIiKK.js | 1 + assets/chunks/matlab.Btshr8M_.js | 70 ++ assets/chunks/mdc.BtXAnNXs.js | 76 ++ assets/chunks/mdx.CBPJd_fO.js | 1 + assets/chunks/mermaid.Dkb1Nx48.js | 1 + assets/chunks/min-dark.iSbrOpM4.js | 1 + assets/chunks/min-light.BITGhEdf.js | 1 + assets/chunks/mojo.-7WWnkdy.js | 517 +++++++++++ assets/chunks/monokai.sMI-pExk.js | 1 + assets/chunks/move.C9UBdavN.js | 1 + assets/chunks/narrat.B9CT-1u6.js | 7 + assets/chunks/nextflow.DBxHOdLe.js | 1 + assets/chunks/nginx.CFCDRImM.js | 1 + assets/chunks/night-owl.BeocmOPF.js | 1 + assets/chunks/nim.whBoXTHG.js | 1 + assets/chunks/nix.Dszwcx0o.js | 1 + assets/chunks/nord.CsyjKwr8.js | 1 + assets/chunks/nushell.CrgTADc5.js | 1 + assets/chunks/objective-c.DHmGyzbM.js | 109 +++ assets/chunks/objective-cpp.BWKJ1FCf.js | 239 +++++ assets/chunks/ocaml.RqY_Nz63.js | 1 + assets/chunks/one-dark-pro.BTtaZsq5.js | 1 + assets/chunks/one-light.alpzPJ78.js | 1 + assets/chunks/pascal.B6ZnTe72.js | 1 + assets/chunks/perl.Czv4QcIx.js | 1 + assets/chunks/php.DEqKwr-6.js | 771 ++++++++++++++++ assets/chunks/plsql.BbJj1K1w.js | 1 + assets/chunks/po.HrnDn_2Q.js | 1 + assets/chunks/poimandres.Cda-MJFk.js | 1 + assets/chunks/postcss.DXT9h7v2.js | 1 + assets/chunks/powerquery.CApMHEaB.js | 1 + assets/chunks/powershell.9ZOzOPqN.js | 1 + assets/chunks/prisma.BBJYjQ0k.js | 1 + assets/chunks/prolog.BH_RS3WO.js | 1 + assets/chunks/proto.DOtRmeXT.js | 1 + assets/chunks/pug.BWq4yR4F.js | 1 + assets/chunks/puppet.37ic6j3l.js | 1 + assets/chunks/purescript.CfPQhs6g.js | 7 + assets/chunks/python.DwuVtWc2.js | 518 +++++++++++ assets/chunks/r.BXfENWL6.js | 1 + assets/chunks/racket.B5NHDIr7.js | 353 ++++++++ assets/chunks/raku.D384ylkT.js | 1 + assets/chunks/razor.BPIJn9no.js | 40 + assets/chunks/red.jaXbsbtS.js | 1 + assets/chunks/reg.CrhH3_Og.js | 1 + assets/chunks/rel.6Kuza3Wr.js | 1 + assets/chunks/riscv.AgnqFTPX.js | 13 + assets/chunks/rose-pine-dawn.Bj5xdiaE.js | 1 + assets/chunks/rose-pine-moon.CdedUr_-.js | 1 + assets/chunks/rose-pine.CX_FIdg1.js | 1 + assets/chunks/rst.MQSXyo4o.js | 1 + assets/chunks/ruby.BYVeyLWu.js | 80 ++ assets/chunks/rust.DGxQkqYo.js | 1 + assets/chunks/sas.2Dj3KWk-.js | 1 + assets/chunks/sass.CMDmr8et.js | 2 + assets/chunks/scala.vMsNTMhM.js | 5 + assets/chunks/scheme.1Je9_Reo.js | 136 +++ assets/chunks/scss.Dr-_CcBd.js | 90 ++ assets/chunks/shaderlab.D_C8j_yu.js | 1 + assets/chunks/shellscript.BZfs-ost.js | 1 + assets/chunks/shellsession.D2P9pGgM.js | 1 + assets/chunks/slack-dark.C7oZ9nno.js | 1 + assets/chunks/slack-ochin.hXH8Gyq8.js | 1 + assets/chunks/smalltalk.DSsji4Hu.js | 1 + assets/chunks/snazzy-light.CA9nliXM.js | 1 + assets/chunks/solarized-dark.C86elO-m.js | 1 + assets/chunks/solarized-light.xPNGhBYe.js | 1 + assets/chunks/solidity.CThH5sBG.js | 1 + assets/chunks/sparql.DJ46LgWq.js | 1 + assets/chunks/splunk.6XBPEST2.js | 1 + assets/chunks/sql.DbK06e1c.js | 21 + assets/chunks/ssh-config.BH1M7C1g.js | 1 + assets/chunks/stata.DCIeX9IZ.js | 3 + assets/chunks/stylus.DSrLtGYv.js | 15 + assets/chunks/svelte.CpQM5Shq.js | 1 + assets/chunks/swift.Dez-Qvcc.js | 544 ++++++++++++ assets/chunks/synthwave-84.BBDuFDsq.js | 1 + assets/chunks/system-verilog.BscxmKrE.js | 8 + assets/chunks/systemd.CuJfdYLG.js | 1 + assets/chunks/tasl.BxwAa5i0.js | 1 + assets/chunks/tcl.C_8Fx7bH.js | 1 + assets/chunks/terraform.DBeuZS66.js | 1 + assets/chunks/tex.-C-BpcSB.js | 1 + assets/chunks/theme.Dbfa4Io4.js | 8 + assets/chunks/tokyo-night.eJfcURhx.js | 1 + assets/chunks/toml.BT9ZzGyQ.js | 69 ++ assets/chunks/tsv.DnLUQrgA.js | 1 + assets/chunks/tsx.BlxWTfDV.js | 699 +++++++++++++++ assets/chunks/turtle.C15OxdQ5.js | 1 + assets/chunks/twig.C7WLmjjl.js | 40 + assets/chunks/typescript.DC8MraHL.js | 666 ++++++++++++++ assets/chunks/typst.I4qd5QHW.js | 10 + assets/chunks/v.C2TBxDwV.js | 1 + assets/chunks/vb.beD-FUib.js | 1 + assets/chunks/verilog.DVfdqzEq.js | 1 + assets/chunks/vesper.BSB_bK09.js | 1 + assets/chunks/vhdl.QZ3jNtnE.js | 515 +++++++++++ assets/chunks/viml.BLluXI4E.js | 1 + assets/chunks/vitesse-black.CDJL3WWm.js | 1 + assets/chunks/vitesse-dark.V_y36BGi.js | 1 + assets/chunks/vitesse-light.BGq4KZyx.js | 1 + assets/chunks/vue-html.B4wQFpQy.js | 1 + assets/chunks/vue.DT8Wph6y.js | 6 + assets/chunks/vyper.o-cPXEvd.js | 575 ++++++++++++ assets/chunks/wasm.Cicx_DS6.js | 1 + assets/chunks/wasm.CsTmP73Z.js | 1 + assets/chunks/wenyan.D3VXSfF0.js | 1 + assets/chunks/wgsl.BZz1Hhek.js | 1 + assets/chunks/wolfram.BICIrM8O.js | 1 + assets/chunks/xml.BzTcx3OS.js | 1 + assets/chunks/xsl.lJB8dDLf.js | 1 + assets/chunks/yaml.C5gCGmDW.js | 200 +++++ assets/chunks/zenscript.B1nm99XP.js | 2 + assets/chunks/zig.Bsp1M94H.js | 1 + assets/coalesce-swashbuckle-with.CAm134Ta.jpg | Bin 0 -> 150370 bytes .../coalesce-swashbuckle-without.C9T1kd2R.jpg | Bin 0 -> 108732 bytes assets/concepts_include-tree.md.DXBP6NUV.js | 90 ++ .../concepts_include-tree.md.DXBP6NUV.lean.js | 6 + assets/concepts_includes.md.BXk9quAA.js | 36 + assets/concepts_includes.md.BXk9quAA.lean.js | 18 + assets/history.md.LjVhoNRC.js | 1 + assets/history.md.LjVhoNRC.lean.js | 1 + assets/index.md.BKf9wlWP.js | 1 + assets/index.md.BKf9wlWP.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes assets/inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes assets/inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes assets/inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes assets/inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes assets/inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes assets/inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes assets/inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes assets/inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes assets/introduction.md.DjUq3clO.js | 1 + assets/introduction.md.DjUq3clO.lean.js | 1 + ...model-components_attributes.md.BuUuuAHM.js | 1 + ...-components_attributes.md.BuUuuAHM.lean.js | 1 + ...ttributes_client-validation.md.BXI5mU5c.js | 17 + ...utes_client-validation.md.BXI5mU5c.lean.js | 8 + ...ponents_attributes_coalesce.md.DMD85T4j.js | 1 + ...ts_attributes_coalesce.md.DMD85T4j.lean.js | 1 + ...ttributes_controller-action.md.B2Y3z3V6.js | 27 + ...utes_controller-action.md.B2Y3z3V6.lean.js | 1 + ...nents_attributes_controller.md.bBfqifUV.js | 7 + ..._attributes_controller.md.bBfqifUV.lean.js | 1 + ...ttributes_create-controller.md.Ddy0AhTl.js | 7 + ...utes_create-controller.md.Ddy0AhTl.lean.js | 1 + ...onents_attributes_date-type.md.DFK8RwS4.js | 7 + ...s_attributes_date-type.md.DFK8RwS4.lean.js | 1 + ...attributes_default-order-by.md.DDS6LyOo.js | 23 + ...butes_default-order-by.md.DDS6LyOo.lean.js | 1 + ...butes_dto-includes-excludes.md.Cgp7nqWy.js | 30 + ..._dto-includes-excludes.md.Cgp7nqWy.lean.js | 12 + ...mponents_attributes_execute.md.CyJLTcXq.js | 11 + ...nts_attributes_execute.md.CyJLTcXq.lean.js | 1 + ...omponents_attributes_hidden.md.CGb-z8S2.js | 7 + ...ents_attributes_hidden.md.CGb-z8S2.lean.js | 1 + ...omponents_attributes_inject.md.CXstKKLV.js | 12 + ...ents_attributes_inject.md.CXstKKLV.lean.js | 1 + ...nts_attributes_internal-use.md.BC-btFh9.js | 20 + ...ttributes_internal-use.md.BC-btFh9.lean.js | 1 + ...onents_attributes_list-text.md.BlG0OrE0.js | 12 + ...s_attributes_list-text.md.BlG0OrE0.lean.js | 1 + ...butes_load-from-data-source.md.Blwt71Fn.js | 11 + ..._load-from-data-source.md.Blwt71Fn.lean.js | 1 + ...nts_attributes_many-to-many.md.BViHlIRH.js | 53 ++ ...ttributes_many-to-many.md.BViHlIRH.lean.js | 1 + ...ponents_attributes_restrict.md.B_Bl8ZiC.js | 23 + ...ts_attributes_restrict.md.B_Bl8ZiC.lean.js | 1 + ...omponents_attributes_search.md.Dpcvv62F.js | 18 + ...ents_attributes_search.md.Dpcvv62F.lean.js | 1 + ...tributes_security-attribute.md.Cbz4NAzW.js | 32 + ...tes_security-attribute.md.Cbz4NAzW.lean.js | 1 + ..._model-components_behaviors.md.0-hD_ijP.js | 70 ++ ...l-components_behaviors.md.0-hD_ijP.lean.js | 3 + ...del-components_data-sources.md.CaS_Mjop.js | 100 +++ ...omponents_data-sources.md.CaS_Mjop.lean.js | 20 + ...ng_model-components_methods.md.SII-fa1f.js | 130 +++ ...del-components_methods.md.SII-fa1f.lean.js | 8 + ...model-components_properties.md.CufQlWZR.js | 1 + ...-components_properties.md.CufQlWZR.lean.js | 1 + .../modeling_model-types_dtos.md.Bx3ZDY0X.js | 86 ++ ...eling_model-types_dtos.md.Bx3ZDY0X.lean.js | 1 + ...deling_model-types_entities.md.4anHzKSX.js | 1 + ...g_model-types_entities.md.4anHzKSX.lean.js | 1 + ..._model-types_external-types.md.CRyS6x6A.js | 41 + ...l-types_external-types.md.CRyS6x6A.lean.js | 1 + ...deling_model-types_services.md.DQfWD0nS.js | 41 + ...g_model-types_services.md.DQfWD0nS.lean.js | 1 + ...l-types_standalone-entities.md.DdXeY2JZ.js | 147 ++++ ...es_standalone-entities.md.DdXeY2JZ.lean.js | 1 + assets/security-overview.DKJVSAfO.jpg | Bin 0 -> 247035 bytes assets/stacks_agnostic_dtos.md.CupGMBl4.js | 1 + .../stacks_agnostic_dtos.md.CupGMBl4.lean.js | 1 + .../stacks_agnostic_generation.md.BSeflgOu.js | 18 + ...ks_agnostic_generation.md.BSeflgOu.lean.js | 1 + ...ic_getting-started-modeling.md.C_tRTIWZ.js | 1 + ...tting-started-modeling.md.C_tRTIWZ.lean.js | 1 + ...ents_c-admin-audit-log-page.md.Cekg3y3b.js | 14 + ...c-admin-audit-log-page.md.Cekg3y3b.lean.js | 1 + ..._components_c-admin-display.md.CXEkndPQ.js | 8 + ...onents_c-admin-display.md.CXEkndPQ.lean.js | 1 + ...ponents_c-admin-editor-page.md.CheGzyNt.js | 14 + ...ts_c-admin-editor-page.md.CheGzyNt.lean.js | 1 + ...y_components_c-admin-editor.md.CUq0AktO.js | 1 + ...ponents_c-admin-editor.md.CUq0AktO.lean.js | 1 + ...y_components_c-admin-method.md.CZeeeZRL.js | 1 + ...ponents_c-admin-method.md.CZeeeZRL.lean.js | 1 + ..._components_c-admin-methods.md.AwHFHYrl.js | 1 + ...onents_c-admin-methods.md.AwHFHYrl.lean.js | 1 + ...mponents_c-admin-table-page.md.5WfiKk12.js | 14 + ...nts_c-admin-table-page.md.5WfiKk12.lean.js | 1 + ...nents_c-admin-table-toolbar.md.DVzTVuuC.js | 1 + ..._c-admin-table-toolbar.md.DVzTVuuC.lean.js | 1 + ...fy_components_c-admin-table.md.Av5UFE83.js | 1 + ...mponents_c-admin-table.md.Av5UFE83.lean.js | 1 + ...omponents_c-datetime-picker.md.BLmOIX_G.js | 10 + ...ents_c-datetime-picker.md.BLmOIX_G.lean.js | 2 + ...uetify_components_c-display.md.KwuI7LyG.js | 6 + ...y_components_c-display.md.KwuI7LyG.lean.js | 2 + ...-vuetify_components_c-input.md.C7dBk70K.js | 6 + ...ify_components_c-input.md.C7dBk70K.lean.js | 2 + ...y_components_c-list-filters.md.BuQssQ1-.js | 1 + ...ponents_c-list-filters.md.BuQssQ1-.lean.js | 1 + ...components_c-list-page-size.md.ghTX5kic.js | 1 + ...nents_c-list-page-size.md.ghTX5kic.lean.js | 1 + ...tify_components_c-list-page.md.DBlTOD8T.js | 1 + ...components_c-list-page.md.DBlTOD8T.lean.js | 1 + ...omponents_c-list-pagination.md.CL0iN7Kl.js | 1 + ...ents_c-list-pagination.md.CL0iN7Kl.lean.js | 1 + ...onents_c-list-range-display.md.BXap6sbk.js | 1 + ...s_c-list-range-display.md.BXap6sbk.lean.js | 1 + ..._components_c-loader-status.md.B1aKOMtk.js | 44 + ...onents_c-loader-status.md.B1aKOMtk.lean.js | 12 + ...nents_c-select-many-to-many.md.DHuCgpUa.js | 10 + ..._c-select-many-to-many.md.DHuCgpUa.lean.js | 2 + ...nents_c-select-string-value.md.CBTE2rZs.js | 29 + ..._c-select-string-value.md.CBTE2rZs.lean.js | 1 + ..._components_c-select-values.md.C97aC2Yx.js | 5 + ...onents_c-select-values.md.C97aC2Yx.lean.js | 2 + ...vuetify_components_c-select.md.DdKRtVnt.js | 35 + ...fy_components_c-select.md.DdKRtVnt.lean.js | 5 + ...-vuetify_components_c-table.md.CleDHzqH.js | 17 + ...ify_components_c-table.md.CleDHzqH.lean.js | 1 + ...alesce-vue-vuetify_overview.md._zK0S1J_.js | 1 + ...e-vue-vuetify_overview.md._zK0S1J_.lean.js | 1 + .../stacks_vue_getting-started.md.cvpjxbz6.js | 42 + ...ks_vue_getting-started.md.cvpjxbz6.lean.js | 7 + ...acks_vue_layers_api-clients.md.ZFtUeqeR.js | 52 ++ ...vue_layers_api-clients.md.ZFtUeqeR.lean.js | 1 + .../stacks_vue_layers_metadata.md.lgKSP2Dg.js | 1 + ...ks_vue_layers_metadata.md.lgKSP2Dg.lean.js | 1 + .../stacks_vue_layers_models.md.ST5NLFOv.js | 92 ++ ...acks_vue_layers_models.md.ST5NLFOv.lean.js | 49 ++ ...tacks_vue_layers_viewmodels.md.Bu5ItAZ9.js | 72 ++ ..._vue_layers_viewmodels.md.Bu5ItAZ9.lean.js | 26 + assets/stacks_vue_overview.md.D08uFQA2.js | 1 + .../stacks_vue_overview.md.D08uFQA2.lean.js | 1 + assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.js | 177 ++++ ...tacks_vue_vue2-to-vue3.md.DCun6C4Y.lean.js | 1 + assets/style.JLeBfkeF.css | 1 + assets/topics_audit-logging.md.CbcnfHuQ.js | 101 +++ .../topics_audit-logging.md.CbcnfHuQ.lean.js | 1 + assets/topics_coalesce-json.md.DRbdr5a0.js | 60 ++ .../topics_coalesce-json.md.DRbdr5a0.lean.js | 1 + ...topics_coalesce-swashbuckle.md.BLFJZ7Yn.js | 32 + ...s_coalesce-swashbuckle.md.BLFJZ7Yn.lean.js | 1 + assets/topics_immutability.md.CmCfIs-X.js | 35 + .../topics_immutability.md.CmCfIs-X.lean.js | 1 + assets/topics_security.md.De1aPS0R.js | 291 ++++++ assets/topics_security.md.De1aPS0R.lean.js | 1 + assets/topics_startup.md.BqEryyXw.js | 28 + assets/topics_startup.md.BqEryyXw.lean.js | 1 + assets/topics_upgrading.md.CIvStOB4.js | 10 + assets/topics_upgrading.md.CIvStOB4.lean.js | 1 + coalesce-horizontal-color.svg | 96 ++ coalesce-icon-color.svg | 36 + concepts/include-tree.html | 114 +++ concepts/includes.html | 61 ++ ef-logo.svg | 5 + favicon.ico | Bin 0 -> 15086 bytes hashmap.json | 1 + history.html | 25 + index.html | 25 + intellitect-text-black.svg | 59 ++ intellitect-text-white.svg | 59 ++ introduction.html | 25 + modeling/model-components/attributes.html | 25 + .../attributes/client-validation.html | 41 + .../model-components/attributes/coalesce.html | 25 + .../attributes/controller-action.html | 52 ++ .../attributes/controller.html | 31 + .../attributes/create-controller.html | 33 + .../attributes/date-type.html | 32 + .../attributes/default-order-by.html | 49 ++ .../attributes/dto-includes-excludes.html | 55 ++ .../model-components/attributes/execute.html | 35 + .../model-components/attributes/hidden.html | 32 + .../model-components/attributes/inject.html | 36 + .../attributes/internal-use.html | 44 + .../attributes/list-text.html | 36 + .../attributes/load-from-data-source.html | 36 + .../attributes/many-to-many.html | 78 ++ .../model-components/attributes/restrict.html | 47 + .../model-components/attributes/search.html | 42 + .../attributes/security-attribute.html | 58 ++ modeling/model-components/behaviors.html | 94 ++ modeling/model-components/data-sources.html | 124 +++ modeling/model-components/methods.html | 154 ++++ modeling/model-components/properties.html | 25 + modeling/model-types/dtos.html | 110 +++ modeling/model-types/entities.html | 25 + modeling/model-types/external-types.html | 65 ++ modeling/model-types/services.html | 65 ++ modeling/model-types/standalone-entities.html | 171 ++++ net-logo.svg | 7 + stacks/agnostic/dtos.html | 25 + stacks/agnostic/generation.html | 42 + stacks/agnostic/getting-started-modeling.html | 25 + .../components/c-admin-audit-log-page.html | 38 + .../components/c-admin-display.html | 32 + .../components/c-admin-editor-page.html | 38 + .../components/c-admin-editor.html | 25 + .../components/c-admin-method.html | 25 + .../components/c-admin-methods.html | 25 + .../components/c-admin-table-page.html | 38 + .../components/c-admin-table-toolbar.html | 25 + .../components/c-admin-table.html | 25 + .../components/c-datetime-picker.html | 34 + .../components/c-display.html | 30 + .../components/c-input.html | 30 + .../components/c-list-filters.html | 25 + .../components/c-list-page-size.html | 25 + .../components/c-list-page.html | 25 + .../components/c-list-pagination.html | 25 + .../components/c-list-range-display.html | 25 + .../components/c-loader-status.html | 68 ++ .../components/c-select-many-to-many.html | 34 + .../components/c-select-string-value.html | 53 ++ .../components/c-select-values.html | 29 + .../components/c-select.html | 59 ++ .../components/c-table.html | 41 + stacks/vue/coalesce-vue-vuetify/overview.html | 25 + stacks/vue/getting-started.html | 66 ++ stacks/vue/layers/api-clients.html | 76 ++ stacks/vue/layers/metadata.html | 25 + stacks/vue/layers/models.html | 116 +++ stacks/vue/layers/viewmodels.html | 96 ++ stacks/vue/overview.html | 25 + stacks/vue/vue2-to-vue3.html | 201 +++++ topics/audit-logging.html | 125 +++ topics/coalesce-json.html | 84 ++ topics/coalesce-swashbuckle.html | 56 ++ topics/immutability.html | 59 ++ topics/security.html | 315 +++++++ topics/startup.html | 52 ++ topics/upgrading.html | 34 + ts-logo-128.svg | 1 + ts-logo-512.svg | 1 + vite-logo.svg | 15 + vue-logo.svg | 8 + 495 files changed, 21717 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/app.DEImvWHW.js create mode 100644 assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js create mode 100644 assets/chunks/abap.DXFkqnOI.js create mode 100644 assets/chunks/actionscript-3.D6NljDpC.js create mode 100644 assets/chunks/ada.CowR2XfX.js create mode 100644 assets/chunks/andromeeda.YxQm0tCS.js create mode 100644 assets/chunks/angular-html.833w9gUK.js create mode 100644 assets/chunks/angular-ts.BCBvF5Sf.js create mode 100644 assets/chunks/apache.rS0jd3Ly.js create mode 100644 assets/chunks/apex.Sfo2eW0G.js create mode 100644 assets/chunks/apl.7kPAH7yp.js create mode 100644 assets/chunks/applescript.B4yE-MfL.js create mode 100644 assets/chunks/ara.CG4fK2Nq.js create mode 100644 assets/chunks/asm.PWN5J14X.js create mode 100644 assets/chunks/astro.Dtt22nl1.js create mode 100644 assets/chunks/aurora-x.BaWyeHV_.js create mode 100644 assets/chunks/awk.i0IPvypD.js create mode 100644 assets/chunks/ayu-dark.Bn5gmY5k.js create mode 100644 assets/chunks/ballerina.T9ysyp6P.js create mode 100644 assets/chunks/bat.BPiaQZfK.js create mode 100644 assets/chunks/beancount.Urb1RsFe.js create mode 100644 assets/chunks/berry.CxrokwfH.js create mode 100644 assets/chunks/bibtex.BaedD2tq.js create mode 100644 assets/chunks/bicep.3ghuYFLd.js create mode 100644 assets/chunks/blade.Ge7MpD7w.js create mode 100644 assets/chunks/c.RCJZWN-0.js create mode 100644 assets/chunks/cadence.Bgpqy2XC.js create mode 100644 assets/chunks/catppuccin-frappe.CSPeAESR.js create mode 100644 assets/chunks/catppuccin-latte.BYdKNJ10.js create mode 100644 assets/chunks/catppuccin-macchiato.DVLwECkk.js create mode 100644 assets/chunks/catppuccin-mocha.CEfge3mM.js create mode 100644 assets/chunks/clarity.CIekO_uJ.js create mode 100644 assets/chunks/clojure.BF6G6X0H.js create mode 100644 assets/chunks/cmake.DXZpi2gR.js create mode 100644 assets/chunks/cobol.Be8n44jy.js create mode 100644 assets/chunks/codeql.BOpLLL-w.js create mode 100644 assets/chunks/coffee.t_LrLW_f.js create mode 100644 assets/chunks/common-lisp.CX2EUjC8.js create mode 100644 assets/chunks/cpp.BnO_O5bK.js create mode 100644 assets/chunks/crystal.DUeHF1Px.js create mode 100644 assets/chunks/csharp.DISxKEhY.js create mode 100644 assets/chunks/css.CbYhyuC0.js create mode 100644 assets/chunks/csv.B2DkETJQ.js create mode 100644 assets/chunks/cue.C6Aznpr-.js create mode 100644 assets/chunks/cypher.ByMv4Xf1.js create mode 100644 assets/chunks/d.PifQWv0n.js create mode 100644 assets/chunks/dark-plus.KEYLhlmT.js create mode 100644 assets/chunks/dart.DZLoTQm4.js create mode 100644 assets/chunks/dax.DsfXcHUZ.js create mode 100644 assets/chunks/desktop.D71BffLY.js create mode 100644 assets/chunks/diff.DvyTQcux.js create mode 100644 assets/chunks/docker.DNR26wTC.js create mode 100644 assets/chunks/dracula-soft.9B1nZgL-.js create mode 100644 assets/chunks/dracula.DGO8GyiP.js create mode 100644 assets/chunks/dream-maker.Eh5U-gDp.js create mode 100644 assets/chunks/elixir.CpdO1lki.js create mode 100644 assets/chunks/elm.DbZvrHdh.js create mode 100644 assets/chunks/erb.C8njeWMx.js create mode 100644 assets/chunks/erlang.DS9ZWoKD.js create mode 100644 assets/chunks/fennel.C6XIsc4F.js create mode 100644 assets/chunks/fish.DfeQjIbs.js create mode 100644 assets/chunks/fortran-fixed-form.Cx0tWteX.js create mode 100644 assets/chunks/fortran-free-form.D6pmzCqS.js create mode 100644 assets/chunks/framework.BkavzUpE.js create mode 100644 assets/chunks/fsharp.COWl2xCs.js create mode 100644 assets/chunks/gdresource.Dyo1-XBj.js create mode 100644 assets/chunks/gdscript.CoEqzGFw.js create mode 100644 assets/chunks/gdshader.B_SUYfiV.js create mode 100644 assets/chunks/gherkin.DjTlIhuc.js create mode 100644 assets/chunks/git-commit.aPmGthaS.js create mode 100644 assets/chunks/git-rebase.wSeoO_tD.js create mode 100644 assets/chunks/github-dark-default.BXF7Vm5l.js create mode 100644 assets/chunks/github-dark-dimmed.CRDKj6ck.js create mode 100644 assets/chunks/github-dark.CzPA46E-.js create mode 100644 assets/chunks/github-light-default.UREJT2Bw.js create mode 100644 assets/chunks/github-light.CRlnGVMD.js create mode 100644 assets/chunks/gleam.Dz2Ca8U2.js create mode 100644 assets/chunks/glimmer-js.CKLJpqca.js create mode 100644 assets/chunks/glimmer-ts.Bp7XmXVh.js create mode 100644 assets/chunks/glsl.-GlVTnW0.js create mode 100644 assets/chunks/gnuplot.nclm9rTJ.js create mode 100644 assets/chunks/go.BAMIS8DD.js create mode 100644 assets/chunks/graphql.C4V4xKFR.js create mode 100644 assets/chunks/groovy.wChcbJ1V.js create mode 100644 assets/chunks/hack.B30vrIHT.js create mode 100644 assets/chunks/haml.RaSm5nLU.js create mode 100644 assets/chunks/handlebars.W0zz18bm.js create mode 100644 assets/chunks/haskell.DAGYewaG.js create mode 100644 assets/chunks/hcl.CudBhkk3.js create mode 100644 assets/chunks/hjson.DZqG9GXz.js create mode 100644 assets/chunks/hlsl.DmDrTTlz.js create mode 100644 assets/chunks/houston.CZZ6oYdA.js create mode 100644 assets/chunks/html-derivative.fiapQfxX.js create mode 100644 assets/chunks/html.CuK0VrWf.js create mode 100644 assets/chunks/http.DvBm4YdT.js create mode 100644 assets/chunks/hy.C3qJFuQy.js create mode 100644 assets/chunks/imba.DxX1Vuw3.js create mode 100644 assets/chunks/index.D8X3TFxX.js create mode 100644 assets/chunks/ini.DeVv6D4_.js create mode 100644 assets/chunks/java.ClXEvkw9.js create mode 100644 assets/chunks/javascript.Dch3xQiY.js create mode 100644 assets/chunks/jinja.DWD-OL5F.js create mode 100644 assets/chunks/jison.CHwQvgii.js create mode 100644 assets/chunks/json.CupVZNk8.js create mode 100644 assets/chunks/json5.Bh8mriwU.js create mode 100644 assets/chunks/jsonc.DYI1rfmx.js create mode 100644 assets/chunks/jsonl.BUpeXbsf.js create mode 100644 assets/chunks/jsonnet.C9d3aiqh.js create mode 100644 assets/chunks/jssm.Dble9ECP.js create mode 100644 assets/chunks/jsx.CsyrCbsw.js create mode 100644 assets/chunks/julia.CyGW3mcn.js create mode 100644 assets/chunks/kotlin.BIxS-Weu.js create mode 100644 assets/chunks/kusto.DIr-ordK.js create mode 100644 assets/chunks/latex.CbyClHu1.js create mode 100644 assets/chunks/less.Du6_OKDb.js create mode 100644 assets/chunks/light-plus.BsvsQ1iS.js create mode 100644 assets/chunks/liquid.Cp8214eI.js create mode 100644 assets/chunks/log.Ksn5IXup.js create mode 100644 assets/chunks/logo.DdacRhvC.js create mode 100644 assets/chunks/lua.CHJYZA-p.js create mode 100644 assets/chunks/make.B9S9BZZh.js create mode 100644 assets/chunks/markdown.BdfWgkoX.js create mode 100644 assets/chunks/marko.DXVuwHdi.js create mode 100644 assets/chunks/material-theme-darker.BrGg7AAd.js create mode 100644 assets/chunks/material-theme-lighter.DDRuGeQH.js create mode 100644 assets/chunks/material-theme-ocean.CBL0qBdF.js create mode 100644 assets/chunks/material-theme-palenight.D7gg1Usp.js create mode 100644 assets/chunks/material-theme.B2BuIiKK.js create mode 100644 assets/chunks/matlab.Btshr8M_.js create mode 100644 assets/chunks/mdc.BtXAnNXs.js create mode 100644 assets/chunks/mdx.CBPJd_fO.js create mode 100644 assets/chunks/mermaid.Dkb1Nx48.js create mode 100644 assets/chunks/min-dark.iSbrOpM4.js create mode 100644 assets/chunks/min-light.BITGhEdf.js create mode 100644 assets/chunks/mojo.-7WWnkdy.js create mode 100644 assets/chunks/monokai.sMI-pExk.js create mode 100644 assets/chunks/move.C9UBdavN.js create mode 100644 assets/chunks/narrat.B9CT-1u6.js create mode 100644 assets/chunks/nextflow.DBxHOdLe.js create mode 100644 assets/chunks/nginx.CFCDRImM.js create mode 100644 assets/chunks/night-owl.BeocmOPF.js create mode 100644 assets/chunks/nim.whBoXTHG.js create mode 100644 assets/chunks/nix.Dszwcx0o.js create mode 100644 assets/chunks/nord.CsyjKwr8.js create mode 100644 assets/chunks/nushell.CrgTADc5.js create mode 100644 assets/chunks/objective-c.DHmGyzbM.js create mode 100644 assets/chunks/objective-cpp.BWKJ1FCf.js create mode 100644 assets/chunks/ocaml.RqY_Nz63.js create mode 100644 assets/chunks/one-dark-pro.BTtaZsq5.js create mode 100644 assets/chunks/one-light.alpzPJ78.js create mode 100644 assets/chunks/pascal.B6ZnTe72.js create mode 100644 assets/chunks/perl.Czv4QcIx.js create mode 100644 assets/chunks/php.DEqKwr-6.js create mode 100644 assets/chunks/plsql.BbJj1K1w.js create mode 100644 assets/chunks/po.HrnDn_2Q.js create mode 100644 assets/chunks/poimandres.Cda-MJFk.js create mode 100644 assets/chunks/postcss.DXT9h7v2.js create mode 100644 assets/chunks/powerquery.CApMHEaB.js create mode 100644 assets/chunks/powershell.9ZOzOPqN.js create mode 100644 assets/chunks/prisma.BBJYjQ0k.js create mode 100644 assets/chunks/prolog.BH_RS3WO.js create mode 100644 assets/chunks/proto.DOtRmeXT.js create mode 100644 assets/chunks/pug.BWq4yR4F.js create mode 100644 assets/chunks/puppet.37ic6j3l.js create mode 100644 assets/chunks/purescript.CfPQhs6g.js create mode 100644 assets/chunks/python.DwuVtWc2.js create mode 100644 assets/chunks/r.BXfENWL6.js create mode 100644 assets/chunks/racket.B5NHDIr7.js create mode 100644 assets/chunks/raku.D384ylkT.js create mode 100644 assets/chunks/razor.BPIJn9no.js create mode 100644 assets/chunks/red.jaXbsbtS.js create mode 100644 assets/chunks/reg.CrhH3_Og.js create mode 100644 assets/chunks/rel.6Kuza3Wr.js create mode 100644 assets/chunks/riscv.AgnqFTPX.js create mode 100644 assets/chunks/rose-pine-dawn.Bj5xdiaE.js create mode 100644 assets/chunks/rose-pine-moon.CdedUr_-.js create mode 100644 assets/chunks/rose-pine.CX_FIdg1.js create mode 100644 assets/chunks/rst.MQSXyo4o.js create mode 100644 assets/chunks/ruby.BYVeyLWu.js create mode 100644 assets/chunks/rust.DGxQkqYo.js create mode 100644 assets/chunks/sas.2Dj3KWk-.js create mode 100644 assets/chunks/sass.CMDmr8et.js create mode 100644 assets/chunks/scala.vMsNTMhM.js create mode 100644 assets/chunks/scheme.1Je9_Reo.js create mode 100644 assets/chunks/scss.Dr-_CcBd.js create mode 100644 assets/chunks/shaderlab.D_C8j_yu.js create mode 100644 assets/chunks/shellscript.BZfs-ost.js create mode 100644 assets/chunks/shellsession.D2P9pGgM.js create mode 100644 assets/chunks/slack-dark.C7oZ9nno.js create mode 100644 assets/chunks/slack-ochin.hXH8Gyq8.js create mode 100644 assets/chunks/smalltalk.DSsji4Hu.js create mode 100644 assets/chunks/snazzy-light.CA9nliXM.js create mode 100644 assets/chunks/solarized-dark.C86elO-m.js create mode 100644 assets/chunks/solarized-light.xPNGhBYe.js create mode 100644 assets/chunks/solidity.CThH5sBG.js create mode 100644 assets/chunks/sparql.DJ46LgWq.js create mode 100644 assets/chunks/splunk.6XBPEST2.js create mode 100644 assets/chunks/sql.DbK06e1c.js create mode 100644 assets/chunks/ssh-config.BH1M7C1g.js create mode 100644 assets/chunks/stata.DCIeX9IZ.js create mode 100644 assets/chunks/stylus.DSrLtGYv.js create mode 100644 assets/chunks/svelte.CpQM5Shq.js create mode 100644 assets/chunks/swift.Dez-Qvcc.js create mode 100644 assets/chunks/synthwave-84.BBDuFDsq.js create mode 100644 assets/chunks/system-verilog.BscxmKrE.js create mode 100644 assets/chunks/systemd.CuJfdYLG.js create mode 100644 assets/chunks/tasl.BxwAa5i0.js create mode 100644 assets/chunks/tcl.C_8Fx7bH.js create mode 100644 assets/chunks/terraform.DBeuZS66.js create mode 100644 assets/chunks/tex.-C-BpcSB.js create mode 100644 assets/chunks/theme.Dbfa4Io4.js create mode 100644 assets/chunks/tokyo-night.eJfcURhx.js create mode 100644 assets/chunks/toml.BT9ZzGyQ.js create mode 100644 assets/chunks/tsv.DnLUQrgA.js create mode 100644 assets/chunks/tsx.BlxWTfDV.js create mode 100644 assets/chunks/turtle.C15OxdQ5.js create mode 100644 assets/chunks/twig.C7WLmjjl.js create mode 100644 assets/chunks/typescript.DC8MraHL.js create mode 100644 assets/chunks/typst.I4qd5QHW.js create mode 100644 assets/chunks/v.C2TBxDwV.js create mode 100644 assets/chunks/vb.beD-FUib.js create mode 100644 assets/chunks/verilog.DVfdqzEq.js create mode 100644 assets/chunks/vesper.BSB_bK09.js create mode 100644 assets/chunks/vhdl.QZ3jNtnE.js create mode 100644 assets/chunks/viml.BLluXI4E.js create mode 100644 assets/chunks/vitesse-black.CDJL3WWm.js create mode 100644 assets/chunks/vitesse-dark.V_y36BGi.js create mode 100644 assets/chunks/vitesse-light.BGq4KZyx.js create mode 100644 assets/chunks/vue-html.B4wQFpQy.js create mode 100644 assets/chunks/vue.DT8Wph6y.js create mode 100644 assets/chunks/vyper.o-cPXEvd.js create mode 100644 assets/chunks/wasm.Cicx_DS6.js create mode 100644 assets/chunks/wasm.CsTmP73Z.js create mode 100644 assets/chunks/wenyan.D3VXSfF0.js create mode 100644 assets/chunks/wgsl.BZz1Hhek.js create mode 100644 assets/chunks/wolfram.BICIrM8O.js create mode 100644 assets/chunks/xml.BzTcx3OS.js create mode 100644 assets/chunks/xsl.lJB8dDLf.js create mode 100644 assets/chunks/yaml.C5gCGmDW.js create mode 100644 assets/chunks/zenscript.B1nm99XP.js create mode 100644 assets/chunks/zig.Bsp1M94H.js create mode 100644 assets/coalesce-swashbuckle-with.CAm134Ta.jpg create mode 100644 assets/coalesce-swashbuckle-without.C9T1kd2R.jpg create mode 100644 assets/concepts_include-tree.md.DXBP6NUV.js create mode 100644 assets/concepts_include-tree.md.DXBP6NUV.lean.js create mode 100644 assets/concepts_includes.md.BXk9quAA.js create mode 100644 assets/concepts_includes.md.BXk9quAA.lean.js create mode 100644 assets/history.md.LjVhoNRC.js create mode 100644 assets/history.md.LjVhoNRC.lean.js create mode 100644 assets/index.md.BKf9wlWP.js create mode 100644 assets/index.md.BKf9wlWP.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 assets/introduction.md.DjUq3clO.js create mode 100644 assets/introduction.md.DjUq3clO.lean.js create mode 100644 assets/modeling_model-components_attributes.md.BuUuuAHM.js create mode 100644 assets/modeling_model-components_attributes.md.BuUuuAHM.lean.js create mode 100644 assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.js create mode 100644 assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.lean.js create mode 100644 assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.js create mode 100644 assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.lean.js create mode 100644 assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.js create mode 100644 assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.lean.js create mode 100644 assets/modeling_model-components_attributes_controller.md.bBfqifUV.js create mode 100644 assets/modeling_model-components_attributes_controller.md.bBfqifUV.lean.js create mode 100644 assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.js create mode 100644 assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.lean.js create mode 100644 assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.js create mode 100644 assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.lean.js create mode 100644 assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.js create mode 100644 assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.lean.js create mode 100644 assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.js create mode 100644 assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.lean.js create mode 100644 assets/modeling_model-components_attributes_execute.md.CyJLTcXq.js create mode 100644 assets/modeling_model-components_attributes_execute.md.CyJLTcXq.lean.js create mode 100644 assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.js create mode 100644 assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.lean.js create mode 100644 assets/modeling_model-components_attributes_inject.md.CXstKKLV.js create mode 100644 assets/modeling_model-components_attributes_inject.md.CXstKKLV.lean.js create mode 100644 assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.js create mode 100644 assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.lean.js create mode 100644 assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.js create mode 100644 assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.lean.js create mode 100644 assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.js create mode 100644 assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.lean.js create mode 100644 assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.js create mode 100644 assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.lean.js create mode 100644 assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.js create mode 100644 assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.lean.js create mode 100644 assets/modeling_model-components_attributes_search.md.Dpcvv62F.js create mode 100644 assets/modeling_model-components_attributes_search.md.Dpcvv62F.lean.js create mode 100644 assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.js create mode 100644 assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.lean.js create mode 100644 assets/modeling_model-components_behaviors.md.0-hD_ijP.js create mode 100644 assets/modeling_model-components_behaviors.md.0-hD_ijP.lean.js create mode 100644 assets/modeling_model-components_data-sources.md.CaS_Mjop.js create mode 100644 assets/modeling_model-components_data-sources.md.CaS_Mjop.lean.js create mode 100644 assets/modeling_model-components_methods.md.SII-fa1f.js create mode 100644 assets/modeling_model-components_methods.md.SII-fa1f.lean.js create mode 100644 assets/modeling_model-components_properties.md.CufQlWZR.js create mode 100644 assets/modeling_model-components_properties.md.CufQlWZR.lean.js create mode 100644 assets/modeling_model-types_dtos.md.Bx3ZDY0X.js create mode 100644 assets/modeling_model-types_dtos.md.Bx3ZDY0X.lean.js create mode 100644 assets/modeling_model-types_entities.md.4anHzKSX.js create mode 100644 assets/modeling_model-types_entities.md.4anHzKSX.lean.js create mode 100644 assets/modeling_model-types_external-types.md.CRyS6x6A.js create mode 100644 assets/modeling_model-types_external-types.md.CRyS6x6A.lean.js create mode 100644 assets/modeling_model-types_services.md.DQfWD0nS.js create mode 100644 assets/modeling_model-types_services.md.DQfWD0nS.lean.js create mode 100644 assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.js create mode 100644 assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.lean.js create mode 100644 assets/security-overview.DKJVSAfO.jpg create mode 100644 assets/stacks_agnostic_dtos.md.CupGMBl4.js create mode 100644 assets/stacks_agnostic_dtos.md.CupGMBl4.lean.js create mode 100644 assets/stacks_agnostic_generation.md.BSeflgOu.js create mode 100644 assets/stacks_agnostic_generation.md.BSeflgOu.lean.js create mode 100644 assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.js create mode 100644 assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.lean.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.js create mode 100644 assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.lean.js create mode 100644 assets/stacks_vue_getting-started.md.cvpjxbz6.js create mode 100644 assets/stacks_vue_getting-started.md.cvpjxbz6.lean.js create mode 100644 assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.js create mode 100644 assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.lean.js create mode 100644 assets/stacks_vue_layers_metadata.md.lgKSP2Dg.js create mode 100644 assets/stacks_vue_layers_metadata.md.lgKSP2Dg.lean.js create mode 100644 assets/stacks_vue_layers_models.md.ST5NLFOv.js create mode 100644 assets/stacks_vue_layers_models.md.ST5NLFOv.lean.js create mode 100644 assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.js create mode 100644 assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.lean.js create mode 100644 assets/stacks_vue_overview.md.D08uFQA2.js create mode 100644 assets/stacks_vue_overview.md.D08uFQA2.lean.js create mode 100644 assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.js create mode 100644 assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.lean.js create mode 100644 assets/style.JLeBfkeF.css create mode 100644 assets/topics_audit-logging.md.CbcnfHuQ.js create mode 100644 assets/topics_audit-logging.md.CbcnfHuQ.lean.js create mode 100644 assets/topics_coalesce-json.md.DRbdr5a0.js create mode 100644 assets/topics_coalesce-json.md.DRbdr5a0.lean.js create mode 100644 assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.js create mode 100644 assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.lean.js create mode 100644 assets/topics_immutability.md.CmCfIs-X.js create mode 100644 assets/topics_immutability.md.CmCfIs-X.lean.js create mode 100644 assets/topics_security.md.De1aPS0R.js create mode 100644 assets/topics_security.md.De1aPS0R.lean.js create mode 100644 assets/topics_startup.md.BqEryyXw.js create mode 100644 assets/topics_startup.md.BqEryyXw.lean.js create mode 100644 assets/topics_upgrading.md.CIvStOB4.js create mode 100644 assets/topics_upgrading.md.CIvStOB4.lean.js create mode 100644 coalesce-horizontal-color.svg create mode 100644 coalesce-icon-color.svg create mode 100644 concepts/include-tree.html create mode 100644 concepts/includes.html create mode 100644 ef-logo.svg create mode 100644 favicon.ico create mode 100644 hashmap.json create mode 100644 history.html create mode 100644 index.html create mode 100644 intellitect-text-black.svg create mode 100644 intellitect-text-white.svg create mode 100644 introduction.html create mode 100644 modeling/model-components/attributes.html create mode 100644 modeling/model-components/attributes/client-validation.html create mode 100644 modeling/model-components/attributes/coalesce.html create mode 100644 modeling/model-components/attributes/controller-action.html create mode 100644 modeling/model-components/attributes/controller.html create mode 100644 modeling/model-components/attributes/create-controller.html create mode 100644 modeling/model-components/attributes/date-type.html create mode 100644 modeling/model-components/attributes/default-order-by.html create mode 100644 modeling/model-components/attributes/dto-includes-excludes.html create mode 100644 modeling/model-components/attributes/execute.html create mode 100644 modeling/model-components/attributes/hidden.html create mode 100644 modeling/model-components/attributes/inject.html create mode 100644 modeling/model-components/attributes/internal-use.html create mode 100644 modeling/model-components/attributes/list-text.html create mode 100644 modeling/model-components/attributes/load-from-data-source.html create mode 100644 modeling/model-components/attributes/many-to-many.html create mode 100644 modeling/model-components/attributes/restrict.html create mode 100644 modeling/model-components/attributes/search.html create mode 100644 modeling/model-components/attributes/security-attribute.html create mode 100644 modeling/model-components/behaviors.html create mode 100644 modeling/model-components/data-sources.html create mode 100644 modeling/model-components/methods.html create mode 100644 modeling/model-components/properties.html create mode 100644 modeling/model-types/dtos.html create mode 100644 modeling/model-types/entities.html create mode 100644 modeling/model-types/external-types.html create mode 100644 modeling/model-types/services.html create mode 100644 modeling/model-types/standalone-entities.html create mode 100644 net-logo.svg create mode 100644 stacks/agnostic/dtos.html create mode 100644 stacks/agnostic/generation.html create mode 100644 stacks/agnostic/getting-started-modeling.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-display.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-display.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-input.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-list-page.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-select-values.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-select.html create mode 100644 stacks/vue/coalesce-vue-vuetify/components/c-table.html create mode 100644 stacks/vue/coalesce-vue-vuetify/overview.html create mode 100644 stacks/vue/getting-started.html create mode 100644 stacks/vue/layers/api-clients.html create mode 100644 stacks/vue/layers/metadata.html create mode 100644 stacks/vue/layers/models.html create mode 100644 stacks/vue/layers/viewmodels.html create mode 100644 stacks/vue/overview.html create mode 100644 stacks/vue/vue2-to-vue3.html create mode 100644 topics/audit-logging.html create mode 100644 topics/coalesce-json.html create mode 100644 topics/coalesce-swashbuckle.html create mode 100644 topics/immutability.html create mode 100644 topics/security.html create mode 100644 topics/startup.html create mode 100644 topics/upgrading.html create mode 100644 ts-logo-128.svg create mode 100644 ts-logo-512.svg create mode 100644 vite-logo.svg create mode 100644 vue-logo.svg diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..3e69a84a7 --- /dev/null +++ b/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | Coalesce + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/assets/app.DEImvWHW.js b/assets/app.DEImvWHW.js new file mode 100644 index 000000000..04c843b8f --- /dev/null +++ b/assets/app.DEImvWHW.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.Dbfa4Io4.js";import{U as o,ac as u,ad as l,ae as c,af as f,ag as d,ah as m,ai as h,aj as g,ak as A,al as y,d as P,u as v,k as w,y as C,am as R,an as b,ao as E,a8 as S}from"./chunks/framework.BkavzUpE.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(l,e);const t=c(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function D(){return g(T)}function _(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js b/assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js new file mode 100644 index 000000000..42a412276 --- /dev/null +++ b/assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js @@ -0,0 +1,17 @@ +import{d as mo,ap as po,L as vo,k as ho,x as yo,R as go,o as bo,c as _o}from"./framework.BkavzUpE.js";import{u as Oo}from"./theme.Dbfa4Io4.js";/*! @docsearch/js 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function lr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function I(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function se(t,e){return function(r){if(Array.isArray(r))return r}(t)||function(r,n){var o=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(o!=null){var i,a,c=[],u=!0,s=!1;try{for(o=o.call(r);!(u=(i=o.next()).done)&&(c.push(i.value),!n||c.length!==n);u=!0);}catch(l){s=!0,a=l}finally{try{u||o.return==null||o.return()}finally{if(s)throw a}}return c}}(t,e)||_n(t,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function ft(t){return function(e){if(Array.isArray(e))return qt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||_n(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function _n(t,e){if(t){if(typeof t=="string")return qt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?qt(t,e):void 0}}function qt(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r3)for(r=[r],i=3;i0?Ie(v.type,v.props,v.key,null,v.__v):v)!=null){if(v.__=r,v.__b=r.__b+1,(p=b[l])===null||p&&v.key==p.key&&v.type===p.type)b[l]=void 0;else for(m=0;m<_;m++){if((p=b[m])&&v.key==p.key&&v.type===p.type){b[m]=void 0;break}p=null}Yt(t,v,p=p||mt,o,i,a,c,u,s),d=v.__e,(m=v.ref)&&p.ref!=m&&(y||(y=[]),p.ref&&y.push(p.ref,null,v),y.push(m,v.__c||d,v)),d!=null?(h==null&&(h=d),typeof v.type=="function"&&v.__k!=null&&v.__k===p.__k?v.__d=u=Pn(v,u,t):u=In(t,v,p,b,d,u),s||r.type!=="option"?typeof r.type=="function"&&(r.__d=u):t.value=""):u&&p.__e==u&&u.parentNode!=t&&(u=Ke(p))}for(r.__e=h,l=_;l--;)b[l]!=null&&(typeof r.type=="function"&&b[l].__e!=null&&b[l].__e==r.__d&&(r.__d=Ke(n,l+1)),An(b[l],b[l]));if(y)for(l=0;l3)for(r=[r],i=3;i=r.__.length&&r.__.push({}),r.__[t]}function Gt(t){return pe=1,xn(Nn,t)}function xn(t,e,r){var n=Je(de++,2);return n.t=t,n.__c||(n.__=[r?r(e):Nn(void 0,e),function(o){var i=n.t(n.__[0],o);n.__[0]!==i&&(n.__=[i,n.__[1]],n.__c.setState({}))}],n.__c=L),n.__}function Xt(t,e){var r=Je(de++,3);!w.__s&&er(r.__H,e)&&(r.__=t,r.__H=e,L.__H.__h.push(r))}function _r(t,e){var r=Je(de++,4);!w.__s&&er(r.__H,e)&&(r.__=t,r.__H=e,L.__h.push(r))}function Pt(t,e){var r=Je(de++,7);return er(r.__H,e)&&(r.__=t(),r.__H=e,r.__h=t),r.__}function ko(){Ht.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(ut),t.__H.__h.forEach(Ut),t.__H.__h=[]}catch(e){t.__H.__h=[],w.__e(e,t.__v)}}),Ht=[]}w.__b=function(t){L=null,dr&&dr(t)},w.__r=function(t){hr&&hr(t),de=0;var e=(L=t.__c).__H;e&&(e.__h.forEach(ut),e.__h.forEach(Ut),e.__h=[])},w.diffed=function(t){yr&&yr(t);var e=t.__c;e&&e.__H&&e.__H.__h.length&&(Ht.push(e)!==1&&vr===w.requestAnimationFrame||((vr=w.requestAnimationFrame)||function(r){var n,o=function(){clearTimeout(i),Or&&cancelAnimationFrame(n),setTimeout(r)},i=setTimeout(o,100);Or&&(n=requestAnimationFrame(o))})(ko)),L=void 0},w.__c=function(t,e){e.some(function(r){try{r.__h.forEach(ut),r.__h=r.__h.filter(function(n){return!n.__||Ut(n)})}catch(n){e.some(function(o){o.__h&&(o.__h=[])}),e=[],w.__e(n,r.__v)}}),gr&&gr(t,e)},w.unmount=function(t){br&&br(t);var e=t.__c;if(e&&e.__H)try{e.__H.__.forEach(ut)}catch(r){w.__e(r,e.__v)}};var Or=typeof requestAnimationFrame=="function";function ut(t){var e=L;typeof t.__c=="function"&&t.__c(),L=e}function Ut(t){var e=L;t.__c=t.__(),L=e}function er(t,e){return!t||t.length!==e.length||e.some(function(r,n){return r!==t[n]})}function Nn(t,e){return typeof e=="function"?e(t):e}function Tn(t,e){for(var r in e)t[r]=e[r];return t}function Ft(t,e){for(var r in t)if(r!=="__source"&&!(r in e))return!0;for(var n in e)if(n!=="__source"&&t[n]!==e[n])return!0;return!1}function Bt(t){this.props=t}(Bt.prototype=new W).isPureReactComponent=!0,Bt.prototype.shouldComponentUpdate=function(t,e){return Ft(this.props,t)||Ft(this.state,e)};var Sr=w.__b;w.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Sr&&Sr(t)};var Do=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,wr=function(t,e){return t==null?null:$($(t).map(e))},Ao={map:wr,forEach:wr,count:function(t){return t?$(t).length:0},only:function(t){var e=$(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:$},Co=w.__e;function ct(){this.__u=0,this.t=null,this.__b=null}function Rn(t){var e=t.__.__c;return e&&e.__e&&e.__e(t)}function je(){this.u=null,this.o=null}w.__e=function(t,e,r){if(t.then){for(var n,o=e;o=o.__;)if((n=o.__c)&&n.__c)return e.__e==null&&(e.__e=r.__e,e.__k=r.__k),n.__c(t,e)}Co(t,e,r)},(ct.prototype=new W).__c=function(t,e){var r=e.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var o=Rn(n.__v),i=!1,a=function(){i||(i=!0,r.componentWillUnmount=r.__c,o?o(c):c())};r.__c=r.componentWillUnmount,r.componentWillUnmount=function(){a(),r.__c&&r.__c()};var c=function(){if(!--n.__u){if(n.state.__e){var s=n.state.__e;n.__v.__k[0]=function m(p,v,d){return p&&(p.__v=null,p.__k=p.__k&&p.__k.map(function(h){return m(h,v,d)}),p.__c&&p.__c.__P===v&&(p.__e&&d.insertBefore(p.__e,p.__d),p.__c.__e=!0,p.__c.__P=d)),p}(s,s.__c.__P,s.__c.__O)}var l;for(n.setState({__e:n.__b=null});l=n.t.pop();)l.forceUpdate()}},u=e.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),t.then(a,a)},ct.prototype.componentWillUnmount=function(){this.t=[]},ct.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function i(a,c,u){return a&&(a.__c&&a.__c.__H&&(a.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),a.__c.__H=null),(a=Tn({},a)).__c!=null&&(a.__c.__P===u&&(a.__c.__P=c),a.__c=null),a.__k=a.__k&&a.__k.map(function(s){return i(s,c,u)})),a}(this.__b,r,n.__O=n.__P)}this.__b=null}var o=e.__e&&K(X,null,t.fallback);return o&&(o.__h=null),[K(X,null,e.__e?null:t.children),o]};var jr=function(t,e,r){if(++r[1]===r[0]&&t.o.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.o.size))for(r=t.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),e.i.removeChild(n)}}),We(K(xo,{context:e.context},t.__v),e.l)):e.l&&e.componentWillUnmount()}function Ln(t,e){return K(No,{__v:t,i:e})}(je.prototype=new W).__e=function(t){var e=this,r=Rn(e.__v),n=e.o.get(t);return n[0]++,function(o){var i=function(){e.props.revealOrder?(n.push(o),jr(e,t,n)):o()};r?r(i):i()}},je.prototype.render=function(t){this.u=null,this.o=new Map;var e=$(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var r=e.length;r--;)this.o.set(e[r],this.u=[1,0,this.u]);return t.children},je.prototype.componentDidUpdate=je.prototype.componentDidMount=function(){var t=this;this.o.forEach(function(e,r){jr(t,r,e)})};var qn=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,To=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ro=function(t){return(typeof Symbol<"u"&&Ve(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(t)};function Mn(t,e,r){return e.__k==null&&(e.textContent=""),We(t,e),typeof r=="function"&&r(),t?t.__c:null}W.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(W.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Er=w.event;function Lo(){}function qo(){return this.cancelBubble}function Mo(){return this.defaultPrevented}w.event=function(t){return Er&&(t=Er(t)),t.persist=Lo,t.isPropagationStopped=qo,t.isDefaultPrevented=Mo,t.nativeEvent=t};var Hn,Pr={configurable:!0,get:function(){return this.class}},Ir=w.vnode;w.vnode=function(t){var e=t.type,r=t.props,n=r;if(typeof e=="string"){for(var o in n={},r){var i=r[o];o==="value"&&"defaultValue"in r&&i==null||(o==="defaultValue"&&"value"in r&&r.value==null?o="value":o==="download"&&i===!0?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+e)&&!Ro(r.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():To.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():i===null&&(i=void 0),n[o]=i)}e=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=$(r.children).forEach(function(a){a.props.selected=n.value.indexOf(a.props.value)!=-1})),e=="select"&&n.defaultValue!=null&&(n.value=$(r.children).forEach(function(a){a.props.selected=n.multiple?n.defaultValue.indexOf(a.props.value)!=-1:n.defaultValue==a.props.value})),t.props=n}e&&r.class!=r.className&&(Pr.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",Pr)),t.$$typeof=qn,Ir&&Ir(t)};var kr=w.__r;w.__r=function(t){kr&&kr(t),Hn=t.__c};var Ho={ReactCurrentDispatcher:{current:{readContext:function(t){return Hn.__n[t.__c].props.value}}}};(typeof performance>"u"?"undefined":Ve(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Dr(t){return!!t&&t.$$typeof===qn}var f={useState:Gt,useReducer:xn,useEffect:Xt,useLayoutEffect:_r,useRef:function(t){return pe=5,Pt(function(){return{current:t}},[])},useImperativeHandle:function(t,e,r){pe=6,_r(function(){typeof t=="function"?t(e()):t&&(t.current=e())},r==null?r:r.concat(t))},useMemo:Pt,useCallback:function(t,e){return pe=8,Pt(function(){return t},e)},useContext:function(t){var e=L.context[t.__c],r=Je(de++,9);return r.__c=t,e?(r.__==null&&(r.__=!0,e.sub(L)),e.props.value):t.__},useDebugValue:function(t,e){w.useDebugValue&&w.useDebugValue(e?e(t):t)},version:"16.8.0",Children:Ao,render:Mn,hydrate:function(t,e,r){return Cn(t,e),typeof r=="function"&&r(),t?t.__c:null},unmountComponentAtNode:function(t){return!!t.__k&&(We(null,t),!0)},createPortal:Ln,createElement:K,createContext:function(t,e){var r={__c:e="__cC"+Sn++,__:t,Consumer:function(n,o){return n.children(o)},Provider:function(n){var o,i;return this.getChildContext||(o=[],(i={})[e]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(a){this.props.value!==a.value&&o.some(Mt)},this.sub=function(a){o.push(a);var c=a.componentWillUnmount;a.componentWillUnmount=function(){o.splice(o.indexOf(a),1),c&&c.call(a)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r},createFactory:function(t){return K.bind(null,t)},cloneElement:function(t){return Dr(t)?Io.apply(null,arguments):t},createRef:function(){return{current:null}},Fragment:X,isValidElement:Dr,findDOMNode:function(t){return t&&(t.base||t.nodeType===1&&t)||null},Component:W,PureComponent:Bt,memo:function(t,e){function r(o){var i=this.props.ref,a=i==o.ref;return!a&&i&&(i.call?i(null):i.current=null),e?!e(this.props,o)||!a:Ft(this.props,o)}function n(o){return this.shouldComponentUpdate=r,K(t,o)}return n.displayName="Memo("+(t.displayName||t.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n},forwardRef:function(t){function e(r,n){var o=Tn({},r);return delete o.ref,t(o,(n=r.ref||n)&&(Ve(n)!="object"||"current"in n)?n:null)}return e.$$typeof=Do,e.render=e,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e},unstable_batchedUpdates:function(t,e){return t(e)},StrictMode:X,Suspense:ct,SuspenseList:je,lazy:function(t){var e,r,n;function o(i){if(e||(e=t()).then(function(a){r=a.default||a},function(a){n=a}),n)throw n;if(!r)throw e;return K(r,i)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Ho};function Uo(){return f.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},f.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function Un(){return f.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},f.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var Fo=["translations"];function Vt(){return Vt=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var Vo=f.forwardRef(function(t,e){var r=t.translations,n=r===void 0?{}:r,o=Bo(t,Fo),i=n.buttonText,a=i===void 0?"Search":i,c=n.buttonAriaLabel,u=c===void 0?"Search":c,s=Fn(Gt(null),2),l=s[0],m=s[1];return Xt(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?m("⌘"):m("Ctrl"))},[]),f.createElement("button",Vt({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:e}),f.createElement("span",{className:"DocSearch-Button-Container"},f.createElement(Un,null),f.createElement("span",{className:"DocSearch-Button-Placeholder"},a)),f.createElement("span",{className:"DocSearch-Button-Keys"},l!==null&&f.createElement(f.Fragment,null,f.createElement(Cr,{reactsToKey:l==="Ctrl"?"Ctrl":"Meta"},l==="Ctrl"?f.createElement(Uo,null):l),f.createElement(Cr,{reactsToKey:"k"},"K"))))});function Cr(t){var e=t.reactsToKey,r=t.children,n=Fn(Gt(!1),2),o=n[0],i=n[1];return Xt(function(){if(e)return window.addEventListener("keydown",a),window.addEventListener("keyup",c),function(){window.removeEventListener("keydown",a),window.removeEventListener("keyup",c)};function a(u){u.key===e&&i(!0)}function c(u){u.key!==e&&u.key!=="Meta"||i(!1)}},[e]),f.createElement("kbd",{className:o?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},r)}function Bn(t,e){var r=void 0;return function(){for(var n=arguments.length,o=new Array(n),i=0;it.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Rr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function ve(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:20,r=[],n=0;n=3||r===2&&n>=4||r===1&&n>=10);function i(a,c,u){if(o&&u!==void 0){var s=u[0].__autocomplete_algoliaCredentials,l={"X-Algolia-Application-Id":s.appId,"X-Algolia-API-Key":s.apiKey};t.apply(void 0,[a].concat(Ge(c),[{headers:l}]))}else t.apply(void 0,[a].concat(Ge(c)))}return{init:function(a,c){t("init",{appId:a,apiKey:c})},setUserToken:function(a){t("setUserToken",a)},clickedObjectIDsAfterSearch:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("clickedObjectIDsAfterSearch",Xe(c),c[0].items)},clickedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("clickedObjectIDs",Xe(c),c[0].items)},clickedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["clickedFilters"].concat(c))},convertedObjectIDsAfterSearch:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("convertedObjectIDsAfterSearch",Xe(c),c[0].items)},convertedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("convertedObjectIDs",Xe(c),c[0].items)},convertedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["convertedFilters"].concat(c))},viewedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&c.reduce(function(s,l){var m=l.items,p=Kn(l,$o);return[].concat(Ge(s),Ge(Zo(ve(ve({},p),{},{objectIDs:(m==null?void 0:m.map(function(v){return v.objectID}))||p.objectIDs})).map(function(v){return{items:m,payload:v}})))},[]).forEach(function(s){var l=s.items;return i("viewedObjectIDs",[s.payload],l)})},viewedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["viewedFilters"].concat(c))}}}function Go(t){var e=t.items.reduce(function(r,n){var o;return r[n.__autocomplete_indexName]=((o=r[n.__autocomplete_indexName])!==null&&o!==void 0?o:[]).concat(n),r},{});return Object.keys(e).map(function(r){return{index:r,items:e[r],algoliaSource:["autocomplete"]}})}function kt(t){return t.objectID&&t.__autocomplete_indexName&&t.__autocomplete_queryID}function De(t){return De=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(t)}function ie(t){return function(e){if(Array.isArray(e))return Dt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||function(e,r){if(e){if(typeof e=="string")return Dt(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dt(e,r)}}(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Dt(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&ti({onItemsChange:n,items:p,insights:c,state:m}))}},0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(l){var m=l.setContext,p=l.onSelect,v=l.onActive;a("addAlgoliaAgent","insights-plugin"),m({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:c}}),p(function(d){var h=d.item,y=d.state,b=d.event;kt(h)&&o({state:y,event:b,insights:c,item:h,insightsEvents:[G({eventName:"Item Selected"},Nr({item:h,items:u.current}))]})}),v(function(d){var h=d.item,y=d.state,b=d.event;kt(h)&&i({state:y,event:b,insights:c,item:h,insightsEvents:[G({eventName:"Item Active"},Nr({item:h,items:u.current}))]})})},onStateChange:function(l){var m=l.state;s({state:m})},__autocomplete_pluginOptions:t}}function lt(t,e){var r=e;return{then:function(n,o){return lt(t.then(et(n,r,t),et(o,r,t)),r)},catch:function(n){return lt(t.catch(et(n,r,t)),r)},finally:function(n){return n&&r.onCancelList.push(n),lt(t.finally(et(n&&function(){return r.onCancelList=[],n()},r,t)),r)},cancel:function(){r.isCanceled=!0;var n=r.onCancelList;r.onCancelList=[],n.forEach(function(o){o()})},isCanceled:function(){return r.isCanceled===!0}}}function qr(t){return lt(t,{isCanceled:!1,onCancelList:[]})}function et(t,e,r){return t?function(n){return e.isCanceled?n:t(n)}:r}function Mr(t,e,r,n){if(!r)return null;if(t<0&&(e===null||n!==null&&e===0))return r+t;var o=(e===null?-1:e)+t;return o<=-1||o>=r?n===null?null:0:o}function Hr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ur(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r0},reshape:function(i){return i.sources}},t),{},{id:(r=t.id)!==null&&r!==void 0?r:"autocomplete-".concat(Ko++),plugins:o,initialState:ae({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},t.initialState),onStateChange:function(i){var a;(a=t.onStateChange)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onStateChange)===null||u===void 0?void 0:u.call(c,i)})},onSubmit:function(i){var a;(a=t.onSubmit)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onSubmit)===null||u===void 0?void 0:u.call(c,i)})},onReset:function(i){var a;(a=t.onReset)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onReset)===null||u===void 0?void 0:u.call(c,i)})},getSources:function(i){return Promise.all([].concat(ci(o.map(function(a){return a.getSources})),[t.getSources]).filter(Boolean).map(function(a){return function(c,u){var s=[];return Promise.resolve(c(u)).then(function(l){return Promise.all(l.filter(function(m){return!!m}).map(function(m){if(m.sourceId,s.includes(m.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(m.sourceId)," is not unique."));s.push(m.sourceId);var p={getItemInputValue:function(d){return d.state.query},getItemUrl:function(){},onSelect:function(d){(0,d.setIsOpen)(!1)},onActive:vt,onResolve:vt};Object.keys(p).forEach(function(d){p[d].__default=!0});var v=Ur(Ur({},p),m);return Promise.resolve(v)}))})}(a,i)})).then(function(a){return ze(a)}).then(function(a){return a.map(function(c){return ae(ae({},c),{},{onSelect:function(u){c.onSelect(u),e.forEach(function(s){var l;return(l=s.onSelect)===null||l===void 0?void 0:l.call(s,u)})},onActive:function(u){c.onActive(u),e.forEach(function(s){var l;return(l=s.onActive)===null||l===void 0?void 0:l.call(s,u)})},onResolve:function(u){c.onResolve(u),e.forEach(function(s){var l;return(l=s.onResolve)===null||l===void 0?void 0:l.call(s,u)})}})})})},navigator:ae({navigate:function(i){var a=i.itemUrl;n.location.assign(a)},navigateNewTab:function(i){var a=i.itemUrl,c=n.open(a,"_blank","noopener");c==null||c.focus()},navigateNewWindow:function(i){var a=i.itemUrl;n.open(a,"_blank","noopener")}},t.navigator)})}function Te(t){return Te=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Te(t)}function Kr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function rt(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var Jr,xt,ot,we=null,$r=(Jr=-1,xt=-1,ot=void 0,function(t){var e=++Jr;return Promise.resolve(t).then(function(r){return ot&&e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Me(t){return Me=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Me(t)}var Oi=["props","refresh","store"],Si=["inputElement","formElement","panelElement"],wi=["inputElement"],ji=["inputElement","maxLength"],Ei=["sourceIndex"],Pi=["sourceIndex"],Ii=["item","source","sourceIndex"];function Zr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function R(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Di(t){var e=t.props,r=t.refresh,n=t.store,o=re(t,Oi),i=function(a,c){return c!==void 0?"".concat(a,"-").concat(c):a};return{getEnvironmentProps:function(a){var c=a.inputElement,u=a.formElement,s=a.panelElement;function l(m){!n.getState().isOpen&&n.pendingRequests.isEmpty()||m.target===c||[u,s].some(function(p){return v=p,d=m.target,v===d||v.contains(d);var v,d})===!1&&(n.dispatch("blur",null),e.debug||n.pendingRequests.cancelAll())}return R({onTouchStart:l,onMouseDown:l,onTouchMove:function(m){n.getState().isOpen!==!1&&c===e.environment.document.activeElement&&m.target!==c&&c.blur()}},re(a,Si))},getRootProps:function(a){return R({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(e.id,"-list"):void 0,"aria-labelledby":"".concat(e.id,"-label")},a)},getFormProps:function(a){return a.inputElement,R({action:"",noValidate:!0,role:"search",onSubmit:function(c){var u;c.preventDefault(),e.onSubmit(R({event:c,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),(u=a.inputElement)===null||u===void 0||u.blur()},onReset:function(c){var u;c.preventDefault(),e.onReset(R({event:c,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),(u=a.inputElement)===null||u===void 0||u.focus()}},re(a,wi))},getLabelProps:function(a){var c=a||{},u=c.sourceIndex,s=re(c,Ei);return R({htmlFor:"".concat(i(e.id,u),"-input"),id:"".concat(i(e.id,u),"-label")},s)},getInputProps:function(a){var c;function u(y){(e.openOnFocus||n.getState().query)&&le(R({event:y,props:e,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var s=a||{},l=(s.inputElement,s.maxLength),m=l===void 0?512:l,p=re(s,ji),v=fe(n.getState()),d=function(y){return!!(y&&y.match(oi))}(((c=e.environment.navigator)===null||c===void 0?void 0:c.userAgent)||""),h=v!=null&&v.itemUrl&&!d?"go":"search";return R({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&n.getState().activeItemId!==null?"".concat(e.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(e.id,"-list"):void 0,"aria-labelledby":"".concat(e.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(e.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:h,spellCheck:"false",autoFocus:e.autoFocus,placeholder:e.placeholder,maxLength:m,type:"search",onChange:function(y){le(R({event:y,props:e,query:y.currentTarget.value.slice(0,m),refresh:r,store:n},o))},onKeyDown:function(y){(function(b){var _=b.event,S=b.props,O=b.refresh,g=b.store,P=_i(b,gi);if(_.key==="ArrowUp"||_.key==="ArrowDown"){var C=function(){var M=S.environment.document.getElementById("".concat(S.id,"-item-").concat(g.getState().activeItemId));M&&(M.scrollIntoViewIfNeeded?M.scrollIntoViewIfNeeded(!1):M.scrollIntoView(!1))},q=function(){var M=fe(g.getState());if(g.getState().activeItemId!==null&&M){var Ot=M.item,St=M.itemInputValue,$e=M.itemUrl,B=M.source;B.onActive(te({event:_,item:Ot,itemInputValue:St,itemUrl:$e,refresh:O,source:B,state:g.getState()},P))}};_.preventDefault(),g.getState().isOpen===!1&&(S.openOnFocus||g.getState().query)?le(te({event:_,props:S,query:g.getState().query,refresh:O,store:g},P)).then(function(){g.dispatch(_.key,{nextActiveItemId:S.defaultActiveItemId}),q(),setTimeout(C,0)}):(g.dispatch(_.key,{}),q(),C())}else if(_.key==="Escape")_.preventDefault(),g.dispatch(_.key,null),g.pendingRequests.cancelAll();else if(_.key==="Tab")g.dispatch("blur",null),g.pendingRequests.cancelAll();else if(_.key==="Enter"){if(g.getState().activeItemId===null||g.getState().collections.every(function(M){return M.items.length===0}))return void(S.debug||g.pendingRequests.cancelAll());_.preventDefault();var x=fe(g.getState()),D=x.item,N=x.itemInputValue,U=x.itemUrl,F=x.source;if(_.metaKey||_.ctrlKey)U!==void 0&&(F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),S.navigator.navigateNewTab({itemUrl:U,item:D,state:g.getState()}));else if(_.shiftKey)U!==void 0&&(F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),S.navigator.navigateNewWindow({itemUrl:U,item:D,state:g.getState()}));else if(!_.altKey){if(U!==void 0)return F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),void S.navigator.navigate({itemUrl:U,item:D,state:g.getState()});le(te({event:_,nextState:{isOpen:!1},props:S,query:N,refresh:O,store:g},P)).then(function(){F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P))})}}})(R({event:y,props:e,refresh:r,store:n},o))},onFocus:u,onBlur:vt,onClick:function(y){a.inputElement!==e.environment.document.activeElement||n.getState().isOpen||u(y)}},p)},getPanelProps:function(a){return R({onMouseDown:function(c){c.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},a)},getListProps:function(a){var c=a||{},u=c.sourceIndex,s=re(c,Pi);return R({role:"listbox","aria-labelledby":"".concat(i(e.id,u),"-label"),id:"".concat(i(e.id,u),"-list")},s)},getItemProps:function(a){var c=a.item,u=a.source,s=a.sourceIndex,l=re(a,Ii);return R({id:"".concat(i(e.id,s),"-item-").concat(c.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===c.__autocomplete_id,onMouseMove:function(m){if(c.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",c.__autocomplete_id);var p=fe(n.getState());if(n.getState().activeItemId!==null&&p){var v=p.item,d=p.itemInputValue,h=p.itemUrl,y=p.source;y.onActive(R({event:m,item:v,itemInputValue:d,itemUrl:h,refresh:r,source:y,state:n.getState()},o))}}},onMouseDown:function(m){m.preventDefault()},onClick:function(m){var p=u.getItemInputValue({item:c,state:n.getState()}),v=u.getItemUrl({item:c,state:n.getState()});(v?Promise.resolve():le(R({event:m,nextState:{isOpen:!1},props:e,query:p,refresh:r,store:n},o))).then(function(){u.onSelect(R({event:m,item:c,itemInputValue:p,itemUrl:v,refresh:r,source:u,state:n.getState()},o))})}},l)}}}function He(t){return He=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(t)}function Yr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ai(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Gi(t){var e=t.translations,r=e===void 0?{}:e,n=Yi(t,Qi),o=r.noResultsText,i=o===void 0?"No results for":o,a=r.suggestedQueryText,c=a===void 0?"Try searching for":a,u=r.reportMissingResultsText,s=u===void 0?"Believe this query should return results?":u,l=r.reportMissingResultsLinkText,m=l===void 0?"Let us know.":l,p=n.state.context.searchSuggestions;return f.createElement("div",{className:"DocSearch-NoResults"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement(Ji,null)),f.createElement("p",{className:"DocSearch-Title"},i,' "',f.createElement("strong",null,n.state.query),'"'),p&&p.length>0&&f.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},f.createElement("p",{className:"DocSearch-Help"},c,":"),f.createElement("ul",null,p.slice(0,3).reduce(function(v,d){return[].concat(Zi(v),[f.createElement("li",{key:d},f.createElement("button",{className:"DocSearch-Prefill",key:d,type:"button",onClick:function(){n.setQuery(d.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},d))])},[]))),n.getMissingResultsUrl&&f.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),f.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var Xi=["hit","attribute","tagName"];function rn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function nn(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function on(t,e){return e.split(".").reduce(function(r,n){return r!=null&&r[n]?r[n]:null},t)}function ce(t){var e=t.hit,r=t.attribute,n=t.tagName;return K(n===void 0?"span":n,nn(nn({},ta(t,Xi)),{},{dangerouslySetInnerHTML:{__html:on(e,"_snippetResult.".concat(r,".value"))||on(e,r)}}))}function an(t,e){return function(r){if(Array.isArray(r))return r}(t)||function(r,n){var o=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(o!=null){var i,a,c=[],u=!0,s=!1;try{for(o=o.call(r);!(u=(i=o.next()).done)&&(c.push(i.value),!n||c.length!==n);u=!0);}catch(l){s=!0,a=l}finally{try{u||o.return==null||o.return()}finally{if(s)throw a}}return c}}(t,e)||function(r,n){if(r){if(typeof r=="string")return un(r,n);var o=Object.prototype.toString.call(r).slice(8,-1);if(o==="Object"&&r.constructor&&(o=r.constructor.name),o==="Map"||o==="Set")return Array.from(r);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return un(r,n)}}(t,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function un(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r|<\/mark>)/g,oa=RegExp($n.source);function Qn(t){var e,r,n=t;if(!n.__docsearch_parent&&!t._highlightResult)return t.hierarchy.lvl0;var o=((n.__docsearch_parent?(e=n.__docsearch_parent)===null||e===void 0||(e=e._highlightResult)===null||e===void 0||(e=e.hierarchy)===null||e===void 0?void 0:e.lvl0:(r=t._highlightResult)===null||r===void 0||(r=r.hierarchy)===null||r===void 0?void 0:r.lvl0)||{}).value;return o&&oa.test(o)?o.replace($n,""):o}function Jt(){return Jt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function ca(t){var e=t.translations,r=e===void 0?{}:e,n=ua(t,aa),o=r.recentSearchesTitle,i=o===void 0?"Recent":o,a=r.noRecentSearchesText,c=a===void 0?"No recent searches":a,u=r.saveRecentSearchButtonTitle,s=u===void 0?"Save this search":u,l=r.removeRecentSearchButtonTitle,m=l===void 0?"Remove this search from history":l,p=r.favoriteSearchesTitle,v=p===void 0?"Favorite":p,d=r.removeFavoriteSearchButtonTitle,h=d===void 0?"Remove this search from favorites":d;return n.state.status==="idle"&&n.hasCollections===!1?n.disableUserPersonalization?null:f.createElement("div",{className:"DocSearch-StartScreen"},f.createElement("p",{className:"DocSearch-Help"},c)):n.hasCollections===!1?null:f.createElement("div",{className:"DocSearch-Dropdown-Container"},f.createElement(zt,ht({},n,{title:i,collection:n.state.collections[0],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(Ui,null))},renderAction:function(y){var b=y.item,_=y.runFavoriteTransition,S=y.runDeleteTransition;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),_(function(){n.favoriteSearches.add(b),n.recentSearches.remove(b),n.refresh()})}},f.createElement(tn,null))),f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),S(function(){n.recentSearches.remove(b),n.refresh()})}},f.createElement(Wt,null))))}})),f.createElement(zt,ht({},n,{title:v,collection:n.state.collections[1],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(tn,null))},renderAction:function(y){var b=y.item,_=y.runDeleteTransition;return f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),_(function(){n.favoriteSearches.remove(b),n.refresh()})}},f.createElement(Wt,null)))}})))}var la=["translations"];function yt(){return yt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var fa=f.memo(function(t){var e=t.translations,r=e===void 0?{}:e,n=sa(t,la);if(n.state.status==="error")return f.createElement($i,{translations:r==null?void 0:r.errorScreen});var o=n.state.collections.some(function(i){return i.items.length>0});return n.state.query?o===!1?f.createElement(Gi,yt({},n,{translations:r==null?void 0:r.noResultsScreen})):f.createElement(ia,n):f.createElement(ca,yt({},n,{hasCollections:o,translations:r==null?void 0:r.startScreen}))},function(t,e){return e.state.status==="loading"||e.state.status==="stalled"}),ma=["translations"];function gt(){return gt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function va(t){var e=t.translations,r=e===void 0?{}:e,n=pa(t,ma),o=r.resetButtonTitle,i=o===void 0?"Clear the query":o,a=r.resetButtonAriaLabel,c=a===void 0?"Clear the query":a,u=r.cancelButtonText,s=u===void 0?"Cancel":u,l=r.cancelButtonAriaLabel,m=l===void 0?"Cancel":l,p=r.searchInputLabel,v=p===void 0?"Search":p,d=n.getFormProps({inputElement:n.inputRef.current}).onReset;return f.useEffect(function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()},[n.autoFocus,n.inputRef]),f.useEffect(function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()},[n.isFromSelection,n.inputRef]),f.createElement(f.Fragment,null,f.createElement("form",{className:"DocSearch-Form",onSubmit:function(h){h.preventDefault()},onReset:d},f.createElement("label",gt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),f.createElement(Un,null),f.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},v)),f.createElement("div",{className:"DocSearch-LoadingIndicator"},f.createElement(Hi,null)),f.createElement("input",gt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:64}))),f.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":c,hidden:!n.state.query},f.createElement(Wt,null))),f.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":m,onClick:n.onClose},s))}var da=["_highlightResult","_snippetResult"];function ha(t,e){if(t==null)return{};var r,n,o=function(a,c){if(a==null)return{};var u,s,l={},m=Object.keys(a);for(s=0;s=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function ya(t){return function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(e){return window.localStorage.setItem(t,JSON.stringify(e))},getItem:function(){var e=window.localStorage.getItem(t);return e?JSON.parse(e):[]}}}function sn(t){var e=t.key,r=t.limit,n=r===void 0?5:r,o=ya(e),i=o.getItem().slice(0,n);return{add:function(a){var c=a,u=(c._highlightResult,c._snippetResult,ha(c,da)),s=i.findIndex(function(l){return l.objectID===u.objectID});s>-1&&i.splice(s,1),i.unshift(u),i=i.slice(0,n),o.setItem(i)},remove:function(a){i=i.filter(function(c){return c.objectID!==a.objectID}),o.setItem(i)},getAll:function(){return i}}}var ga=["facetName","facetQuery"];function ba(t){var e,r="algoliasearch-client-js-".concat(t.key),n=function(){return e===void 0&&(e=t.localStorage||window.localStorage),e},o=function(){return JSON.parse(n().getItem(r)||"{}")},i=function(c){n().setItem(r,JSON.stringify(c))},a=function(){var c=t.timeToLive?1e3*t.timeToLive:null,u=o(),s=Object.fromEntries(Object.entries(u).filter(function(m){return se(m,2)[1].timestamp!==void 0}));if(i(s),c){var l=Object.fromEntries(Object.entries(s).filter(function(m){var p=se(m,2)[1],v=new Date().getTime();return!(p.timestamp+c2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){a();var l=JSON.stringify(c);return o()[l]}).then(function(l){return Promise.all([l?l.value:u(),l!==void 0])}).then(function(l){var m=se(l,2),p=m[0],v=m[1];return Promise.all([p,v||s.miss(p)])}).then(function(l){return se(l,1)[0]})},set:function(c,u){return Promise.resolve().then(function(){var s=o();return s[JSON.stringify(c)]={timestamp:new Date().getTime(),value:u},n().setItem(r,JSON.stringify(s)),u})},delete:function(c){return Promise.resolve().then(function(){var u=o();delete u[JSON.stringify(c)],n().setItem(r,JSON.stringify(u))})},clear:function(){return Promise.resolve().then(function(){n().removeItem(r)})}}}function Ee(t){var e=ft(t.caches),r=e.shift();return r===void 0?{get:function(n,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(a){return Promise.all([a,i.miss(a)])}).then(function(a){return se(a,1)[0]})},set:function(n,o){return Promise.resolve(o)},delete:function(n){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(n,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(n,o,i).catch(function(){return Ee({caches:e}).get(n,o,i)})},set:function(n,o){return r.set(n,o).catch(function(){return Ee({caches:e}).set(n,o)})},delete:function(n){return r.delete(n).catch(function(){return Ee({caches:e}).delete(n)})},clear:function(){return r.clear().catch(function(){return Ee({caches:e}).clear()})}}}function Tt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},e={};return{get:function(r,n){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},i=JSON.stringify(r);if(i in e)return Promise.resolve(t.serializable?JSON.parse(e[i]):e[i]);var a=n(),c=o&&o.miss||function(){return Promise.resolve()};return a.then(function(u){return c(u)}).then(function(){return a})},set:function(r,n){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function _a(t){for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function Zn(t,e){return e&&Object.keys(e).forEach(function(r){t[r]=e[r](t)}),t}function bt(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n0?n:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var me={Read:1,Write:2,Any:3},Yn=1,Oa=2,Gn=3;function Xn(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Yn;return I(I({},t),{},{status:e,lastUpdate:Date.now()})}function eo(t){return typeof t=="string"?{protocol:"https",url:t,accept:me.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||me.Any}}var $t="GET",_t="POST";function Sa(t,e){return Promise.all(e.map(function(r){return t.get(r,function(){return Promise.resolve(Xn(r))})})).then(function(r){var n=r.filter(function(a){return function(c){return c.status===Yn||Date.now()-c.lastUpdate>12e4}(a)}),o=r.filter(function(a){return function(c){return c.status===Gn&&Date.now()-c.lastUpdate<=12e4}(a)}),i=[].concat(ft(n),ft(o));return{getTimeout:function(a,c){return(o.length===0&&a===0?1:o.length+3+a)*c},statelessHosts:i.length>0?i.map(function(a){return eo(a)}):e}})}function mn(t,e,r,n){var o=[],i=function(p,v){if(!(p.method===$t||p.data===void 0&&v.data===void 0)){var d=Array.isArray(p.data)?p.data:I(I({},p.data),v.data);return JSON.stringify(d)}}(r,n),a=function(p,v){var d=I(I({},p.headers),v.headers),h={};return Object.keys(d).forEach(function(y){var b=d[y];h[y.toLowerCase()]=b}),h}(t,n),c=r.method,u=r.method!==$t?{}:I(I({},r.data),n.data),s=I(I(I({"x-algolia-agent":t.userAgent.value},t.queryParameters),u),n.queryParameters),l=0,m=function p(v,d){var h=v.pop();if(h===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:pn(o)};var y={data:i,headers:a,method:c,url:ja(h,r.path,s),connectTimeout:d(l,t.timeouts.connect),responseTimeout:d(l,n.timeout)},b=function(S){var O={request:y,response:S,host:h,triesLeft:v.length};return o.push(O),O},_={onSuccess:function(S){return function(O){try{return JSON.parse(O.content)}catch(g){throw function(P,C){return{name:"DeserializationError",message:P,response:C}}(g.message,O)}}(S)},onRetry:function(S){var O=b(S);return S.isTimedOut&&l++,Promise.all([t.logger.info("Retryable failure",ro(O)),t.hostsCache.set(h,Xn(h,S.isTimedOut?Gn:Oa))]).then(function(){return p(v,d)})},onFail:function(S){throw b(S),function(O,g){var P=O.content,C=O.status,q=P;try{q=JSON.parse(P).message}catch{}return function(x,D,N){return{name:"ApiError",message:x,status:D,transporterStackTrace:N}}(q,C,g)}(S,pn(o))}};return t.requester.send(y).then(function(S){return function(O,g){return function(P){var C=P.status;return P.isTimedOut||function(q){var x=q.isTimedOut,D=q.status;return!x&&~~D==0}(P)||~~(C/100)!=2&&~~(C/100)!=4}(O)?g.onRetry(O):~~(O.status/100)==2?g.onSuccess(O):g.onFail(O)}(S,_)})};return Sa(t.hostsCache,e).then(function(p){return m(ft(p.statelessHosts).reverse(),p.getTimeout)})}function wa(t){var e={value:"Algolia for JavaScript (".concat(t,")"),add:function(r){var n="; ".concat(r.segment).concat(r.version!==void 0?" (".concat(r.version,")"):"");return e.value.indexOf(n)===-1&&(e.value="".concat(e.value).concat(n)),e}};return e}function ja(t,e,r){var n=to(r),o="".concat(t.protocol,"://").concat(t.url,"/").concat(e.charAt(0)==="/"?e.substr(1):e);return n.length&&(o+="?".concat(n)),o}function to(t){return Object.keys(t).map(function(e){return bt("%s=%s",e,(r=t[e],Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]"?JSON.stringify(t[e]):t[e]));var r}).join("&")}function pn(t){return t.map(function(e){return ro(e)})}function ro(t){var e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return I(I({},t),{},{request:I(I({},t.request),{},{headers:I(I({},t.request.headers),e)})})}var Ea=function(t){var e=t.appId,r=function(i,a,c){var u={"x-algolia-api-key":c,"x-algolia-application-id":a};return{headers:function(){return i===st.WithinHeaders?u:{}},queryParameters:function(){return i===st.WithinQueryParameters?u:{}}}}(t.authMode!==void 0?t.authMode:st.WithinHeaders,e,t.apiKey),n=function(i){var a=i.hostsCache,c=i.logger,u=i.requester,s=i.requestsCache,l=i.responsesCache,m=i.timeouts,p=i.userAgent,v=i.hosts,d=i.queryParameters,h={hostsCache:a,logger:c,requester:u,requestsCache:s,responsesCache:l,timeouts:m,userAgent:p,headers:i.headers,queryParameters:d,hosts:v.map(function(y){return eo(y)}),read:function(y,b){var _=fn(b,h.timeouts.read),S=function(){return mn(h,h.hosts.filter(function(g){return(g.accept&me.Read)!=0}),y,_)};if((_.cacheable!==void 0?_.cacheable:y.cacheable)!==!0)return S();var O={request:y,mappedRequestOptions:_,transporter:{queryParameters:h.queryParameters,headers:h.headers}};return h.responsesCache.get(O,function(){return h.requestsCache.get(O,function(){return h.requestsCache.set(O,S()).then(function(g){return Promise.all([h.requestsCache.delete(O),g])},function(g){return Promise.all([h.requestsCache.delete(O),Promise.reject(g)])}).then(function(g){var P=se(g,2);return P[0],P[1]})})},{miss:function(g){return h.responsesCache.set(O,g)}})},write:function(y,b){return mn(h,h.hosts.filter(function(_){return(_.accept&me.Write)!=0}),y,fn(b,h.timeouts.write))}};return h}(I(I({hosts:[{url:"".concat(e,"-dsn.algolia.net"),accept:me.Read},{url:"".concat(e,".algolia.net"),accept:me.Write}].concat(_a([{url:"".concat(e,"-1.algolianet.com")},{url:"".concat(e,"-2.algolianet.com")},{url:"".concat(e,"-3.algolianet.com")}]))},t),{},{headers:I(I(I({},r.headers()),{"content-type":"application/x-www-form-urlencoded"}),t.headers),queryParameters:I(I({},r.queryParameters()),t.queryParameters)})),o={transporter:n,appId:e,addAlgoliaAgent:function(i,a){n.userAgent.add({segment:i,version:a})},clearCache:function(){return Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then(function(){})}};return Zn(o,t.methods)},Pa=function(t){return function(e,r){return e.method===$t?t.transporter.read(e,r):t.transporter.write(e,r)}},no=function(t){return function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={transporter:t.transporter,appId:t.appId,indexName:e};return Zn(n,r.methods)}},vn=function(t){return function(e,r){var n=e.map(function(o){return I(I({},o),{},{params:to(o.params||{})})});return t.transporter.read({method:_t,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)}},dn=function(t){return function(e,r){return Promise.all(e.map(function(n){var o=n.params,i=o.facetName,a=o.facetQuery,c=wo(o,ga);return no(t)(n.indexName,{methods:{searchForFacetValues:oo}}).searchForFacetValues(i,a,I(I({},r),c))}))}},Ia=function(t){return function(e,r,n){return t.transporter.read({method:_t,path:bt("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},n)}},ka=function(t){return function(e,r){return t.transporter.read({method:_t,path:bt("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r)}},oo=function(t){return function(e,r,n){return t.transporter.read({method:_t,path:bt("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},n)}},Da=1,Aa=2,Ca=3;function io(t,e,r){var n,o={appId:t,apiKey:e,timeouts:{connect:1,read:2,write:30},requester:{send:function(i){return new Promise(function(a){var c=new XMLHttpRequest;c.open(i.method,i.url,!0),Object.keys(i.headers).forEach(function(m){return c.setRequestHeader(m,i.headers[m])});var u,s=function(m,p){return setTimeout(function(){c.abort(),a({status:0,content:p,isTimedOut:!0})},1e3*m)},l=s(i.connectTimeout,"Connection timeout");c.onreadystatechange=function(){c.readyState>c.OPENED&&u===void 0&&(clearTimeout(l),u=s(i.responseTimeout,"Socket timeout"))},c.onerror=function(){c.status===0&&(clearTimeout(l),clearTimeout(u),a({content:c.responseText||"Network request failed",status:c.status,isTimedOut:!1}))},c.onload=function(){clearTimeout(l),clearTimeout(u),a({content:c.responseText,status:c.status,isTimedOut:!1})},c.send(i.data)})}},logger:(n=Ca,{debug:function(i,a){return Da>=n&&console.debug(i,a),Promise.resolve()},info:function(i,a){return Aa>=n&&console.info(i,a),Promise.resolve()},error:function(i,a){return console.error(i,a),Promise.resolve()}}),responsesCache:Tt(),requestsCache:Tt({serializable:!1}),hostsCache:Ee({caches:[ba({key:"".concat("4.19.1","-").concat(t)}),Tt()]}),userAgent:wa("4.19.1").add({segment:"Browser",version:"lite"}),authMode:st.WithinQueryParameters};return Ea(I(I(I({},o),r),{},{methods:{search:vn,searchForFacetValues:dn,multipleQueries:vn,multipleSearchForFacetValues:dn,customRequest:Pa,initIndex:function(i){return function(a){return no(i)(a,{methods:{search:ka,searchForFacetValues:oo,findAnswers:Ia}})}}}}))}io.version="4.19.1";var xa=["footer","searchBox"];function Be(){return Be=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function La(t){var e=t.appId,r=t.apiKey,n=t.indexName,o=t.placeholder,i=o===void 0?"Search docs":o,a=t.searchParameters,c=t.maxResultsPerGroup,u=t.onClose,s=u===void 0?na:u,l=t.transformItems,m=l===void 0?ln:l,p=t.hitComponent,v=p===void 0?Mi:p,d=t.resultsFooterComponent,h=d===void 0?function(){return null}:d,y=t.navigator,b=t.initialScrollY,_=b===void 0?0:b,S=t.transformSearchClient,O=S===void 0?ln:S,g=t.disableUserPersonalization,P=g!==void 0&&g,C=t.initialQuery,q=C===void 0?"":C,x=t.translations,D=x===void 0?{}:x,N=t.getMissingResultsUrl,U=t.insights,F=U!==void 0&&U,M=D.footer,Ot=D.searchBox,St=Ra(D,xa),$e=Ta(f.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=$e[0],ao=$e[1],tr=f.useRef(null),wt=f.useRef(null),rr=f.useRef(null),Qe=f.useRef(null),he=f.useRef(null),Q=f.useRef(10),nr=f.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,ee=f.useRef(q||nr).current,or=function(j,k,T){return f.useMemo(function(){var H=io(j,k);return H.addAlgoliaAgent("docsearch","3.6.0"),/docsearch.js \(.*\)/.test(H.transporter.userAgent.value)===!1&&H.addAlgoliaAgent("docsearch-react","3.6.0"),T(H)},[j,k,T])}(e,r,O),oe=f.useRef(sn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,ye=f.useRef(sn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:oe.getAll().length===0?7:4})).current,ge=f.useCallback(function(j){if(!P){var k=j.type==="content"?j.__docsearch_parent:j;k&&oe.getAll().findIndex(function(T){return T.objectID===k.objectID})===-1&&ye.add(k)}},[oe,ye,P]),uo=f.useCallback(function(j){if(B.context.algoliaInsightsPlugin&&j.__autocomplete_id){var k=j,T={eventName:"Item Selected",index:k.__autocomplete_indexName,items:[k],positions:[j.__autocomplete_id],queryID:k.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(T)}},[B.context.algoliaInsightsPlugin]),be=f.useMemo(function(){return Ri({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:ee,context:{searchSuggestions:[]}},insights:F,navigator:y,onStateChange:function(j){ao(j.state)},getSources:function(j){var k=j.query,T=j.state,H=j.setContext,Z=j.setStatus;if(!k)return P?[]:[{sourceId:"recentSearches",onSelect:function(A){var V=A.item,_e=A.event;ge(V),at(_e)||s()},getItemUrl:function(A){return A.item.url},getItems:function(){return ye.getAll()}},{sourceId:"favoriteSearches",onSelect:function(A){var V=A.item,_e=A.event;ge(V),at(_e)||s()},getItemUrl:function(A){return A.item.url},getItems:function(){return oe.getAll()}}];var Y=!!F;return or.search([{query:k,indexName:n,params:Rt({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(Q.current),"hierarchy.lvl2:".concat(Q.current),"hierarchy.lvl3:".concat(Q.current),"hierarchy.lvl4:".concat(Q.current),"hierarchy.lvl5:".concat(Q.current),"hierarchy.lvl6:".concat(Q.current),"content:".concat(Q.current)],snippetEllipsisText:"…",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:Y},a)}]).catch(function(A){throw A.name==="RetryError"&&Z("error"),A}).then(function(A){var V=A.results[0],_e=V.hits,so=V.nbHits,jt=cn(_e,function(Et){return Qn(Et)},c);T.context.searchSuggestions.length0&&(ir(),he.current&&he.current.focus())},[ee,ir]),f.useEffect(function(){function j(){if(wt.current){var k=.01*window.innerHeight;wt.current.style.setProperty("--docsearch-vh","".concat(k,"px"))}}return j(),window.addEventListener("resize",j),function(){window.removeEventListener("resize",j)}},[]),f.createElement("div",Be({ref:tr},lo({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",B.status==="stalled"&&"DocSearch-Container--Stalled",B.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(j){j.target===j.currentTarget&&s()}}),f.createElement("div",{className:"DocSearch-Modal",ref:wt},f.createElement("header",{className:"DocSearch-SearchBar",ref:rr},f.createElement(va,Be({},be,{state:B,autoFocus:ee.length===0,inputRef:he,isFromSelection:!!ee&&ee===nr,translations:Ot,onClose:s}))),f.createElement("div",{className:"DocSearch-Dropdown",ref:Qe},f.createElement(fa,Be({},be,{indexName:n,state:B,hitComponent:v,resultsFooterComponent:h,disableUserPersonalization:P,recentSearches:ye,favoriteSearches:oe,inputRef:he,translations:St,getMissingResultsUrl:N,onItemClick:function(j,k){uo(j),ge(j),at(k)||s()}}))),f.createElement("footer",{className:"DocSearch-Footer"},f.createElement(qi,{translations:M}))))}function Qt(){return Qt=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&arguments[1]!==void 0?arguments[1]:window;return typeof e=="string"?r.document.querySelector(e):e}(t.container,t.environment))}const Ha={id:"docsearch"},Ba=mo({__name:"VPAlgoliaSearchBox",props:{algolia:{}},setup(t){const e=t,r=po(),n=vo(),{site:o,localeIndex:i,lang:a}=Oo();ho(c),yo(i,c);async function c(){var v,d;await go();const l={...e.algolia,...(v=e.algolia.locales)==null?void 0:v[i.value]},m=((d=l.searchParameters)==null?void 0:d.facetFilters)??[],p=[...(Array.isArray(m)?m:[m]).filter(h=>!h.startsWith("lang:")),`lang:${a.value}`];u({...l,searchParameters:{...l.searchParameters,facetFilters:p}})}function u(l){const m=Object.assign({},l,{container:"#docsearch",navigator:{navigate({itemUrl:p}){const{pathname:v}=new URL(window.location.origin+p);n.path===v?window.location.assign(window.location.origin+p):r.go(p)}},transformItems(p){return p.map(v=>Object.assign({},v,{url:s(v.url)}))},hitComponent({hit:p,children:v}){return{__v:null,type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:p.url,children:v}}}});Ma(m)}function s(l){const{pathname:m,hash:p}=new URL(l,location.origin);return m.replace(/\.html$/,o.value.cleanUrls?"":".html")+p}return(l,m)=>(bo(),_o("div",Ha))}});export{Ba as default}; diff --git a/assets/chunks/abap.DXFkqnOI.js b/assets/chunks/abap.DXFkqnOI.js new file mode 100644 index 000000000..687c4ad26 --- /dev/null +++ b/assets/chunks/abap.DXFkqnOI.js @@ -0,0 +1,816 @@ +const n=Object.freeze({displayName:"ABAP",fileTypes:["abap","ABAP"],foldingStartMarker:"/\\*\\*|\\{\\s*$",foldingStopMarker:"\\*\\*/|^\\s*\\}",name:"abap",patterns:[{captures:{1:{name:"punctuation.definition.comment.abap"}},match:"^\\*.*\\n?",name:"comment.line.full.abap"},{captures:{1:{name:"punctuation.definition.comment.abap"}},match:'".*\\n?',name:"comment.line.partial.abap"},{match:"(?|=>))([a-z_\\/][a-z_0-9\\/]*)(?=\\s+(?:=|\\+=|-=|\\*=|\\/=|&&=|&=)\\s+)",name:"variable.other.abap"},{match:"\\b[0-9]+(\\b|\\.|,)",name:"constant.numeric.abap"},{match:"(?ix)(^|\\s+)((PUBLIC|PRIVATE|PROTECTED)\\sSECTION)(?=\\s+|:|\\.)",name:"storage.modifier.class.abap"},{begin:"(?]*)+(?=\\s+|\\.)"},{begin:"(?=[A-Za-z_][A-Za-z0-9_]*)",end:"(?![A-Za-z0-9_])",patterns:[{include:"#generic_names"}]}]},{begin:"(?ix)^\\s*(INTERFACE)\\s([a-z_\\/][a-z_0-9\\/]*)",beginCaptures:{1:{name:"storage.type.block.abap"},2:{name:"entity.name.type.abap"}},end:"\\s*\\.\\s*\\n?",patterns:[{match:"(?ix)(?<=^|\\s)(DEFERRED|PUBLIC)(?=\\s+|\\.)",name:"storage.modifier.method.abap"}]},{begin:"(?ix)^\\s*(FORM)\\s([a-z_\\/][a-z_0-9\\/\\-\\?]*)",beginCaptures:{1:{name:"storage.type.block.abap"},2:{name:"entity.name.type.abap"}},end:"\\s*\\.\\s*\\n?",patterns:[{match:"(?ix)(?<=^|\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\s+|\\.)",name:"storage.modifier.form.abap"},{include:"#abaptypes"},{include:"#keywords_followed_by_braces"}]},{match:"(?i)(endclass|endmethod|endform|endinterface)",name:"storage.type.block.end.abap"},{match:"(?i)(<[A-Za-z_][A-Za-z0-9_]*>)",name:"variable.other.field.symbol.abap"},{include:"#keywords"},{include:"#abap_constants"},{include:"#reserved_names"},{include:"#operators"},{include:"#builtin_functions"},{include:"#abaptypes"},{include:"#system_fields"},{include:"#sql_functions"},{include:"#sql_types"}],repository:{abap_constants:{match:`(?ix)(?<=\\s)(initial|null|space|abap_true|abap_false|abap_undefined|table_line| +%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total| +adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=\\s|\\.|,)`,name:"constant.language.abap"},abaptypes:{patterns:[{match:"(?ix)\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|c|n|i|p|f|d|t|x)(?=\\s|\\.|,)",name:"support.type.abap"},{match:"(?ix)\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=\\s|\\.|,)",name:"keyword.control.simple.abap"}]},arithmetic_operator:{match:"(?i)(?<=\\s)(\\+|\\-|\\*|\\*\\*|\\/|%|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\s)",name:"keyword.control.simple.abap"},builtin_functions:{match:"(?ix)(?<=\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\()",name:"entity.name.function.builtin.abap"},comparison_operator:{match:"(?i)(?<=\\s)(<|>|<\\=|>\\=|\\=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|o|z|m)(?=\\s)",name:"keyword.control.simple.abap"},control_keywords:{match:`(?ix)(^|\\s)( +at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif| +endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=\\s|\\.|:)`,name:"keyword.control.flow.abap"},generic_names:{match:"[A-Za-z_][A-Za-z0-9_]*"},keywords:{patterns:[{include:"#main_keywords"},{include:"#text_symbols"},{include:"#control_keywords"},{include:"#keywords_followed_by_braces"}]},keywords_followed_by_braces:{captures:{1:{name:"keyword.control.simple.abap"},2:{name:"variable.other.abap"}},match:"(?ix)\\b(data|value|field-symbol|final|reference|resumable)\\((?)\\)"},logical_operator:{match:"(?i)(?<=\\s)(not|or|and)(?=\\s)",name:"keyword.control.simple.abap"},main_keywords:{match:`(?ix)(?<=^|\\s)( +abap-source| +abstract| +accept| +accepting| +access| +according| +action| +activation| +actual| +add| +add-corresponding| +adjacent| +alias| +aliases| +align| +all| +allocate| +alpha| +amdp| +analysis| +analyzer| +append| +appending| +application| +archive| +area| +arithmetic| +as| +ascending| +assert| +assign| +assigned| +assigning| +association| +asynchronous| +at| +attributes| +authority| +authority-check| +authorization| +auto| +back| +background| +backward| +badi| +base| +before| +begin| +behavior| +between| +binary| +bit| +blank| +blanks| +block| +blocks| +bound| +boundaries| +bounds| +boxed| +break| +break-point| +buffer| +by| +bypassing| +byte| +byte-order| +call| +calling| +cast| +casting| +cds| +center| +centered| +change| +changing| +channels| +char-to-hex| +character| +check| +checkbox| +cid| +circular| +class| +class-data| +class-events| +class-method| +class-methods| +class-pool| +cleanup| +clear| +client| +clients| +clock| +clone| +close| +cnt| +code| +collect| +color| +column| +comment| +comments| +commit| +common| +communication| +comparing| +component| +components| +compression| +compute| +concatenate| +cond| +condense| +condition| +connection| +constant| +constants| +context| +contexts| +control| +controls| +conv| +conversion| +convert| +copy| +corresponding| +count| +country| +cover| +create| +currency| +current| +cursor| +customer-function| +data| +database| +datainfo| +dataset| +date| +daylight| +ddl| +deallocate| +decimals| +declarations| +deep| +default| +deferred| +define| +delete| +deleting| +demand| +descending| +describe| +destination| +detail| +determine| +dialog| +did| +directory| +discarding| +display| +display-mode| +distance| +distinct| +divide| +divide-corresponding| +dummy| +duplicate| +duplicates| +duration| +during| +dynpro| +edit| +editor-call| +empty| +enabled| +enabling| +encoding| +end| +end-enhancement-section| +end-of-definition| +end-of-page| +end-of-selection| +end-test-injection| +end-test-seam| +endenhancement| +endexec| +endfunction| +endian| +ending| +endmodule| +endprovide| +endselect| +endwith| +engineering| +enhancement| +enhancement-point| +enhancement-section| +enhancements| +entities| +entity| +entries| +entry| +enum| +environment| +equiv| +errors| +escape| +escaping| +event| +events| +exact| +except| +exception| +exception-table| +exceptions| +excluding| +exec| +execute| +exists| +exit| +exit-command| +expanding| +explicit| +exponent| +export| +exporting| +extended| +extension| +extract| +fail| +failed| +features| +fetch| +field| +field-groups| +field-symbols| +fields| +file| +fill| +filter| +filters| +final| +find| +first| +first-line| +fixed-point| +flush| +following| +for| +format| +forward| +found| +frame| +frames| +free| +from| +full| +function| +function-pool| +generate| +get| +giving| +graph| +group| +groups| +handle| +handler| +hashed| +having| +header| +headers| +heading| +help-id| +help-request| +hide| +hint| +hold| +hotspot| +icon| +id| +identification| +identifier| +ignore| +ignoring| +immediately| +implemented| +implicit| +import| +importing| +in| +inactive| +incl| +include| +includes| +increment| +index| +index-line| +indicators| +infotypes| +inheriting| +init| +initial| +initialization| +inner| +input| +insert| +instance| +instances| +intensified| +interface| +interface-pool| +interfaces| +internal| +intervals| +into| +inverse| +inverted-date| +is| +iso| +job| +join| +keep| +keeping| +kernel| +key| +keys| +keywords| +kind| +language| +last| +late| +layout| +leading| +leave| +left| +left-justified| +leftplus| +leftspace| +legacy| +length| +let| +level| +levels| +like| +line| +line-count| +line-selection| +line-size| +linefeed| +lines| +link| +list| +list-processing| +listbox| +load| +load-of-program| +local| +locale| +lock| +locks| +log-point| +logical| +lower| +mapped| +mapping| +margin| +mark| +mask| +match| +matchcode| +maximum| +members| +memory| +mesh| +message| +message-id| +messages| +messaging| +method| +methods| +mode| +modif| +modifier| +modify| +module| +move| +move-corresponding| +multiply| +multiply-corresponding| +name| +nametab| +native| +nested| +nesting| +new| +new-line| +new-page| +new-section| +next| +no| +no-display| +no-extension| +no-gap| +no-gaps| +no-grouping| +no-heading| +no-scrolling| +no-sign| +no-title| +no-zero| +nodes| +non-unicode| +non-unique| +number| +object| +objects| +objmgr| +obligatory| +occurence| +occurences| +occurrence| +occurrences| +occurs| +of| +offset| +on| +only| +open| +optional| +option| +options| +order| +others| +out| +outer| +output| +output-length| +overflow| +overlay| +pack| +package| +pad| +padding| +page| +parameter| +parameter-table| +parameters| +part| +partially| +pcre| +perform| +performing| +permissions| +pf-status| +places| +pool| +position| +pragmas| +preceeding| +precompiled| +preferred| +preserving| +primary| +print| +print-control| +private| +privileged| +procedure| +program| +property| +protected| +provide| +push| +pushbutton| +put| +query| +queue-only| +queueonly| +quickinfo| +radiobutton| +raising| +range| +ranges| +read| +read-only| +receive| +received| +receiving| +redefinition| +reduce| +ref| +reference| +refresh| +regex| +reject| +renaming| +replace| +replacement| +replacing| +report| +reported| +request| +requested| +required| +reserve| +reset| +resolution| +respecting| +response| +restore| +result| +results| +resumable| +resume| +retry| +return| +returning| +right| +right-justified| +rightplus| +rightspace| +rollback| +rows| +rp-provide-from-last| +run| +sap| +sap-spool| +save| +saving| +scale_preserving| +scale_preserving_scientific| +scan| +scientific| +scientific_with_leading_zero| +screen| +scroll| +scroll-boundary| +scrolling| +search| +seconds| +section| +select| +select-options| +selection| +selection-screen| +selection-set| +selection-sets| +selection-table| +selections| +send| +separate| +separated| +session| +set| +shared| +shift| +shortdump| +shortdump-id| +sign| +sign_as_postfix| +simple| +simulation| +single| +size| +skip| +skipping| +smart| +some| +sort| +sortable| +sorted| +source| +specified| +split| +spool| +spots| +sql| +stable| +stamp| +standard| +start-of-selection| +starting| +state| +statement| +statements| +static| +statics| +statusinfo| +step| +step-loop| +stop| +structure| +structures| +style| +subkey| +submatches| +submit| +subroutine| +subscreen| +substring| +subtract| +subtract-corresponding| +suffix| +sum| +summary| +supplied| +supply| +suppress| +switch| +symbol| +syntax-check| +syntax-trace| +system-call| +system-exceptions| +tab| +tabbed| +table| +tables| +tableview| +tabstrip| +target| +task| +tasks| +test| +test-injection| +test-seam| +testing| +text| +textpool| +then| +throw| +time| +times| +timestamp| +timezone| +title| +titlebar| +to| +tokens| +top-lines| +top-of-page| +trace-file| +trace-table| +trailing| +transaction| +transfer| +transformation| +translate| +transporting| +trmac| +truncate| +truncation| +type| +type-pool| +type-pools| +types| +uline| +unassign| +unbounded| +under| +unicode| +union| +unique| +unit| +unix| +unpack| +until| +unwind| +up| +update| +upper| +user| +user-command| +using| +utf-8| +uuid| +valid| +validate| +value| +value-request| +values| +vary| +varying| +version| +via| +visible| +wait| +when| +where| +width| +window| +windows| +with| +with-heading| +with-title| +without| +word| +work| +workspace| +write| +xml| +xsd| +yes| +zero| +zone +)(?=\\s|\\.|:|,)`,name:"keyword.control.simple.abap"},operators:{patterns:[{include:"#other_operator"},{include:"#arithmetic_operator"},{include:"#comparison_operator"},{include:"#logical_operator"}]},other_operator:{match:"(?<=\\s)(&&|&|\\?=|\\+=|-=|\\/=|\\*=|&&=|&=)(?=\\s)",name:"keyword.control.simple.abap"},reserved_names:{match:"(?ix)(?<=\\s)(me|super)(?=\\s|\\.|,|->)",name:"constant.language.abap"},sql_functions:{match:`(?ix)(?<=\\s)( +abap_system_timezone| +abap_user_timezone| +abs| +add_days| +add_months| +allow_precision_loss| +as_geo_json| +avg| +bintohex| +cast| +ceil| +coalesce| +concat_with_space| +concat| +corr_spearman| +corr| +count| +currency_conversion| +datn_add_days| +datn_add_months| +datn_days_between| +dats_add_days| +dats_add_months| +dats_days_between| +dats_from_datn| +dats_is_valid| +dats_tims_to_tstmp| +dats_to_datn| +dayname| +days_between| +dense_rank| +division| +div| +extract_day| +extract_hour| +extract_minute| +extract_month| +extract_second| +extract_year| +first_value| +floor| +grouping| +hextobin| +initcap| +instr| +is_valid| +lag| +last_value| +lead| +left| +length| +like_regexpr| +locate_regexpr_after| +locate_regexpr| +locate| +lower| +lpad| +ltrim| +max| +median| +min| +mod| +monthname| +ntile| +occurrences_regexpr| +over| +product| +rank| +replace_regexpr| +replace| +rigth| +round| +row_number| +rpad| +rtrim| +stddev| +string_agg| +substring_regexpr| +substring| +sum| +tims_from_timn| +tims_is_valid| +tims_to_timn| +to_blob| +to_clob| +tstmp_add_seconds| +tstmp_current_utctimestamp| +tstmp_is_valid| +tstmp_seconds_between| +tstmp_to_dats| +tstmp_to_dst| +tstmp_to_tims| +tstmpl_from_utcl| +tstmpl_to_utcl| +unit_conversion| +upper| +utcl_add_seconds| +utcl_current| +utcl_seconds_between| +uuid| +var| +weekday +)(?=\\()`,name:"entity.name.function.sql.abap"},sql_types:{match:"(?ix)(?<=\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=\\s|\\(|\\))",name:"entity.name.type.sql.abap"},system_fields:{captures:{1:{name:"variable.language.abap"},2:{name:"variable.language.abap"}},match:"(?ix)\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=\\.|\\s)"},text_symbols:{captures:{1:{name:"keyword.control.simple.abap"},2:{name:"constant.numeric.abap"}},match:"(?ix)(?<=^|\\s)(text)-([A-Z0-9]{1,3})(?=\\s|\\.|:|,)"}},scopeName:"source.abap"});var e=[n];export{e as default}; diff --git a/assets/chunks/actionscript-3.D6NljDpC.js b/assets/chunks/actionscript-3.D6NljDpC.js new file mode 100644 index 000000000..0402f4234 --- /dev/null +++ b/assets/chunks/actionscript-3.D6NljDpC.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"ActionScript",fileTypes:["as"],name:"actionscript-3",patterns:[{include:"#comments"},{include:"#package"},{include:"#class"},{include:"#interface"},{include:"#namespace_declaration"},{include:"#import"},{include:"#mxml"},{include:"#strings"},{include:"#regexp"},{include:"#variable_declaration"},{include:"#numbers"},{include:"#primitive_types"},{include:"#primitive_error_types"},{include:"#dynamic_type"},{include:"#primitive_functions"},{include:"#language_constants"},{include:"#language_variables"},{include:"#guess_type"},{include:"#guess_constant"},{include:"#other_operators"},{include:"#arithmetic_operators"},{include:"#logical_operators"},{include:"#array_access_operators"},{include:"#vector_creation_operators"},{include:"#control_keywords"},{include:"#other_keywords"},{include:"#use_namespace"},{include:"#functions"}],repository:{arithmetic_operators:{match:"(\\+|\\-|/|%|(?|\\^|!|\\?)",name:"keyword.operator.actionscript.3"},metadata:{begin:"\\[\\s*\\b(\\w+)\\b",beginCaptures:{1:{name:"keyword.other.actionscript.3"}},end:"\\]",name:"meta.metadata_info.actionscript.3",patterns:[{include:"#metadata_info"}]},metadata_info:{begin:"\\(",end:"\\)",patterns:[{include:"#strings"},{captures:{1:{name:"variable.parameter.actionscript.3"},2:{name:"keyword.operator.actionscript.3"}},match:"(\\w+)\\s*(=)"}]},method:{begin:"(?x) (^|\\s+) ((\\w+)\\s+)? ((\\w+)\\s+)? ((\\w+)\\s+)? ((\\w+)\\s+)? (?=\\bfunction\\b)",beginCaptures:{3:{name:"storage.modifier.actionscript.3"},5:{name:"storage.modifier.actionscript.3"},7:{name:"storage.modifier.actionscript.3"},8:{name:"storage.modifier.actionscript.3"}},end:"(?<=(;|\\}))",name:"meta.method.actionscript.3",patterns:[{include:"#functions"},{include:"#code_block"}]},mxml:{begin:"",name:"meta.cdata.actionscript.3",patterns:[{include:"#comments"},{include:"#import"},{include:"#metadata"},{include:"#class"},{include:"#namespace_declaration"},{include:"#use_namespace"},{include:"#class_declaration"},{include:"#method"},{include:"#comments"},{include:"#strings"},{include:"#regexp"},{include:"#numbers"},{include:"#primitive_types"},{include:"#primitive_error_types"},{include:"#dynamic_type"},{include:"#primitive_functions"},{include:"#language_constants"},{include:"#language_variables"},{include:"#other_keywords"},{include:"#guess_type"},{include:"#guess_constant"},{include:"#other_operators"},{include:"#arithmetic_operators"},{include:"#array_access_operators"},{include:"#vector_creation_operators"},{include:"#variable_declaration"}]},namespace_declaration:{captures:{2:{name:"storage.modifier.actionscript.3"},3:{name:"storage.modifier.actionscript.3"}},match:"(?x) ((\\w+)\\s+)? (namespace) \\s+ (?:[A-Za-z0-9_\\$]+)",name:"meta.namespace_declaration.actionscript.3"},numbers:{match:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b",name:"constant.numeric.actionscript.3"},object_literal:{begin:"\\{",end:"\\}",name:"meta.object_literal.actionscript.3",patterns:[{include:"#object_literal"},{include:"#comments"},{include:"#strings"},{include:"#regexp"},{include:"#numbers"},{include:"#primitive_types"},{include:"#primitive_error_types"},{include:"#dynamic_type"},{include:"#primitive_functions"},{include:"#language_constants"},{include:"#language_variables"},{include:"#guess_type"},{include:"#guess_constant"},{include:"#array_access_operators"},{include:"#vector_creation_operators"},{include:"#functions"}]},other_keywords:{match:"\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\b",name:"keyword.other.actionscript.3"},other_operators:{match:"(\\.|=)",name:"keyword.operator.actionscript.3"},package:{begin:"(^|\\s+)(package)\\b",beginCaptures:{2:{name:"keyword.other.actionscript.3"}},end:"\\}",name:"meta.package.actionscript.3",patterns:[{include:"#package_name"},{include:"#variable_declaration"},{include:"#method"},{include:"#comments"},{include:"#return_type"},{include:"#import"},{include:"#use_namespace"},{include:"#strings"},{include:"#numbers"},{include:"#language_constants"},{include:"#metadata"},{include:"#class"},{include:"#interface"},{include:"#namespace_declaration"}]},package_name:{begin:"(?<=package)\\s+([\\w\\._]*)\\b",end:"\\{",name:"meta.package_name.actionscript.3"},parameters:{begin:"(\\.\\.\\.)?\\s*([A-Za-z\\_\\$][A-Za-z0-9_\\$]*)(?:\\s*(\\:)\\s*(?:(?:([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)(?:\\.<([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)>)?)|(\\*)))?(?:\\s*(=))?",beginCaptures:{1:{name:"keyword.operator.actionscript.3"},2:{name:"variable.parameter.actionscript.3"},3:{name:"keyword.operator.actionscript.3"},4:{name:"support.type.actionscript.3"},5:{name:"support.type.actionscript.3"},6:{name:"support.type.actionscript.3"},7:{name:"keyword.operator.actionscript.3"}},end:",|(?=\\))",patterns:[{include:"#strings"},{include:"#numbers"},{include:"#language_constants"},{include:"#comments"},{include:"#primitive_types"},{include:"#primitive_error_types"},{include:"#dynamic_type"},{include:"#guess_type"},{include:"#guess_constant"}]},primitive_error_types:{captures:{1:{name:"support.class.error.actionscript.3"}},match:"\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\b"},primitive_functions:{captures:{1:{name:"support.function.actionscript.3"}},match:"\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\s*\\()"},primitive_types:{captures:{1:{name:"support.class.builtin.actionscript.3"}},match:"\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\*(?<=a))\\b"},regexp:{begin:"(?<=[=(:,\\[]|^|return|&&|\\|\\||!)\\s*(/)(?![/*+{}?])",end:"$|(/)[igm]*",name:"string.regex.actionscript.3",patterns:[{match:"\\\\.",name:"constant.character.escape.actionscript.3"},{match:"\\[(\\\\\\]|[^\\]])*\\]",name:"constant.character.class.actionscript.3"}]},return_type:{captures:{1:{name:"keyword.operator.actionscript.3"},2:{name:"support.type.actionscript.3"},3:{name:"support.type.actionscript.3"},4:{name:"support.type.actionscript.3"}},match:"(\\:)\\s*(?:([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)(?:\\.<([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)>)?)|(\\*)"},strings:{patterns:[{begin:'"',end:'"',name:"string.quoted.double.actionscript.3",patterns:[{include:"#escapes"}]},{begin:"'",end:"'",name:"string.quoted.single.actionscript.3",patterns:[{include:"#escapes"}]}]},use_namespace:{captures:{2:{name:"keyword.other.actionscript.3"},3:{name:"keyword.other.actionscript.3"},4:{name:"storage.modifier.actionscript.3"}},match:"(?x) (^|\\s+|;) (use\\s+)? (namespace) \\s+ (\\w+) \\s* (;|$)"},variable_declaration:{captures:{2:{name:"storage.modifier.actionscript.3"},4:{name:"storage.modifier.actionscript.3"},6:{name:"storage.modifier.actionscript.3"},7:{name:"storage.modifier.actionscript.3"},8:{name:"keyword.operator.actionscript.3"}},match:"(?x) ((static)\\s+)? ((\\w+)\\s+)? ((static)\\s+)? (const|var) \\s+ (?:[A-Za-z0-9_\\$]+)(?:\\s*(:))?",name:"meta.variable_declaration.actionscript.3"},vector_creation_operators:{match:"(<|>)",name:"keyword.operator.actionscript.3"}},scopeName:"source.actionscript.3"});var t=[e];export{t as default}; diff --git a/assets/chunks/ada.CowR2XfX.js b/assets/chunks/ada.CowR2XfX.js new file mode 100644 index 000000000..799fae3ff --- /dev/null +++ b/assets/chunks/ada.CowR2XfX.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Ada",name:"ada",patterns:[{include:"#library_unit"},{include:"#comment"},{include:"#use_clause"},{include:"#with_clause"},{include:"#pragma"},{include:"#keyword"}],repository:{abort_statement:{begin:"(?i)\\babort\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.abort.ada",patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|\\.|_)+\\b",name:"entity.name.task.ada"}]},accept_statement:{begin:"(?i)\\b(accept)\\s+((?:\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"keyword.control.ada"},2:{name:"entity.name.accept.ada"}},end:"(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"entity.name.accept.ada"},3:{name:"punctuation.ada"}},name:"meta.statement.accept.ada",patterns:[{begin:"(?i)\\bdo\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{include:"#statement"}]},{include:"#parameter_profile"}]},access_definition:{captures:{1:{name:"storage.visibility.ada"},2:{name:"storage.visibility.ada"},3:{name:"storage.modifier.ada"},4:{name:"entity.name.type.ada"}},match:"(?i)(not\\s+null\\s+)?(access)\\s+(constant\\s+)?((?:\\w|\\d|\\.|_)+)\\b",name:"meta.declaration.access.definition.ada"},access_type_definition:{begin:"(?i)\\b(not\\s+null\\s+)?(access)\\b",beginCaptures:{1:{name:"storage.visibility.ada"},2:{name:"storage.visibility.ada"}},end:"(?i)(?=(with|;))",name:"meta.declaration.type.definition.access.ada",patterns:[{match:"(?i)\\ball\\b",name:"storage.visibility.ada"},{match:"(?i)\\bconstant\\b",name:"storage.modifier.ada"},{include:"#subtype_mark"}]},actual_parameter_part:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",patterns:[{match:",",name:"punctuation.ada"},{include:"#parameter_association"}]},adding_operator:{match:"(\\+|-|\\&)",name:"keyword.operator.adding.ada"},array_aggregate:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",name:"meta.definition.array.aggregate.ada",patterns:[{match:",",name:"punctuation.ada"},{include:"#positional_array_aggregate"},{include:"#array_component_association"}]},array_component_association:{captures:{1:{name:"variable.name.ada"},2:{name:"keyword.other.ada"},3:{patterns:[{match:"<>",name:"keyword.modifier.unknown.ada"},{include:"#expression"}]}},match:"(?i)\\b([^(=>)]*)\\s*(=>)\\s*([^,\\)]+)",name:"meta.definition.array.aggregate.component.ada"},array_dimensions:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",name:"meta.declaration.type.definition.array.dimensions.ada",patterns:[{match:",",name:"punctuation.ada"},{match:"(?i)\\brange\\b",name:"storage.modifier.ada"},{match:"<>",name:"keyword.modifier.unknown.ada"},{match:"\\.\\.",name:"keyword.ada"},{include:"#expression"},{patterns:[{include:"#subtype_mark"}]}]},array_type_definition:{begin:"(?i)\\barray\\b",beginCaptures:{0:{name:"storage.modifier.ada"}},end:"(?i)(?=(with|;))",name:"meta.declaration.type.definition.array.ada",patterns:[{include:"#array_dimensions"},{match:"(?i)\\bof\\b",name:"storage.modifier.ada"},{match:"(?i)\\baliased\\b",name:"storage.visibility.ada"},{include:"#access_definition"},{include:"#subtype_mark"}]},aspect_clause:{begin:"(?i)\\b(for)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{patterns:[{include:"#subtype_mark"}]},3:{name:"punctuation.ada"},5:{name:"keyword.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.aspect.clause.ada",patterns:[{begin:"(?i)\\buse\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=;)",endCaptures:{0:{name:"punctuation.ada"}},patterns:[{include:"#record_representation_clause"},{include:"#array_aggregate"},{include:"#expression"}]},{begin:"(?i)(?<=for)",captures:{0:{name:"keyword.ada"}},end:"(?i)(?=use)",patterns:[{captures:{1:{patterns:[{include:"#subtype_mark"}]},2:{patterns:[{include:"#attribute"}]}},match:"((?:\\w|\\d|_)+)('((?:\\w|\\d|_)+))?"}]}]},aspect_definition:{begin:"=>",beginCaptures:{0:{name:"keyword.other.ada"}},end:"(?i)(?=(,|;|\\bis\\b))",name:"meta.aspect.definition.ada",patterns:[{include:"#expression"}]},aspect_mark:{captures:{1:{name:"keyword.control.directive.ada"},2:{name:"punctuation.ada"},3:{name:"entity.other.attribute-name.ada"}},match:"(?i)\\b((?:\\w|\\d|\\.|_)+)(?:(')(class))?\\b",name:"meta.aspect.mark.ada"},aspect_specification:{begin:"(?i)\\bwith\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(;|\\bis\\b))",name:"meta.aspect.specification.ada",patterns:[{match:",",name:"punctuation.ada"},{captures:{1:{name:"storage.modifier.ada"},2:{name:"storage.modifier.ada"}},match:"(?i)\\b(null)\\s+(record)\\b"},{begin:"(?i)\\brecord\\b",beginCaptures:{0:{name:"storage.modifier.ada"}},end:"(?i)\\b(end)\\s+(record)\\b",endCaptures:{1:{name:"keyword.ada"},2:{name:"storage.modifier.ada"}},patterns:[{include:"#component_item"}]},{captures:{0:{name:"storage.visibility.ada"}},match:"(?i)\\bprivate\\b"},{include:"#aspect_definition"},{include:"#aspect_mark"},{include:"#comment"}]},assignment_statement:{begin:`\\b((?:\\w|\\d|\\.|_|\\(|\\)|"|'|\\s)+)\\s*(:=)`,beginCaptures:{1:{patterns:[{match:"((?:\\w|\\d|\\.|_)+)",name:"variable.name.ada"},{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",patterns:[{include:"#expression"}]}]},2:{name:"keyword.operator.new.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.assignment.ada",patterns:[{include:"#expression"},{include:"#comment"}]},attribute:{captures:{1:{name:"punctuation.ada"},2:{name:"entity.other.attribute-name.ada"}},match:"(')((?:\\w|\\d|_)+)\\b",name:"meta.attribute.ada"},based_literal:{captures:{1:{name:"constant.numeric.base.ada"},2:{name:"punctuation.ada"},3:{name:"punctuation.ada"},4:{name:"punctuation.radix-point.ada"},5:{name:"punctuation.ada"},6:{name:"constant.numeric.base.ada"},7:{patterns:[{include:"#exponent_part"}]}},match:"(?i)(\\d(?:(_)?\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",name:"constant.numeric.ada"},basic_declaration:{patterns:[{include:"#type_declaration"},{include:"#subtype_declaration"},{include:"#exception_declaration"},{include:"#object_declaration"},{include:"#single_protected_declaration"},{include:"#single_task_declaration"},{include:"#subprogram_specification"},{include:"#package_declaration"},{include:"#pragma"},{include:"#comment"}]},basic_declarative_item:{patterns:[{include:"#basic_declaration"},{include:"#aspect_clause"},{include:"#use_clause"},{include:"#keyword"}]},block_statement:{begin:"(?i)\\bdeclare\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(end)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.label.ada"},3:{name:"punctuation.ada"}},name:"meta.statement.block.ada",patterns:[{begin:"(?i)(?<=declare)",end:"(?i)\\bbegin\\b",endCaptures:{0:{name:"keyword.ada"}},patterns:[{include:"#body"},{include:"#basic_declarative_item"}]},{begin:"(?i)(?<=begin)",end:"(?i)(?=end)",patterns:[{include:"#statement"}]}]},body:{patterns:[{include:"#subprogram_body"},{include:"#package_body"},{include:"#task_body"},{include:"#protected_body"}]},case_statement:{begin:"(?i)\\bcase\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(case)\\s*(;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"},3:{name:"punctuation.ada"}},name:"meta.statement.case.ada",patterns:[{begin:"(?i)(?<=case)\\b",end:"(?i)\\bis\\b",endCaptures:{0:{name:"keyword.control.ada"}},patterns:[{include:"#expression"}]},{begin:"(?i)\\bwhen\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"=>",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.case.alternative.ada",patterns:[{match:"(?i)\\bothers\\b",name:"keyword.modifier.unknown.ada"},{match:"\\|",name:"punctuation.ada"},{include:"#expression"}]},{include:"#statement"}]},character_literal:{captures:{0:{patterns:[{match:"'",name:"punctuation.definition.string.ada"}]}},match:"'.'",name:"string.quoted.single.ada"},comment:{patterns:[{include:"#preprocessor"},{include:"#comment-section"},{include:"#comment-doc"},{include:"#comment-line"}]},"comment-doc":{captures:{1:{name:"comment.line.double-dash.ada"},2:{name:"punctuation.definition.tag.ada"},3:{name:"entity.name.tag.ada"},4:{name:"comment.line.double-dash.ada"}},match:"(--)\\s*(@)(\\w+)\\s+(.*)$",name:"comment.block.documentation.ada"},"comment-line":{match:"--.*$",name:"comment.line.double-dash.ada"},"comment-section":{captures:{1:{name:"entity.name.section.ada"}},match:"--\\s*([^-].*?[^-])\\s*--\\s*$",name:"comment.line.double-dash.ada"},component_clause:{begin:"(?i)\\b((?:\\w|\\d|_)+)\\b",beginCaptures:{0:{name:"variable.name.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.aspect.clause.record.representation.component.ada",patterns:[{begin:"(?i)\\bat\\b",beginCaptures:{0:{name:"storage.modifier.ada"}},end:"(?i)\\b(?=range)\\b",patterns:[{include:"#expression"}]},{include:"#range_constraint"}]},component_declaration:{begin:"(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",beginCaptures:{1:{patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|_)+\\b",name:"variable.name.ada"}]},2:{name:"punctuation.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.type.definition.record.component.ada",patterns:[{patterns:[{match:":=",name:"keyword.operator.new.ada"},{include:"#expression"}]},{include:"#component_definition"}]},component_definition:{patterns:[{match:"(?i)\\baliased\\b",name:"storage.visibility.ada"},{match:"(?i)\\brange\\b",name:"storage.modifier.ada"},{match:"\\.\\.",name:"keyword.ada"},{include:"#access_definition"},{include:"#subtype_mark"}]},component_item:{patterns:[{include:"#component_declaration"},{include:"#variant_part"},{include:"#comment"},{include:"#aspect_clause"},{captures:{1:{name:"keyword.ada"},2:{name:"punctuation.ada"}},match:"(?i)\\b(null)\\s*(;)"}]},composite_constraint:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",name:"meta.declaration.constraint.composite.ada",patterns:[{match:",",name:"punctuation.ada"},{match:"\\.\\.",name:"keyword.ada"},{captures:{1:{name:"variable.name.ada"},2:{name:"keyword.other.ada"},3:{patterns:[{include:"#expression"}]}},match:"(?i)\\b((?:\\w|\\d|_)+)\\s*(=>)\\s*([^,\\)])+\\b"},{include:"#expression"}]},decimal_literal:{captures:{1:{name:"punctuation.ada"},2:{name:"punctuation.radix-point.ada"},3:{name:"punctuation.ada"},4:{patterns:[{include:"#exponent_part"}]}},match:"\\d(?:(_)?\\d)*(?:(\\.)\\d(?:(_)?\\d)*)?([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",name:"constant.numeric.ada"},declarative_item:{patterns:[{include:"#body"},{include:"#basic_declarative_item"}]},delay_relative_statement:{begin:"(?i)\\b(delay)\\b",beginCaptures:{1:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},patterns:[{include:"#expression"}]},delay_statement:{patterns:[{include:"#delay_until_statement"},{include:"#delay_relative_statement"}]},delay_until_statement:{begin:"(?i)\\b(delay)\\s+(until)\\b",beginCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.delay.until.ada",patterns:[{include:"#expression"}]},derived_type_definition:{name:"meta.declaration.type.definition.derived.ada",patterns:[{begin:"(?i)\\bnew\\b",beginCaptures:{0:{name:"storage.modifier.ada"}},end:"(?i)(?=(\\bwith\\b|;))",patterns:[{match:"(?i)\\band\\b",name:"storage.modifier.ada"},{include:"#subtype_mark"}]},{match:"(?i)\\b(abstract|and|limited|tagged)\\b",name:"storage.modifier.ada"},{match:"(?i)\\bprivate\\b",name:"storage.visibility.ada"},{include:"#subtype_mark"}]},discriminant_specification:{begin:"(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",beginCaptures:{1:{patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|_)+\\b",name:"variable.name.ada"}]},2:{name:"punctuation.ada"}},end:"(?=(;|\\)))",patterns:[{begin:":=",beginCaptures:{0:{name:"keyword.operator.new.ada"}},end:"(?=(;|\\)))",patterns:[{include:"#expression"}]},{captures:{1:{name:"storage.visibility.ada"},2:{patterns:[{include:"#subtype_mark"}]}},match:"(?i)(not\\s+null\\s+)?((?:\\w|\\d|\\.|_)+)\\b"},{include:"#access_definition"}]},entry_body:{begin:"(?i)\\b(entry)\\s+((?:\\w|\\d|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.entry.ada"}},end:"(?i)\\b(end)\\s*(\\s\\2)\\s*(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.entry.ada"},3:{name:"punctuation.ada"}},patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=begin)\\b",patterns:[{include:"#declarative_item"}]},{begin:"(?i)\\bbegin\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{include:"#statement"}]},{begin:"(?i)\\bwhen\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=is)\\b",patterns:[{include:"#expression"}]},{include:"#parameter_profile"}]},entry_declaration:{begin:"(?i)\\b(?:(not)?\\s+(overriding)\\s+)?(entry)\\s+((?:\\w|\\d|_)+)\\b",beginCaptures:{1:{name:"storage.modifier.ada"},2:{name:"storage.modifier.ada"},3:{name:"keyword.ada"},4:{name:"entity.name.entry.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},patterns:[{include:"#parameter_profile"}]},enumeration_type_definition:{begin:"\\(",beginCaptures:{0:{name:"punctuation.ada"}},end:"\\)",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.type.definition.enumeration.ada",patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|_)+\\b",name:"variable.name.ada"},{include:"#comment"}]},exception_declaration:{begin:"(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)\\s*(exception)",beginCaptures:{1:{patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|_)+\\b",name:"entity.name.exception.ada"}]},2:{name:"punctuation.ada"},3:{name:"storage.type.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.exception.ada",patterns:[{match:"(?i)\\b(renames)\\s+((\\w|\\d|_|\\.)+)",name:"entity.name.exception.ada"}]},exit_statement:{begin:"(?i)\\bexit\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.exit.ada",patterns:[{begin:"(?i)\\bwhen\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?=;)",patterns:[{include:"#expression"}]},{match:"(?:\\w|\\d|_)+",name:"entity.name.label.ada"}]},exponent_part:{captures:{1:{name:"punctuation.exponent-mark.ada"},2:{name:"keyword.operator.unary.ada"},3:{name:"punctuation.ada"}},match:"([eE])(\\+|\\-)?\\d(?:(_)?\\d)*"},expression:{name:"meta.expression.ada",patterns:[{match:"(?i)\\bnull\\b",name:"constant.language.ada"},{match:"=>(\\+)?",name:"keyword.other.ada"},{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",patterns:[{include:"#expression"}]},{match:",",name:"punctuation.ada"},{match:"\\.\\.",name:"keyword.ada"},{include:"#value"},{include:"#attribute"},{include:"#comment"},{include:"#operator"},{match:"(?i)\\b(and|or|xor)\\b",name:"keyword.ada"},{match:"(?i)\\b(if|then|else|elsif|in|for|(?",endCaptures:{0:{name:"keyword.other.ada"}},patterns:[{include:"#expression"}]},handled_sequence_of_statements:{patterns:[{begin:"(?i)\\bexception\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",name:"meta.handler.exception.ada",patterns:[{begin:"(?i)\\bwhen\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"=>",endCaptures:{0:{name:"keyword.other.ada"}},patterns:[{captures:{1:{name:"variable.name.ada"},2:{name:"punctuation.ada"}},match:"\\b((?:\\w|\\d|\\.|_)+)\\s*(:)"},{match:"\\|",name:"punctuation.ada"},{match:"(?i)\\bothers\\b",name:"keyword.ada"},{match:"(?:\\w|\\d|\\.|_)+",name:"entity.name.exception.ada"}]},{include:"#statement"}]},{include:"#statement"}]},highest_precedence_operator:{match:"(?i)(\\*\\*|\\babs\\b|\\bnot\\b)",name:"keyword.operator.highest-precedence.ada"},if_statement:{begin:"(?i)\\bif\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(if)\\s*(;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"},3:{name:"punctuation.ada"}},name:"meta.statement.if.ada",patterns:[{begin:"(?i)\\belsif\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)(?:(?",name:"keyword.modifier.unknown.ada"},{match:"(\\+|-|\\*|/)",name:"keyword.operator.arithmetic.ada"},{match:":=",name:"keyword.operator.assignment.ada"},{match:"(=|/=|<|>|<=|>=)",name:"keyword.operator.logic.ada"},{match:"\\&",name:"keyword.operator.concatenation.ada"}]},known_discriminant_part:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",name:"meta.declaration.type.discriminant.ada",patterns:[{match:";",name:"punctuation.ada"},{include:"#discriminant_specification"}]},label:{captures:{1:{name:"punctuation.label.ada"},2:{name:"entity.name.label.ada"},3:{name:"punctuation.label.ada"}},match:"(<<)?((?:\\w|\\d|_)+)\\s*(:[^=]|>>)",name:"meta.label.ada"},library_unit:{name:"meta.library.unit.ada",patterns:[{include:"#package_body"},{include:"#package_specification"},{include:"#subprogram_body"}]},loop_statement:{patterns:[{include:"#simple_loop_statement"},{include:"#while_loop_statement"},{include:"#for_loop_statement"}]},modular_type_definition:{begin:"(?i)\\b(mod)\\b",beginCaptures:{1:{name:"storage.modifier.ada"}},end:"(?i)(?=(with|;))",patterns:[{match:"<>",name:"keyword.modifier.unknown.ada"},{include:"#expression"}]},multiplying_operator:{match:"(?i)(\\*|/|\\bmod\\b|\\brem\\b)",name:"keyword.operator.multiplying.ada"},null_statement:{captures:{1:{name:"keyword.ada"},2:{name:"punctuation.ada"}},match:"(?i)\\b(null)\\s*(;)",name:"meta.statement.null.ada"},object_declaration:{begin:"(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)*)\\s*(:)",beginCaptures:{1:{patterns:[{match:",",name:"punctuation.ada"},{match:"\\b(\\w|\\d|_)+\\b",name:"variable.name.ada"}]},2:{name:"punctuation.ada"}},end:"(;)",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.object.ada",patterns:[{begin:"(?<=:)",end:"(?:(?=;)|(:=)|(\\brenames\\b))",endCaptures:{1:{name:"keyword.operator.new.ada"},2:{name:"keyword.ada"}},patterns:[{match:"(?i)\\bconstant\\b",name:"storage.modifier.ada"},{match:"(?i)\\baliased\\b",name:"storage.visibility.ada"},{include:"#aspect_specification"},{include:"#subtype_mark"}]},{begin:"(?<=:=)",end:"(?=;)",patterns:[{include:"#aspect_specification"},{include:"#expression"}]},{begin:"(?<=renames)",end:"(?=;)",patterns:[{include:"#aspect_specification"}]}]},operator:{patterns:[{include:"#highest_precedence_operator"},{include:"#multiplying_operator"},{include:"#adding_operator"},{include:"#relational_operator"},{include:"#logical_operator"}]},package_body:{begin:"(?i)\\b(package)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"keyword.ada"},3:{patterns:[{include:"#package_mark"}]}},end:"(?i)\\b(end)\\s+(\\3)\\s*(;)",endCaptures:{1:{name:"keyword.ada"},2:{patterns:[{include:"#package_mark"}]},3:{name:"punctuation.ada"}},name:"meta.declaration.package.body.ada",patterns:[{begin:"(?i)\\bbegin\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{include:"#handled_sequence_of_statements"}]},{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(\\bbegin\\b|\\bend\\b))",patterns:[{match:"(?i)\\bprivate\\b",name:"keyword.ada"},{include:"#declarative_item"},{include:"#comment"}]},{include:"#aspect_specification"}]},package_declaration:{patterns:[{include:"#package_specification"}]},package_mark:{match:"\\b(\\w|\\d|\\.|_)+\\b",name:"entity.name.package.ada"},package_specification:{begin:"(?i)\\b(package)\\s+((?:\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{patterns:[{include:"#package_mark"}]}},end:"(?i)(?:\\b(end)\\s+(\\2)\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{patterns:[{include:"#package_mark"}]},3:{name:"punctuation.ada"}},name:"meta.declaration.package.specification.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(end|;))",patterns:[{begin:"(?i)\\bnew\\b",beginCaptures:{0:{name:"keyword.operator.new.ada"}},end:"(?=;)",name:"meta.declaration.package.generic.ada",patterns:[{include:"#package_mark"},{include:"#actual_parameter_part"}]},{match:"(?i)\\bprivate\\b",name:"keyword.ada"},{include:"#basic_declarative_item"},{include:"#comment"}]},{include:"#aspect_specification"}]},parameter_association:{patterns:[{captures:{1:{name:"variable.parameter.ada"},2:{name:"keyword.other.ada"}},match:"((?:\\w|\\d|_)+)\\s*(=>)"},{include:"#expression"}]},parameter_profile:{begin:"\\(",captures:{0:{name:"punctuation.ada"}},end:"\\)",patterns:[{match:";",name:"punctuation.ada"},{include:"#parameter_specification"}]},parameter_specification:{patterns:[{begin:":(?!=)",beginCaptures:{0:{name:"punctuation.ada"}},end:"(?=[:;)])",name:"meta.type.annotation.ada",patterns:[{match:"(?i)\\b(in|out)\\b",name:"keyword.ada"},{include:"#subtype_mark"}]},{begin:":=",beginCaptures:{0:{name:"keyword.operator.new.ada"}},end:"(?=[:;)])",patterns:[{include:"#expression"}]},{match:",",name:"punctuation.ada"},{match:"\\b(?:\\w|\\d|\\.|_)+\\b",name:"variable.parameter.ada"},{include:"#comment"}]},positional_array_aggregate:{name:"meta.definition.array.aggregate.positional.ada",patterns:[{captures:{1:{name:"keyword.ada"},2:{name:"keyword.other.ada"},3:{patterns:[{match:"<>",name:"keyword.modifier.unknown.ada"},{include:"#expression"}]}},match:"(?i)\\b(others)\\s*(=>)\\s*([^,\\)]+)"},{include:"#expression"}]},pragma:{begin:"(?i)\\b(pragma)\\s+((?:\\w|\\d|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"keyword.control.directive.ada"}},end:"(;)",endCaptures:{1:{name:"punctuation.ada"}},name:"meta.pragma.ada",patterns:[{include:"#expression"}]},preprocessor:{name:"meta.preprocessor.ada",patterns:[{captures:{1:{name:"punctuation.definition.directive.ada"},2:{name:"keyword.control.directive.conditional.ada"},3:{patterns:[{include:"#expression"}]}},match:"^\\s*(#)(if|elsif)\\s+(.*)$"},{captures:{1:{name:"punctuation.definition.directive.ada"},2:{name:"keyword.control.directive.conditional"},3:{name:"punctuation.ada"}},match:"^\\s*(#)(end if)(;)"},{captures:{1:{name:"punctuation.definition.directive.ada"},2:{name:"keyword.control.directive.conditional"}},match:"^\\s*(#)(else)"}]},procedure_body:{begin:"(?i)\\b(overriding\\s+)?(procedure)\\s+((?:\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"storage.visibility.ada"},2:{name:"keyword.ada"},3:{name:"entity.name.function.ada"}},end:"(?i)(?:\\b(end)\\s+(\\3)\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.function.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.procedure.body.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(with|begin|;))",patterns:[{begin:"(?i)\\bnew\\b",beginCaptures:{0:{name:"keyword.operator.new.ada"}},end:"(?=;)",name:"meta.declaration.package.generic.ada",patterns:[{match:"((?:\\w|\\d|\\.|_)+)",name:"entity.name.function.ada"},{include:"#actual_parameter_part"}]},{match:"(?i)\\b(null|abstract)\\b",name:"storage.modifier.ada"},{include:"#declarative_item"}]},{begin:"(?i)\\bbegin\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=\\bend\\b)",patterns:[{include:"#handled_sequence_of_statements"}]},{include:"#subprogram_renaming_declaration"},{include:"#aspect_specification"},{include:"#parameter_profile"},{include:"#comment"}]},procedure_call_statement:{begin:"(?i)\\b((?:\\w|\\d|_|\\.)+)\\b",beginCaptures:{1:{name:"entity.name.function.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.call.ada",patterns:[{include:"#attribute"},{include:"#actual_parameter_part"},{include:"#comment"}]},procedure_specification:{patterns:[{include:"#procedure_body"}]},protected_body:{begin:"(?i)\\b(protected)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"storage.modifier.ada"},2:{name:"keyword.ada"},3:{name:"entity.name.body.ada"}},end:"(?i)(?:\\b(end)\\s*(\\s\\3)\\s*)(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.body.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.procedure.body.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{include:"#protected_operation_item"}]}]},protected_element_declaration:{patterns:[{include:"#subprogram_specification"},{include:"#aspect_clause"},{include:"#entry_declaration"},{include:"#component_declaration"},{include:"#pragma"}]},protected_operation_item:{patterns:[{include:"#subprogram_specification"},{include:"#subprogram_body"},{include:"#aspect_clause"},{include:"#entry_body"}]},raise_expression:{begin:"(?i)\\braise\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?=;)",name:"meta.expression.raise.ada",patterns:[{begin:"(?i)\\bwith\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(;|\\))",patterns:[{include:"#expression"}]},{match:"\\b(\\w|\\d|_)+\\b",name:"entity.name.exception.ada"}]},raise_statement:{begin:"(?i)\\braise\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.raise.ada",patterns:[{begin:"(?i)\\bwith\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?=;)",patterns:[{include:"#expression"}]},{match:"\\b(\\w|\\d|\\.|_)+\\b",name:"entity.name.exception.ada"}]},range_constraint:{begin:"(?i)\\brange\\b",beginCaptures:{0:{name:"storage.modifier.ada"}},end:"(?=(\\bwith\\b|;))",patterns:[{match:"\\.\\.",name:"keyword.ada"},{match:"<>",name:"keyword.modifier.unknown.ada"},{include:"#expression"}]},real_type_definition:{name:"meta.declaration.type.definition.real-type.ada",patterns:[{include:"#scalar_constraint"}]},record_representation_clause:{begin:"(?i)\\b(record)\\b",beginCaptures:{1:{name:"storage.modifier.ada"}},end:"(?i)\\b(end)\\s+(record)\\b",endCaptures:{1:{name:"keyword.ada"},2:{name:"storage.modifier.ada"}},name:"meta.aspect.clause.record.representation.ada",patterns:[{include:"#component_clause"},{include:"#comment"}]},record_type_definition:{patterns:[{captures:{1:{name:"storage.modifier.ada"},2:{name:"storage.modifier.ada"},3:{name:"storage.modifier.ada"},4:{name:"storage.modifier.ada"},5:{name:"storage.modifier.ada"}},match:"(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(null)\\s+(record)\\b",name:"meta.declaration.type.definition.record.null.ada",patterns:[{include:"#component_item"}]},{begin:"(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(record)\\b",beginCaptures:{1:{name:"storage.modifier.ada"},2:{name:"storage.modifier.ada"},3:{name:"storage.modifier.ada"},4:{name:"storage.modifier.ada"}},end:"(?i)\\b(end)\\s+(record)\\b",endCaptures:{1:{name:"keyword.ada"},2:{name:"storage.modifier.ada"}},name:"meta.declaration.type.definition.record.ada",patterns:[{include:"#component_item"}]}]},regular_type_declaration:{begin:"(?i)\\b(type)\\b",beginCaptures:{1:{name:"keyword.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.type.definition.regular.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(with(?!\\s+(private))|;))",patterns:[{include:"#type_definition"}]},{begin:"(?i)\\b(?<=type)\\b",end:"(?i)(?=(is|;))",patterns:[{include:"#known_discriminant_part"},{include:"#subtype_mark"}]},{include:"#aspect_specification"}]},relational_operator:{match:"(=|/=|<|<=|>|>=)",name:"keyword.operator.relational.ada"},requeue_statement:{begin:"(?i)\\brequeue\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.requeue.ada",patterns:[{match:"(?i)\\b(with|abort)\\b",name:"keyword.control.ada"},{match:"\\b(\\w|\\d|\\.|_)+\\b",name:"entity.name.function.ada"}]},result_profile:{begin:"(?i)\\breturn\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(is|with|renames|;))",patterns:[{include:"#subtype_mark"}]},return_statement:{begin:"(?i)\\breturn\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.statement.return.ada",patterns:[{begin:"(?i)\\bdo\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(return)\\s*(?=;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"}},patterns:[{include:"#label"},{include:"#statement"}]},{captures:{1:{name:"variable.name.ada"},2:{name:"punctuation.ada"},3:{name:"entity.name.type.ada"}},match:"\\b((?:\\w|\\d|_)+)\\s*(:)\\s*((?:\\w|\\d|\\.|_)+)\\b"},{match:":=",name:"keyword.operator.new.ada"},{include:"#expression"}]},scalar_constraint:{name:"meta.declaration.constraint.scalar.ada",patterns:[{begin:"(?i)\\b(digits|delta)\\b",beginCaptures:{1:{name:"storage.modifier.ada"}},end:"(?i)(?=\\brange\\b|\\bdigits\\b|\\bwith\\b|;)",patterns:[{include:"#expression"}]},{include:"#range_constraint"},{include:"#expression"}]},select_alternative:{patterns:[{begin:"(?i)\\bterminate\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}}},{include:"#statement"}]},select_statement:{begin:"(?i)\\bselect\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(select)\\b",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"}},name:"meta.statement.select.ada",patterns:[{begin:"(?i)\\b(?:(or)|(?<=select))\\b",beginCaptures:{1:{name:"keyword.control.ada"}},end:"(?i)\\b(?=(or|else|end))\\b",patterns:[{include:"#guard"},{include:"#select_alternative"}]},{begin:"(?i)\\belse\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{include:"#statement"}]}]},signed_integer_type_definition:{patterns:[{include:"#range_constraint"}]},simple_loop_statement:{begin:"(?i)\\bloop\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"},3:{name:"entity.name.label.ada"},4:{name:"punctuation.ada"}},name:"meta.statement.loop.ada",patterns:[{include:"#statement"}]},single_protected_declaration:{begin:"(?i)\\b(protected)\\s+((?:\\w|\\d|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.protected.ada"}},end:"(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.protected.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.protected.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(\\bend\\b|;))",patterns:[{begin:"(?i)\\bnew\\b",captures:{0:{name:"keyword.ada"}},end:"(?i)\\bwith\\b",patterns:[{match:"(?i)\\band\\b",name:"keyword.ada"},{include:"#subtype_mark"},{include:"#comment"}]},{match:"(?i)\\bprivate\\b",name:"keyword.ada"},{include:"#protected_element_declaration"},{include:"#comment"}]},{include:"#comment"}]},single_task_declaration:{begin:"(?i)\\b(task)\\s+((?:\\w|\\d|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.task.ada"}},end:"(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.task.ada"},3:{name:"punctuation.ada"}},patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{begin:"(?i)\\bnew\\b",captures:{0:{name:"keyword.ada"}},end:"(?i)\\bwith\\b",patterns:[{match:"(?i)\\band\\b",name:"keyword.ada"},{include:"#subtype_mark"},{include:"#comment"}]},{match:"(?i)\\bprivate\\b",name:"keyword.ada"},{include:"#task_item"},{include:"#comment"}]},{include:"#comment"}]},statement:{patterns:[{begin:"(?i)\\bbegin\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(end)\\s*(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"punctuation.ada"}},patterns:[{include:"#handled_sequence_of_statements"}]},{include:"#label"},{include:"#null_statement"},{include:"#return_statement"},{include:"#assignment_statement"},{include:"#exit_statement"},{include:"#goto_statement"},{include:"#requeue_statement"},{include:"#delay_statement"},{include:"#abort_statement"},{include:"#raise_statement"},{include:"#if_statement"},{include:"#case_statement"},{include:"#loop_statement"},{include:"#block_statement"},{include:"#select_statement"},{include:"#accept_statement"},{include:"#pragma"},{include:"#procedure_call_statement"},{include:"#comment"}]},string_literal:{captures:{1:{name:"punctuation.definition.string.ada"},2:{name:"punctuation.definition.string.ada"}},match:'(").*?(")',name:"string.quoted.double.ada"},subprogram_body:{name:"meta.declaration.subprogram.body.ada",patterns:[{include:"#procedure_body"},{include:"#function_body"}]},subprogram_renaming_declaration:{begin:"(?i)\\brenames\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(with|;))",patterns:[{match:"(?:\\w|\\d|_|\\.)+",name:"entity.name.function.ada"}]},subprogram_specification:{name:"meta.declaration.subprogram.specification.ada",patterns:[{include:"#procedure_specification"},{include:"#function_specification"}]},subtype_declaration:{begin:"(?i)\\bsubtype\\b",beginCaptures:{0:{name:"keyword.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.declaration.subtype.ada",patterns:[{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=;)",patterns:[{match:"(?i)\\b(not\\s+null)\\b",name:"storage.modifier.ada"},{include:"#composite_constraint"},{include:"#aspect_specification"},{include:"#subtype_indication"}]},{begin:"(?i)(?<=subtype)",end:"(?i)\\b(?=is)\\b",patterns:[{include:"#subtype_mark"}]}]},subtype_indication:{name:"meta.declaration.indication.subtype.ada",patterns:[{include:"#scalar_constraint"},{include:"#subtype_mark"}]},subtype_mark:{patterns:[{match:"(?i)\\b(access|aliased|not\\s+null|constant)\\b",name:"storage.visibility.ada"},{include:"#attribute"},{include:"#actual_parameter_part"},{begin:"(?i)\\b(procedure|function)\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(;|\\)))",patterns:[{include:"#parameter_profile"},{begin:"(?i)\\breturn\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?=(;|\\)))",patterns:[{include:"#subtype_mark"}]}]},{captures:{0:{patterns:[{match:"[_.]",name:"punctuation.ada"}]}},match:"\\b(?:\\w|\\d|\\.|_)+\\b",name:"entity.name.type.ada"},{include:"#comment"}]},task_body:{begin:"(?i)\\b(task)\\s+(body)\\s+((\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"keyword.ada"},2:{name:"keyword.ada"},3:{name:"entity.name.task.ada"}},end:"(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.task.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.task.body.ada",patterns:[{begin:"(?i)\\bbegin\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=end)",patterns:[{include:"#handled_sequence_of_statements"}]},{include:"#aspect_specification"},{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)(?=(with|begin))",patterns:[{include:"#declarative_item"}]}]},task_item:{patterns:[{include:"#aspect_clause"},{include:"#entry_declaration"}]},task_type_declaration:{begin:"(?i)\\b(task)\\s+(type)\\s+((\\w|\\d|\\.|_)+)\\b",beginCaptures:{1:{name:"storage.modifier.ada"},2:{name:"keyword.ada"},3:{name:"entity.name.task.ada"}},end:"(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",endCaptures:{1:{name:"keyword.ada"},2:{name:"entity.name.task.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.type.task.ada",patterns:[{include:"#known_discriminant_part"},{begin:"(?i)\\bis\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(?=end)\\b",patterns:[{begin:"(?i)\\bnew\\b",captures:{0:{name:"keyword.ada"}},end:"(?i)\\bwith\\b",patterns:[{match:"(?i)\\band\\b",name:"keyword.ada"},{include:"#subtype_mark"},{include:"#comment"}]},{match:"(?i)\\bprivate\\b",name:"keyword.ada"},{include:"#task_item"},{include:"#comment"}]},{include:"#comment"}]},type_declaration:{name:"meta.declaration.type.ada",patterns:[{include:"#full_type_declaration"}]},type_definition:{name:"meta.declaration.type.definition.ada",patterns:[{include:"#enumeration_type_definition"},{include:"#integer_type_definition"},{include:"#real_type_definition"},{include:"#array_type_definition"},{include:"#record_type_definition"},{include:"#access_type_definition"},{include:"#interface_type_definition"},{include:"#derived_type_definition"}]},use_clause:{name:"meta.context.use.ada",patterns:[{include:"#use_type_clause"},{include:"#use_package_clause"}]},use_package_clause:{begin:"(?i)\\buse\\b",beginCaptures:{0:{name:"keyword.other.using.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.context.use.package.ada",patterns:[{match:",",name:"punctuation.ada"},{include:"#package_mark"}]},use_type_clause:{begin:"(?i)\\b(use)\\s+(?:(all)\\s+)?(type)\\b",beginCaptures:{1:{name:"keyword.other.using.ada"},2:{name:"keyword.modifier.ada"},3:{name:"keyword.modifier.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.context.use.type.ada",patterns:[{match:",",name:"punctuation.ada"},{include:"#subtype_mark"}]},value:{patterns:[{include:"#based_literal"},{include:"#decimal_literal"},{include:"#character_literal"},{include:"#string_literal"}]},variant_part:{begin:"(?i)\\bcase\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"(?i)\\b(end)\\s+(case);",endCaptures:{1:{name:"keyword.ada"},2:{name:"keyword.ada"},3:{name:"punctuation.ada"}},name:"meta.declaration.variant.ada",patterns:[{begin:"(?i)\\b(?<=case)\\b",end:"(?i)\\bis\\b",endCaptures:{0:{name:"keyword.ada"}},patterns:[{match:"(?:\\w|\\d|_)+",name:"variable.name.ada"},{include:"#comment"}]},{begin:"(?i)\\b(?<=is)\\b",end:"(?i)\\b(?=end)\\b",patterns:[{begin:"(?i)\\bwhen\\b",beginCaptures:{0:{name:"keyword.ada"}},end:"=>",endCaptures:{0:{name:"keyword.other.ada"}},patterns:[{match:"\\|",name:"punctuation.ada"},{match:"(?i)\\bothers\\b",name:"keyword.ada"},{include:"#expression"}]},{include:"#component_item"}]}]},while_loop_statement:{begin:"(?i)\\bwhile\\b",beginCaptures:{0:{name:"keyword.control.ada"}},end:"(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",endCaptures:{1:{name:"keyword.control.ada"},2:{name:"keyword.control.ada"},3:{name:"entity.name.label.ada"},4:{name:"punctuation.ada"}},name:"meta.statement.loop.while.ada",patterns:[{begin:"(?i)(?<=while)\\b",end:"(?i)\\bloop\\b",endCaptures:{0:{name:"keyword.control.ada"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},with_clause:{begin:"(?i)\\b(?:(limited)\\s+)?(?:(private)\\s+)?(with)\\b",beginCaptures:{1:{name:"keyword.modifier.ada"},2:{name:"storage.visibility.ada"},3:{name:"keyword.other.using.ada"}},end:";",endCaptures:{0:{name:"punctuation.ada"}},name:"meta.context.with.ada",patterns:[{match:",",name:"punctuation.ada"},{include:"#package_mark"}]}},scopeName:"source.ada"});var a=[e];export{a as default}; diff --git a/assets/chunks/andromeeda.YxQm0tCS.js b/assets/chunks/andromeeda.YxQm0tCS.js new file mode 100644 index 000000000..6cfb1d9e2 --- /dev/null +++ b/assets/chunks/andromeeda.YxQm0tCS.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#23262E","activityBar.dropBackground":"#3a404e","activityBar.foreground":"#BAAFC0","activityBarBadge.background":"#00b0ff","activityBarBadge.foreground":"#20232B","badge.background":"#00b0ff","badge.foreground":"#20232B","button.background":"#00e8c5cc","button.hoverBackground":"#07d4b6cc","debugExceptionWidget.background":"#FF9F2E60","debugExceptionWidget.border":"#FF9F2E60","debugToolBar.background":"#20232A","diffEditor.insertedTextBackground":"#29BF1220","diffEditor.removedTextBackground":"#F21B3F20","dropdown.background":"#2b303b","dropdown.border":"#363c49","editor.background":"#23262E","editor.findMatchBackground":"#f39d1256","editor.findMatchBorder":"#f39d12b6","editor.findMatchHighlightBackground":"#59b8b377","editor.foreground":"#D5CED9","editor.hoverHighlightBackground":"#373941","editor.lineHighlightBackground":"#2e323d","editor.lineHighlightBorder":"#2e323d","editor.rangeHighlightBackground":"#372F3C","editor.selectionBackground":"#3D4352","editor.selectionHighlightBackground":"#4F435580","editor.wordHighlightBackground":"#4F4355","editor.wordHighlightStrongBackground":"#db45a280","editorBracketMatch.background":"#746f77","editorBracketMatch.border":"#746f77","editorCodeLens.foreground":"#746f77","editorCursor.foreground":"#FFF","editorError.foreground":"#FC644D","editorGroup.background":"#23262E","editorGroup.dropBackground":"#495061d7","editorGroupHeader.tabsBackground":"#23262E","editorGutter.addedBackground":"#9BC53DBB","editorGutter.deletedBackground":"#FC644DBB","editorGutter.modifiedBackground":"#5BC0EBBB","editorHoverWidget.background":"#373941","editorHoverWidget.border":"#00e8c5cc","editorIndentGuide.activeBackground":"#585C66","editorIndentGuide.background":"#333844","editorLineNumber.foreground":"#746f77","editorLink.activeForeground":"#3B79C7","editorOverviewRuler.border":"#1B1D23","editorRuler.foreground":"#4F4355","editorSuggestWidget.background":"#20232A","editorSuggestWidget.border":"#372F3C","editorSuggestWidget.selectedBackground":"#373941","editorWarning.foreground":"#FF9F2E","editorWhitespace.foreground":"#333844","editorWidget.background":"#20232A",errorForeground:"#FC644D","extensionButton.prominentBackground":"#07d4b6cc","extensionButton.prominentHoverBackground":"#07d4b5b0",focusBorder:"#746f77",foreground:"#D5CED9","gitDecoration.ignoredResourceForeground":"#555555","input.background":"#2b303b","input.placeholderForeground":"#746f77","inputOption.activeBorder":"#C668BA","inputValidation.errorBackground":"#D65343","inputValidation.errorBorder":"#D65343","inputValidation.infoBackground":"#3A6395","inputValidation.infoBorder":"#3A6395","inputValidation.warningBackground":"#DE9237","inputValidation.warningBorder":"#DE9237","list.activeSelectionBackground":"#23262E","list.activeSelectionForeground":"#00e8c6","list.dropBackground":"#3a404e","list.focusBackground":"#282b35","list.focusForeground":"#eee","list.hoverBackground":"#23262E","list.hoverForeground":"#eee","list.inactiveSelectionBackground":"#23262E","list.inactiveSelectionForeground":"#00e8c6","merge.currentContentBackground":"#F9267240","merge.currentHeaderBackground":"#F92672","merge.incomingContentBackground":"#3B79C740","merge.incomingHeaderBackground":"#3B79C7BB","minimapSlider.activeBackground":"#60698060","minimapSlider.background":"#58607460","minimapSlider.hoverBackground":"#60698060","notification.background":"#2d313b","notification.buttonBackground":"#00e8c5cc","notification.buttonHoverBackground":"#07d4b5b0","notification.errorBackground":"#FC644D","notification.infoBackground":"#00b0ff","notification.warningBackground":"#FF9F2E","panel.background":"#23262E","panel.border":"#1B1D23","panelTitle.activeBorder":"#23262E","panelTitle.inactiveForeground":"#746f77","peekView.border":"#23262E","peekViewEditor.background":"#1A1C22","peekViewEditor.matchHighlightBackground":"#FF9F2E60","peekViewResult.background":"#1A1C22","peekViewResult.matchHighlightBackground":"#FF9F2E60","peekViewResult.selectionBackground":"#23262E","peekViewTitle.background":"#1A1C22","peekViewTitleDescription.foreground":"#746f77","pickerGroup.border":"#4F4355","pickerGroup.foreground":"#746f77","progressBar.background":"#C668BA","scrollbar.shadow":"#23262E","scrollbarSlider.activeBackground":"#3A3F4CCC","scrollbarSlider.background":"#3A3F4C77","scrollbarSlider.hoverBackground":"#3A3F4CAA","selection.background":"#746f77","sideBar.background":"#23262E","sideBar.foreground":"#999999","sideBarSectionHeader.background":"#23262E","sideBarTitle.foreground":"#00e8c6","statusBar.background":"#23262E","statusBar.debuggingBackground":"#FC644D","statusBar.noFolderBackground":"#23262E","statusBarItem.activeBackground":"#00e8c5cc","statusBarItem.hoverBackground":"#07d4b5b0","statusBarItem.prominentBackground":"#07d4b5b0","statusBarItem.prominentHoverBackground":"#00e8c5cc","tab.activeBackground":"#23262e","tab.activeBorder":"#00e8c6","tab.activeForeground":"#00e8c6","tab.inactiveBackground":"#23262E","tab.inactiveForeground":"#746f77","terminal.ansiBlue":"#7cb7ff","terminal.ansiBrightBlue":"#7cb7ff","terminal.ansiBrightCyan":"#00e8c6","terminal.ansiBrightGreen":"#96E072","terminal.ansiBrightMagenta":"#ff00aa","terminal.ansiBrightRed":"#ee5d43","terminal.ansiBrightYellow":"#FFE66D","terminal.ansiCyan":"#00e8c6","terminal.ansiGreen":"#96E072","terminal.ansiMagenta":"#ff00aa","terminal.ansiRed":"#ee5d43","terminal.ansiYellow":"#FFE66D","terminalCursor.background":"#23262E","terminalCursor.foreground":"#FFE66D","titleBar.activeBackground":"#23262E","walkThrough.embeddedEditorBackground":"#23262E","widget.shadow":"#14151A"},displayName:"Andromeeda",name:"andromeeda",tokenColors:[{settings:{background:"#23262E",foreground:"#D5CED9"}},{scope:["comment","markup.quote.markdown","meta.diff","meta.diff.header"],settings:{foreground:"#A0A1A7cc"}},{scope:["meta.template.expression.js","constant.name.attribute.tag.jade","punctuation.definition.metadata.markdown","punctuation.definition.string.end.markdown","punctuation.definition.string.begin.markdown"],settings:{foreground:"#D5CED9"}},{scope:["variable","support.variable","entity.name.tag.yaml","constant.character.entity.html","source.css entity.name.tag.reference","beginning.punctuation.definition.list.markdown","source.css entity.other.attribute-name.parent-selector","meta.structure.dictionary.json support.type.property-name"],settings:{foreground:"#00e8c6"}},{scope:["markup.bold","constant.numeric","meta.group.regexp","constant.other.php","support.constant.ext.php","constant.other.class.php","support.constant.core.php","fenced_code.block.language","constant.other.caps.python","entity.other.attribute-name","support.type.exception.python","source.css keyword.other.unit","variable.other.object.property.js.jsx","variable.other.object.js"],settings:{foreground:"#f39c12"}},{scope:["markup.list","text.xml string","entity.name.type","support.function","entity.other.attribute-name","meta.at-rule.extend","entity.name.function","entity.other.inherited-class","entity.other.keyframe-offset.css","text.html.markdown string.quoted","meta.function-call.generic.python","meta.at-rule.extend support.constant","entity.other.attribute-name.class.jade","source.css entity.other.attribute-name","text.xml punctuation.definition.string"],settings:{foreground:"#FFE66D"}},{scope:["markup.heading","variable.language.this.js","variable.language.special.self.python"],settings:{foreground:"#ff00aa"}},{scope:["punctuation.definition.interpolation","punctuation.section.embedded.end.php","punctuation.section.embedded.end.ruby","punctuation.section.embedded.begin.php","punctuation.section.embedded.begin.ruby","punctuation.definition.template-expression","entity.name.tag"],settings:{foreground:"#f92672"}},{scope:["storage","keyword","meta.link","meta.image","markup.italic","source.js support.type"],settings:{foreground:"#c74ded"}},{scope:["string.regexp","markup.changed"],settings:{foreground:"#7cb7ff"}},{scope:["constant","support.class","keyword.operator","support.constant","text.html.markdown string","source.css support.function","source.php support.function","support.function.magic.python","entity.other.attribute-name.id","markup.deleted"],settings:{foreground:"#ee5d43"}},{scope:["string","text.html.php string","markup.inline.raw","markup.inserted","punctuation.definition.string","punctuation.definition.markdown","text.html meta.embedded source.js string","text.html.php punctuation.definition.string","text.html meta.embedded source.js punctuation.definition.string","text.html punctuation.definition.string","text.html string"],settings:{foreground:"#96E072"}},{scope:["entity.other.inherited-class"],settings:{fontStyle:"underline"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/angular-html.833w9gUK.js b/assets/chunks/angular-html.833w9gUK.js new file mode 100644 index 000000000..4d2b54843 --- /dev/null +++ b/assets/chunks/angular-html.833w9gUK.js @@ -0,0 +1,16 @@ +import n from"./html.CuK0VrWf.js";const a=Object.freeze({injectionSelector:"L:text.html -comment",name:"angular-expression",patterns:[{include:"#ngExpression"}],repository:{arrayLiteral:{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.array.literal.ts",patterns:[{include:"#ngExpression"},{include:"#punctuationComma"}]},booleanLiteral:{patterns:[{match:"(?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.ts"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.ts"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.ts"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.ts"},{match:"\\!|&&|\\?\\?|\\|\\|",name:"keyword.operator.logical.ts"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.ts"},{match:"\\=",name:"keyword.operator.assignment.ts"},{match:"--",name:"keyword.operator.decrement.ts"},{match:"\\+\\+",name:"keyword.operator.increment.ts"},{match:"\\%|\\*|\\/|-|\\+",name:"keyword.operator.arithmetic.ts"},{captures:{1:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:]])\\s*(\\/)(?![\\/*])"},{include:"#typeofOperator"}]},functionCall:{begin:"(?=(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",end:"(?<=\\))(?!(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",patterns:[{match:"\\?",name:"punctuation.accessor.ts"},{match:"\\.",name:"punctuation.accessor.ts"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.ts"},{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#type"},{include:"#punctuationComma"}]},{include:"#parenExpression"}]},functionParameters:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.ts"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.ts"}},name:"meta.parameters.ts",patterns:[{include:"#decorator"},{include:"#parameterName"},{include:"#variableInitializer"},{match:",",name:"punctuation.separator.parameter.ts"}]},identifiers:{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\.\\s*prototype\\b(?!\\$))",name:"support.class.ts"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"constant.other.object.property.ts"},3:{name:"variable.other.object.property.ts"}},match:`(?x)([?!]?\\.)\\s*(?: +([[:upper:]][_$[:digit:][:upper:]]*)| +([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"entity.name.function.ts"}},match:"(?x)(?:([?!]?\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*((async\\s+)|(function\\s*[(<])|(function\\s+)|([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"constant.other.property.ts"}},match:"([?!]?\\.)\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"variable.other.property.ts"}},match:"([?!]?\\.)\\s*([_$[:alpha:]][_$[:alnum:]]*)"},{captures:{1:{name:"constant.other.object.ts"},2:{name:"variable.other.object.ts"}},match:`(?x)(?: +([[:upper:]][_$[:digit:][:upper:]]*)| +([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)`},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"constant.character.other"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ts"}]},literal:{name:"literal.ts",patterns:[{include:"#numericLiteral"},{include:"#booleanLiteral"},{include:"#nullLiteral"},{include:"#undefinedLiteral"},{include:"#numericConstantLiteral"},{include:"#arrayLiteral"},{include:"#thisLiteral"}]},ngExpression:{name:"meta.expression.ng",patterns:[{include:"#string"},{include:"#literal"},{include:"#ternaryExpression"},{include:"#expressionOperator"},{include:"#functionCall"},{include:"#identifiers"},{include:"#parenExpression"},{include:"#punctuationComma"},{include:"#punctuationAccessor"}]},nullLiteral:{match:"(?) | ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)) ) | (:\\s*( (<) | ([(]\\s*( ([)]) | (\\.\\.\\.) | ([_$[:alnum:]]+\\s*( ([:,?=])| ([)]\\s*=>) )) ))) ))"},{captures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"keyword.operator.rest.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?:\\s*\\b(readonly)\\s+)?(?:\\s*\\b(public|private|protected)\\s+)?(\\.\\.\\.)?\\s*(?])|(?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)',name:"meta.type.annotation.ts",patterns:[{include:"#type"}]},typeBuiltinLiterals:{match:"(?)\\s*(?=\\()",end:"(?<=\\))",include:"#typeofOperator",name:"meta.type.function.ts",patterns:[{include:"#functionParameters"}]},{begin:"(?x)((?=[(]\\s*(([)])|(\\.\\.\\.)|([_$[:alnum:]]+\\s*(([:,?=])|([)]\\s*=>))))))",end:"(?<=\\))",name:"meta.type.function.ts",patterns:[{include:"#functionParameters"}]}]},typeName:{patterns:[{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*([?!]?\\.)"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.ts"}]},typeObject:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.object.type.ts",patterns:[{include:"#typeObjectMembers"}]},typeObjectMembers:{patterns:[{include:"#typeAnnotation"},{include:"#punctuationComma"},{include:"#punctuationSemicolon"}]},typeOperators:{patterns:[{include:"#typeofOperator"},{match:"[&|]",name:"keyword.operator.type.ts"},{match:"(?]*)(?)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.unrecognized.html.derivative",patterns:[{include:"text.html.basic#attribute"}]}],scopeName:"text.html.derivative.ng",embeddedLangs:["html","angular-expression","angular-template","angular-template-blocks"]});var m=[...n,...e,...t,...i,o];const p=Object.freeze(Object.defineProperty({__proto__:null,default:m},Symbol.toStringTag,{value:"Module"}));export{m as a,t as b,e as c,i as d,p as e}; diff --git a/assets/chunks/angular-ts.BCBvF5Sf.js b/assets/chunks/angular-ts.BCBvF5Sf.js new file mode 100644 index 000000000..6811cec80 --- /dev/null +++ b/assets/chunks/angular-ts.BCBvF5Sf.js @@ -0,0 +1,666 @@ +import{a as n,b as e,c as a,d as t}from"./angular-html.833w9gUK.js";import s from"./scss.Dr-_CcBd.js";import"./html.CuK0VrWf.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";const i=Object.freeze({injectTo:["source.ts.ng"],injectionSelector:"L:source.ts#meta.decorator.ts -comment",name:"angular-inline-style",patterns:[{include:"#inlineStyles"}],repository:{inlineStyles:{begin:"(styles)\\s*(:)",beginCaptures:{1:{name:"meta.object-literal.key.ts"},2:{name:"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},end:"(?=,|})",patterns:[{include:"#tsParenExpression"},{include:"#tsBracketExpression"},{include:"#style"}]},style:{begin:"\\s*([`|'|\"])",beginCaptures:{1:{name:"string"}},contentName:"source.css.scss",end:"\\1",endCaptures:{0:{name:"string"}},patterns:[{include:"source.css.scss"}]},tsBracketExpression:{begin:"\\G\\s*(\\[)",beginCaptures:{1:{name:"meta.array.literal.ts meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.array.literal.ts meta.brace.square.ts"}},patterns:[{include:"#style"}]},tsParenExpression:{begin:"\\G\\s*(\\()",beginCaptures:{1:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"$self"},{include:"#tsBracketExpression"},{include:"#style"}]}},scopeName:"inline-styles.ng",embeddedLangs:["scss"]});var r=[...s,i];const o=Object.freeze({injectTo:["source.ts.ng"],injectionSelector:"L:meta.decorator.ts -comment -text.html",name:"angular-inline-template",patterns:[{include:"#inlineTemplate"}],repository:{inlineTemplate:{begin:"(template)\\s*(:)",beginCaptures:{1:{name:"meta.object-literal.key.ts"},2:{name:"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},end:"(?=,|})",patterns:[{include:"#tsParenExpression"},{include:"#ngTemplate"}]},ngTemplate:{begin:"\\G\\s*([`|'|\"])",beginCaptures:{1:{name:"string"}},contentName:"text.html",end:"\\1",endCaptures:{0:{name:"string"}},patterns:[{include:"text.html.derivative.ng"},{include:"template.ng"}]},tsParenExpression:{begin:"\\G\\s*(\\()",beginCaptures:{1:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#tsParenExpression"},{include:"#ngTemplate"}]}},scopeName:"inline-template.ng",embeddedLangs:["angular-html","angular-template"]});var c=[...n,...e,o];const l=Object.freeze({displayName:"Angular TypeScript",name:"angular-ts",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.objectliteral.ts",patterns:[{include:"#object-member"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.array.literal.ts",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.ts"},2:{name:"variable.parameter.ts"}},match:"(?:(?)",name:"meta.arrow.ts"},{begin:`(?x) (?: +(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +) +)`,beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.ts",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"((?<=\\}|\\S)(?)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.return.type.arrow.ts",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"async-modifier":{match:"(?)",name:"cast.expr.ts"},{begin:"(?:(?*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!)",endCaptures:{1:{name:"meta.brace.angle.ts"}},name:"cast.expr.ts",patterns:[{include:"#type"}]},{begin:"(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",beginCaptures:{1:{name:"meta.brace.angle.ts"}},end:"(\\>)",endCaptures:{1:{name:"meta.brace.angle.ts"}},name:"cast.expr.ts",patterns:[{include:"#type"}]}]},"class-declaration":{begin:"(?\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.ts"}},end:"(?=$)",name:"comment.line.triple-slash.directive.ts",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.ts"},2:{name:"entity.name.tag.directive.ts"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.ts"}},name:"meta.tag.ts",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.ts"},{match:"=",name:"keyword.operator.assignment.ts"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"()|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.ts"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.ts"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|satisfies|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.ts"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.ts"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.ts"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.ts"},{captures:{1:{name:"keyword.operator.logical.ts"},2:{name:"keyword.operator.assignment.compound.ts"},3:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.ts"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.ts"},{match:"\\=",name:"keyword.operator.assignment.ts"},{match:"--",name:"keyword.operator.decrement.ts"},{match:"\\+\\+",name:"keyword.operator.increment.ts"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.ts"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},"field-declaration":{begin:`(?x)(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.ts variable.object.property.ts"},{match:"\\?",name:"keyword.operator.optional.ts"},{match:"\\!",name:"keyword.operator.definiteassignment.ts"}]},"for-loop":{begin:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",name:"meta.function-call.ts",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.ts",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.ts punctuation.accessor.optional.ts"},{match:"\\!",name:"meta.function-call.ts keyword.operator.definiteassignment.ts"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.ts"}]},"function-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.constant.property.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.property.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.ts"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ts"}]},"if-statement":{patterns:[{begin:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.modifier.async.ts"},5:{name:"keyword.operator.new.ts"},6:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.modifier.async.ts"},5:{name:"storage.type.property.ts"},6:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.property.ts"},3:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.property.ts"},3:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.ts"},{captures:{0:{name:"meta.object-literal.key.ts"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ts"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ts"}},end:"(?=,|\\})",name:"meta.object.member.ts",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ts"},{captures:{1:{name:"keyword.control.as.ts"},2:{name:"storage.modifier.ts"}},match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.ts"}},match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?])",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"}},contentName:"meta.arrow.ts meta.return.type.arrow.ts",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.ts"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"keyword.other.ts"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]},{begin:"((?"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) +| +(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`},{captures:{1:{name:"support.type.object.module.ts"},2:{name:"support.type.object.module.ts"},3:{name:"punctuation.accessor.ts"},4:{name:"punctuation.accessor.optional.ts"},5:{name:"support.type.object.module.ts"}},match:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.ts"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"},2:{name:"string.template.ts punctuation.definition.string.template.begin.ts"}},contentName:"string.template.ts",end:"`",endCaptures:{0:{name:"string.template.ts punctuation.definition.string.template.end.ts"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.ts"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.ts"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.ts"}},match:"(?)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?) +)) +) +) +)`,end:"(?<=\\))",name:"meta.type.function.ts",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.ts"}},end:"(?)(?:\\?]|//|$)",name:"meta.type.function.return.ts",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"(?)(?]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.ts",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.ts"},2:{name:"entity.name.type.ts"},3:{name:"keyword.operator.expression.extends.ts"}},match:"(?)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.ts"},2:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},contentName:"meta.type.parameters.ts",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.ts"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.object.type.ts",patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?=\\S)"},{match:"(?)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#comment"},{match:"(?)",name:"keyword.operator.assignment.ts"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},name:"meta.type.paren.cover.ts",patterns:[{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"entity.name.function.ts variable.language.this.ts"},4:{name:"entity.name.function.ts"},5:{name:"keyword.operator.optional.ts"}},match:`(?x)(?:(?) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"}},end:"(?=$|^|[;,=}]|((?) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts entity.name.function.ts"},2:{name:"keyword.operator.definiteassignment.ts"}},end:"(?=$|^|[;,=}]|((?\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.ts"}},end:"(?=$|^|[,);}\\]]|((?)"},{captures:{1:{name:"punctuation.definition.tag.apacheconf"},2:{name:"entity.tag.apacheconf"},3:{name:"punctuation.definition.tag.apacheconf"}},match:"()"},{captures:{3:{name:"string.regexp.apacheconf"},4:{name:"string.replacement.apacheconf"}},match:"(?<=(Rewrite(Rule|Cond)))\\s+(.+?)\\s+(.+?)($|\\s)"},{captures:{2:{name:"entity.status.apacheconf"},3:{name:"string.regexp.apacheconf"},5:{name:"string.path.apacheconf"}},match:"(?<=RedirectMatch)(\\s+(\\d\\d\\d|permanent|temp|seeother|gone))?\\s+(.+?)\\s+((.+?)($|\\s))?"},{captures:{2:{name:"entity.status.apacheconf"},3:{name:"string.path.apacheconf"},5:{name:"string.path.apacheconf"}},match:"(?<=Redirect)(\\s+(\\d\\d\\d|permanent|temp|seeother|gone))?\\s+(.+?)\\s+((.+?)($|\\s))?"},{captures:{1:{name:"string.regexp.apacheconf"},3:{name:"string.path.apacheconf"}},match:"(?<=ScriptAliasMatch|AliasMatch)\\s+(.+?)\\s+((.+?)\\s)?"},{captures:{1:{name:"string.path.apacheconf"},3:{name:"string.path.apacheconf"}},match:"(?<=RedirectPermanent|RedirectTemp|ScriptAlias|Alias)\\s+(.+?)\\s+((.+?)($|\\s))?"},{captures:{1:{name:"keyword.core.apacheconf"}},match:"\\b(AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|Define|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include(Optional)?|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|Mutex|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|Time(O|o)ut|TraceEnable|UseCanonicalName|Use|ErrorLogFormat|GlobalLog|PHPIniDir|SSLHonorCipherOrder|SSLCompression|SSLUseStapling|SSLStapling\\w+|SSLCARevocationCheck|SSLSRPVerifierFile|SSLSessionTickets|RequestReadTimeout|ProxyHTML\\w+|MaxRanges)\\b"},{captures:{1:{name:"keyword.mpm.apacheconf"}},match:"\\b(AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxConnectionsPerChild|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"},{captures:{1:{name:"keyword.access.apacheconf"}},match:"\\b(Allow|Deny|Order)\\b"},{captures:{1:{name:"keyword.actions.apacheconf"}},match:"\\b(Action|Script)\\b"},{captures:{1:{name:"keyword.alias.apacheconf"}},match:"\\b(Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"},{captures:{1:{name:"keyword.auth.apacheconf"}},match:"\\b(AuthAuthoritative|AuthGroupFile|AuthUserFile|AuthBasicProvider|AuthBasicFake|AuthBasicAuthoritative|AuthBasicUseDigestAlgorithm)\\b"},{captures:{1:{name:"keyword.auth_anon.apacheconf"}},match:"\\b(Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"},{captures:{1:{name:"keyword.auth_dbm.apacheconf"}},match:"\\b(AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"},{captures:{1:{name:"keyword.auth_digest.apacheconf"}},match:"\\b(AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize|AuthDigestProvider)\\b"},{captures:{1:{name:"keyword.auth_ldap.apacheconf"}},match:"\\b(AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"},{captures:{1:{name:"keyword.autoindex.apacheconf"}},match:"\\b(AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|IndexStyleSheet|IndexHeadInsert|ReadmeName)\\b"},{captures:{1:{name:"keyword.filter.apacheconf"}},match:"\\b(BalancerMember|BalancerGrowth|BalancerPersist|BalancerInherit)\\b"},{captures:{1:{name:"keyword.cache.apacheconf"}},match:"\\b(CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"},{captures:{1:{name:"keyword.cern_meta.apacheconf"}},match:"\\b(MetaDir|MetaFiles|MetaSuffix)\\b"},{captures:{1:{name:"keyword.cgi.apacheconf"}},match:"\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"},{captures:{1:{name:"keyword.cgid.apacheconf"}},match:"\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"},{captures:{1:{name:"keyword.charset_lite.apacheconf"}},match:"\\b(CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"},{captures:{1:{name:"keyword.dav.apacheconf"}},match:"\\b(Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"},{captures:{1:{name:"keyword.deflate.apacheconf"}},match:"\\b(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"},{captures:{1:{name:"keyword.dir.apacheconf"}},match:"\\b(DirectoryIndex|DirectorySlash|FallbackResource)\\b"},{captures:{1:{name:"keyword.disk_cache.apacheconf"}},match:"\\b(CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"},{captures:{1:{name:"keyword.dumpio.apacheconf"}},match:"\\b(DumpIOInput|DumpIOOutput)\\b"},{captures:{1:{name:"keyword.env.apacheconf"}},match:"\\b(PassEnv|SetEnv|UnsetEnv)\\b"},{captures:{1:{name:"keyword.expires.apacheconf"}},match:"\\b(ExpiresActive|ExpiresByType|ExpiresDefault)\\b"},{captures:{1:{name:"keyword.ext_filter.apacheconf"}},match:"\\b(ExtFilterDefine|ExtFilterOptions)\\b"},{captures:{1:{name:"keyword.file_cache.apacheconf"}},match:"\\b(CacheFile|MMapFile)\\b"},{captures:{1:{name:"keyword.filter.apacheconf"}},match:"\\b(AddOutputFilterByType|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace)\\b"},{captures:{1:{name:"keyword.headers.apacheconf"}},match:"\\b(Header|RequestHeader)\\b"},{captures:{1:{name:"keyword.imap.apacheconf"}},match:"\\b(ImapBase|ImapDefault|ImapMenu)\\b"},{captures:{1:{name:"keyword.include.apacheconf"}},match:"\\b(SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"},{captures:{1:{name:"keyword.isapi.apacheconf"}},match:"\\b(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"},{captures:{1:{name:"keyword.ldap.apacheconf"}},match:"\\b(LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"},{captures:{1:{name:"keyword.log.apacheconf"}},match:"\\b(BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"},{captures:{1:{name:"keyword.mem_cache.apacheconf"}},match:"\\b(MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"},{captures:{1:{name:"keyword.mime.apacheconf"}},match:"\\b(AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"},{captures:{1:{name:"keyword.misc.apacheconf"}},match:"\\b(ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"},{captures:{1:{name:"keyword.negotiation.apacheconf"}},match:"\\b(CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"},{captures:{1:{name:"keyword.nw_ssl.apacheconf"}},match:"\\b(NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"},{captures:{1:{name:"keyword.proxy.apacheconf"}},match:"\\b(AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassMatch|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"},{captures:{1:{name:"keyword.rewrite.apacheconf"}},match:"\\b(RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"},{captures:{1:{name:"keyword.setenvif.apacheconf"}},match:"\\b(BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"},{captures:{1:{name:"keyword.so.apacheconf"}},match:"\\b(LoadFile|LoadModule)\\b"},{captures:{1:{name:"keyword.ssl.apacheconf"}},match:"\\b(SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|SSLInsecureRenegotiation|SSLOpenSSLConfCmd)\\b"},{captures:{1:{name:"keyword.substitute.apacheconf"}},match:"\\b(Substitute|SubstituteInheritBefore|SubstituteMaxLineLength)\\b"},{captures:{1:{name:"keyword.usertrack.apacheconf"}},match:"\\b(CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"},{captures:{1:{name:"keyword.vhost_alias.apacheconf"}},match:"\\b(VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"},{captures:{1:{name:"keyword.php.apacheconf"},3:{name:"entity.property.apacheconf"},5:{name:"string.value.apacheconf"}},match:'\\b(php_value|php_flag|php_admin_value|php_admin_flag)\\b(\\s+(.+?)(\\s+(".+?"|.+?))?)?\\s'},{captures:{1:{name:"punctuation.variable.apacheconf"},3:{name:"variable.env.apacheconf"},4:{name:"variable.misc.apacheconf"},5:{name:"punctuation.variable.apacheconf"}},match:"(%\\{)((HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"},{captures:{1:{name:"entity.mime-type.apacheconf"}},match:"\\b((text|image|application|video|audio)/.+?)\\s"},{captures:{1:{name:"entity.helper.apacheconf"}},match:"\\b(?i)(export|from|unset|set|on|off)\\b"},{captures:{1:{name:"constant.numeric.integer.decimal.apacheconf"}},match:"\\b(\\d+)\\b"},{captures:{1:{name:"punctuation.definition.flag.apacheconf"},2:{name:"string.flag.apacheconf"},3:{name:"punctuation.definition.flag.apacheconf"}},match:"\\s(\\[)(.*?)(\\])\\s"}],scopeName:"source.apacheconf"});var a=[e];export{a as default}; diff --git a/assets/chunks/apex.Sfo2eW0G.js b/assets/chunks/apex.Sfo2eW0G.js new file mode 100644 index 000000000..481919f7f --- /dev/null +++ b/assets/chunks/apex.Sfo2eW0G.js @@ -0,0 +1,274 @@ +const e=Object.freeze({displayName:"Apex",fileTypes:["apex","cls","trigger"],name:"apex",patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#directives"},{include:"#declarations"},{include:"#script-top-level"}],repository:{"annotation-declaration":{begin:"([@][_[:alpha:]]+)\\b",beginCaptures:{1:{name:"storage.type.annotation.apex"}},end:"(?<=\\)|$)",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},"argument-list":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#named-argument"},{include:"#expression"},{include:"#punctuation-comma"}]},"array-creation-expression":{begin:`(?x) +\\b(new)\\b\\s* +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)?\\s* +(?=\\[)`,beginCaptures:{1:{name:"keyword.control.new.apex"},2:{patterns:[{include:"#support-type"},{include:"#type"}]}},end:"(?<=\\])",patterns:[{include:"#bracketed-argument-list"}]},block:{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.apex"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{include:"#statement"}]},"boolean-literal":{patterns:[{match:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s* +(\\))(?=\\s*@?[_[:alnum:]\\(])`},"catch-clause":{begin:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s* +(?:(\\g)\\b)?`}]},{include:"#comment"},{include:"#block"}]},"class-declaration":{begin:"(?=\\bclass\\b)",end:"(?<=\\})",patterns:[{begin:`(?x) +\\b(class)\\b\\s+ +(@?[_[:alpha:]][_[:alnum:]]*)\\s*`,beginCaptures:{1:{name:"keyword.other.class.apex"},2:{name:"entity.name.type.class.apex"}},end:"(?=\\{)",patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#type-parameter-list"},{include:"#extends-class"},{include:"#implements-class"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.apex"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{include:"#class-or-trigger-members"}]},{include:"#javadoc-comment"},{include:"#comment"}]},"class-or-trigger-members":{patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#storage-modifier"},{include:"#sharing-modifier"},{include:"#type-declarations"},{include:"#field-declaration"},{include:"#property-declaration"},{include:"#indexer-declaration"},{include:"#variable-initializer"},{include:"#constructor-declaration"},{include:"#method-declaration"},{include:"#punctuation-semicolon"}]},"colon-expression":{match:":",name:"keyword.operator.conditional.colon.apex"},comment:{patterns:[{begin:"/\\*(\\*)?",beginCaptures:{0:{name:"punctuation.definition.comment.apex"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.apex"}},name:"comment.block.apex"},{begin:"(^\\s+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.apex"}},end:"(?=$)",patterns:[{begin:"(?)",patterns:[{include:"#constructor-initializer"}]},{include:"#parenthesized-parameter-list"},{include:"#comment"},{include:"#expression-body"},{include:"#block"}]},"constructor-initializer":{begin:"\\b(?:(this))\\b\\s*(?=\\()",beginCaptures:{1:{name:"keyword.other.this.apex"}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"date-literal-with-params":{captures:{1:{name:"keyword.operator.query.date.apex"}},match:"\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\s*\\:\\d+)\\b"},"date-literals":{captures:{1:{name:"keyword.operator.query.date.apex"}},match:"\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\b\\s*"},declarations:{patterns:[{include:"#type-declarations"},{include:"#punctuation-semicolon"}]},directives:{patterns:[{include:"#punctuation-semicolon"}]},"do-statement":{begin:"(?",beginCaptures:{0:{name:"keyword.operator.arrow.apex"}},end:"(?=[,\\);}])",patterns:[{include:"#expression"}]},"expression-operators":{patterns:[{match:"\\*=|/=|%=|\\+=|-=",name:"keyword.operator.assignment.compound.apex"},{match:"\\&=|\\^=|<<=|>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.apex"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.apex"},{match:"==|!=",name:"keyword.operator.comparison.apex"},{match:"<=|>=|<|>",name:"keyword.operator.relational.apex"},{match:"\\!|&&|\\|\\|",name:"keyword.operator.logical.apex"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.apex"},{match:"\\=",name:"keyword.operator.assignment.apex"},{match:"--",name:"keyword.operator.decrement.apex"},{match:"\\+\\+",name:"keyword.operator.increment.apex"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.apex"}]},"extends-class":{begin:"(extends)\\b\\s+([_[:alpha:]][_[:alnum:]]*)",beginCaptures:{1:{name:"keyword.other.extends.apex"},2:{name:"entity.name.type.extends.apex"}},end:"(?={|implements)"},"field-declaration":{begin:`(?x) +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +(\\g)\\s* +(?!=>|==)(?=,|;|=|$)`,beginCaptures:{1:{patterns:[{include:"#support-type"},{include:"#type"}]},5:{name:"entity.name.variable.field.apex"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.field.apex"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"},{include:"#class-or-trigger-members"}]},"finally-clause":{begin:"(? +(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(?this)\\s* +(?=\\[)`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},7:{name:"keyword.other.this.apex"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#property-accessors"},{include:"#expression-body"},{include:"#variable-initializer"}]},"initializer-expression":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.apex"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"interface-declaration":{begin:"(?=\\binterface\\b)",end:"(?<=\\})",patterns:[{begin:`(?x) +(interface)\\b\\s+ +(@?[_[:alpha:]][_[:alnum:]]*)`,beginCaptures:{1:{name:"keyword.other.interface.apex"},2:{name:"entity.name.type.interface.apex"}},end:"(?=\\{)",patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#type-parameter-list"},{include:"#extends-class"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.apex"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{include:"#interface-members"}]},{include:"#javadoc-comment"},{include:"#comment"}]},"interface-members":{patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#property-declaration"},{include:"#indexer-declaration"},{include:"#method-declaration"},{include:"#punctuation-semicolon"}]},"invocation-expression":{begin:`(?x) +(?:(\\??\\.)\\s*)? +(@?[_[:alpha:]][_[:alnum:]]*)\\s* +(?\\s*<([^<>]|\\g)+>\\s*)?\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{include:"#punctuation-accessor"},{include:"#operator-safe-navigation"}]},2:{name:"entity.name.function.apex"},3:{patterns:[{include:"#type-arguments"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"javadoc-comment":{patterns:[{begin:"^\\s*(/\\*\\*)(?!/)",beginCaptures:{1:{name:"punctuation.definition.comment.apex"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.apex"}},name:"comment.block.javadoc.apex",patterns:[{match:"@(deprecated|author|return|see|serial|since|version|usage|name|link)\\b",name:"keyword.other.documentation.javadoc.apex"},{captures:{1:{name:"keyword.other.documentation.javadoc.apex"},2:{name:"entity.name.variable.parameter.apex"}},match:"(@param)\\s+(\\S+)"},{captures:{1:{name:"keyword.other.documentation.javadoc.apex"},2:{name:"entity.name.type.class.apex"}},match:"(@(?:exception|throws))\\s+(\\S+)"},{captures:{1:{name:"string.quoted.single.apex"}},match:"(`([^`]+?)`)"}]}]},literal:{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#string-literal"}]},"local-constant-declaration":{begin:`(?x) +(?\\b(?:const)\\b)\\s* +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +(\\g)\\s* +(?=,|;|=)`,beginCaptures:{1:{name:"storage.modifier.apex"},2:{patterns:[{include:"#type"}]},6:{name:"entity.name.variable.local.apex"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.apex"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"local-declaration":{patterns:[{include:"#local-constant-declaration"},{include:"#local-variable-declaration"}]},"local-variable-declaration":{begin:`(?x) +(?: +(?:(\\bref)\\s+)?(\\bvar\\b)| +(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +) +)\\s+ +(\\g)\\s* +(?=,|;|=|\\))`,beginCaptures:{1:{name:"storage.modifier.apex"},2:{name:"keyword.other.var.apex"},3:{patterns:[{include:"#support-type"},{include:"#type"}]},7:{name:"entity.name.variable.local.apex"}},end:"(?=;|\\))",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.apex"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"member-access-expression":{patterns:[{captures:{1:{patterns:[{include:"#punctuation-accessor"},{include:"#operator-safe-navigation"}]},2:{name:"variable.other.object.property.apex"}},match:`(?x) +(\\??\\.)\\s* +(@?[_[:alpha:]][_[:alnum:]]*)\\s* +(?![_[:alnum:]]|\\(|(\\?)?\\[|<)`},{captures:{1:{patterns:[{include:"#punctuation-accessor"},{include:"#operator-safe-navigation"}]},2:{name:"variable.other.object.apex"},3:{patterns:[{include:"#type-arguments"}]}},match:`(?x) +(\\??\\.)?\\s* +(@?[_[:alpha:]][_[:alnum:]]*) +(?\\s*<([^<>]|\\g)+>\\s*) +(?= +(\\s*\\?)? +\\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]* +)`},{captures:{1:{name:"variable.other.object.apex"}},match:`(?x) +(@?[_[:alpha:]][_[:alnum:]]*) +(?= +(\\s*\\?)? +\\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]* +)`}]},"merge-expression":{begin:"(merge)\\b\\s+",beginCaptures:{1:{name:"support.function.apex"}},end:"(?<=\\;)",patterns:[{include:"#object-creation-expression"},{include:"#merge-type-statement"},{include:"#expression"},{include:"#punctuation-semicolon"}]},"merge-type-statement":{captures:{1:{name:"variable.other.readwrite.apex"},2:{name:"variable.other.readwrite.apex"},3:{name:"punctuation.terminator.statement.apex"}},match:"([_[:alpha:]]*)\\b\\s+([_[:alpha:]]*)\\b\\s*(\\;)"},"method-declaration":{begin:`(?x) +(? +(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(\\g)\\s* +(<([^<>]+)>)?\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{include:"#support-type"},{include:"#type"}]},6:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},7:{patterns:[{include:"#support-type"},{include:"#method-name-custom"}]},8:{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"method-name-custom":{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.function.apex"},"named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{1:{name:"entity.name.variable.parameter.apex"},2:{name:"punctuation.separator.colon.apex"}},end:"(?=(,|\\)|\\]))",patterns:[{include:"#expression"}]},"null-literal":{match:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s* +(?=\\{|$)`},"object-creation-expression-with-parameters":{begin:`(?x) +(delete|insert|undelete|update|upsert)? +\\s*(new)\\s+ +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s* +(?=\\()`,beginCaptures:{1:{name:"support.function.apex"},2:{name:"keyword.control.new.apex"},3:{patterns:[{include:"#support-type"},{include:"#type"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"operator-assignment":{match:"(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +(\\g)`},"parenthesized-expression":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#expression"}]},"parenthesized-parameter-list":{begin:"(\\()",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"(\\))",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#comment"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]},"property-accessors":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.apex"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{match:"\\b(private|protected)\\b",name:"storage.modifier.apex"},{match:"\\b(get)\\b",name:"keyword.other.get.apex"},{match:"\\b(set)\\b",name:"keyword.other.set.apex"},{include:"#comment"},{include:"#expression-body"},{include:"#block"},{include:"#punctuation-semicolon"}]},"property-declaration":{begin:`(?x) +(?!.*\\b(?:class|interface|enum)\\b)\\s* +(? +(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(?\\g)\\s* +(?=\\{|=>|$)`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},7:{name:"entity.name.variable.property.apex"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#property-accessors"},{include:"#expression-body"},{include:"#variable-initializer"},{include:"#class-or-trigger-members"}]},"punctuation-accessor":{match:"\\.",name:"punctuation.accessor.apex"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.apex"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.apex"},"query-operators":{captures:{1:{name:"keyword.operator.query.apex"}},match:"\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\b\\s*"},"return-statement":{begin:"(?",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.apex"}},patterns:[{include:"#comment"},{include:"#support-type"},{include:"#punctuation-comma"}]},"support-class":{captures:{1:{name:"support.class.apex"}},match:"\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\b"},"support-expression":{begin:`(?x) +(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\.|\\s)`,beginCaptures:{1:{name:"support.class.apex"}},end:"(?<=\\)|$)|(?=\\})|(?=;)|(?=\\)|(?=\\]))|(?=\\,)",patterns:[{include:"#support-type"},{captures:{1:{name:"punctuation.accessor.apex"},2:{name:"support.function.apex"}},match:"(?:(\\.))([[:alpha:]]*)(?=\\()"},{captures:{1:{name:"punctuation.accessor.apex"},2:{name:"support.type.apex"}},match:"(?:(\\.))([[:alpha:]]+)"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},{include:"#comment"},{include:"#statement"}]},"support-functions":{captures:{1:{name:"support.function.apex"}},match:"\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\b"},"support-name":{patterns:[{captures:{1:{name:"punctuation.accessor.apex"},2:{name:"support.function.apex"}},match:"(\\.)\\s*([[:alpha:]]*)(?=\\()"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.apex"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.apex"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},{captures:{1:{name:"punctuation.accessor.apex"},2:{name:"support.type.apex"}},match:"(\\.)\\s*([_[:alpha:]]*)"}]},"support-type":{name:"support.apex",patterns:[{include:"#comment"},{include:"#support-class"},{include:"#support-functions"},{include:"#support-name"}]},"switch-statement":{begin:`(?x) +(switch)\\b\\s+ +(on)\\b\\s+ +(?:([_.?\\'\\(\\)[:alnum:]]+)\\s*)? +(\\{)`,beginCaptures:{1:{name:"keyword.control.switch.apex"},2:{name:"keyword.control.switch.on.apex"},3:{patterns:[{include:"#statement"},{include:"#parenthesized-expression"}]},4:{name:"punctuation.curlybrace.open.apex"}},end:"(\\})",endCaptures:{0:{name:"punctuation.curlybrace.close.apex"}},patterns:[{include:"#when-string"},{include:"#when-else-statement"},{include:"#when-sobject-statement"},{include:"#when-statement"},{include:"#when-multiple-statement"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},"this-expression":{captures:{1:{name:"keyword.other.this.apex"}},match:"\\b(?:(this))\\b"},"throw-expression":{captures:{1:{name:"keyword.control.flow.throw.apex"}},match:"(?",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.apex"}},patterns:[{include:"#comment"},{include:"#support-type"},{include:"#type"},{include:"#punctuation-comma"}]},"type-array-suffix":{begin:"\\[",beginCaptures:{0:{name:"punctuation.squarebracket.open.apex"}},end:"\\]",endCaptures:{0:{name:"punctuation.squarebracket.close.apex"}},patterns:[{include:"#punctuation-comma"}]},"type-builtin":{captures:{1:{name:"keyword.type.apex"}},match:"\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\b"},"type-declarations":{patterns:[{include:"#javadoc-comment"},{include:"#comment"},{include:"#annotation-declaration"},{include:"#storage-modifier"},{include:"#sharing-modifier"},{include:"#class-declaration"},{include:"#enum-declaration"},{include:"#interface-declaration"},{include:"#trigger-declaration"},{include:"#punctuation-semicolon"}]},"type-name":{patterns:[{captures:{1:{name:"storage.type.apex"},2:{name:"punctuation.accessor.apex"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)"},{captures:{1:{name:"punctuation.accessor.apex"},2:{name:"storage.type.apex"}},match:"(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"storage.type.apex"}]},"type-nullable-suffix":{captures:{0:{name:"punctuation.separator.question-mark.apex"}},match:"\\?"},"type-parameter-list":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.apex"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.apex"}},patterns:[{captures:{1:{name:"entity.name.type.type-parameter.apex"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b"},{include:"#comment"},{include:"#punctuation-comma"}]},"using-scope":{captures:{1:{name:"keyword.operator.query.using.apex"}},match:"((USING SCOPE)\\b\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\b\\s*"},"variable-initializer":{begin:"(?)",beginCaptures:{1:{name:"keyword.operator.assignment.apex"}},end:"(?=[,\\)\\];}])",patterns:[{include:"#expression"}]},"when-else-statement":{begin:"(when)\\b\\s+(else)\\b\\s*",beginCaptures:{1:{name:"keyword.control.switch.when.apex"},2:{name:"keyword.control.switch.else.apex"}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#expression"}]},"when-multiple-statement":{begin:"(when)\\b\\s*",beginCaptures:{1:{name:"keyword.control.switch.when.apex"}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#expression"}]},"when-sobject-statement":{begin:"(when)\\b\\s+([_[:alnum:]]+)\\s+([_[:alnum:]]+)\\s*",beginCaptures:{1:{name:"keyword.control.switch.when.apex"},2:{name:"storage.type.apex"},3:{name:"entity.name.variable.local.apex"}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#expression"}]},"when-statement":{begin:"(when)\\b\\s+([\\'_\\-[:alnum:]]+)\\s*",beginCaptures:{1:{name:"keyword.control.switch.when.apex"},2:{patterns:[{include:"#expression"}]}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#expression"}]},"when-string":{begin:"(when)(\\b\\s*)((\\')[_.\\,\\'\\s*[:alnum:]]+)",beginCaptures:{1:{name:"keyword.control.switch.when.apex"},2:{name:"punctuation.whitespace.apex"},3:{patterns:[{include:"#when-string-statement"},{include:"#punctuation-comma"}]}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#expression"}]},"when-string-statement":{patterns:[{begin:"\\'",beginCaptures:{0:{name:"punctuation.definition.string.begin.apex"}},end:"\\'",endCaptures:{0:{name:"punctuation.definition.string.end.apex"}},name:"string.quoted.single.apex"}]},"where-clause":{captures:{1:{name:"keyword.operator.query.where.apex"}},match:"\\b(WHERE)\\b\\s*"},"while-statement":{begin:"(?",endCaptures:{0:{name:"punctuation.definition.string.end.apex"}},name:"string.unquoted.cdata.apex"},"xml-character-entity":{patterns:[{captures:{1:{name:"punctuation.definition.constant.apex"},3:{name:"punctuation.definition.constant.apex"}},match:`(?x) +(&) +( +(?:[[:alpha:]:_][[:alnum:]:_.-]*)| +(?:\\#[[:digit:]]+)| +(?:\\#x[[:xdigit:]]+) +) +(;)`,name:"constant.character.entity.apex"},{match:"&",name:"invalid.illegal.bad-ampersand.apex"}]},"xml-comment":{begin:"",endCaptures:{0:{name:"punctuation.definition.comment.apex"}},name:"comment.block.apex"},"xml-doc-comment":{patterns:[{include:"#xml-comment"},{include:"#xml-character-entity"},{include:"#xml-cdata"},{include:"#xml-tag"}]},"xml-string":{patterns:[{begin:"\\'",beginCaptures:{0:{name:"punctuation.definition.string.begin.apex"}},end:"\\'",endCaptures:{0:{name:"punctuation.definition.string.end.apex"}},name:"string.quoted.single.apex",patterns:[{include:"#xml-character-entity"}]},{begin:'\\"',beginCaptures:{0:{name:"punctuation.definition.stringdoublequote.begin.apex"}},end:'\\"',endCaptures:{0:{name:"punctuation.definition.stringdoublequote.end.apex"}},name:"string.quoted.double.apex",patterns:[{include:"#xml-character-entity"}]}]},"xml-tag":{begin:`(?x) +()",endCaptures:{1:{name:"punctuation.definition.tag.apex"}},name:"meta.tag.apex",patterns:[{include:"#xml-attribute"}]}},scopeName:"source.apex"});var n=[e];export{n as default}; diff --git a/assets/chunks/apl.7kPAH7yp.js b/assets/chunks/apl.7kPAH7yp.js new file mode 100644 index 000000000..25a4b5e0a --- /dev/null +++ b/assets/chunks/apl.7kPAH7yp.js @@ -0,0 +1,87 @@ +import a from"./html.CuK0VrWf.js";import e from"./xml.BzTcx3OS.js";import n from"./css.CbYhyuC0.js";import t from"./javascript.Dch3xQiY.js";import u from"./json.CupVZNk8.js";import"./java.ClXEvkw9.js";const o=Object.freeze({displayName:"APL",fileTypes:["apl","apla","aplc","aplf","apli","apln","aplo","dyalog","dyapp","mipage"],firstLineMatch:`(?x) +# APL symbols +[⌶-⍺] +| + +# Hashbang +^\\#!.*(?:\\s|\\/|(?<=!)\\b) + (?:gnu[-._]?apl|aplx?|dyalog) +(?:$|\\s) +| + +# Modeline +(?i: + # Emacs + -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*) + apl + (?=[\\s;]|(?]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s* set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*= + apl + (?=\\s|:|$) +)`,foldingStartMarker:"{",foldingStopMarker:"}",name:"apl",patterns:[{match:"\\A#!.*$",name:"comment.line.shebang.apl"},{include:"#heredocs"},{include:"#main"},{begin:"^\\s*((\\))OFF|(\\])NEXTFILE)\\b(.*)$",beginCaptures:{1:{name:"entity.name.command.eof.apl"},2:{name:"punctuation.definition.command.apl"},3:{name:"punctuation.definition.command.apl"},4:{patterns:[{include:"#comment"}]}},contentName:"text.embedded.apl",end:"(?=N)A"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.round.bracket.begin.apl"}},end:"\\)",endCaptures:{0:{name:"punctuation.round.bracket.end.apl"}},name:"meta.round.bracketed.group.apl",patterns:[{include:"#main"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.square.bracket.begin.apl"}},end:"\\]",endCaptures:{0:{name:"punctuation.square.bracket.end.apl"}},name:"meta.square.bracketed.group.apl",patterns:[{include:"#main"}]},{begin:"^\\s*((\\))\\S+)",beginCaptures:{1:{name:"entity.name.command.apl"},2:{name:"punctuation.definition.command.apl"}},end:"$",name:"meta.system.command.apl",patterns:[{include:"#command-arguments"},{include:"#command-switches"},{include:"#main"}]},{begin:"^\\s*((\\])\\S+)",beginCaptures:{1:{name:"entity.name.command.apl"},2:{name:"punctuation.definition.command.apl"}},end:"$",name:"meta.user.command.apl",patterns:[{include:"#command-arguments"},{include:"#command-switches"},{include:"#main"}]}],repository:{class:{patterns:[{begin:`(?x) +(?<=\\s|^) +((:)Class) +\\s+ +( +'[^']*'? +| +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +) +\\s* +( +(:) +\\s* +(?: +( +'[^']*'? +| +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +) +\\s* +)? +)? +(.*?)$`,beginCaptures:{0:{name:"meta.class.apl"},1:{name:"keyword.control.class.apl"},2:{name:"punctuation.definition.class.apl"},3:{name:"entity.name.type.class.apl",patterns:[{include:"#strings"}]},4:{name:"entity.other.inherited-class.apl"},5:{name:"punctuation.separator.inheritance.apl"},6:{patterns:[{include:"#strings"}]},7:{name:"entity.other.class.interfaces.apl",patterns:[{include:"#csv"}]}},end:"(?<=\\s|^)((:)EndClass)(?=\\b)",endCaptures:{1:{name:"keyword.control.class.apl"},2:{name:"punctuation.definition.class.apl"}},patterns:[{begin:"(?<=\\s|^)(:)Field(?=\\s)",beginCaptures:{0:{name:"keyword.control.field.apl"},1:{name:"punctuation.definition.field.apl"}},end:"\\s*(←.*)?(?:$|(?=⍝))",endCaptures:{0:{name:"entity.other.initial-value.apl"},1:{patterns:[{include:"#main"}]}},name:"meta.field.apl",patterns:[{match:"(?<=\\s|^)Public(?=\\s|$)",name:"storage.modifier.access.public.apl"},{match:"(?<=\\s|^)Private(?=\\s|$)",name:"storage.modifier.access.private.apl"},{match:"(?<=\\s|^)Shared(?=\\s|$)",name:"storage.modifier.shared.apl"},{match:"(?<=\\s|^)Instance(?=\\s|$)",name:"storage.modifier.instance.apl"},{match:"(?<=\\s|^)ReadOnly(?=\\s|$)",name:"storage.modifier.readonly.apl"},{captures:{1:{patterns:[{include:"#strings"}]}},match:`(?x) +( +'[^']*'? +| +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +)`,name:"entity.name.type.apl"}]},{include:"$self"}]}]},"command-arguments":{patterns:[{begin:"\\b(?=\\S)",end:"\\b(?=\\s)",name:"variable.parameter.argument.apl",patterns:[{include:"#main"}]}]},"command-switches":{patterns:[{begin:`(?x) +(?<=\\s)(-) +( +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +) +(=)`,beginCaptures:{1:{name:"punctuation.delimiter.switch.apl"},2:{name:"entity.name.switch.apl"},3:{name:"punctuation.assignment.switch.apl"}},end:"\\b(?=\\s)",name:"variable.parameter.switch.apl",patterns:[{include:"#main"}]},{captures:{1:{name:"punctuation.delimiter.switch.apl"},2:{name:"entity.name.switch.apl"}},match:`(?x) +(?<=\\s)(-) +( +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +) +(?!=)`,name:"variable.parameter.switch.apl"}]},comment:{patterns:[{begin:"⍝",captures:{0:{name:"punctuation.definition.comment.apl"}},end:"$",name:"comment.line.apl"}]},csv:{patterns:[{match:",",name:"punctuation.separator.apl"},{include:"$self"}]},definition:{patterns:[{begin:"(?x) ^\\s*? (?# 1: keyword.operator.nabla.apl) (∇) (?: \\s* (?: (?# 2: entity.function.return-value.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) | \\s* (?# 3: entity.function.return-value.shy.apl) ( (\\{) (?# 4: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}) (?# 5: punctuation.definition.return-value.end.apl) | (\\() (?# 6: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 7: punctuation.definition.return-value.end.apl) | (\\(\\s*\\{) (?# 8: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}\\s*\\)) (?# 9: punctuation.definition.return-value.end.apl) | (\\{\\s*\\() (?# 10: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)\\s*\\}) (?# 11: punctuation.definition.return-value.end.apl) ) \\s* ) \\s* (?# 12: keyword.operator.assignment.apl) (←) )? \\s* (?: (?# MONADIC) (?: (?# 13: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s* (?# 14: entity.function.axis.apl) ( (?# 15: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 16: invalid.illegal.extra-characters.apl) (.*?) | (?# 17: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 18: punctuation.definition.axis.end.apl) (\\]) )? \\s*? (?# 19: entity.function.arguments.right.apl) ( (?<=\\s|\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | (\\() (?# 20: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 21: punctuation.definition.arguments.end.apl) ) \\s* (?=;|$) ) | (?# DYADIC/AMBIVALENT) (?#==================) (?: (?# 22: entity.function.arguments.left.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s+ ) | (?# 23: entity.function.arguments.left.optional.apl) ( (\\{) (?# 24: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}) (?# 25: punctuation.definition.arguments.end.apl) | (\\(\\s*\\{) (?# 26: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}\\s*\\)) (?# 27: punctuation.definition.arguments.end.apl) | (\\{\\s*\\() (?# 28: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)\\s*\\}) (?# 29: punctuation.definition.arguments.end.apl) ) )? \\s* (?: (?# 30: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s* (?# 31: entity.function.axis.apl) ( (?# 32: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 33: invalid.illegal.extra-characters.apl) (.*?) | (?# 34: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 35: punctuation.definition.axis.end.apl) (\\]) )? | (?# 36: entity.function.operands.apl) ( (?# 37: punctuation.definition.operands.begin.apl) (\\() (?# 38: entity.function.operands.left.apl) ( \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* )? \\s* (?# 39: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s*? (?# 40: entity.function.axis.apl) ( (?# 41: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 42: invalid.illegal.extra-characters.apl) (.*?) | (?# 43: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 44: punctuation.definition.axis.end.apl) (\\]) )? \\s* (?# 45: entity.function.operands.right.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )? (?# 46: punctuation.definition.operands.end.apl) (\\)) ) ) \\s* (?# 47: entity.function.arguments.right.apl) ( (?<=\\s|\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | \\s* (\\() (?# 48: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 49: punctuation.definition.arguments.end.apl) )? (?#==================) ) \\s* (?# 50: invalid.illegal.arguments.right.apl) ([^;]+)? (?# 51: entity.function.local-variables.apl) ( (?# 52: Include “;”) ( (?> \\s* ; (?: \\s* [⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )+ )+ ) | (?# 53: invalid.illegal.local-variables.apl) ([^⍝]+) )? \\s* (?# 54: comment.line.apl) (⍝.*)? $",beginCaptures:{0:{name:"entity.function.definition.apl"},1:{name:"keyword.operator.nabla.apl"},2:{name:"entity.function.return-value.apl"},3:{name:"entity.function.return-value.shy.apl"},4:{name:"punctuation.definition.return-value.begin.apl"},5:{name:"punctuation.definition.return-value.end.apl"},6:{name:"punctuation.definition.return-value.begin.apl"},7:{name:"punctuation.definition.return-value.end.apl"},8:{name:"punctuation.definition.return-value.begin.apl"},9:{name:"punctuation.definition.return-value.end.apl"},10:{name:"punctuation.definition.return-value.begin.apl"},11:{name:"punctuation.definition.return-value.end.apl"},12:{name:"keyword.operator.assignment.apl"},13:{name:"entity.function.name.apl",patterns:[{include:"#embolden"}]},14:{name:"entity.function.axis.apl"},15:{name:"punctuation.definition.axis.begin.apl"},16:{name:"invalid.illegal.extra-characters.apl"},17:{name:"invalid.illegal.apl"},18:{name:"punctuation.definition.axis.end.apl"},19:{name:"entity.function.arguments.right.apl"},20:{name:"punctuation.definition.arguments.begin.apl"},21:{name:"punctuation.definition.arguments.end.apl"},22:{name:"entity.function.arguments.left.apl"},23:{name:"entity.function.arguments.left.optional.apl"},24:{name:"punctuation.definition.arguments.begin.apl"},25:{name:"punctuation.definition.arguments.end.apl"},26:{name:"punctuation.definition.arguments.begin.apl"},27:{name:"punctuation.definition.arguments.end.apl"},28:{name:"punctuation.definition.arguments.begin.apl"},29:{name:"punctuation.definition.arguments.end.apl"},30:{name:"entity.function.name.apl",patterns:[{include:"#embolden"}]},31:{name:"entity.function.axis.apl"},32:{name:"punctuation.definition.axis.begin.apl"},33:{name:"invalid.illegal.extra-characters.apl"},34:{name:"invalid.illegal.apl"},35:{name:"punctuation.definition.axis.end.apl"},36:{name:"entity.function.operands.apl"},37:{name:"punctuation.definition.operands.begin.apl"},38:{name:"entity.function.operands.left.apl"},39:{name:"entity.function.name.apl",patterns:[{include:"#embolden"}]},40:{name:"entity.function.axis.apl"},41:{name:"punctuation.definition.axis.begin.apl"},42:{name:"invalid.illegal.extra-characters.apl"},43:{name:"invalid.illegal.apl"},44:{name:"punctuation.definition.axis.end.apl"},45:{name:"entity.function.operands.right.apl"},46:{name:"punctuation.definition.operands.end.apl"},47:{name:"entity.function.arguments.right.apl"},48:{name:"punctuation.definition.arguments.begin.apl"},49:{name:"punctuation.definition.arguments.end.apl"},50:{name:"invalid.illegal.arguments.right.apl"},51:{name:"entity.function.local-variables.apl"},52:{patterns:[{match:";",name:"punctuation.separator.apl"}]},53:{name:"invalid.illegal.local-variables.apl"},54:{name:"comment.line.apl"}},end:"^\\s*?(?:(∇)|(⍫))\\s*?(⍝.*?)?$",endCaptures:{1:{name:"keyword.operator.nabla.apl"},2:{name:"keyword.operator.lock.apl"},3:{name:"comment.line.apl"}},name:"meta.function.apl",patterns:[{captures:{0:{name:"entity.function.local-variables.apl"},1:{patterns:[{match:";",name:"punctuation.separator.apl"}]}},match:`(?x) +^\\s* +( +(?> +; +(?: +\\s* +[⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +\\s* +)+ +)+ +)`,name:"entity.function.definition.apl"},{include:"$self"}]}]},"embedded-apl":{patterns:[{begin:"(?i)(<(\\?|%)(?:apl(?=\\s+)|=))",beginCaptures:{1:{name:"punctuation.section.embedded.begin.apl"}},end:"(?<=\\s)(\\2>)",endCaptures:{1:{name:"punctuation.section.embedded.end.apl"}},name:"meta.embedded.block.apl",patterns:[{include:"#main"}]}]},embolden:{patterns:[{match:".+",name:"markup.bold.identifier.apl"}]},heredocs:{patterns:[{begin:`^.*?⎕INP\\s+('|")((?i).*?HTML?.*?|END-OF-⎕INP)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"text.embedded.html.basic",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"text.html.basic"},{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")((?i).*?(?:XML|XSLT|SVG|RSS).*?)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"text.embedded.xml",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"text.xml"},{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")((?i).*?(?:CSS|stylesheet).*?)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"source.embedded.css",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"source.css"},{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")((?i).*?(?:JS(?!ON)|(?:ECMA|J|Java).?Script).*?)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"source.embedded.js",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"source.js"},{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")((?i).*?(?:JSON).*?)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"source.embedded.json",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"source.json"},{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")(?i)((?:Raw|Plain)?\\s*Te?xt)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},contentName:"text.embedded.plain",end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"#embedded-apl"}]},{begin:`^.*?⎕INP\\s+('|")(.*?)\\1.*$`,beginCaptures:{0:{patterns:[{include:"#main"}]}},end:"^.*?\\2.*?$",endCaptures:{0:{name:"constant.other.apl"}},name:"meta.heredoc.apl",patterns:[{include:"$self"}]}]},label:{patterns:[{captures:{1:{name:"entity.label.name.apl"},2:{name:"punctuation.definition.label.end.apl"}},match:`(?x) +^\\s* +( +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* +) +(:)`,name:"meta.label.apl"}]},lambda:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.lambda.begin.apl"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.lambda.end.apl"}},name:"meta.lambda.function.apl",patterns:[{include:"#main"},{include:"#lambda-variables"}]},"lambda-variables":{patterns:[{match:"⍺⍺",name:"constant.language.lambda.operands.left.apl"},{match:"⍵⍵",name:"constant.language.lambda.operands.right.apl"},{match:"[⍺⍶]",name:"constant.language.lambda.arguments.left.apl"},{match:"[⍵⍹]",name:"constant.language.lambda.arguments.right.apl"},{match:"χ",name:"constant.language.lambda.arguments.axis.apl"},{match:"∇∇",name:"constant.language.lambda.operands.self.operator.apl"},{match:"∇",name:"constant.language.lambda.operands.self.function.apl"},{match:"λ",name:"constant.language.lambda.symbol.apl"}]},main:{patterns:[{include:"#class"},{include:"#definition"},{include:"#comment"},{include:"#label"},{include:"#sck"},{include:"#strings"},{include:"#number"},{include:"#lambda"},{include:"#sysvars"},{include:"#symbols"},{include:"#name"}]},name:{patterns:[{match:`(?x) +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] +[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*`,name:"variable.other.readwrite.apl"}]},number:{patterns:[{match:"¯?[0-9][¯0-9A-Za-z]*(?:\\.[¯0-9Ee][¯0-9A-Za-z]*)*|¯?\\.[0-9Ee][¯0-9A-Za-z]*",name:"constant.numeric.apl"}]},sck:{patterns:[{captures:{1:{name:"punctuation.definition.sck.begin.apl"}},match:"(?<=\\s|^)(:)[A-Za-z]+",name:"keyword.control.sck.apl"}]},strings:{patterns:[{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.apl"}},end:"'|$",endCaptures:{0:{name:"punctuation.definition.string.end.apl"}},name:"string.quoted.single.apl",patterns:[{match:"[^']*[^'\\n\\r\\\\]$",name:"invalid.illegal.string.apl"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.apl"}},end:'"|$',endCaptures:{0:{name:"punctuation.definition.string.end.apl"}},name:"string.quoted.double.apl",patterns:[{match:'[^"]*[^"\\n\\r\\\\]$',name:"invalid.illegal.string.apl"}]}]},symbols:{patterns:[{match:"(?<=\\s)←(?=\\s|$)",name:"keyword.spaced.operator.assignment.apl"},{match:"(?<=\\s)→(?=\\s|$)",name:"keyword.spaced.control.goto.apl"},{match:"(?<=\\s)≡(?=\\s|$)",name:"keyword.spaced.operator.identical.apl"},{match:"(?<=\\s)≢(?=\\s|$)",name:"keyword.spaced.operator.not-identical.apl"},{match:"\\+",name:"keyword.operator.plus.apl"},{match:"[-−]",name:"keyword.operator.minus.apl"},{match:"×",name:"keyword.operator.times.apl"},{match:"÷",name:"keyword.operator.divide.apl"},{match:"⌊",name:"keyword.operator.floor.apl"},{match:"⌈",name:"keyword.operator.ceiling.apl"},{match:"[∣|]",name:"keyword.operator.absolute.apl"},{match:"[⋆*]",name:"keyword.operator.exponent.apl"},{match:"⍟",name:"keyword.operator.logarithm.apl"},{match:"○",name:"keyword.operator.circle.apl"},{match:"!",name:"keyword.operator.factorial.apl"},{match:"∧",name:"keyword.operator.and.apl"},{match:"∨",name:"keyword.operator.or.apl"},{match:"⍲",name:"keyword.operator.nand.apl"},{match:"⍱",name:"keyword.operator.nor.apl"},{match:"<",name:"keyword.operator.less.apl"},{match:"≤",name:"keyword.operator.less-or-equal.apl"},{match:"=",name:"keyword.operator.equal.apl"},{match:"≥",name:"keyword.operator.greater-or-equal.apl"},{match:">",name:"keyword.operator.greater.apl"},{match:"≠",name:"keyword.operator.not-equal.apl"},{match:"[∼~]",name:"keyword.operator.tilde.apl"},{match:"\\?",name:"keyword.operator.random.apl"},{match:"[∊∈]",name:"keyword.operator.member-of.apl"},{match:"⍷",name:"keyword.operator.find.apl"},{match:",",name:"keyword.operator.comma.apl"},{match:"⍪",name:"keyword.operator.comma-bar.apl"},{match:"⌷",name:"keyword.operator.squad.apl"},{match:"⍳",name:"keyword.operator.iota.apl"},{match:"⍴",name:"keyword.operator.rho.apl"},{match:"↑",name:"keyword.operator.take.apl"},{match:"↓",name:"keyword.operator.drop.apl"},{match:"⊣",name:"keyword.operator.left.apl"},{match:"⊢",name:"keyword.operator.right.apl"},{match:"⊤",name:"keyword.operator.encode.apl"},{match:"⊥",name:"keyword.operator.decode.apl"},{match:"\\/",name:"keyword.operator.slash.apl"},{match:"⌿",name:"keyword.operator.slash-bar.apl"},{match:"\\x5C",name:"keyword.operator.backslash.apl"},{match:"⍀",name:"keyword.operator.backslash-bar.apl"},{match:"⌽",name:"keyword.operator.rotate-last.apl"},{match:"⊖",name:"keyword.operator.rotate-first.apl"},{match:"⍉",name:"keyword.operator.transpose.apl"},{match:"⍋",name:"keyword.operator.grade-up.apl"},{match:"⍒",name:"keyword.operator.grade-down.apl"},{match:"⌹",name:"keyword.operator.quad-divide.apl"},{match:"≡",name:"keyword.operator.identical.apl"},{match:"≢",name:"keyword.operator.not-identical.apl"},{match:"⊂",name:"keyword.operator.enclose.apl"},{match:"⊃",name:"keyword.operator.pick.apl"},{match:"∩",name:"keyword.operator.intersection.apl"},{match:"∪",name:"keyword.operator.union.apl"},{match:"⍎",name:"keyword.operator.hydrant.apl"},{match:"⍕",name:"keyword.operator.thorn.apl"},{match:"⊆",name:"keyword.operator.underbar-shoe-left.apl"},{match:"⍸",name:"keyword.operator.underbar-iota.apl"},{match:"¨",name:"keyword.operator.each.apl"},{match:"⍤",name:"keyword.operator.rank.apl"},{match:"⌸",name:"keyword.operator.quad-equal.apl"},{match:"⍨",name:"keyword.operator.commute.apl"},{match:"⍣",name:"keyword.operator.power.apl"},{match:"\\.",name:"keyword.operator.dot.apl"},{match:"∘",name:"keyword.operator.jot.apl"},{match:"⍠",name:"keyword.operator.quad-colon.apl"},{match:"&",name:"keyword.operator.ampersand.apl"},{match:"⌶",name:"keyword.operator.i-beam.apl"},{match:"⌺",name:"keyword.operator.quad-diamond.apl"},{match:"@",name:"keyword.operator.at.apl"},{match:"◊",name:"keyword.operator.lozenge.apl"},{match:";",name:"keyword.operator.semicolon.apl"},{match:"¯",name:"keyword.operator.high-minus.apl"},{match:"←",name:"keyword.operator.assignment.apl"},{match:"→",name:"keyword.control.goto.apl"},{match:"⍬",name:"constant.language.zilde.apl"},{match:"⋄",name:"keyword.operator.diamond.apl"},{match:"⍫",name:"keyword.operator.lock.apl"},{match:"⎕",name:"keyword.operator.quad.apl"},{match:"##",name:"constant.language.namespace.parent.apl"},{match:"#",name:"constant.language.namespace.root.apl"},{match:"⌻",name:"keyword.operator.quad-jot.apl"},{match:"⌼",name:"keyword.operator.quad-circle.apl"},{match:"⌾",name:"keyword.operator.circle-jot.apl"},{match:"⍁",name:"keyword.operator.quad-slash.apl"},{match:"⍂",name:"keyword.operator.quad-backslash.apl"},{match:"⍃",name:"keyword.operator.quad-less.apl"},{match:"⍄",name:"keyword.operator.greater.apl"},{match:"⍅",name:"keyword.operator.vane-left.apl"},{match:"⍆",name:"keyword.operator.vane-right.apl"},{match:"⍇",name:"keyword.operator.quad-arrow-left.apl"},{match:"⍈",name:"keyword.operator.quad-arrow-right.apl"},{match:"⍊",name:"keyword.operator.tack-down.apl"},{match:"⍌",name:"keyword.operator.quad-caret-down.apl"},{match:"⍍",name:"keyword.operator.quad-del-up.apl"},{match:"⍏",name:"keyword.operator.vane-up.apl"},{match:"⍐",name:"keyword.operator.quad-arrow-up.apl"},{match:"⍑",name:"keyword.operator.tack-up.apl"},{match:"⍓",name:"keyword.operator.quad-caret-up.apl"},{match:"⍔",name:"keyword.operator.quad-del-down.apl"},{match:"⍖",name:"keyword.operator.vane-down.apl"},{match:"⍗",name:"keyword.operator.quad-arrow-down.apl"},{match:"⍘",name:"keyword.operator.underbar-quote.apl"},{match:"⍚",name:"keyword.operator.underbar-diamond.apl"},{match:"⍛",name:"keyword.operator.underbar-jot.apl"},{match:"⍜",name:"keyword.operator.underbar-circle.apl"},{match:"⍞",name:"keyword.operator.quad-quote.apl"},{match:"⍡",name:"keyword.operator.dotted-tack-up.apl"},{match:"⍢",name:"keyword.operator.dotted-del.apl"},{match:"⍥",name:"keyword.operator.dotted-circle.apl"},{match:"⍦",name:"keyword.operator.stile-shoe-up.apl"},{match:"⍧",name:"keyword.operator.stile-shoe-left.apl"},{match:"⍩",name:"keyword.operator.dotted-greater.apl"},{match:"⍭",name:"keyword.operator.stile-tilde.apl"},{match:"⍮",name:"keyword.operator.underbar-semicolon.apl"},{match:"⍯",name:"keyword.operator.quad-not-equal.apl"},{match:"⍰",name:"keyword.operator.quad-question.apl"}]},sysvars:{patterns:[{captures:{1:{name:"punctuation.definition.quad.apl"},2:{name:"punctuation.definition.quad-quote.apl"}},match:"(?:(⎕)|(⍞))[A-Za-z]*",name:"support.system.variable.apl"}]}},scopeName:"source.apl",embeddedLangs:["html","xml","css","javascript","json"]});var d=[...a,...e,...n,...t,...u,o];export{d as default}; diff --git a/assets/chunks/applescript.B4yE-MfL.js b/assets/chunks/applescript.B4yE-MfL.js new file mode 100644 index 000000000..1e3689c2d --- /dev/null +++ b/assets/chunks/applescript.B4yE-MfL.js @@ -0,0 +1,38 @@ +const e=Object.freeze({displayName:"AppleScript",fileTypes:["applescript","scpt","script editor"],firstLineMatch:"^#!.*(osascript)",name:"applescript",patterns:[{include:"#blocks"},{include:"#inline"}],repository:{"attributes.considering-ignoring":{patterns:[{match:",",name:"punctuation.separator.array.attributes.applescript"},{match:"\\b(and)\\b",name:"keyword.control.attributes.and.applescript"},{match:"\\b(?i:case|diacriticals|hyphens|numeric\\s+strings|punctuation|white\\s+space)\\b",name:"constant.other.attributes.text.applescript"},{match:"\\b(?i:application\\s+responses)\\b",name:"constant.other.attributes.application.applescript"}]},blocks:{patterns:[{begin:"^\\s*(script)\\s+(\\w+)",beginCaptures:{1:{name:"keyword.control.script.applescript"},2:{name:"entity.name.type.script-object.applescript"}},end:"^\\s*(end(?:\\s+script)?)(?=\\s*(--.*?)?$)",endCaptures:{1:{name:"keyword.control.script.applescript"}},name:"meta.block.script.applescript",patterns:[{include:"$self"}]},{begin:`^(?x) +\\s*(to|on)\\s+ +(\\w+) +(\\() +((?:[\\s,:\\{\\}]*(?:\\w+)?)*) +(\\)) +`,beginCaptures:{1:{name:"keyword.control.function.applescript"},2:{name:"entity.name.function.handler.applescript"},3:{name:"punctuation.definition.parameters.begin.applescript"},4:{name:"variable.parameter.handler.applescript"},5:{name:"punctuation.definition.parameters.end.applescript"}},comment:` + This is not a very well-designed rule. For now, + we can leave it like this though, as it sorta works. + `,end:"^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",endCaptures:{1:{name:"keyword.control.function.applescript"}},name:"meta.function.positional.applescript",patterns:[{include:"$self"}]},{begin:`^(?x) +\\s*(to|on)\\s+ +(\\w+) +(?:\\s+ +(of|in)\\s+ +(\\w+) +)? +(?=\\s+(above|against|apart\\s+from|around|aside\\s+from|at|below|beneath|beside|between|by|for|from|instead\\s+of|into|on|onto|out\\s+of|over|thru|under)\\b) +`,beginCaptures:{1:{name:"keyword.control.function.applescript"},2:{name:"entity.name.function.handler.applescript"},3:{name:"keyword.control.function.applescript"},4:{name:"variable.parameter.handler.direct.applescript"}},comment:"TODO: match `given` parameters",end:"^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",endCaptures:{1:{name:"keyword.control.function.applescript"}},name:"meta.function.prepositional.applescript",patterns:[{captures:{1:{name:"keyword.control.preposition.applescript"},2:{name:"variable.parameter.handler.applescript"}},match:"\\b(?i:above|against|apart\\s+from|around|aside\\s+from|at|below|beneath|beside|between|by|for|from|instead\\s+of|into|on|onto|out\\s+of|over|thru|under)\\s+(\\w+)\\b"},{include:"$self"}]},{begin:`^(?x) +\\s*(to|on)\\s+ +(\\w+) +(?=\\s*(--.*?)?$) +`,beginCaptures:{1:{name:"keyword.control.function.applescript"},2:{name:"entity.name.function.handler.applescript"}},end:"^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",endCaptures:{1:{name:"keyword.control.function.applescript"}},name:"meta.function.parameterless.applescript",patterns:[{include:"$self"}]},{include:"#blocks.tell"},{include:"#blocks.repeat"},{include:"#blocks.statement"},{include:"#blocks.other"}]},"blocks.other":{patterns:[{begin:"^\\s*(considering)\\b",end:"^\\s*(end(?:\\s+considering)?)(?=\\s*(--.*?)?$)",name:"meta.block.considering.applescript",patterns:[{begin:"(?<=considering)",end:"(?|<|≥|>=|≤|<=)",name:"keyword.operator.comparison.applescript"},{match:`(?ix)\\b +(and|or|div|mod|as|not +|(a\\s+)?(ref(\\s+to)?|reference\\s+to) +|equal(s|\\s+to)|contains?|comes\\s+(after|before)|(start|begin|end)s?\\s+with +) +\\b`,name:"keyword.operator.word.applescript"},{comment:"In double quotes so we can use a single quote in the keywords.",match:`(?ix)\\b +(is(n't|\\s+not)?(\\s+(equal(\\s+to)?|(less|greater)\\s+than(\\s+or\\s+equal(\\s+to)?)?|in|contained\\s+by))? +|does(n't|\\s+not)\\s+(equal|come\\s+(before|after)|contain) +) +\\b`,name:"keyword.operator.word.applescript"},{match:"\\b(?i:some|every|whose|where|that|id|index|\\d+(st|nd|rd|th)|first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|last|front|back|middle|named|beginning|end|from|to|thr(u|ough)|before|(front|back|beginning|end)\\s+of|after|behind|in\\s+(front|back|beginning|end)\\s+of)\\b",name:"keyword.operator.reference.applescript"},{match:"\\b(?i:continue|return|exit(\\s+repeat)?)\\b",name:"keyword.control.loop.applescript"},{match:"\\b(?i:about|above|after|against|and|apart\\s+from|around|as|aside\\s+from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|contains|copy|div|does|eighth|else|end|equal|equals|error|every|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead\\s+of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out\\s+of|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b",name:"keyword.other.applescript"}]},"built-in.punctuation":{patterns:[{match:"¬",name:"punctuation.separator.continuation.line.applescript"},{comment:"the : in property assignments",match:":",name:"punctuation.separator.key-value.property.applescript"},{comment:"the parentheses in groups",match:"[()]",name:"punctuation.section.group.applescript"}]},"built-in.support":{patterns:[{match:"\\b(?i:POSIX\\s+path|frontmost|id|name|running|version|days?|weekdays?|months?|years?|time|date\\s+string|time\\s+string|length|rest|reverse|items?|contents|quoted\\s+form|characters?|paragraphs?|words?)\\b",name:"support.function.built-in.property.applescript"},{match:"\\b(?i:activate|log|clipboard\\s+info|set\\s+the\\s+clipboard\\s+to|the\\s+clipboard|info\\s+for|list\\s+(disks|folder)|mount\\s+volume|path\\s+to(\\s+resource)?|close\\s+access|get\\s+eof|open\\s+for\\s+access|read|set\\s+eof|write|open\\s+location|current\\s+date|do\\s+shell\\s+script|get\\s+volume\\s+settings|random\\s+number|round|set\\s+volume|system\\s+(attribute|info)|time\\s+to\\s+GMT|load\\s+script|run\\s+script|scripting\\s+components|store\\s+script|copy|count|get|launch|run|set|ASCII\\s+(character|number)|localized\\s+string|offset|summarize|beep|choose\\s+(application|color|file(\\s+name)?|folder|from\\s+list|remote\\s+application|URL)|delay|display\\s+(alert|dialog)|say)\\b",name:"support.function.built-in.command.applescript"},{match:"\\b(?i:get|run)\\b",name:"support.function.built-in.applescript"},{match:"\\b(?i:anything|data|text|upper\\s+case|propert(y|ies))\\b",name:"support.class.built-in.applescript"},{match:"\\b(?i:alias|class)(es)?\\b",name:"support.class.built-in.applescript"},{match:"\\b(?i:app(lication)?|boolean|character|constant|date|event|file(\\s+specification)?|handler|integer|item|keystroke|linked\\s+list|list|machine|number|picture|preposition|POSIX\\s+file|real|record|reference(\\s+form)?|RGB\\s+color|script|sound|text\\s+item|type\\s+class|vector|writing\\s+code(\\s+info)?|zone|((international|styled(\\s+(Clipboard|Unicode))?|Unicode)\\s+)?text|((C|encoded|Pascal)\\s+)?string)s?\\b",name:"support.class.built-in.applescript"},{match:`(?ix)\\b +( (cubic\\s+(centi)?|square\\s+(kilo)?|centi|kilo)met(er|re)s +| square\\s+(yards|feet|miles)|cubic\\s+(yards|feet|inches)|miles|inches +| lit(re|er)s|gallons|quarts +| (kilo)?grams|ounces|pounds +| degrees\\s+(Celsius|Fahrenheit|Kelvin) +) +\\b`,name:"support.class.built-in.unit.applescript"},{match:"\\b(?i:seconds|minutes|hours|days)\\b",name:"support.class.built-in.time.applescript"}]},comments:{patterns:[{begin:"^\\s*(#!)",captures:{1:{name:"punctuation.definition.comment.applescript"}},end:"\\n",name:"comment.line.number-sign.applescript"},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.applescript"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.applescript"}},end:"\\n",name:"comment.line.number-sign.applescript"}]},{begin:"(^[ \\t]+)?(?=--)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.applescript"}},end:"(?!\\G)",patterns:[{begin:"--",beginCaptures:{0:{name:"punctuation.definition.comment.applescript"}},end:"\\n",name:"comment.line.double-dash.applescript"}]},{begin:"\\(\\*",captures:{0:{name:"punctuation.definition.comment.applescript"}},end:"\\*\\)",name:"comment.block.applescript",patterns:[{include:"#comments.nested"}]}]},"comments.nested":{patterns:[{begin:"\\(\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.applescript"}},end:"\\*\\)",endCaptures:{0:{name:"punctuation.definition.comment.end.applescript"}},name:"comment.block.applescript",patterns:[{include:"#comments.nested"}]}]},"data-structures":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.array.begin.applescript"}},comment:'We cannot necessarily distinguish "records" from "arrays", and so this could be either.',end:"\\}",endCaptures:{0:{name:"punctuation.definition.array.end.applescript"}},name:"meta.array.applescript",patterns:[{captures:{1:{name:"constant.other.key.applescript"},2:{name:"meta.identifier.applescript"},3:{name:"punctuation.definition.identifier.applescript"},4:{name:"punctuation.definition.identifier.applescript"},5:{name:"punctuation.separator.key-value.applescript"}},match:"(\\w+|((\\|)[^|\\n]*(\\|)))\\s*(:)"},{match:":",name:"punctuation.separator.key-value.applescript"},{match:",",name:"punctuation.separator.array.applescript"},{include:"#inline"}]},{begin:'(?:(?<=application )|(?<=app ))(")',captures:{1:{name:"punctuation.definition.string.applescript"}},end:'(")',name:"string.quoted.double.application-name.applescript",patterns:[{match:"\\\\.",name:"constant.character.escape.applescript"}]},{begin:'(")',captures:{1:{name:"punctuation.definition.string.applescript"}},end:'(")',name:"string.quoted.double.applescript",patterns:[{match:"\\\\.",name:"constant.character.escape.applescript"}]},{captures:{1:{name:"punctuation.definition.identifier.applescript"},2:{name:"punctuation.definition.identifier.applescript"}},match:"(\\|)[^|\\n]*(\\|)",name:"meta.identifier.applescript"},{captures:{1:{name:"punctuation.definition.data.applescript"},2:{name:"support.class.built-in.applescript"},3:{name:"storage.type.utxt.applescript"},4:{name:"string.unquoted.data.applescript"},5:{name:"punctuation.definition.data.applescript"},6:{name:"keyword.operator.applescript"},7:{name:"support.class.built-in.applescript"}},match:"(«)(data) (utxt|utf8)([[:xdigit:]]*)(»)(?:\\s+(as)\\s+(?i:Unicode\\s+text))?",name:"constant.other.data.utxt.applescript"},{begin:"(«)(\\w+)\\b(?=\\s)",beginCaptures:{1:{name:"punctuation.definition.data.applescript"},2:{name:"support.class.built-in.applescript"}},end:"(»)",endCaptures:{1:{name:"punctuation.definition.data.applescript"}},name:"constant.other.data.raw.applescript"},{captures:{1:{name:"punctuation.definition.data.applescript"},2:{name:"punctuation.definition.data.applescript"}},match:"(«)[^»]*(»)",name:"invalid.illegal.data.applescript"}]},finder:{patterns:[{match:"\\b(item|container|(computer|disk|trash)-object|disk|folder|((alias|application|document|internet location) )?file|clipping|package)s?\\b",name:"support.class.finder.items.applescript"},{match:"\\b((Finder|desktop|information|preferences|clipping) )windows?\\b",name:"support.class.finder.window-classes.applescript"},{match:"\\b(preferences|(icon|column|list) view options|(label|column|alias list)s?)\\b",name:"support.class.finder.type-definitions.applescript"},{match:"\\b(copy|find|sort|clean up|eject|empty( trash)|erase|reveal|update)\\b",name:"support.function.finder.items.applescript"},{match:"\\b(insertion location|product version|startup disk|desktop|trash|home|computer container|finder preferences)\\b",name:"support.constant.finder.applescript"},{match:"\\b(visible)\\b",name:"support.variable.finder.applescript"}]},inline:{patterns:[{include:"#comments"},{include:"#data-structures"},{include:"#built-in"},{include:"#standardadditions"}]},itunes:{patterns:[{match:"\\b(artwork|application|encoder|EQ preset|item|source|visual|(EQ |browser )?window|((audio CD|device|shared|URL|file) )?track|playlist window|((audio CD|device|radio tuner|library|folder|user) )?playlist)s?\\b",name:"support.class.itunes.applescript"},{match:"\\b(add|back track|convert|fast forward|(next|previous) track|pause|play(pause)?|refresh|resume|rewind|search|stop|update|eject|subscribe|update(Podcast|AllPodcasts)|download)\\b",name:"support.function.itunes.applescript"},{match:"\\b(current (playlist|stream (title|URL)|track)|player state)\\b",name:"support.constant.itunes.applescript"},{match:"\\b(current (encoder|EQ preset|visual)|EQ enabled|fixed indexing|full screen|mute|player position|sound volume|visuals enabled|visual size)\\b",name:"support.variable.itunes.applescript"}]},"standard-suite":{patterns:[{match:"\\b(colors?|documents?|items?|windows?)\\b",name:"support.class.standard-suite.applescript"},{match:"\\b(close|count|delete|duplicate|exists|make|move|open|print|quit|save|activate|select|data size)\\b",name:"support.function.standard-suite.applescript"},{match:"\\b(name|frontmost|version)\\b",name:"support.constant.standard-suite.applescript"},{match:"\\b(selection)\\b",name:"support.variable.standard-suite.applescript"},{match:"\\b(attachments?|attribute runs?|characters?|paragraphs?|texts?|words?)\\b",name:"support.class.text-suite.applescript"}]},standardadditions:{patterns:[{match:"\\b((alert|dialog) reply)\\b",name:"support.class.standardadditions.user-interaction.applescript"},{match:"\\b(file information)\\b",name:"support.class.standardadditions.file.applescript"},{match:"\\b(POSIX files?|system information|volume settings)\\b",name:"support.class.standardadditions.miscellaneous.applescript"},{match:"\\b(URLs?|internet address(es)?|web pages?|FTP items?)\\b",name:"support.class.standardadditions.internet.applescript"},{match:"\\b(info for|list (disks|folder)|mount volume|path to( resource)?)\\b",name:"support.function.standardadditions.file.applescript"},{match:"\\b(beep|choose (application|color|file( name)?|folder|from list|remote application|URL)|delay|display (alert|dialog)|say)\\b",name:"support.function.standardadditions.user-interaction.applescript"},{match:"\\b(ASCII (character|number)|localized string|offset|summarize)\\b",name:"support.function.standardadditions.string.applescript"},{match:"\\b(set the clipboard to|the clipboard|clipboard info)\\b",name:"support.function.standardadditions.clipboard.applescript"},{match:"\\b(open for access|close access|read|write|get eof|set eof)\\b",name:"support.function.standardadditions.file-i-o.applescript"},{match:"\\b((load|store|run) script|scripting components)\\b",name:"support.function.standardadditions.scripting.applescript"},{match:"\\b(current date|do shell script|get volume settings|random number|round|set volume|system attribute|system info|time to GMT)\\b",name:"support.function.standardadditions.miscellaneous.applescript"},{match:"\\b(opening folder|(closing|moving) folder window for|adding folder items to|removing folder items from)\\b",name:"support.function.standardadditions.folder-actions.applescript"},{match:"\\b(open location|handle CGI request)\\b",name:"support.function.standardadditions.internet.applescript"}]},"system-events":{patterns:[{match:"\\b(audio (data|file))\\b",name:"support.class.system-events.audio-file.applescript"},{match:"\\b(alias(es)?|(Classic|local|network|system|user) domain objects?|disk( item)?s?|domains?|file( package)?s?|folders?|items?)\\b",name:"support.class.system-events.disk-folder-file.applescript"},{match:"\\b(delete|open|move)\\b",name:"support.function.system-events.disk-folder-file.applescript"},{match:"\\b(folder actions?|scripts?)\\b",name:"support.class.system-events.folder-actions.applescript"},{match:"\\b(attach action to|attached scripts|edit action of|remove action from)\\b",name:"support.function.system-events.folder-actions.applescript"},{match:"\\b(movie data|movie file)\\b",name:"support.class.system-events.movie-file.applescript"},{match:"\\b(log out|restart|shut down|sleep)\\b",name:"support.function.system-events.power.applescript"},{match:"\\b(((application |desk accessory )?process|(check|combo )?box)(es)?|(action|attribute|browser|(busy|progress|relevance) indicator|color well|column|drawer|group|grow area|image|incrementor|list|menu( bar)?( item)?|(menu |pop up |radio )?button|outline|(radio|tab|splitter) group|row|scroll (area|bar)|sheet|slider|splitter|static text|table|text (area|field)|tool bar|UI element|window)s?)\\b",name:"support.class.system-events.processes.applescript"},{match:"\\b(click|key code|keystroke|perform|select)\\b",name:"support.function.system-events.processes.applescript"},{match:"\\b(property list (file|item))\\b",name:"support.class.system-events.property-list.applescript"},{match:"\\b(annotation|QuickTime (data|file)|track)s?\\b",name:"support.class.system-events.quicktime-file.applescript"},{match:"\\b((abort|begin|end) transaction)\\b",name:"support.function.system-events.system-events.applescript"},{match:"\\b(XML (attribute|data|element|file)s?)\\b",name:"support.class.system-events.xml.applescript"},{match:"\\b(print settings|users?|login items?)\\b",name:"support.class.sytem-events.other.applescript"}]},textmate:{patterns:[{match:"\\b(print settings)\\b",name:"support.class.textmate.applescript"},{match:"\\b(get url|insert|reload bundles)\\b",name:"support.function.textmate.applescript"}]}},scopeName:"source.applescript"});var t=[e];export{t as default}; diff --git a/assets/chunks/ara.CG4fK2Nq.js b/assets/chunks/ara.CG4fK2Nq.js new file mode 100644 index 000000000..5e862f68b --- /dev/null +++ b/assets/chunks/ara.CG4fK2Nq.js @@ -0,0 +1,21 @@ +const a=Object.freeze({displayName:"Ara",fileTypes:["ara"],name:"ara",patterns:[{include:"#namespace"},{include:"#named-arguments"},{include:"#comments"},{include:"#keywords"},{include:"#strings"},{include:"#numbers"},{include:"#operators"},{include:"#type"},{include:"#function-call"}],repository:{"class-name":{patterns:[{begin:"\\b(?i)(?=|&=|\\|=|<<=|>>=|\\?\\?=)",name:"keyword.assignments.ara"},{comment:"logical operators",match:"(\\^|\\||\\|\\||&&|>>|<<|&|~|<<|>>|>|<|<=>|\\?\\?|\\?|:|\\?:)(?!=)",name:"keyword.operators.ara"},{comment:"comparison operators",match:"(==|===|!==|!=|<=|>=|<|>)(?!=)",name:"keyword.operator.comparison.ara"},{comment:"math operators",match:"(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))",name:"keyword.operator.math.ara"},{comment:"single equal assignment operator",match:"(?])=(?!=|>)",name:"keyword.operator.assignment.ara"},{captures:{1:{name:"punctuation.brackets.round.ara"},2:{name:"punctuation.brackets.square.ara"},3:{name:"punctuation.brackets.curly.ara"},4:{name:"keyword.operator.comparison.ara"},5:{name:"punctuation.brackets.round.ara"},6:{name:"punctuation.brackets.square.ara"},7:{name:"punctuation.brackets.curly.ara"}},comment:"less than, greater than (special case)",match:"(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([<>])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))"},{comment:"arrow method call, arrow property access",match:`(?x) +(?: +-> | \\?-> +)`,name:"keyword.operator.arrow.ara"},{comment:"double arrow key-value pair",match:`(?x) +(?: +=> +)`,name:"keyword.operator.double-arrow.ara"},{comment:"static method call, static property access",match:`(?x) +(?: +:: +)`,name:"keyword.operator.static.ara"},{comment:"closure creation",match:`(?x) +(?: +\\(\\.\\.\\.\\) +)`,name:"keyword.operator.closure.ara"},{comment:"spread operator",match:`(?x) +(?: +\\.\\.\\. +)`,name:"keyword.operator.spread.ara"},{comment:"namespace operator",match:"\\\\",name:"keyword.operator.namespace.ara"}]},strings:{patterns:[{begin:"'",end:"'",name:"string.quoted.single.ara",patterns:[{match:"\\\\[\\\\']",name:"constant.character.escape.ara"}]},{begin:'"',end:'"',name:"string.quoted.double.ara",patterns:[{include:"#interpolation"}]}]},type:{name:"support.type.php",patterns:[{match:"\\b(?:void|true|false|null|never|float|bool|int|string|dict|vec|object|mixed|nonnull|resource|self|static|parent|iterable)\\b",name:"support.type.php"},{begin:"([A-Za-z_][A-Za-z0-9_]*)<",beginCaptures:{1:{name:"support.class.php"}},end:">",patterns:[{include:"#type-annotation"}]},{begin:"(shape\\()",end:"((,|\\.\\.\\.)?\\s*\\))",endCaptures:{1:{name:"keyword.operator.key.php"}},name:"storage.type.shape.php",patterns:[{include:"#type-annotation"},{include:"#strings"},{include:"#constants"}]},{begin:"\\(",end:"\\)",patterns:[{include:"#type-annotation"}]},{begin:"\\(fn\\(",end:"\\)",patterns:[{include:"#type-annotation"}]},{include:"#class-name"},{include:"#comments"}]},"user-function-call":{begin:"(?i)(?=[a-z_0-9\\\\]*[a-z_][a-z0-9_]*\\s*\\()",end:"(?i)[a-z_][a-z_0-9]*(?=\\s*\\()",endCaptures:{0:{name:"entity.name.function.php"}},name:"meta.function-call.php",patterns:[{include:"#namespace"}]}},scopeName:"source.ara"});var e=[a];export{e as default}; diff --git a/assets/chunks/asm.PWN5J14X.js b/assets/chunks/asm.PWN5J14X.js new file mode 100644 index 000000000..87701d7b4 --- /dev/null +++ b/assets/chunks/asm.PWN5J14X.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Assembly",fileTypes:["asm","nasm","yasm","inc","s"],name:"asm",patterns:[{include:"#registers"},{include:"#mnemonics"},{include:"#constants"},{include:"#entities"},{include:"#support"},{include:"#comments"},{include:"#preprocessor"},{include:"#strings"}],repository:{comments:{patterns:[{match:"(;|(^|\\s)#\\s).*$",name:"comment.line"},{begin:"/\\*",end:"\\*/",name:"comment.block"},{begin:"^\\s*[\\#%]\\s*if\\s+0\\b",end:"^\\s*[\\#%]\\s*endif\\b",name:"comment.preprocessor"}]},constants:{patterns:[{match:"(?i)\\b0[by](?:[01][01_]*)\\.(?:(?:[01][01_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",name:"constant.numeric.binary.floating-point.asm.x86_64"},{match:"(?i)\\b0[by](?:[01][01_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",name:"constant.numeric.binary.floating-point.asm.x86_64"},{match:"(?i)\\b0[oq](?:[0-7][0-7_]*)\\.(?:(?:[0-7][0-7_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",name:"constant.numeric.octal.floating-point.asm.x86_64"},{match:"(?i)\\b0[oq](?:[0-7][0-7_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",name:"constant.numeric.octal.floating-point.asm.x86_64"},{match:"(?i)\\b(?:0[dt])?(?:[0-9][0-9_]*)\\.(?:(?:[0-9][0-9_]*)?(?:e[+-]?(?:[0-9][0-9_]*))?\\b)?",name:"constant.numeric.decimal.floating-point.asm.x86_64"},{match:"(?i)\\b(?:[0-9][0-9_]*)(?:e[+-]?(?:[0-9][0-9_]*))\\b",name:"constant.numeric.decimal.floating-point.asm.x86_64"},{match:"(?i)\\b(?:[0-9][0-9_]*)p(?:[0-9][0-9_]*)?\\b",name:"constant.numeric.decimal.packed-bcd.asm.x86_64"},{match:"(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",name:"constant.numeric.hex.floating-point.asm.x86_64"},{match:"(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",name:"constant.numeric.hex.floating-point.asm.x86_64"},{match:"(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",name:"constant.numeric.hex.floating-point.asm.x86_64"},{match:"(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",name:"constant.numeric.hex.floating-point.asm.x86_64"},{match:"(?i)\\b(?:(?:0[by](?:[01][01_]*))|(?:(?:[01][01_]*)[by]))\\b",name:"constant.numeric.binary.asm.x86_64"},{match:"(?i)\\b(?:(?:0[oq](?:[0-7][0-7_]*))|(?:(?:[0-7][0-7_]*)[oq]))\\b",name:"constant.numeric.octal.asm.x86_64"},{match:"(?i)\\b(?:(?:0[dt](?:[0-9][0-9_]*))|(?:(?:[0-9][0-9_]*)[dt]?))\\b",name:"constant.numeric.decimal.asm.x86_64"},{match:"(?i)(?:\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?)\\b",name:"constant.numeric.hex.asm.x86_64"},{match:"(?i)\\b(?:(?:0[xh](?:[[:xdigit:]][[:xdigit:]_]*))|(?:(?:[[:xdigit:]][[:xdigit:]_]*)[hxHX]))\\b",name:"constant.numeric.hex.asm.x86_64"}]},entities:{patterns:[{match:"((section|segment)\\s+)?\\.((ro)?data|bss|text)",name:"entity.name.section"},{match:"^\\.?(globa?l|extern|required)\\b",name:"entity.directive"},{match:"(\\$\\w+)\\b",name:"text.variable"},{captures:{1:{name:"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"},2:{name:"entity.name.function.special.asm.x86_64"},3:{name:"punctuation.separator.asm.x86_64"}},match:"(\\.\\.@)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:)?|\\b)",name:"entity.name.function.asm.x86_64"},{captures:{1:{name:"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"},2:{name:"entity.name.function.asm.x86_64"},3:{name:"punctuation.separator.asm.x86_64"}},match:"(?:(\\.)?|\\b)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:))",name:"entity.name.function.asm.x86_64"},{captures:{1:{name:"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"},2:{name:"entity.name.function.asm.x86_64"},3:{name:"punctuation.separator.asm.x86_64"}},match:"(\\.)([0-9]+(?:[[:alnum:]_$#@~.?]*))(?:(\\:)?|\\b)",name:"entity.name.function.asm.x86_64"},{captures:{1:{name:"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"},2:{name:"invalid.illegal.entity.name.function.asm.x86_64"},3:{name:"punctuation.separator.asm.x86_64"}},match:"(?:(\\.)?|\\b)([0-9$@~](?:[[:alnum:]_$#@~.?]*))(?:(\\:))",name:"invalid.illegal.entity.name.function.asm.x86_64"}]},mnemonics:{patterns:[{include:"#mnemonics-general-purpose"},{include:"#mnemonics-fpu"},{include:"#mnemonics-mmx"},{include:"#mnemonics-sse"},{include:"#mnemonics-sse2"},{include:"#mnemonics-sse3"},{include:"#mnemonics-sse4"},{include:"#mnemonics-aesni"},{include:"#mnemonics-avx"},{include:"#mnemonics-avx2"},{include:"#mnemonics-tsx"},{include:"#mnemonics-sha"},{include:"#mnemonics-avx512"},{include:"#mnemonics-system"},{include:"#mnemonics-64bit"},{include:"#mnemonics-vmx"},{include:"#mnemonics-smx"},{include:"#mnemonics-mpx"},{include:"#mnemonics-sgx"},{include:"#mnemonics-cet"},{include:"#mnemonics-amx"},{include:"#mnemonics-uirq"},{include:"#mnemonics-esi"},{include:"#mnemonics-intel-manual-listing"},{include:"#mnemonics-intel-isa-xeon-phi"},{include:"#mnemonics-intel-isa-keylocker"},{include:"#mnemonics-supplemental-amd"},{include:"#mnemonics-supplemental-cyrix"},{include:"#mnemonics-supplemental-via"},{include:"#mnemonics-undocumented"},{include:"#mnemonics-future-intel"},{include:"#mnemonics-pseudo-ops"}]},"mnemonics-64bit":{patterns:[{match:"(?i)\\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\\b",name:"keyword.operator.word.mnemonic.64-bit-mode"}]},"mnemonics-aesni":{patterns:[{match:"(?i)\\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\\b",name:"keyword.operator.word.mnemonic.aesni"}]},"mnemonics-amx":{patterns:[{match:"(?i)\\b((ld|st)tilecfg|tdpb(f16ps|[su]{2}d)|tile(loadd(t1)?|release|stored|zero))\\b",name:"keyword.operator.word.mnemonic.amx"}]},"mnemonics-avx":{patterns:[{match:"(?i)\\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\\b",name:"keyword.operator.word.mnemonic.avx"},{match:"(?i)\\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\\b",name:"keyword.operator.word.mnemonic.avx.promoted.aes"},{match:"(?i)\\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.comparison"},{match:"(?i)\\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.conversion"},{match:"(?i)\\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic"},{match:"(?i)\\b(v((andn?|x?or)p[ds]))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.logical"},{match:"(?i)\\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.mov"},{match:"(?i)\\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic"},{match:"(?i)\\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.packed-conversion"},{match:"(?i)\\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\\b",name:"keyword.operator.word.mnemonic.avx.promoted.packed-shuffle"},{match:"(?i)\\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic"},{match:"(?i)\\b(vp(andn?|x?or))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.supplemental.logical"},{match:"(?i)\\b(vpblend(vb|w))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.supplemental.blending"},{match:"(?i)\\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.supplemental.mov"},{match:"(?i)\\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.simd-integer"},{match:"(?i)\\b(vp(sra[dwq]|srl[dqw]))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate"},{match:"(?i)\\b(vblendv?p[ds])\\b",name:"keyword.operator.word.mnemonic.avx.promoted.packed-blending"},{match:"(?i)\\b(vp(test|alignr))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.packed-other"},{match:"(?i)\\b(vmov(d(dup|qa|qu)?))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov"},{match:"(?i)\\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.other"},{match:"(?i)\\b(v(maskmovdqu|movntdqa?))\\b",name:"keyword.operator.word.mnemonic.avx.promoted.cacheability-control"},{match:"(?i)\\b(vcvt(ph2ps|ps2ph))\\b",name:"keyword.operator.word.mnemonic.16-bit-floating-point-conversion"},{match:"(?i)\\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\\b",name:"keyword.operator.word.mnemonic.fma"}]},"mnemonics-avx2":{patterns:[{match:"(?i)\\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\\b",name:"keyword.operator.word.mnemonic.avx2.promoted.simd"},{match:"(?i)\\b(vpbroadcast[bdqw])\\b",name:"keyword.operator.word.mnemonic.avx2.promoted.packed"},{match:"(?i)\\b(vp(blendd|s[lr]lv[dq]|sravd))\\b",name:"keyword.operator.word.mnemonic.avx2.blend"},{match:"(?i)\\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\\b",name:"keyword.operator.word.mnemonic.avx2.gather"}]},"mnemonics-avx512":{patterns:[{include:"#mnemonics-avx512f"},{include:"#mnemonics-avx512dq"},{include:"#mnemonics-avx512bw"},{include:"#mnemonics-avx512-opmask"},{include:"#mnemonics-avx512er"},{include:"#mnemonics-avx512pf"},{include:"#mnemonics-avx512fp16"}]},"mnemonics-avx512-opmask":{patterns:[{match:"(?i)\\bk(add|andn?|mov|not|or(test)?|shift[lr]|test|xn?or)[bdqw]\\b",name:"keyword.operator.word.mnemonic.avx512.opmask"},{match:"(?i)\\bkunpck(bw|wd|dq)\\b",name:"keyword.operator.word.mnemonic.avx512.opmask.unpack"}]},"mnemonics-avx512bw":{patterns:[{match:"(?i)\\bv(dbpsadbw|movdqu(8|16))\\b",name:"keyword.operator.word.mnemonic.avx512.bw.dbpsad"},{match:"(?i)\\bvp(blendm|cmpu?|movm2)[bw]\\b",name:"keyword.operator.word.mnemonic.avx512.bw.pblend"},{match:"(?i)\\bvperm(w|i2[bw])\\b",name:"keyword.operator.word.mnemonic.avx512.bw.perpmi2"},{match:"(?i)\\bvp(mov([bw]2m|u?swb))\\b",name:"keyword.operator.word.mnemonic.avx512.bw.pmov"},{match:"(?i)\\bvp(s(ll|ra|rl)vw|testn?m[bw])\\b",name:"keyword.operator.word.mnemonic.avx512.bw.psll"},{match:"(?i)\\bvp(broadcastm(b2q|w2d)|(conflict|lzcnt)[dq])\\b",name:"keyword.operator.word.mnemonic.avx512.bw.broadcast"}]},"mnemonics-avx512dq":{patterns:[{match:"(?i)\\bvcvt(t?p[ds]2u?qq|uqq2p[ds])\\b",name:"keyword.operator.word.mnemonic.avx512.dq.cvt"},{match:"(?i)\\bv((extract|insert)[fi]64x2|(fpclass|range|reduce)[ps][ds])\\b",name:"keyword.operator.word.mnemonic.avx512.dq.extract"},{match:"(?i)\\bvp(mov(m2[dq]|b2d|q2m)|mullq)\\b",name:"keyword.operator.word.mnemonic.avx512.dq.pmov"}]},"mnemonics-avx512er":{patterns:[{match:"(?i)\\bv(exp2|rcp28|rsqrt28)[ps][ds]\\b",name:"keyword.operator.word.mnemonic.avx512.er"}]},"mnemonics-avx512f":{patterns:[{match:"(?i)\\bv(align[dq]|(blendm|compress)p[ds])\\b",name:"keyword.operator.word.mnemonic.avx512.f.align"},{match:"(?i)\\bv(cvtt?[ps][ds]2u(dq|si))\\b",name:"keyword.operator.word.mnemonic.avx512.f.cvtt"},{match:"(?i)\\bv(cvt((q|ud)q2p|usi2s)[ds])\\b",name:"keyword.operator.word.mnemonic.avx512.f.cvt"},{match:"(?i)\\bv(expandp[ds]|extract[fi](32|64)x4|fixupimm[ps][ds])\\b",name:"keyword.operator.word.mnemonic.avx512.f.expand"},{match:"(?i)\\bv(get(exp|mant)[ps][ds]|insertf(32|64)x4|movdq[au](32|64))\\b",name:"keyword.operator.word.mnemonic.avx512.f.getexp"},{match:"(?i)\\bvp(blendm[dq]|cmpu?[dq]|compress[dq])\\b",name:"keyword.operator.word.mnemonic.avx512.f.pblend"},{match:"(?i)\\bvp(erm[it]2(d|q|p[ds])|expand[dq]|(max|min)[su]q|movu?s(q[bdw]|d[bw]))\\b",name:"keyword.operator.word.mnemonic.avx512.f.permi"},{match:"(?i)\\bvp(rolv?|rorr?|scatter[dq]|testn?m|terlog)[dq]\\b",name:"keyword.operator.word.mnemonic.avx512.f.prol"},{match:"(?i)\\bvpsravq\\b",name:"keyword.operator.word.mnemonic.avx512.f.sravq"},{match:"(?i)\\bv(rcp14|(rnd)?scale|rsqrt14)[ps][ds]\\b",name:"keyword.operator.word.mnemonic.avx512.f.rcp"},{match:"(?i)\\bv(scatter[dq]{2}|shuf[fi](32|64)x[24])\\b",name:"keyword.operator.word.mnemonic.avx512.f.scatter"}]},"mnemonics-avx512fp16":{patterns:[{match:"(?i)\\bv((add|cmp|div|fc?(madd|mul)c|fpclass|get(exp|mant)|mul|rcp|reduce|(rnd)?scale|r?sqrt|sub)[ps]h|u?comish)\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.add"},{match:"(?i)\\bvcvt(u?([dq]q|w)|pd)2ph\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvtx2ph"},{match:"(?i)\\bvcvtph2(u?([dq]q|w)|pd)\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvtph2x"},{match:"(?i)\\bvcvt(ph2psx|ps2phx)\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvtx"},{match:"(?i)\\bvcvt(s[dsi]|usi)2sh\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvtx2sh"},{match:"(?i)\\bvcvtsh2(s[dsi]|usi)\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvtsh2x"},{match:"(?i)\\bvcvtt(ph2(u?(dq|qq|w))|sh2u?si)\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.cvttph2x"},{match:"(?i)\\bvfn?m((add|sub)(132|213|231))[ps]h\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.fmadd"},{match:"(?i)\\bvfm(addsub|subadd)(132|213|231)ph\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.fmaddsub"},{match:"(?i)\\bv((min|max)ph|mov(sh|w))\\b",name:"keyword.operator.word.mnemonic.avx512.fp16.max"}]},"mnemonics-avx512pf":{patterns:[{match:"(?i)\\bv(gather|scatter)pf[01][dq]p[ds]\\b",name:"keyword.operator.word.mnemonic.avx512.pf"}]},"mnemonics-cet":{patterns:[{match:"(?i)\\b((inc|save(prev)?|rstor|rd)ssp|wru?ss|(set|clr)ssbsy|endbr(32|64))\\b",name:"keyword.operator.word.mnemonic.cet"},{match:"(?i)\\bendbranch\\b",name:"keyword.operator.word.mnemonic.cet.misc"}]},"mnemonics-esi":{patterns:[{match:"(?i)\\benqcmds?\\b",name:"keyword.operator.word.mnemonic.esi"}]},"mnemonics-fpu":{patterns:[{match:"(?i)\\b(fcmov(n?([beu]|be)))\\b",name:"keyword.operator.word.mnemonic.fpu.data-transfer.mov"},{match:"(?i)\\b(f(i?(ld|stp?)|b(ld|stp)|xch))\\b",name:"keyword.operator.word.mnemonic.fpu.data-transfer.other"},{match:"(?i)\\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\\b",name:"keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic"},{match:"(?i)\\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\\b",name:"keyword.operator.word.mnemonic.fpu.basic-arithmetic.other"},{match:"(?i)\\b(f(u?com[ip]?p?|icomp?|tst|xam))\\b",name:"keyword.operator.word.mnemonic.fpu.comparison"},{match:"(?i)\\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\\b",name:"keyword.operator.word.mnemonic.fpu.transcendental"},{match:"(?i)\\b(fld(1|z|pi|l2[et]|l[ng]2))\\b",name:"keyword.operator.word.mnemonic.fpu.load-constants"},{match:"(?i)\\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\\b",name:"keyword.operator.word.mnemonic.fpu.control-management"},{match:"(?i)\\b(fx(save|rstor)(64)?)\\b",name:"keyword.operator.word.mnemonic.fpu.state-management"}]},"mnemonics-future-intel":{patterns:[{include:"#mnemonics-future-intel-apx"}]},"mnemonics-future-intel-apx":{patterns:[{match:"(?i)\\b(c(cmp|test)(n?[bl]e?|[ft]|n?[osz]))\\b",name:"keyword.operator.word.mnemonic.apx.ccmp_test"},{match:"(?i)\\b(cfcmovn?([bl]e?|[opsz]))\\b",name:"keyword.operator.word.mnemonic.apx.cfcmov"},{match:"(?i)\\b(cmpn?([bl]e?|[opsz])xadd)\\b",name:"keyword.operator.word.mnemonic.apx.cmpxadd"},{match:"(?i)\\b(jmpabs|(push|pop)2p?)\\b",name:"keyword.operator.word.mnemonic.apx.other"}]},"mnemonics-general-purpose":{patterns:[{match:"(?i)\\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",name:"keyword.operator.word.mnemonic.general-purpose.data-transfer.mov"},{match:"(?i)\\b(xchg|bswap|xadd|cmpxchg(8b)?)\\b",name:"keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg"},{match:"(?i)\\b((push|pop)(ad?)?|cwde?|cdq|cbw)\\b",name:"keyword.operator.word.mnemonic.general-purpose.data-transfer.other"},{match:"(?i)\\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\\b",name:"keyword.operator.word.mnemonic.general-purpose.binary-arithmetic"},{match:"(?i)\\b(daa|das|aaa|aas|aam|aad)\\b",name:"keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic"},{match:"(?i)\\b(and|x?or|not)\\b",name:"keyword.operator.word.mnemonic.general-purpose.logical"},{match:"(?i)\\b(s[ah][rl]|sh[rl]d|r[co][rl])\\b",name:"keyword.operator.word.mnemonic.general-purpose.rotate"},{match:"(?i)\\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",name:"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set"},{match:"(?i)\\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\\b",name:"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other"},{match:"(?i)\\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\\b",name:"keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp"},{match:"(?i)\\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\\b",name:"keyword.operator.word.mnemonic.general-purpose.control-transfer.other"},{match:"(?i)\\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\\b",name:"keyword.operator.word.mnemonic.general-purpose.strings"},{match:"(?i)\\b((in|out)(s[bdw]?)?)\\b",name:"keyword.operator.word.mnemonic.general-purpose.io"},{match:"(?i)\\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\\b",name:"keyword.operator.word.mnemonic.general-purpose.flag-control"},{match:"(?i)\\b(l[defgs]s)\\b",name:"keyword.operator.word.mnemonic.general-purpose.segment-registers"},{match:"(?i)\\b(lea|nop|ud2?|xlatb?|cpuid|movbe)\\b",name:"keyword.operator.word.mnemonic.general-purpose.misc"},{match:"(?i)\\b(cl(flush(opt)?|demote|wb)|pcommit)\\b",name:"keyword.operator.word.mnemonic.general-purpose.cache-control"},{match:"(?i)\\b(rdrand|rdseed)\\b",name:"keyword.operator.word.mnemonic.general-purpose.rng"},{match:"(?i)\\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\\b",name:"keyword.operator.word.mnemonic.general-purpose.bmi"}]},"mnemonics-intel-isa-keylocker":{patterns:[{match:"(?i)\\b(aes(enc|dec)(wide)?(128|256)kl|encodekey(128|256)|loadiwkey)\\b",name:"keyword.operator.word.mnemonic.keylocker"}]},"mnemonics-intel-isa-xeon-phi":{patterns:[{match:"(?i)\\bv(4fn?(madd)[ps]s|p4dpwssds?)\\b",name:"keyword.operator.word.mnemonic.xeon-phi"}]},"mnemonics-intel-manual-listing":{patterns:[{match:"(?i)\\bcvtt?pd1pi\\b",name:"keyword.operator.word.mnemonic.other.c"},{match:"(?i)\\bv?gf2p8(affine(inv)?q|mul)b\\b",name:"keyword.operator.word.mnemonic.other.g"},{match:"(?i)\\bhreset\\b",name:"keyword.operator.word.mnemonic.other.h"},{match:"(?i)\\bincssp[dq]\\b",name:"keyword.operator.word.mnemonic.other.i"},{match:"(?i)\\bmovdir(i|64b)\\b",name:"keyword.operator.word.mnemonic.other.m"},{match:"(?i)\\bp((abs|(max|min)[su]?|mull|sra)q|config|twrite)\\b",name:"keyword.operator.word.mnemonic.other.p"},{match:"(?i)\\brd(pid|ssp[dq])\\b",name:"keyword.operator.word.mnemonic.other.r"},{match:"(?i)\\bserialize\\b",name:"keyword.operator.word.mnemonic.other.s"},{match:"(?i)\\btpause\\b",name:"keyword.operator.word.mnemonic.other.t"},{match:"(?i)\\bu(monitor|mwait)\\b",name:"keyword.operator.word.mnemonic.other.u"},{match:"(?i)\\bvbroadcast[fi](32x[248]|64x[24])\\b",name:"keyword.operator.word.mnemonic.other.vb"},{match:"(?i)\\bv(compressw|cvtne2?ps2bf16)\\b",name:"keyword.operator.word.mnemonic.other.vc"},{match:"(?i)\\bvdpbf16ps\\b",name:"keyword.operator.word.mnemonic.other.vd"},{match:"(?i)\\bvextract[fi]32x8\\b",name:"keyword.operator.word.mnemonic.other.ve"},{match:"(?i)\\bv(insert([fi]32x8|i(32|64)x4))\\b",name:"keyword.operator.word.mnemonic.other.vi"},{match:"(?i)\\bv(maskmov|(max|min)sh)\\b",name:"keyword.operator.word.mnemonic.other.vm"},{match:"(?i)\\bvp((2intersect|andn?)[dq]|absq)\\b",name:"keyword.operator.word.mnemonic.other.vpa"},{match:"(?i)\\bvpbroadcasti32x4\\b",name:"keyword.operator.word.mnemonic.other.vpb"},{match:"(?i)\\bvpcompress[bw]\\b",name:"keyword.operator.word.mnemonic.other.vpc"},{match:"(?i)\\bvp(dp(bu|ws)sds?)\\b",name:"keyword.operator.word.mnemonic.other.vpd"},{match:"(?i)\\b(vperm(b|t2[bw])|vp(expand[bw]|extrtd))\\b",name:"keyword.operator.word.mnemonic.other.vpe"},{match:"(?i)\\bvp(madd52[hl]uq|mov(d(2m|[bw])|q[bdw]|wb)|mpov[bdqw]2m|multishiftqb)\\b",name:"keyword.operator.word.mnemonic.other.vpm"},{match:"(?i)\\b(vpopcnt[bdqw]|vpor[dq])\\b",name:"keyword.operator.word.mnemonic.other.vpo"},{match:"(?i)\\bvprorv[dq]\\b",name:"keyword.operator.word.mnemonic.other.vpr"},{match:"(?i)\\bvp(sh[lr]dv?[dqw]|shufbitqmb|shufps)\\b",name:"keyword.operator.word.mnemonic.other.vps"},{match:"(?i)\\bvpternlog[dq]\\b",name:"keyword.operator.word.mnemonic.other.vpt"},{match:"(?i)\\bvpxor[dq]\\b",name:"keyword.operator.word.mnemonic.other.vpx"},{match:"(?i)\\bv(scalef[ps][dhs]|scatter[dq]p[ds])\\b",name:"keyword.operator.word.mnemonic.other.vs"},{match:"(?i)\\b(wbnoinvd|wru?ss[dq])\\b",name:"keyword.operator.word.mnemonic.other.w"}]},"mnemonics-invalid":{patterns:[{include:"#mnemonics-invalid-amd-sse5"}]},"mnemonics-invalid-amd-sse5":{patterns:[{match:"(?i)\\b(com[ps][ds]|pcomu?[bdqw])\\b",name:"invalid.keyword.operator.word.mnemonic.sse5.comparison"},{match:"(?i)\\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\\b",name:"invalid.keyword.operator.word.mnemonic.sse5.conversion"},{match:"(?i)\\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\\b",name:"invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic"},{match:"(?i)\\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\\b",name:"invalid.keyword.operator.word.mnemonic.sse5.simd-integer"}]},"mnemonics-mmx":{patterns:[{match:"(?i)\\b(mov[dq])\\b",name:"keyword.operator.word.mnemonic.mmx.data-transfer"},{match:"(?i)\\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\\b",name:"keyword.operator.word.mnemonic.mmx.conversion"},{match:"(?i)\\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\\b",name:"keyword.operator.word.mnemonic.mmx.packed-arithmetic"},{match:"(?i)\\b(pcmp((eq|gt)[bdw]))\\b",name:"keyword.operator.word.mnemonic.mmx.comparison"},{match:"(?i)\\b(pandn?|px?or)\\b",name:"keyword.operator.word.mnemonic.mmx.logical"},{match:"(?i)\\b(ps([rl]l[dwq]|raw|rad))\\b",name:"keyword.operator.word.mnemonic.mmx.shift-and-rotate"},{match:"(?i)\\b(emms)\\b",name:"keyword.operator.word.mnemonic.mmx.state-management"}]},"mnemonics-mpx":{patterns:[{match:"(?i)\\b(bnd(mk|c[lnu]|mov|ldx|stx))\\b",name:"keyword.operator.word.mnemonic.mpx"}]},"mnemonics-pseudo-ops":{patterns:[{match:"(?i)\\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\\b",name:"keyword.operator.word.pseudo-mnemonic.sse2.compare"},{match:"(?i)\\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\\b",name:"keyword.operator.word.pseudo-mnemonic.avx.promoted.aes"},{match:"(?i)\\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\\b",name:"keyword.operator.word.pseudo-mnemonic.avx.promoted.comparison"},{match:"(?i)\\bvp(cmpn?(eq|le|lt))\\b",name:"keyword.operator.word.pseudo-mnemonic.avx512.compare"},{match:"(?i)\\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\\b",name:"keyword.operator.word.pseudo-mnemonic.supplemental.amd.xop.simd"}]},"mnemonics-sgx":{patterns:[{match:"(?i)\\bencl[su]\\b",name:"keyword.operator.word.mnemonic.sgx"},{match:"(?i)\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\b",name:"support.constant.sgx1.supervisor"},{match:"(?i)\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\b",name:"support.constant.sgx1.supervisor"},{match:"(?i)\\be(enter|exit|getkey|report|resume)\\b",name:"support.constant.sgx1.user"},{match:"(?i)\\be(aug|mod(pr|t))\\b",name:"support.constant.sgx2.supervisor"},{match:"(?i)\\be(accept(copy)?|modpe)\\b",name:"support.constant.sgx2.user"}]},"mnemonics-sha":{patterns:[{match:"(?i)\\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\\b",name:"keyword.operator.word.mnemonic.sha"}]},"mnemonics-smx":{patterns:[{match:"(?i)\\b(getsec)\\b",name:"keyword.operator.word.mnemonic.smx.getsec"},{match:"(?i)\\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\\b",name:"support.constant.smx"}]},"mnemonics-sse":{patterns:[{match:"(?i)\\b(mov(([ahlu]|hl|lh|msk)ps|ss))\\b",name:"keyword.operator.word.mnemonic.sse.data-transfer"},{match:"(?i)\\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\\b",name:"keyword.operator.word.mnemonic.sse.packed-arithmetic"},{match:"(?i)\\b(cmp[ps]s|u?comiss)\\b",name:"keyword.operator.word.mnemonic.sse.comparison"},{match:"(?i)\\b((andn?|x?or)ps)\\b",name:"keyword.operator.word.mnemonic.sse.logical"},{match:"(?i)\\b((shuf|unpck[hl])ps)\\b",name:"keyword.operator.word.mnemonic.sse.shuffle-and-unpack"},{match:"(?i)\\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\\b",name:"keyword.operator.word.mnemonic.sse.conversion"},{match:"(?i)\\b((ld|st)mxcsr)\\b",name:"keyword.operator.word.mnemonic.sse.state-management"},{match:"(?i)\\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\\b",name:"keyword.operator.word.mnemonic.sse.simd-integer"},{match:"(?i)\\b(maskmovq|movntps|sfence)\\b",name:"keyword.operator.word.mnemonic.sse.cacheability-control"},{match:"(?i)\\b(prefetch(nta|t[0-2]|w(t1)?))\\b",name:"keyword.operator.word.mnemonic.sse.prefetch"}]},"mnemonics-sse2":{patterns:[{match:"(?i)\\b(mov([auhl]|msk)pd)\\b",name:"keyword.operator.word.mnemonic.sse2.data-transfer"},{match:"(?i)\\b((add|div|max|min|mul|sub|sqrt)[ps]d)\\b",name:"keyword.operator.word.mnemonic.sse2.packed-arithmetic"},{match:"(?i)\\b((andn?|x?or)pd)\\b",name:"keyword.operator.word.mnemonic.sse2.logical"},{match:"(?i)\\b((cmpp|u?comis)d)\\b",name:"keyword.operator.word.mnemonic.sse2.compare"},{match:"(?i)\\b((shuf|unpck[hl])pd)\\b",name:"keyword.operator.word.mnemonic.sse2.shuffle-and-unpack"},{match:"(?i)\\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\\b",name:"keyword.operator.word.mnemonic.sse2.conversion"},{match:"(?i)\\b(cvt(dq2ps|ps2dq|tps2dq))\\b",name:"keyword.operator.word.mnemonic.sse2.packed-floating-point"},{match:"(?i)\\b(mov(dq[au]|q2dq|dq2q))\\b",name:"keyword.operator.word.mnemonic.sse2.simd-integer.mov"},{match:"(?i)\\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\\b",name:"keyword.operator.word.mnemonic.sse2.simd-integer.other"},{match:"(?i)\\b([lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\\b",name:"keyword.operator.word.mnemonic.sse2.cacheability-control"}]},"mnemonics-sse3":{patterns:[{match:"(?i)\\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\\b",name:"keyword.operator.word.mnemonic.sse3"},{match:"(?i)\\b(ph(add|sub)(s?w|d))\\b",name:"keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic"},{match:"(?i)\\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\\b",name:"keyword.operator.word.mnemonic.sse3.supplimental.other"}]},"mnemonics-sse4":{patterns:[{match:"(?i)\\b(pmul(ld|dq)|dpp[ds])\\b",name:"keyword.operator.word.mnemonic.sse4.1.arithmetic"},{match:"(?i)\\b(movntdqa)\\b",name:"keyword.operator.word.mnemonic.sse4.1.load-hint"},{match:"(?i)\\b(blendv?p[ds]|pblend(vb|w))\\b",name:"keyword.operator.word.mnemonic.sse4.1.packed-blending"},{match:"(?i)\\b(p(min|max)(u[dw]|s[bd]))\\b",name:"keyword.operator.word.mnemonic.sse4.1.packed-integer"},{match:"(?i)\\b(round[ps][sd])\\b",name:"keyword.operator.word.mnemonic.sse4.1.packed-floating-point"},{match:"(?i)\\b((extract|insert)ps|p((ins|ext)(r[bdq])))\\b",name:"keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction"},{match:"(?i)\\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\\b",name:"keyword.operator.word.mnemonic.sse4.1.conversion"},{match:"(?i)\\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\\b",name:"keyword.operator.word.mnemonic.sse4.1.other"},{match:"(?i)\\b(pcmp([ei]str[im]|gtq))\\b",name:"keyword.operator.word.mnemonic.sse4.2"}]},"mnemonics-supplemental-amd":{patterns:[{match:"(?i)\\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.general-purpose"},{match:"(?i)\\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.system"},{match:"(?i)\\b([ls]lwpcb|lwp(ins|val))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.profiling"},{match:"(?i)\\b(movnts[ds])\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.memory-management"},{match:"(?i)\\b(prefetch|clzero)\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.cache-management"},{match:"(?i)\\b((extr|insert)q)\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.sse4.a"},{match:"(?i)\\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.fma4"},{match:"(?i)\\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.xop.simd"},{match:"(?i)\\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal"},{match:"(?i)\\b(vfrcz[ps][ds]|vpermil2p[ds])\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.xop.other"},{match:"(?i)\\b(femms)\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.3dnow"},{match:"(?i)\\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd"},{match:"(?i)\\b(pfcmp(eq|ge|gt))\\b",name:"keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison"}]},"mnemonics-supplemental-cyrix":{patterns:[{match:"(?i)\\b((sv|rs)dc|(wr|rd)shr|paddsiw)\\b",name:"keyword.operator.word.mnemonic.supplemental.cyrix"}]},"mnemonics-supplemental-via":{patterns:[{match:"(?i)\\b(montmul)\\b",name:"keyword.operator.word.mnemonic.supplemental.via"},{match:"(?i)\\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\\b",name:"keyword.operator.word.mnemonic.supplemental.via.padlock"}]},"mnemonics-system":{patterns:[{match:"(?i)\\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\\b",name:"keyword.operator.word.mnemonic.system"},{match:"(?i)\\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\\b",name:"keyword.operator.word.mnemonic.system"},{match:"(?i)\\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\\b",name:"keyword.operator.word.mnemonic.system"}]},"mnemonics-tsx":{patterns:[{match:"(?i)\\b(x(abort|begin|end|test|(res|sus)ldtrk))\\b",name:"keyword.operator.word.mnemonic.tsx"}]},"mnemonics-uirq":{patterns:[{match:"(?i)\\b((cl|st|test)ui|senduipi|uiret)\\b",name:"keyword.operator.word.mnemonic.uirq"}]},"mnemonics-undocumented":{patterns:[{match:"(?i)\\b(ret[nf]|icebp|int1|int03|smi|ud1)\\b",name:"keyword.operator.word.mnemonic.undocumented"}]},"mnemonics-vmx":{patterns:[{match:"(?i)\\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\\b",name:"keyword.operator.word.mnemonic.vmx"}]},preprocessor:{patterns:[{begin:"^\\s*[#%]\\s*(error|warning)\\b",captures:{1:{name:"keyword.control.import.error.c"}},end:"$",name:"meta.preprocessor.diagnostic.c",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"}]},{begin:"^\\s*[#%]\\s*(include|import)\\b\\s+",captures:{1:{name:"keyword.control.import.include.c"}},end:"(?=(?://|/\\*))|$",name:"meta.preprocessor.c.include",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.double.include.c"},{begin:"<",beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.other.lt-gt.include.c"}]},{begin:"^\\s*[%#]\\s*(i?x?define|defined|elif(def)?|else|i[fs]n?(?:def|macro|ctx|idni?|id|num|str|token|empty|env)?|line|(i|end|uni?)?macro|pragma|endif)\\b",captures:{1:{name:"keyword.control.import.c"}},end:"(?=(?://|/\\*))|$",name:"meta.preprocessor.c",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"},{include:"#preprocessor-functions"}]},{begin:"^\\s*[#%]\\s*(assign|strlen|substr|(end|exit)?rep|push|pop|rotate|use|ifusing|ifusable|def(?:ailas|str|tok)|undef(?:alias)?)\\b",captures:{1:{name:"keyword.control"}},end:"$",name:"meta.preprocessor.nasm",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"},{include:"#preprocessor-functions"}]}]},"preprocessor-functions":{patterns:[{begin:"((%)(?:(abs|cond|count|eval|isn?(?:def|macro|ctx|idni?|id|num|str|token|empty|env)?|num|sel|str(?:cat|len)?|substr|tok)\\s*(\\()))",captures:{3:{name:"support.function.preprocessor.asm.x86_64"}},end:"(\\))|$",name:"meta.preprocessor.function.asm.x86_64",patterns:[{include:"#preprocessor-functions"}]}]},registers:{patterns:[{match:"(?i)\\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\\b",name:"constant.language.register.general-purpose.asm.x86_64"},{match:"(?i)\\b(?:[cdefgs]s)\\b",name:"constant.language.register.segment.asm.x86_64"},{match:"(?i)\\b(?:[er]?flags)\\b",name:"constant.language.register.flags.asm.x86_64"},{match:"(?i)\\b(?:[er]?ip)\\b",name:"constant.language.register.instruction-pointer.asm.x86_64"},{match:"(?i)\\b(?:cr[02-4])\\b",name:"constant.language.register.control.asm.x86_64"},{match:"(?i)\\b(?:(?:mm|st|fpr)[0-7])\\b",name:"constant.language.register.mmx.asm.x86_64"},{match:"(?i)\\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\\b",name:"constant.language.register.sse_avx.asm.x86_64"},{match:"(?i)\\b(?:zmm(?:[12]?[0-9]|30|31))\\b",name:"constant.language.register.avx512.asm.x86_64"},{match:"(?i)\\b(?:bnd(?:[0-3]|cfg[su]|status))\\b",name:"constant.language.register.memory-protection.asm.x86_64"},{match:"(?i)\\b(?:(?:[gil]dt)r?|tr)\\b",name:"constant.language.register.system-table-pointer.asm.x86_64"},{match:"(?i)\\b(?:dr[0-367])\\b",name:"constant.language.register.debug.asm.x86_64"},{match:"(?i)\\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\\b",name:"constant.language.register.amd.asm.x86_64"},{match:"(?i)\\b(?:db[0-367]|t[67]|tr[3-7]|st)\\b",name:"invalid.deprecated.constant.language.register.asm.x86_64"},{match:"(?i)\\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\\b",name:"constant.language.register.general-purpose.alias.asm.x86_64"}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.asm"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.asm"}},name:"string.quoted.double.asm",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.asm"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.asm"}},name:"string.quoted.single.asm",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"}]},{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.asm"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.asm"}},name:"string.quoted.backquote.asm",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"}]}]},support:{patterns:[{match:"(?i)\\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\\b",name:"storage.type.asm.x86_64"},{match:"(?i)\\b(?:incbin|equ|times|dup)\\b",name:"support.function.asm.x86_64"},{match:"(?i)\\b(?:strict|nosplit|near|far|abs|rel)\\b",name:"storage.modifier.asm.x86_64"},{match:"(?i)\\b(?:[ao](?:16|32|64))\\b",name:"storage.modifier.prefix.asm.x86_64"},{match:"(?i)\\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\\b",name:"storage.modifier.prefix.asm.x86_64"},{captures:{1:{name:"storage.modifier.prefix.vex.asm.x86_64"}},match:"{(vex[23]?|evex|rex)}"},{captures:{1:{name:"storage.modifier.opmask.asm.x86_64"}},match:"{(k[1-7])}"},{captures:{1:{name:"storage.modifier.precision.asm.x86_64"}},match:"{(1to(?:8|16))}"},{captures:{1:{name:"storage.modifier.rounding.asm.x86_64"}},match:"{(z|(?:r[nudz]-)?sae)}"},{match:"\\.\\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\\b",name:"support.constant.asm.x86_64"},{match:"\\b__\\?(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|bfloat16|Infinity|[QS]?NaN)\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|bfloat16|Infinity|[QS]?NaN)__\\b",name:"support.function.legacy.asm.x86_64"},{match:"\\b__\\?NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b___\\?NASM_PATCHLEVEL\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b__\\?(?:FILE|LINE|BITS|OUTPUT_FORMAT|DEBUG_FORMAT)\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b__\\?(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b__\\?USE_(?:\\w+)\\?__\\b",name:"support.function.asm.x86_64"},{match:"\\b__\\?PASS\\?__\\b",name:"invalid.deprecated.support.constant.altreg.asm.x86_64"},{match:"\\b__\\?ALIGNMODE\\?__\\b",name:"support.constant.smartalign.asm.x86_64"},{match:"\\b__\\?ALIGN_(\\w+)\\?__\\b",name:"support.function.smartalign.asm.x86_64"},{match:"\\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\\b",name:"support.function.asm.x86_64"},{match:"\\b___NASM_PATCHLEVEL__\\b",name:"support.function.asm.x86_64"},{match:"\\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT|DEBUG_FORMAT)__\\b",name:"support.function.asm.x86_64"},{match:"\\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\\b",name:"support.function.asm.x86_64"},{match:"\\b__USE_(?:\\w+)__\\b",name:"support.function.asm.x86_64"},{match:"\\b__PASS__\\b",name:"invalid.deprecated.support.constant.altreg.asm.x86_64"},{match:"\\b__ALIGNMODE__\\b",name:"support.constant.smartalign.asm.x86_64"},{match:"\\b__ALIGN_(\\w+)__\\b",name:"support.function.smartalign.asm.x86_64"},{match:"\\b(?:Inf|[QS]?NaN)\\b",name:"support.constant.fp.asm.x86_64"},{match:"\\b(?:float(?:8|16|32|64|80[me]|128[lh]))\\b",name:"support.function.fp.asm.x86_64"},{match:"(?i)\\bilog2(?:[ewfc]|[fc]w)?\\b",name:"support.function.ifunc.asm.x86_64"}]}},scopeName:"source.asm.x86_64"});var n=[e];export{n as default}; diff --git a/assets/chunks/astro.Dtt22nl1.js b/assets/chunks/astro.Dtt22nl1.js new file mode 100644 index 000000000..e9fab0b04 --- /dev/null +++ b/assets/chunks/astro.Dtt22nl1.js @@ -0,0 +1,32 @@ +import e from"./json.CupVZNk8.js";import t from"./javascript.Dch3xQiY.js";import r from"./typescript.DC8MraHL.js";import a from"./stylus.DSrLtGYv.js";import n from"./sass.CMDmr8et.js";import s from"./css.CbYhyuC0.js";import o from"./scss.Dr-_CcBd.js";import i from"./less.Du6_OKDb.js";import c from"./postcss.DXT9h7v2.js";import l from"./tsx.BlxWTfDV.js";const u=Object.freeze({displayName:"Astro",fileTypes:["astro"],injections:{"L:(meta.script.astro) (meta.lang.js | meta.lang.javascript | meta.lang.partytown | meta.lang.node) - (meta source)":{patterns:[{begin:"(?<=>)(?!)(?!)(?!)(?!)(?!)(?!)(?!)(?!)(?!)(?!)(?!)",patterns:[{include:"#interpolation"},{include:"#attribute-literal"},{begin:"(?=[^\\s=<>`/]|/(?!>))",end:"(?!\\G)",name:"meta.embedded.line.js",patterns:[{captures:{0:{name:"source.js"},1:{patterns:[{include:"source.js"}]}},match:"(([^\\s\\\"'=<>`/]|/(?!>))+)",name:"string.unquoted.astro"},{begin:'(["])',beginCaptures:{0:{name:"punctuation.definition.string.begin.astro"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.astro"}},name:"string.quoted.astro",patterns:[{captures:{0:{patterns:[{include:"source.js"}]}},match:'([^\\n\\"/]|/(?![/*]))+'},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.js"}},end:'(?=\\")|\\n',name:"comment.line.double-slash.js"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.js"}},end:'(?=\\")|\\*/',endCaptures:{0:{name:"punctuation.definition.comment.end.js"}},name:"comment.block.js"}]},{begin:"(['])",beginCaptures:{0:{name:"punctuation.definition.string.begin.astro"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.astro"}},name:"string.quoted.astro",patterns:[{captures:{0:{patterns:[{include:"source.js"}]}},match:"([^\\n\\'/]|/(?![/*]))+"},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.js"}},end:"(?=\\')|\\n",name:"comment.line.double-slash.js"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.js"}},end:"(?=\\')|\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.js"}},name:"comment.block.js"}]}]}]}]},"attributes-interpolated":{begin:"(?)",patterns:[{include:"#attributes-value"}]}]},"attributes-value":{patterns:[{include:"#interpolation"},{match:"([^\\s\"'=<>`/]|/(?!>))+",name:"string.unquoted.astro"},{begin:`(['"])`,beginCaptures:{0:{name:"punctuation.definition.string.begin.astro"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.astro"}},name:"string.quoted.astro"},{include:"#attribute-literal"}]},comments:{begin:"",name:"comment.block.astro",patterns:[{match:"\\G-?>|)|--!>",name:"invalid.illegal.characters-not-allowed-here.astro"}]},entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.astro"},912:{name:"punctuation.definition.entity.astro"}},match:`(?x) +(&) (?=[a-zA-Z]) +( +(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve)) +| (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?)) +| (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross)) +| (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger))) +| (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr))) +| (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr)) +| (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve)) +| (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy)) +| (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?)) +| (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr)) +| (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa)) +| (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot)) +| (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker))) +| (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute)) +| (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr))) +| (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?)) +| (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr)) +| (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))) +| (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle)) +| (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot)) +| (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve))) +| (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar)) +| (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr)) +| (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map)) +| (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy)) +| (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)) +) +(;) +`,name:"constant.character.entity.named.$2.astro"},{captures:{1:{name:"punctuation.definition.entity.astro"},3:{name:"punctuation.definition.entity.astro"}},match:"(&)#[0-9]+(;)",name:"constant.character.entity.numeric.decimal.astro"},{captures:{1:{name:"punctuation.definition.entity.astro"},3:{name:"punctuation.definition.entity.astro"}},match:"(&)#[xX][0-9a-fA-F]+(;)",name:"constant.character.entity.numeric.hexadecimal.astro"},{match:"&(?=[a-zA-Z0-9]+;)",name:"invalid.illegal.ambiguous-ampersand.astro"}]},frontmatter:{begin:"\\A(-{3})\\s*$",beginCaptures:{1:{name:"comment"}},contentName:"source.ts",end:"(^|\\G)(-{3})|\\.{3}\\s*$",endCaptures:{2:{name:"comment"}},patterns:[{include:"source.ts"}]},interpolation:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.astro"}},contentName:"meta.embedded.expression.astro source.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.astro"}},patterns:[{begin:"\\G\\s*(?={)",end:"(?<=})",patterns:[{include:"source.tsx#object-literal"}]},{include:"source.tsx"}]}]},scope:{patterns:[{include:"#comments"},{include:"#tags"},{include:"#interpolation"},{include:"#entities"}]},tags:{patterns:[{include:"#tags-raw"},{include:"#tags-lang"},{include:"#tags-void"},{include:"#tags-general-end"},{include:"#tags-general-start"}]},"tags-end-node":{captures:{1:{name:"meta.tag.end.astro punctuation.definition.tag.begin.astro"},2:{name:"meta.tag.end.astro",patterns:[{include:"#tags-name"}]},3:{name:"meta.tag.end.astro punctuation.definition.tag.end.astro"},4:{name:"meta.tag.start.astro punctuation.definition.tag.end.astro"}},match:"()|(/>)"},"tags-general-end":{begin:"(]*)",beginCaptures:{1:{name:"meta.tag.end.astro punctuation.definition.tag.begin.astro"},2:{name:"meta.tag.end.astro",patterns:[{include:"#tags-name"}]}},end:"(>)",endCaptures:{1:{name:"meta.tag.end.astro punctuation.definition.tag.end.astro"}},name:"meta.scope.tag.$2.astro"},"tags-general-start":{begin:"(<)([^/\\s>/]*)",beginCaptures:{0:{patterns:[{include:"#tags-start-node"}]}},end:"(/?>)",endCaptures:{1:{name:"meta.tag.start.astro punctuation.definition.tag.end.astro"}},name:"meta.scope.tag.$2.astro",patterns:[{include:"#tags-start-attributes"}]},"tags-lang":{begin:"<(script|style)",beginCaptures:{0:{patterns:[{include:"#tags-start-node"}]}},end:"|/>",endCaptures:{0:{patterns:[{include:"#tags-end-node"}]}},name:"meta.scope.tag.$1.astro meta.$1.astro",patterns:[{begin:`\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['"]|)(?:text\\/)?(application\\/ld\\+json)\\2)`,end:"(?=)",name:"meta.lang.json.astro",patterns:[{include:"#tags-lang-start-attributes"}]},{begin:`\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['"]|)(module)\\2)`,end:"(?=)",name:"meta.lang.javascript.astro",patterns:[{include:"#tags-lang-start-attributes"}]},{begin:`\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['"]|)(?:text/|application/)?([\\w\\/+]+)\\2)`,end:"(?=)",name:"meta.lang.$3.astro",patterns:[{include:"#tags-lang-start-attributes"}]},{include:"#tags-lang-start-attributes"}]},"tags-lang-start-attributes":{begin:"\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.astro"}},name:"meta.tag.start.astro",patterns:[{include:"#attributes"}]},"tags-name":{patterns:[{match:"[A-Z][a-zA-Z0-9_]*",name:"support.class.component.astro"},{match:"[a-z][\\w0-9:]*-[\\w0-9:-]*",name:"meta.tag.custom.astro entity.name.tag.astro"},{match:"[a-z][\\w0-9:-]*",name:"entity.name.tag.astro"}]},"tags-raw":{begin:"<([^/?!\\s<>]+)(?=[^>]+is:raw).*?",beginCaptures:{0:{patterns:[{include:"#tags-start-node"}]}},contentName:"source.unknown",end:"|/>",endCaptures:{0:{patterns:[{include:"#tags-end-node"}]}},name:"meta.scope.tag.$1.astro meta.raw.astro",patterns:[{include:"#tags-lang-start-attributes"}]},"tags-start-attributes":{begin:"\\G",end:"(?=/?>)",name:"meta.tag.start.astro",patterns:[{include:"#attributes"}]},"tags-start-node":{captures:{1:{name:"punctuation.definition.tag.begin.astro"},2:{patterns:[{include:"#tags-name"}]}},match:"(<)([^/\\s>/]*)",name:"meta.tag.start.astro"},"tags-void":{begin:"(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.astro"},2:{name:"entity.name.tag.astro"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.begin.astro"}},name:"meta.tag.void.astro",patterns:[{include:"#attributes"}]},text:{patterns:[{begin:"(?<=^|---|>|})",end:"(?=<|{|$)",name:"text.astro",patterns:[{include:"#entities"}]}]}},scopeName:"source.astro",embeddedLangs:["json","javascript","typescript","stylus","sass","css","scss","less","postcss","tsx"]});var v=[...e,...t,...r,...a,...n,...s,...o,...i,...c,...l,u];export{v as default}; diff --git a/assets/chunks/aurora-x.BaWyeHV_.js b/assets/chunks/aurora-x.BaWyeHV_.js new file mode 100644 index 000000000..25753460a --- /dev/null +++ b/assets/chunks/aurora-x.BaWyeHV_.js @@ -0,0 +1 @@ +var t=Object.freeze({colors:{"activityBar.background":"#07090F","activityBar.foreground":"#86A5FF","activityBar.inactiveForeground":"#576dafc5","activityBarBadge.background":"#86A5FF","activityBarBadge.foreground":"#07090F","badge.background":"#86A5FF","badge.foreground":"#07090F","breadcrumb.activeSelectionForeground":"#86A5FF","breadcrumb.focusForeground":"#576daf","breadcrumb.foreground":"#576dafa6","breadcrumbPicker.background":"#07090F","button.background":"#86A5FF","button.foreground":"#07090F","button.hoverBackground":"#A8BEFF",descriptionForeground:"#576daf79","diffEditor.diagonalFill":"#15182B","diffEditor.insertedTextBackground":"#64d3892c","diffEditor.removedTextBackground":"#dd50742c","dropdown.background":"#15182B","dropdown.foreground":"#c7d5ff99","editor.background":"#07090F","editor.findMatchBackground":"#576daf","editor.findMatchHighlightBackground":"#262E47","editor.inactiveSelectionBackground":"#262e47be","editor.selectionBackground":"#262E47","editor.selectionHighlightBackground":"#262E47","editor.wordHighlightBackground":"#262E47","editor.wordHighlightStrongBackground":"#262E47","editorCodeLens.foreground":"#262E47","editorCursor.background":"#01030b","editorCursor.foreground":"#86A5FF","editorGroup.background":"#07090F","editorGroup.border":"#15182B","editorGroup.dropBackground":"#0C0E19","editorGroup.emptyBackground":"#07090F","editorGroupHeader.tabsBackground":"#07090F","editorLineNumber.activeForeground":"#576dafd8","editorLineNumber.foreground":"#262e47bb","editorWidget.background":"#15182B","editorWidget.border":"#576daf","extensionButton.prominentBackground":"#C7D5FF","extensionButton.prominentForeground":"#07090F",focusBorder:"#262E47",foreground:"#576daf","gitDecoration.addedResourceForeground":"#64d389fd","gitDecoration.deletedResourceForeground":"#dd5074","gitDecoration.ignoredResourceForeground":"#576daf90","gitDecoration.modifiedResourceForeground":"#c778db","gitDecoration.untrackedResourceForeground":"#576daf90","icon.foreground":"#576daf","input.background":"#15182B","input.foreground":"#86A5FF","inputOption.activeForeground":"#86A5FF","inputValidation.errorBackground":"#dd5073","inputValidation.errorBorder":"#dd5073","inputValidation.errorForeground":"#07090F","list.activeSelectionBackground":"#000000","list.activeSelectionForeground":"#86A5FF","list.dropBackground":"#000000","list.errorForeground":"#dd5074","list.focusBackground":"#01030b","list.focusForeground":"#86A5FF","list.highlightForeground":"#A8BEFF","list.hoverBackground":"#000000","list.hoverForeground":"#A8BEFF","list.inactiveFocusBackground":"#01030b","list.inactiveSelectionBackground":"#000000","list.inactiveSelectionForeground":"#86A5FF","list.warningForeground":"#e6db7f","notificationCenterHeader.background":"#15182B","notifications.background":"#15182B","panel.border":"#15182B","panelTitle.activeBorder":"#86A5FF","panelTitle.activeForeground":"#C7D5FF","panelTitle.inactiveForeground":"#576daf","peekViewTitle.background":"#262E47","quickInput.background":"#0C0E19","scrollbar.shadow":"#01030b","scrollbarSlider.activeBackground":"#576daf","scrollbarSlider.background":"#262E47","scrollbarSlider.hoverBackground":"#576daf","selection.background":"#01030b","sideBar.background":"#07090F","sideBar.border":"#15182B","sideBarSectionHeader.background":"#07090F","sideBarSectionHeader.foreground":"#86A5FF","statusBar.background":"#86A5FF","statusBar.debuggingBackground":"#c778db","statusBar.foreground":"#07090F","tab.activeBackground":"#07090F","tab.activeBorder":"#86A5FF","tab.activeForeground":"#C7D5FF","tab.border":"#07090F","tab.inactiveBackground":"#07090F","tab.inactiveForeground":"#576dafd8","terminal.ansiBrightRed":"#dd5073","terminal.ansiGreen":"#63eb90","terminal.ansiRed":"#dd5073","terminal.foreground":"#A8BEFF","textLink.foreground":"#86A5FF","titleBar.activeBackground":"#07090F","titleBar.activeForeground":"#86A5FF","titleBar.inactiveBackground":"#07090F","tree.indentGuidesStroke":"#576daf","widget.shadow":"#01030b"},displayName:"Aurora X",name:"aurora-x",tokenColors:[{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#546E7A"}},{scope:["variable","string constant.other.placeholder"],settings:{foreground:"#EEFFFF"}},{scope:["constant.other.color"],settings:{foreground:"#ffffff"}},{scope:["invalid","invalid.illegal"],settings:{foreground:"#FF5370"}},{scope:["keyword","storage.type","storage.modifier"],settings:{foreground:"#C792EA"}},{scope:["keyword.control","constant.other.color","punctuation","meta.tag","punctuation.definition.tag","punctuation.separator.inheritance.php","punctuation.definition.tag.html","punctuation.definition.tag.begin.html","punctuation.definition.tag.end.html","punctuation.section.embedded","keyword.other.template","keyword.other.substitution"],settings:{foreground:"#89DDFF"}},{scope:["entity.name.tag","meta.tag.sgml","markup.deleted.git_gutter"],settings:{foreground:"#f07178"}},{scope:["entity.name.function","meta.function-call","variable.function","support.function","keyword.other.special-method"],settings:{foreground:"#82AAFF"}},{scope:["meta.block variable.other"],settings:{foreground:"#f07178"}},{scope:["support.other.variable","string.other.link"],settings:{foreground:"#f07178"}},{scope:["constant.numeric","constant.language","support.constant","constant.character","constant.escape","variable.parameter","keyword.other.unit","keyword.other"],settings:{foreground:"#F78C6C"}},{scope:["string","constant.other.symbol","constant.other.key","entity.other.inherited-class","markup.heading","markup.inserted.git_gutter","meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js"],settings:{foreground:"#C3E88D"}},{scope:["entity.name","support.type","support.class","support.orther.namespace.use.php","meta.use.php","support.other.namespace.php","markup.changed.git_gutter","support.type.sys-types"],settings:{foreground:"#FFCB6B"}},{scope:["support.type"],settings:{foreground:"#B2CCD6"}},{scope:["source.css support.type.property-name","source.sass support.type.property-name","source.scss support.type.property-name","source.less support.type.property-name","source.stylus support.type.property-name","source.postcss support.type.property-name"],settings:{foreground:"#B2CCD6"}},{scope:["entity.name.module.js","variable.import.parameter.js","variable.other.class.js"],settings:{foreground:"#FF5370"}},{scope:["variable.language"],settings:{fontStyle:"italic",foreground:"#FF5370"}},{scope:["entity.name.method.js"],settings:{fontStyle:"italic",foreground:"#82AAFF"}},{scope:["meta.class-method.js entity.name.function.js","variable.function.constructor"],settings:{foreground:"#82AAFF"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#C792EA"}},{scope:["text.html.basic entity.other.attribute-name.html","text.html.basic entity.other.attribute-name"],settings:{fontStyle:"italic",foreground:"#FFCB6B"}},{scope:["entity.other.attribute-name.class"],settings:{foreground:"#FFCB6B"}},{scope:["source.sass keyword.control"],settings:{foreground:"#82AAFF"}},{scope:["markup.inserted"],settings:{foreground:"#C3E88D"}},{scope:["markup.deleted"],settings:{foreground:"#FF5370"}},{scope:["markup.changed"],settings:{foreground:"#C792EA"}},{scope:["string.regexp"],settings:{foreground:"#89DDFF"}},{scope:["constant.character.escape"],settings:{foreground:"#89DDFF"}},{scope:["*url*","*link*","*uri*"],settings:{fontStyle:"underline"}},{scope:["tag.decorator.js entity.name.tag.js","tag.decorator.js punctuation.definition.tag.js"],settings:{fontStyle:"italic",foreground:"#82AAFF"}},{scope:["source.js constant.other.object.key.js string.unquoted.label.js"],settings:{fontStyle:"italic",foreground:"#FF5370"}},{scope:["source.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFCB6B"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F78C6C"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FF5370"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C17E70"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#82AAFF"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f07178"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C3E88D"}},{scope:["text.html.markdown","punctuation.definition.list_item.markdown"],settings:{foreground:"#EEFFFF"}},{scope:["text.html.markdown markup.inline.raw.markdown"],settings:{foreground:"#C792EA"}},{scope:["text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown"],settings:{foreground:"#65737E"}},{scope:["markdown.heading","markup.heading | markup.heading entity.name","markup.heading.markdown punctuation.definition.heading.markdown"],settings:{foreground:"#C3E88D"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["markup.bold","markup.bold string"],settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:["markup.bold markup.italic","markup.italic markup.bold","markup.quote markup.bold","markup.bold markup.italic string","markup.italic markup.bold string","markup.quote markup.bold string"],settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:["markup.underline"],settings:{fontStyle:"underline",foreground:"#F78C6C"}},{scope:["markup.quote punctuation.definition.blockquote.markdown"],settings:{foreground:"#65737E"}},{scope:["markup.quote"],settings:{fontStyle:"italic"}},{scope:["string.other.link.title.markdown"],settings:{foreground:"#82AAFF"}},{scope:["string.other.link.description.title.markdown"],settings:{foreground:"#C792EA"}},{scope:["constant.other.reference.link.markdown"],settings:{foreground:"#FFCB6B"}},{scope:["markup.raw.block"],settings:{foreground:"#C792EA"}},{scope:["markup.raw.block.fenced.markdown"],settings:{foreground:"#00000050"}},{scope:["punctuation.definition.fenced.markdown"],settings:{foreground:"#00000050"}},{scope:["markup.raw.block.fenced.markdown","variable.language.fenced.markdown","punctuation.section.class.end"],settings:{foreground:"#EEFFFF"}},{scope:["variable.language.fenced.markdown"],settings:{foreground:"#65737E"}},{scope:["meta.separator"],settings:{fontStyle:"bold",foreground:"#65737E"}},{scope:["markup.table"],settings:{foreground:"#EEFFFF"}}],type:"dark"});export{t as default}; diff --git a/assets/chunks/awk.i0IPvypD.js b/assets/chunks/awk.i0IPvypD.js new file mode 100644 index 000000000..67ed0d772 --- /dev/null +++ b/assets/chunks/awk.i0IPvypD.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"AWK",fileTypes:["awk"],name:"awk",patterns:[{include:"#comment"},{include:"#procedure"},{include:"#pattern"}],repository:{"builtin-pattern":{match:"\\b(BEGINFILE|BEGIN|ENDFILE|END)\\b",name:"constant.language.awk"},command:{patterns:[{match:"\\b(?:next|print|printf)\\b",name:"keyword.other.command.awk"},{match:"\\b(?:close|getline|delete|system)\\b",name:"keyword.other.command.nawk"},{match:"\\b(?:fflush|nextfile)\\b",name:"keyword.other.command.bell-awk"}]},comment:{match:"#.*",name:"comment.line.number-sign.awk"},constant:{patterns:[{include:"#numeric-constant"},{include:"#string-constant"}]},"escaped-char":{match:'\\\\(?:[\\\\abfnrtv/"]|x[0-9A-Fa-f]{2}|[0-7]{3})',name:"constant.character.escape.awk"},expression:{patterns:[{include:"#command"},{include:"#function"},{include:"#constant"},{include:"#variable"},{include:"#regexp-in-expression"},{include:"#operator"},{include:"#groupings"}]},function:{patterns:[{match:"\\b(?:exp|int|log|sqrt|index|length|split|sprintf|substr)\\b",name:"support.function.awk"},{match:"\\b(?:atan2|cos|rand|sin|srand|gsub|match|sub|tolower|toupper)\\b",name:"support.function.nawk"},{match:"\\b(?:gensub|strftime|systime)\\b",name:"support.function.gawk"}]},"function-definition":{begin:"\\b(function)\\s+(\\w+)(\\()",beginCaptures:{1:{name:"storage.type.function.awk"},2:{name:"entity.name.function.awk"},3:{name:"punctuation.definition.parameters.begin.awk"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.awk"}},patterns:[{match:"\\b(\\w+)\\b",name:"variable.parameter.function.awk"},{match:"\\b(,)\\b",name:"punctuation.separator.parameters.awk"}]},groupings:{patterns:[{match:"\\(",name:"meta.brace.round.awk"},{match:"\\)",name:"meta.brace.round.awk"},{match:"\\,",name:"punctuation.separator.parameters.awk"}]},keyword:{match:"\\b(?:break|continue|do|while|exit|for|if|else|return)\\b",name:"keyword.control.awk"},"numeric-constant":{match:"\\b[0-9]+(?:\\.[0-9]+)?(?:e[+-][0-9]+)?\\b",name:"constant.numeric.awk"},operator:{patterns:[{match:"(!?~|[=<>!]=|[<>])",name:"keyword.operator.comparison.awk"},{match:"\\b(in)\\b",name:"keyword.operator.comparison.awk"},{match:"([+\\-*/%^]=|\\+\\+|--|>>|=)",name:"keyword.operator.assignment.awk"},{match:"(\\|\\||&&|!)",name:"keyword.operator.boolean.awk"},{match:"([+\\-*/%^])",name:"keyword.operator.arithmetic.awk"},{match:"([?:])",name:"keyword.operator.trinary.awk"},{match:"(\\[|\\])",name:"keyword.operator.index.awk"}]},pattern:{patterns:[{include:"#regexp-as-pattern"},{include:"#function-definition"},{include:"#builtin-pattern"},{include:"#expression"}]},procedure:{begin:"\\{",end:"\\}",patterns:[{include:"#comment"},{include:"#procedure"},{include:"#keyword"},{include:"#expression"}]},"regex-as-assignment":{begin:"([^=<>!+\\-*/%^]=)\\s*(/)",beginCaptures:{1:{name:"keyword.operator.assignment.awk"},2:{name:"punctuation.definition.regex.begin.awk"}},contentName:"string.regexp",end:"/",endCaptures:{0:{name:"punctuation.definition.regex.end.awk"}},patterns:[{include:"source.regexp"}]},"regex-as-comparison":{begin:"(!?~)\\s*(/)",beginCaptures:{1:{name:"keyword.operator.comparison.awk"},2:{name:"punctuation.definition.regex.begin.awk"}},contentName:"string.regexp",end:"/",endCaptures:{0:{name:"punctuation.definition.regex.end.awk"}},patterns:[{include:"source.regexp"}]},"regex-as-first-argument":{begin:"(\\()\\s*(/)",beginCaptures:{1:{name:"meta.brace.round.awk"},2:{name:"punctuation.definition.regex.begin.awk"}},contentName:"string.regexp",end:"/",endCaptures:{0:{name:"punctuation.definition.regex.end.awk"}},patterns:[{include:"source.regexp"}]},"regex-as-nth-argument":{begin:"(,)\\s*(/)",beginCaptures:{1:{name:"punctuation.separator.parameters.awk"},2:{name:"punctuation.definition.regex.begin.awk"}},contentName:"string.regexp",end:"/",endCaptures:{0:{name:"punctuation.definition.regex.end.awk"}},patterns:[{include:"source.regexp"}]},"regexp-as-pattern":{begin:"/",beginCaptures:{0:{name:"punctuation.definition.regex.begin.awk"}},contentName:"string.regexp",end:"/",endCaptures:{0:{name:"punctuation.definition.regex.end.awk"}},patterns:[{include:"source.regexp"}]},"regexp-in-expression":{patterns:[{include:"#regex-as-assignment"},{include:"#regex-as-comparison"},{include:"#regex-as-first-argument"},{include:"#regex-as-nth-argument"}]},"string-constant":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.awk"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.awk"}},name:"string.quoted.double.awk",patterns:[{include:"#escaped-char"}]},variable:{patterns:[{match:"\\$[0-9]+",name:"variable.language.awk"},{match:"\\b(?:FILENAME|FS|NF|NR|OFMT|OFS|ORS|RS)\\b",name:"variable.language.awk"},{match:"\\b(?:ARGC|ARGV|CONVFMT|ENVIRON|FNR|RLENGTH|RSTART|SUBSEP)\\b",name:"variable.language.nawk"},{match:"\\b(?:ARGIND|ERRNO|FIELDWIDTHS|IGNORECASE|RT)\\b",name:"variable.language.gawk"}]}},scopeName:"source.awk"});var n=[e];export{n as default}; diff --git a/assets/chunks/ayu-dark.Bn5gmY5k.js b/assets/chunks/ayu-dark.Bn5gmY5k.js new file mode 100644 index 000000000..1908c108c --- /dev/null +++ b/assets/chunks/ayu-dark.Bn5gmY5k.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#e6b450b3","activityBar.background":"#0b0e14","activityBar.border":"#0b0e14","activityBar.foreground":"#565b66cc","activityBar.inactiveForeground":"#565b6699","activityBarBadge.background":"#e6b450","activityBarBadge.foreground":"#0b0e14","badge.background":"#e6b45033","badge.foreground":"#e6b450","button.background":"#e6b450","button.foreground":"#0b0e14","button.hoverBackground":"#e1af4b","button.secondaryBackground":"#565b6633","button.secondaryForeground":"#bfbdb6","button.secondaryHoverBackground":"#565b6680","debugConsoleInputIcon.foreground":"#e6b450","debugExceptionWidget.background":"#0f131a","debugExceptionWidget.border":"#11151c","debugIcon.breakpointDisabledForeground":"#f2966880","debugIcon.breakpointForeground":"#f29668","debugToolBar.background":"#0f131a",descriptionForeground:"#565b66","diffEditor.diagonalFill":"#11151c","diffEditor.insertedTextBackground":"#7fd9621f","diffEditor.removedTextBackground":"#f26d781f","dropdown.background":"#0d1017","dropdown.border":"#565b6645","dropdown.foreground":"#565b66","editor.background":"#0b0e14","editor.findMatchBackground":"#6c5980","editor.findMatchBorder":"#6c5980","editor.findMatchHighlightBackground":"#6c598066","editor.findMatchHighlightBorder":"#5f4c7266","editor.findRangeHighlightBackground":"#6c598040","editor.foreground":"#bfbdb6","editor.inactiveSelectionBackground":"#409fff21","editor.lineHighlightBackground":"#131721","editor.rangeHighlightBackground":"#6c598033","editor.selectionBackground":"#409fff4d","editor.selectionHighlightBackground":"#7fd96226","editor.selectionHighlightBorder":"#7fd96200","editor.snippetTabstopHighlightBackground":"#7fd96233","editor.wordHighlightBackground":"#73b8ff14","editor.wordHighlightBorder":"#73b8ff80","editor.wordHighlightStrongBackground":"#7fd96214","editor.wordHighlightStrongBorder":"#7fd96280","editorBracketMatch.background":"#6c73804d","editorBracketMatch.border":"#6c73804d","editorCodeLens.foreground":"#acb6bf8c","editorCursor.foreground":"#e6b450","editorError.foreground":"#d95757","editorGroup.background":"#0f131a","editorGroup.border":"#11151c","editorGroupHeader.noTabsBackground":"#0b0e14","editorGroupHeader.tabsBackground":"#0b0e14","editorGroupHeader.tabsBorder":"#0b0e14","editorGutter.addedBackground":"#7fd962cc","editorGutter.deletedBackground":"#f26d78cc","editorGutter.modifiedBackground":"#73b8ffcc","editorHoverWidget.background":"#0f131a","editorHoverWidget.border":"#11151c","editorIndentGuide.activeBackground":"#6c738080","editorIndentGuide.background":"#6c738033","editorLineNumber.activeForeground":"#6c7380e6","editorLineNumber.foreground":"#6c738099","editorLink.activeForeground":"#e6b450","editorMarkerNavigation.background":"#0f131a","editorOverviewRuler.addedForeground":"#7fd962","editorOverviewRuler.border":"#11151c","editorOverviewRuler.bracketMatchForeground":"#6c7380b3","editorOverviewRuler.deletedForeground":"#f26d78","editorOverviewRuler.errorForeground":"#d95757","editorOverviewRuler.findMatchForeground":"#6c5980","editorOverviewRuler.modifiedForeground":"#73b8ff","editorOverviewRuler.warningForeground":"#e6b450","editorOverviewRuler.wordHighlightForeground":"#73b8ff66","editorOverviewRuler.wordHighlightStrongForeground":"#7fd96266","editorRuler.foreground":"#6c738033","editorSuggestWidget.background":"#0f131a","editorSuggestWidget.border":"#11151c","editorSuggestWidget.highlightForeground":"#e6b450","editorSuggestWidget.selectedBackground":"#47526640","editorWarning.foreground":"#e6b450","editorWhitespace.foreground":"#6c738099","editorWidget.background":"#0f131a","editorWidget.border":"#11151c",errorForeground:"#d95757","extensionButton.prominentBackground":"#e6b450","extensionButton.prominentForeground":"#0d1017","extensionButton.prominentHoverBackground":"#e1af4b",focusBorder:"#e6b450b3",foreground:"#565b66","gitDecoration.conflictingResourceForeground":"","gitDecoration.deletedResourceForeground":"#f26d78b3","gitDecoration.ignoredResourceForeground":"#565b6680","gitDecoration.modifiedResourceForeground":"#73b8ffb3","gitDecoration.submoduleResourceForeground":"#d2a6ffb3","gitDecoration.untrackedResourceForeground":"#7fd962b3","icon.foreground":"#565b66","input.background":"#0d1017","input.border":"#565b6645","input.foreground":"#bfbdb6","input.placeholderForeground":"#565b6680","inputOption.activeBackground":"#e6b45033","inputOption.activeBorder":"#e6b4504d","inputOption.activeForeground":"#e6b450","inputValidation.errorBackground":"#0d1017","inputValidation.errorBorder":"#d95757","inputValidation.infoBackground":"#0b0e14","inputValidation.infoBorder":"#39bae6","inputValidation.warningBackground":"#0b0e14","inputValidation.warningBorder":"#ffb454","keybindingLabel.background":"#565b661a","keybindingLabel.border":"#bfbdb61a","keybindingLabel.bottomBorder":"#bfbdb61a","keybindingLabel.foreground":"#bfbdb6","list.activeSelectionBackground":"#47526640","list.activeSelectionForeground":"#bfbdb6","list.deemphasizedForeground":"#d95757","list.errorForeground":"#d95757","list.filterMatchBackground":"#5f4c7266","list.filterMatchBorder":"#6c598066","list.focusBackground":"#47526640","list.focusForeground":"#bfbdb6","list.focusOutline":"#47526640","list.highlightForeground":"#e6b450","list.hoverBackground":"#47526640","list.inactiveSelectionBackground":"#47526633","list.inactiveSelectionForeground":"#565b66","list.invalidItemForeground":"#565b664d","listFilterWidget.background":"#0f131a","listFilterWidget.noMatchesOutline":"#d95757","listFilterWidget.outline":"#e6b450","minimap.background":"#0b0e14","minimap.errorHighlight":"#d95757","minimap.findMatchHighlight":"#6c5980","minimap.selectionHighlight":"#409fff4d","minimapGutter.addedBackground":"#7fd962","minimapGutter.deletedBackground":"#f26d78","minimapGutter.modifiedBackground":"#73b8ff","panel.background":"#0b0e14","panel.border":"#11151c","panelTitle.activeBorder":"#e6b450","panelTitle.activeForeground":"#bfbdb6","panelTitle.inactiveForeground":"#565b66","peekView.border":"#47526640","peekViewEditor.background":"#0f131a","peekViewEditor.matchHighlightBackground":"#6c598066","peekViewEditor.matchHighlightBorder":"#5f4c7266","peekViewResult.background":"#0f131a","peekViewResult.fileForeground":"#bfbdb6","peekViewResult.lineForeground":"#565b66","peekViewResult.matchHighlightBackground":"#6c598066","peekViewResult.selectionBackground":"#47526640","peekViewTitle.background":"#47526640","peekViewTitleDescription.foreground":"#565b66","peekViewTitleLabel.foreground":"#bfbdb6","pickerGroup.border":"#11151c","pickerGroup.foreground":"#565b6680","progressBar.background":"#e6b450","scrollbar.shadow":"#11151c00","scrollbarSlider.activeBackground":"#565b66b3","scrollbarSlider.background":"#565b6666","scrollbarSlider.hoverBackground":"#565b6699","selection.background":"#409fff4d","settings.headerForeground":"#bfbdb6","settings.modifiedItemIndicator":"#73b8ff","sideBar.background":"#0b0e14","sideBar.border":"#0b0e14","sideBarSectionHeader.background":"#0b0e14","sideBarSectionHeader.border":"#0b0e14","sideBarSectionHeader.foreground":"#565b66","sideBarTitle.foreground":"#565b66","statusBar.background":"#0b0e14","statusBar.border":"#0b0e14","statusBar.debuggingBackground":"#f29668","statusBar.debuggingForeground":"#0d1017","statusBar.foreground":"#565b66","statusBar.noFolderBackground":"#0f131a","statusBarItem.activeBackground":"#565b6633","statusBarItem.hoverBackground":"#565b6633","statusBarItem.prominentBackground":"#11151c","statusBarItem.prominentHoverBackground":"#00000030","statusBarItem.remoteBackground":"#e6b450","statusBarItem.remoteForeground":"#0d1017","tab.activeBackground":"#0b0e14","tab.activeBorder":"#e6b450","tab.activeForeground":"#bfbdb6","tab.border":"#0b0e14","tab.inactiveBackground":"#0b0e14","tab.inactiveForeground":"#565b66","tab.unfocusedActiveBorder":"#565b66","tab.unfocusedActiveForeground":"#565b66","tab.unfocusedInactiveForeground":"#565b66","terminal.ansiBlack":"#11151c","terminal.ansiBlue":"#53bdfa","terminal.ansiBrightBlack":"#686868","terminal.ansiBrightBlue":"#59c2ff","terminal.ansiBrightCyan":"#95e6cb","terminal.ansiBrightGreen":"#aad94c","terminal.ansiBrightMagenta":"#d2a6ff","terminal.ansiBrightRed":"#f07178","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#ffb454","terminal.ansiCyan":"#90e1c6","terminal.ansiGreen":"#7fd962","terminal.ansiMagenta":"#cda1fa","terminal.ansiRed":"#ea6c73","terminal.ansiWhite":"#c7c7c7","terminal.ansiYellow":"#f9af4f","terminal.background":"#0b0e14","terminal.foreground":"#bfbdb6","textBlockQuote.background":"#0f131a","textLink.activeForeground":"#e6b450","textLink.foreground":"#e6b450","textPreformat.foreground":"#bfbdb6","titleBar.activeBackground":"#0b0e14","titleBar.activeForeground":"#bfbdb6","titleBar.border":"#0b0e14","titleBar.inactiveBackground":"#0b0e14","titleBar.inactiveForeground":"#565b66","tree.indentGuidesStroke":"#6c738080","walkThrough.embeddedEditorBackground":"#0f131a","welcomePage.buttonBackground":"#e6b45066","welcomePage.progress.background":"#131721","welcomePage.tileBackground":"#0b0e14","welcomePage.tileShadow":"#00000080","widget.shadow":"#00000080"},displayName:"Ayu Dark",name:"ayu-dark",semanticHighlighting:!0,semanticTokenColors:{"parameter.label":"#bfbdb6"},tokenColors:[{settings:{background:"#0b0e14",foreground:"#bfbdb6"}},{scope:["comment"],settings:{fontStyle:"italic",foreground:"#acb6bf8c"}},{scope:["string","constant.other.symbol"],settings:{foreground:"#aad94c"}},{scope:["string.regexp","constant.character","constant.other"],settings:{foreground:"#95e6cb"}},{scope:["constant.numeric"],settings:{foreground:"#d2a6ff"}},{scope:["constant.language"],settings:{foreground:"#d2a6ff"}},{scope:["variable","variable.parameter.function-call"],settings:{foreground:"#bfbdb6"}},{scope:["variable.member"],settings:{foreground:"#f07178"}},{scope:["variable.language"],settings:{fontStyle:"italic",foreground:"#39bae6"}},{scope:["storage"],settings:{foreground:"#ff8f40"}},{scope:["keyword"],settings:{foreground:"#ff8f40"}},{scope:["keyword.operator"],settings:{foreground:"#f29668"}},{scope:["punctuation.separator","punctuation.terminator"],settings:{foreground:"#bfbdb6b3"}},{scope:["punctuation.section"],settings:{foreground:"#bfbdb6"}},{scope:["punctuation.accessor"],settings:{foreground:"#f29668"}},{scope:["punctuation.definition.template-expression"],settings:{foreground:"#ff8f40"}},{scope:["punctuation.section.embedded"],settings:{foreground:"#ff8f40"}},{scope:["meta.embedded"],settings:{foreground:"#bfbdb6"}},{scope:["source.java storage.type","source.haskell storage.type","source.c storage.type"],settings:{foreground:"#59c2ff"}},{scope:["entity.other.inherited-class"],settings:{foreground:"#39bae6"}},{scope:["storage.type.function"],settings:{foreground:"#ff8f40"}},{scope:["source.java storage.type.primitive"],settings:{foreground:"#39bae6"}},{scope:["entity.name.function"],settings:{foreground:"#ffb454"}},{scope:["variable.parameter","meta.parameter"],settings:{foreground:"#d2a6ff"}},{scope:["variable.function","variable.annotation","meta.function-call.generic","support.function.go"],settings:{foreground:"#ffb454"}},{scope:["support.function","support.macro"],settings:{foreground:"#f07178"}},{scope:["entity.name.import","entity.name.package"],settings:{foreground:"#aad94c"}},{scope:["entity.name"],settings:{foreground:"#59c2ff"}},{scope:["entity.name.tag","meta.tag.sgml"],settings:{foreground:"#39bae6"}},{scope:["support.class.component"],settings:{foreground:"#59c2ff"}},{scope:["punctuation.definition.tag.end","punctuation.definition.tag.begin","punctuation.definition.tag"],settings:{foreground:"#39bae680"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#ffb454"}},{scope:["support.constant"],settings:{fontStyle:"italic",foreground:"#f29668"}},{scope:["support.type","support.class","source.go storage.type"],settings:{foreground:"#39bae6"}},{scope:["meta.decorator variable.other","meta.decorator punctuation.decorator","storage.type.annotation"],settings:{foreground:"#e6b673"}},{scope:["invalid"],settings:{foreground:"#d95757"}},{scope:["meta.diff","meta.diff.header"],settings:{foreground:"#c594c5"}},{scope:["source.ruby variable.other.readwrite"],settings:{foreground:"#ffb454"}},{scope:["source.css entity.name.tag","source.sass entity.name.tag","source.scss entity.name.tag","source.less entity.name.tag","source.stylus entity.name.tag"],settings:{foreground:"#59c2ff"}},{scope:["source.css support.type","source.sass support.type","source.scss support.type","source.less support.type","source.stylus support.type"],settings:{foreground:"#acb6bf8c"}},{scope:["support.type.property-name"],settings:{fontStyle:"normal",foreground:"#39bae6"}},{scope:["constant.numeric.line-number.find-in-files - match"],settings:{foreground:"#acb6bf8c"}},{scope:["constant.numeric.line-number.match"],settings:{foreground:"#ff8f40"}},{scope:["entity.name.filename.find-in-files"],settings:{foreground:"#aad94c"}},{scope:["message.error"],settings:{foreground:"#d95757"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#aad94c"}},{scope:["markup.underline.link","string.other.link"],settings:{foreground:"#39bae6"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["markup.bold"],settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:["markup.italic markup.bold","markup.bold markup.italic"],settings:{fontStyle:"bold italic"}},{scope:["markup.raw"],settings:{background:"#bfbdb605"}},{scope:["markup.raw.inline"],settings:{background:"#bfbdb60f"}},{scope:["meta.separator"],settings:{background:"#bfbdb60f",fontStyle:"bold",foreground:"#acb6bf8c"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#95e6cb"}},{scope:["markup.list punctuation.definition.list.begin"],settings:{foreground:"#ffb454"}},{scope:["markup.inserted"],settings:{foreground:"#7fd962"}},{scope:["markup.changed"],settings:{foreground:"#73b8ff"}},{scope:["markup.deleted"],settings:{foreground:"#f26d78"}},{scope:["markup.strike"],settings:{foreground:"#e6b673"}},{scope:["markup.table"],settings:{background:"#bfbdb60f",foreground:"#39bae6"}},{scope:["text.html.markdown markup.inline.raw"],settings:{foreground:"#f29668"}},{scope:["text.html.markdown meta.dummy.line-break"],settings:{background:"#acb6bf8c",foreground:"#acb6bf8c"}},{scope:["punctuation.definition.markdown"],settings:{background:"#bfbdb6",foreground:"#acb6bf8c"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/ballerina.T9ysyp6P.js b/assets/chunks/ballerina.T9ysyp6P.js new file mode 100644 index 000000000..de8bab3c8 --- /dev/null +++ b/assets/chunks/ballerina.T9ysyp6P.js @@ -0,0 +1,62 @@ +const e=Object.freeze({displayName:"Ballerina",fileTypes:["bal"],name:"ballerina",patterns:[{include:"#statements"}],repository:{"access-modifier":{patterns:[{match:"(?",beginCaptures:{0:{name:"meta.arrow.ballerina storage.type.function.arrow.ballerina"}},end:",|(?=\\})",patterns:[{include:"#code"}]}]},butExp:{patterns:[{begin:"\\bbut\\b",beginCaptures:{0:{name:"keyword.ballerina"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#butExpBody"},{include:"#comment"}]}]},butExpBody:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina.documentation"}},end:"(?=\\})",endCaptures:{0:{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#parameter"},{include:"#butClause"},{include:"#comment"}]}]},call:{patterns:[{match:"(?:\\')?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()",name:"entity.name.function.ballerina"}]},callableUnitBody:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina"}},end:"(?=\\})",endCaptures:{0:{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#workerDef"},{include:"#service-decl"},{include:"#objectDec"},{include:"#function-defn"},{include:"#forkStatement"},{include:"#code"}]}]},"class-body":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ballerina"}},name:"meta.class.body.ballerina",patterns:[{include:"#comment"},{include:"#mdDocumentation"},{include:"#function-defn"},{include:"#var-expr"},{include:"#variable-initializer"},{include:"#access-modifier"},{include:"#keywords"},{begin:"(?<=:)\\s*",end:"(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))"},{include:"#decl-block"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},"class-defn":{begin:"(\\s+)(class\\b)|^class\\b(?=\\s+|/[/*])",beginCaptures:{0:{name:"storage.type.class.ballerina keyword.other.ballerina"}},end:"(?<=\\})",name:"meta.class.ballerina",patterns:[{include:"#keywords"},{captures:{0:{name:"entity.name.type.class.ballerina"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#class-body"}]},code:{patterns:[{include:"#booleans"},{include:"#matchStatement"},{include:"#butExp"},{include:"#xml"},{include:"#stringTemplate"},{include:"#keywords"},{include:"#strings"},{include:"#comment"},{include:"#mdDocumentation"},{include:"#annotationAttachment"},{include:"#numbers"},{include:"#maps"},{include:"#paranthesised"},{include:"#paranthesisedBracket"},{include:"#regex"}]},comment:{patterns:[{match:"\\/\\/.*",name:"comment.ballerina"}]},constrainType:{patterns:[{begin:"<",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.ballerina"}},end:">",endCaptures:{0:{name:"punctuation.definition.parameters.end.ballerina"}},patterns:[{include:"#comment"},{include:"#constrainType"},{match:"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b",name:"storage.type.ballerina"}]}]},"control-statement":{patterns:[{begin:"(?)",patterns:[{include:"#code"}]}]},expression:{patterns:[{include:"#keywords"},{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#regex"}]},"expression-operators":{patterns:[{match:"\\*=|(?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.ballerina"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.ballerina"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.ballerina"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.ballerina"},{captures:{1:{name:"keyword.operator.logical.ballerina"},2:{name:"keyword.operator.assignment.compound.ballerina"},3:{name:"keyword.operator.arithmetic.ballerina"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.ballerina"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.ballerina"},{match:"\\=",name:"keyword.operator.assignment.ballerina"},{match:"--",name:"keyword.operator.decrement.ballerina"},{match:"\\+\\+",name:"keyword.operator.increment.ballerina"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.ballerina"}]},expressionWithoutIdentifiers:{patterns:[{include:"#xml"},{include:"#string"},{include:"#stringTemplate"},{include:"#comment"},{include:"#object-literal"},{include:"#ternary-expression"},{include:"#expression-operators"},{include:"#literal"},{include:"#paranthesised"},{include:"#regex"}]},"flags-on-off":{name:"meta.flags.regexp.ballerina",patterns:[{begin:"(\\??)([imsx]*)(-?)([imsx]*)(:)",beginCaptures:{1:{name:"punctuation.other.non-capturing-group-begin.regexp.ballerina"},2:{name:"keyword.other.non-capturing-group.flags-on.regexp.ballerina"},3:{name:"punctuation.other.non-capturing-group.off.regexp.ballerina"},4:{name:"keyword.other.non-capturing-group.flags-off.regexp.ballerina"},5:{name:"punctuation.other.non-capturing-group-end.regexp.ballerina"}},end:"()",name:"constant.other.flag.regexp.ballerina",patterns:[{include:"#regexp"},{include:"#template-substitution-element"}]}]},"for-loop":{begin:"(?",beginCaptures:{0:{name:"meta.arrow.ballerina storage.type.function.arrow.ballerina"}},end:"(?=\\;)|(?=\\,)|(?=)(?=\\);)",name:"meta.block.ballerina",patterns:[{include:"#statements"},{include:"#punctuation-comma"}]},{match:"\\*",name:"keyword.generator.asterisk.ballerina"}]},"function-defn":{begin:"(?:(public|private)\\s+)?(function\\b)",beginCaptures:{1:{name:"keyword.other.ballerina"},2:{name:"keyword.other.ballerina"}},end:"(?<=\\;)|(?<=\\})|(?<=\\,)|(?=)(?=\\);)",name:"meta.function.ballerina",patterns:[{match:"\\bexternal\\b",name:"keyword.ballerina"},{include:"#stringTemplate"},{include:"#annotationAttachment"},{include:"#functionReturns"},{include:"#functionName"},{include:"#functionParameters"},{include:"#punctuation-semicolon"},{include:"#function-body"},{include:"#regex"}]},"function-parameters-body":{patterns:[{include:"#comment"},{include:"#numbers"},{include:"#string"},{include:"#annotationAttachment"},{include:"#recordLiteral"},{include:"#keywords"},{include:"#parameter-name"},{include:"#array-literal"},{include:"#variable-initializer"},{include:"#identifiers"},{include:"#regex"},{match:"\\,",name:"punctuation.separator.parameter.ballerina"}]},functionName:{patterns:[{match:"\\bfunction\\b",name:"keyword.other.ballerina"},{include:"#type-primitive"},{include:"#self-literal"},{include:"#string"},{captures:{2:{name:"variable.language.this.ballerina"},3:{name:"keyword.other.ballerina"},4:{name:"support.type.primitive.ballerina"},5:{name:"storage.type.ballerina"},6:{name:"meta.definition.function.ballerina entity.name.function.ballerina"}},match:"\\s+(\\b(self)|\\b(is|new|isolated|null|function|in)\\b|(string|int|boolean|float|byte|decimal|json|xml|anydata)\\b|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))"}]},functionParameters:{begin:"\\(|\\[",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.ballerina"}},end:"\\)|\\]",endCaptures:{0:{name:"punctuation.definition.parameters.end.ballerina"}},name:"meta.parameters.ballerina",patterns:[{include:"#function-parameters-body"}]},functionReturns:{begin:"\\s*(returns)\\s*",beginCaptures:{1:{name:"keyword.other.ballerina"}},end:"(?==>)|(\\=)|(?=\\{)|(\\))|(?=\\;)",endCaptures:{1:{name:"keyword.operator.ballerina"}},name:"meta.type.function.return.ballerina",patterns:[{include:"#comment"},{include:"#string"},{include:"#numbers"},{include:"#keywords"},{include:"#type-primitive"},{captures:{1:{name:"support.type.primitive.ballerina"}},match:"\\s*\\b(var)(?=\\s+|\\[|\\?)"},{match:"\\|",name:"keyword.operator.ballerina"},{match:"\\?",name:"keyword.operator.optional.ballerina"},{include:"#type-annotation"},{include:"#type-tuple"},{include:"#keywords"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ballerina"}]},functionType:{patterns:[{begin:"\\bfunction\\b",beginCaptures:{0:{name:"keyword.ballerina"}},end:"(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))|(?=\\])",patterns:[{include:"#comment"},{include:"#functionTypeParamList"},{include:"#functionTypeReturns"}]}]},functionTypeParamList:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"delimiter.parenthesis"}},end:"\\)",endCaptures:{0:{name:"delimiter.parenthesis"}},patterns:[{match:"public",name:"keyword"},{include:"#annotationAttachment"},{include:"#recordLiteral"},{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#parameterTuple"},{include:"#functionTypeType"},{include:"#comment"}]}]},functionTypeReturns:{patterns:[{begin:"\\breturns\\b",beginCaptures:{0:{name:"keyword"}},end:"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))",patterns:[{include:"#functionTypeReturnsParameter"},{include:"#comment"}]}]},functionTypeReturnsParameter:{patterns:[{begin:"((?=record|object|function)|(?:[_$[:alpha:]][_$[:alnum:]]*))",beginCaptures:{0:{name:"storage.type.ballerina"}},end:"(?=\\,)|(?:\\|)|(?:\\:)|(?==>)|(?=\\))|(?=\\])",patterns:[{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#defaultValue"},{include:"#comment"},{include:"#parameterTuple"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},functionTypeType:{patterns:[{begin:"[_$[:alpha:]][_$[:alnum:]]*",beginCaptures:{0:{name:"storage.type.ballerina"}},end:"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))"}]},identifiers:{patterns:[{captures:{1:{name:"punctuation.accessor.ballerina"},2:{name:"punctuation.accessor.optional.ballerina"},3:{name:"entity.name.function.ballerina"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( +(( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +(( +((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.ballerina"},2:{name:"punctuation.accessor.optional.ballerina"},3:{name:"entity.name.function.ballerina"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()"},{captures:{1:{name:"punctuation.accessor.ballerina"},2:{name:"punctuation.accessor.optional.ballerina"},3:{name:"variable.other.property.ballerina"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{include:"#type-primitive"},{include:"#self-literal"},{match:"\\b(check|foreach|if|checkpanic)\\b",name:"keyword.control.ballerina"},{include:"#call"},{match:"\\b(var)\\b",name:"support.type.primitive.ballerina"},{captures:{1:{name:"variable.other.readwrite.ballerina"},3:{name:"punctuation.accessor.ballerina"},4:{name:"entity.name.function.ballerina"},5:{name:"punctuation.definition.parameters.begin.ballerina"},6:{name:"punctuation.definition.parameters.end.ballerina"}},match:"([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?"},{match:"(\\')([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.property.ballerina"},{include:"#type-annotation"}]},"if-statement":{patterns:[{begin:"(?)",name:"meta.arrow.ballerina storage.type.function.arrow.ballerina"},{match:"(!|%|\\+|\\-|~=|===|==|=|!=|!==|<|>|&|\\||\\?:|\\.\\.\\.|<=|>=|&&|\\|\\||~|>>|>>>)",name:"keyword.operator.ballerina"},{include:"#types"},{include:"#self-literal"},{include:"#type-primitive"}]},literal:{patterns:[{include:"#booleans"},{include:"#numbers"},{include:"#strings"},{include:"#maps"},{include:"#self-literal"},{include:"#array-literal"}]},maps:{patterns:[{begin:"\\{",end:"\\}",patterns:[{include:"#code"}]}]},matchBindingPattern:{patterns:[{begin:"var",beginCaptures:{0:{name:"storage.type.ballerina"}},end:"(?==>)|,",patterns:[{include:"#errorDestructure"},{include:"#code"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.parameter.ballerina"}]}]},matchStatement:{patterns:[{begin:"\\bmatch\\b",beginCaptures:{0:{name:"keyword.control.ballerina"}},end:"\\}",patterns:[{include:"#matchStatementBody"},{include:"#comment"},{include:"#code"}]}]},matchStatementBody:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina.documentation"}},end:"(?=\\})",endCaptures:{0:{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#literal"},{include:"#matchBindingPattern"},{include:"#matchStatementPatternClause"},{include:"#comment"},{include:"#code"}]}]},matchStatementPatternClause:{patterns:[{begin:"=>",beginCaptures:{0:{name:"keyword.ballerina"}},end:"((\\})|;|,)",patterns:[{include:"#callableUnitBody"},{include:"#code"}]}]},mdDocumentation:{begin:"\\#",end:"[\\r\\n]+",name:"comment.mddocs.ballerina",patterns:[{include:"#mdDocumentationReturnParamDescription"},{include:"#mdDocumentationParamDescription"}]},mdDocumentationParamDescription:{patterns:[{begin:"(\\+\\s+)(\\'?[_$[:alpha:]][_$[:alnum:]]*)(\\s*\\-\\s+)",beginCaptures:{1:{name:"keyword.operator.ballerina"},2:{name:"variable.other.readwrite.ballerina"},3:{name:"keyword.operator.ballerina"}},end:"(?=[^#\\r\\n]|(?:# *?\\+))",patterns:[{match:"#.*",name:"comment.mddocs.paramdesc.ballerina"}]}]},mdDocumentationReturnParamDescription:{patterns:[{begin:"(#)(?: *?)(\\+)(?: *)(return)(?: *)(-)?(.*)",beginCaptures:{1:{name:"comment.mddocs.ballerina"},2:{name:"keyword.ballerina"},3:{name:"keyword.ballerina"},4:{name:"keyword.ballerina"},5:{name:"comment.mddocs.returnparamdesc.ballerina"}},end:"(?=[^#\\r\\n]|(?:# *?\\+))",patterns:[{match:"#.*",name:"comment.mddocs.returnparamdesc.ballerina"}]}]},multiType:{patterns:[{match:"(?<=\\|)([_$[:alpha:]][_$[:alnum:]]*)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)",name:"storage.type.ballerina"},{match:"\\|",name:"keyword.operator.ballerina"}]},numbers:{patterns:[{match:"\\b0[xX][\\da-fA-F]+\\b|\\b\\d+(?:\\.(?:\\d+|$))?",name:"constant.numeric.decimal.ballerina"}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ballerina"}},name:"meta.objectliteral.ballerina",patterns:[{include:"#object-member"},{include:"#punctuation-comma"}]},"object-member":{patterns:[{include:"#comment"},{include:"#function-defn"},{include:"#literal"},{include:"#keywords"},{include:"#expression"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.ballerina meta.object-literal.key.ballerina",patterns:[{include:"#comment"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\n*})|(\\s+(as)\\s+))))",name:"meta.object.member.ballerina meta.object-literal.key.ballerina",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?) +)) | +(( +((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.ballerina"},{captures:{0:{name:"meta.object-literal.key.ballerina"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ballerina"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ballerina"}},end:"(?=,|\\})",name:"meta.object.member.ballerina",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.ballerina"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ballerina"},{captures:{1:{name:"keyword.control.as.ballerina"},2:{name:"storage.modifier.ballerina"}},match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?)|(?=\\))|(?=\\])",patterns:[{include:"#parameterWithDescriptor"},{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#defaultValue"},{include:"#comment"},{include:"#parameterTuple"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},"parameter-name":{patterns:[{captures:{1:{name:"support.type.primitive.ballerina"}},match:"\\s*\\b(var)\\s+"},{captures:{2:{name:"keyword.operator.rest.ballerina"},3:{name:"support.type.primitive.ballerina"},4:{name:"keyword.other.ballerina"},5:{name:"constant.language.boolean.ballerina"},6:{name:"keyword.control.flow.ballerina"},7:{name:"storage.type.ballerina"},8:{name:"variable.parameter.ballerina"},9:{name:"variable.parameter.ballerina"},10:{name:"keyword.operator.optional.ballerina"}},match:"(?x)(?:(?)|(?=\\))",patterns:[{include:"#record"},{include:"#objectDec"},{include:"#parameterTupleType"},{include:"#parameterTupleEnd"},{include:"#comment"}]}]},parameterTupleEnd:{patterns:[{begin:"\\]",end:"(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))",patterns:[{include:"#defaultWithParentheses"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},parameterTupleType:{patterns:[{begin:"[_$[:alpha:]][_$[:alnum:]]*",beginCaptures:{0:{name:"storage.type.ballerina"}},end:"(?:\\,)|(?:\\|)|(?=\\])"}]},parameterWithDescriptor:{patterns:[{begin:"\\&",beginCaptures:{0:{name:"keyword.operator.ballerina"}},end:"(?=\\,)|(?=\\|)|(?=\\))",patterns:[{include:"#parameter"}]}]},parameters:{patterns:[{match:"\\s*(return|break|continue|check|checkpanic|panic|trap|from|where)\\b",name:"keyword.control.flow.ballerina"},{match:"\\s*(let|select)\\b",name:"keyword.other.ballerina"},{match:"\\,",name:"punctuation.separator.parameter.ballerina"}]},paranthesised:{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ballerina"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ballerina"}},name:"meta.brace.round.block.ballerina",patterns:[{include:"#self-literal"},{include:"#function-defn"},{include:"#decl-block"},{include:"#comment"},{include:"#string"},{include:"#parameters"},{include:"#annotationAttachment"},{include:"#recordLiteral"},{include:"#stringTemplate"},{include:"#parameter-name"},{include:"#variable-initializer"},{include:"#expression"},{include:"#regex"}]},paranthesisedBracket:{patterns:[{begin:"\\[",end:"\\]",patterns:[{include:"#comment"},{include:"#code"}]}]},"punctuation-accessor":{patterns:[{captures:{1:{name:"punctuation.accessor.ballerina"},2:{name:"punctuation.accessor.optional.ballerina"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"}]},"punctuation-comma":{patterns:[{match:",",name:"punctuation.separator.comma.ballerina"}]},"punctuation-semicolon":{patterns:[{match:";",name:"punctuation.terminator.statement.ballerina"}]},record:{begin:"\\brecord\\b",beginCaptures:{0:{name:"keyword.other.ballerina"}},end:"(?<=\\})",name:"meta.record.ballerina",patterns:[{include:"#recordBody"}]},recordBody:{patterns:[{include:"#decl-block"}]},recordLiteral:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ballerina"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#code"}]}]},regex:{patterns:[{begin:"(\\bre)(\\s*)(`)",beginCaptures:{1:{name:"support.type.primitive.ballerina"},3:{name:"punctuation.definition.regexp.template.begin.ballerina"}},end:"`",endCaptures:{1:{name:"punctuation.definition.regexp.template.end.ballerina"}},name:"regexp.template.ballerina",patterns:[{include:"#template-substitution-element"},{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrn]|\\.",name:"keyword.other.character-class.regexp.ballerina"},{match:"\\\\[^pPu]",name:"constant.character.escape.backslash.regexp"}]},"regex-unicode-properties-general-category":{patterns:[{match:"(Lu|Ll|Lt|Lm|Lo|L|Mn|Mc|Me|M|Nd|Nl|No|N|Pc|Pd|Ps|Pe|Pi|Pf|Po|P|Sm|Sc|Sk|So|S|Zs|Zl|Zp|Z|Cf|Cc|Cn|Co|C)",name:"constant.other.unicode-property-general-category.regexp.ballerina"}]},"regex-unicode-property-key":{patterns:[{begin:"(sc=|gc=)",beginCaptures:{1:{name:"keyword.other.unicode-property-key.regexp.ballerina"}},end:"()",endCaptures:{1:{name:"punctuation.other.unicode-property.end.regexp.ballerina"}},name:"keyword.other.unicode-property-key.regexp.ballerina",patterns:[{include:"#regex-unicode-properties-general-category"}]}]},regexp:{patterns:[{match:"\\^|\\$",name:"keyword.control.assertion.regexp.ballerina"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp.ballerina"},{match:"\\|",name:"keyword.operator.or.regexp.ballerina"},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.group.regexp.ballerina"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.regexp.ballerina"}},name:"meta.group.assertion.regexp.ballerina",patterns:[{include:"#template-substitution-element"},{include:"#regexp"},{include:"#flags-on-off"},{include:"#unicode-property-escape"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.start.regexp.ballerina"},2:{name:"keyword.operator.negation.regexp.ballerina"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.end.regexp.ballerina"}},name:"constant.other.character-class.set.regexp.ballerina",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.escape.backslash.regexp"},3:{name:"constant.character.numeric.regexp"},4:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\[^pPu]))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\[^pPu]))",name:"constant.other.character-class.range.regexp.ballerina"},{include:"#regex-character-class"},{include:"#unicode-values"},{include:"#unicode-property-escape"}]},{include:"#template-substitution-element"},{include:"#regex-character-class"},{include:"#unicode-values"},{include:"#unicode-property-escape"}]},"self-literal":{patterns:[{captures:{1:{name:"variable.language.this.ballerina"},2:{name:"punctuation.accessor.ballerina"},3:{name:"entity.name.function.ballerina"}},match:"(\\bself\\b)\\s*(.)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()"},{match:"(?\\=>]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))(\\?)?",name:"meta.type.annotation.ballerina",patterns:[{include:"#booleans"},{include:"#stringTemplate"},{include:"#regex"},{include:"#self-literal"},{include:"#xml"},{include:"#call"},{captures:{1:{name:"keyword.other.ballerina"},2:{name:"constant.language.boolean.ballerina"},3:{name:"keyword.control.ballerina"},4:{name:"storage.type.ballerina"},5:{name:"support.type.primitive.ballerina"},6:{name:"variable.other.readwrite.ballerina"},8:{name:"punctuation.accessor.ballerina"},9:{name:"entity.name.function.ballerina"},10:{name:"punctuation.definition.parameters.begin.ballerina"},11:{name:"punctuation.definition.parameters.end.ballerina"}},match:"\\b(is|new|isolated|null|function|in)\\b|\\b(true|false)\\b|\\b(check|foreach|if|checkpanic)\\b|\\b(readonly|error|map)\\b|\\b(var)\\b|([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?"},{match:"\\?",name:"keyword.operator.optional.ballerina"},{include:"#multiType"},{include:"#type"},{include:"#paranthesised"}]}]},"type-primitive":{patterns:[{match:"(?|\\|)",beginCaptures:{2:{name:"support.type.primitive.ballerina"},3:{name:"storage.type.ballerina"},4:{name:"meta.definition.variable.ballerina variable.other.readwrite.ballerina"}},end:"(?=$|^|[;,=}])",endCaptures:{0:{name:"punctuation.terminator.statement.ballerina"}},name:"meta.var-single-variable.expr.ballerina",patterns:[{include:"#call"},{include:"#self-literal"},{include:"#if-statement"},{include:"#string"},{include:"#numbers"},{include:"#keywords"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s+(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.ballerina variable.other.readwrite.ballerina"},2:{name:"keyword.operator.definiteassignment.ballerina"}},end:"(?=$|^|[;,=}]|((?)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.assignment.ballerina"}},end:"(?=$|[,);}\\]])",patterns:[{match:"(\\')([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.property.ballerina"},{include:"#xml"},{include:"#function-defn"},{include:"#expression"},{include:"#punctuation-accessor"},{include:"#regex"}]},{begin:"(?)",beginCaptures:{1:{name:"keyword.operator.assignment.ballerina"}},end:"(?=[,);}\\]]|((?",endCaptures:{0:{name:"comment.block.xml.ballerina"}},name:"comment.block.xml.ballerina"}]},xmlDoubleQuotedString:{patterns:[{begin:'\\"',beginCaptures:{0:{name:"string.begin.ballerina"}},end:'\\"',endCaptures:{0:{name:"string.end.ballerina"}},patterns:[{match:"\\\\.",name:"constant.character.escape.ballerina"},{match:".",name:"string"}]}]},xmlSingleQuotedString:{patterns:[{begin:"\\'",beginCaptures:{0:{name:"string.begin.ballerina"}},end:"\\'",endCaptures:{0:{name:"string.end.ballerina"}},patterns:[{match:"\\\\.",name:"constant.character.escape.ballerina"},{match:".",name:"string"}]}]},xmlTag:{patterns:[{begin:"(<\\/?\\??)\\s*([-_a-zA-Z0-9]+)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.xml.ballerina"},2:{name:"entity.name.tag.xml.ballerina"}},end:"\\??\\/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.xml.ballerina"}},patterns:[{include:"#xmlSingleQuotedString"},{include:"#xmlDoubleQuotedString"},{match:"xmlns",name:"keyword.other.ballerina"},{match:"([a-zA-Z0-9-]+)",name:"entity.other.attribute-name.xml.ballerina"}]}]}},scopeName:"source.ballerina"});var n=[e];export{n as default}; diff --git a/assets/chunks/bat.BPiaQZfK.js b/assets/chunks/bat.BPiaQZfK.js new file mode 100644 index 000000000..af518c9e1 --- /dev/null +++ b/assets/chunks/bat.BPiaQZfK.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Batch File",injections:{"L:meta.block.repeat.batchfile":{patterns:[{include:"#repeatParameter"}]}},name:"bat",patterns:[{include:"#commands"},{include:"#comments"},{include:"#constants"},{include:"#controls"},{include:"#escaped_characters"},{include:"#labels"},{include:"#numbers"},{include:"#operators"},{include:"#parens"},{include:"#strings"},{include:"#variables"}],repository:{command_set:{patterns:[{begin:"(?<=^|[\\s@])(?i:SET)(?=$|\\s)",beginCaptures:{0:{name:"keyword.command.batchfile"}},end:"(?=$\\n|[&|><)])",patterns:[{include:"#command_set_inside"}]}]},command_set_group:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.group.begin.batchfile"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.batchfile"}},patterns:[{include:"#command_set_inside_arithmetic"}]}]},command_set_inside:{patterns:[{include:"#escaped_characters"},{include:"#variables"},{include:"#numbers"},{include:"#parens"},{include:"#command_set_strings"},{include:"#strings"},{begin:"([^ ][^=]*)(=)",beginCaptures:{1:{name:"variable.other.readwrite.batchfile"},2:{name:"keyword.operator.assignment.batchfile"}},end:"(?=$\\n|[&|><)])",patterns:[{include:"#escaped_characters"},{include:"#variables"},{include:"#numbers"},{include:"#parens"},{include:"#strings"}]},{begin:"\\s+/[aA]\\s+",end:"(?=$\\n|[&|><)])",name:"meta.expression.set.batchfile",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.batchfile"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.batchfile"}},name:"string.quoted.double.batchfile",patterns:[{include:"#command_set_inside_arithmetic"},{include:"#command_set_group"},{include:"#variables"}]},{include:"#command_set_inside_arithmetic"},{include:"#command_set_group"}]},{begin:"\\s+/[pP]\\s+",end:"(?=$\\n|[&|><)])",patterns:[{include:"#command_set_strings"},{begin:"([^ ][^=]*)(=)",beginCaptures:{1:{name:"variable.other.readwrite.batchfile"},2:{name:"keyword.operator.assignment.batchfile"}},end:"(?=$\\n|[&|><)])",name:"meta.prompt.set.batchfile",patterns:[{include:"#strings"}]}]}]},command_set_inside_arithmetic:{patterns:[{include:"#command_set_operators"},{include:"#numbers"},{match:",",name:"punctuation.separator.batchfile"}]},command_set_operators:{patterns:[{captures:{1:{name:"variable.other.readwrite.batchfile"},2:{name:"keyword.operator.assignment.augmented.batchfile"}},match:"([^ ]*)(\\+\\=|\\-\\=|\\*\\=|\\/\\=|%%\\=|&\\=|\\|\\=|\\^\\=|<<\\=|>>\\=)"},{match:"\\+|\\-|/|\\*|%%|\\||&|\\^|<<|>>|~",name:"keyword.operator.arithmetic.batchfile"},{match:"!",name:"keyword.operator.logical.batchfile"},{captures:{1:{name:"variable.other.readwrite.batchfile"},2:{name:"keyword.operator.assignment.batchfile"}},match:"([^ =]*)(=)"}]},command_set_strings:{patterns:[{begin:'(")\\s*([^ ][^=]*)(=)',beginCaptures:{1:{name:"punctuation.definition.string.begin.batchfile"},2:{name:"variable.other.readwrite.batchfile"},3:{name:"keyword.operator.assignment.batchfile"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.batchfile"}},name:"string.quoted.double.batchfile",patterns:[{include:"#variables"},{include:"#numbers"},{include:"#escaped_characters"}]}]},commands:{patterns:[{match:"(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scp|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|sftp|shadow|shift|showmount|shutdown|sort|ssh|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|wmic|wscript|wsl|xcopy)(?=$|\\s)",name:"keyword.command.batchfile"},{begin:"(?i)(?<=^|[\\s@])(echo)(?:(?=$|\\.|:)|\\s+(?:(on|off)(?=\\s*$))?)",beginCaptures:{1:{name:"keyword.command.batchfile"},2:{name:"keyword.other.special-method.batchfile"}},end:"(?=$\\n|[&|><)])",patterns:[{include:"#escaped_characters"},{include:"#variables"},{include:"#numbers"},{include:"#strings"}]},{captures:{1:{name:"keyword.command.batchfile"},2:{name:"keyword.other.special-method.batchfile"}},match:"(?i)(?<=^|[\\s@])(setlocal)(?:\\s*$|\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\s*$))"},{include:"#command_set"}]},comments:{patterns:[{begin:"(?:^|(&))\\s*(?=((?::[+=,;: ])))",beginCaptures:{1:{name:"keyword.operator.conditional.batchfile"}},end:"\\n",patterns:[{begin:"((?::[+=,;: ]))",beginCaptures:{1:{name:"punctuation.definition.comment.batchfile"}},end:"(?=\\n)",name:"comment.line.colon.batchfile"}]},{begin:"(?<=^|[\\s@])(?i)(REM)(\\.)",beginCaptures:{1:{name:"keyword.command.rem.batchfile"},2:{name:"punctuation.separator.batchfile"}},end:"(?=$\\n|[&|><)])",name:"comment.line.rem.batchfile"},{begin:"(?<=^|[\\s@])(?i:rem)\\b",beginCaptures:{0:{name:"keyword.command.rem.batchfile"}},end:"\\n",name:"comment.line.rem.batchfile",patterns:[{match:"[><|]",name:"invalid.illegal.unexpected-character.batchfile"}]}]},constants:{patterns:[{match:"\\b(?i:NUL)\\b",name:"constant.language.batchfile"}]},controls:{patterns:[{match:"(?i)(?<=^|\\s)(?:call|exit(?=$|\\s)|goto(?=$|\\s|:))",name:"keyword.control.statement.batchfile"},{captures:{1:{name:"keyword.control.conditional.batchfile"},2:{name:"keyword.operator.logical.batchfile"},3:{name:"keyword.other.special-method.batchfile"}},match:"(?<=^|\\s)(?i)(if)\\s+(?:(not)\\s+)?(exist|defined|errorlevel|cmdextversion)(?=\\s)"},{match:"(?<=^|\\s)(?i)(?:if|else)(?=$|\\s)",name:"keyword.control.conditional.batchfile"},{begin:"(?<=^|[\\s(&^])(?i)for(?=\\s)",beginCaptures:{0:{name:"keyword.control.repeat.batchfile"}},end:"\\n",name:"meta.block.repeat.batchfile",patterns:[{begin:"(?<=[\\s^])(?i)in(?=\\s)",beginCaptures:{0:{name:"keyword.control.repeat.in.batchfile"}},end:"(?<=[\\s)^])(?i)do(?=\\s)|\\n",endCaptures:{0:{name:"keyword.control.repeat.do.batchfile"}},patterns:[{include:"$self"}]},{include:"$self"}]}]},escaped_characters:{patterns:[{match:"%%|\\^\\^!|\\^(?=.)|\\^\\n",name:"constant.character.escape.batchfile"}]},labels:{patterns:[{captures:{1:{name:"punctuation.separator.batchfile"},2:{name:"keyword.other.special-method.batchfile"}},match:"(?i)(?:^\\s*|(?<=call|goto)\\s*)(:)([^+=,;:\\s]\\S*)"}]},numbers:{patterns:[{match:"(?<=^|\\s|=)(0[xX][0-9A-Fa-f]*|[+-]?\\d+)(?=$|\\s|<|>)",name:"constant.numeric.batchfile"}]},operators:{patterns:[{match:"@(?=\\S)",name:"keyword.operator.at.batchfile"},{match:"(?<=\\s)(?i:EQU|NEQ|LSS|LEQ|GTR|GEQ)(?=\\s)|==",name:"keyword.operator.comparison.batchfile"},{match:"(?<=\\s)(?i)(NOT)(?=\\s)",name:"keyword.operator.logical.batchfile"},{match:"(?[&>]?",name:"keyword.operator.redirection.batchfile"}]},parens:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.group.begin.batchfile"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.batchfile"}},name:"meta.group.batchfile",patterns:[{match:",|;",name:"punctuation.separator.batchfile"},{include:"$self"}]}]},repeatParameter:{patterns:[{captures:{1:{name:"punctuation.definition.variable.batchfile"}},match:"(%%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?[a-zA-Z])",name:"variable.parameter.repeat.batchfile"}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.batchfile"}},end:'(")|(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.batchfile"},2:{name:"invalid.illegal.newline.batchfile"}},name:"string.quoted.double.batchfile",patterns:[{match:"%%",name:"constant.character.escape.batchfile"},{include:"#variables"}]}]},variable:{patterns:[{begin:"%(?=[^%]+%)",beginCaptures:{0:{name:"punctuation.definition.variable.begin.batchfile"}},end:"(%)|\\n",endCaptures:{1:{name:"punctuation.definition.variable.end.batchfile"}},name:"variable.other.readwrite.batchfile",patterns:[{begin:":~",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=%|\\n)",name:"meta.variable.substring.batchfile",patterns:[{include:"#variable_substring"}]},{begin:":",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=%|\\n)",name:"meta.variable.substitution.batchfile",patterns:[{include:"#variable_replace"},{begin:"=",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=%|\\n)",patterns:[{include:"#variable_delayed_expansion"},{match:"[^%]+",name:"string.unquoted.batchfile"}]}]}]}]},variable_delayed_expansion:{patterns:[{begin:"!(?=[^!]+!)",beginCaptures:{0:{name:"punctuation.definition.variable.begin.batchfile"}},end:"(!)|\\n",endCaptures:{1:{name:"punctuation.definition.variable.end.batchfile"}},name:"variable.other.readwrite.batchfile",patterns:[{begin:":~",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=!|\\n)",name:"meta.variable.substring.batchfile",patterns:[{include:"#variable_substring"}]},{begin:":",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=!|\\n)",name:"meta.variable.substitution.batchfile",patterns:[{include:"#escaped_characters"},{include:"#variable_replace"},{include:"#variable"},{begin:"=",beginCaptures:{0:{name:"punctuation.separator.batchfile"}},end:"(?=!|\\n)",patterns:[{include:"#variable"},{match:"[^!]+",name:"string.unquoted.batchfile"}]}]}]}]},variable_replace:{patterns:[{match:"[^=%!\\n]+",name:"string.unquoted.batchfile"}]},variable_substring:{patterns:[{captures:{1:{name:"constant.numeric.batchfile"},2:{name:"punctuation.separator.batchfile"},3:{name:"constant.numeric.batchfile"}},match:"([+-]?\\d+)(?:(,)([+-]?\\d+))?"}]},variables:{patterns:[{captures:{1:{name:"punctuation.definition.variable.batchfile"}},match:"(%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?\\d|\\*)",name:"variable.parameter.batchfile"},{include:"#variable"},{include:"#variable_delayed_expansion"}]}},scopeName:"source.batchfile",aliases:["batch"]});var t=[e];export{t as default}; diff --git a/assets/chunks/beancount.Urb1RsFe.js b/assets/chunks/beancount.Urb1RsFe.js new file mode 100644 index 000000000..f32aa6c8f --- /dev/null +++ b/assets/chunks/beancount.Urb1RsFe.js @@ -0,0 +1 @@ +const n=Object.freeze({displayName:"Beancount",fileTypes:["beancount"],name:"beancount",patterns:[{comment:"Comments",match:";.*",name:"comment.line.beancount"},{begin:"^\\s*(poptag|pushtag)\\s+(#)([A-Za-z0-9\\-_/.]+)",beginCaptures:{1:{name:"support.function.beancount"},2:{name:"keyword.operator.tag.beancount"},3:{name:"entity.name.tag.beancount"}},comment:"Tag directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.tag.beancount",patterns:[{include:"#comments"},{include:"#illegal"}]},{begin:'^\\s*(include)\\s+(\\".*\\")',beginCaptures:{1:{name:"support.function.beancount"},2:{name:"string.quoted.double.beancount"}},comment:"Include directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.include.beancount",patterns:[{include:"#comments"},{include:"#illegal"}]},{begin:'^\\s*(option)\\s+(\\".*\\")\\s+(\\".*\\")',beginCaptures:{1:{name:"support.function.beancount"},2:{name:"support.variable.beancount"},3:{name:"string.quoted.double.beancount"}},comment:"Option directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.option.beancount",patterns:[{include:"#comments"},{include:"#illegal"}]},{begin:'^\\s*(plugin)\\s*("(.*?)")\\s*(".*?")?',beginCaptures:{1:{name:"support.function.beancount"},2:{name:"string.quoted.double.beancount"},3:{name:"entity.name.function.beancount"},4:{name:"string.quoted.double.beancount"}},comment:"Plugin directive",end:"(?=(^\\s*$|^\\S))",name:"keyword.operator.directive.beancount",patterns:[{include:"#comments"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s+(open|close|pad)\\b",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.beancount"}},comment:"Open/Close/Pad directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#account"},{include:"#commodity"},{match:"\\,",name:"punctuation.separator.beancount"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s+(custom)\\b",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.beancount"}},comment:"Custom directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#string"},{include:"#bool"},{include:"#amount"},{include:"#number"},{include:"#date"},{include:"#account"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(event)",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"}},comment:"Event directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#string"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(commodity)",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"}},comment:"Commodity directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#commodity"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(note|document)",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"}},comment:"Note/Document directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#account"},{include:"#string"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(price)",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"}},comment:"Price directives",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#commodity"},{include:"#amount"},{include:"#illegal"}]},{begin:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(balance)",beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"}},comment:"Balance directives",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.dated.beancount",patterns:[{include:"#comments"},{include:"#meta"},{include:"#account"},{include:"#amount"},{include:"#illegal"}]},{begin:'([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s*(txn|[*!&#?%PSTCURM])\\s*(".*?")?\\s*(".*?")?',beginCaptures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"},6:{name:"support.function.directive.beancount"},7:{name:"string.quoted.tiers.beancount"},8:{name:"string.quoted.narration.beancount"}},comment:"Transaction directive",end:"(?=(^\\s*$|^\\S))",name:"meta.directive.transaction.beancount",patterns:[{include:"#comments"},{include:"#posting"},{include:"#meta"},{include:"#tag"},{include:"#link"},{include:"#illegal"}]}],repository:{account:{begin:"([A-Z][a-z]+)(:)",beginCaptures:{1:{name:"variable.language.beancount"},2:{name:"punctuation.separator.beancount"}},end:"\\s",name:"meta.account.beancount",patterns:[{begin:"(\\S+)([:]?)",beginCaptures:{1:{name:"variable.other.account.beancount"},2:{name:"punctuation.separator.beancount"}},comment:"Sub accounts",end:"([:]?)|(\\s)",patterns:[{include:"$self"},{include:"#illegal"}]}]},amount:{captures:{1:{name:"keyword.operator.modifier.beancount"},2:{name:"constant.numeric.currency.beancount"},3:{name:"entity.name.type.commodity.beancount"}},match:"([\\-|\\+]?)(\\d+(?:,\\d{3})*(?:\\.\\d*)?)\\s*([A-Z][A-Z0-9\\'\\.\\_\\-]{0,22}[A-Z0-9])",name:"meta.amount.beancount"},bool:{captures:{0:{name:"constant.language.bool.beancount"},2:{name:"constant.numeric.currency.beancount"},3:{name:"entity.name.type.commodity.beancount"}},match:"TRUE|FALSE"},comments:{captures:{1:{name:"comment.line.beancount"}},match:"(;.*)$"},commodity:{match:"([A-Z][A-Z0-9\\'\\.\\_\\-]{0,22}[A-Z0-9])",name:"entity.name.type.commodity.beancount"},cost:{begin:"\\{\\{?",beginCaptures:{0:{name:"keyword.operator.assignment.beancount"}},end:"\\}\\}?",endCaptures:{0:{name:"keyword.operator.assignment.beancount"}},name:"meta.cost.beancount",patterns:[{include:"#amount"},{include:"#date"},{match:"\\,",name:"punctuation.separator.beancount"},{include:"#illegal"}]},date:{captures:{1:{name:"constant.numeric.date.year.beancount"},2:{name:"punctuation.separator.beancount"},3:{name:"constant.numeric.date.month.beancount"},4:{name:"punctuation.separator.beancount"},5:{name:"constant.numeric.date.day.beancount"}},match:"([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})",name:"meta.date.beancount"},flag:{match:"(?<=\\s)([*!&#?%PSTCURM])(?=\\s+)",name:"keyword.other.beancount"},illegal:{match:"[^\\s]",name:"invalid.illegal.unrecognized.beancount"},link:{captures:{1:{name:"keyword.operator.link.beancount"},2:{name:"markup.underline.link.beancount"}},match:"(\\^)([A-Za-z0-9\\-_/.]+)"},meta:{begin:"^\\s*([a-z][A-Za-z0-9\\-_]+)([:])",beginCaptures:{1:{name:"keyword.operator.directive.beancount"},2:{name:"punctuation.separator.beancount"}},end:"\\n",name:"meta.meta.beancount",patterns:[{include:"#string"},{include:"#account"},{include:"#bool"},{include:"#commodity"},{include:"#date"},{include:"#tag"},{include:"#amount"},{include:"#number"},{include:"#comments"},{include:"#illegal"}]},number:{captures:{1:{name:"keyword.operator.modifier.beancount"},2:{name:"constant.numeric.currency.beancount"}},match:"([\\-|\\+]?)(\\d+(?:,\\d{3})*(?:\\.\\d*)?)"},posting:{begin:"^\\s+(?=([A-Z\\!]))",end:"(?=(^\\s*$|^\\S|^\\s*[A-Z]))",name:"meta.posting.beancount",patterns:[{include:"#meta"},{include:"#comments"},{include:"#flag"},{include:"#account"},{include:"#amount"},{include:"#cost"},{include:"#date"},{include:"#price"},{include:"#illegal"}]},price:{begin:"\\@\\@?",beginCaptures:{0:{name:"keyword.operator.assignment.beancount"}},end:"(?=(;|\\n))",name:"meta.price.beancount",patterns:[{include:"#amount"},{include:"#illegal"}]},string:{begin:'\\"',end:'\\"',name:"string.quoted.double.beancount",patterns:[{match:"\\\\.",name:"constant.character.escape.beancount"}]},tag:{captures:{1:{name:"keyword.operator.tag.beancount"},2:{name:"entity.name.tag.beancount"}},match:"(#)([A-Za-z0-9\\-_/.]+)"}},scopeName:"text.beancount"});var e=[n];export{e as default}; diff --git a/assets/chunks/berry.CxrokwfH.js b/assets/chunks/berry.CxrokwfH.js new file mode 100644 index 000000000..f3db71616 --- /dev/null +++ b/assets/chunks/berry.CxrokwfH.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Berry",name:"berry",patterns:[{include:"#controls"},{include:"#strings"},{include:"#comment-block"},{include:"#comments"},{include:"#keywords"},{include:"#function"},{include:"#member"},{include:"#identifier"},{include:"#number"},{include:"#operator"}],repository:{"comment-block":{begin:"\\#\\-",end:"\\-#",name:"comment.berry",patterns:[{}]},comments:{begin:"\\#",end:"\\n",name:"comment.line.berry",patterns:[{}]},controls:{patterns:[{match:"\\b(if|elif|else|for|while|do|end|break|continue|return|try|except|raise)\\b",name:"keyword.control.berry"}]},function:{patterns:[{match:"\\b([a-zA-Z_][a-zA-Z0-9_]*(?=\\s*\\())",name:"entity.name.function.berry"}]},identifier:{patterns:[{match:"\\b[_A-Za-z]\\w+\\b",name:"identifier.berry"}]},keywords:{patterns:[{match:"\\b(var|static|def|class|true|false|nil|self|super|import|as|_class)\\b",name:"keyword.berry"}]},member:{patterns:[{captures:{0:{name:"entity.other.attribute-name.berry"}},match:"\\.([a-zA-Z_][a-zA-Z0-9_]*)"}]},number:{patterns:[{match:"0x[a-fA-F0-9]+|\\d+|(\\d+\\.?|\\.\\d)\\d*([eE][+-]?\\d+)?",name:"constant.numeric.berry"}]},operator:{patterns:[{match:"\\(|\\)|\\[|\\]|\\.|-|\\!|~|\\*|/|%|\\+|&|\\^|\\||<|>|=|:",name:"keyword.operator.berry"}]},strings:{patterns:[{begin:`("|')`,end:"\\1",name:"string.quoted.double.berry",patterns:[{match:`(\\\\x[\\h]{2})|(\\\\[0-7]{3})|(\\\\\\\\)|(\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)`,name:"constant.character.escape.berry"}]},{begin:`f("|')`,end:"\\1",name:"string.quoted.other.berry",patterns:[{match:`(\\\\x[\\h]{2})|(\\\\[0-7]{3})|(\\\\\\\\)|(\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)`,name:"constant.character.escape.berry"},{match:"\\{\\{[^\\}]*\\}\\}",name:"string.quoted.other.berry"},{begin:"\\{",end:"\\}",name:"keyword.other.unit.berry",patterns:[{include:"#keywords"},{include:"#numbers"},{include:"#identifier"},{include:"#operator"},{include:"#member"},{include:"#function"}]}]}]}},scopeName:"source.berry",aliases:["be"]});var r=[e];export{r as default}; diff --git a/assets/chunks/bibtex.BaedD2tq.js b/assets/chunks/bibtex.BaedD2tq.js new file mode 100644 index 000000000..0ecd773e5 --- /dev/null +++ b/assets/chunks/bibtex.BaedD2tq.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"BibTeX",name:"bibtex",patterns:[{captures:{0:{name:"punctuation.definition.comment.bibtex"}},match:"@(?i:comment)(?=[\\s{(])",name:"comment.block.at-sign.bibtex"},{begin:"((@)(?i:preamble))\\s*(\\{)\\s*",beginCaptures:{1:{name:"keyword.other.preamble.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.preamble.begin.bibtex"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.preamble.end.bibtex"}},name:"meta.preamble.braces.bibtex",patterns:[{include:"#field_value"}]},{begin:"((@)(?i:preamble))\\s*(\\()\\s*",beginCaptures:{1:{name:"keyword.other.preamble.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.preamble.begin.bibtex"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.preamble.end.bibtex"}},name:"meta.preamble.parenthesis.bibtex",patterns:[{include:"#field_value"}]},{begin:"((@)(?i:string))\\s*(\\{)\\s*([a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)",beginCaptures:{1:{name:"keyword.other.string-constant.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.string-constant.begin.bibtex"},4:{name:"variable.other.bibtex"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.string-constant.end.bibtex"}},name:"meta.string-constant.braces.bibtex",patterns:[{include:"#field_value"}]},{begin:"((@)(?i:string))\\s*(\\()\\s*([a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)",beginCaptures:{1:{name:"keyword.other.string-constant.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.string-constant.begin.bibtex"},4:{name:"variable.other.bibtex"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.string-constant.end.bibtex"}},name:"meta.string-constant.parenthesis.bibtex",patterns:[{include:"#field_value"}]},{begin:"((@)[a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)\\s*(\\{)\\s*([^\\s,}]*)",beginCaptures:{1:{name:"keyword.other.entry-type.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.entry.begin.bibtex"},4:{name:"entity.name.type.entry-key.bibtex"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.entry.end.bibtex"}},name:"meta.entry.braces.bibtex",patterns:[{begin:"([a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)\\s*(\\=)",beginCaptures:{1:{name:"support.function.key.bibtex"},2:{name:"punctuation.separator.key-value.bibtex"}},end:"(?=[,}])",name:"meta.key-assignment.bibtex",patterns:[{include:"#field_value"}]}]},{begin:"((@)[a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)\\s*(\\()\\s*([^\\s,]*)",beginCaptures:{1:{name:"keyword.other.entry-type.bibtex"},2:{name:"punctuation.definition.keyword.bibtex"},3:{name:"punctuation.section.entry.begin.bibtex"},4:{name:"entity.name.type.entry-key.bibtex"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.entry.end.bibtex"}},name:"meta.entry.parenthesis.bibtex",patterns:[{begin:"([a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*)\\s*(\\=)",beginCaptures:{1:{name:"support.function.key.bibtex"},2:{name:"punctuation.separator.key-value.bibtex"}},end:"(?=[,)])",name:"meta.key-assignment.bibtex",patterns:[{include:"#field_value"}]}]},{begin:"[^@\\n]",end:"(?=@)",name:"comment.block.bibtex"}],repository:{field_value:{patterns:[{include:"#string_content"},{include:"#integer"},{include:"#string_var"},{match:"#",name:"keyword.operator.bibtex"}]},integer:{captures:{1:{name:"constant.numeric.bibtex"}},match:"\\s*(\\d+)\\s*"},nested_braces:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.group.begin.bibtex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.group.end.bibtex"}},patterns:[{include:"#nested_braces"}]},string_content:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.bibtex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.bibtex"}},patterns:[{include:"#nested_braces"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.bibtex"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.bibtex"}},patterns:[{include:"#nested_braces"}]}]},string_var:{captures:{0:{name:"support.variable.bibtex"}},match:"[a-zA-Z!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~][a-zA-Z0-9!$&*+\\-./:;<>?@\\[\\\\\\]^_`|~]*"}},scopeName:"text.bibtex"});var n=[e];export{n as default}; diff --git a/assets/chunks/bicep.3ghuYFLd.js b/assets/chunks/bicep.3ghuYFLd.js new file mode 100644 index 000000000..4a22898c5 --- /dev/null +++ b/assets/chunks/bicep.3ghuYFLd.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Bicep",fileTypes:[".bicep"],name:"bicep",patterns:[{include:"#expression"},{include:"#comments"}],repository:{"array-literal":{begin:"\\[(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\bfor\\b)",end:"]",name:"meta.array-literal.bicep",patterns:[{include:"#expression"},{include:"#comments"}]},"block-comment":{begin:"/\\*",end:"\\*/",name:"comment.block.bicep"},comments:{patterns:[{include:"#line-comment"},{include:"#block-comment"}]},decorator:{begin:"@(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(?=\\b[_$[:alpha:]][_$[:alnum:]]*\\b)",end:"",name:"meta.decorator.bicep",patterns:[{include:"#expression"},{include:"#comments"}]},directive:{begin:"#\\b[_a-zA-Z-0-9]+\\b",end:"$",name:"meta.directive.bicep",patterns:[{include:"#directive-variable"},{include:"#comments"}]},"directive-variable":{match:"\\b[_a-zA-Z-0-9]+\\b",name:"keyword.control.declaration.bicep"},"escape-character":{match:"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",name:"constant.character.escape.bicep"},expression:{patterns:[{include:"#string-literal"},{include:"#string-verbatim"},{include:"#numeric-literal"},{include:"#named-literal"},{include:"#object-literal"},{include:"#array-literal"},{include:"#keyword"},{include:"#identifier"},{include:"#function-call"},{include:"#decorator"},{include:"#lambda-start"},{include:"#directive"}]},"function-call":{begin:"(\\b[_$[:alpha:]][_$[:alnum:]]*\\b)(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\(",beginCaptures:{1:{name:"entity.name.function.bicep"}},end:"\\)",name:"meta.function-call.bicep",patterns:[{include:"#expression"},{include:"#comments"}]},identifier:{match:"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\()",name:"variable.other.readwrite.bicep"},keyword:{match:"\\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with|using|func|assert|provider)\\b",name:"keyword.control.declaration.bicep"},"lambda-start":{begin:"(\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(,(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)*\\)|\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\)|(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=>)",beginCaptures:{1:{name:"meta.undefined.bicep",patterns:[{include:"#identifier"},{include:"#comments"}]}},end:"(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=>",name:"meta.lambda-start.bicep"},"line-comment":{match:"//.*(?=$)",name:"comment.line.double-slash.bicep"},"named-literal":{match:"\\b(true|false|null)\\b",name:"constant.language.bicep"},"numeric-literal":{match:"[0-9]+",name:"constant.numeric.bicep"},"object-literal":{begin:"{",end:"}",name:"meta.object-literal.bicep",patterns:[{include:"#object-property-key"},{include:"#expression"},{include:"#comments"}]},"object-property-key":{match:"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*:)",name:"variable.other.property.bicep"},"string-literal":{begin:"'(?!'')",end:"'",name:"string.quoted.single.bicep",patterns:[{include:"#escape-character"},{include:"#string-literal-subst"}]},"string-literal-subst":{begin:"(?))",beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.php"}},end:"(?!\\G)(\\s*$\\n)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.php"}},patterns:[{begin:"<\\?(?i:php|=)?",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},contentName:"source.php",end:"(\\?)>",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},name:"meta.embedded.block.php",patterns:[{include:"#language"}]}]},{begin:"<\\?(?i:php|=)?(?![^?]*\\?>)",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},contentName:"source.php",end:"(\\?)>",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},name:"meta.embedded.block.php",patterns:[{include:"#language"}]},{begin:"<\\?(?i:php|=)?",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},end:">",endCaptures:{0:{name:"punctuation.section.embedded.end.php"}},name:"meta.embedded.line.php",patterns:[{captures:{1:{name:"source.php"},2:{name:"punctuation.section.embedded.end.php"},3:{name:"source.php"}},match:"\\G(\\s*)((\\?))(?=>)",name:"meta.special.empty-tag.php"},{begin:"\\G",contentName:"source.php",end:"(\\?)(?=>)",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},patterns:[{include:"#language"}]}]}]}},name:"blade",patterns:[{include:"text.html.basic"}],repository:{balance_brackets:{patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"#balance_brackets"}]},{match:"[^()]+"}]},blade:{patterns:[{begin:"{{--",beginCaptures:{0:{name:"punctuation.definition.comment.begin.blade"}},end:"--}}",endCaptures:{0:{name:"punctuation.definition.comment.end.blade"}},name:"comment.block.blade",patterns:[{begin:"(^\\s*)(?=<\\?(?![^?]*\\?>))",beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.php"}},end:"(?!\\G)(\\s*$\\n)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.php"}},name:"invalid.illegal.php-code-in-comment.blade",patterns:[{begin:"<\\?(?i:php|=)?",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},contentName:"source.php",end:"(\\?)>",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},name:"meta.embedded.block.php",patterns:[{include:"#language"}]}]},{begin:"<\\?(?i:php|=)?(?![^?]*\\?>)",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},contentName:"source.php",end:"(\\?)>",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},name:"invalid.illegal.php-code-in-comment.blade.meta.embedded.block.php",patterns:[{include:"#language"}]},{begin:"<\\?(?i:php|=)?",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"}},end:">",endCaptures:{0:{name:"punctuation.section.embedded.end.php"}},name:"invalid.illegal.php-code-in-comment.blade.meta.embedded.line.php",patterns:[{captures:{1:{name:"source.php"},2:{name:"punctuation.section.embedded.end.php"},3:{name:"source.php"}},match:"\\G(\\s*)((\\?))(?=>)",name:"meta.special.empty-tag.php"},{begin:"\\G",contentName:"source.php",end:"(\\?)(?=>)",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"source.php"}},patterns:[{include:"#language"}]}]}]},{begin:"(?)",name:"comment.line.double-slash.php"}]},{begin:"(^\\s+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.php"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.php"}},end:"\\n|(?=\\?>)",name:"comment.line.number-sign.php"}]}]},constants:{patterns:[{match:"(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",name:"constant.language.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(DEFAULT_INCLUDE_PATH +|EAR_(INSTALL|EXTENSION)_DIR +|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE +|PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING) +|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN +|BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR) +|INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR +|URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX +|EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)? +|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION) +|VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR) +|PRODUCTTYPE|PLATFORM) +|LIBDIR|LOCALSTATEDIR) +|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE)) +\\b`,name:"support.constant.core.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7]) +|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS +|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE) +|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI) +|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL +|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C) +|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR +|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP) +|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS) +|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES) +|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS) +|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN) +|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL +|NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER) +|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E) +|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP) +|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR) +|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN +|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR +|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT) +|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP +|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL) +|YES(EXPR|STR)) +\\b`,name:"support.constant.std.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS) +|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE +|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING) +|ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE +|NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE +|UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT +|PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY) +|ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE) +|CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION) +|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256) +|CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32) +|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC)) +|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG) +|READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH +|STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT +|SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG) +|NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)? +|CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE) +|CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS) +|TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR +|TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?) +|TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG +|OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE) +|DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG +|ASSOC|ASYNC|AUTO_INCREMENT_FLAG) +|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS +|BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY +|TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?) +|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR +|SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN) +|NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS +|FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT)) +|CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT) +|CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB +|OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH +|PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE)) +|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP) +|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT +|CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY +|FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH) +|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC) +|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK) +|MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD) +|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC) +|INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME +|(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME +|CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME +|PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME) +|OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE +|MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE +|SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES) +|SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?) +|SSL_(CIPHER_LIST|VERIFY(HOST|PEER)) +|STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH) +|HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)? +|COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT +|TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE +|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD +|PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT +|POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT +|FTP(APPEND|LISTONLY|PORT|SSLAUTH) +|FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD) +|FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME) +|AUTOREFERER) +|PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL) +|E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER +|BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT) +|SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED)) +|SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR) +|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE +|OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL +|UNKNOWN_TELNET_OPTION|PARTIAL_FILE +|FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST) +|CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR +|WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED) +|FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND +|LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK) +|VERSION_NOW +|FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS)) +|AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM)) +|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD) +|IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ)) +|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP) +|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION) +|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?) +|DOM(STRING_SIZE_ERR) +|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE +|INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR) +|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT) +|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT +|SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER) +|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC))) +|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO)) +|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME) +|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW +|SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL +|EMAIL|ENCODED|FULL_SPCIAL_CHARS) +|VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT) +|FORCE_ARRAY +|FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES +|IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED +|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION))) +|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND) +|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME) +|FORCE_(DEFLATE|GZIP) +|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING) +|COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING))) +\\b`,name:"support.constant.ext.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK +|BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC +|SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT +|CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)? +|CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL)) +|INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR) +|OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON) +|DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC +|PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE +|END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE +|FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR) +|ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL)) +\\b`,name:"support.constant.parser-token.php"},{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"constant.other.php"}]},"function-call":{patterns:[{begin:`(?xi) +( +\\\\?\\b +[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]* +(?:\\\\[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)+ +)\\s*(\\()`,beginCaptures:{1:{patterns:[{include:"#namespace"},{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"entity.name.function.php"}]},2:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.function-call.php",patterns:[{include:"#language"}]},{begin:"(?i)(\\\\)?\\b([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",beginCaptures:{1:{patterns:[{include:"#namespace"}]},2:{patterns:[{include:"#support"},{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"entity.name.function.php"}]},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.function-call.php",patterns:[{include:"#language"}]},{match:"(?i)\\b(print|echo)\\b",name:"support.function.construct.output.php"}]},"function-parameters":{patterns:[{include:"#comments"},{match:",",name:"punctuation.separator.delimiter.php"},{begin:`(?xi) +(array) +\\s+((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\s*(=)\\s*(array)\\s*(\\()`,beginCaptures:{1:{name:"storage.type.php"},2:{name:"variable.other.php"},3:{name:"storage.modifier.reference.php"},4:{name:"punctuation.definition.variable.php"},5:{name:"keyword.operator.assignment.php"},6:{name:"support.function.construct.php"},7:{name:"punctuation.definition.array.begin.bracket.round.php"}},contentName:"meta.array.php",end:"\\)",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.round.php"}},name:"meta.function.parameter.array.php",patterns:[{include:"#comments"},{include:"#strings"},{include:"#numbers"}]},{captures:{1:{name:"storage.type.php"},2:{name:"variable.other.php"},3:{name:"storage.modifier.reference.php"},4:{name:"punctuation.definition.variable.php"},5:{name:"keyword.operator.assignment.php"},6:{name:"constant.language.php"},7:{name:"punctuation.section.array.begin.php"},8:{patterns:[{include:"#parameter-default-types"}]},9:{name:"punctuation.section.array.end.php"},10:{name:"invalid.illegal.non-null-typehinted.php"}},match:`(?xi) +(array|callable) +\\s+((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +(?: +\\s*(=)\\s* +(?: +(null) +| +(\\[)((?>[^\\[\\]]+|\\[\\g<8>\\])*)(\\]) +|((?:\\S*?\\(\\))|(?:\\S*?)) +) +)? +\\s*(?=,|\\)|/[/*]|\\#|$)`,name:"meta.function.parameter.array.php"},{begin:`(?xi) +(\\\\?(?:[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)*) +([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\s+((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)`,beginCaptures:{1:{name:"support.other.namespace.php",patterns:[{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"storage.type.php"},{match:"\\\\",name:"punctuation.separator.inheritance.php"}]},2:{name:"storage.type.php"},3:{name:"variable.other.php"},4:{name:"storage.modifier.reference.php"},5:{name:"keyword.operator.variadic.php"},6:{name:"punctuation.definition.variable.php"}},end:"(?=,|\\)|/[/*]|\\#)",name:"meta.function.parameter.typehinted.php",patterns:[{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.php"}},end:"(?=,|\\)|/[/*]|\\#)",patterns:[{include:"#language"}]}]},{captures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"keyword.operator.variadic.php"},4:{name:"punctuation.definition.variable.php"}},match:`(?xi) +((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\s*(?=,|\\)|/[/*]|\\#|$)`,name:"meta.function.parameter.no-default.php"},{begin:`(?xi) +((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\s*(=)\\s* +(?:(\\[)((?>[^\\[\\]]+|\\[\\g<6>\\])*)(\\]))?`,beginCaptures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"keyword.operator.variadic.php"},4:{name:"punctuation.definition.variable.php"},5:{name:"keyword.operator.assignment.php"},6:{name:"punctuation.section.array.begin.php"},7:{patterns:[{include:"#parameter-default-types"}]},8:{name:"punctuation.section.array.end.php"}},end:"(?=,|\\)|/[/*]|\\#)",name:"meta.function.parameter.default.php",patterns:[{include:"#parameter-default-types"}]}]},heredoc:{patterns:[{begin:'(?i)(?=<<<\\s*("?)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(\\1)\\s*$)',end:"(?!\\G)",name:"string.unquoted.heredoc.php",patterns:[{include:"#heredoc_interior"}]},{begin:"(?=<<<\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\s*$)",end:"(?!\\G)",name:"string.unquoted.nowdoc.php",patterns:[{include:"#nowdoc_interior"}]}]},heredoc_interior:{patterns:[{begin:'(<<<)\\s*("?)(HTML)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.html",patterns:[{include:"#interpolation"},{include:"text.html.basic"}]},{begin:'(<<<)\\s*("?)(XML)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.xml",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.xml",patterns:[{include:"#interpolation"},{include:"text.xml"}]},{begin:'(<<<)\\s*("?)(SQL)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.sql",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.sql",patterns:[{include:"#interpolation"},{include:"source.sql"}]},{begin:'(<<<)\\s*("?)(JAVASCRIPT|JS)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.js",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.js",patterns:[{include:"#interpolation"},{include:"source.js"}]},{begin:'(<<<)\\s*("?)(JSON)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.json",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.json",patterns:[{include:"#interpolation"},{include:"source.json"}]},{begin:'(<<<)\\s*("?)(CSS)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.css",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.css",patterns:[{include:"#interpolation"},{include:"source.css"}]},{begin:'(<<<)\\s*("?)(REGEXP?)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"string.regexp.heredoc.php",end:"^(\\3)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},patterns:[{include:"#interpolation"},{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{captures:{1:{name:"punctuation.definition.arbitrary-repitition.php"},3:{name:"punctuation.definition.arbitrary-repitition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repitition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{match:"\\\\[\\\\'\\[\\]]",name:"constant.character.escape.php"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"},{begin:"(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{ff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",beginCaptures:{1:{name:"punctuation.definition.comment.php"}},end:"$",endCaptures:{0:{name:"punctuation.definition.comment.php"}},name:"comment.line.number-sign.php"}]},{begin:'(?i)(<<<)\\s*("?)([a-z_\\x{7f}-\\x{ff}]+[a-z0-9_\\x{7f}-\\x{ff}]*)(\\2)(\\s*)',beginCaptures:{1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},end:"^(\\3)\\b",endCaptures:{1:{name:"keyword.operator.heredoc.php"}},patterns:[{include:"#interpolation"}]}]},instantiation:{begin:"(?i)(new)\\s+",beginCaptures:{1:{name:"keyword.other.new.php"}},end:"(?i)(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",patterns:[{match:"(?i)(parent|static|self)(?![a-z0-9_\\x{7f}-\\x{ff}])",name:"storage.type.php"},{include:"#class-name"},{include:"#variable-name"}]},interpolation:{patterns:[{match:"\\\\[0-7]{1,3}",name:"constant.character.escape.octal.php"},{match:"\\\\x[0-9A-Fa-f]{1,2}",name:"constant.character.escape.hex.php"},{match:"\\\\u{[0-9A-Fa-f]+}",name:"constant.character.escape.unicode.php"},{match:'\\\\[nrtvef$"\\\\]',name:"constant.character.escape.php"},{begin:"{(?=\\$.*?})",beginCaptures:{0:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"#language"}]},{include:"#variable-name"}]},"invoke-call":{captures:{1:{name:"punctuation.definition.variable.php"},2:{name:"variable.other.php"}},match:"(?i)(\\$+)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(?=\\s*\\()",name:"meta.function-call.invoke.php"},language:{patterns:[{include:"#comments"},{begin:"(?i)^\\s*(interface)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(extends)?\\s*",beginCaptures:{1:{name:"storage.type.interface.php"},2:{name:"entity.name.type.interface.php"},3:{name:"storage.modifier.extends.php"}},end:"(?i)((?:[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\s*,\\s*)*)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?\\s*(?:(?={)|$)",endCaptures:{1:{patterns:[{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"entity.other.inherited-class.php"},{match:",",name:"punctuation.separator.classes.php"}]},2:{name:"entity.other.inherited-class.php"}},name:"meta.interface.php",patterns:[{include:"#namespace"}]},{begin:"(?i)^\\s*(trait)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)",beginCaptures:{1:{name:"storage.type.trait.php"},2:{name:"entity.name.type.trait.php"}},end:"(?={)",name:"meta.trait.php",patterns:[{include:"#comments"}]},{captures:{1:{name:"keyword.other.namespace.php"},2:{name:"entity.name.type.namespace.php",patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]}},match:"(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([a-z0-9_\\x{7f}-\\x{ff}\\\\]+)(?=\\s*;)",name:"meta.namespace.php"},{begin:"(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",beginCaptures:{1:{name:"keyword.other.namespace.php"}},end:"(?<=})|(?=\\?>)",name:"meta.namespace.php",patterns:[{include:"#comments"},{captures:{0:{patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]}},match:"(?i)[a-z0-9_\\x{7f}-\\x{ff}\\\\]+",name:"entity.name.type.namespace.php"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.namespace.begin.bracket.curly.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.namespace.end.bracket.curly.php"}},patterns:[{include:"#language"}]},{match:"[^\\s]+",name:"invalid.illegal.identifier.php"}]},{match:"\\s+(?=use\\b)"},{begin:"(?i)\\buse\\b",beginCaptures:{0:{name:"keyword.other.use.php"}},end:"(?<=})|(?=;)",name:"meta.use.php",patterns:[{match:"\\b(const|function)\\b",name:"storage.type.${1:/downcase}.php"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.use.begin.bracket.curly.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.use.end.bracket.curly.php"}},patterns:[{include:"#scope-resolution"},{captures:{1:{name:"keyword.other.use-as.php"},2:{name:"storage.modifier.php"},3:{name:"entity.other.alias.php"}},match:`(?xi) +\\b(as) +\\s+(final|abstract|public|private|protected|static) +\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\b`},{captures:{1:{name:"keyword.other.use-as.php"},2:{patterns:[{match:"^(?:final|abstract|public|private|protected|static)$",name:"storage.modifier.php"},{match:".+",name:"entity.other.alias.php"}]}},match:`(?xi) +\\b(as) +\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +\\b`},{captures:{1:{name:"keyword.other.use-insteadof.php"},2:{name:"support.class.php"}},match:"(?i)\\b(insteadof)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)"},{match:";",name:"punctuation.terminator.expression.php"},{include:"#use-inner"}]},{include:"#use-inner"}]},{begin:"(?i)^\\s*(?:(abstract|final)\\s+)?(class)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)",beginCaptures:{1:{name:"storage.modifier.${1:/downcase}.php"},2:{name:"storage.type.class.php"},3:{name:"entity.name.type.class.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.class.end.bracket.curly.php"}},name:"meta.class.php",patterns:[{include:"#comments"},{begin:"(?i)(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.extends.php"}},contentName:"meta.other.inherited-class.php",end:"(?i)(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",patterns:[{begin:"(?i)(?=\\\\?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)",end:"(?i)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",endCaptures:{1:{name:"entity.other.inherited-class.php"}},patterns:[{include:"#namespace"}]},{include:"#class-builtin"},{include:"#namespace"},{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"entity.other.inherited-class.php"}]},{begin:"(?i)(implements)\\s+",beginCaptures:{1:{name:"storage.modifier.implements.php"}},end:"(?i)(?=[;{])",patterns:[{include:"#comments"},{begin:"(?i)(?=[a-z0-9_\\x{7f}-\\x{ff}\\\\]+)",contentName:"meta.other.inherited-class.php",end:"(?i)(?:\\s*(?:,|(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\\\s]))\\s*)",patterns:[{begin:"(?i)(?=\\\\?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)",end:"(?i)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",endCaptures:{1:{name:"entity.other.inherited-class.php"}},patterns:[{include:"#namespace"}]},{include:"#class-builtin"},{include:"#namespace"},{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"entity.other.inherited-class.php"}]}]},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.class.begin.bracket.curly.php"}},contentName:"meta.class.body.php",end:"(?=}|\\?>)",patterns:[{include:"#language"}]}]},{include:"#switch_statement"},{captures:{1:{name:"keyword.control.${1:/downcase}.php"}},match:`(?x) +\\s* +\\b( +break|case|continue|declare|default|die|do| +else(if)?|end(declare|for(each)?|if|switch|while)|exit| +for(each)?|if|return|switch|use|while|yield +)\\b`},{begin:"(?i)\\b((?:require|include)(?:_once)?)\\s+",beginCaptures:{1:{name:"keyword.control.import.include.php"}},end:"(?=\\s|;|$|\\?>)",name:"meta.include.php",patterns:[{include:"#language"}]},{begin:"\\b(catch)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.exception.catch.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},name:"meta.catch.php",patterns:[{include:"#namespace"},{captures:{1:{name:"support.class.exception.php"},2:{patterns:[{match:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",name:"support.class.exception.php"},{match:"\\|",name:"punctuation.separator.delimiter.php"}]},3:{name:"variable.other.php"},4:{name:"punctuation.definition.variable.php"}},match:`(?xi) +([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +((?:\\s*\\|\\s*[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)*) +\\s* +((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)`}]},{match:"\\b(catch|try|throw|exception|finally)\\b",name:"keyword.control.exception.php"},{begin:"(?i)\\b(function)\\s*(?=\\()",beginCaptures:{1:{name:"storage.type.function.php"}},end:"(?={)",name:"meta.function.closure.php",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},patterns:[{include:"#function-parameters"}]},{begin:"(?i)(use)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.function.use.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},patterns:[{captures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"punctuation.definition.variable.php"}},match:"(?i)((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(?=,|\\))",name:"meta.function.closure.use.php"}]}]},{begin:`(?x) +((?:(?:final|abstract|public|private|protected|static)\\s+)*) +(function)\\s+ +(?i: +(__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring| +clone|set_state|sleep|wakeup|autoload|invoke|callStatic)) +|([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*) +) +\\s*(\\()`,beginCaptures:{1:{patterns:[{match:"final|abstract|public|private|protected|static",name:"storage.modifier.php"}]},2:{name:"storage.type.function.php"},3:{name:"support.function.magic.php"},4:{name:"entity.name.function.php"},5:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:"(\\))(?:\\s*(:)\\s*([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*))?",endCaptures:{1:{name:"punctuation.definition.parameters.end.bracket.round.php"},2:{name:"keyword.operator.return-value.php"},3:{name:"storage.type.php"}},name:"meta.function.php",patterns:[{include:"#function-parameters"}]},{include:"#invoke-call"},{include:"#scope-resolution"},{include:"#variables"},{include:"#strings"},{captures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"},3:{name:"punctuation.definition.array.end.bracket.round.php"}},match:"(array)(\\()(\\))",name:"meta.array.empty.php"},{begin:"(array)(\\()",beginCaptures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.round.php"}},name:"meta.array.php",patterns:[{include:"#language"}]},{captures:{1:{name:"punctuation.definition.storage-type.begin.bracket.round.php"},2:{name:"storage.type.php"},3:{name:"punctuation.definition.storage-type.end.bracket.round.php"}},match:"(?i)(\\()\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\s*(\\))"},{match:"(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object)\\b",name:"storage.type.php"},{match:"(?i)\\b(global|abstract|const|extends|implements|final|private|protected|public|static)\\b",name:"storage.modifier.php"},{include:"#object"},{match:";",name:"punctuation.terminator.expression.php"},{match:":",name:"punctuation.terminator.statement.php"},{include:"#heredoc"},{include:"#numbers"},{match:"(?i)\\bclone\\b",name:"keyword.other.clone.php"},{match:"\\.=?",name:"keyword.operator.string.php"},{match:"=>",name:"keyword.operator.key.php"},{captures:{1:{name:"keyword.operator.assignment.php"},2:{name:"storage.modifier.reference.php"},3:{name:"storage.modifier.reference.php"}},match:"(?i)(\\=)(&)|(&)(?=[$a-z_])"},{match:"@",name:"keyword.operator.error-control.php"},{match:"===|==|!==|!=|<>",name:"keyword.operator.comparison.php"},{match:"=|\\+=|\\-=|\\*=|/=|%=|&=|\\|=|\\^=|<<=|>>=",name:"keyword.operator.assignment.php"},{match:"<=>|<=|>=|<|>",name:"keyword.operator.comparison.php"},{match:"\\-\\-|\\+\\+",name:"keyword.operator.increment-decrement.php"},{match:"\\-|\\+|\\*|/|%",name:"keyword.operator.arithmetic.php"},{match:"(?i)(!|&&|\\|\\|)|\\b(and|or|xor|as)\\b",name:"keyword.operator.logical.php"},{include:"#function-call"},{match:"<<|>>|~|\\^|&|\\|",name:"keyword.operator.bitwise.php"},{begin:"(?i)\\b(instanceof)\\s+(?=[\\\\$a-z_])",beginCaptures:{1:{name:"keyword.operator.type.php"}},end:"(?=[^\\\\$a-z0-9_\\x{7f}-\\x{ff}])",patterns:[{include:"#class-name"},{include:"#variable-name"}]},{include:"#instantiation"},{captures:{1:{name:"keyword.control.goto.php"},2:{name:"support.other.php"}},match:"(?i)(goto)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)"},{captures:{1:{name:"entity.name.goto-label.php"}},match:"(?i)^\\s*([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*:(?!:)"},{include:"#string-backtick"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.curly.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.end.bracket.curly.php"}},patterns:[{include:"#language"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.array.begin.php"}},end:"\\]|(?=\\?>)",endCaptures:{0:{name:"punctuation.section.array.end.php"}},patterns:[{include:"#language"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.php"}},patterns:[{include:"#language"}]},{include:"#constants"},{match:",",name:"punctuation.separator.delimiter.php"}]},namespace:{begin:"(?i)(?:(namespace)|[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(\\\\)(?=.*?[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",beginCaptures:{1:{name:"variable.language.namespace.php"},2:{name:"punctuation.separator.inheritance.php"}},end:"(?i)(?=[a-z0-9_\\x{7f}-\\x{ff}]*[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",name:"support.other.namespace.php",patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]},nowdoc_interior:{patterns:[{begin:"(<<<)\\s*'(HTML)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.html",patterns:[{include:"text.html.basic"}]},{begin:"(<<<)\\s*'(XML)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.xml",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.xml",patterns:[{include:"text.xml"}]},{begin:"(<<<)\\s*'(SQL)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.sql",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.sql",patterns:[{include:"source.sql"}]},{begin:"(<<<)\\s*'(JAVASCRIPT|JS)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.js",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.js",patterns:[{include:"source.js"}]},{begin:"(<<<)\\s*'(JSON)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.json",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.json",patterns:[{include:"source.json"}]},{begin:"(<<<)\\s*'(CSS)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.css",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.css",patterns:[{include:"source.css"}]},{begin:"(<<<)\\s*'(REGEXP?)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"string.regexp.nowdoc.php",end:"^(\\2)\\b",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},patterns:[{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{captures:{1:{name:"punctuation.definition.arbitrary-repitition.php"},3:{name:"punctuation.definition.arbitrary-repitition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repitition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{match:"\\\\[\\\\'\\[\\]]",name:"constant.character.escape.php"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"},{begin:"(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{ff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",beginCaptures:{1:{name:"punctuation.definition.comment.php"}},end:"$",endCaptures:{0:{name:"punctuation.definition.comment.php"}},name:"comment.line.number-sign.php"}]},{begin:"(?i)(<<<)\\s*'([a-z_\\x{7f}-\\x{ff}]+[a-z0-9_\\x{7f}-\\x{ff}]*)'(\\s*)",beginCaptures:{1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},end:"^(\\2)\\b",endCaptures:{1:{name:"keyword.operator.nowdoc.php"}}}]},numbers:{patterns:[{match:"0[xX][0-9a-fA-F]+",name:"constant.numeric.hex.php"},{match:"0[bB][01]+",name:"constant.numeric.binary.php"},{match:"0[0-7]+",name:"constant.numeric.octal.php"},{captures:{1:{name:"punctuation.separator.decimal.period.php"},2:{name:"punctuation.separator.decimal.period.php"}},match:`(?x) +(?: +[0-9]*(\\.)[0-9]+(?:[eE][+-]?[0-9]+)?| +[0-9]+(\\.)[0-9]*(?:[eE][+-]?[0-9]+)?| +[0-9]+[eE][+-]?[0-9]+ +)`,name:"constant.numeric.decimal.php"},{match:"0|[1-9][0-9]*",name:"constant.numeric.decimal.php"}]},object:{patterns:[{begin:"(->)(\\$?{)",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"#language"}]},{begin:"(?i)(->)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"entity.name.function.php"},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.method-call.php",patterns:[{include:"#language"}]},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"variable.other.property.php"},3:{name:"punctuation.definition.variable.php"}},match:"(?i)(->)((\\$+)?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?"}]},"parameter-default-types":{patterns:[{include:"#strings"},{include:"#numbers"},{include:"#string-backtick"},{include:"#variables"},{match:"=>",name:"keyword.operator.key.php"},{match:"=",name:"keyword.operator.assignment.php"},{match:"&(?=\\s*\\$)",name:"storage.modifier.reference.php"},{begin:"(array)\\s*(\\()",beginCaptures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.round.php"}},name:"meta.array.php",patterns:[{include:"#parameter-default-types"}]},{include:"#instantiation"},{begin:`(?xi) +(?=[a-z0-9_\\x{7f}-\\x{ff}\\\\]+(::) +([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)? +)`,end:"(?i)(::)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?",endCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"constant.other.class.php"}},patterns:[{include:"#class-name"}]},{include:"#constants"}]},php_doc:{patterns:[{match:"^(?!\\s*\\*).*?(?:(?=\\*\\/)|$\\n?)",name:"invalid.illegal.missing-asterisk.phpdoc.php"},{captures:{1:{name:"keyword.other.phpdoc.php"},3:{name:"storage.modifier.php"},4:{name:"invalid.illegal.wrong-access-type.phpdoc.php"}},match:"^\\s*\\*\\s*(@access)\\s+((public|private|protected)|(.+))\\s*$"},{captures:{1:{name:"keyword.other.phpdoc.php"},2:{name:"markup.underline.link.php"}},match:"(@xlink)\\s+(.+)\\s*$"},{begin:"(@(?:global|param|property(-(read|write))?|return|throws|var))\\s+(?=[A-Za-z_\\x{7f}-\\x{ff}\\\\]|\\()",beginCaptures:{1:{name:"keyword.other.phpdoc.php"}},contentName:"meta.other.type.phpdoc.php",end:"(?=\\s|\\*/)",patterns:[{include:"#php_doc_types_array_multiple"},{include:"#php_doc_types_array_single"},{include:"#php_doc_types"}]},{match:`(?x) +@ +( +api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal| +license|link|method|property(-(read|write))?|package|param|return|see|since|source| +static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore +)\\b`,name:"keyword.other.phpdoc.php"},{captures:{1:{name:"keyword.other.phpdoc.php"}},match:"{(@(link|inherit[Dd]oc)).+?}",name:"meta.tag.inline.phpdoc.php"}]},php_doc_types:{captures:{0:{patterns:[{match:`(?x)\\b +(string|integer|int|boolean|bool|float|double|object|mixed +|array|resource|void|null|callback|false|true|self)\\b`,name:"keyword.other.type.php"},{include:"#class-name"},{match:"\\|",name:"punctuation.separator.delimiter.php"}]}},match:"(?i)[a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*(\\|[a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*)*"},php_doc_types_array_multiple:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.type.begin.bracket.round.phpdoc.php"}},end:"(\\))(\\[\\])|(?=\\*/)",endCaptures:{1:{name:"punctuation.definition.type.end.bracket.round.phpdoc.php"},2:{name:"keyword.other.array.phpdoc.php"}},patterns:[{include:"#php_doc_types_array_multiple"},{include:"#php_doc_types_array_single"},{include:"#php_doc_types"},{match:"\\|",name:"punctuation.separator.delimiter.php"}]},php_doc_types_array_single:{captures:{1:{patterns:[{include:"#php_doc_types"}]},2:{name:"keyword.other.array.phpdoc.php"}},match:"(?i)([a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*)(\\[\\])"},"regex-double-quoted":{begin:'"/(?=(\\\\.|[^"/])++/[imsxeADSUXu]*")',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:'(/)([imsxeADSUXu]*)(")',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.regexp.double-quoted.php",patterns:[{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{include:"#interpolation"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.php"},3:{name:"punctuation.definition.arbitrary-repetition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repetition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{include:"#interpolation"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"}]},"regex-single-quoted":{begin:"'/(?=(\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"(/)([imsxeADSUXu]*)(')",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.regexp.single-quoted.php",patterns:[{include:"#single_quote_regex_escape"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.php"},3:{name:"punctuation.definition.arbitrary-repetition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repetition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php"},{match:"[$^+*]",name:"keyword.operator.regexp.php"}]},"scope-resolution":{patterns:[{captures:{1:{patterns:[{match:"\\b(self|static|parent)\\b",name:"storage.type.php"},{match:"\\w+",name:"entity.name.class.php"},{include:"#class-name"},{include:"#variable-name"}]}},match:"(?i)\\b([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(?=\\s*::)"},{begin:"(?i)(::)\\s*([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"entity.name.function.php"},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.method-call.static.php",patterns:[{include:"#language"}]},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"keyword.other.class.php"}},match:"(?i)(::)\\s*(class)\\b"},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"variable.other.class.php"},3:{name:"punctuation.definition.variable.php"},4:{name:"constant.other.class.php"}},match:`(?xi) +(::)\\s* +(?: +((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +| +([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) +)?`}]},single_quote_regex_escape:{match:"\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)",name:"constant.character.escape.php"},"sql-string-double-quoted":{begin:'"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\b)',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},contentName:"source.sql.embedded.php",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.double.sql.php",patterns:[{captures:{1:{name:"punctuation.definition.comment.sql"}},match:'(#)(\\\\"|[^"])*(?="|$)',name:"comment.line.number-sign.sql"},{captures:{1:{name:"punctuation.definition.comment.sql"}},match:'(--)(\\\\"|[^"])*(?="|$)',name:"comment.line.double-dash.sql"},{match:"\\\\[\\\\\"`']",name:"constant.character.escape.php"},{match:`'(?=((\\\\')|[^'"])*("|$))`,name:"string.quoted.single.unclosed.sql"},{match:'`(?=((\\\\`)|[^`"])*("|$))',name:"string.quoted.other.backtick.unclosed.sql"},{begin:"'",end:"'",name:"string.quoted.single.sql",patterns:[{include:"#interpolation"}]},{begin:"`",end:"`",name:"string.quoted.other.backtick.sql",patterns:[{include:"#interpolation"}]},{include:"#interpolation"},{include:"source.sql"}]},"sql-string-single-quoted":{begin:"'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\b)",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},contentName:"source.sql.embedded.php",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.single.sql.php",patterns:[{captures:{1:{name:"punctuation.definition.comment.sql"}},match:"(#)(\\\\'|[^'])*(?='|$)",name:"comment.line.number-sign.sql"},{captures:{1:{name:"punctuation.definition.comment.sql"}},match:"(--)(\\\\'|[^'])*(?='|$)",name:"comment.line.double-dash.sql"},{match:"\\\\[\\\\'`\"]",name:"constant.character.escape.php"},{match:"`(?=((\\\\`)|[^`'])*('|$))",name:"string.quoted.other.backtick.unclosed.sql"},{match:`"(?=((\\\\")|[^"'])*('|$))`,name:"string.quoted.double.unclosed.sql"},{include:"source.sql"}]},"string-backtick":{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.interpolated.php",patterns:[{match:"\\\\.",name:"constant.character.escape.php"},{include:"#interpolation"}]},"string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.double.php",patterns:[{include:"#interpolation"}]},"string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.single.php",patterns:[{match:"\\\\[\\\\']",name:"constant.character.escape.php"}]},strings:{patterns:[{include:"#regex-double-quoted"},{include:"#sql-string-double-quoted"},{include:"#string-double-quoted"},{include:"#regex-single-quoted"},{include:"#sql-string-single-quoted"},{include:"#string-single-quoted"}]},support:{patterns:[{match:`(?xi) +\\b +apc_( +store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?| +exists|fetch|load_constants|add|bin_(dump|load)(file)? +)\\b`,name:"support.function.apc.php"},{match:`(?xi)\\b +( +shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort| +pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range| +array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine| +(diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique| +pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?| +reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?) +)\\b`,name:"support.function.array.php"},{match:`(?xi)\\b +( +show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)| +time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler| +php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser +)\\b`,name:"support.function.basic_functions.php"},{match:"(?i)\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\b",name:"support.function.bcmath.php"},{match:"(?i)\\bblenc_encrypt\\b",name:"support.function.blenc.php"},{match:"(?i)\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\b",name:"support.function.bz2.php"},{match:`(?xi)\\b +( +(French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd| +jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek) +)\\b`,name:"support.function.calendar.php"},{match:`(?xi)\\b +( +class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists| +get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits)) +)\\b`,name:"support.function.classobj.php"},{match:`(?xi)\\b +( +com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)| +variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp| +pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul) +)\\b`,name:"support.function.com.php"},{begin:"(?i)\\b(isset|unset|eval|empty|list)\\b",name:"support.function.construct.php"},{match:"(?i)\\b(print|echo)\\b",name:"support.function.construct.output.php"},{match:"(?i)\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\b",name:"support.function.ctype.php"},{match:`(?xi)\\b +curl_( +share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape| +errno|error|exec|version|file_create|reset|getinfo| +multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec) +)\\b`,name:"support.function.curl.php"},{match:`(?xi)\\b +( +strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate| +timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)| +date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set| +isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set| +parse(_from_format)?|format|add|get_last_errors|modify))?| +localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime +)\\b`,name:"support.function.datetime.php"},{match:"(?i)\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\b",name:"support.function.dba.php"},{match:"(?i)\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\b",name:"support.function.dbx.php"},{match:"(?i)\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\b",name:"support.function.dir.php"},{match:`(?xi)\\b +eio_( +sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)| +seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll| +event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath| +read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy +)\\b`,name:"support.function.eio.php"},{match:`(?xi)\\b +enchant_( +dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)| +broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error) +)\\b`,name:"support.function.enchant.php"},{match:"(?i)\\bsplit(i)?|sql_regcase|ereg(i)?(_replace)?\\b",name:"support.function.ereg.php"},{match:"(?i)\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\b",name:"support.function.errorfunc.php"},{match:"(?i)\\bshell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec\\b",name:"support.function.exec.php"},{match:"(?i)\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\b",name:"support.function.exif.php"},{match:`(?xi)\\b +fann_( +(duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)| +set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)| +cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)| +output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)| +(max|min)_(cand|out)_epochs)| +callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log| +quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit| +activation_(function|steepness)(_(hidden|layer|output))?| +rprop_((decrease|increase)_factor|delta_(max|min|zero)))| +save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)| +create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)| +test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?| +print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights| +get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)| +network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?| +cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)| +weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)| +total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)| +quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)| +rprop_((decrease|increase)_factor|delta_(max|min|zero))) +)\\b`,name:"support.function.fann.php"},{match:`(?xi)\\b +( +symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile| +is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace| +dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch| +fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)| +f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?| +rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename +)\\b`,name:"support.function.file.php"},{match:"(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",name:"support.function.fileinfo.php"},{match:"(?i)\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\b",name:"support.function.filter.php"},{match:"(?i)\\bfastcgi_finish_request\\b",name:"support.function.fpm.php"},{match:"(?i)\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\b",name:"support.function.funchand.php"},{match:"(?i)\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\b",name:"support.function.gettext.php"},{match:`(?xi)\\b +gmp_( +scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit| +intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square| +prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul +)\\b`,name:"support.function.gmp.php"},{match:"(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\b",name:"support.function.hash.php"},{match:`(?xi)\\b +( +http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head| +negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle| +inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)| +parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?| +get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))| +ob_(etag|deflate|inflate)handler +)\\b`,name:"support.function.http.php"},{match:"(?i)\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",name:"support.function.iconv.php"},{match:"(?i)\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\b",name:"support.function.iisfunc.php"},{match:`(?xi)\\b +( +iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?| +image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha| +convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)| +color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)| +crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?| +types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg| +_type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon| +palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder| +filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect| +antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect| +grab(screen|window)|xbm) +)\\b`,name:"support.function.image.php"},{match:`(?xi)\\b +( +sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title| +ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)| +php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare| +assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt| +get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions| +magic_quotes_(gpc|runtime)|required_files|resources)| +get(env|lastmod|rusage|my(inode|[gup]id))| +memory_get_(peak_)?usage|main|magic_quotes_runtime +)\\b`,name:"support.function.info.php"},{match:`(?xi)\\b +ibase_( +set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect| +commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)| +execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event| +add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup| +blob_(cancel|close|create|import|info|open|echo|add|get) +)\\b`,name:"support.function.interbase.php"},{match:`(?xi)\\b +( +normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)| +numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?| +get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))| +collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort| +get_(strength|sort_key|error_(code|message)|locale|attribute))| +transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))| +intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))| +datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime| +get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))| +locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http| +get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))| +resourcebundle_(create|count|locales|get(_(error_(code|message)))?)| +grapheme_(str(i?str|r?i?pos|len)|substr|extract)| +msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale)) +)\\b`,name:"support.function.intl.php"},{match:"(?i)\\bjson_(decode|encode|last_error(_msg)?)\\b",name:"support.function.json.php"},{match:`(?xi)\\b +ldap_( +start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)| +connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61| +dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind| +free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?| +mod_(add|del|replace) +)\\b`,name:"support.function.ldap.php"},{match:"(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",name:"support.function.libxml.php"},{match:"(?i)\\b(ezmlm_hash|mail)\\b",name:"support.function.mail.php"},{match:`(?xi)\\b +( +(a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad| +pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax| +mt_(srand|rand|getrandmax)|max|min|bindec|base_convert +)\\b`,name:"support.function.math.php"},{match:`(?xi)\\b +mb_( +str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)| +substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding| +convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)| +detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)| +ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)| +list_encodings|language|regex_(set_options|encoding)|get_info +)\\b`,name:"support.function.mbstring.php"},{match:`(?xi)\\b +( +mcrypt_( +cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?| +enc_(self_test|is_block_(algorithm|algorithm_mode|mode)| +get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))| +get_(cipher_name|(block|iv|key)_size)| +module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open| +get_(supported_key_sizes|algo_(block|key)_size)))| +mdecrypt_generic +)\\b`,name:"support.function.mcrypt.php"},{match:"(?i)\\bmemcache_debug\\b",name:"support.function.memcache.php"},{match:"(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",name:"support.function.mhash.php"},{match:"(?i)\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\b",name:"support.function.mongo.php"},{match:`(?xi)\\b +mysql_( +stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string| +thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping| +errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)| +free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string| +get_(client|host|proto|server)_info +)\\b`,name:"support.function.mysql.php"},{match:`(?xi)\\b +mysqli_( +ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))| +stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result| +attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))| +select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit| +client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)| +dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute| +embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh| +fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)| +release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query| +get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)| +master_query|bind_(param|result)|begin_transaction +)\\b`,name:"support.function.mysqli.php"},{match:"(?i)\\bmysqlnd_memcache_(set|get_config)\\b",name:"support.function.mysqlnd-memcache.php"},{match:"(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\b",name:"support.function.mysqlnd-ms.php"},{match:"(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\b",name:"support.function.mysqlnd-qc.php"},{match:"(?i)\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\b",name:"support.function.mysqlnd-uh.php"},{match:`(?xi)\\b +( +syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog| +headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long| +openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip| +get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr) +)\\b`,name:"support.function.network.php"},{match:"(?i)\\bnsapi_(virtual|response_headers|request_headers)\\b",name:"support.function.nsapi.php"},{match:`(?xi)\\b +( +oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon| +column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit| +closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?| +free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback| +result|bindbyname)| +oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version| +num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel| +internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name| +field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?| +free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset) +)\\b`,name:"support.function.oci8.php"},{match:"(?i)\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\b",name:"support.function.opcache.php"},{match:`(?xi)\\b +openssl_( +sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))| +cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string| +pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes| +pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2| +get_((cipher|md)_methods|cert_locations|(public|private)key)| +x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read) +)\\b`,name:"support.function.openssl.php"},{match:`(?xi)\\b +( +output_(add_rewrite_var|reset_rewrite_vars)|flush| +ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler| +get_(status|contents|clean|flush|length|level)) +)\\b`,name:"support.function.output.php"},{match:"(?i)\\bpassword_(hash|needs_rehash|verify|get_info)\\b",name:"support.function.password.php"},{match:`(?xi)\\b +pcntl_( +strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork| +w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error +)\\b`,name:"support.function.pcntl.php"},{match:`(?xi)\\b +pg_( +socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host| +num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)| +client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace| +unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?| +escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)| +field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)| +fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data| +lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)| +)\\b`,name:"support.function.pgsql.php"},{match:"(?i)\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\b",name:"support.function.php_apache.php"},{match:"(?i)\\bdom_import_simplexml\\b",name:"support.function.php_dom.php"},{match:`(?xi)\\b +ftp_( +ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close| +delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir +)\\b`,name:"support.function.php_ftp.php"},{match:`(?xi)\\b +imap_( +(create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody| +num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen| +8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc| +fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error| +rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?| +msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64 +)\\b`,name:"support.function.php_imap.php"},{match:`(?xi)\\b +mssql_( +select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query| +field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)| +rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind +)\\b`,name:"support.function.php_mssql.php"},{match:`(?xi)\\b +odbc_( +statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit| +cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns| +prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result| +fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode +)\\b`,name:"support.function.php_odbc.php"},{match:"(?i)\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\b",name:"support.function.php_pcre.php"},{match:"(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",name:"support.function.php_spl.php"},{match:"(?i)\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\b",name:"support.function.php_zip.php"},{match:`(?xi)\\b +posix_( +strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access| +get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)| +get_last_error|mknod|mkfifo +)\\b`,name:"support.function.posix.php"},{match:"(?i)\\bset(thread|proc)title\\b",name:"support.function.proctitle.php"},{match:`(?xi)\\b +pspell_( +store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session| +config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal) +)\\b`,name:"support.function.pspell.php"},{match:"(?i)\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\b",name:"support.function.readline.php"},{match:"(?i)\\brecode(_(string|file))?\\b",name:"support.function.recode.php"},{match:"(?i)\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\b",name:"support.function.rrd.php"},{match:`(?xi)\\b +( +shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok| +msg_((get|remove|set|stat)_queue|send|queue_exists|receive) +)\\b`,name:"support.function.sem.php"},{match:`(?xi)\\b +session_( +status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)| +is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?| +regenerate_id|get_cookie_params|module_name +)\\b`,name:"support.function.session.php"},{match:"(?i)\\bshmop_(size|close|open|delete|write|read)\\b",name:"support.function.shmop.php"},{match:"(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",name:"support.function.simplexml.php"},{match:`(?xi)\\b +( +snmp(walk(oid)?|realwalk|get(next)?|set)| +snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib| +get_(valueretrieval|quick_print))| +snmp[23]_(set|walk|real_walk|get(next)?) +)\\b`,name:"support.function.snmp.php"},{match:"(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",name:"support.function.soap.php"},{match:`(?xi)\\b +socket_( +shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind| +create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?| +read|get(peer|sock)name|get_option +)\\b`,name:"support.function.sockets.php"},{match:`(?xi)\\b +sqlite_( +single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close| +create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev| +escape_string|error_string|exec|valid|key|query|field_name|factory| +fetch_(string|single|column_types|object|all|array)|lib(encoding|version)| +last_(insert_rowid|error)|array_query|rewind|busy_timeout +)\\b`,name:"support.function.sqlite.php"},{match:`(?xi)\\b +sqlsrv_( +send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit| +client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?| +free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction +)\\b`,name:"support.function.sqlsrv.php"},{match:`(?xi)\\b +stats_( +harmonic_mean|covariance|standard_deviation|skew| +cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull| +logistic|laplace|gamma|binomial|beta)| +stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)| +dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f| +weibull|logistic|laplace|gamma|beta)| +den_uniform|variance|kurtosis|absolute_deviation| +rand_(setall|phrase_to_seeds|ranf|get_seeds| +gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int| +i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)) +)\\b`,name:"support.function.stats.php"},{match:`(?xi)\\b +( +set_socket_blocking| +stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)| +set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock| +context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local| +encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)| +resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)| +bucket_(new|prepend|append|make_writeable) +) +)\\b`,name:"support.function.streamsfuncs.php"},{match:`(?xi)\\b +( +money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?| +str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)| +str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)| +strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale| +html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo| +chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord| +uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)| +quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table +)\\b`,name:"support.function.string.php"},{match:`(?xi)\\b +sybase_( +set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek| +unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result| +affected_rows|result|get_last_message|min_(client|error|message|server)_severity +)\\b`,name:"support.function.sybase.php"},{match:"(?i)\\b(taint|is_tainted|untaint)\\b",name:"support.function.taint.php"},{match:`(?xi)\\b +( +tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose| +(access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)| +get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))| +ob_tidyhandler +)\\b`,name:"support.function.tidy.php"},{match:"(?i)\\btoken_(name|get_all)\\b",name:"support.function.tokenizer.php"},{match:`(?xi)\\b +trader_( +stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma| +ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl| +cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines| +hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall| +counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer| +identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river| +upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)| +piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji| +ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite| +gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu| +belthold|breakaway)| +ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo| +plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands| +linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice| +aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]| +minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)? +)\\b`,name:"support.function.trader.php"},{match:"(?i)\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\b",name:"support.function.uopz.php"},{match:"(?i)\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\b",name:"support.function.url.php"},{match:`(?xi)\\b +( +strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset| +is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)| +unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type) +)\\b`,name:"support.function.var.php"},{match:"(?i)\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\b",name:"support.function.wddx.php"},{match:"(?i)\\bxhprof_(sample_)?(disable|enable)\\b",name:"support.function.xhprof.php"},{match:`(?xi) +\\b +( +utf8_(decode|encode)| +xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler| +(character_data|default|element|external_entity_ref|processing_instruction)_handler|object)| +parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string| +get_(current_((column|line)_number|byte_index)|error_code)) +)\\b`,name:"support.function.xml.php"},{match:`(?xi)\\b +xmlrpc_( +server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))| +is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type +)\\b`,name:"support.function.xmlrpc.php"},{match:`(?xi)\\b +xmlwriter_( +(end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)| +(start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)| +full_end_element|flush| +)\\b`,name:"support.function.xmlwriter.php"},{match:`(?xi)\\b +( +zlib_(decode|encode|get_coding_type)|readgzfile| +gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file| +write|rewind|read|getc|getss?) +)\\b`,name:"support.function.zlib.php"},{match:"(?i)\\bis_int(eger)?\\b",name:"support.function.alias.php"}]},switch_statement:{patterns:[{match:"\\s+(?=switch\\b)"},{begin:"\\bswitch\\b(?!\\s*\\(.*\\)\\s*:)",beginCaptures:{0:{name:"keyword.control.switch.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.section.switch-block.end.bracket.curly.php"}},name:"meta.switch-statement.php",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.switch-expression.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.switch-expression.end.bracket.round.php"}},patterns:[{include:"#language"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.section.switch-block.begin.bracket.curly.php"}},end:"(?=}|\\?>)",patterns:[{include:"#language"}]}]}]},"use-inner":{patterns:[{include:"#comments"},{begin:"(?i)\\b(as)\\s+",beginCaptures:{1:{name:"keyword.other.use-as.php"}},end:"(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",endCaptures:{0:{name:"entity.other.alias.php"}}},{include:"#class-name"},{match:",",name:"punctuation.separator.delimiter.php"}]},var_basic:{patterns:[{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(?i)(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\b",name:"variable.other.php"}]},var_global:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\b",name:"variable.other.global.php"},var_global_safer:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",name:"variable.other.global.safer.php"},var_language:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)this\\b",name:"variable.language.this.php"},"variable-name":{patterns:[{include:"#var_global"},{include:"#var_global_safer"},{captures:{1:{name:"variable.other.php"},2:{name:"punctuation.definition.variable.php"},4:{name:"keyword.operator.class.php"},5:{name:"variable.other.property.php"},6:{name:"punctuation.section.array.begin.php"},7:{name:"constant.numeric.index.php"},8:{name:"variable.other.index.php"},9:{name:"punctuation.definition.variable.php"},10:{name:"string.unquoted.index.php"},11:{name:"punctuation.section.array.end.php"}},match:`(?xi) +((\\$)(?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)) +(?: +(->)(\\g) +| +(\\[)(?:(\\d+)|((\\$)\\g)|([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*))(\\]) +)?`},{captures:{1:{name:"variable.other.php"},2:{name:"punctuation.definition.variable.php"},4:{name:"punctuation.definition.variable.php"}},match:"(?i)((\\${)(?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(}))"}]},variables:{patterns:[{include:"#var_language"},{include:"#var_global"},{include:"#var_global_safer"},{include:"#var_basic"},{begin:"\\${(?=.*?})",beginCaptures:{0:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"#language"}]}]}},scopeName:"text.html.php.blade",embeddedLangs:["html","xml","sql","javascript","json","css"]});var l=[...e,...n,...t,...a,...r,...i,p];export{l as default}; diff --git a/assets/chunks/c.RCJZWN-0.js b/assets/chunks/c.RCJZWN-0.js new file mode 100644 index 000000000..4bfa82916 --- /dev/null +++ b/assets/chunks/c.RCJZWN-0.js @@ -0,0 +1,81 @@ +const e=Object.freeze({displayName:"C",name:"c",patterns:[{include:"#preprocessor-rule-enabled"},{include:"#preprocessor-rule-disabled"},{include:"#preprocessor-rule-conditional"},{include:"#predefined_macros"},{include:"#comments"},{include:"#switch_statement"},{include:"#anon_pattern_1"},{include:"#storage_types"},{include:"#anon_pattern_2"},{include:"#anon_pattern_3"},{include:"#anon_pattern_4"},{include:"#anon_pattern_5"},{include:"#anon_pattern_6"},{include:"#anon_pattern_7"},{include:"#operators"},{include:"#numbers"},{include:"#strings"},{include:"#anon_pattern_range_1"},{include:"#anon_pattern_range_2"},{include:"#anon_pattern_range_3"},{include:"#pragma-mark"},{include:"#anon_pattern_range_4"},{include:"#anon_pattern_range_5"},{include:"#anon_pattern_range_6"},{include:"#anon_pattern_8"},{include:"#anon_pattern_9"},{include:"#anon_pattern_10"},{include:"#anon_pattern_11"},{include:"#anon_pattern_12"},{include:"#anon_pattern_13"},{include:"#block"},{include:"#parens"},{include:"#anon_pattern_range_7"},{include:"#line_continuation_character"},{include:"#anon_pattern_range_8"},{include:"#anon_pattern_range_9"},{include:"#anon_pattern_14"},{include:"#anon_pattern_15"}],repository:{"access-method":{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",beginCaptures:{1:{name:"variable.object.c"},2:{name:"punctuation.separator.dot-access.c"},3:{name:"punctuation.separator.pointer-access.c"},4:{patterns:[{match:"\\.",name:"punctuation.separator.dot-access.c"},{match:"->",name:"punctuation.separator.pointer-access.c"},{match:"[a-zA-Z_][a-zA-Z_0-9]*",name:"variable.object.c"},{match:".+",name:"everything.else.c"}]},5:{name:"entity.name.function.member.c"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.member.c"}},name:"meta.function-call.member.c",patterns:[{include:"#function-call-innards"}]},anon_pattern_1:{match:"\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",name:"keyword.control.c"},anon_pattern_10:{match:`(?x) \\b +(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t +|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t +|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t +|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t +|uintmax_t|uintmax_t) +\\b`,name:"support.type.stdint.c"},anon_pattern_11:{match:"\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",name:"support.constant.mac-classic.c"},anon_pattern_12:{match:`(?x) \\b +(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam +|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr +|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber +|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64 +|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32 +|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr +|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char) +\\b`,name:"support.type.mac-classic.c"},anon_pattern_13:{match:"\\b([A-Za-z0-9_]+_t)\\b",name:"support.type.posix-reserved.c"},anon_pattern_14:{match:";",name:"punctuation.terminator.statement.c"},anon_pattern_15:{match:",",name:"punctuation.separator.delimiter.c"},anon_pattern_2:{match:"typedef",name:"keyword.other.typedef.c"},anon_pattern_3:{match:"\\b(const|extern|register|restrict|static|volatile|inline)\\b",name:"storage.modifier.c"},anon_pattern_4:{match:"\\bk[A-Z]\\w*\\b",name:"constant.other.variable.mac-classic.c"},anon_pattern_5:{match:"\\bg[A-Z]\\w*\\b",name:"variable.other.readwrite.global.mac-classic.c"},anon_pattern_6:{match:"\\bs[A-Z]\\w*\\b",name:"variable.other.readwrite.static.mac-classic.c"},anon_pattern_7:{match:"\\b(NULL|true|false|TRUE|FALSE)\\b",name:"constant.language.c"},anon_pattern_8:{match:"\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",name:"support.type.sys-types.c"},anon_pattern_9:{match:"\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",name:"support.type.pthread.c"},anon_pattern_range_1:{begin:"((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((#)\\s*define\\b)\\s+((?",endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.other.lt-gt.include.c"}]},anon_pattern_range_4:{begin:"^\\s*((#)\\s*line)\\b",beginCaptures:{1:{name:"keyword.control.directive.line.c"},2:{name:"punctuation.definition.directive.c"}},end:"(?=(?://|/\\*))|(?=+!]+ | \\(\\) | \\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"variable.other.c"},2:{name:"punctuation.section.parens.begin.bracket.round.initialization.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.initialization.c"}},name:"meta.initialization.c",patterns:[{include:"#function-call-innards"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.c"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.c"}},patterns:[{include:"#block_innards"}]},{include:"#parens-block"},{include:"$self"}]},c_conditional_context:{patterns:[{include:"$self"},{include:"#block_innards"}]},c_function_call:{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +(?= +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)",name:"meta.function-call.c",patterns:[{include:"#function-call-innards"}]},case_statement:{begin:"((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\s*)(\\/\\/[!\\/]+)",beginCaptures:{1:{name:"punctuation.definition.comment.documentation.c"}},end:"(?<=\\n)(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.italic.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.bold.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.inline.raw.string.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.c"}]},3:{name:"variable.parameter.c"}},match:"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?:\\b[A-Z]+:|@[a-z_]+:)",name:"storage.type.class.gtkdoc"}]},{captures:{1:{name:"punctuation.definition.comment.begin.documentation.c"},2:{patterns:[{match:'(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.italic.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.bold.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.inline.raw.string.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.c"}]},3:{name:"variable.parameter.c"}},match:"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?:\\b[A-Z]+:|@[a-z_]+:)",name:"storage.type.class.gtkdoc"}]},3:{name:"punctuation.definition.comment.end.documentation.c"}},match:"(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)",name:"comment.block.documentation.c"},{begin:"((?>\\s*)\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s)))",beginCaptures:{1:{name:"punctuation.definition.comment.begin.documentation.c"}},end:"([!*]*\\*\\/)",endCaptures:{1:{name:"punctuation.definition.comment.end.documentation.c"}},name:"comment.block.documentation.c",patterns:[{match:'(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.italic.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.bold.doxygen.c"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{name:"markup.inline.raw.string.c"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{captures:{1:{name:"storage.type.class.doxygen.c"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.c"}]},3:{name:"variable.parameter.c"}},match:"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.c"},{match:"(?:\\b[A-Z]+:|@[a-z_]+:)",name:"storage.type.class.gtkdoc"}]},{captures:{1:{name:"meta.toc-list.banner.block.c"}},match:"^\\/\\* =(\\s*.*?)\\s*= \\*\\/$\\n?",name:"comment.block.banner.c"},{begin:"(\\/\\*)",beginCaptures:{1:{name:"punctuation.definition.comment.begin.c"}},end:"(\\*\\/)",endCaptures:{1:{name:"punctuation.definition.comment.end.c"}},name:"comment.block.c"},{captures:{1:{name:"meta.toc-list.banner.line.c"}},match:"^\\/\\/ =(\\s*.*?)\\s*=$\\n?",name:"comment.line.banner.c"},{begin:"((?:^[ \\t]+)?)(?=\\/\\/)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.c"}},end:"(?!\\G)",patterns:[{begin:"(\\/\\/)",beginCaptures:{1:{name:"punctuation.definition.comment.c"}},end:"(?=\\n)",name:"comment.line.double-slash.c",patterns:[{include:"#line_continuation_character"}]}]}]},{include:"#block_comment"},{include:"#line_comment"}]},{include:"#block_comment"},{include:"#line_comment"}]},default_statement:{begin:"((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.c"},2:{name:"punctuation.section.arguments.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.c"}},patterns:[{include:"#function-call-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.c"}},patterns:[{include:"#function-call-innards"}]},{include:"#block_innards"}]},"function-innards":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#operators"},{include:"#vararg_ellipses"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.c"},2:{name:"punctuation.section.parameters.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.c"}},name:"meta.function.definition.parameters.c",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.c"}},patterns:[{include:"#function-innards"}]},{include:"$self"}]},inline_comment:{patterns:[{patterns:[{captures:{1:{name:"comment.block.c punctuation.definition.comment.begin.c"},2:{name:"comment.block.c"},3:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]}},match:"(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/))"},{captures:{1:{name:"comment.block.c punctuation.definition.comment.begin.c"},2:{name:"comment.block.c"},3:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]}},match:"(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))"}]},{captures:{1:{name:"comment.block.c punctuation.definition.comment.begin.c"},2:{name:"comment.block.c"},3:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]}},match:"(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))"}]},line_comment:{patterns:[{begin:"\\s*+(\\/\\/)",beginCaptures:{1:{name:"punctuation.definition.comment.c"}},end:"(?<=\\n)(?\\*|->)))"}]},5:{name:"variable.other.member.c"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|atomic_uintptr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintmax_t|pthread_mutex_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_attr_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_cond_t|pthread_once_t|uint_fast64_t|uint_fast16_t|atomic_size_t|uint_least8_t|int_least64_t|int_least32_t|int_least16_t|pthread_key_t|atomic_ullong|atomic_ushort|uint_fast32_t|atomic_schar|atomic_short|uint_fast8_t|int_fast64_t|int_fast32_t|int_fast16_t|atomic_ulong|atomic_llong|int_least8_t|atomic_uchar|memory_order|suseconds_t|int_fast8_t|atomic_bool|atomic_char|atomic_uint|atomic_long|atomic_int|useconds_t|_Imaginary|blksize_t|pthread_t|in_addr_t|uintptr_t|in_port_t|uintmax_t|uintmax_t|blkcnt_t|uint16_t|unsigned|_Complex|uint32_t|intptr_t|intmax_t|intmax_t|uint64_t|u_quad_t|int64_t|int32_t|ssize_t|caddr_t|clock_t|uint8_t|u_short|swblk_t|segsz_t|int16_t|fixpt_t|daddr_t|nlink_t|qaddr_t|size_t|time_t|mode_t|signed|quad_t|ushort|u_long|u_char|double|int8_t|ino_t|uid_t|pid_t|_Bool|float|dev_t|div_t|short|gid_t|off_t|u_int|key_t|id_t|uint|long|void|char|bool|id_t|int)\\b)[a-zA-Z_]\\w*\\b(?!\\())"},method_access:{begin:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",beginCaptures:{1:{name:"variable.other.object.access.c"},2:{name:"punctuation.separator.dot-access.c"},3:{name:"punctuation.separator.pointer-access.c"},4:{patterns:[{include:"#member_access"},{include:"#method_access"},{captures:{1:{name:"variable.other.object.access.c"},2:{name:"punctuation.separator.dot-access.c"},3:{name:"punctuation.separator.pointer-access.c"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))"}]},5:{name:"entity.name.function.member.c"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.c"}},contentName:"meta.function-call.member.c",end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.function.member.c"}},patterns:[{include:"#function-call-innards"}]},numbers:{captures:{0:{patterns:[{begin:"(?=.)",end:"$",patterns:[{captures:{1:{name:"keyword.other.unit.hexadecimal.c"},2:{name:"constant.numeric.hexadecimal.c",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric"}]},3:{name:"punctuation.separator.constant.numeric"},4:{name:"constant.numeric.hexadecimal.c"},5:{name:"constant.numeric.hexadecimal.c",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric"}]},6:{name:"punctuation.separator.constant.numeric"},8:{name:"keyword.other.unit.exponent.hexadecimal.c"},9:{name:"keyword.operator.plus.exponent.hexadecimal.c"},10:{name:"keyword.operator.minus.exponent.hexadecimal.c"},11:{name:"constant.numeric.exponent.hexadecimal.c",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric"}]},12:{name:"keyword.other.unit.suffix.floating-point.c"}},match:"(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.c"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.c"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.c"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.c"},{match:"&|\\||\\^|~",name:"keyword.operator.c"},{match:"=",name:"keyword.operator.assignment.c"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.c"},{begin:"(\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.c"}},end:"(:)",endCaptures:{1:{name:"keyword.operator.ternary.c"}},patterns:[{include:"#function-call-innards"},{include:"$self"}]}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.c"}},name:"meta.parens.c",patterns:[{include:"$self"}]},"parens-block":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.c"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.c"}},name:"meta.parens.block.c",patterns:[{include:"#block_innards"},{match:"(?-mix:(?=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.c"},2:{name:"punctuation.section.arguments.begin.bracket.round.c"}},end:"(\\))|(?\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))"},static_assert:{begin:"((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",beginCaptures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.c punctuation.definition.comment.begin.c"},3:{name:"comment.block.c"},4:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]},5:{name:"keyword.other.static_assert.c"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.c punctuation.definition.comment.begin.c"},8:{name:"comment.block.c"},9:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]},10:{name:"punctuation.section.arguments.begin.bracket.round.static_assert.c"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.static_assert.c"}},patterns:[{begin:'(,)\\s*(?=(?:L|u8|u|U\\s*\\")?)',beginCaptures:{1:{name:"punctuation.separator.delimiter.comma.c"}},end:"(?=\\))",name:"meta.static_assert.message.c",patterns:[{include:"#string_context"}]},{include:"#evaluation_context"}]},storage_types:{patterns:[{match:"(?-mix:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\n|$)"},{include:"#comments"},{begin:"(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\()",beginCaptures:{1:{name:"punctuation.section.parens.begin.bracket.round.assembly.c"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.c punctuation.definition.comment.begin.c"},4:{name:"comment.block.c"},5:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.assembly.c"}},patterns:[{begin:'(R?)(")',beginCaptures:{1:{name:"meta.encoding.c"},2:{name:"punctuation.definition.string.begin.assembly.c"}},contentName:"meta.embedded.assembly.c",end:'(")',endCaptures:{1:{name:"punctuation.definition.string.end.assembly.c"}},name:"string.quoted.double.c",patterns:[{include:"source.asm"},{include:"source.x86"},{include:"source.x86_64"},{include:"source.arm"},{include:"#backslash_escapes"},{include:"#string_escaped_char"}]},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.parens.begin.bracket.round.assembly.inner.c"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.assembly.inner.c"}},patterns:[{include:"#evaluation_context"}]},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.c punctuation.definition.comment.begin.c"},3:{name:"comment.block.c"},4:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]},5:{name:"variable.other.asm.label.c"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.c punctuation.definition.comment.begin.c"},8:{name:"comment.block.c"},9:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]}},match:"\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))([a-zA-Z_]\\w*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]"},{match:":",name:"punctuation.separator.delimiter.colon.assembly.c"},{include:"#comments"}]}]}]},string_escaped_char:{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.c"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.c"}]},string_placeholder:{patterns:[{match:`(?x) % +(\\d+\\$)? +[#0\\- +']* +[,;:_]? +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? +[diouxXDOUeEfFgGaACcSspn%]`,name:"constant.other.placeholder.c"},{captures:{1:{name:"invalid.illegal.placeholder.c"}},match:'(%)(?!"\\s*(PRI|SCN))'}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.double.c",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.single.c",patterns:[{include:"#string_escaped_char"},{include:"#line_continuation_character"}]}]},switch_conditional_parentheses:{begin:"((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",beginCaptures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.c punctuation.definition.comment.begin.c"},3:{name:"comment.block.c"},4:{patterns:[{match:"\\*\\/",name:"comment.block.c punctuation.definition.comment.end.c"},{match:"\\*",name:"comment.block.c"}]},5:{name:"punctuation.section.parens.begin.bracket.round.conditional.switch.c"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.conditional.switch.c"}},name:"meta.conditional.switch.c",patterns:[{include:"#evaluation_context"},{include:"#c_conditional_context"}]},switch_statement:{begin:"(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?|\\?\\?>)|(?=[;>\\[\\]=]))",name:"meta.block.switch.c",patterns:[{begin:"\\G ?",end:"((?:\\{|<%|\\?\\?<|(?=;)))",endCaptures:{1:{name:"punctuation.section.block.begin.bracket.curly.switch.c"}},name:"meta.head.switch.c",patterns:[{include:"#switch_conditional_parentheses"},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",end:"(\\}|%>|\\?\\?>)",endCaptures:{1:{name:"punctuation.section.block.end.bracket.curly.switch.c"}},name:"meta.body.switch.c",patterns:[{include:"#default_statement"},{include:"#case_statement"},{include:"$self"},{include:"#block_innards"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s\\n]*",end:"[\\s\\n]*(?=;)",name:"meta.tail.switch.c",patterns:[{include:"$self"}]}]},vararg_ellipses:{match:"(?&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])\\s*",beginCaptures:{1:{name:"keyword.operator.function-result.cadence"}},end:"(?!\\G)(?=\\{|;)|$",name:"meta.function-result.cadence",patterns:[{include:"#type"}]},initializer:{begin:"(?|<|>=|<=",name:"keyword.operator.comparison.cadence"},{match:"\\?\\?",name:"keyword.operator.coalescing.cadence"},{match:"&&|\\|\\|",name:"keyword.operator.logical.cadence"},{match:"[?!]",name:"keyword.operator.type.optional.cadence"}]},"parameter-clause":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.cadence"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.cadence"}},name:"meta.parameter-clause.cadence",patterns:[{include:"#parameter-list"}]},"parameter-list":{patterns:[{captures:{1:{name:"entity.name.function.cadence"},2:{name:"variable.parameter.function.cadence"}},comment:"External parameter labels are considered part of the function name",match:"([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(?=\\s*:)"},{captures:{1:{name:"variable.parameter.function.cadence"},2:{name:"entity.name.function.cadence"}},comment:"If no external label is given, the name is both the external label and the internal variable name",match:"(([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*))(?=\\s*:)"},{begin:":\\s*(?!\\s)",end:"(?=[,)])",patterns:[{include:"#type"},{match:":",name:"invalid.illegal.extra-colon-in-parameter-list.cadence"}]}]},type:{patterns:[{include:"#comments"},{match:"([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",name:"storage.type.cadence"}]},"var-let-declaration":{begin:"\\b(var|let)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",beginCaptures:{1:{name:"storage.type.$1.cadence"},2:{name:"entity.name.type.$1.cadence"}},end:"=|<-|<-!|$",patterns:[{include:"#type"}]}},scopeName:"source.cadence",aliases:["cdc"]});var n=[e];export{n as default}; diff --git a/assets/chunks/catppuccin-frappe.CSPeAESR.js b/assets/chunks/catppuccin-frappe.CSPeAESR.js new file mode 100644 index 000000000..07b94dc34 --- /dev/null +++ b/assets/chunks/catppuccin-frappe.CSPeAESR.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#00000000","activityBar.activeBorder":"#00000000","activityBar.activeFocusBorder":"#00000000","activityBar.background":"#232634","activityBar.border":"#00000000","activityBar.dropBorder":"#ca9ee633","activityBar.foreground":"#ca9ee6","activityBar.inactiveForeground":"#737994","activityBarBadge.background":"#ca9ee6","activityBarBadge.foreground":"#232634","activityBarTop.activeBorder":"#00000000","activityBarTop.dropBorder":"#ca9ee633","activityBarTop.foreground":"#ca9ee6","activityBarTop.inactiveForeground":"#737994","badge.background":"#51576d","badge.foreground":"#c6d0f5","banner.background":"#51576d","banner.foreground":"#c6d0f5","banner.iconForeground":"#c6d0f5","breadcrumb.activeSelectionForeground":"#ca9ee6","breadcrumb.background":"#303446","breadcrumb.focusForeground":"#ca9ee6","breadcrumb.foreground":"#c6d0f5cc","breadcrumbPicker.background":"#292c3c","button.background":"#ca9ee6","button.border":"#00000000","button.foreground":"#232634","button.hoverBackground":"#d9baed","button.secondaryBackground":"#626880","button.secondaryBorder":"#ca9ee6","button.secondaryForeground":"#c6d0f5","button.secondaryHoverBackground":"#727993","button.separator":"#00000000","charts.blue":"#8caaee","charts.foreground":"#c6d0f5","charts.green":"#a6d189","charts.lines":"#b5bfe2","charts.orange":"#ef9f76","charts.purple":"#ca9ee6","charts.red":"#e78284","charts.yellow":"#e5c890","checkbox.background":"#51576d","checkbox.border":"#00000000","checkbox.foreground":"#ca9ee6","commandCenter.activeBackground":"#62688033","commandCenter.activeBorder":"#ca9ee6","commandCenter.activeForeground":"#ca9ee6","commandCenter.background":"#292c3c","commandCenter.border":"#00000000","commandCenter.foreground":"#b5bfe2","commandCenter.inactiveBorder":"#00000000","commandCenter.inactiveForeground":"#b5bfe2","debugConsole.errorForeground":"#e78284","debugConsole.infoForeground":"#8caaee","debugConsole.sourceForeground":"#f2d5cf","debugConsole.warningForeground":"#ef9f76","debugConsoleInputIcon.foreground":"#c6d0f5","debugExceptionWidget.background":"#232634","debugExceptionWidget.border":"#ca9ee6","debugIcon.breakpointCurrentStackframeForeground":"#626880","debugIcon.breakpointDisabledForeground":"#e7828499","debugIcon.breakpointForeground":"#e78284","debugIcon.breakpointStackframeForeground":"#626880","debugIcon.breakpointUnverifiedForeground":"#a57582","debugIcon.continueForeground":"#a6d189","debugIcon.disconnectForeground":"#626880","debugIcon.pauseForeground":"#8caaee","debugIcon.restartForeground":"#81c8be","debugIcon.startForeground":"#a6d189","debugIcon.stepBackForeground":"#626880","debugIcon.stepIntoForeground":"#c6d0f5","debugIcon.stepOutForeground":"#c6d0f5","debugIcon.stepOverForeground":"#ca9ee6","debugIcon.stopForeground":"#e78284","debugTokenExpression.boolean":"#ca9ee6","debugTokenExpression.error":"#e78284","debugTokenExpression.number":"#ef9f76","debugTokenExpression.string":"#a6d189","debugToolBar.background":"#232634","debugToolBar.border":"#00000000",descriptionForeground:"#c6d0f5","diffEditor.border":"#626880","diffEditor.diagonalFill":"#62688099","diffEditor.insertedLineBackground":"#a6d18926","diffEditor.insertedTextBackground":"#a6d1891a","diffEditor.removedLineBackground":"#e7828426","diffEditor.removedTextBackground":"#e782841a","diffEditorOverview.insertedForeground":"#a6d189cc","diffEditorOverview.removedForeground":"#e78284cc",disabledForeground:"#a5adce","dropdown.background":"#292c3c","dropdown.border":"#ca9ee6","dropdown.foreground":"#c6d0f5","dropdown.listBackground":"#626880","editor.background":"#303446","editor.findMatchBackground":"#674b59","editor.findMatchBorder":"#e7828433","editor.findMatchHighlightBackground":"#506373","editor.findMatchHighlightBorder":"#99d1db33","editor.findRangeHighlightBackground":"#506373","editor.findRangeHighlightBorder":"#99d1db33","editor.focusedStackFrameHighlightBackground":"#a6d18926","editor.foldBackground":"#99d1db40","editor.foreground":"#c6d0f5","editor.hoverHighlightBackground":"#99d1db40","editor.lineHighlightBackground":"#c6d0f512","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#99d1db40","editor.rangeHighlightBorder":"#00000000","editor.selectionBackground":"#949cbb40","editor.selectionHighlightBackground":"#949cbb33","editor.selectionHighlightBorder":"#949cbb33","editor.stackFrameHighlightBackground":"#e5c89026","editor.wordHighlightBackground":"#949cbb33","editorBracketHighlight.foreground1":"#e78284","editorBracketHighlight.foreground2":"#ef9f76","editorBracketHighlight.foreground3":"#e5c890","editorBracketHighlight.foreground4":"#a6d189","editorBracketHighlight.foreground5":"#85c1dc","editorBracketHighlight.foreground6":"#ca9ee6","editorBracketHighlight.unexpectedBracket.foreground":"#ea999c","editorBracketMatch.background":"#949cbb1a","editorBracketMatch.border":"#949cbb","editorCodeLens.foreground":"#838ba7","editorCursor.background":"#303446","editorCursor.foreground":"#f2d5cf","editorError.background":"#00000000","editorError.border":"#00000000","editorError.foreground":"#e78284","editorGroup.border":"#626880","editorGroup.dropBackground":"#ca9ee633","editorGroup.emptyBackground":"#303446","editorGroupHeader.tabsBackground":"#232634","editorGutter.addedBackground":"#a6d189","editorGutter.background":"#303446","editorGutter.commentRangeForeground":"#949cbb","editorGutter.deletedBackground":"#e78284","editorGutter.foldingControlForeground":"#949cbb","editorGutter.modifiedBackground":"#e5c890","editorHoverWidget.background":"#292c3c","editorHoverWidget.border":"#626880","editorHoverWidget.foreground":"#c6d0f5","editorIndentGuide.activeBackground":"#626880","editorIndentGuide.background":"#51576d","editorInfo.background":"#00000000","editorInfo.border":"#00000000","editorInfo.foreground":"#8caaee","editorInlayHint.background":"#292c3cbf","editorInlayHint.foreground":"#626880","editorInlayHint.parameterBackground":"#292c3cbf","editorInlayHint.parameterForeground":"#a5adce","editorInlayHint.typeBackground":"#292c3cbf","editorInlayHint.typeForeground":"#b5bfe2","editorLightBulb.foreground":"#e5c890","editorLineNumber.activeForeground":"#ca9ee6","editorLineNumber.foreground":"#838ba7","editorLink.activeForeground":"#ca9ee6","editorMarkerNavigation.background":"#292c3c","editorMarkerNavigationError.background":"#e78284","editorMarkerNavigationInfo.background":"#8caaee","editorMarkerNavigationWarning.background":"#ef9f76","editorOverviewRuler.background":"#292c3c","editorOverviewRuler.border":"#c6d0f512","editorOverviewRuler.modifiedForeground":"#e5c890","editorRuler.foreground":"#626880","editorStickyScrollHover.background":"#414559","editorSuggestWidget.background":"#292c3c","editorSuggestWidget.border":"#626880","editorSuggestWidget.foreground":"#c6d0f5","editorSuggestWidget.highlightForeground":"#ca9ee6","editorSuggestWidget.selectedBackground":"#414559","editorWarning.background":"#00000000","editorWarning.border":"#00000000","editorWarning.foreground":"#ef9f76","editorWhitespace.foreground":"#949cbb66","editorWidget.background":"#292c3c","editorWidget.foreground":"#c6d0f5","editorWidget.resizeBorder":"#626880",errorForeground:"#e78284","errorLens.errorBackground":"#e7828426","errorLens.errorBackgroundLight":"#e7828426","errorLens.errorForeground":"#e78284","errorLens.errorForegroundLight":"#e78284","errorLens.errorMessageBackground":"#e7828426","errorLens.hintBackground":"#a6d18926","errorLens.hintBackgroundLight":"#a6d18926","errorLens.hintForeground":"#a6d189","errorLens.hintForegroundLight":"#a6d189","errorLens.hintMessageBackground":"#a6d18926","errorLens.infoBackground":"#8caaee26","errorLens.infoBackgroundLight":"#8caaee26","errorLens.infoForeground":"#8caaee","errorLens.infoForegroundLight":"#8caaee","errorLens.infoMessageBackground":"#8caaee26","errorLens.statusBarErrorForeground":"#e78284","errorLens.statusBarHintForeground":"#a6d189","errorLens.statusBarIconErrorForeground":"#e78284","errorLens.statusBarIconWarningForeground":"#ef9f76","errorLens.statusBarInfoForeground":"#8caaee","errorLens.statusBarWarningForeground":"#ef9f76","errorLens.warningBackground":"#ef9f7626","errorLens.warningBackgroundLight":"#ef9f7626","errorLens.warningForeground":"#ef9f76","errorLens.warningForegroundLight":"#ef9f76","errorLens.warningMessageBackground":"#ef9f7626","extensionBadge.remoteBackground":"#8caaee","extensionBadge.remoteForeground":"#232634","extensionButton.prominentBackground":"#ca9ee6","extensionButton.prominentForeground":"#232634","extensionButton.prominentHoverBackground":"#d9baed","extensionButton.separator":"#303446","extensionIcon.preReleaseForeground":"#626880","extensionIcon.sponsorForeground":"#f4b8e4","extensionIcon.starForeground":"#e5c890","extensionIcon.verifiedForeground":"#a6d189",focusBorder:"#ca9ee6",foreground:"#c6d0f5","gitDecoration.addedResourceForeground":"#a6d189","gitDecoration.conflictingResourceForeground":"#ca9ee6","gitDecoration.deletedResourceForeground":"#e78284","gitDecoration.ignoredResourceForeground":"#737994","gitDecoration.modifiedResourceForeground":"#e5c890","gitDecoration.stageDeletedResourceForeground":"#e78284","gitDecoration.stageModifiedResourceForeground":"#e5c890","gitDecoration.submoduleResourceForeground":"#8caaee","gitDecoration.untrackedResourceForeground":"#a6d189","gitlens.closedAutolinkedIssueIconColor":"#ca9ee6","gitlens.closedPullRequestIconColor":"#e78284","gitlens.decorations.branchAheadForegroundColor":"#a6d189","gitlens.decorations.branchBehindForegroundColor":"#ef9f76","gitlens.decorations.branchDivergedForegroundColor":"#e5c890","gitlens.decorations.branchMissingUpstreamForegroundColor":"#ef9f76","gitlens.decorations.branchUnpublishedForegroundColor":"#a6d189","gitlens.decorations.statusMergingOrRebasingConflictForegroundColor":"#ea999c","gitlens.decorations.statusMergingOrRebasingForegroundColor":"#e5c890","gitlens.decorations.workspaceCurrentForegroundColor":"#ca9ee6","gitlens.decorations.workspaceRepoMissingForegroundColor":"#a5adce","gitlens.decorations.workspaceRepoOpenForegroundColor":"#ca9ee6","gitlens.decorations.worktreeHasUncommittedChangesForegroundColor":"#ef9f76","gitlens.decorations.worktreeMissingForegroundColor":"#ea999c","gitlens.graphChangesColumnAddedColor":"#a6d189","gitlens.graphChangesColumnDeletedColor":"#e78284","gitlens.graphLane10Color":"#f4b8e4","gitlens.graphLane1Color":"#ca9ee6","gitlens.graphLane2Color":"#e5c890","gitlens.graphLane3Color":"#8caaee","gitlens.graphLane4Color":"#eebebe","gitlens.graphLane5Color":"#a6d189","gitlens.graphLane6Color":"#babbf1","gitlens.graphLane7Color":"#f2d5cf","gitlens.graphLane8Color":"#e78284","gitlens.graphLane9Color":"#81c8be","gitlens.graphMinimapMarkerHeadColor":"#a6d189","gitlens.graphMinimapMarkerHighlightsColor":"#e5c890","gitlens.graphMinimapMarkerLocalBranchesColor":"#8caaee","gitlens.graphMinimapMarkerRemoteBranchesColor":"#769aeb","gitlens.graphMinimapMarkerStashesColor":"#ca9ee6","gitlens.graphMinimapMarkerTagsColor":"#eebebe","gitlens.graphMinimapMarkerUpstreamColor":"#98ca77","gitlens.graphScrollMarkerHeadColor":"#a6d189","gitlens.graphScrollMarkerHighlightsColor":"#e5c890","gitlens.graphScrollMarkerLocalBranchesColor":"#8caaee","gitlens.graphScrollMarkerRemoteBranchesColor":"#769aeb","gitlens.graphScrollMarkerStashesColor":"#ca9ee6","gitlens.graphScrollMarkerTagsColor":"#eebebe","gitlens.graphScrollMarkerUpstreamColor":"#98ca77","gitlens.gutterBackgroundColor":"#4145594d","gitlens.gutterForegroundColor":"#c6d0f5","gitlens.gutterUncommittedForegroundColor":"#ca9ee6","gitlens.lineHighlightBackgroundColor":"#ca9ee626","gitlens.lineHighlightOverviewRulerColor":"#ca9ee6cc","gitlens.mergedPullRequestIconColor":"#ca9ee6","gitlens.openAutolinkedIssueIconColor":"#a6d189","gitlens.openPullRequestIconColor":"#a6d189","gitlens.trailingLineBackgroundColor":"#00000000","gitlens.trailingLineForegroundColor":"#c6d0f54d","gitlens.unpublishedChangesIconColor":"#a6d189","gitlens.unpublishedCommitIconColor":"#a6d189","gitlens.unpulledChangesIconColor":"#ef9f76","icon.foreground":"#ca9ee6","input.background":"#414559","input.border":"#00000000","input.foreground":"#c6d0f5","input.placeholderForeground":"#c6d0f573","inputOption.activeBackground":"#626880","inputOption.activeBorder":"#ca9ee6","inputOption.activeForeground":"#c6d0f5","inputValidation.errorBackground":"#e78284","inputValidation.errorBorder":"#23263433","inputValidation.errorForeground":"#232634","inputValidation.infoBackground":"#8caaee","inputValidation.infoBorder":"#23263433","inputValidation.infoForeground":"#232634","inputValidation.warningBackground":"#ef9f76","inputValidation.warningBorder":"#23263433","inputValidation.warningForeground":"#232634","issues.closed":"#ca9ee6","issues.newIssueDecoration":"#f2d5cf","issues.open":"#a6d189","list.activeSelectionBackground":"#414559","list.activeSelectionForeground":"#c6d0f5","list.dropBackground":"#ca9ee633","list.focusAndSelectionBackground":"#51576d","list.focusBackground":"#414559","list.focusForeground":"#c6d0f5","list.focusOutline":"#00000000","list.highlightForeground":"#ca9ee6","list.hoverBackground":"#41455980","list.hoverForeground":"#c6d0f5","list.inactiveSelectionBackground":"#414559","list.inactiveSelectionForeground":"#c6d0f5","list.warningForeground":"#ef9f76","listFilterWidget.background":"#51576d","listFilterWidget.noMatchesOutline":"#e78284","listFilterWidget.outline":"#00000000","menu.background":"#303446","menu.border":"#30344680","menu.foreground":"#c6d0f5","menu.selectionBackground":"#626880","menu.selectionBorder":"#00000000","menu.selectionForeground":"#c6d0f5","menu.separatorBackground":"#626880","menubar.selectionBackground":"#51576d","menubar.selectionForeground":"#c6d0f5","merge.commonContentBackground":"#51576d","merge.commonHeaderBackground":"#626880","merge.currentContentBackground":"#a6d18933","merge.currentHeaderBackground":"#a6d18966","merge.incomingContentBackground":"#8caaee33","merge.incomingHeaderBackground":"#8caaee66","minimap.background":"#292c3c80","minimap.errorHighlight":"#e78284bf","minimap.findMatchHighlight":"#99d1db4d","minimap.selectionHighlight":"#626880bf","minimap.selectionOccurrenceHighlight":"#626880bf","minimap.warningHighlight":"#ef9f76bf","minimapGutter.addedBackground":"#a6d189bf","minimapGutter.deletedBackground":"#e78284bf","minimapGutter.modifiedBackground":"#e5c890bf","minimapSlider.activeBackground":"#ca9ee699","minimapSlider.background":"#ca9ee633","minimapSlider.hoverBackground":"#ca9ee666","notificationCenter.border":"#ca9ee6","notificationCenterHeader.background":"#292c3c","notificationCenterHeader.foreground":"#c6d0f5","notificationLink.foreground":"#8caaee","notificationToast.border":"#ca9ee6","notifications.background":"#292c3c","notifications.border":"#ca9ee6","notifications.foreground":"#c6d0f5","notificationsErrorIcon.foreground":"#e78284","notificationsInfoIcon.foreground":"#8caaee","notificationsWarningIcon.foreground":"#ef9f76","panel.background":"#303446","panel.border":"#626880","panelSection.border":"#626880","panelSection.dropBackground":"#ca9ee633","panelTitle.activeBorder":"#ca9ee6","panelTitle.activeForeground":"#c6d0f5","panelTitle.inactiveForeground":"#a5adce","peekView.border":"#ca9ee6","peekViewEditor.background":"#292c3c","peekViewEditor.matchHighlightBackground":"#99d1db4d","peekViewEditor.matchHighlightBorder":"#00000000","peekViewEditorGutter.background":"#292c3c","peekViewResult.background":"#292c3c","peekViewResult.fileForeground":"#c6d0f5","peekViewResult.lineForeground":"#c6d0f5","peekViewResult.matchHighlightBackground":"#99d1db4d","peekViewResult.selectionBackground":"#414559","peekViewResult.selectionForeground":"#c6d0f5","peekViewTitle.background":"#303446","peekViewTitleDescription.foreground":"#b5bfe2b3","peekViewTitleLabel.foreground":"#c6d0f5","pickerGroup.border":"#ca9ee6","pickerGroup.foreground":"#ca9ee6","problemsErrorIcon.foreground":"#e78284","problemsInfoIcon.foreground":"#8caaee","problemsWarningIcon.foreground":"#ef9f76","progressBar.background":"#ca9ee6","pullRequests.closed":"#e78284","pullRequests.draft":"#949cbb","pullRequests.merged":"#ca9ee6","pullRequests.notification":"#c6d0f5","pullRequests.open":"#a6d189","sash.hoverBorder":"#ca9ee6","scrollbar.shadow":"#232634","scrollbarSlider.activeBackground":"#41455966","scrollbarSlider.background":"#62688080","scrollbarSlider.hoverBackground":"#737994","selection.background":"#ca9ee666","settings.dropdownBackground":"#51576d","settings.dropdownListBorder":"#00000000","settings.focusedRowBackground":"#62688033","settings.headerForeground":"#c6d0f5","settings.modifiedItemIndicator":"#ca9ee6","settings.numberInputBackground":"#51576d","settings.numberInputBorder":"#00000000","settings.textInputBackground":"#51576d","settings.textInputBorder":"#00000000","sideBar.background":"#292c3c","sideBar.border":"#00000000","sideBar.dropBackground":"#ca9ee633","sideBar.foreground":"#c6d0f5","sideBarSectionHeader.background":"#292c3c","sideBarSectionHeader.foreground":"#c6d0f5","sideBarTitle.foreground":"#ca9ee6","statusBar.background":"#232634","statusBar.border":"#00000000","statusBar.debuggingBackground":"#ef9f76","statusBar.debuggingBorder":"#00000000","statusBar.debuggingForeground":"#232634","statusBar.foreground":"#c6d0f5","statusBar.noFolderBackground":"#232634","statusBar.noFolderBorder":"#00000000","statusBar.noFolderForeground":"#c6d0f5","statusBarItem.activeBackground":"#62688066","statusBarItem.errorBackground":"#00000000","statusBarItem.errorForeground":"#e78284","statusBarItem.hoverBackground":"#62688033","statusBarItem.prominentBackground":"#00000000","statusBarItem.prominentForeground":"#ca9ee6","statusBarItem.prominentHoverBackground":"#62688033","statusBarItem.remoteBackground":"#8caaee","statusBarItem.remoteForeground":"#232634","statusBarItem.warningBackground":"#00000000","statusBarItem.warningForeground":"#ef9f76","symbolIcon.arrayForeground":"#ef9f76","symbolIcon.booleanForeground":"#ca9ee6","symbolIcon.classForeground":"#e5c890","symbolIcon.colorForeground":"#f4b8e4","symbolIcon.constantForeground":"#ef9f76","symbolIcon.constructorForeground":"#babbf1","symbolIcon.enumeratorForeground":"#e5c890","symbolIcon.enumeratorMemberForeground":"#e5c890","symbolIcon.eventForeground":"#f4b8e4","symbolIcon.fieldForeground":"#c6d0f5","symbolIcon.fileForeground":"#ca9ee6","symbolIcon.folderForeground":"#ca9ee6","symbolIcon.functionForeground":"#8caaee","symbolIcon.interfaceForeground":"#e5c890","symbolIcon.keyForeground":"#81c8be","symbolIcon.keywordForeground":"#ca9ee6","symbolIcon.methodForeground":"#8caaee","symbolIcon.moduleForeground":"#c6d0f5","symbolIcon.namespaceForeground":"#e5c890","symbolIcon.nullForeground":"#ea999c","symbolIcon.numberForeground":"#ef9f76","symbolIcon.objectForeground":"#e5c890","symbolIcon.operatorForeground":"#81c8be","symbolIcon.packageForeground":"#eebebe","symbolIcon.propertyForeground":"#ea999c","symbolIcon.referenceForeground":"#e5c890","symbolIcon.snippetForeground":"#eebebe","symbolIcon.stringForeground":"#a6d189","symbolIcon.structForeground":"#81c8be","symbolIcon.textForeground":"#c6d0f5","symbolIcon.typeParameterForeground":"#ea999c","symbolIcon.unitForeground":"#c6d0f5","symbolIcon.variableForeground":"#c6d0f5","tab.activeBackground":"#303446","tab.activeBorder":"#00000000","tab.activeBorderTop":"#ca9ee6","tab.activeForeground":"#ca9ee6","tab.activeModifiedBorder":"#e5c890","tab.border":"#292c3c","tab.hoverBackground":"#3a3f55","tab.hoverBorder":"#00000000","tab.hoverForeground":"#ca9ee6","tab.inactiveBackground":"#292c3c","tab.inactiveForeground":"#737994","tab.inactiveModifiedBorder":"#e5c8904d","tab.lastPinnedBorder":"#ca9ee6","tab.unfocusedActiveBackground":"#292c3c","tab.unfocusedActiveBorder":"#00000000","tab.unfocusedActiveBorderTop":"#ca9ee64d","tab.unfocusedInactiveBackground":"#1f212d","table.headerBackground":"#414559","table.headerForeground":"#c6d0f5","terminal.ansiBlack":"#a5adce","terminal.ansiBlue":"#8caaee","terminal.ansiBrightBlack":"#626880","terminal.ansiBrightBlue":"#8caaee","terminal.ansiBrightCyan":"#99d1db","terminal.ansiBrightGreen":"#a6d189","terminal.ansiBrightMagenta":"#f4b8e4","terminal.ansiBrightRed":"#e78284","terminal.ansiBrightWhite":"#51576d","terminal.ansiBrightYellow":"#e5c890","terminal.ansiCyan":"#99d1db","terminal.ansiGreen":"#a6d189","terminal.ansiMagenta":"#f4b8e4","terminal.ansiRed":"#e78284","terminal.ansiWhite":"#b5bfe2","terminal.ansiYellow":"#e5c890","terminal.border":"#626880","terminal.dropBackground":"#ca9ee633","terminal.foreground":"#c6d0f5","terminal.inactiveSelectionBackground":"#62688080","terminal.selectionBackground":"#626880","terminal.tab.activeBorder":"#ca9ee6","terminalCommandDecoration.defaultBackground":"#626880","terminalCommandDecoration.errorBackground":"#e78284","terminalCommandDecoration.successBackground":"#a6d189","terminalCursor.background":"#303446","terminalCursor.foreground":"#f2d5cf","textBlockQuote.background":"#292c3c","textBlockQuote.border":"#232634","textCodeBlock.background":"#303446","textLink.activeForeground":"#99d1db","textLink.foreground":"#8caaee","textPreformat.foreground":"#c6d0f5","textSeparator.foreground":"#ca9ee6","titleBar.activeBackground":"#232634","titleBar.activeForeground":"#c6d0f5","titleBar.border":"#00000000","titleBar.inactiveBackground":"#232634","titleBar.inactiveForeground":"#c6d0f580","tree.inactiveIndentGuidesStroke":"#51576d","tree.indentGuidesStroke":"#949cbb","walkThrough.embeddedEditorBackground":"#3034464d","welcomePage.progress.background":"#232634","welcomePage.progress.foreground":"#ca9ee6","welcomePage.tileBackground":"#292c3c","widget.shadow":"#292c3c80","window.activeBorder":"#00000000","window.inactiveBorder":"#00000000"},displayName:"Catppuccin Frappé",name:"catppuccin-frappe",semanticHighlighting:!0,semanticTokenColors:{boolean:{foreground:"#ef9f76"},"builtinAttribute.attribute.library:rust":{foreground:"#8caaee"},"class.builtin:python":{foreground:"#ca9ee6"},"class:python":{foreground:"#e5c890"},"constant.builtin.readonly:nix":{foreground:"#ca9ee6"},enumMember:{foreground:"#81c8be"},"function.decorator:python":{foreground:"#ef9f76"},"generic.attribute:rust":{foreground:"#c6d0f5"},heading:{foreground:"#e78284"},number:{foreground:"#ef9f76"},pol:{foreground:"#eebebe"},"property.readonly:javascript":{foreground:"#c6d0f5"},"property.readonly:javascriptreact":{foreground:"#c6d0f5"},"property.readonly:typescript":{foreground:"#c6d0f5"},"property.readonly:typescriptreact":{foreground:"#c6d0f5"},selfKeyword:{foreground:"#e78284"},"text.emph":{fontStyle:"italic",foreground:"#e78284"},"text.math":{foreground:"#eebebe"},"text.strong":{fontStyle:"bold",foreground:"#e78284"},tomlArrayKey:{fontStyle:"",foreground:"#8caaee"},tomlTableKey:{fontStyle:"",foreground:"#8caaee"},"type.defaultLibrary:go":{foreground:"#ca9ee6"},"variable.defaultLibrary":{foreground:"#ea999c"},"variable.readonly.defaultLibrary:go":{foreground:"#ca9ee6"},"variable.readonly:javascript":{foreground:"#c6d0f5"},"variable.readonly:javascriptreact":{foreground:"#c6d0f5"},"variable.readonly:scala":{foreground:"#c6d0f5"},"variable.readonly:typescript":{foreground:"#c6d0f5"},"variable.readonly:typescriptreact":{foreground:"#c6d0f5"},"variable.typeHint:python":{foreground:"#e5c890"}},tokenColors:[{scope:["text","source","variable.other.readwrite","punctuation.definition.variable"],settings:{foreground:"#c6d0f5"}},{scope:"punctuation",settings:{fontStyle:"",foreground:"#949cbb"}},{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#737994"}},{scope:["string","punctuation.definition.string"],settings:{foreground:"#a6d189"}},{scope:"constant.character.escape",settings:{foreground:"#f4b8e4"}},{scope:["constant.numeric","variable.other.constant","entity.name.constant","constant.language.boolean","constant.language.false","constant.language.true","keyword.other.unit.user-defined","keyword.other.unit.suffix.floating-point"],settings:{foreground:"#ef9f76"}},{scope:["keyword","keyword.operator.word","keyword.operator.new","variable.language.super","support.type.primitive","storage.type","storage.modifier","punctuation.definition.keyword"],settings:{fontStyle:"",foreground:"#ca9ee6"}},{scope:"entity.name.tag.documentation",settings:{foreground:"#ca9ee6"}},{scope:["keyword.operator","punctuation.accessor","punctuation.definition.generic","meta.function.closure punctuation.section.parameters","punctuation.definition.tag","punctuation.separator.key-value"],settings:{foreground:"#81c8be"}},{scope:["entity.name.function","meta.function-call.method","support.function","support.function.misc","variable.function"],settings:{fontStyle:"italic",foreground:"#8caaee"}},{scope:["entity.name.class","entity.other.inherited-class","support.class","meta.function-call.constructor","entity.name.struct"],settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:"entity.name.enum",settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:["meta.enum variable.other.readwrite","variable.other.enummember"],settings:{foreground:"#81c8be"}},{scope:"meta.property.object",settings:{foreground:"#81c8be"}},{scope:["meta.type","meta.type-alias","support.type","entity.name.type"],settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:["meta.annotation variable.function","meta.annotation variable.annotation.function","meta.annotation punctuation.definition.annotation","meta.decorator","punctuation.decorator"],settings:{foreground:"#ef9f76"}},{scope:["variable.parameter","meta.function.parameters"],settings:{fontStyle:"italic",foreground:"#ea999c"}},{scope:["constant.language","support.function.builtin"],settings:{foreground:"#e78284"}},{scope:"entity.other.attribute-name.documentation",settings:{foreground:"#e78284"}},{scope:["keyword.control.directive","punctuation.definition.directive"],settings:{foreground:"#e5c890"}},{scope:"punctuation.definition.typeparameters",settings:{foreground:"#99d1db"}},{scope:"entity.name.namespace",settings:{foreground:"#e5c890"}},{scope:"support.type.property-name.css",settings:{fontStyle:"",foreground:"#8caaee"}},{scope:["variable.language.this","variable.language.this punctuation.definition.variable"],settings:{foreground:"#e78284"}},{scope:"variable.object.property",settings:{foreground:"#c6d0f5"}},{scope:["string.template variable","string variable"],settings:{foreground:"#c6d0f5"}},{scope:"keyword.operator.new",settings:{fontStyle:"bold"}},{scope:"storage.modifier.specifier.extern.cpp",settings:{foreground:"#ca9ee6"}},{scope:["entity.name.scope-resolution.template.call.cpp","entity.name.scope-resolution.parameter.cpp","entity.name.scope-resolution.cpp","entity.name.scope-resolution.function.definition.cpp"],settings:{foreground:"#e5c890"}},{scope:"storage.type.class.doxygen",settings:{fontStyle:""}},{scope:["storage.modifier.reference.cpp"],settings:{foreground:"#81c8be"}},{scope:"meta.interpolation.cs",settings:{foreground:"#c6d0f5"}},{scope:"comment.block.documentation.cs",settings:{foreground:"#c6d0f5"}},{scope:["source.css entity.other.attribute-name.class.css","entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css"],settings:{foreground:"#e5c890"}},{scope:"punctuation.separator.operator.css",settings:{foreground:"#81c8be"}},{scope:"source.css entity.other.attribute-name.pseudo-class",settings:{foreground:"#81c8be"}},{scope:"source.css constant.other.unicode-range",settings:{foreground:"#ef9f76"}},{scope:"source.css variable.parameter.url",settings:{fontStyle:"",foreground:"#a6d189"}},{scope:["support.type.vendored.property-name"],settings:{foreground:"#99d1db"}},{scope:["source.css meta.property-value variable","source.css meta.property-value variable.other.less","source.css meta.property-value variable.other.less punctuation.definition.variable.less","meta.definition.variable.scss"],settings:{foreground:"#ea999c"}},{scope:["source.css meta.property-list variable","meta.property-list variable.other.less","meta.property-list variable.other.less punctuation.definition.variable.less"],settings:{foreground:"#8caaee"}},{scope:"keyword.other.unit.percentage.css",settings:{foreground:"#ef9f76"}},{scope:"source.css meta.attribute-selector",settings:{foreground:"#a6d189"}},{scope:["keyword.other.definition.ini","punctuation.support.type.property-name.json","support.type.property-name.json","punctuation.support.type.property-name.toml","support.type.property-name.toml","entity.name.tag.yaml","punctuation.support.type.property-name.yaml","support.type.property-name.yaml"],settings:{fontStyle:"",foreground:"#8caaee"}},{scope:["constant.language.json","constant.language.yaml"],settings:{foreground:"#ef9f76"}},{scope:["entity.name.type.anchor.yaml","variable.other.alias.yaml"],settings:{fontStyle:"",foreground:"#e5c890"}},{scope:["support.type.property-name.table","entity.name.section.group-title.ini"],settings:{foreground:"#e5c890"}},{scope:"constant.other.time.datetime.offset.toml",settings:{foreground:"#f4b8e4"}},{scope:["punctuation.definition.anchor.yaml","punctuation.definition.alias.yaml"],settings:{foreground:"#f4b8e4"}},{scope:"entity.other.document.begin.yaml",settings:{foreground:"#f4b8e4"}},{scope:"markup.changed.diff",settings:{foreground:"#ef9f76"}},{scope:["meta.diff.header.from-file","meta.diff.header.to-file","punctuation.definition.from-file.diff","punctuation.definition.to-file.diff"],settings:{foreground:"#8caaee"}},{scope:"markup.inserted.diff",settings:{foreground:"#a6d189"}},{scope:"markup.deleted.diff",settings:{foreground:"#e78284"}},{scope:["variable.other.env"],settings:{foreground:"#8caaee"}},{scope:["string.quoted variable.other.env"],settings:{foreground:"#c6d0f5"}},{scope:"support.function.builtin.gdscript",settings:{foreground:"#8caaee"}},{scope:"constant.language.gdscript",settings:{foreground:"#ef9f76"}},{scope:"comment meta.annotation.go",settings:{foreground:"#ea999c"}},{scope:"comment meta.annotation.parameters.go",settings:{foreground:"#ef9f76"}},{scope:"constant.language.go",settings:{foreground:"#ef9f76"}},{scope:"variable.graphql",settings:{foreground:"#c6d0f5"}},{scope:"string.unquoted.alias.graphql",settings:{foreground:"#eebebe"}},{scope:"constant.character.enum.graphql",settings:{foreground:"#81c8be"}},{scope:"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql",settings:{foreground:"#eebebe"}},{scope:["keyword.other.doctype","meta.tag.sgml.doctype punctuation.definition.tag","meta.tag.metadata.doctype entity.name.tag","meta.tag.metadata.doctype punctuation.definition.tag"],settings:{foreground:"#ca9ee6"}},{scope:["entity.name.tag"],settings:{fontStyle:"",foreground:"#8caaee"}},{scope:["text.html constant.character.entity","text.html constant.character.entity punctuation","constant.character.entity.xml","constant.character.entity.xml punctuation","constant.character.entity.js.jsx","constant.charactger.entity.js.jsx punctuation","constant.character.entity.tsx","constant.character.entity.tsx punctuation"],settings:{foreground:"#e78284"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#e5c890"}},{scope:["support.class.component","support.class.component.jsx","support.class.component.tsx","support.class.component.vue"],settings:{fontStyle:"",foreground:"#f4b8e4"}},{scope:["punctuation.definition.annotation","storage.type.annotation"],settings:{foreground:"#ef9f76"}},{scope:"constant.other.enum.java",settings:{foreground:"#81c8be"}},{scope:"storage.modifier.import.java",settings:{foreground:"#c6d0f5"}},{scope:"comment.block.javadoc.java keyword.other.documentation.javadoc.java",settings:{fontStyle:""}},{scope:"meta.export variable.other.readwrite.js",settings:{foreground:"#ea999c"}},{scope:["variable.other.constant.js","variable.other.constant.ts","variable.other.property.js","variable.other.property.ts"],settings:{foreground:"#c6d0f5"}},{scope:["variable.other.jsdoc","comment.block.documentation variable.other"],settings:{fontStyle:"",foreground:"#ea999c"}},{scope:"storage.type.class.jsdoc",settings:{fontStyle:""}},{scope:"support.type.object.console.js",settings:{foreground:"#c6d0f5"}},{scope:["support.constant.node","support.type.object.module.js"],settings:{foreground:"#ca9ee6"}},{scope:"storage.modifier.implements",settings:{foreground:"#ca9ee6"}},{scope:["constant.language.null.js","constant.language.null.ts","constant.language.undefined.js","constant.language.undefined.ts","support.type.builtin.ts"],settings:{foreground:"#ca9ee6"}},{scope:"variable.parameter.generic",settings:{foreground:"#e5c890"}},{scope:["keyword.declaration.function.arrow.js","storage.type.function.arrow.ts"],settings:{foreground:"#81c8be"}},{scope:"punctuation.decorator.ts",settings:{fontStyle:"italic",foreground:"#8caaee"}},{scope:["keyword.operator.expression.in.js","keyword.operator.expression.in.ts","keyword.operator.expression.infer.ts","keyword.operator.expression.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.is","keyword.operator.expression.keyof.ts","keyword.operator.expression.of.js","keyword.operator.expression.of.ts","keyword.operator.expression.typeof.ts"],settings:{foreground:"#ca9ee6"}},{scope:"support.function.macro.julia",settings:{fontStyle:"italic",foreground:"#81c8be"}},{scope:"constant.language.julia",settings:{foreground:"#ef9f76"}},{scope:"constant.other.symbol.julia",settings:{foreground:"#ea999c"}},{scope:"text.tex keyword.control.preamble",settings:{foreground:"#81c8be"}},{scope:"text.tex support.function.be",settings:{foreground:"#99d1db"}},{scope:"constant.other.general.math.tex",settings:{foreground:"#eebebe"}},{scope:"comment.line.double-dash.documentation.lua storage.type.annotation.lua",settings:{fontStyle:"",foreground:"#ca9ee6"}},{scope:["comment.line.double-dash.documentation.lua entity.name.variable.lua","comment.line.double-dash.documentation.lua variable.lua"],settings:{foreground:"#c6d0f5"}},{scope:["heading.1.markdown punctuation.definition.heading.markdown","heading.1.markdown","heading.1.quarto punctuation.definition.heading.quarto","heading.1.quarto","markup.heading.atx.1.mdx","markup.heading.atx.1.mdx punctuation.definition.heading.mdx","markup.heading.setext.1.markdown","markup.heading.heading-0.asciidoc"],settings:{foreground:"#e78284"}},{scope:["heading.2.markdown punctuation.definition.heading.markdown","heading.2.markdown","heading.2.quarto punctuation.definition.heading.quarto","heading.2.quarto","markup.heading.atx.2.mdx","markup.heading.atx.2.mdx punctuation.definition.heading.mdx","markup.heading.setext.2.markdown","markup.heading.heading-1.asciidoc"],settings:{foreground:"#ef9f76"}},{scope:["heading.3.markdown punctuation.definition.heading.markdown","heading.3.markdown","heading.3.quarto punctuation.definition.heading.quarto","heading.3.quarto","markup.heading.atx.3.mdx","markup.heading.atx.3.mdx punctuation.definition.heading.mdx","markup.heading.heading-2.asciidoc"],settings:{foreground:"#e5c890"}},{scope:["heading.4.markdown punctuation.definition.heading.markdown","heading.4.markdown","heading.4.quarto punctuation.definition.heading.quarto","heading.4.quarto","markup.heading.atx.4.mdx","markup.heading.atx.4.mdx punctuation.definition.heading.mdx","markup.heading.heading-3.asciidoc"],settings:{foreground:"#a6d189"}},{scope:["heading.5.markdown punctuation.definition.heading.markdown","heading.5.markdown","heading.5.quarto punctuation.definition.heading.quarto","heading.5.quarto","markup.heading.atx.5.mdx","markup.heading.atx.5.mdx punctuation.definition.heading.mdx","markup.heading.heading-4.asciidoc"],settings:{foreground:"#8caaee"}},{scope:["heading.6.markdown punctuation.definition.heading.markdown","heading.6.markdown","heading.6.quarto punctuation.definition.heading.quarto","heading.6.quarto","markup.heading.atx.6.mdx","markup.heading.atx.6.mdx punctuation.definition.heading.mdx","markup.heading.heading-5.asciidoc"],settings:{foreground:"#ca9ee6"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#e78284"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#e78284"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough",foreground:"#a5adce"}},{scope:["punctuation.definition.link","markup.underline.link"],settings:{foreground:"#8caaee"}},{scope:["text.html.markdown punctuation.definition.link.title","text.html.quarto punctuation.definition.link.title","string.other.link.title.markdown","string.other.link.title.quarto","markup.link","punctuation.definition.constant.markdown","punctuation.definition.constant.quarto","constant.other.reference.link.markdown","constant.other.reference.link.quarto","markup.substitution.attribute-reference"],settings:{foreground:"#babbf1"}},{scope:["punctuation.definition.raw.markdown","punctuation.definition.raw.quarto","markup.inline.raw.string.markdown","markup.inline.raw.string.quarto","markup.raw.block.markdown","markup.raw.block.quarto"],settings:{foreground:"#a6d189"}},{scope:"fenced_code.block.language",settings:{foreground:"#99d1db"}},{scope:["markup.fenced_code.block punctuation.definition","markup.raw support.asciidoc"],settings:{foreground:"#949cbb"}},{scope:["markup.quote","punctuation.definition.quote.begin"],settings:{foreground:"#f4b8e4"}},{scope:"meta.separator.markdown",settings:{foreground:"#81c8be"}},{scope:["punctuation.definition.list.begin.markdown","punctuation.definition.list.begin.quarto","markup.list.bullet"],settings:{foreground:"#81c8be"}},{scope:"markup.heading.quarto",settings:{fontStyle:"bold"}},{scope:["entity.other.attribute-name.multipart.nix","entity.other.attribute-name.single.nix"],settings:{foreground:"#8caaee"}},{scope:"variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#c6d0f5"}},{scope:"meta.embedded variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#babbf1"}},{scope:"string.unquoted.path.nix",settings:{fontStyle:"",foreground:"#f4b8e4"}},{scope:["support.attribute.builtin","meta.attribute.php"],settings:{foreground:"#e5c890"}},{scope:"meta.function.parameters.php punctuation.definition.variable.php",settings:{foreground:"#ea999c"}},{scope:"constant.language.php",settings:{foreground:"#ca9ee6"}},{scope:"text.html.php support.function",settings:{foreground:"#99d1db"}},{scope:"keyword.other.phpdoc.php",settings:{fontStyle:""}},{scope:["support.variable.magic.python","meta.function-call.arguments.python"],settings:{foreground:"#c6d0f5"}},{scope:["support.function.magic.python"],settings:{fontStyle:"italic",foreground:"#99d1db"}},{scope:["variable.parameter.function.language.special.self.python","variable.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#e78284"}},{scope:["keyword.control.flow.python","keyword.operator.logical.python"],settings:{foreground:"#ca9ee6"}},{scope:"storage.type.function.python",settings:{foreground:"#ca9ee6"}},{scope:["support.token.decorator.python","meta.function.decorator.identifier.python"],settings:{foreground:"#99d1db"}},{scope:["meta.function-call.python"],settings:{foreground:"#8caaee"}},{scope:["entity.name.function.decorator.python","punctuation.definition.decorator.python"],settings:{fontStyle:"italic",foreground:"#ef9f76"}},{scope:"constant.character.format.placeholder.other.python",settings:{foreground:"#f4b8e4"}},{scope:["support.type.exception.python","support.function.builtin.python"],settings:{foreground:"#ef9f76"}},{scope:["support.type.python"],settings:{foreground:"#ef9f76"}},{scope:"constant.language.python",settings:{foreground:"#ca9ee6"}},{scope:["meta.indexed-name.python","meta.item-access.python"],settings:{fontStyle:"italic",foreground:"#ea999c"}},{scope:"storage.type.string.python",settings:{fontStyle:"italic",foreground:"#a6d189"}},{scope:"meta.function.parameters.python",settings:{fontStyle:""}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#f4b8e4"}},{scope:"keyword.control.anchor.regexp",settings:{foreground:"#ca9ee6"}},{scope:"string.regexp.ts",settings:{foreground:"#c6d0f5"}},{scope:["punctuation.definition.group.regexp","keyword.other.back-reference.regexp"],settings:{foreground:"#a6d189"}},{scope:"punctuation.definition.character-class.regexp",settings:{foreground:"#e5c890"}},{scope:"constant.other.character-class.regexp",settings:{foreground:"#f4b8e4"}},{scope:"constant.other.character-class.range.regexp",settings:{foreground:"#f2d5cf"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#81c8be"}},{scope:"constant.character.numeric.regexp",settings:{foreground:"#ef9f76"}},{scope:["punctuation.definition.group.no-capture.regexp","meta.assertion.look-ahead.regexp","meta.assertion.negative-look-ahead.regexp"],settings:{foreground:"#8caaee"}},{scope:["meta.annotation.rust","meta.annotation.rust punctuation","meta.attribute.rust","punctuation.definition.attribute.rust"],settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:["meta.attribute.rust string.quoted.double.rust","meta.attribute.rust string.quoted.single.char.rust"],settings:{fontStyle:""}},{scope:["entity.name.function.macro.rules.rust","storage.type.module.rust","storage.modifier.rust","storage.type.struct.rust","storage.type.enum.rust","storage.type.trait.rust","storage.type.union.rust","storage.type.impl.rust","storage.type.rust","storage.type.function.rust","storage.type.type.rust"],settings:{fontStyle:"",foreground:"#ca9ee6"}},{scope:"entity.name.type.numeric.rust",settings:{fontStyle:"",foreground:"#ca9ee6"}},{scope:"meta.generic.rust",settings:{foreground:"#ef9f76"}},{scope:"entity.name.impl.rust",settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:"entity.name.module.rust",settings:{foreground:"#ef9f76"}},{scope:"entity.name.trait.rust",settings:{fontStyle:"italic",foreground:"#e5c890"}},{scope:"storage.type.source.rust",settings:{foreground:"#e5c890"}},{scope:"entity.name.union.rust",settings:{foreground:"#e5c890"}},{scope:"meta.enum.rust storage.type.source.rust",settings:{foreground:"#81c8be"}},{scope:["support.macro.rust","meta.macro.rust support.function.rust","entity.name.function.macro.rust"],settings:{fontStyle:"italic",foreground:"#8caaee"}},{scope:["storage.modifier.lifetime.rust","entity.name.type.lifetime"],settings:{fontStyle:"italic",foreground:"#8caaee"}},{scope:"string.quoted.double.rust constant.other.placeholder.rust",settings:{foreground:"#f4b8e4"}},{scope:"meta.function.return-type.rust meta.generic.rust storage.type.rust",settings:{foreground:"#c6d0f5"}},{scope:"meta.function.call.rust",settings:{foreground:"#8caaee"}},{scope:"punctuation.brackets.angle.rust",settings:{foreground:"#99d1db"}},{scope:"constant.other.caps.rust",settings:{foreground:"#ef9f76"}},{scope:["meta.function.definition.rust variable.other.rust"],settings:{foreground:"#ea999c"}},{scope:"meta.function.call.rust variable.other.rust",settings:{foreground:"#c6d0f5"}},{scope:"variable.language.self.rust",settings:{foreground:"#e78284"}},{scope:["variable.other.metavariable.name.rust","meta.macro.metavariable.rust keyword.operator.macro.dollar.rust"],settings:{foreground:"#f4b8e4"}},{scope:["comment.line.shebang","comment.line.shebang punctuation.definition.comment","comment.line.shebang","punctuation.definition.comment.shebang.shell","meta.shebang.shell"],settings:{fontStyle:"italic",foreground:"#f4b8e4"}},{scope:"comment.line.shebang constant.language",settings:{fontStyle:"italic",foreground:"#81c8be"}},{scope:["meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation","meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation"],settings:{foreground:"#e78284"}},{scope:"meta.string meta.interpolation.parameter.shell variable.other.readwrite",settings:{fontStyle:"italic",foreground:"#ef9f76"}},{scope:["source.shell punctuation.section.interpolation","punctuation.definition.evaluation.backticks.shell"],settings:{foreground:"#81c8be"}},{scope:"entity.name.tag.heredoc.shell",settings:{foreground:"#ca9ee6"}},{scope:"string.quoted.double.shell variable.other.normal.shell",settings:{foreground:"#c6d0f5"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/catppuccin-latte.BYdKNJ10.js b/assets/chunks/catppuccin-latte.BYdKNJ10.js new file mode 100644 index 000000000..c5d9dc675 --- /dev/null +++ b/assets/chunks/catppuccin-latte.BYdKNJ10.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#00000000","activityBar.activeBorder":"#00000000","activityBar.activeFocusBorder":"#00000000","activityBar.background":"#dce0e8","activityBar.border":"#00000000","activityBar.dropBorder":"#8839ef33","activityBar.foreground":"#8839ef","activityBar.inactiveForeground":"#9ca0b0","activityBarBadge.background":"#8839ef","activityBarBadge.foreground":"#dce0e8","activityBarTop.activeBorder":"#00000000","activityBarTop.dropBorder":"#8839ef33","activityBarTop.foreground":"#8839ef","activityBarTop.inactiveForeground":"#9ca0b0","badge.background":"#bcc0cc","badge.foreground":"#4c4f69","banner.background":"#bcc0cc","banner.foreground":"#4c4f69","banner.iconForeground":"#4c4f69","breadcrumb.activeSelectionForeground":"#8839ef","breadcrumb.background":"#eff1f5","breadcrumb.focusForeground":"#8839ef","breadcrumb.foreground":"#4c4f69cc","breadcrumbPicker.background":"#e6e9ef","button.background":"#8839ef","button.border":"#00000000","button.foreground":"#dce0e8","button.hoverBackground":"#9c5af2","button.secondaryBackground":"#acb0be","button.secondaryBorder":"#8839ef","button.secondaryForeground":"#4c4f69","button.secondaryHoverBackground":"#c0c3ce","button.separator":"#00000000","charts.blue":"#1e66f5","charts.foreground":"#4c4f69","charts.green":"#40a02b","charts.lines":"#5c5f77","charts.orange":"#fe640b","charts.purple":"#8839ef","charts.red":"#d20f39","charts.yellow":"#df8e1d","checkbox.background":"#bcc0cc","checkbox.border":"#00000000","checkbox.foreground":"#8839ef","commandCenter.activeBackground":"#acb0be33","commandCenter.activeBorder":"#8839ef","commandCenter.activeForeground":"#8839ef","commandCenter.background":"#e6e9ef","commandCenter.border":"#00000000","commandCenter.foreground":"#5c5f77","commandCenter.inactiveBorder":"#00000000","commandCenter.inactiveForeground":"#5c5f77","debugConsole.errorForeground":"#d20f39","debugConsole.infoForeground":"#1e66f5","debugConsole.sourceForeground":"#dc8a78","debugConsole.warningForeground":"#fe640b","debugConsoleInputIcon.foreground":"#4c4f69","debugExceptionWidget.background":"#dce0e8","debugExceptionWidget.border":"#8839ef","debugIcon.breakpointCurrentStackframeForeground":"#acb0be","debugIcon.breakpointDisabledForeground":"#d20f3999","debugIcon.breakpointForeground":"#d20f39","debugIcon.breakpointStackframeForeground":"#acb0be","debugIcon.breakpointUnverifiedForeground":"#bf607c","debugIcon.continueForeground":"#40a02b","debugIcon.disconnectForeground":"#acb0be","debugIcon.pauseForeground":"#1e66f5","debugIcon.restartForeground":"#179299","debugIcon.startForeground":"#40a02b","debugIcon.stepBackForeground":"#acb0be","debugIcon.stepIntoForeground":"#4c4f69","debugIcon.stepOutForeground":"#4c4f69","debugIcon.stepOverForeground":"#8839ef","debugIcon.stopForeground":"#d20f39","debugTokenExpression.boolean":"#8839ef","debugTokenExpression.error":"#d20f39","debugTokenExpression.number":"#fe640b","debugTokenExpression.string":"#40a02b","debugToolBar.background":"#dce0e8","debugToolBar.border":"#00000000",descriptionForeground:"#4c4f69","diffEditor.border":"#acb0be","diffEditor.diagonalFill":"#acb0be99","diffEditor.insertedLineBackground":"#40a02b26","diffEditor.insertedTextBackground":"#40a02b1a","diffEditor.removedLineBackground":"#d20f3926","diffEditor.removedTextBackground":"#d20f391a","diffEditorOverview.insertedForeground":"#40a02bcc","diffEditorOverview.removedForeground":"#d20f39cc",disabledForeground:"#6c6f85","dropdown.background":"#e6e9ef","dropdown.border":"#8839ef","dropdown.foreground":"#4c4f69","dropdown.listBackground":"#acb0be","editor.background":"#eff1f5","editor.findMatchBackground":"#e6adbd","editor.findMatchBorder":"#d20f3933","editor.findMatchHighlightBackground":"#a9daf0","editor.findMatchHighlightBorder":"#04a5e533","editor.findRangeHighlightBackground":"#a9daf0","editor.findRangeHighlightBorder":"#04a5e533","editor.focusedStackFrameHighlightBackground":"#40a02b26","editor.foldBackground":"#04a5e540","editor.foreground":"#4c4f69","editor.hoverHighlightBackground":"#04a5e540","editor.lineHighlightBackground":"#4c4f6912","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#04a5e540","editor.rangeHighlightBorder":"#00000000","editor.selectionBackground":"#7c7f934d","editor.selectionHighlightBackground":"#7c7f9333","editor.selectionHighlightBorder":"#7c7f9333","editor.stackFrameHighlightBackground":"#df8e1d26","editor.wordHighlightBackground":"#7c7f9333","editorBracketHighlight.foreground1":"#d20f39","editorBracketHighlight.foreground2":"#fe640b","editorBracketHighlight.foreground3":"#df8e1d","editorBracketHighlight.foreground4":"#40a02b","editorBracketHighlight.foreground5":"#209fb5","editorBracketHighlight.foreground6":"#8839ef","editorBracketHighlight.unexpectedBracket.foreground":"#e64553","editorBracketMatch.background":"#7c7f931a","editorBracketMatch.border":"#7c7f93","editorCodeLens.foreground":"#8c8fa1","editorCursor.background":"#eff1f5","editorCursor.foreground":"#dc8a78","editorError.background":"#00000000","editorError.border":"#00000000","editorError.foreground":"#d20f39","editorGroup.border":"#acb0be","editorGroup.dropBackground":"#8839ef33","editorGroup.emptyBackground":"#eff1f5","editorGroupHeader.tabsBackground":"#dce0e8","editorGutter.addedBackground":"#40a02b","editorGutter.background":"#eff1f5","editorGutter.commentRangeForeground":"#7c7f93","editorGutter.deletedBackground":"#d20f39","editorGutter.foldingControlForeground":"#7c7f93","editorGutter.modifiedBackground":"#df8e1d","editorHoverWidget.background":"#e6e9ef","editorHoverWidget.border":"#acb0be","editorHoverWidget.foreground":"#4c4f69","editorIndentGuide.activeBackground":"#acb0be","editorIndentGuide.background":"#bcc0cc","editorInfo.background":"#00000000","editorInfo.border":"#00000000","editorInfo.foreground":"#1e66f5","editorInlayHint.background":"#e6e9efbf","editorInlayHint.foreground":"#acb0be","editorInlayHint.parameterBackground":"#e6e9efbf","editorInlayHint.parameterForeground":"#6c6f85","editorInlayHint.typeBackground":"#e6e9efbf","editorInlayHint.typeForeground":"#5c5f77","editorLightBulb.foreground":"#df8e1d","editorLineNumber.activeForeground":"#8839ef","editorLineNumber.foreground":"#8c8fa1","editorLink.activeForeground":"#8839ef","editorMarkerNavigation.background":"#e6e9ef","editorMarkerNavigationError.background":"#d20f39","editorMarkerNavigationInfo.background":"#1e66f5","editorMarkerNavigationWarning.background":"#fe640b","editorOverviewRuler.background":"#e6e9ef","editorOverviewRuler.border":"#4c4f6912","editorOverviewRuler.modifiedForeground":"#df8e1d","editorRuler.foreground":"#acb0be","editorStickyScrollHover.background":"#ccd0da","editorSuggestWidget.background":"#e6e9ef","editorSuggestWidget.border":"#acb0be","editorSuggestWidget.foreground":"#4c4f69","editorSuggestWidget.highlightForeground":"#8839ef","editorSuggestWidget.selectedBackground":"#ccd0da","editorWarning.background":"#00000000","editorWarning.border":"#00000000","editorWarning.foreground":"#fe640b","editorWhitespace.foreground":"#7c7f9366","editorWidget.background":"#e6e9ef","editorWidget.foreground":"#4c4f69","editorWidget.resizeBorder":"#acb0be",errorForeground:"#d20f39","errorLens.errorBackground":"#d20f3926","errorLens.errorBackgroundLight":"#d20f3926","errorLens.errorForeground":"#d20f39","errorLens.errorForegroundLight":"#d20f39","errorLens.errorMessageBackground":"#d20f3926","errorLens.hintBackground":"#40a02b26","errorLens.hintBackgroundLight":"#40a02b26","errorLens.hintForeground":"#40a02b","errorLens.hintForegroundLight":"#40a02b","errorLens.hintMessageBackground":"#40a02b26","errorLens.infoBackground":"#1e66f526","errorLens.infoBackgroundLight":"#1e66f526","errorLens.infoForeground":"#1e66f5","errorLens.infoForegroundLight":"#1e66f5","errorLens.infoMessageBackground":"#1e66f526","errorLens.statusBarErrorForeground":"#d20f39","errorLens.statusBarHintForeground":"#40a02b","errorLens.statusBarIconErrorForeground":"#d20f39","errorLens.statusBarIconWarningForeground":"#fe640b","errorLens.statusBarInfoForeground":"#1e66f5","errorLens.statusBarWarningForeground":"#fe640b","errorLens.warningBackground":"#fe640b26","errorLens.warningBackgroundLight":"#fe640b26","errorLens.warningForeground":"#fe640b","errorLens.warningForegroundLight":"#fe640b","errorLens.warningMessageBackground":"#fe640b26","extensionBadge.remoteBackground":"#1e66f5","extensionBadge.remoteForeground":"#dce0e8","extensionButton.prominentBackground":"#8839ef","extensionButton.prominentForeground":"#dce0e8","extensionButton.prominentHoverBackground":"#9c5af2","extensionButton.separator":"#eff1f5","extensionIcon.preReleaseForeground":"#acb0be","extensionIcon.sponsorForeground":"#ea76cb","extensionIcon.starForeground":"#df8e1d","extensionIcon.verifiedForeground":"#40a02b",focusBorder:"#8839ef",foreground:"#4c4f69","gitDecoration.addedResourceForeground":"#40a02b","gitDecoration.conflictingResourceForeground":"#8839ef","gitDecoration.deletedResourceForeground":"#d20f39","gitDecoration.ignoredResourceForeground":"#9ca0b0","gitDecoration.modifiedResourceForeground":"#df8e1d","gitDecoration.stageDeletedResourceForeground":"#d20f39","gitDecoration.stageModifiedResourceForeground":"#df8e1d","gitDecoration.submoduleResourceForeground":"#1e66f5","gitDecoration.untrackedResourceForeground":"#40a02b","gitlens.closedAutolinkedIssueIconColor":"#8839ef","gitlens.closedPullRequestIconColor":"#d20f39","gitlens.decorations.branchAheadForegroundColor":"#40a02b","gitlens.decorations.branchBehindForegroundColor":"#fe640b","gitlens.decorations.branchDivergedForegroundColor":"#df8e1d","gitlens.decorations.branchMissingUpstreamForegroundColor":"#fe640b","gitlens.decorations.branchUnpublishedForegroundColor":"#40a02b","gitlens.decorations.statusMergingOrRebasingConflictForegroundColor":"#e64553","gitlens.decorations.statusMergingOrRebasingForegroundColor":"#df8e1d","gitlens.decorations.workspaceCurrentForegroundColor":"#8839ef","gitlens.decorations.workspaceRepoMissingForegroundColor":"#6c6f85","gitlens.decorations.workspaceRepoOpenForegroundColor":"#8839ef","gitlens.decorations.worktreeHasUncommittedChangesForegroundColor":"#fe640b","gitlens.decorations.worktreeMissingForegroundColor":"#e64553","gitlens.graphChangesColumnAddedColor":"#40a02b","gitlens.graphChangesColumnDeletedColor":"#d20f39","gitlens.graphLane10Color":"#ea76cb","gitlens.graphLane1Color":"#8839ef","gitlens.graphLane2Color":"#df8e1d","gitlens.graphLane3Color":"#1e66f5","gitlens.graphLane4Color":"#dd7878","gitlens.graphLane5Color":"#40a02b","gitlens.graphLane6Color":"#7287fd","gitlens.graphLane7Color":"#dc8a78","gitlens.graphLane8Color":"#d20f39","gitlens.graphLane9Color":"#179299","gitlens.graphMinimapMarkerHeadColor":"#40a02b","gitlens.graphMinimapMarkerHighlightsColor":"#df8e1d","gitlens.graphMinimapMarkerLocalBranchesColor":"#1e66f5","gitlens.graphMinimapMarkerRemoteBranchesColor":"#0b57ef","gitlens.graphMinimapMarkerStashesColor":"#8839ef","gitlens.graphMinimapMarkerTagsColor":"#dd7878","gitlens.graphMinimapMarkerUpstreamColor":"#388c26","gitlens.graphScrollMarkerHeadColor":"#40a02b","gitlens.graphScrollMarkerHighlightsColor":"#df8e1d","gitlens.graphScrollMarkerLocalBranchesColor":"#1e66f5","gitlens.graphScrollMarkerRemoteBranchesColor":"#0b57ef","gitlens.graphScrollMarkerStashesColor":"#8839ef","gitlens.graphScrollMarkerTagsColor":"#dd7878","gitlens.graphScrollMarkerUpstreamColor":"#388c26","gitlens.gutterBackgroundColor":"#ccd0da4d","gitlens.gutterForegroundColor":"#4c4f69","gitlens.gutterUncommittedForegroundColor":"#8839ef","gitlens.lineHighlightBackgroundColor":"#8839ef26","gitlens.lineHighlightOverviewRulerColor":"#8839efcc","gitlens.mergedPullRequestIconColor":"#8839ef","gitlens.openAutolinkedIssueIconColor":"#40a02b","gitlens.openPullRequestIconColor":"#40a02b","gitlens.trailingLineBackgroundColor":"#00000000","gitlens.trailingLineForegroundColor":"#4c4f694d","gitlens.unpublishedChangesIconColor":"#40a02b","gitlens.unpublishedCommitIconColor":"#40a02b","gitlens.unpulledChangesIconColor":"#fe640b","icon.foreground":"#8839ef","input.background":"#ccd0da","input.border":"#00000000","input.foreground":"#4c4f69","input.placeholderForeground":"#4c4f6973","inputOption.activeBackground":"#acb0be","inputOption.activeBorder":"#8839ef","inputOption.activeForeground":"#4c4f69","inputValidation.errorBackground":"#d20f39","inputValidation.errorBorder":"#dce0e833","inputValidation.errorForeground":"#dce0e8","inputValidation.infoBackground":"#1e66f5","inputValidation.infoBorder":"#dce0e833","inputValidation.infoForeground":"#dce0e8","inputValidation.warningBackground":"#fe640b","inputValidation.warningBorder":"#dce0e833","inputValidation.warningForeground":"#dce0e8","issues.closed":"#8839ef","issues.newIssueDecoration":"#dc8a78","issues.open":"#40a02b","list.activeSelectionBackground":"#ccd0da","list.activeSelectionForeground":"#4c4f69","list.dropBackground":"#8839ef33","list.focusAndSelectionBackground":"#bcc0cc","list.focusBackground":"#ccd0da","list.focusForeground":"#4c4f69","list.focusOutline":"#00000000","list.highlightForeground":"#8839ef","list.hoverBackground":"#ccd0da80","list.hoverForeground":"#4c4f69","list.inactiveSelectionBackground":"#ccd0da","list.inactiveSelectionForeground":"#4c4f69","list.warningForeground":"#fe640b","listFilterWidget.background":"#bcc0cc","listFilterWidget.noMatchesOutline":"#d20f39","listFilterWidget.outline":"#00000000","menu.background":"#eff1f5","menu.border":"#eff1f580","menu.foreground":"#4c4f69","menu.selectionBackground":"#acb0be","menu.selectionBorder":"#00000000","menu.selectionForeground":"#4c4f69","menu.separatorBackground":"#acb0be","menubar.selectionBackground":"#bcc0cc","menubar.selectionForeground":"#4c4f69","merge.commonContentBackground":"#bcc0cc","merge.commonHeaderBackground":"#acb0be","merge.currentContentBackground":"#40a02b33","merge.currentHeaderBackground":"#40a02b66","merge.incomingContentBackground":"#1e66f533","merge.incomingHeaderBackground":"#1e66f566","minimap.background":"#e6e9ef80","minimap.errorHighlight":"#d20f39bf","minimap.findMatchHighlight":"#04a5e54d","minimap.selectionHighlight":"#acb0bebf","minimap.selectionOccurrenceHighlight":"#acb0bebf","minimap.warningHighlight":"#fe640bbf","minimapGutter.addedBackground":"#40a02bbf","minimapGutter.deletedBackground":"#d20f39bf","minimapGutter.modifiedBackground":"#df8e1dbf","minimapSlider.activeBackground":"#8839ef99","minimapSlider.background":"#8839ef33","minimapSlider.hoverBackground":"#8839ef66","notificationCenter.border":"#8839ef","notificationCenterHeader.background":"#e6e9ef","notificationCenterHeader.foreground":"#4c4f69","notificationLink.foreground":"#1e66f5","notificationToast.border":"#8839ef","notifications.background":"#e6e9ef","notifications.border":"#8839ef","notifications.foreground":"#4c4f69","notificationsErrorIcon.foreground":"#d20f39","notificationsInfoIcon.foreground":"#1e66f5","notificationsWarningIcon.foreground":"#fe640b","panel.background":"#eff1f5","panel.border":"#acb0be","panelSection.border":"#acb0be","panelSection.dropBackground":"#8839ef33","panelTitle.activeBorder":"#8839ef","panelTitle.activeForeground":"#4c4f69","panelTitle.inactiveForeground":"#6c6f85","peekView.border":"#8839ef","peekViewEditor.background":"#e6e9ef","peekViewEditor.matchHighlightBackground":"#04a5e54d","peekViewEditor.matchHighlightBorder":"#00000000","peekViewEditorGutter.background":"#e6e9ef","peekViewResult.background":"#e6e9ef","peekViewResult.fileForeground":"#4c4f69","peekViewResult.lineForeground":"#4c4f69","peekViewResult.matchHighlightBackground":"#04a5e54d","peekViewResult.selectionBackground":"#ccd0da","peekViewResult.selectionForeground":"#4c4f69","peekViewTitle.background":"#eff1f5","peekViewTitleDescription.foreground":"#5c5f77b3","peekViewTitleLabel.foreground":"#4c4f69","pickerGroup.border":"#8839ef","pickerGroup.foreground":"#8839ef","problemsErrorIcon.foreground":"#d20f39","problemsInfoIcon.foreground":"#1e66f5","problemsWarningIcon.foreground":"#fe640b","progressBar.background":"#8839ef","pullRequests.closed":"#d20f39","pullRequests.draft":"#7c7f93","pullRequests.merged":"#8839ef","pullRequests.notification":"#4c4f69","pullRequests.open":"#40a02b","sash.hoverBorder":"#8839ef","scrollbar.shadow":"#dce0e8","scrollbarSlider.activeBackground":"#ccd0da66","scrollbarSlider.background":"#acb0be80","scrollbarSlider.hoverBackground":"#9ca0b0","selection.background":"#8839ef66","settings.dropdownBackground":"#bcc0cc","settings.dropdownListBorder":"#00000000","settings.focusedRowBackground":"#acb0be33","settings.headerForeground":"#4c4f69","settings.modifiedItemIndicator":"#8839ef","settings.numberInputBackground":"#bcc0cc","settings.numberInputBorder":"#00000000","settings.textInputBackground":"#bcc0cc","settings.textInputBorder":"#00000000","sideBar.background":"#e6e9ef","sideBar.border":"#00000000","sideBar.dropBackground":"#8839ef33","sideBar.foreground":"#4c4f69","sideBarSectionHeader.background":"#e6e9ef","sideBarSectionHeader.foreground":"#4c4f69","sideBarTitle.foreground":"#8839ef","statusBar.background":"#dce0e8","statusBar.border":"#00000000","statusBar.debuggingBackground":"#fe640b","statusBar.debuggingBorder":"#00000000","statusBar.debuggingForeground":"#dce0e8","statusBar.foreground":"#4c4f69","statusBar.noFolderBackground":"#dce0e8","statusBar.noFolderBorder":"#00000000","statusBar.noFolderForeground":"#4c4f69","statusBarItem.activeBackground":"#acb0be66","statusBarItem.errorBackground":"#00000000","statusBarItem.errorForeground":"#d20f39","statusBarItem.hoverBackground":"#acb0be33","statusBarItem.prominentBackground":"#00000000","statusBarItem.prominentForeground":"#8839ef","statusBarItem.prominentHoverBackground":"#acb0be33","statusBarItem.remoteBackground":"#1e66f5","statusBarItem.remoteForeground":"#dce0e8","statusBarItem.warningBackground":"#00000000","statusBarItem.warningForeground":"#fe640b","symbolIcon.arrayForeground":"#fe640b","symbolIcon.booleanForeground":"#8839ef","symbolIcon.classForeground":"#df8e1d","symbolIcon.colorForeground":"#ea76cb","symbolIcon.constantForeground":"#fe640b","symbolIcon.constructorForeground":"#7287fd","symbolIcon.enumeratorForeground":"#df8e1d","symbolIcon.enumeratorMemberForeground":"#df8e1d","symbolIcon.eventForeground":"#ea76cb","symbolIcon.fieldForeground":"#4c4f69","symbolIcon.fileForeground":"#8839ef","symbolIcon.folderForeground":"#8839ef","symbolIcon.functionForeground":"#1e66f5","symbolIcon.interfaceForeground":"#df8e1d","symbolIcon.keyForeground":"#179299","symbolIcon.keywordForeground":"#8839ef","symbolIcon.methodForeground":"#1e66f5","symbolIcon.moduleForeground":"#4c4f69","symbolIcon.namespaceForeground":"#df8e1d","symbolIcon.nullForeground":"#e64553","symbolIcon.numberForeground":"#fe640b","symbolIcon.objectForeground":"#df8e1d","symbolIcon.operatorForeground":"#179299","symbolIcon.packageForeground":"#dd7878","symbolIcon.propertyForeground":"#e64553","symbolIcon.referenceForeground":"#df8e1d","symbolIcon.snippetForeground":"#dd7878","symbolIcon.stringForeground":"#40a02b","symbolIcon.structForeground":"#179299","symbolIcon.textForeground":"#4c4f69","symbolIcon.typeParameterForeground":"#e64553","symbolIcon.unitForeground":"#4c4f69","symbolIcon.variableForeground":"#4c4f69","tab.activeBackground":"#eff1f5","tab.activeBorder":"#00000000","tab.activeBorderTop":"#8839ef","tab.activeForeground":"#8839ef","tab.activeModifiedBorder":"#df8e1d","tab.border":"#e6e9ef","tab.hoverBackground":"#ffffff","tab.hoverBorder":"#00000000","tab.hoverForeground":"#8839ef","tab.inactiveBackground":"#e6e9ef","tab.inactiveForeground":"#9ca0b0","tab.inactiveModifiedBorder":"#df8e1d4d","tab.lastPinnedBorder":"#8839ef","tab.unfocusedActiveBackground":"#e6e9ef","tab.unfocusedActiveBorder":"#00000000","tab.unfocusedActiveBorderTop":"#8839ef4d","tab.unfocusedInactiveBackground":"#d6dbe5","table.headerBackground":"#ccd0da","table.headerForeground":"#4c4f69","terminal.ansiBlack":"#bcc0cc","terminal.ansiBlue":"#1e66f5","terminal.ansiBrightBlack":"#6c6f85","terminal.ansiBrightBlue":"#1e66f5","terminal.ansiBrightCyan":"#04a5e5","terminal.ansiBrightGreen":"#40a02b","terminal.ansiBrightMagenta":"#ea76cb","terminal.ansiBrightRed":"#d20f39","terminal.ansiBrightWhite":"#5c5f77","terminal.ansiBrightYellow":"#df8e1d","terminal.ansiCyan":"#04a5e5","terminal.ansiGreen":"#40a02b","terminal.ansiMagenta":"#ea76cb","terminal.ansiRed":"#d20f39","terminal.ansiWhite":"#acb0be","terminal.ansiYellow":"#df8e1d","terminal.border":"#acb0be","terminal.dropBackground":"#8839ef33","terminal.foreground":"#4c4f69","terminal.inactiveSelectionBackground":"#acb0be80","terminal.selectionBackground":"#acb0be","terminal.tab.activeBorder":"#8839ef","terminalCommandDecoration.defaultBackground":"#acb0be","terminalCommandDecoration.errorBackground":"#d20f39","terminalCommandDecoration.successBackground":"#40a02b","terminalCursor.background":"#eff1f5","terminalCursor.foreground":"#dc8a78","textBlockQuote.background":"#e6e9ef","textBlockQuote.border":"#dce0e8","textCodeBlock.background":"#eff1f5","textLink.activeForeground":"#04a5e5","textLink.foreground":"#1e66f5","textPreformat.foreground":"#4c4f69","textSeparator.foreground":"#8839ef","titleBar.activeBackground":"#dce0e8","titleBar.activeForeground":"#4c4f69","titleBar.border":"#00000000","titleBar.inactiveBackground":"#dce0e8","titleBar.inactiveForeground":"#4c4f6980","tree.inactiveIndentGuidesStroke":"#bcc0cc","tree.indentGuidesStroke":"#7c7f93","walkThrough.embeddedEditorBackground":"#eff1f54d","welcomePage.progress.background":"#dce0e8","welcomePage.progress.foreground":"#8839ef","welcomePage.tileBackground":"#e6e9ef","widget.shadow":"#e6e9ef80","window.activeBorder":"#00000000","window.inactiveBorder":"#00000000"},displayName:"Catppuccin Latte",name:"catppuccin-latte",semanticHighlighting:!0,semanticTokenColors:{boolean:{foreground:"#fe640b"},"builtinAttribute.attribute.library:rust":{foreground:"#1e66f5"},"class.builtin:python":{foreground:"#8839ef"},"class:python":{foreground:"#df8e1d"},"constant.builtin.readonly:nix":{foreground:"#8839ef"},enumMember:{foreground:"#179299"},"function.decorator:python":{foreground:"#fe640b"},"generic.attribute:rust":{foreground:"#4c4f69"},heading:{foreground:"#d20f39"},number:{foreground:"#fe640b"},pol:{foreground:"#dd7878"},"property.readonly:javascript":{foreground:"#4c4f69"},"property.readonly:javascriptreact":{foreground:"#4c4f69"},"property.readonly:typescript":{foreground:"#4c4f69"},"property.readonly:typescriptreact":{foreground:"#4c4f69"},selfKeyword:{foreground:"#d20f39"},"text.emph":{fontStyle:"italic",foreground:"#d20f39"},"text.math":{foreground:"#dd7878"},"text.strong":{fontStyle:"bold",foreground:"#d20f39"},tomlArrayKey:{fontStyle:"",foreground:"#1e66f5"},tomlTableKey:{fontStyle:"",foreground:"#1e66f5"},"type.defaultLibrary:go":{foreground:"#8839ef"},"variable.defaultLibrary":{foreground:"#e64553"},"variable.readonly.defaultLibrary:go":{foreground:"#8839ef"},"variable.readonly:javascript":{foreground:"#4c4f69"},"variable.readonly:javascriptreact":{foreground:"#4c4f69"},"variable.readonly:scala":{foreground:"#4c4f69"},"variable.readonly:typescript":{foreground:"#4c4f69"},"variable.readonly:typescriptreact":{foreground:"#4c4f69"},"variable.typeHint:python":{foreground:"#df8e1d"}},tokenColors:[{scope:["text","source","variable.other.readwrite","punctuation.definition.variable"],settings:{foreground:"#4c4f69"}},{scope:"punctuation",settings:{fontStyle:"",foreground:"#7c7f93"}},{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#9ca0b0"}},{scope:["string","punctuation.definition.string"],settings:{foreground:"#40a02b"}},{scope:"constant.character.escape",settings:{foreground:"#ea76cb"}},{scope:["constant.numeric","variable.other.constant","entity.name.constant","constant.language.boolean","constant.language.false","constant.language.true","keyword.other.unit.user-defined","keyword.other.unit.suffix.floating-point"],settings:{foreground:"#fe640b"}},{scope:["keyword","keyword.operator.word","keyword.operator.new","variable.language.super","support.type.primitive","storage.type","storage.modifier","punctuation.definition.keyword"],settings:{fontStyle:"",foreground:"#8839ef"}},{scope:"entity.name.tag.documentation",settings:{foreground:"#8839ef"}},{scope:["keyword.operator","punctuation.accessor","punctuation.definition.generic","meta.function.closure punctuation.section.parameters","punctuation.definition.tag","punctuation.separator.key-value"],settings:{foreground:"#179299"}},{scope:["entity.name.function","meta.function-call.method","support.function","support.function.misc","variable.function"],settings:{fontStyle:"italic",foreground:"#1e66f5"}},{scope:["entity.name.class","entity.other.inherited-class","support.class","meta.function-call.constructor","entity.name.struct"],settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:"entity.name.enum",settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:["meta.enum variable.other.readwrite","variable.other.enummember"],settings:{foreground:"#179299"}},{scope:"meta.property.object",settings:{foreground:"#179299"}},{scope:["meta.type","meta.type-alias","support.type","entity.name.type"],settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:["meta.annotation variable.function","meta.annotation variable.annotation.function","meta.annotation punctuation.definition.annotation","meta.decorator","punctuation.decorator"],settings:{foreground:"#fe640b"}},{scope:["variable.parameter","meta.function.parameters"],settings:{fontStyle:"italic",foreground:"#e64553"}},{scope:["constant.language","support.function.builtin"],settings:{foreground:"#d20f39"}},{scope:"entity.other.attribute-name.documentation",settings:{foreground:"#d20f39"}},{scope:["keyword.control.directive","punctuation.definition.directive"],settings:{foreground:"#df8e1d"}},{scope:"punctuation.definition.typeparameters",settings:{foreground:"#04a5e5"}},{scope:"entity.name.namespace",settings:{foreground:"#df8e1d"}},{scope:"support.type.property-name.css",settings:{fontStyle:"",foreground:"#1e66f5"}},{scope:["variable.language.this","variable.language.this punctuation.definition.variable"],settings:{foreground:"#d20f39"}},{scope:"variable.object.property",settings:{foreground:"#4c4f69"}},{scope:["string.template variable","string variable"],settings:{foreground:"#4c4f69"}},{scope:"keyword.operator.new",settings:{fontStyle:"bold"}},{scope:"storage.modifier.specifier.extern.cpp",settings:{foreground:"#8839ef"}},{scope:["entity.name.scope-resolution.template.call.cpp","entity.name.scope-resolution.parameter.cpp","entity.name.scope-resolution.cpp","entity.name.scope-resolution.function.definition.cpp"],settings:{foreground:"#df8e1d"}},{scope:"storage.type.class.doxygen",settings:{fontStyle:""}},{scope:["storage.modifier.reference.cpp"],settings:{foreground:"#179299"}},{scope:"meta.interpolation.cs",settings:{foreground:"#4c4f69"}},{scope:"comment.block.documentation.cs",settings:{foreground:"#4c4f69"}},{scope:["source.css entity.other.attribute-name.class.css","entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css"],settings:{foreground:"#df8e1d"}},{scope:"punctuation.separator.operator.css",settings:{foreground:"#179299"}},{scope:"source.css entity.other.attribute-name.pseudo-class",settings:{foreground:"#179299"}},{scope:"source.css constant.other.unicode-range",settings:{foreground:"#fe640b"}},{scope:"source.css variable.parameter.url",settings:{fontStyle:"",foreground:"#40a02b"}},{scope:["support.type.vendored.property-name"],settings:{foreground:"#04a5e5"}},{scope:["source.css meta.property-value variable","source.css meta.property-value variable.other.less","source.css meta.property-value variable.other.less punctuation.definition.variable.less","meta.definition.variable.scss"],settings:{foreground:"#e64553"}},{scope:["source.css meta.property-list variable","meta.property-list variable.other.less","meta.property-list variable.other.less punctuation.definition.variable.less"],settings:{foreground:"#1e66f5"}},{scope:"keyword.other.unit.percentage.css",settings:{foreground:"#fe640b"}},{scope:"source.css meta.attribute-selector",settings:{foreground:"#40a02b"}},{scope:["keyword.other.definition.ini","punctuation.support.type.property-name.json","support.type.property-name.json","punctuation.support.type.property-name.toml","support.type.property-name.toml","entity.name.tag.yaml","punctuation.support.type.property-name.yaml","support.type.property-name.yaml"],settings:{fontStyle:"",foreground:"#1e66f5"}},{scope:["constant.language.json","constant.language.yaml"],settings:{foreground:"#fe640b"}},{scope:["entity.name.type.anchor.yaml","variable.other.alias.yaml"],settings:{fontStyle:"",foreground:"#df8e1d"}},{scope:["support.type.property-name.table","entity.name.section.group-title.ini"],settings:{foreground:"#df8e1d"}},{scope:"constant.other.time.datetime.offset.toml",settings:{foreground:"#ea76cb"}},{scope:["punctuation.definition.anchor.yaml","punctuation.definition.alias.yaml"],settings:{foreground:"#ea76cb"}},{scope:"entity.other.document.begin.yaml",settings:{foreground:"#ea76cb"}},{scope:"markup.changed.diff",settings:{foreground:"#fe640b"}},{scope:["meta.diff.header.from-file","meta.diff.header.to-file","punctuation.definition.from-file.diff","punctuation.definition.to-file.diff"],settings:{foreground:"#1e66f5"}},{scope:"markup.inserted.diff",settings:{foreground:"#40a02b"}},{scope:"markup.deleted.diff",settings:{foreground:"#d20f39"}},{scope:["variable.other.env"],settings:{foreground:"#1e66f5"}},{scope:["string.quoted variable.other.env"],settings:{foreground:"#4c4f69"}},{scope:"support.function.builtin.gdscript",settings:{foreground:"#1e66f5"}},{scope:"constant.language.gdscript",settings:{foreground:"#fe640b"}},{scope:"comment meta.annotation.go",settings:{foreground:"#e64553"}},{scope:"comment meta.annotation.parameters.go",settings:{foreground:"#fe640b"}},{scope:"constant.language.go",settings:{foreground:"#fe640b"}},{scope:"variable.graphql",settings:{foreground:"#4c4f69"}},{scope:"string.unquoted.alias.graphql",settings:{foreground:"#dd7878"}},{scope:"constant.character.enum.graphql",settings:{foreground:"#179299"}},{scope:"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql",settings:{foreground:"#dd7878"}},{scope:["keyword.other.doctype","meta.tag.sgml.doctype punctuation.definition.tag","meta.tag.metadata.doctype entity.name.tag","meta.tag.metadata.doctype punctuation.definition.tag"],settings:{foreground:"#8839ef"}},{scope:["entity.name.tag"],settings:{fontStyle:"",foreground:"#1e66f5"}},{scope:["text.html constant.character.entity","text.html constant.character.entity punctuation","constant.character.entity.xml","constant.character.entity.xml punctuation","constant.character.entity.js.jsx","constant.charactger.entity.js.jsx punctuation","constant.character.entity.tsx","constant.character.entity.tsx punctuation"],settings:{foreground:"#d20f39"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#df8e1d"}},{scope:["support.class.component","support.class.component.jsx","support.class.component.tsx","support.class.component.vue"],settings:{fontStyle:"",foreground:"#ea76cb"}},{scope:["punctuation.definition.annotation","storage.type.annotation"],settings:{foreground:"#fe640b"}},{scope:"constant.other.enum.java",settings:{foreground:"#179299"}},{scope:"storage.modifier.import.java",settings:{foreground:"#4c4f69"}},{scope:"comment.block.javadoc.java keyword.other.documentation.javadoc.java",settings:{fontStyle:""}},{scope:"meta.export variable.other.readwrite.js",settings:{foreground:"#e64553"}},{scope:["variable.other.constant.js","variable.other.constant.ts","variable.other.property.js","variable.other.property.ts"],settings:{foreground:"#4c4f69"}},{scope:["variable.other.jsdoc","comment.block.documentation variable.other"],settings:{fontStyle:"",foreground:"#e64553"}},{scope:"storage.type.class.jsdoc",settings:{fontStyle:""}},{scope:"support.type.object.console.js",settings:{foreground:"#4c4f69"}},{scope:["support.constant.node","support.type.object.module.js"],settings:{foreground:"#8839ef"}},{scope:"storage.modifier.implements",settings:{foreground:"#8839ef"}},{scope:["constant.language.null.js","constant.language.null.ts","constant.language.undefined.js","constant.language.undefined.ts","support.type.builtin.ts"],settings:{foreground:"#8839ef"}},{scope:"variable.parameter.generic",settings:{foreground:"#df8e1d"}},{scope:["keyword.declaration.function.arrow.js","storage.type.function.arrow.ts"],settings:{foreground:"#179299"}},{scope:"punctuation.decorator.ts",settings:{fontStyle:"italic",foreground:"#1e66f5"}},{scope:["keyword.operator.expression.in.js","keyword.operator.expression.in.ts","keyword.operator.expression.infer.ts","keyword.operator.expression.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.is","keyword.operator.expression.keyof.ts","keyword.operator.expression.of.js","keyword.operator.expression.of.ts","keyword.operator.expression.typeof.ts"],settings:{foreground:"#8839ef"}},{scope:"support.function.macro.julia",settings:{fontStyle:"italic",foreground:"#179299"}},{scope:"constant.language.julia",settings:{foreground:"#fe640b"}},{scope:"constant.other.symbol.julia",settings:{foreground:"#e64553"}},{scope:"text.tex keyword.control.preamble",settings:{foreground:"#179299"}},{scope:"text.tex support.function.be",settings:{foreground:"#04a5e5"}},{scope:"constant.other.general.math.tex",settings:{foreground:"#dd7878"}},{scope:"comment.line.double-dash.documentation.lua storage.type.annotation.lua",settings:{fontStyle:"",foreground:"#8839ef"}},{scope:["comment.line.double-dash.documentation.lua entity.name.variable.lua","comment.line.double-dash.documentation.lua variable.lua"],settings:{foreground:"#4c4f69"}},{scope:["heading.1.markdown punctuation.definition.heading.markdown","heading.1.markdown","heading.1.quarto punctuation.definition.heading.quarto","heading.1.quarto","markup.heading.atx.1.mdx","markup.heading.atx.1.mdx punctuation.definition.heading.mdx","markup.heading.setext.1.markdown","markup.heading.heading-0.asciidoc"],settings:{foreground:"#d20f39"}},{scope:["heading.2.markdown punctuation.definition.heading.markdown","heading.2.markdown","heading.2.quarto punctuation.definition.heading.quarto","heading.2.quarto","markup.heading.atx.2.mdx","markup.heading.atx.2.mdx punctuation.definition.heading.mdx","markup.heading.setext.2.markdown","markup.heading.heading-1.asciidoc"],settings:{foreground:"#fe640b"}},{scope:["heading.3.markdown punctuation.definition.heading.markdown","heading.3.markdown","heading.3.quarto punctuation.definition.heading.quarto","heading.3.quarto","markup.heading.atx.3.mdx","markup.heading.atx.3.mdx punctuation.definition.heading.mdx","markup.heading.heading-2.asciidoc"],settings:{foreground:"#df8e1d"}},{scope:["heading.4.markdown punctuation.definition.heading.markdown","heading.4.markdown","heading.4.quarto punctuation.definition.heading.quarto","heading.4.quarto","markup.heading.atx.4.mdx","markup.heading.atx.4.mdx punctuation.definition.heading.mdx","markup.heading.heading-3.asciidoc"],settings:{foreground:"#40a02b"}},{scope:["heading.5.markdown punctuation.definition.heading.markdown","heading.5.markdown","heading.5.quarto punctuation.definition.heading.quarto","heading.5.quarto","markup.heading.atx.5.mdx","markup.heading.atx.5.mdx punctuation.definition.heading.mdx","markup.heading.heading-4.asciidoc"],settings:{foreground:"#1e66f5"}},{scope:["heading.6.markdown punctuation.definition.heading.markdown","heading.6.markdown","heading.6.quarto punctuation.definition.heading.quarto","heading.6.quarto","markup.heading.atx.6.mdx","markup.heading.atx.6.mdx punctuation.definition.heading.mdx","markup.heading.heading-5.asciidoc"],settings:{foreground:"#8839ef"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#d20f39"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#d20f39"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough",foreground:"#6c6f85"}},{scope:["punctuation.definition.link","markup.underline.link"],settings:{foreground:"#1e66f5"}},{scope:["text.html.markdown punctuation.definition.link.title","text.html.quarto punctuation.definition.link.title","string.other.link.title.markdown","string.other.link.title.quarto","markup.link","punctuation.definition.constant.markdown","punctuation.definition.constant.quarto","constant.other.reference.link.markdown","constant.other.reference.link.quarto","markup.substitution.attribute-reference"],settings:{foreground:"#7287fd"}},{scope:["punctuation.definition.raw.markdown","punctuation.definition.raw.quarto","markup.inline.raw.string.markdown","markup.inline.raw.string.quarto","markup.raw.block.markdown","markup.raw.block.quarto"],settings:{foreground:"#40a02b"}},{scope:"fenced_code.block.language",settings:{foreground:"#04a5e5"}},{scope:["markup.fenced_code.block punctuation.definition","markup.raw support.asciidoc"],settings:{foreground:"#7c7f93"}},{scope:["markup.quote","punctuation.definition.quote.begin"],settings:{foreground:"#ea76cb"}},{scope:"meta.separator.markdown",settings:{foreground:"#179299"}},{scope:["punctuation.definition.list.begin.markdown","punctuation.definition.list.begin.quarto","markup.list.bullet"],settings:{foreground:"#179299"}},{scope:"markup.heading.quarto",settings:{fontStyle:"bold"}},{scope:["entity.other.attribute-name.multipart.nix","entity.other.attribute-name.single.nix"],settings:{foreground:"#1e66f5"}},{scope:"variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#4c4f69"}},{scope:"meta.embedded variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#7287fd"}},{scope:"string.unquoted.path.nix",settings:{fontStyle:"",foreground:"#ea76cb"}},{scope:["support.attribute.builtin","meta.attribute.php"],settings:{foreground:"#df8e1d"}},{scope:"meta.function.parameters.php punctuation.definition.variable.php",settings:{foreground:"#e64553"}},{scope:"constant.language.php",settings:{foreground:"#8839ef"}},{scope:"text.html.php support.function",settings:{foreground:"#04a5e5"}},{scope:"keyword.other.phpdoc.php",settings:{fontStyle:""}},{scope:["support.variable.magic.python","meta.function-call.arguments.python"],settings:{foreground:"#4c4f69"}},{scope:["support.function.magic.python"],settings:{fontStyle:"italic",foreground:"#04a5e5"}},{scope:["variable.parameter.function.language.special.self.python","variable.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#d20f39"}},{scope:["keyword.control.flow.python","keyword.operator.logical.python"],settings:{foreground:"#8839ef"}},{scope:"storage.type.function.python",settings:{foreground:"#8839ef"}},{scope:["support.token.decorator.python","meta.function.decorator.identifier.python"],settings:{foreground:"#04a5e5"}},{scope:["meta.function-call.python"],settings:{foreground:"#1e66f5"}},{scope:["entity.name.function.decorator.python","punctuation.definition.decorator.python"],settings:{fontStyle:"italic",foreground:"#fe640b"}},{scope:"constant.character.format.placeholder.other.python",settings:{foreground:"#ea76cb"}},{scope:["support.type.exception.python","support.function.builtin.python"],settings:{foreground:"#fe640b"}},{scope:["support.type.python"],settings:{foreground:"#fe640b"}},{scope:"constant.language.python",settings:{foreground:"#8839ef"}},{scope:["meta.indexed-name.python","meta.item-access.python"],settings:{fontStyle:"italic",foreground:"#e64553"}},{scope:"storage.type.string.python",settings:{fontStyle:"italic",foreground:"#40a02b"}},{scope:"meta.function.parameters.python",settings:{fontStyle:""}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#ea76cb"}},{scope:"keyword.control.anchor.regexp",settings:{foreground:"#8839ef"}},{scope:"string.regexp.ts",settings:{foreground:"#4c4f69"}},{scope:["punctuation.definition.group.regexp","keyword.other.back-reference.regexp"],settings:{foreground:"#40a02b"}},{scope:"punctuation.definition.character-class.regexp",settings:{foreground:"#df8e1d"}},{scope:"constant.other.character-class.regexp",settings:{foreground:"#ea76cb"}},{scope:"constant.other.character-class.range.regexp",settings:{foreground:"#dc8a78"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#179299"}},{scope:"constant.character.numeric.regexp",settings:{foreground:"#fe640b"}},{scope:["punctuation.definition.group.no-capture.regexp","meta.assertion.look-ahead.regexp","meta.assertion.negative-look-ahead.regexp"],settings:{foreground:"#1e66f5"}},{scope:["meta.annotation.rust","meta.annotation.rust punctuation","meta.attribute.rust","punctuation.definition.attribute.rust"],settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:["meta.attribute.rust string.quoted.double.rust","meta.attribute.rust string.quoted.single.char.rust"],settings:{fontStyle:""}},{scope:["entity.name.function.macro.rules.rust","storage.type.module.rust","storage.modifier.rust","storage.type.struct.rust","storage.type.enum.rust","storage.type.trait.rust","storage.type.union.rust","storage.type.impl.rust","storage.type.rust","storage.type.function.rust","storage.type.type.rust"],settings:{fontStyle:"",foreground:"#8839ef"}},{scope:"entity.name.type.numeric.rust",settings:{fontStyle:"",foreground:"#8839ef"}},{scope:"meta.generic.rust",settings:{foreground:"#fe640b"}},{scope:"entity.name.impl.rust",settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:"entity.name.module.rust",settings:{foreground:"#fe640b"}},{scope:"entity.name.trait.rust",settings:{fontStyle:"italic",foreground:"#df8e1d"}},{scope:"storage.type.source.rust",settings:{foreground:"#df8e1d"}},{scope:"entity.name.union.rust",settings:{foreground:"#df8e1d"}},{scope:"meta.enum.rust storage.type.source.rust",settings:{foreground:"#179299"}},{scope:["support.macro.rust","meta.macro.rust support.function.rust","entity.name.function.macro.rust"],settings:{fontStyle:"italic",foreground:"#1e66f5"}},{scope:["storage.modifier.lifetime.rust","entity.name.type.lifetime"],settings:{fontStyle:"italic",foreground:"#1e66f5"}},{scope:"string.quoted.double.rust constant.other.placeholder.rust",settings:{foreground:"#ea76cb"}},{scope:"meta.function.return-type.rust meta.generic.rust storage.type.rust",settings:{foreground:"#4c4f69"}},{scope:"meta.function.call.rust",settings:{foreground:"#1e66f5"}},{scope:"punctuation.brackets.angle.rust",settings:{foreground:"#04a5e5"}},{scope:"constant.other.caps.rust",settings:{foreground:"#fe640b"}},{scope:["meta.function.definition.rust variable.other.rust"],settings:{foreground:"#e64553"}},{scope:"meta.function.call.rust variable.other.rust",settings:{foreground:"#4c4f69"}},{scope:"variable.language.self.rust",settings:{foreground:"#d20f39"}},{scope:["variable.other.metavariable.name.rust","meta.macro.metavariable.rust keyword.operator.macro.dollar.rust"],settings:{foreground:"#ea76cb"}},{scope:["comment.line.shebang","comment.line.shebang punctuation.definition.comment","comment.line.shebang","punctuation.definition.comment.shebang.shell","meta.shebang.shell"],settings:{fontStyle:"italic",foreground:"#ea76cb"}},{scope:"comment.line.shebang constant.language",settings:{fontStyle:"italic",foreground:"#179299"}},{scope:["meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation","meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation"],settings:{foreground:"#d20f39"}},{scope:"meta.string meta.interpolation.parameter.shell variable.other.readwrite",settings:{fontStyle:"italic",foreground:"#fe640b"}},{scope:["source.shell punctuation.section.interpolation","punctuation.definition.evaluation.backticks.shell"],settings:{foreground:"#179299"}},{scope:"entity.name.tag.heredoc.shell",settings:{foreground:"#8839ef"}},{scope:"string.quoted.double.shell variable.other.normal.shell",settings:{foreground:"#4c4f69"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/catppuccin-macchiato.DVLwECkk.js b/assets/chunks/catppuccin-macchiato.DVLwECkk.js new file mode 100644 index 000000000..897bca650 --- /dev/null +++ b/assets/chunks/catppuccin-macchiato.DVLwECkk.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#00000000","activityBar.activeBorder":"#00000000","activityBar.activeFocusBorder":"#00000000","activityBar.background":"#181926","activityBar.border":"#00000000","activityBar.dropBorder":"#c6a0f633","activityBar.foreground":"#c6a0f6","activityBar.inactiveForeground":"#6e738d","activityBarBadge.background":"#c6a0f6","activityBarBadge.foreground":"#181926","activityBarTop.activeBorder":"#00000000","activityBarTop.dropBorder":"#c6a0f633","activityBarTop.foreground":"#c6a0f6","activityBarTop.inactiveForeground":"#6e738d","badge.background":"#494d64","badge.foreground":"#cad3f5","banner.background":"#494d64","banner.foreground":"#cad3f5","banner.iconForeground":"#cad3f5","breadcrumb.activeSelectionForeground":"#c6a0f6","breadcrumb.background":"#24273a","breadcrumb.focusForeground":"#c6a0f6","breadcrumb.foreground":"#cad3f5cc","breadcrumbPicker.background":"#1e2030","button.background":"#c6a0f6","button.border":"#00000000","button.foreground":"#181926","button.hoverBackground":"#dac1f9","button.secondaryBackground":"#5b6078","button.secondaryBorder":"#c6a0f6","button.secondaryForeground":"#cad3f5","button.secondaryHoverBackground":"#6a708c","button.separator":"#00000000","charts.blue":"#8aadf4","charts.foreground":"#cad3f5","charts.green":"#a6da95","charts.lines":"#b8c0e0","charts.orange":"#f5a97f","charts.purple":"#c6a0f6","charts.red":"#ed8796","charts.yellow":"#eed49f","checkbox.background":"#494d64","checkbox.border":"#00000000","checkbox.foreground":"#c6a0f6","commandCenter.activeBackground":"#5b607833","commandCenter.activeBorder":"#c6a0f6","commandCenter.activeForeground":"#c6a0f6","commandCenter.background":"#1e2030","commandCenter.border":"#00000000","commandCenter.foreground":"#b8c0e0","commandCenter.inactiveBorder":"#00000000","commandCenter.inactiveForeground":"#b8c0e0","debugConsole.errorForeground":"#ed8796","debugConsole.infoForeground":"#8aadf4","debugConsole.sourceForeground":"#f4dbd6","debugConsole.warningForeground":"#f5a97f","debugConsoleInputIcon.foreground":"#cad3f5","debugExceptionWidget.background":"#181926","debugExceptionWidget.border":"#c6a0f6","debugIcon.breakpointCurrentStackframeForeground":"#5b6078","debugIcon.breakpointDisabledForeground":"#ed879699","debugIcon.breakpointForeground":"#ed8796","debugIcon.breakpointStackframeForeground":"#5b6078","debugIcon.breakpointUnverifiedForeground":"#a47487","debugIcon.continueForeground":"#a6da95","debugIcon.disconnectForeground":"#5b6078","debugIcon.pauseForeground":"#8aadf4","debugIcon.restartForeground":"#8bd5ca","debugIcon.startForeground":"#a6da95","debugIcon.stepBackForeground":"#5b6078","debugIcon.stepIntoForeground":"#cad3f5","debugIcon.stepOutForeground":"#cad3f5","debugIcon.stepOverForeground":"#c6a0f6","debugIcon.stopForeground":"#ed8796","debugTokenExpression.boolean":"#c6a0f6","debugTokenExpression.error":"#ed8796","debugTokenExpression.number":"#f5a97f","debugTokenExpression.string":"#a6da95","debugToolBar.background":"#181926","debugToolBar.border":"#00000000",descriptionForeground:"#cad3f5","diffEditor.border":"#5b6078","diffEditor.diagonalFill":"#5b607899","diffEditor.insertedLineBackground":"#a6da9526","diffEditor.insertedTextBackground":"#a6da951a","diffEditor.removedLineBackground":"#ed879626","diffEditor.removedTextBackground":"#ed87961a","diffEditorOverview.insertedForeground":"#a6da95cc","diffEditorOverview.removedForeground":"#ed8796cc",disabledForeground:"#a5adcb","dropdown.background":"#1e2030","dropdown.border":"#c6a0f6","dropdown.foreground":"#cad3f5","dropdown.listBackground":"#5b6078","editor.background":"#24273a","editor.findMatchBackground":"#604456","editor.findMatchBorder":"#ed879633","editor.findMatchHighlightBackground":"#455c6d","editor.findMatchHighlightBorder":"#91d7e333","editor.findRangeHighlightBackground":"#455c6d","editor.findRangeHighlightBorder":"#91d7e333","editor.focusedStackFrameHighlightBackground":"#a6da9526","editor.foldBackground":"#91d7e340","editor.foreground":"#cad3f5","editor.hoverHighlightBackground":"#91d7e340","editor.lineHighlightBackground":"#cad3f512","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#91d7e340","editor.rangeHighlightBorder":"#00000000","editor.selectionBackground":"#939ab740","editor.selectionHighlightBackground":"#939ab733","editor.selectionHighlightBorder":"#939ab733","editor.stackFrameHighlightBackground":"#eed49f26","editor.wordHighlightBackground":"#939ab733","editorBracketHighlight.foreground1":"#ed8796","editorBracketHighlight.foreground2":"#f5a97f","editorBracketHighlight.foreground3":"#eed49f","editorBracketHighlight.foreground4":"#a6da95","editorBracketHighlight.foreground5":"#7dc4e4","editorBracketHighlight.foreground6":"#c6a0f6","editorBracketHighlight.unexpectedBracket.foreground":"#ee99a0","editorBracketMatch.background":"#939ab71a","editorBracketMatch.border":"#939ab7","editorCodeLens.foreground":"#8087a2","editorCursor.background":"#24273a","editorCursor.foreground":"#f4dbd6","editorError.background":"#00000000","editorError.border":"#00000000","editorError.foreground":"#ed8796","editorGroup.border":"#5b6078","editorGroup.dropBackground":"#c6a0f633","editorGroup.emptyBackground":"#24273a","editorGroupHeader.tabsBackground":"#181926","editorGutter.addedBackground":"#a6da95","editorGutter.background":"#24273a","editorGutter.commentRangeForeground":"#939ab7","editorGutter.deletedBackground":"#ed8796","editorGutter.foldingControlForeground":"#939ab7","editorGutter.modifiedBackground":"#eed49f","editorHoverWidget.background":"#1e2030","editorHoverWidget.border":"#5b6078","editorHoverWidget.foreground":"#cad3f5","editorIndentGuide.activeBackground":"#5b6078","editorIndentGuide.background":"#494d64","editorInfo.background":"#00000000","editorInfo.border":"#00000000","editorInfo.foreground":"#8aadf4","editorInlayHint.background":"#1e2030bf","editorInlayHint.foreground":"#5b6078","editorInlayHint.parameterBackground":"#1e2030bf","editorInlayHint.parameterForeground":"#a5adcb","editorInlayHint.typeBackground":"#1e2030bf","editorInlayHint.typeForeground":"#b8c0e0","editorLightBulb.foreground":"#eed49f","editorLineNumber.activeForeground":"#c6a0f6","editorLineNumber.foreground":"#8087a2","editorLink.activeForeground":"#c6a0f6","editorMarkerNavigation.background":"#1e2030","editorMarkerNavigationError.background":"#ed8796","editorMarkerNavigationInfo.background":"#8aadf4","editorMarkerNavigationWarning.background":"#f5a97f","editorOverviewRuler.background":"#1e2030","editorOverviewRuler.border":"#cad3f512","editorOverviewRuler.modifiedForeground":"#eed49f","editorRuler.foreground":"#5b6078","editorStickyScrollHover.background":"#363a4f","editorSuggestWidget.background":"#1e2030","editorSuggestWidget.border":"#5b6078","editorSuggestWidget.foreground":"#cad3f5","editorSuggestWidget.highlightForeground":"#c6a0f6","editorSuggestWidget.selectedBackground":"#363a4f","editorWarning.background":"#00000000","editorWarning.border":"#00000000","editorWarning.foreground":"#f5a97f","editorWhitespace.foreground":"#939ab766","editorWidget.background":"#1e2030","editorWidget.foreground":"#cad3f5","editorWidget.resizeBorder":"#5b6078",errorForeground:"#ed8796","errorLens.errorBackground":"#ed879626","errorLens.errorBackgroundLight":"#ed879626","errorLens.errorForeground":"#ed8796","errorLens.errorForegroundLight":"#ed8796","errorLens.errorMessageBackground":"#ed879626","errorLens.hintBackground":"#a6da9526","errorLens.hintBackgroundLight":"#a6da9526","errorLens.hintForeground":"#a6da95","errorLens.hintForegroundLight":"#a6da95","errorLens.hintMessageBackground":"#a6da9526","errorLens.infoBackground":"#8aadf426","errorLens.infoBackgroundLight":"#8aadf426","errorLens.infoForeground":"#8aadf4","errorLens.infoForegroundLight":"#8aadf4","errorLens.infoMessageBackground":"#8aadf426","errorLens.statusBarErrorForeground":"#ed8796","errorLens.statusBarHintForeground":"#a6da95","errorLens.statusBarIconErrorForeground":"#ed8796","errorLens.statusBarIconWarningForeground":"#f5a97f","errorLens.statusBarInfoForeground":"#8aadf4","errorLens.statusBarWarningForeground":"#f5a97f","errorLens.warningBackground":"#f5a97f26","errorLens.warningBackgroundLight":"#f5a97f26","errorLens.warningForeground":"#f5a97f","errorLens.warningForegroundLight":"#f5a97f","errorLens.warningMessageBackground":"#f5a97f26","extensionBadge.remoteBackground":"#8aadf4","extensionBadge.remoteForeground":"#181926","extensionButton.prominentBackground":"#c6a0f6","extensionButton.prominentForeground":"#181926","extensionButton.prominentHoverBackground":"#dac1f9","extensionButton.separator":"#24273a","extensionIcon.preReleaseForeground":"#5b6078","extensionIcon.sponsorForeground":"#f5bde6","extensionIcon.starForeground":"#eed49f","extensionIcon.verifiedForeground":"#a6da95",focusBorder:"#c6a0f6",foreground:"#cad3f5","gitDecoration.addedResourceForeground":"#a6da95","gitDecoration.conflictingResourceForeground":"#c6a0f6","gitDecoration.deletedResourceForeground":"#ed8796","gitDecoration.ignoredResourceForeground":"#6e738d","gitDecoration.modifiedResourceForeground":"#eed49f","gitDecoration.stageDeletedResourceForeground":"#ed8796","gitDecoration.stageModifiedResourceForeground":"#eed49f","gitDecoration.submoduleResourceForeground":"#8aadf4","gitDecoration.untrackedResourceForeground":"#a6da95","gitlens.closedAutolinkedIssueIconColor":"#c6a0f6","gitlens.closedPullRequestIconColor":"#ed8796","gitlens.decorations.branchAheadForegroundColor":"#a6da95","gitlens.decorations.branchBehindForegroundColor":"#f5a97f","gitlens.decorations.branchDivergedForegroundColor":"#eed49f","gitlens.decorations.branchMissingUpstreamForegroundColor":"#f5a97f","gitlens.decorations.branchUnpublishedForegroundColor":"#a6da95","gitlens.decorations.statusMergingOrRebasingConflictForegroundColor":"#ee99a0","gitlens.decorations.statusMergingOrRebasingForegroundColor":"#eed49f","gitlens.decorations.workspaceCurrentForegroundColor":"#c6a0f6","gitlens.decorations.workspaceRepoMissingForegroundColor":"#a5adcb","gitlens.decorations.workspaceRepoOpenForegroundColor":"#c6a0f6","gitlens.decorations.worktreeHasUncommittedChangesForegroundColor":"#f5a97f","gitlens.decorations.worktreeMissingForegroundColor":"#ee99a0","gitlens.graphChangesColumnAddedColor":"#a6da95","gitlens.graphChangesColumnDeletedColor":"#ed8796","gitlens.graphLane10Color":"#f5bde6","gitlens.graphLane1Color":"#c6a0f6","gitlens.graphLane2Color":"#eed49f","gitlens.graphLane3Color":"#8aadf4","gitlens.graphLane4Color":"#f0c6c6","gitlens.graphLane5Color":"#a6da95","gitlens.graphLane6Color":"#b7bdf8","gitlens.graphLane7Color":"#f4dbd6","gitlens.graphLane8Color":"#ed8796","gitlens.graphLane9Color":"#8bd5ca","gitlens.graphMinimapMarkerHeadColor":"#a6da95","gitlens.graphMinimapMarkerHighlightsColor":"#eed49f","gitlens.graphMinimapMarkerLocalBranchesColor":"#8aadf4","gitlens.graphMinimapMarkerRemoteBranchesColor":"#739df2","gitlens.graphMinimapMarkerStashesColor":"#c6a0f6","gitlens.graphMinimapMarkerTagsColor":"#f0c6c6","gitlens.graphMinimapMarkerUpstreamColor":"#96d382","gitlens.graphScrollMarkerHeadColor":"#a6da95","gitlens.graphScrollMarkerHighlightsColor":"#eed49f","gitlens.graphScrollMarkerLocalBranchesColor":"#8aadf4","gitlens.graphScrollMarkerRemoteBranchesColor":"#739df2","gitlens.graphScrollMarkerStashesColor":"#c6a0f6","gitlens.graphScrollMarkerTagsColor":"#f0c6c6","gitlens.graphScrollMarkerUpstreamColor":"#96d382","gitlens.gutterBackgroundColor":"#363a4f4d","gitlens.gutterForegroundColor":"#cad3f5","gitlens.gutterUncommittedForegroundColor":"#c6a0f6","gitlens.lineHighlightBackgroundColor":"#c6a0f626","gitlens.lineHighlightOverviewRulerColor":"#c6a0f6cc","gitlens.mergedPullRequestIconColor":"#c6a0f6","gitlens.openAutolinkedIssueIconColor":"#a6da95","gitlens.openPullRequestIconColor":"#a6da95","gitlens.trailingLineBackgroundColor":"#00000000","gitlens.trailingLineForegroundColor":"#cad3f54d","gitlens.unpublishedChangesIconColor":"#a6da95","gitlens.unpublishedCommitIconColor":"#a6da95","gitlens.unpulledChangesIconColor":"#f5a97f","icon.foreground":"#c6a0f6","input.background":"#363a4f","input.border":"#00000000","input.foreground":"#cad3f5","input.placeholderForeground":"#cad3f573","inputOption.activeBackground":"#5b6078","inputOption.activeBorder":"#c6a0f6","inputOption.activeForeground":"#cad3f5","inputValidation.errorBackground":"#ed8796","inputValidation.errorBorder":"#18192633","inputValidation.errorForeground":"#181926","inputValidation.infoBackground":"#8aadf4","inputValidation.infoBorder":"#18192633","inputValidation.infoForeground":"#181926","inputValidation.warningBackground":"#f5a97f","inputValidation.warningBorder":"#18192633","inputValidation.warningForeground":"#181926","issues.closed":"#c6a0f6","issues.newIssueDecoration":"#f4dbd6","issues.open":"#a6da95","list.activeSelectionBackground":"#363a4f","list.activeSelectionForeground":"#cad3f5","list.dropBackground":"#c6a0f633","list.focusAndSelectionBackground":"#494d64","list.focusBackground":"#363a4f","list.focusForeground":"#cad3f5","list.focusOutline":"#00000000","list.highlightForeground":"#c6a0f6","list.hoverBackground":"#363a4f80","list.hoverForeground":"#cad3f5","list.inactiveSelectionBackground":"#363a4f","list.inactiveSelectionForeground":"#cad3f5","list.warningForeground":"#f5a97f","listFilterWidget.background":"#494d64","listFilterWidget.noMatchesOutline":"#ed8796","listFilterWidget.outline":"#00000000","menu.background":"#24273a","menu.border":"#24273a80","menu.foreground":"#cad3f5","menu.selectionBackground":"#5b6078","menu.selectionBorder":"#00000000","menu.selectionForeground":"#cad3f5","menu.separatorBackground":"#5b6078","menubar.selectionBackground":"#494d64","menubar.selectionForeground":"#cad3f5","merge.commonContentBackground":"#494d64","merge.commonHeaderBackground":"#5b6078","merge.currentContentBackground":"#a6da9533","merge.currentHeaderBackground":"#a6da9566","merge.incomingContentBackground":"#8aadf433","merge.incomingHeaderBackground":"#8aadf466","minimap.background":"#1e203080","minimap.errorHighlight":"#ed8796bf","minimap.findMatchHighlight":"#91d7e34d","minimap.selectionHighlight":"#5b6078bf","minimap.selectionOccurrenceHighlight":"#5b6078bf","minimap.warningHighlight":"#f5a97fbf","minimapGutter.addedBackground":"#a6da95bf","minimapGutter.deletedBackground":"#ed8796bf","minimapGutter.modifiedBackground":"#eed49fbf","minimapSlider.activeBackground":"#c6a0f699","minimapSlider.background":"#c6a0f633","minimapSlider.hoverBackground":"#c6a0f666","notificationCenter.border":"#c6a0f6","notificationCenterHeader.background":"#1e2030","notificationCenterHeader.foreground":"#cad3f5","notificationLink.foreground":"#8aadf4","notificationToast.border":"#c6a0f6","notifications.background":"#1e2030","notifications.border":"#c6a0f6","notifications.foreground":"#cad3f5","notificationsErrorIcon.foreground":"#ed8796","notificationsInfoIcon.foreground":"#8aadf4","notificationsWarningIcon.foreground":"#f5a97f","panel.background":"#24273a","panel.border":"#5b6078","panelSection.border":"#5b6078","panelSection.dropBackground":"#c6a0f633","panelTitle.activeBorder":"#c6a0f6","panelTitle.activeForeground":"#cad3f5","panelTitle.inactiveForeground":"#a5adcb","peekView.border":"#c6a0f6","peekViewEditor.background":"#1e2030","peekViewEditor.matchHighlightBackground":"#91d7e34d","peekViewEditor.matchHighlightBorder":"#00000000","peekViewEditorGutter.background":"#1e2030","peekViewResult.background":"#1e2030","peekViewResult.fileForeground":"#cad3f5","peekViewResult.lineForeground":"#cad3f5","peekViewResult.matchHighlightBackground":"#91d7e34d","peekViewResult.selectionBackground":"#363a4f","peekViewResult.selectionForeground":"#cad3f5","peekViewTitle.background":"#24273a","peekViewTitleDescription.foreground":"#b8c0e0b3","peekViewTitleLabel.foreground":"#cad3f5","pickerGroup.border":"#c6a0f6","pickerGroup.foreground":"#c6a0f6","problemsErrorIcon.foreground":"#ed8796","problemsInfoIcon.foreground":"#8aadf4","problemsWarningIcon.foreground":"#f5a97f","progressBar.background":"#c6a0f6","pullRequests.closed":"#ed8796","pullRequests.draft":"#939ab7","pullRequests.merged":"#c6a0f6","pullRequests.notification":"#cad3f5","pullRequests.open":"#a6da95","sash.hoverBorder":"#c6a0f6","scrollbar.shadow":"#181926","scrollbarSlider.activeBackground":"#363a4f66","scrollbarSlider.background":"#5b607880","scrollbarSlider.hoverBackground":"#6e738d","selection.background":"#c6a0f666","settings.dropdownBackground":"#494d64","settings.dropdownListBorder":"#00000000","settings.focusedRowBackground":"#5b607833","settings.headerForeground":"#cad3f5","settings.modifiedItemIndicator":"#c6a0f6","settings.numberInputBackground":"#494d64","settings.numberInputBorder":"#00000000","settings.textInputBackground":"#494d64","settings.textInputBorder":"#00000000","sideBar.background":"#1e2030","sideBar.border":"#00000000","sideBar.dropBackground":"#c6a0f633","sideBar.foreground":"#cad3f5","sideBarSectionHeader.background":"#1e2030","sideBarSectionHeader.foreground":"#cad3f5","sideBarTitle.foreground":"#c6a0f6","statusBar.background":"#181926","statusBar.border":"#00000000","statusBar.debuggingBackground":"#f5a97f","statusBar.debuggingBorder":"#00000000","statusBar.debuggingForeground":"#181926","statusBar.foreground":"#cad3f5","statusBar.noFolderBackground":"#181926","statusBar.noFolderBorder":"#00000000","statusBar.noFolderForeground":"#cad3f5","statusBarItem.activeBackground":"#5b607866","statusBarItem.errorBackground":"#00000000","statusBarItem.errorForeground":"#ed8796","statusBarItem.hoverBackground":"#5b607833","statusBarItem.prominentBackground":"#00000000","statusBarItem.prominentForeground":"#c6a0f6","statusBarItem.prominentHoverBackground":"#5b607833","statusBarItem.remoteBackground":"#8aadf4","statusBarItem.remoteForeground":"#181926","statusBarItem.warningBackground":"#00000000","statusBarItem.warningForeground":"#f5a97f","symbolIcon.arrayForeground":"#f5a97f","symbolIcon.booleanForeground":"#c6a0f6","symbolIcon.classForeground":"#eed49f","symbolIcon.colorForeground":"#f5bde6","symbolIcon.constantForeground":"#f5a97f","symbolIcon.constructorForeground":"#b7bdf8","symbolIcon.enumeratorForeground":"#eed49f","symbolIcon.enumeratorMemberForeground":"#eed49f","symbolIcon.eventForeground":"#f5bde6","symbolIcon.fieldForeground":"#cad3f5","symbolIcon.fileForeground":"#c6a0f6","symbolIcon.folderForeground":"#c6a0f6","symbolIcon.functionForeground":"#8aadf4","symbolIcon.interfaceForeground":"#eed49f","symbolIcon.keyForeground":"#8bd5ca","symbolIcon.keywordForeground":"#c6a0f6","symbolIcon.methodForeground":"#8aadf4","symbolIcon.moduleForeground":"#cad3f5","symbolIcon.namespaceForeground":"#eed49f","symbolIcon.nullForeground":"#ee99a0","symbolIcon.numberForeground":"#f5a97f","symbolIcon.objectForeground":"#eed49f","symbolIcon.operatorForeground":"#8bd5ca","symbolIcon.packageForeground":"#f0c6c6","symbolIcon.propertyForeground":"#ee99a0","symbolIcon.referenceForeground":"#eed49f","symbolIcon.snippetForeground":"#f0c6c6","symbolIcon.stringForeground":"#a6da95","symbolIcon.structForeground":"#8bd5ca","symbolIcon.textForeground":"#cad3f5","symbolIcon.typeParameterForeground":"#ee99a0","symbolIcon.unitForeground":"#cad3f5","symbolIcon.variableForeground":"#cad3f5","tab.activeBackground":"#24273a","tab.activeBorder":"#00000000","tab.activeBorderTop":"#c6a0f6","tab.activeForeground":"#c6a0f6","tab.activeModifiedBorder":"#eed49f","tab.border":"#1e2030","tab.hoverBackground":"#2e324a","tab.hoverBorder":"#00000000","tab.hoverForeground":"#c6a0f6","tab.inactiveBackground":"#1e2030","tab.inactiveForeground":"#6e738d","tab.inactiveModifiedBorder":"#eed49f4d","tab.lastPinnedBorder":"#c6a0f6","tab.unfocusedActiveBackground":"#1e2030","tab.unfocusedActiveBorder":"#00000000","tab.unfocusedActiveBorderTop":"#c6a0f64d","tab.unfocusedInactiveBackground":"#141620","table.headerBackground":"#363a4f","table.headerForeground":"#cad3f5","terminal.ansiBlack":"#a5adcb","terminal.ansiBlue":"#8aadf4","terminal.ansiBrightBlack":"#5b6078","terminal.ansiBrightBlue":"#8aadf4","terminal.ansiBrightCyan":"#91d7e3","terminal.ansiBrightGreen":"#a6da95","terminal.ansiBrightMagenta":"#f5bde6","terminal.ansiBrightRed":"#ed8796","terminal.ansiBrightWhite":"#494d64","terminal.ansiBrightYellow":"#eed49f","terminal.ansiCyan":"#91d7e3","terminal.ansiGreen":"#a6da95","terminal.ansiMagenta":"#f5bde6","terminal.ansiRed":"#ed8796","terminal.ansiWhite":"#b8c0e0","terminal.ansiYellow":"#eed49f","terminal.border":"#5b6078","terminal.dropBackground":"#c6a0f633","terminal.foreground":"#cad3f5","terminal.inactiveSelectionBackground":"#5b607880","terminal.selectionBackground":"#5b6078","terminal.tab.activeBorder":"#c6a0f6","terminalCommandDecoration.defaultBackground":"#5b6078","terminalCommandDecoration.errorBackground":"#ed8796","terminalCommandDecoration.successBackground":"#a6da95","terminalCursor.background":"#24273a","terminalCursor.foreground":"#f4dbd6","textBlockQuote.background":"#1e2030","textBlockQuote.border":"#181926","textCodeBlock.background":"#24273a","textLink.activeForeground":"#91d7e3","textLink.foreground":"#8aadf4","textPreformat.foreground":"#cad3f5","textSeparator.foreground":"#c6a0f6","titleBar.activeBackground":"#181926","titleBar.activeForeground":"#cad3f5","titleBar.border":"#00000000","titleBar.inactiveBackground":"#181926","titleBar.inactiveForeground":"#cad3f580","tree.inactiveIndentGuidesStroke":"#494d64","tree.indentGuidesStroke":"#939ab7","walkThrough.embeddedEditorBackground":"#24273a4d","welcomePage.progress.background":"#181926","welcomePage.progress.foreground":"#c6a0f6","welcomePage.tileBackground":"#1e2030","widget.shadow":"#1e203080","window.activeBorder":"#00000000","window.inactiveBorder":"#00000000"},displayName:"Catppuccin Macchiato",name:"catppuccin-macchiato",semanticHighlighting:!0,semanticTokenColors:{boolean:{foreground:"#f5a97f"},"builtinAttribute.attribute.library:rust":{foreground:"#8aadf4"},"class.builtin:python":{foreground:"#c6a0f6"},"class:python":{foreground:"#eed49f"},"constant.builtin.readonly:nix":{foreground:"#c6a0f6"},enumMember:{foreground:"#8bd5ca"},"function.decorator:python":{foreground:"#f5a97f"},"generic.attribute:rust":{foreground:"#cad3f5"},heading:{foreground:"#ed8796"},number:{foreground:"#f5a97f"},pol:{foreground:"#f0c6c6"},"property.readonly:javascript":{foreground:"#cad3f5"},"property.readonly:javascriptreact":{foreground:"#cad3f5"},"property.readonly:typescript":{foreground:"#cad3f5"},"property.readonly:typescriptreact":{foreground:"#cad3f5"},selfKeyword:{foreground:"#ed8796"},"text.emph":{fontStyle:"italic",foreground:"#ed8796"},"text.math":{foreground:"#f0c6c6"},"text.strong":{fontStyle:"bold",foreground:"#ed8796"},tomlArrayKey:{fontStyle:"",foreground:"#8aadf4"},tomlTableKey:{fontStyle:"",foreground:"#8aadf4"},"type.defaultLibrary:go":{foreground:"#c6a0f6"},"variable.defaultLibrary":{foreground:"#ee99a0"},"variable.readonly.defaultLibrary:go":{foreground:"#c6a0f6"},"variable.readonly:javascript":{foreground:"#cad3f5"},"variable.readonly:javascriptreact":{foreground:"#cad3f5"},"variable.readonly:scala":{foreground:"#cad3f5"},"variable.readonly:typescript":{foreground:"#cad3f5"},"variable.readonly:typescriptreact":{foreground:"#cad3f5"},"variable.typeHint:python":{foreground:"#eed49f"}},tokenColors:[{scope:["text","source","variable.other.readwrite","punctuation.definition.variable"],settings:{foreground:"#cad3f5"}},{scope:"punctuation",settings:{fontStyle:"",foreground:"#939ab7"}},{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#6e738d"}},{scope:["string","punctuation.definition.string"],settings:{foreground:"#a6da95"}},{scope:"constant.character.escape",settings:{foreground:"#f5bde6"}},{scope:["constant.numeric","variable.other.constant","entity.name.constant","constant.language.boolean","constant.language.false","constant.language.true","keyword.other.unit.user-defined","keyword.other.unit.suffix.floating-point"],settings:{foreground:"#f5a97f"}},{scope:["keyword","keyword.operator.word","keyword.operator.new","variable.language.super","support.type.primitive","storage.type","storage.modifier","punctuation.definition.keyword"],settings:{fontStyle:"",foreground:"#c6a0f6"}},{scope:"entity.name.tag.documentation",settings:{foreground:"#c6a0f6"}},{scope:["keyword.operator","punctuation.accessor","punctuation.definition.generic","meta.function.closure punctuation.section.parameters","punctuation.definition.tag","punctuation.separator.key-value"],settings:{foreground:"#8bd5ca"}},{scope:["entity.name.function","meta.function-call.method","support.function","support.function.misc","variable.function"],settings:{fontStyle:"italic",foreground:"#8aadf4"}},{scope:["entity.name.class","entity.other.inherited-class","support.class","meta.function-call.constructor","entity.name.struct"],settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:"entity.name.enum",settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:["meta.enum variable.other.readwrite","variable.other.enummember"],settings:{foreground:"#8bd5ca"}},{scope:"meta.property.object",settings:{foreground:"#8bd5ca"}},{scope:["meta.type","meta.type-alias","support.type","entity.name.type"],settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:["meta.annotation variable.function","meta.annotation variable.annotation.function","meta.annotation punctuation.definition.annotation","meta.decorator","punctuation.decorator"],settings:{foreground:"#f5a97f"}},{scope:["variable.parameter","meta.function.parameters"],settings:{fontStyle:"italic",foreground:"#ee99a0"}},{scope:["constant.language","support.function.builtin"],settings:{foreground:"#ed8796"}},{scope:"entity.other.attribute-name.documentation",settings:{foreground:"#ed8796"}},{scope:["keyword.control.directive","punctuation.definition.directive"],settings:{foreground:"#eed49f"}},{scope:"punctuation.definition.typeparameters",settings:{foreground:"#91d7e3"}},{scope:"entity.name.namespace",settings:{foreground:"#eed49f"}},{scope:"support.type.property-name.css",settings:{fontStyle:"",foreground:"#8aadf4"}},{scope:["variable.language.this","variable.language.this punctuation.definition.variable"],settings:{foreground:"#ed8796"}},{scope:"variable.object.property",settings:{foreground:"#cad3f5"}},{scope:["string.template variable","string variable"],settings:{foreground:"#cad3f5"}},{scope:"keyword.operator.new",settings:{fontStyle:"bold"}},{scope:"storage.modifier.specifier.extern.cpp",settings:{foreground:"#c6a0f6"}},{scope:["entity.name.scope-resolution.template.call.cpp","entity.name.scope-resolution.parameter.cpp","entity.name.scope-resolution.cpp","entity.name.scope-resolution.function.definition.cpp"],settings:{foreground:"#eed49f"}},{scope:"storage.type.class.doxygen",settings:{fontStyle:""}},{scope:["storage.modifier.reference.cpp"],settings:{foreground:"#8bd5ca"}},{scope:"meta.interpolation.cs",settings:{foreground:"#cad3f5"}},{scope:"comment.block.documentation.cs",settings:{foreground:"#cad3f5"}},{scope:["source.css entity.other.attribute-name.class.css","entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css"],settings:{foreground:"#eed49f"}},{scope:"punctuation.separator.operator.css",settings:{foreground:"#8bd5ca"}},{scope:"source.css entity.other.attribute-name.pseudo-class",settings:{foreground:"#8bd5ca"}},{scope:"source.css constant.other.unicode-range",settings:{foreground:"#f5a97f"}},{scope:"source.css variable.parameter.url",settings:{fontStyle:"",foreground:"#a6da95"}},{scope:["support.type.vendored.property-name"],settings:{foreground:"#91d7e3"}},{scope:["source.css meta.property-value variable","source.css meta.property-value variable.other.less","source.css meta.property-value variable.other.less punctuation.definition.variable.less","meta.definition.variable.scss"],settings:{foreground:"#ee99a0"}},{scope:["source.css meta.property-list variable","meta.property-list variable.other.less","meta.property-list variable.other.less punctuation.definition.variable.less"],settings:{foreground:"#8aadf4"}},{scope:"keyword.other.unit.percentage.css",settings:{foreground:"#f5a97f"}},{scope:"source.css meta.attribute-selector",settings:{foreground:"#a6da95"}},{scope:["keyword.other.definition.ini","punctuation.support.type.property-name.json","support.type.property-name.json","punctuation.support.type.property-name.toml","support.type.property-name.toml","entity.name.tag.yaml","punctuation.support.type.property-name.yaml","support.type.property-name.yaml"],settings:{fontStyle:"",foreground:"#8aadf4"}},{scope:["constant.language.json","constant.language.yaml"],settings:{foreground:"#f5a97f"}},{scope:["entity.name.type.anchor.yaml","variable.other.alias.yaml"],settings:{fontStyle:"",foreground:"#eed49f"}},{scope:["support.type.property-name.table","entity.name.section.group-title.ini"],settings:{foreground:"#eed49f"}},{scope:"constant.other.time.datetime.offset.toml",settings:{foreground:"#f5bde6"}},{scope:["punctuation.definition.anchor.yaml","punctuation.definition.alias.yaml"],settings:{foreground:"#f5bde6"}},{scope:"entity.other.document.begin.yaml",settings:{foreground:"#f5bde6"}},{scope:"markup.changed.diff",settings:{foreground:"#f5a97f"}},{scope:["meta.diff.header.from-file","meta.diff.header.to-file","punctuation.definition.from-file.diff","punctuation.definition.to-file.diff"],settings:{foreground:"#8aadf4"}},{scope:"markup.inserted.diff",settings:{foreground:"#a6da95"}},{scope:"markup.deleted.diff",settings:{foreground:"#ed8796"}},{scope:["variable.other.env"],settings:{foreground:"#8aadf4"}},{scope:["string.quoted variable.other.env"],settings:{foreground:"#cad3f5"}},{scope:"support.function.builtin.gdscript",settings:{foreground:"#8aadf4"}},{scope:"constant.language.gdscript",settings:{foreground:"#f5a97f"}},{scope:"comment meta.annotation.go",settings:{foreground:"#ee99a0"}},{scope:"comment meta.annotation.parameters.go",settings:{foreground:"#f5a97f"}},{scope:"constant.language.go",settings:{foreground:"#f5a97f"}},{scope:"variable.graphql",settings:{foreground:"#cad3f5"}},{scope:"string.unquoted.alias.graphql",settings:{foreground:"#f0c6c6"}},{scope:"constant.character.enum.graphql",settings:{foreground:"#8bd5ca"}},{scope:"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql",settings:{foreground:"#f0c6c6"}},{scope:["keyword.other.doctype","meta.tag.sgml.doctype punctuation.definition.tag","meta.tag.metadata.doctype entity.name.tag","meta.tag.metadata.doctype punctuation.definition.tag"],settings:{foreground:"#c6a0f6"}},{scope:["entity.name.tag"],settings:{fontStyle:"",foreground:"#8aadf4"}},{scope:["text.html constant.character.entity","text.html constant.character.entity punctuation","constant.character.entity.xml","constant.character.entity.xml punctuation","constant.character.entity.js.jsx","constant.charactger.entity.js.jsx punctuation","constant.character.entity.tsx","constant.character.entity.tsx punctuation"],settings:{foreground:"#ed8796"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#eed49f"}},{scope:["support.class.component","support.class.component.jsx","support.class.component.tsx","support.class.component.vue"],settings:{fontStyle:"",foreground:"#f5bde6"}},{scope:["punctuation.definition.annotation","storage.type.annotation"],settings:{foreground:"#f5a97f"}},{scope:"constant.other.enum.java",settings:{foreground:"#8bd5ca"}},{scope:"storage.modifier.import.java",settings:{foreground:"#cad3f5"}},{scope:"comment.block.javadoc.java keyword.other.documentation.javadoc.java",settings:{fontStyle:""}},{scope:"meta.export variable.other.readwrite.js",settings:{foreground:"#ee99a0"}},{scope:["variable.other.constant.js","variable.other.constant.ts","variable.other.property.js","variable.other.property.ts"],settings:{foreground:"#cad3f5"}},{scope:["variable.other.jsdoc","comment.block.documentation variable.other"],settings:{fontStyle:"",foreground:"#ee99a0"}},{scope:"storage.type.class.jsdoc",settings:{fontStyle:""}},{scope:"support.type.object.console.js",settings:{foreground:"#cad3f5"}},{scope:["support.constant.node","support.type.object.module.js"],settings:{foreground:"#c6a0f6"}},{scope:"storage.modifier.implements",settings:{foreground:"#c6a0f6"}},{scope:["constant.language.null.js","constant.language.null.ts","constant.language.undefined.js","constant.language.undefined.ts","support.type.builtin.ts"],settings:{foreground:"#c6a0f6"}},{scope:"variable.parameter.generic",settings:{foreground:"#eed49f"}},{scope:["keyword.declaration.function.arrow.js","storage.type.function.arrow.ts"],settings:{foreground:"#8bd5ca"}},{scope:"punctuation.decorator.ts",settings:{fontStyle:"italic",foreground:"#8aadf4"}},{scope:["keyword.operator.expression.in.js","keyword.operator.expression.in.ts","keyword.operator.expression.infer.ts","keyword.operator.expression.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.is","keyword.operator.expression.keyof.ts","keyword.operator.expression.of.js","keyword.operator.expression.of.ts","keyword.operator.expression.typeof.ts"],settings:{foreground:"#c6a0f6"}},{scope:"support.function.macro.julia",settings:{fontStyle:"italic",foreground:"#8bd5ca"}},{scope:"constant.language.julia",settings:{foreground:"#f5a97f"}},{scope:"constant.other.symbol.julia",settings:{foreground:"#ee99a0"}},{scope:"text.tex keyword.control.preamble",settings:{foreground:"#8bd5ca"}},{scope:"text.tex support.function.be",settings:{foreground:"#91d7e3"}},{scope:"constant.other.general.math.tex",settings:{foreground:"#f0c6c6"}},{scope:"comment.line.double-dash.documentation.lua storage.type.annotation.lua",settings:{fontStyle:"",foreground:"#c6a0f6"}},{scope:["comment.line.double-dash.documentation.lua entity.name.variable.lua","comment.line.double-dash.documentation.lua variable.lua"],settings:{foreground:"#cad3f5"}},{scope:["heading.1.markdown punctuation.definition.heading.markdown","heading.1.markdown","heading.1.quarto punctuation.definition.heading.quarto","heading.1.quarto","markup.heading.atx.1.mdx","markup.heading.atx.1.mdx punctuation.definition.heading.mdx","markup.heading.setext.1.markdown","markup.heading.heading-0.asciidoc"],settings:{foreground:"#ed8796"}},{scope:["heading.2.markdown punctuation.definition.heading.markdown","heading.2.markdown","heading.2.quarto punctuation.definition.heading.quarto","heading.2.quarto","markup.heading.atx.2.mdx","markup.heading.atx.2.mdx punctuation.definition.heading.mdx","markup.heading.setext.2.markdown","markup.heading.heading-1.asciidoc"],settings:{foreground:"#f5a97f"}},{scope:["heading.3.markdown punctuation.definition.heading.markdown","heading.3.markdown","heading.3.quarto punctuation.definition.heading.quarto","heading.3.quarto","markup.heading.atx.3.mdx","markup.heading.atx.3.mdx punctuation.definition.heading.mdx","markup.heading.heading-2.asciidoc"],settings:{foreground:"#eed49f"}},{scope:["heading.4.markdown punctuation.definition.heading.markdown","heading.4.markdown","heading.4.quarto punctuation.definition.heading.quarto","heading.4.quarto","markup.heading.atx.4.mdx","markup.heading.atx.4.mdx punctuation.definition.heading.mdx","markup.heading.heading-3.asciidoc"],settings:{foreground:"#a6da95"}},{scope:["heading.5.markdown punctuation.definition.heading.markdown","heading.5.markdown","heading.5.quarto punctuation.definition.heading.quarto","heading.5.quarto","markup.heading.atx.5.mdx","markup.heading.atx.5.mdx punctuation.definition.heading.mdx","markup.heading.heading-4.asciidoc"],settings:{foreground:"#8aadf4"}},{scope:["heading.6.markdown punctuation.definition.heading.markdown","heading.6.markdown","heading.6.quarto punctuation.definition.heading.quarto","heading.6.quarto","markup.heading.atx.6.mdx","markup.heading.atx.6.mdx punctuation.definition.heading.mdx","markup.heading.heading-5.asciidoc"],settings:{foreground:"#c6a0f6"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#ed8796"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#ed8796"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough",foreground:"#a5adcb"}},{scope:["punctuation.definition.link","markup.underline.link"],settings:{foreground:"#8aadf4"}},{scope:["text.html.markdown punctuation.definition.link.title","text.html.quarto punctuation.definition.link.title","string.other.link.title.markdown","string.other.link.title.quarto","markup.link","punctuation.definition.constant.markdown","punctuation.definition.constant.quarto","constant.other.reference.link.markdown","constant.other.reference.link.quarto","markup.substitution.attribute-reference"],settings:{foreground:"#b7bdf8"}},{scope:["punctuation.definition.raw.markdown","punctuation.definition.raw.quarto","markup.inline.raw.string.markdown","markup.inline.raw.string.quarto","markup.raw.block.markdown","markup.raw.block.quarto"],settings:{foreground:"#a6da95"}},{scope:"fenced_code.block.language",settings:{foreground:"#91d7e3"}},{scope:["markup.fenced_code.block punctuation.definition","markup.raw support.asciidoc"],settings:{foreground:"#939ab7"}},{scope:["markup.quote","punctuation.definition.quote.begin"],settings:{foreground:"#f5bde6"}},{scope:"meta.separator.markdown",settings:{foreground:"#8bd5ca"}},{scope:["punctuation.definition.list.begin.markdown","punctuation.definition.list.begin.quarto","markup.list.bullet"],settings:{foreground:"#8bd5ca"}},{scope:"markup.heading.quarto",settings:{fontStyle:"bold"}},{scope:["entity.other.attribute-name.multipart.nix","entity.other.attribute-name.single.nix"],settings:{foreground:"#8aadf4"}},{scope:"variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#cad3f5"}},{scope:"meta.embedded variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#b7bdf8"}},{scope:"string.unquoted.path.nix",settings:{fontStyle:"",foreground:"#f5bde6"}},{scope:["support.attribute.builtin","meta.attribute.php"],settings:{foreground:"#eed49f"}},{scope:"meta.function.parameters.php punctuation.definition.variable.php",settings:{foreground:"#ee99a0"}},{scope:"constant.language.php",settings:{foreground:"#c6a0f6"}},{scope:"text.html.php support.function",settings:{foreground:"#91d7e3"}},{scope:"keyword.other.phpdoc.php",settings:{fontStyle:""}},{scope:["support.variable.magic.python","meta.function-call.arguments.python"],settings:{foreground:"#cad3f5"}},{scope:["support.function.magic.python"],settings:{fontStyle:"italic",foreground:"#91d7e3"}},{scope:["variable.parameter.function.language.special.self.python","variable.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#ed8796"}},{scope:["keyword.control.flow.python","keyword.operator.logical.python"],settings:{foreground:"#c6a0f6"}},{scope:"storage.type.function.python",settings:{foreground:"#c6a0f6"}},{scope:["support.token.decorator.python","meta.function.decorator.identifier.python"],settings:{foreground:"#91d7e3"}},{scope:["meta.function-call.python"],settings:{foreground:"#8aadf4"}},{scope:["entity.name.function.decorator.python","punctuation.definition.decorator.python"],settings:{fontStyle:"italic",foreground:"#f5a97f"}},{scope:"constant.character.format.placeholder.other.python",settings:{foreground:"#f5bde6"}},{scope:["support.type.exception.python","support.function.builtin.python"],settings:{foreground:"#f5a97f"}},{scope:["support.type.python"],settings:{foreground:"#f5a97f"}},{scope:"constant.language.python",settings:{foreground:"#c6a0f6"}},{scope:["meta.indexed-name.python","meta.item-access.python"],settings:{fontStyle:"italic",foreground:"#ee99a0"}},{scope:"storage.type.string.python",settings:{fontStyle:"italic",foreground:"#a6da95"}},{scope:"meta.function.parameters.python",settings:{fontStyle:""}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#f5bde6"}},{scope:"keyword.control.anchor.regexp",settings:{foreground:"#c6a0f6"}},{scope:"string.regexp.ts",settings:{foreground:"#cad3f5"}},{scope:["punctuation.definition.group.regexp","keyword.other.back-reference.regexp"],settings:{foreground:"#a6da95"}},{scope:"punctuation.definition.character-class.regexp",settings:{foreground:"#eed49f"}},{scope:"constant.other.character-class.regexp",settings:{foreground:"#f5bde6"}},{scope:"constant.other.character-class.range.regexp",settings:{foreground:"#f4dbd6"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#8bd5ca"}},{scope:"constant.character.numeric.regexp",settings:{foreground:"#f5a97f"}},{scope:["punctuation.definition.group.no-capture.regexp","meta.assertion.look-ahead.regexp","meta.assertion.negative-look-ahead.regexp"],settings:{foreground:"#8aadf4"}},{scope:["meta.annotation.rust","meta.annotation.rust punctuation","meta.attribute.rust","punctuation.definition.attribute.rust"],settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:["meta.attribute.rust string.quoted.double.rust","meta.attribute.rust string.quoted.single.char.rust"],settings:{fontStyle:""}},{scope:["entity.name.function.macro.rules.rust","storage.type.module.rust","storage.modifier.rust","storage.type.struct.rust","storage.type.enum.rust","storage.type.trait.rust","storage.type.union.rust","storage.type.impl.rust","storage.type.rust","storage.type.function.rust","storage.type.type.rust"],settings:{fontStyle:"",foreground:"#c6a0f6"}},{scope:"entity.name.type.numeric.rust",settings:{fontStyle:"",foreground:"#c6a0f6"}},{scope:"meta.generic.rust",settings:{foreground:"#f5a97f"}},{scope:"entity.name.impl.rust",settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:"entity.name.module.rust",settings:{foreground:"#f5a97f"}},{scope:"entity.name.trait.rust",settings:{fontStyle:"italic",foreground:"#eed49f"}},{scope:"storage.type.source.rust",settings:{foreground:"#eed49f"}},{scope:"entity.name.union.rust",settings:{foreground:"#eed49f"}},{scope:"meta.enum.rust storage.type.source.rust",settings:{foreground:"#8bd5ca"}},{scope:["support.macro.rust","meta.macro.rust support.function.rust","entity.name.function.macro.rust"],settings:{fontStyle:"italic",foreground:"#8aadf4"}},{scope:["storage.modifier.lifetime.rust","entity.name.type.lifetime"],settings:{fontStyle:"italic",foreground:"#8aadf4"}},{scope:"string.quoted.double.rust constant.other.placeholder.rust",settings:{foreground:"#f5bde6"}},{scope:"meta.function.return-type.rust meta.generic.rust storage.type.rust",settings:{foreground:"#cad3f5"}},{scope:"meta.function.call.rust",settings:{foreground:"#8aadf4"}},{scope:"punctuation.brackets.angle.rust",settings:{foreground:"#91d7e3"}},{scope:"constant.other.caps.rust",settings:{foreground:"#f5a97f"}},{scope:["meta.function.definition.rust variable.other.rust"],settings:{foreground:"#ee99a0"}},{scope:"meta.function.call.rust variable.other.rust",settings:{foreground:"#cad3f5"}},{scope:"variable.language.self.rust",settings:{foreground:"#ed8796"}},{scope:["variable.other.metavariable.name.rust","meta.macro.metavariable.rust keyword.operator.macro.dollar.rust"],settings:{foreground:"#f5bde6"}},{scope:["comment.line.shebang","comment.line.shebang punctuation.definition.comment","comment.line.shebang","punctuation.definition.comment.shebang.shell","meta.shebang.shell"],settings:{fontStyle:"italic",foreground:"#f5bde6"}},{scope:"comment.line.shebang constant.language",settings:{fontStyle:"italic",foreground:"#8bd5ca"}},{scope:["meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation","meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation"],settings:{foreground:"#ed8796"}},{scope:"meta.string meta.interpolation.parameter.shell variable.other.readwrite",settings:{fontStyle:"italic",foreground:"#f5a97f"}},{scope:["source.shell punctuation.section.interpolation","punctuation.definition.evaluation.backticks.shell"],settings:{foreground:"#8bd5ca"}},{scope:"entity.name.tag.heredoc.shell",settings:{foreground:"#c6a0f6"}},{scope:"string.quoted.double.shell variable.other.normal.shell",settings:{foreground:"#cad3f5"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/catppuccin-mocha.CEfge3mM.js b/assets/chunks/catppuccin-mocha.CEfge3mM.js new file mode 100644 index 000000000..0d1fd4f73 --- /dev/null +++ b/assets/chunks/catppuccin-mocha.CEfge3mM.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#00000000","activityBar.activeBorder":"#00000000","activityBar.activeFocusBorder":"#00000000","activityBar.background":"#11111b","activityBar.border":"#00000000","activityBar.dropBorder":"#cba6f733","activityBar.foreground":"#cba6f7","activityBar.inactiveForeground":"#6c7086","activityBarBadge.background":"#cba6f7","activityBarBadge.foreground":"#11111b","activityBarTop.activeBorder":"#00000000","activityBarTop.dropBorder":"#cba6f733","activityBarTop.foreground":"#cba6f7","activityBarTop.inactiveForeground":"#6c7086","badge.background":"#45475a","badge.foreground":"#cdd6f4","banner.background":"#45475a","banner.foreground":"#cdd6f4","banner.iconForeground":"#cdd6f4","breadcrumb.activeSelectionForeground":"#cba6f7","breadcrumb.background":"#1e1e2e","breadcrumb.focusForeground":"#cba6f7","breadcrumb.foreground":"#cdd6f4cc","breadcrumbPicker.background":"#181825","button.background":"#cba6f7","button.border":"#00000000","button.foreground":"#11111b","button.hoverBackground":"#dec7fa","button.secondaryBackground":"#585b70","button.secondaryBorder":"#cba6f7","button.secondaryForeground":"#cdd6f4","button.secondaryHoverBackground":"#686b84","button.separator":"#00000000","charts.blue":"#89b4fa","charts.foreground":"#cdd6f4","charts.green":"#a6e3a1","charts.lines":"#bac2de","charts.orange":"#fab387","charts.purple":"#cba6f7","charts.red":"#f38ba8","charts.yellow":"#f9e2af","checkbox.background":"#45475a","checkbox.border":"#00000000","checkbox.foreground":"#cba6f7","commandCenter.activeBackground":"#585b7033","commandCenter.activeBorder":"#cba6f7","commandCenter.activeForeground":"#cba6f7","commandCenter.background":"#181825","commandCenter.border":"#00000000","commandCenter.foreground":"#bac2de","commandCenter.inactiveBorder":"#00000000","commandCenter.inactiveForeground":"#bac2de","debugConsole.errorForeground":"#f38ba8","debugConsole.infoForeground":"#89b4fa","debugConsole.sourceForeground":"#f5e0dc","debugConsole.warningForeground":"#fab387","debugConsoleInputIcon.foreground":"#cdd6f4","debugExceptionWidget.background":"#11111b","debugExceptionWidget.border":"#cba6f7","debugIcon.breakpointCurrentStackframeForeground":"#585b70","debugIcon.breakpointDisabledForeground":"#f38ba899","debugIcon.breakpointForeground":"#f38ba8","debugIcon.breakpointStackframeForeground":"#585b70","debugIcon.breakpointUnverifiedForeground":"#a6738c","debugIcon.continueForeground":"#a6e3a1","debugIcon.disconnectForeground":"#585b70","debugIcon.pauseForeground":"#89b4fa","debugIcon.restartForeground":"#94e2d5","debugIcon.startForeground":"#a6e3a1","debugIcon.stepBackForeground":"#585b70","debugIcon.stepIntoForeground":"#cdd6f4","debugIcon.stepOutForeground":"#cdd6f4","debugIcon.stepOverForeground":"#cba6f7","debugIcon.stopForeground":"#f38ba8","debugTokenExpression.boolean":"#cba6f7","debugTokenExpression.error":"#f38ba8","debugTokenExpression.number":"#fab387","debugTokenExpression.string":"#a6e3a1","debugToolBar.background":"#11111b","debugToolBar.border":"#00000000",descriptionForeground:"#cdd6f4","diffEditor.border":"#585b70","diffEditor.diagonalFill":"#585b7099","diffEditor.insertedLineBackground":"#a6e3a126","diffEditor.insertedTextBackground":"#a6e3a11a","diffEditor.removedLineBackground":"#f38ba826","diffEditor.removedTextBackground":"#f38ba81a","diffEditorOverview.insertedForeground":"#a6e3a1cc","diffEditorOverview.removedForeground":"#f38ba8cc",disabledForeground:"#a6adc8","dropdown.background":"#181825","dropdown.border":"#cba6f7","dropdown.foreground":"#cdd6f4","dropdown.listBackground":"#585b70","editor.background":"#1e1e2e","editor.findMatchBackground":"#5e3f53","editor.findMatchBorder":"#f38ba833","editor.findMatchHighlightBackground":"#3e5767","editor.findMatchHighlightBorder":"#89dceb33","editor.findRangeHighlightBackground":"#3e5767","editor.findRangeHighlightBorder":"#89dceb33","editor.focusedStackFrameHighlightBackground":"#a6e3a126","editor.foldBackground":"#89dceb40","editor.foreground":"#cdd6f4","editor.hoverHighlightBackground":"#89dceb40","editor.lineHighlightBackground":"#cdd6f412","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#89dceb40","editor.rangeHighlightBorder":"#00000000","editor.selectionBackground":"#9399b240","editor.selectionHighlightBackground":"#9399b233","editor.selectionHighlightBorder":"#9399b233","editor.stackFrameHighlightBackground":"#f9e2af26","editor.wordHighlightBackground":"#9399b233","editorBracketHighlight.foreground1":"#f38ba8","editorBracketHighlight.foreground2":"#fab387","editorBracketHighlight.foreground3":"#f9e2af","editorBracketHighlight.foreground4":"#a6e3a1","editorBracketHighlight.foreground5":"#74c7ec","editorBracketHighlight.foreground6":"#cba6f7","editorBracketHighlight.unexpectedBracket.foreground":"#eba0ac","editorBracketMatch.background":"#9399b21a","editorBracketMatch.border":"#9399b2","editorCodeLens.foreground":"#7f849c","editorCursor.background":"#1e1e2e","editorCursor.foreground":"#f5e0dc","editorError.background":"#00000000","editorError.border":"#00000000","editorError.foreground":"#f38ba8","editorGroup.border":"#585b70","editorGroup.dropBackground":"#cba6f733","editorGroup.emptyBackground":"#1e1e2e","editorGroupHeader.tabsBackground":"#11111b","editorGutter.addedBackground":"#a6e3a1","editorGutter.background":"#1e1e2e","editorGutter.commentRangeForeground":"#9399b2","editorGutter.deletedBackground":"#f38ba8","editorGutter.foldingControlForeground":"#9399b2","editorGutter.modifiedBackground":"#f9e2af","editorHoverWidget.background":"#181825","editorHoverWidget.border":"#585b70","editorHoverWidget.foreground":"#cdd6f4","editorIndentGuide.activeBackground":"#585b70","editorIndentGuide.background":"#45475a","editorInfo.background":"#00000000","editorInfo.border":"#00000000","editorInfo.foreground":"#89b4fa","editorInlayHint.background":"#181825bf","editorInlayHint.foreground":"#585b70","editorInlayHint.parameterBackground":"#181825bf","editorInlayHint.parameterForeground":"#a6adc8","editorInlayHint.typeBackground":"#181825bf","editorInlayHint.typeForeground":"#bac2de","editorLightBulb.foreground":"#f9e2af","editorLineNumber.activeForeground":"#cba6f7","editorLineNumber.foreground":"#7f849c","editorLink.activeForeground":"#cba6f7","editorMarkerNavigation.background":"#181825","editorMarkerNavigationError.background":"#f38ba8","editorMarkerNavigationInfo.background":"#89b4fa","editorMarkerNavigationWarning.background":"#fab387","editorOverviewRuler.background":"#181825","editorOverviewRuler.border":"#cdd6f412","editorOverviewRuler.modifiedForeground":"#f9e2af","editorRuler.foreground":"#585b70","editorStickyScrollHover.background":"#313244","editorSuggestWidget.background":"#181825","editorSuggestWidget.border":"#585b70","editorSuggestWidget.foreground":"#cdd6f4","editorSuggestWidget.highlightForeground":"#cba6f7","editorSuggestWidget.selectedBackground":"#313244","editorWarning.background":"#00000000","editorWarning.border":"#00000000","editorWarning.foreground":"#fab387","editorWhitespace.foreground":"#9399b266","editorWidget.background":"#181825","editorWidget.foreground":"#cdd6f4","editorWidget.resizeBorder":"#585b70",errorForeground:"#f38ba8","errorLens.errorBackground":"#f38ba826","errorLens.errorBackgroundLight":"#f38ba826","errorLens.errorForeground":"#f38ba8","errorLens.errorForegroundLight":"#f38ba8","errorLens.errorMessageBackground":"#f38ba826","errorLens.hintBackground":"#a6e3a126","errorLens.hintBackgroundLight":"#a6e3a126","errorLens.hintForeground":"#a6e3a1","errorLens.hintForegroundLight":"#a6e3a1","errorLens.hintMessageBackground":"#a6e3a126","errorLens.infoBackground":"#89b4fa26","errorLens.infoBackgroundLight":"#89b4fa26","errorLens.infoForeground":"#89b4fa","errorLens.infoForegroundLight":"#89b4fa","errorLens.infoMessageBackground":"#89b4fa26","errorLens.statusBarErrorForeground":"#f38ba8","errorLens.statusBarHintForeground":"#a6e3a1","errorLens.statusBarIconErrorForeground":"#f38ba8","errorLens.statusBarIconWarningForeground":"#fab387","errorLens.statusBarInfoForeground":"#89b4fa","errorLens.statusBarWarningForeground":"#fab387","errorLens.warningBackground":"#fab38726","errorLens.warningBackgroundLight":"#fab38726","errorLens.warningForeground":"#fab387","errorLens.warningForegroundLight":"#fab387","errorLens.warningMessageBackground":"#fab38726","extensionBadge.remoteBackground":"#89b4fa","extensionBadge.remoteForeground":"#11111b","extensionButton.prominentBackground":"#cba6f7","extensionButton.prominentForeground":"#11111b","extensionButton.prominentHoverBackground":"#dec7fa","extensionButton.separator":"#1e1e2e","extensionIcon.preReleaseForeground":"#585b70","extensionIcon.sponsorForeground":"#f5c2e7","extensionIcon.starForeground":"#f9e2af","extensionIcon.verifiedForeground":"#a6e3a1",focusBorder:"#cba6f7",foreground:"#cdd6f4","gitDecoration.addedResourceForeground":"#a6e3a1","gitDecoration.conflictingResourceForeground":"#cba6f7","gitDecoration.deletedResourceForeground":"#f38ba8","gitDecoration.ignoredResourceForeground":"#6c7086","gitDecoration.modifiedResourceForeground":"#f9e2af","gitDecoration.stageDeletedResourceForeground":"#f38ba8","gitDecoration.stageModifiedResourceForeground":"#f9e2af","gitDecoration.submoduleResourceForeground":"#89b4fa","gitDecoration.untrackedResourceForeground":"#a6e3a1","gitlens.closedAutolinkedIssueIconColor":"#cba6f7","gitlens.closedPullRequestIconColor":"#f38ba8","gitlens.decorations.branchAheadForegroundColor":"#a6e3a1","gitlens.decorations.branchBehindForegroundColor":"#fab387","gitlens.decorations.branchDivergedForegroundColor":"#f9e2af","gitlens.decorations.branchMissingUpstreamForegroundColor":"#fab387","gitlens.decorations.branchUnpublishedForegroundColor":"#a6e3a1","gitlens.decorations.statusMergingOrRebasingConflictForegroundColor":"#eba0ac","gitlens.decorations.statusMergingOrRebasingForegroundColor":"#f9e2af","gitlens.decorations.workspaceCurrentForegroundColor":"#cba6f7","gitlens.decorations.workspaceRepoMissingForegroundColor":"#a6adc8","gitlens.decorations.workspaceRepoOpenForegroundColor":"#cba6f7","gitlens.decorations.worktreeHasUncommittedChangesForegroundColor":"#fab387","gitlens.decorations.worktreeMissingForegroundColor":"#eba0ac","gitlens.graphChangesColumnAddedColor":"#a6e3a1","gitlens.graphChangesColumnDeletedColor":"#f38ba8","gitlens.graphLane10Color":"#f5c2e7","gitlens.graphLane1Color":"#cba6f7","gitlens.graphLane2Color":"#f9e2af","gitlens.graphLane3Color":"#89b4fa","gitlens.graphLane4Color":"#f2cdcd","gitlens.graphLane5Color":"#a6e3a1","gitlens.graphLane6Color":"#b4befe","gitlens.graphLane7Color":"#f5e0dc","gitlens.graphLane8Color":"#f38ba8","gitlens.graphLane9Color":"#94e2d5","gitlens.graphMinimapMarkerHeadColor":"#a6e3a1","gitlens.graphMinimapMarkerHighlightsColor":"#f9e2af","gitlens.graphMinimapMarkerLocalBranchesColor":"#89b4fa","gitlens.graphMinimapMarkerRemoteBranchesColor":"#71a4f9","gitlens.graphMinimapMarkerStashesColor":"#cba6f7","gitlens.graphMinimapMarkerTagsColor":"#f2cdcd","gitlens.graphMinimapMarkerUpstreamColor":"#93dd8d","gitlens.graphScrollMarkerHeadColor":"#a6e3a1","gitlens.graphScrollMarkerHighlightsColor":"#f9e2af","gitlens.graphScrollMarkerLocalBranchesColor":"#89b4fa","gitlens.graphScrollMarkerRemoteBranchesColor":"#71a4f9","gitlens.graphScrollMarkerStashesColor":"#cba6f7","gitlens.graphScrollMarkerTagsColor":"#f2cdcd","gitlens.graphScrollMarkerUpstreamColor":"#93dd8d","gitlens.gutterBackgroundColor":"#3132444d","gitlens.gutterForegroundColor":"#cdd6f4","gitlens.gutterUncommittedForegroundColor":"#cba6f7","gitlens.lineHighlightBackgroundColor":"#cba6f726","gitlens.lineHighlightOverviewRulerColor":"#cba6f7cc","gitlens.mergedPullRequestIconColor":"#cba6f7","gitlens.openAutolinkedIssueIconColor":"#a6e3a1","gitlens.openPullRequestIconColor":"#a6e3a1","gitlens.trailingLineBackgroundColor":"#00000000","gitlens.trailingLineForegroundColor":"#cdd6f44d","gitlens.unpublishedChangesIconColor":"#a6e3a1","gitlens.unpublishedCommitIconColor":"#a6e3a1","gitlens.unpulledChangesIconColor":"#fab387","icon.foreground":"#cba6f7","input.background":"#313244","input.border":"#00000000","input.foreground":"#cdd6f4","input.placeholderForeground":"#cdd6f473","inputOption.activeBackground":"#585b70","inputOption.activeBorder":"#cba6f7","inputOption.activeForeground":"#cdd6f4","inputValidation.errorBackground":"#f38ba8","inputValidation.errorBorder":"#11111b33","inputValidation.errorForeground":"#11111b","inputValidation.infoBackground":"#89b4fa","inputValidation.infoBorder":"#11111b33","inputValidation.infoForeground":"#11111b","inputValidation.warningBackground":"#fab387","inputValidation.warningBorder":"#11111b33","inputValidation.warningForeground":"#11111b","issues.closed":"#cba6f7","issues.newIssueDecoration":"#f5e0dc","issues.open":"#a6e3a1","list.activeSelectionBackground":"#313244","list.activeSelectionForeground":"#cdd6f4","list.dropBackground":"#cba6f733","list.focusAndSelectionBackground":"#45475a","list.focusBackground":"#313244","list.focusForeground":"#cdd6f4","list.focusOutline":"#00000000","list.highlightForeground":"#cba6f7","list.hoverBackground":"#31324480","list.hoverForeground":"#cdd6f4","list.inactiveSelectionBackground":"#313244","list.inactiveSelectionForeground":"#cdd6f4","list.warningForeground":"#fab387","listFilterWidget.background":"#45475a","listFilterWidget.noMatchesOutline":"#f38ba8","listFilterWidget.outline":"#00000000","menu.background":"#1e1e2e","menu.border":"#1e1e2e80","menu.foreground":"#cdd6f4","menu.selectionBackground":"#585b70","menu.selectionBorder":"#00000000","menu.selectionForeground":"#cdd6f4","menu.separatorBackground":"#585b70","menubar.selectionBackground":"#45475a","menubar.selectionForeground":"#cdd6f4","merge.commonContentBackground":"#45475a","merge.commonHeaderBackground":"#585b70","merge.currentContentBackground":"#a6e3a133","merge.currentHeaderBackground":"#a6e3a166","merge.incomingContentBackground":"#89b4fa33","merge.incomingHeaderBackground":"#89b4fa66","minimap.background":"#18182580","minimap.errorHighlight":"#f38ba8bf","minimap.findMatchHighlight":"#89dceb4d","minimap.selectionHighlight":"#585b70bf","minimap.selectionOccurrenceHighlight":"#585b70bf","minimap.warningHighlight":"#fab387bf","minimapGutter.addedBackground":"#a6e3a1bf","minimapGutter.deletedBackground":"#f38ba8bf","minimapGutter.modifiedBackground":"#f9e2afbf","minimapSlider.activeBackground":"#cba6f799","minimapSlider.background":"#cba6f733","minimapSlider.hoverBackground":"#cba6f766","notificationCenter.border":"#cba6f7","notificationCenterHeader.background":"#181825","notificationCenterHeader.foreground":"#cdd6f4","notificationLink.foreground":"#89b4fa","notificationToast.border":"#cba6f7","notifications.background":"#181825","notifications.border":"#cba6f7","notifications.foreground":"#cdd6f4","notificationsErrorIcon.foreground":"#f38ba8","notificationsInfoIcon.foreground":"#89b4fa","notificationsWarningIcon.foreground":"#fab387","panel.background":"#1e1e2e","panel.border":"#585b70","panelSection.border":"#585b70","panelSection.dropBackground":"#cba6f733","panelTitle.activeBorder":"#cba6f7","panelTitle.activeForeground":"#cdd6f4","panelTitle.inactiveForeground":"#a6adc8","peekView.border":"#cba6f7","peekViewEditor.background":"#181825","peekViewEditor.matchHighlightBackground":"#89dceb4d","peekViewEditor.matchHighlightBorder":"#00000000","peekViewEditorGutter.background":"#181825","peekViewResult.background":"#181825","peekViewResult.fileForeground":"#cdd6f4","peekViewResult.lineForeground":"#cdd6f4","peekViewResult.matchHighlightBackground":"#89dceb4d","peekViewResult.selectionBackground":"#313244","peekViewResult.selectionForeground":"#cdd6f4","peekViewTitle.background":"#1e1e2e","peekViewTitleDescription.foreground":"#bac2deb3","peekViewTitleLabel.foreground":"#cdd6f4","pickerGroup.border":"#cba6f7","pickerGroup.foreground":"#cba6f7","problemsErrorIcon.foreground":"#f38ba8","problemsInfoIcon.foreground":"#89b4fa","problemsWarningIcon.foreground":"#fab387","progressBar.background":"#cba6f7","pullRequests.closed":"#f38ba8","pullRequests.draft":"#9399b2","pullRequests.merged":"#cba6f7","pullRequests.notification":"#cdd6f4","pullRequests.open":"#a6e3a1","sash.hoverBorder":"#cba6f7","scrollbar.shadow":"#11111b","scrollbarSlider.activeBackground":"#31324466","scrollbarSlider.background":"#585b7080","scrollbarSlider.hoverBackground":"#6c7086","selection.background":"#cba6f766","settings.dropdownBackground":"#45475a","settings.dropdownListBorder":"#00000000","settings.focusedRowBackground":"#585b7033","settings.headerForeground":"#cdd6f4","settings.modifiedItemIndicator":"#cba6f7","settings.numberInputBackground":"#45475a","settings.numberInputBorder":"#00000000","settings.textInputBackground":"#45475a","settings.textInputBorder":"#00000000","sideBar.background":"#181825","sideBar.border":"#00000000","sideBar.dropBackground":"#cba6f733","sideBar.foreground":"#cdd6f4","sideBarSectionHeader.background":"#181825","sideBarSectionHeader.foreground":"#cdd6f4","sideBarTitle.foreground":"#cba6f7","statusBar.background":"#11111b","statusBar.border":"#00000000","statusBar.debuggingBackground":"#fab387","statusBar.debuggingBorder":"#00000000","statusBar.debuggingForeground":"#11111b","statusBar.foreground":"#cdd6f4","statusBar.noFolderBackground":"#11111b","statusBar.noFolderBorder":"#00000000","statusBar.noFolderForeground":"#cdd6f4","statusBarItem.activeBackground":"#585b7066","statusBarItem.errorBackground":"#00000000","statusBarItem.errorForeground":"#f38ba8","statusBarItem.hoverBackground":"#585b7033","statusBarItem.prominentBackground":"#00000000","statusBarItem.prominentForeground":"#cba6f7","statusBarItem.prominentHoverBackground":"#585b7033","statusBarItem.remoteBackground":"#89b4fa","statusBarItem.remoteForeground":"#11111b","statusBarItem.warningBackground":"#00000000","statusBarItem.warningForeground":"#fab387","symbolIcon.arrayForeground":"#fab387","symbolIcon.booleanForeground":"#cba6f7","symbolIcon.classForeground":"#f9e2af","symbolIcon.colorForeground":"#f5c2e7","symbolIcon.constantForeground":"#fab387","symbolIcon.constructorForeground":"#b4befe","symbolIcon.enumeratorForeground":"#f9e2af","symbolIcon.enumeratorMemberForeground":"#f9e2af","symbolIcon.eventForeground":"#f5c2e7","symbolIcon.fieldForeground":"#cdd6f4","symbolIcon.fileForeground":"#cba6f7","symbolIcon.folderForeground":"#cba6f7","symbolIcon.functionForeground":"#89b4fa","symbolIcon.interfaceForeground":"#f9e2af","symbolIcon.keyForeground":"#94e2d5","symbolIcon.keywordForeground":"#cba6f7","symbolIcon.methodForeground":"#89b4fa","symbolIcon.moduleForeground":"#cdd6f4","symbolIcon.namespaceForeground":"#f9e2af","symbolIcon.nullForeground":"#eba0ac","symbolIcon.numberForeground":"#fab387","symbolIcon.objectForeground":"#f9e2af","symbolIcon.operatorForeground":"#94e2d5","symbolIcon.packageForeground":"#f2cdcd","symbolIcon.propertyForeground":"#eba0ac","symbolIcon.referenceForeground":"#f9e2af","symbolIcon.snippetForeground":"#f2cdcd","symbolIcon.stringForeground":"#a6e3a1","symbolIcon.structForeground":"#94e2d5","symbolIcon.textForeground":"#cdd6f4","symbolIcon.typeParameterForeground":"#eba0ac","symbolIcon.unitForeground":"#cdd6f4","symbolIcon.variableForeground":"#cdd6f4","tab.activeBackground":"#1e1e2e","tab.activeBorder":"#00000000","tab.activeBorderTop":"#cba6f7","tab.activeForeground":"#cba6f7","tab.activeModifiedBorder":"#f9e2af","tab.border":"#181825","tab.hoverBackground":"#28283d","tab.hoverBorder":"#00000000","tab.hoverForeground":"#cba6f7","tab.inactiveBackground":"#181825","tab.inactiveForeground":"#6c7086","tab.inactiveModifiedBorder":"#f9e2af4d","tab.lastPinnedBorder":"#cba6f7","tab.unfocusedActiveBackground":"#181825","tab.unfocusedActiveBorder":"#00000000","tab.unfocusedActiveBorderTop":"#cba6f74d","tab.unfocusedInactiveBackground":"#0e0e16","table.headerBackground":"#313244","table.headerForeground":"#cdd6f4","terminal.ansiBlack":"#a6adc8","terminal.ansiBlue":"#89b4fa","terminal.ansiBrightBlack":"#585b70","terminal.ansiBrightBlue":"#89b4fa","terminal.ansiBrightCyan":"#89dceb","terminal.ansiBrightGreen":"#a6e3a1","terminal.ansiBrightMagenta":"#f5c2e7","terminal.ansiBrightRed":"#f38ba8","terminal.ansiBrightWhite":"#45475a","terminal.ansiBrightYellow":"#f9e2af","terminal.ansiCyan":"#89dceb","terminal.ansiGreen":"#a6e3a1","terminal.ansiMagenta":"#f5c2e7","terminal.ansiRed":"#f38ba8","terminal.ansiWhite":"#bac2de","terminal.ansiYellow":"#f9e2af","terminal.border":"#585b70","terminal.dropBackground":"#cba6f733","terminal.foreground":"#cdd6f4","terminal.inactiveSelectionBackground":"#585b7080","terminal.selectionBackground":"#585b70","terminal.tab.activeBorder":"#cba6f7","terminalCommandDecoration.defaultBackground":"#585b70","terminalCommandDecoration.errorBackground":"#f38ba8","terminalCommandDecoration.successBackground":"#a6e3a1","terminalCursor.background":"#1e1e2e","terminalCursor.foreground":"#f5e0dc","textBlockQuote.background":"#181825","textBlockQuote.border":"#11111b","textCodeBlock.background":"#1e1e2e","textLink.activeForeground":"#89dceb","textLink.foreground":"#89b4fa","textPreformat.foreground":"#cdd6f4","textSeparator.foreground":"#cba6f7","titleBar.activeBackground":"#11111b","titleBar.activeForeground":"#cdd6f4","titleBar.border":"#00000000","titleBar.inactiveBackground":"#11111b","titleBar.inactiveForeground":"#cdd6f480","tree.inactiveIndentGuidesStroke":"#45475a","tree.indentGuidesStroke":"#9399b2","walkThrough.embeddedEditorBackground":"#1e1e2e4d","welcomePage.progress.background":"#11111b","welcomePage.progress.foreground":"#cba6f7","welcomePage.tileBackground":"#181825","widget.shadow":"#18182580","window.activeBorder":"#00000000","window.inactiveBorder":"#00000000"},displayName:"Catppuccin Mocha",name:"catppuccin-mocha",semanticHighlighting:!0,semanticTokenColors:{boolean:{foreground:"#fab387"},"builtinAttribute.attribute.library:rust":{foreground:"#89b4fa"},"class.builtin:python":{foreground:"#cba6f7"},"class:python":{foreground:"#f9e2af"},"constant.builtin.readonly:nix":{foreground:"#cba6f7"},enumMember:{foreground:"#94e2d5"},"function.decorator:python":{foreground:"#fab387"},"generic.attribute:rust":{foreground:"#cdd6f4"},heading:{foreground:"#f38ba8"},number:{foreground:"#fab387"},pol:{foreground:"#f2cdcd"},"property.readonly:javascript":{foreground:"#cdd6f4"},"property.readonly:javascriptreact":{foreground:"#cdd6f4"},"property.readonly:typescript":{foreground:"#cdd6f4"},"property.readonly:typescriptreact":{foreground:"#cdd6f4"},selfKeyword:{foreground:"#f38ba8"},"text.emph":{fontStyle:"italic",foreground:"#f38ba8"},"text.math":{foreground:"#f2cdcd"},"text.strong":{fontStyle:"bold",foreground:"#f38ba8"},tomlArrayKey:{fontStyle:"",foreground:"#89b4fa"},tomlTableKey:{fontStyle:"",foreground:"#89b4fa"},"type.defaultLibrary:go":{foreground:"#cba6f7"},"variable.defaultLibrary":{foreground:"#eba0ac"},"variable.readonly.defaultLibrary:go":{foreground:"#cba6f7"},"variable.readonly:javascript":{foreground:"#cdd6f4"},"variable.readonly:javascriptreact":{foreground:"#cdd6f4"},"variable.readonly:scala":{foreground:"#cdd6f4"},"variable.readonly:typescript":{foreground:"#cdd6f4"},"variable.readonly:typescriptreact":{foreground:"#cdd6f4"},"variable.typeHint:python":{foreground:"#f9e2af"}},tokenColors:[{scope:["text","source","variable.other.readwrite","punctuation.definition.variable"],settings:{foreground:"#cdd6f4"}},{scope:"punctuation",settings:{fontStyle:"",foreground:"#9399b2"}},{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#6c7086"}},{scope:["string","punctuation.definition.string"],settings:{foreground:"#a6e3a1"}},{scope:"constant.character.escape",settings:{foreground:"#f5c2e7"}},{scope:["constant.numeric","variable.other.constant","entity.name.constant","constant.language.boolean","constant.language.false","constant.language.true","keyword.other.unit.user-defined","keyword.other.unit.suffix.floating-point"],settings:{foreground:"#fab387"}},{scope:["keyword","keyword.operator.word","keyword.operator.new","variable.language.super","support.type.primitive","storage.type","storage.modifier","punctuation.definition.keyword"],settings:{fontStyle:"",foreground:"#cba6f7"}},{scope:"entity.name.tag.documentation",settings:{foreground:"#cba6f7"}},{scope:["keyword.operator","punctuation.accessor","punctuation.definition.generic","meta.function.closure punctuation.section.parameters","punctuation.definition.tag","punctuation.separator.key-value"],settings:{foreground:"#94e2d5"}},{scope:["entity.name.function","meta.function-call.method","support.function","support.function.misc","variable.function"],settings:{fontStyle:"italic",foreground:"#89b4fa"}},{scope:["entity.name.class","entity.other.inherited-class","support.class","meta.function-call.constructor","entity.name.struct"],settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:"entity.name.enum",settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:["meta.enum variable.other.readwrite","variable.other.enummember"],settings:{foreground:"#94e2d5"}},{scope:"meta.property.object",settings:{foreground:"#94e2d5"}},{scope:["meta.type","meta.type-alias","support.type","entity.name.type"],settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:["meta.annotation variable.function","meta.annotation variable.annotation.function","meta.annotation punctuation.definition.annotation","meta.decorator","punctuation.decorator"],settings:{foreground:"#fab387"}},{scope:["variable.parameter","meta.function.parameters"],settings:{fontStyle:"italic",foreground:"#eba0ac"}},{scope:["constant.language","support.function.builtin"],settings:{foreground:"#f38ba8"}},{scope:"entity.other.attribute-name.documentation",settings:{foreground:"#f38ba8"}},{scope:["keyword.control.directive","punctuation.definition.directive"],settings:{foreground:"#f9e2af"}},{scope:"punctuation.definition.typeparameters",settings:{foreground:"#89dceb"}},{scope:"entity.name.namespace",settings:{foreground:"#f9e2af"}},{scope:"support.type.property-name.css",settings:{fontStyle:"",foreground:"#89b4fa"}},{scope:["variable.language.this","variable.language.this punctuation.definition.variable"],settings:{foreground:"#f38ba8"}},{scope:"variable.object.property",settings:{foreground:"#cdd6f4"}},{scope:["string.template variable","string variable"],settings:{foreground:"#cdd6f4"}},{scope:"keyword.operator.new",settings:{fontStyle:"bold"}},{scope:"storage.modifier.specifier.extern.cpp",settings:{foreground:"#cba6f7"}},{scope:["entity.name.scope-resolution.template.call.cpp","entity.name.scope-resolution.parameter.cpp","entity.name.scope-resolution.cpp","entity.name.scope-resolution.function.definition.cpp"],settings:{foreground:"#f9e2af"}},{scope:"storage.type.class.doxygen",settings:{fontStyle:""}},{scope:["storage.modifier.reference.cpp"],settings:{foreground:"#94e2d5"}},{scope:"meta.interpolation.cs",settings:{foreground:"#cdd6f4"}},{scope:"comment.block.documentation.cs",settings:{foreground:"#cdd6f4"}},{scope:["source.css entity.other.attribute-name.class.css","entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css"],settings:{foreground:"#f9e2af"}},{scope:"punctuation.separator.operator.css",settings:{foreground:"#94e2d5"}},{scope:"source.css entity.other.attribute-name.pseudo-class",settings:{foreground:"#94e2d5"}},{scope:"source.css constant.other.unicode-range",settings:{foreground:"#fab387"}},{scope:"source.css variable.parameter.url",settings:{fontStyle:"",foreground:"#a6e3a1"}},{scope:["support.type.vendored.property-name"],settings:{foreground:"#89dceb"}},{scope:["source.css meta.property-value variable","source.css meta.property-value variable.other.less","source.css meta.property-value variable.other.less punctuation.definition.variable.less","meta.definition.variable.scss"],settings:{foreground:"#eba0ac"}},{scope:["source.css meta.property-list variable","meta.property-list variable.other.less","meta.property-list variable.other.less punctuation.definition.variable.less"],settings:{foreground:"#89b4fa"}},{scope:"keyword.other.unit.percentage.css",settings:{foreground:"#fab387"}},{scope:"source.css meta.attribute-selector",settings:{foreground:"#a6e3a1"}},{scope:["keyword.other.definition.ini","punctuation.support.type.property-name.json","support.type.property-name.json","punctuation.support.type.property-name.toml","support.type.property-name.toml","entity.name.tag.yaml","punctuation.support.type.property-name.yaml","support.type.property-name.yaml"],settings:{fontStyle:"",foreground:"#89b4fa"}},{scope:["constant.language.json","constant.language.yaml"],settings:{foreground:"#fab387"}},{scope:["entity.name.type.anchor.yaml","variable.other.alias.yaml"],settings:{fontStyle:"",foreground:"#f9e2af"}},{scope:["support.type.property-name.table","entity.name.section.group-title.ini"],settings:{foreground:"#f9e2af"}},{scope:"constant.other.time.datetime.offset.toml",settings:{foreground:"#f5c2e7"}},{scope:["punctuation.definition.anchor.yaml","punctuation.definition.alias.yaml"],settings:{foreground:"#f5c2e7"}},{scope:"entity.other.document.begin.yaml",settings:{foreground:"#f5c2e7"}},{scope:"markup.changed.diff",settings:{foreground:"#fab387"}},{scope:["meta.diff.header.from-file","meta.diff.header.to-file","punctuation.definition.from-file.diff","punctuation.definition.to-file.diff"],settings:{foreground:"#89b4fa"}},{scope:"markup.inserted.diff",settings:{foreground:"#a6e3a1"}},{scope:"markup.deleted.diff",settings:{foreground:"#f38ba8"}},{scope:["variable.other.env"],settings:{foreground:"#89b4fa"}},{scope:["string.quoted variable.other.env"],settings:{foreground:"#cdd6f4"}},{scope:"support.function.builtin.gdscript",settings:{foreground:"#89b4fa"}},{scope:"constant.language.gdscript",settings:{foreground:"#fab387"}},{scope:"comment meta.annotation.go",settings:{foreground:"#eba0ac"}},{scope:"comment meta.annotation.parameters.go",settings:{foreground:"#fab387"}},{scope:"constant.language.go",settings:{foreground:"#fab387"}},{scope:"variable.graphql",settings:{foreground:"#cdd6f4"}},{scope:"string.unquoted.alias.graphql",settings:{foreground:"#f2cdcd"}},{scope:"constant.character.enum.graphql",settings:{foreground:"#94e2d5"}},{scope:"meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql",settings:{foreground:"#f2cdcd"}},{scope:["keyword.other.doctype","meta.tag.sgml.doctype punctuation.definition.tag","meta.tag.metadata.doctype entity.name.tag","meta.tag.metadata.doctype punctuation.definition.tag"],settings:{foreground:"#cba6f7"}},{scope:["entity.name.tag"],settings:{fontStyle:"",foreground:"#89b4fa"}},{scope:["text.html constant.character.entity","text.html constant.character.entity punctuation","constant.character.entity.xml","constant.character.entity.xml punctuation","constant.character.entity.js.jsx","constant.charactger.entity.js.jsx punctuation","constant.character.entity.tsx","constant.character.entity.tsx punctuation"],settings:{foreground:"#f38ba8"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#f9e2af"}},{scope:["support.class.component","support.class.component.jsx","support.class.component.tsx","support.class.component.vue"],settings:{fontStyle:"",foreground:"#f5c2e7"}},{scope:["punctuation.definition.annotation","storage.type.annotation"],settings:{foreground:"#fab387"}},{scope:"constant.other.enum.java",settings:{foreground:"#94e2d5"}},{scope:"storage.modifier.import.java",settings:{foreground:"#cdd6f4"}},{scope:"comment.block.javadoc.java keyword.other.documentation.javadoc.java",settings:{fontStyle:""}},{scope:"meta.export variable.other.readwrite.js",settings:{foreground:"#eba0ac"}},{scope:["variable.other.constant.js","variable.other.constant.ts","variable.other.property.js","variable.other.property.ts"],settings:{foreground:"#cdd6f4"}},{scope:["variable.other.jsdoc","comment.block.documentation variable.other"],settings:{fontStyle:"",foreground:"#eba0ac"}},{scope:"storage.type.class.jsdoc",settings:{fontStyle:""}},{scope:"support.type.object.console.js",settings:{foreground:"#cdd6f4"}},{scope:["support.constant.node","support.type.object.module.js"],settings:{foreground:"#cba6f7"}},{scope:"storage.modifier.implements",settings:{foreground:"#cba6f7"}},{scope:["constant.language.null.js","constant.language.null.ts","constant.language.undefined.js","constant.language.undefined.ts","support.type.builtin.ts"],settings:{foreground:"#cba6f7"}},{scope:"variable.parameter.generic",settings:{foreground:"#f9e2af"}},{scope:["keyword.declaration.function.arrow.js","storage.type.function.arrow.ts"],settings:{foreground:"#94e2d5"}},{scope:"punctuation.decorator.ts",settings:{fontStyle:"italic",foreground:"#89b4fa"}},{scope:["keyword.operator.expression.in.js","keyword.operator.expression.in.ts","keyword.operator.expression.infer.ts","keyword.operator.expression.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.is","keyword.operator.expression.keyof.ts","keyword.operator.expression.of.js","keyword.operator.expression.of.ts","keyword.operator.expression.typeof.ts"],settings:{foreground:"#cba6f7"}},{scope:"support.function.macro.julia",settings:{fontStyle:"italic",foreground:"#94e2d5"}},{scope:"constant.language.julia",settings:{foreground:"#fab387"}},{scope:"constant.other.symbol.julia",settings:{foreground:"#eba0ac"}},{scope:"text.tex keyword.control.preamble",settings:{foreground:"#94e2d5"}},{scope:"text.tex support.function.be",settings:{foreground:"#89dceb"}},{scope:"constant.other.general.math.tex",settings:{foreground:"#f2cdcd"}},{scope:"comment.line.double-dash.documentation.lua storage.type.annotation.lua",settings:{fontStyle:"",foreground:"#cba6f7"}},{scope:["comment.line.double-dash.documentation.lua entity.name.variable.lua","comment.line.double-dash.documentation.lua variable.lua"],settings:{foreground:"#cdd6f4"}},{scope:["heading.1.markdown punctuation.definition.heading.markdown","heading.1.markdown","heading.1.quarto punctuation.definition.heading.quarto","heading.1.quarto","markup.heading.atx.1.mdx","markup.heading.atx.1.mdx punctuation.definition.heading.mdx","markup.heading.setext.1.markdown","markup.heading.heading-0.asciidoc"],settings:{foreground:"#f38ba8"}},{scope:["heading.2.markdown punctuation.definition.heading.markdown","heading.2.markdown","heading.2.quarto punctuation.definition.heading.quarto","heading.2.quarto","markup.heading.atx.2.mdx","markup.heading.atx.2.mdx punctuation.definition.heading.mdx","markup.heading.setext.2.markdown","markup.heading.heading-1.asciidoc"],settings:{foreground:"#fab387"}},{scope:["heading.3.markdown punctuation.definition.heading.markdown","heading.3.markdown","heading.3.quarto punctuation.definition.heading.quarto","heading.3.quarto","markup.heading.atx.3.mdx","markup.heading.atx.3.mdx punctuation.definition.heading.mdx","markup.heading.heading-2.asciidoc"],settings:{foreground:"#f9e2af"}},{scope:["heading.4.markdown punctuation.definition.heading.markdown","heading.4.markdown","heading.4.quarto punctuation.definition.heading.quarto","heading.4.quarto","markup.heading.atx.4.mdx","markup.heading.atx.4.mdx punctuation.definition.heading.mdx","markup.heading.heading-3.asciidoc"],settings:{foreground:"#a6e3a1"}},{scope:["heading.5.markdown punctuation.definition.heading.markdown","heading.5.markdown","heading.5.quarto punctuation.definition.heading.quarto","heading.5.quarto","markup.heading.atx.5.mdx","markup.heading.atx.5.mdx punctuation.definition.heading.mdx","markup.heading.heading-4.asciidoc"],settings:{foreground:"#89b4fa"}},{scope:["heading.6.markdown punctuation.definition.heading.markdown","heading.6.markdown","heading.6.quarto punctuation.definition.heading.quarto","heading.6.quarto","markup.heading.atx.6.mdx","markup.heading.atx.6.mdx punctuation.definition.heading.mdx","markup.heading.heading-5.asciidoc"],settings:{foreground:"#cba6f7"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#f38ba8"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#f38ba8"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough",foreground:"#a6adc8"}},{scope:["punctuation.definition.link","markup.underline.link"],settings:{foreground:"#89b4fa"}},{scope:["text.html.markdown punctuation.definition.link.title","text.html.quarto punctuation.definition.link.title","string.other.link.title.markdown","string.other.link.title.quarto","markup.link","punctuation.definition.constant.markdown","punctuation.definition.constant.quarto","constant.other.reference.link.markdown","constant.other.reference.link.quarto","markup.substitution.attribute-reference"],settings:{foreground:"#b4befe"}},{scope:["punctuation.definition.raw.markdown","punctuation.definition.raw.quarto","markup.inline.raw.string.markdown","markup.inline.raw.string.quarto","markup.raw.block.markdown","markup.raw.block.quarto"],settings:{foreground:"#a6e3a1"}},{scope:"fenced_code.block.language",settings:{foreground:"#89dceb"}},{scope:["markup.fenced_code.block punctuation.definition","markup.raw support.asciidoc"],settings:{foreground:"#9399b2"}},{scope:["markup.quote","punctuation.definition.quote.begin"],settings:{foreground:"#f5c2e7"}},{scope:"meta.separator.markdown",settings:{foreground:"#94e2d5"}},{scope:["punctuation.definition.list.begin.markdown","punctuation.definition.list.begin.quarto","markup.list.bullet"],settings:{foreground:"#94e2d5"}},{scope:"markup.heading.quarto",settings:{fontStyle:"bold"}},{scope:["entity.other.attribute-name.multipart.nix","entity.other.attribute-name.single.nix"],settings:{foreground:"#89b4fa"}},{scope:"variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#cdd6f4"}},{scope:"meta.embedded variable.parameter.name.nix",settings:{fontStyle:"",foreground:"#b4befe"}},{scope:"string.unquoted.path.nix",settings:{fontStyle:"",foreground:"#f5c2e7"}},{scope:["support.attribute.builtin","meta.attribute.php"],settings:{foreground:"#f9e2af"}},{scope:"meta.function.parameters.php punctuation.definition.variable.php",settings:{foreground:"#eba0ac"}},{scope:"constant.language.php",settings:{foreground:"#cba6f7"}},{scope:"text.html.php support.function",settings:{foreground:"#89dceb"}},{scope:"keyword.other.phpdoc.php",settings:{fontStyle:""}},{scope:["support.variable.magic.python","meta.function-call.arguments.python"],settings:{foreground:"#cdd6f4"}},{scope:["support.function.magic.python"],settings:{fontStyle:"italic",foreground:"#89dceb"}},{scope:["variable.parameter.function.language.special.self.python","variable.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#f38ba8"}},{scope:["keyword.control.flow.python","keyword.operator.logical.python"],settings:{foreground:"#cba6f7"}},{scope:"storage.type.function.python",settings:{foreground:"#cba6f7"}},{scope:["support.token.decorator.python","meta.function.decorator.identifier.python"],settings:{foreground:"#89dceb"}},{scope:["meta.function-call.python"],settings:{foreground:"#89b4fa"}},{scope:["entity.name.function.decorator.python","punctuation.definition.decorator.python"],settings:{fontStyle:"italic",foreground:"#fab387"}},{scope:"constant.character.format.placeholder.other.python",settings:{foreground:"#f5c2e7"}},{scope:["support.type.exception.python","support.function.builtin.python"],settings:{foreground:"#fab387"}},{scope:["support.type.python"],settings:{foreground:"#fab387"}},{scope:"constant.language.python",settings:{foreground:"#cba6f7"}},{scope:["meta.indexed-name.python","meta.item-access.python"],settings:{fontStyle:"italic",foreground:"#eba0ac"}},{scope:"storage.type.string.python",settings:{fontStyle:"italic",foreground:"#a6e3a1"}},{scope:"meta.function.parameters.python",settings:{fontStyle:""}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#f5c2e7"}},{scope:"keyword.control.anchor.regexp",settings:{foreground:"#cba6f7"}},{scope:"string.regexp.ts",settings:{foreground:"#cdd6f4"}},{scope:["punctuation.definition.group.regexp","keyword.other.back-reference.regexp"],settings:{foreground:"#a6e3a1"}},{scope:"punctuation.definition.character-class.regexp",settings:{foreground:"#f9e2af"}},{scope:"constant.other.character-class.regexp",settings:{foreground:"#f5c2e7"}},{scope:"constant.other.character-class.range.regexp",settings:{foreground:"#f5e0dc"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#94e2d5"}},{scope:"constant.character.numeric.regexp",settings:{foreground:"#fab387"}},{scope:["punctuation.definition.group.no-capture.regexp","meta.assertion.look-ahead.regexp","meta.assertion.negative-look-ahead.regexp"],settings:{foreground:"#89b4fa"}},{scope:["meta.annotation.rust","meta.annotation.rust punctuation","meta.attribute.rust","punctuation.definition.attribute.rust"],settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:["meta.attribute.rust string.quoted.double.rust","meta.attribute.rust string.quoted.single.char.rust"],settings:{fontStyle:""}},{scope:["entity.name.function.macro.rules.rust","storage.type.module.rust","storage.modifier.rust","storage.type.struct.rust","storage.type.enum.rust","storage.type.trait.rust","storage.type.union.rust","storage.type.impl.rust","storage.type.rust","storage.type.function.rust","storage.type.type.rust"],settings:{fontStyle:"",foreground:"#cba6f7"}},{scope:"entity.name.type.numeric.rust",settings:{fontStyle:"",foreground:"#cba6f7"}},{scope:"meta.generic.rust",settings:{foreground:"#fab387"}},{scope:"entity.name.impl.rust",settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:"entity.name.module.rust",settings:{foreground:"#fab387"}},{scope:"entity.name.trait.rust",settings:{fontStyle:"italic",foreground:"#f9e2af"}},{scope:"storage.type.source.rust",settings:{foreground:"#f9e2af"}},{scope:"entity.name.union.rust",settings:{foreground:"#f9e2af"}},{scope:"meta.enum.rust storage.type.source.rust",settings:{foreground:"#94e2d5"}},{scope:["support.macro.rust","meta.macro.rust support.function.rust","entity.name.function.macro.rust"],settings:{fontStyle:"italic",foreground:"#89b4fa"}},{scope:["storage.modifier.lifetime.rust","entity.name.type.lifetime"],settings:{fontStyle:"italic",foreground:"#89b4fa"}},{scope:"string.quoted.double.rust constant.other.placeholder.rust",settings:{foreground:"#f5c2e7"}},{scope:"meta.function.return-type.rust meta.generic.rust storage.type.rust",settings:{foreground:"#cdd6f4"}},{scope:"meta.function.call.rust",settings:{foreground:"#89b4fa"}},{scope:"punctuation.brackets.angle.rust",settings:{foreground:"#89dceb"}},{scope:"constant.other.caps.rust",settings:{foreground:"#fab387"}},{scope:["meta.function.definition.rust variable.other.rust"],settings:{foreground:"#eba0ac"}},{scope:"meta.function.call.rust variable.other.rust",settings:{foreground:"#cdd6f4"}},{scope:"variable.language.self.rust",settings:{foreground:"#f38ba8"}},{scope:["variable.other.metavariable.name.rust","meta.macro.metavariable.rust keyword.operator.macro.dollar.rust"],settings:{foreground:"#f5c2e7"}},{scope:["comment.line.shebang","comment.line.shebang punctuation.definition.comment","comment.line.shebang","punctuation.definition.comment.shebang.shell","meta.shebang.shell"],settings:{fontStyle:"italic",foreground:"#f5c2e7"}},{scope:"comment.line.shebang constant.language",settings:{fontStyle:"italic",foreground:"#94e2d5"}},{scope:["meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation","meta.function-call.arguments.shell punctuation.definition.variable.shell","meta.function-call.arguments.shell punctuation.section.interpolation"],settings:{foreground:"#f38ba8"}},{scope:"meta.string meta.interpolation.parameter.shell variable.other.readwrite",settings:{fontStyle:"italic",foreground:"#fab387"}},{scope:["source.shell punctuation.section.interpolation","punctuation.definition.evaluation.backticks.shell"],settings:{foreground:"#94e2d5"}},{scope:"entity.name.tag.heredoc.shell",settings:{foreground:"#cba6f7"}},{scope:"string.quoted.double.shell variable.other.normal.shell",settings:{foreground:"#cdd6f4"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/clarity.CIekO_uJ.js b/assets/chunks/clarity.CIekO_uJ.js new file mode 100644 index 000000000..550fdb865 --- /dev/null +++ b/assets/chunks/clarity.CIekO_uJ.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Clarity",name:"clarity",patterns:[{include:"#expression"},{include:"#define-constant"},{include:"#define-data-var"},{include:"#define-map"},{include:"#define-function"},{include:"#define-fungible-token"},{include:"#define-non-fungible-token"},{include:"#define-trait"},{include:"#use-trait"}],repository:{"built-in-func":{begin:"(?x) (\\() \\s* (\\-|\\+|<\\=|>\\=|<|>|\\*|/|and|append|as-contract|as-max-len\\?|asserts!|at-block|begin|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|buff-to-int-be|buff-to-int-le|buff-to-uint-be|buff-to-uint-le|concat|contract-call\\?|contract-of|default-to|element-at|element-at\\?|filter|fold|from-consensus-buff\\?|ft-burn\\?|ft-get-balance|ft-get-supply|ft-mint\\?|ft-transfer\\?|get-block-info\\?|get-burn-block-info\\?|hash160|if|impl-trait|index-of|index-of\\?|int-to-ascii|int-to-utf8|is-eq|is-err|is-none|is-ok|is-some|is-standard|keccak256|len|log2|map|match|merge|mod|nft-burn\\?|nft-get-owner\\?|nft-mint\\?|nft-transfer\\?|not|or|pow|principal-construct\\?|principal-destruct\\?|principal-of\\?|print|replace-at\\?|secp256k1-recover\\?|secp256k1-verify|sha256|sha512|sha512/256|slice\\?|sqrti|string-to-int\\?|string-to-uint\\?|stx-account|stx-burn\\?|stx-get-balance|stx-transfer-memo\\?|stx-transfer\\?|to-consensus-buff\\?|to-int|to-uint|try!|unwrap!|unwrap-err!|unwrap-err-panic|unwrap-panic|xor) \\s+",beginCaptures:{1:{name:"punctuation.built-in-function.start.clarity"},2:{name:"keyword.declaration.built-in-function.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.built-in-function.end.clarity"}},name:"meta.built-in-function",patterns:[{include:"#expression"},{include:"#user-func"}]},comment:{match:"(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (;) .* $",name:"comment.line.semicolon.clarity"},"data-type":{patterns:[{include:"#comment"},{comment:"numerics",match:"\\b(uint|int)\\b",name:"entity.name.type.numeric.clarity"},{comment:"principal",match:"\\b(principal)\\b",name:"entity.name.type.principal.clarity"},{comment:"bool",match:"\\b(bool)\\b",name:"entity.name.type.bool.clarity"},{captures:{1:{name:"punctuation.string_type-def.start.clarity"},2:{name:"entity.name.type.string_type.clarity"},3:{name:"constant.numeric.string_type-len.clarity"},4:{name:"punctuation.string_type-def.end.clarity"}},match:"(?x) (\\() \\s* (?:(string-ascii|string-utf8)\\s+(\\d+)) \\s* (\\))"},{captures:{1:{name:"punctuation.buff-def.start.clarity"},2:{name:"entity.name.type.buff.clarity"},3:{name:"constant.numeric.buf-len.clarity"},4:{name:"punctuation.buff-def.end.clarity"}},match:"(?x) (\\() \\s* (buff)\\s+(\\d+)\\s* (\\))"},{begin:"(?x) (\\() \\s* (optional)\\s+",beginCaptures:{1:{name:"punctuation.optional-def.start.clarity"},2:{name:"storage.type.modifier"}},comment:"optional",end:"(\\))",endCaptures:{1:{name:"punctuation.optional-def.end.clarity"}},name:"meta.optional-def",patterns:[{include:"#data-type"}]},{begin:"(?x) (\\() \\s* (response)\\s+",beginCaptures:{1:{name:"punctuation.response-def.start.clarity"},2:{name:"storage.type.modifier"}},comment:"response",end:"(\\))",endCaptures:{1:{name:"punctuation.response-def.end.clarity"}},name:"meta.response-def",patterns:[{include:"#data-type"}]},{begin:"(?x) (\\() \\s* (list) \\s+ (\\d+) \\s+",beginCaptures:{1:{name:"punctuation.list-def.start.clarity"},2:{name:"entity.name.type.list.clarity"},3:{name:"constant.numeric.list-len.clarity"}},comment:"list",end:"(\\))",endCaptures:{1:{name:"punctuation.list-def.end.clarity"}},name:"meta.list-def",patterns:[{include:"#data-type"}]},{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.tuple-def.start.clarity"}},end:"(\\})",endCaptures:{1:{name:"punctuation.tuple-def.end.clarity"}},name:"meta.tuple-def",patterns:[{match:"([a-zA-Z][\\w\\?\\!\\-]*)(?=:)",name:"entity.name.tag.tuple-data-type-key.clarity"},{include:"#data-type"}]}]},"define-constant":{begin:"(?x) (\\() \\s* (define-constant) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.define-constant.start.clarity"},2:{name:"keyword.declaration.define-constant.clarity"},3:{name:"entity.name.constant-name.clarity variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-constant.end.clarity"}},name:"meta.define-constant",patterns:[{include:"#expression"}]},"define-data-var":{begin:"(?x) (\\() \\s* (define-data-var) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.define-data-var.start.clarity"},2:{name:"keyword.declaration.define-data-var.clarity"},3:{name:"entity.name.data-var-name.clarity variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-data-var.end.clarity"}},name:"meta.define-data-var",patterns:[{include:"#data-type"},{include:"#expression"}]},"define-function":{begin:"(?x) (\\() \\s* (define-(?:public|private|read-only)) \\s+",beginCaptures:{1:{name:"punctuation.define-function.start.clarity"},2:{name:"keyword.declaration.define-function.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-function.end.clarity"}},name:"meta.define-function",patterns:[{include:"#expression"},{begin:"(?x) (\\() \\s* ([a-zA-Z][\\w\\?\\!\\-]*) \\s*",beginCaptures:{1:{name:"punctuation.function-signature.start.clarity"},2:{name:"entity.name.function.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.function-signature.end.clarity"}},name:"meta.define-function-signature",patterns:[{begin:"(?x) (\\() \\s* ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.function-argument.start.clarity"},2:{name:"variable.parameter.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.function-argument.end.clarity"}},name:"meta.function-argument",patterns:[{include:"#data-type"}]}]},{include:"#user-func"}]},"define-fungible-token":{captures:{1:{name:"punctuation.define-fungible-token.start.clarity"},2:{name:"keyword.declaration.define-fungible-token.clarity"},3:{name:"entity.name.fungible-token-name.clarity variable.other.clarity"},4:{name:"constant.numeric.fungible-token-total-supply.clarity"},5:{name:"punctuation.define-fungible-token.end.clarity"}},match:"(?x) (\\() \\s* (define-fungible-token) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) (?:\\s+(u\\d+))?"},"define-map":{begin:"(?x) (\\() \\s* (define-map) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.define-map.start.clarity"},2:{name:"keyword.declaration.define-map.clarity"},3:{name:"entity.name.map-name.clarity variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-map.end.clarity"}},name:"meta.define-map",patterns:[{include:"#data-type"},{include:"#expression"}]},"define-non-fungible-token":{begin:"(?x) (\\() \\s* (define-non-fungible-token) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.define-non-fungible-token.start.clarity"},2:{name:"keyword.declaration.define-non-fungible-token.clarity"},3:{name:"entity.name.non-fungible-token-name.clarity variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-non-fungible-token.end.clarity"}},name:"meta.define-non-fungible-token",patterns:[{include:"#data-type"}]},"define-trait":{begin:"(?x) (\\() \\s* (define-trait) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.define-trait.start.clarity"},2:{name:"keyword.declaration.define-trait.clarity"},3:{name:"entity.name.trait-name.clarity variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-trait.end.clarity"}},name:"meta.define-trait",patterns:[{begin:"(?x) (\\() \\s*",beginCaptures:{1:{name:"punctuation.define-trait-body.start.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.define-trait-body.end.clarity"}},name:"meta.define-trait-body",patterns:[{include:"#expression"},{begin:"(?x) (\\() \\s* ([a-zA-Z][\\w\\!\\?\\-]*) \\s+",beginCaptures:{1:{name:"punctuation.trait-function.start.clarity"},2:{name:"entity.name.function.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.trait-function.end.clarity"}},name:"meta.trait-function",patterns:[{include:"#data-type"},{begin:"(?x) (\\() \\s*",beginCaptures:{1:{name:"punctuation.trait-function-args.start.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.trait-function-args.end.clarity"}},name:"meta.trait-function-args",patterns:[{include:"#data-type"}]}]}]}]},expression:{patterns:[{include:"#comment"},{include:"#keyword"},{include:"#literal"},{include:"#let-func"},{include:"#built-in-func"},{include:"#get-set-func"}]},"get-set-func":{begin:"(?x) (\\() \\s* (var-get|var-set|map-get\\?|map-set|map-insert|map-delete|get) \\s+ ([a-zA-Z][\\w\\?\\!\\-]*) \\s*",beginCaptures:{1:{name:"punctuation.get-set-func.start.clarity"},2:{name:"keyword.control.clarity"},3:{name:"variable.other.clarity"}},end:"(\\))",endCaptures:{1:{name:"punctuation.get-set-func.end.clarity"}},name:"meta.get-set-func",patterns:[{include:"#expression"}]},keyword:{match:"(?\\<\\!\\?\\d]+\\*",name:"meta.symbol.dynamic.clojure"},keyfn:{patterns:[{match:"(?<=(\\s|\\(|\\[|\\{))(if(-[-\\p{Ll}\\?]*)?|when(-[-\\p{Ll}]*)?|for(-[-\\p{Ll}]*)?|cond|do|let(-[-\\p{Ll}\\?]*)?|binding|loop|recur|fn|throw[\\p{Ll}\\-]*|try|catch|finally|([\\p{Ll}]*case))(?=(\\s|\\)|\\]|\\}))",name:"storage.control.clojure"},{match:"(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\p{Ll}\\-]*))(?=(\\s|\\)|\\]|\\}))",name:"keyword.control.clojure"}]},keyword:{match:"(?<=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))",name:"constant.keyword.clojure"},map:{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.section.map.begin.clojure"}},end:"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",endCaptures:{1:{name:"punctuation.section.map.end.trailing.clojure"},2:{name:"punctuation.section.map.end.clojure"}},name:"meta.map.clojure",patterns:[{include:"$self"}]},metadata:{patterns:[{begin:"(\\^\\{)",beginCaptures:{1:{name:"punctuation.section.metadata.map.begin.clojure"}},end:"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",endCaptures:{1:{name:"punctuation.section.metadata.map.end.trailing.clojure"},2:{name:"punctuation.section.metadata.map.end.clojure"}},name:"meta.metadata.map.clojure",patterns:[{include:"$self"}]},{begin:"(\\^)",end:"(\\s)",name:"meta.metadata.simple.clojure",patterns:[{include:"#keyword"},{include:"$self"}]}]},"namespace-symbol":{patterns:[{captures:{1:{name:"meta.symbol.namespace.clojure"}},match:"([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)/"}]},"quoted-sexp":{begin:"(['``]\\()",beginCaptures:{1:{name:"punctuation.section.expression.begin.clojure"}},end:"(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",endCaptures:{1:{name:"punctuation.section.expression.end.trailing.clojure"},2:{name:"punctuation.section.expression.end.trailing.clojure"},3:{name:"punctuation.section.expression.end.clojure"}},name:"meta.quoted-expression.clojure",patterns:[{include:"$self"}]},regexp:{begin:'#"',beginCaptures:{0:{name:"punctuation.definition.regexp.begin.clojure"}},end:'"',endCaptures:{0:{name:"punctuation.definition.regexp.end.clojure"}},name:"string.regexp.clojure",patterns:[{include:"#regexp_escaped_char"}]},regexp_escaped_char:{match:"\\\\.",name:"constant.character.escape.clojure"},set:{begin:"(\\#\\{)",beginCaptures:{1:{name:"punctuation.section.set.begin.clojure"}},end:"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",endCaptures:{1:{name:"punctuation.section.set.end.trailing.clojure"},2:{name:"punctuation.section.set.end.clojure"}},name:"meta.set.clojure",patterns:[{include:"$self"}]},sexp:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.expression.begin.clojure"}},end:"(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",endCaptures:{1:{name:"punctuation.section.expression.end.trailing.clojure"},2:{name:"punctuation.section.expression.end.trailing.clojure"},3:{name:"punctuation.section.expression.end.clojure"}},name:"meta.expression.clojure",patterns:[{begin:"(?<=\\()(ns|declare|def[\\w\\d._:+=>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",name:"entity.global.clojure"},{include:"$self"}]},{include:"#keyfn"},{include:"#constants"},{include:"#vector"},{include:"#map"},{include:"#set"},{include:"#sexp"},{captures:{1:{name:"entity.name.function.clojure"}},match:"(?<=\\()(.+?)(?=\\s|\\))",patterns:[{include:"$self"}]},{include:"$self"}]},"shebang-comment":{begin:"^(#!)",beginCaptures:{1:{name:"punctuation.definition.comment.shebang.clojure"}},end:"$",name:"comment.line.shebang.clojure"},string:{begin:'(?\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",name:"meta.symbol.clojure"}]},var:{match:"(?<=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))",name:"meta.var.clojure"},vector:{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.section.vector.begin.clojure"}},end:"(\\](?=[\\}\\]\\)\\s]*(?:;|$)))|(\\])",endCaptures:{1:{name:"punctuation.section.vector.end.trailing.clojure"},2:{name:"punctuation.section.vector.end.clojure"}},name:"meta.vector.clojure",patterns:[{include:"$self"}]}},scopeName:"source.clojure",aliases:["clj"]});var n=[e];export{n as default}; diff --git a/assets/chunks/cmake.DXZpi2gR.js b/assets/chunks/cmake.DXZpi2gR.js new file mode 100644 index 000000000..7d2d51ed1 --- /dev/null +++ b/assets/chunks/cmake.DXZpi2gR.js @@ -0,0 +1 @@ +const _=Object.freeze({displayName:"CMake",fileTypes:["cmake","CMakeLists.txt"],name:"cmake",patterns:[{comment:"Variables That Describe the System",match:"\\b(?i:APPLE|BORLAND|(CMAKE_)?(CL_64|COMPILER_2005|HOST_APPLE|HOST_SYSTEM|HOST_SYSTEM_NAME|HOST_SYSTEM_PROCESSOR|HOST_SYSTEM_VERSION|HOST_UNIX|HOST_WIN32|LIBRARY_ARCHITECTURE|LIBRARY_ARCHITECTURE_REGEX|OBJECT_PATH_MAX|SYSTEM|SYSTEM_NAME|SYSTEM_PROCESSOR|SYSTEM_VERSION)|CYGWIN|MSVC|MSVC80|MSVC_IDE|MSVC_VERSION|UNIX|WIN32|XCODE_VERSION|MSVC60|MSVC70|MSVC90|MSVC71)\\b",name:"constant.source.cmake"},{comment:"cmakeOperators",match:"\\b(?i:ABSOLUTE|AND|BOOL|CACHE|COMMAND|COMMENT|DEFINED|DOC|EQUAL|EXISTS|EXT|FALSE|GREATER|GREATER_EQUAL|INTERNAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LESS|LESS_EQUAL|MATCHES|NAME|NAMES|NAME_WE|NOT|OFF|ON|OR|PATH|PATHS|POLICY|PROGRAM|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|TRUE|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\\b",name:"keyword.cmake"},{comment:"Commands",match:"^\\s*\\b(?i:add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_libraries|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)\\b",name:"keyword.cmake"},{comment:"Variables That Change Behavior",match:"\\b(?i:BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION))\\b",name:"variable.source.cmake"},{match:"\\$\\{\\w+\\}",name:"storage.source.cmake"},{match:"\\$ENV\\{\\w+\\}",name:"storage.source.cmake"},{comment:"Variables that Control the Build",match:"\\b(?i:(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH)\\b",name:"variable.source.cmake"},{comment:"Variables that Provide Information",match:"\\b(?i:CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|\\w+_BINARY_DIR|\\w+__SOURCE_DIR)\\b",name:"variable.source.cmake"},{begin:"#\\[(=*)\\[",comment:"BracketArgs",end:"\\]\\1\\]",name:"comment.source.cmake",patterns:[{match:"\\\\(.|$)",name:"constant.character.escape"}]},{begin:"\\[(=*)\\[",comment:"BracketArgs",end:"\\]\\1\\]",name:"argument.source.cmake",patterns:[{match:"\\\\(.|$)",name:"constant.character.escape"}]},{match:"#+.*$",name:"comment.source.cmake"},{comment:"Properties on Cache Entries",match:"\\b(?i:ADVANCED|HELPSTRING|MODIFIED|STRINGS|TYPE|VALUE)\\b",name:"entity.source.cmake"},{comment:"Properties on Source Files",match:"\\b(?i:ABSTRACT|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_|COMPILE_FLAGS|EXTERNAL_OBJECT|Fortran_FORMAT|GENERATED|HEADER_FILE_ONLY|KEEP_EXTENSION|LABELS|LANGUAGE|LOCATION|MACOSX_PACKAGE_LOCATION|OBJECT_DEPENDS|OBJECT_OUTPUTS|SYMBOLIC|WRAP_EXCLUDE)\\b",name:"entity.source.cmake"},{comment:"Properties on Tests",match:"\\b(?i:ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|COST|DEPENDS|ENVIRONMENT|FAIL_REGULAR_EXPRESSION|LABELS|MEASUREMENT|PASS_REGULAR_EXPRESSION|PROCESSORS|REQUIRED_FILES|RESOURCE_LOCK|RUN_SERIAL|TIMEOUT|WILL_FAIL|WORKING_DIRECTORY)\\b",name:"entity.source.cmake"},{comment:"Properties on Directories",match:"\\b(?i:ADDITIONAL_MAKE_CLEAN_FILES|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_\\w+|DEFINITIONS|EXCLUDE_FROM_ALL|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LINK_DIRECTORIES|LISTFILE_STACK|MACROS|PARENT_DIRECTORY|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|TEST_INCLUDE_FILE|VARIABLES|VS_GLOBAL_SECTION_POST_\\w+|VS_GLOBAL_SECTION_PRE_\\w+)\\b",name:"entity.source.cmake"},{comment:"Properties of Global Scope",match:"\\b(?i:ALLOW_DUPLICATE_CUSTOM_TARGETS|DEBUG_CONFIGURATIONS|DISABLED_FEATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|IN_TRY_COMPILE|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PREDEFINED_TARGETS_FOLDER|REPORT_UNDEFINED_PROPERTIES|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_SUPPORTS_SHARED_LIBS|USE_FOLDERS|__CMAKE_DELETE_CACHE_CHANGE_VARS_)\\b",name:"entity.source.cmake"},{comment:"Properties on Targets",match:"\\b(?i:\\w+_(OUTPUT_NAME|POSTFIX)|ARCHIVE_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|AUTOMOC(_MOC_OPTIONS)?|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE(_EXTENSION)?|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPILE_(DEFINITIONS(_\\w+)?|FLAGS)|DEBUG_POSTFIX|DEFINE_SYMBOL|ENABLE_EXPORTS|EXCLUDE_FROM_ALL|EchoString|FOLDER|FRAMEWORK|Fortran_(FORMAT|MODULE_DIRECTORY)|GENERATOR_FILE_NAME|GNUtoMS|HAS_CXX|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(CONFIGURATIONS|IMPLIB(_\\w+)?|LINK_DEPENDENT_LIBRARIES(_\\w+)?|LINK_INTERFACE_LANGUAGES(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LOCATION(_\\w+)?|NO_SONAME(_\\w+)?|SONAME(_\\w+)?)|IMPORT_PREFIX|IMPORT_SUFFIX|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_INCLUDE_DIRECTORIES|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LABELS|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_NAME(_\\w+)?|LINKER_LANGUAGE|LINK_DEPENDS|LINK_FLAGS(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LINK_LIBRARIES|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|LOCATION(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MAP_IMPORTED_CONFIG_\\w+|NO_SONAME|OSX_ARCHITECTURES(_\\w+)?|OUTPUT_NAME(_\\w+)?|PDB_NAME(_\\w+)?|POST_INSTALL_SCRIPT|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE|PRIVATE_HEADER|PROJECT_LABEL|PUBLIC|PUBLIC_HEADER|RESOURCE|RULE_LAUNCH_(COMPILE|CUSTOM|LINK)|RUNTIME_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|SKIP_BUILD_RPATH|SOURCES|SOVERSION|STATIC_LIBRARY_FLAGS(_\\w+)?|SUFFIX|TYPE|VERSION|VS_DOTNET_REFERENCES|VS_GLOBAL_(\\w+|KEYWORD|PROJECT_TYPES)|VS_KEYWORD|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|WIN32_EXECUTABLE|XCODE_ATTRIBUTE_\\w+)\\b",name:"entity.source.cmake"},{begin:'\\\\"',comment:"Escaped Strings",end:'\\\\"',name:"string.source.cmake",patterns:[{match:"\\\\(.|$)",name:"constant.character.escape"}]},{begin:'"',comment:"Normal Strings",end:'"',name:"string.source.cmake",patterns:[{match:"\\\\(.|$)",name:"constant.character.escape"}]},{comment:"Derecated keyword",match:"\\bBUILD_NAME\\b",name:"invalid.deprecated.source.cmake"},{comment:"Compiler Flags",match:"\\b(?i:(CMAKE_)?(CXX_FLAGS|CMAKE_CXX_FLAGS_DEBUG|CMAKE_CXX_FLAGS_MINSIZEREL|CMAKE_CXX_FLAGS_RELEASE|CMAKE_CXX_FLAGS_RELWITHDEBINFO))\\b",name:"variable.source.cmake"}],repository:{},scopeName:"source.cmake"});var E=[_];export{E as default}; diff --git a/assets/chunks/cobol.Be8n44jy.js b/assets/chunks/cobol.Be8n44jy.js new file mode 100644 index 000000000..a6cf7534a --- /dev/null +++ b/assets/chunks/cobol.Be8n44jy.js @@ -0,0 +1 @@ +import e from"./sql.DbK06e1c.js";import t from"./html.CuK0VrWf.js";import n from"./java.ClXEvkw9.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";const o=Object.freeze({displayName:"COBOL",fileTypes:["ccp","scbl","cobol","cbl","cblle","cblsrce","cblcpy","lks","pdv","cpy","copybook","cobcopy","fd","sel","scb","scbl","sqlcblle","cob","dds","def","src","ss","wks","bib","pco"],name:"cobol",patterns:[{match:"(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])([dD]\\s.*$)",name:"token.info-token.cobol"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"comment.line.cobol.newpage"}},match:"(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])(\\/.*$)"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"comment.line.cobol.fixed"}},match:"(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])(\\*.*$)"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"comment.line.cobol.newpage"}},match:"(^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s])(\\/.*$)"},{match:"^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s]$",name:"constant.numeric.cobol"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"comment.line.cobol.fixed"}},match:"(^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s])(\\*.*$)"},{captures:{1:{name:"constant.cobol"},2:{name:"comment.line.cobol.fixed"}},match:"(^[0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ])(\\*.*$)"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"variable.other.constant"}},match:"^\\s+(78)\\s+([0-9a-zA-Z][a-zA-Z\\-0-9_]+)"},{captures:{1:{name:"constant.numeric.cobol"},2:{name:"variable.other.constant"},3:{name:"keyword.identifers.cobol"}},match:"^\\s+([0-9]+)\\s+([0-9a-zA-Z][a-zA-Z\\-0-9_]+)\\s+((?i:constant))"},{captures:{1:{name:"constant.cobol"},2:{name:"comment.line.cobol.newpage"}},match:"(^[0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@])(\\/.*$)"},{match:"^\\*.*$",name:"comment.line.cobol.fixed"},{captures:{1:{name:"keyword.control.directive.conditional.cobol"},2:{name:"entity.name.function.preprocessor.cobol"},3:{name:"entity.name.function.cobol"},4:{name:"keyword.control.directive.conditional.cobol"}},match:"((?:^|\\s+)(?i:\\$set)\\s+)((?i:constant)\\s+)([0-9a-zA-Z][a-zA-Z\\-0-9]+\\s*)([a-zA-Z\\-0-9]*)"},{captures:{1:{name:"entity.name.function.preprocessor.cobol"},2:{name:"storage.modifier.import.cobol"},3:{name:"punctuation.begin.bracket.round.cobol"},4:{name:"string.quoted.other.cobol"},5:{name:"punctuation.end.bracket.round.cobol"}},match:"((?i:\\$\\s*set\\s+)(ilusing)(\\()(.*)(\\)))"},{captures:{1:{name:"entity.name.function.preprocessor.cobol"},2:{name:"storage.modifier.import.cobol"},3:{name:"punctuation.definition.string.begin.cobol"},4:{name:"string.quoted.other.cobol"},5:{name:"punctuation.definition.string.begin.cobol"}},match:'((?i:\\$\\s*set\\s+)(ilusing)(")(.*)("))'},{captures:{1:{name:"keyword.control.directive.conditional.cobol"},2:{name:"entity.name.function.preprocessor.cobol"},3:{name:"punctuation.definition.string.begin.cobol"},4:{name:"string.quoted.other.cobol"},5:{name:"punctuation.definition.string.begin.cobol"}},match:'((?i:\\$set))\\s+(\\w+)\\s*(")(\\w*)(")'},{captures:{1:{name:"keyword.control.directive.conditional.cobol"},2:{name:"entity.name.function.preprocessor.cobol"},3:{name:"punctuation.begin.bracket.round.cobol"},4:{name:"string.quoted.other.cobol"},5:{name:"punctuation.end.bracket.round.cobol"}},match:"((?i:\\$set))\\s+(\\w+)\\s*(\\()(.*)(\\))"},{captures:{0:{name:"keyword.control.directive.conditional.cobol"},1:{name:"invalid.illegal.directive"},2:{name:"comment.line.set.cobol"}},match:"(?:^|\\s+)(?i:\\$\\s*set\\s)((?i:01SHUFFLE|64KPARA|64KSECT|AUXOPT|CHIP|DATALIT|EANIM|EXPANDDATA|FIXING|FLAG-CHIP|MASM|MODEL|OPTSIZE|OPTSPEED|PARAS|PROTMODE|REGPARM|SEGCROSS|SEGSIZE|SIGNCOMPARE|SMALLDD|TABLESEGCROSS|TRICKLECHECK|\\s)+).*$"},{captures:{1:{name:"keyword.control.directive.cobol"},2:{name:"entity.other.attribute-name.preprocessor.cobol"}},match:"(\\$region|\\$end-region)(.*$)"},{begin:"\\$(?i:doc)(.*$)",end:"\\$(?i:end-doc)(.*$)",name:"invalid.illegal.iscobol"},{match:">>\\s*(?i:turn|page|listing|leap-seconds|d)\\s+.*$",name:"invalid.illegal.meta.preprocessor.cobolit"},{match:"(?i:substitute-case|substitute)\\s+",name:"invalid.illegal.functions.cobolit"},{captures:{1:{name:"invalid.illegal.keyword.control.directive.conditional.cobol"},2:{name:"invalid.illegal.entity.name.function.preprocessor.cobol"},3:{name:"invalid.illegal.entity.name.function.preprocessor.cobol"}},match:"((((>>|\\$)[\\s]*)(?i:elif))(.*$))"},{captures:{1:{name:"keyword.control.directive.conditional.cobol"},2:{name:"entity.name.function.preprocessor.cobol"},3:{name:"entity.name.function.preprocessor.cobol"}},match:"((((>>|\\$)[\\s]*)(?i:if|else|elif|end-if|end-evaluate|end|define|evaluate|when|display|call-convention|set))(.*$))"},{captures:{1:{name:"comment.line.scantoken.cobol"},2:{name:"keyword.cobol"},3:{name:"string.cobol"}},match:"(\\*>)\\s+(@[0-9a-zA-Z][a-zA-Z\\-0-9]+)\\s+(.*$)"},{match:"(\\*>.*$)",name:"comment.line.modern"},{match:"(>>.*)$",name:"strong comment.line.set.acucobol"},{match:"([nNuU][xX]|[hHxX])'\\h*'",name:"constant.numeric.integer.hexadecimal.cobol"},{match:"([nNuU][xX]|[hHxX])'.*'",name:"invalid.illegal.hexadecimal.cobol"},{match:'([nNuU][xX]|[hHxX])"\\h*"',name:"constant.numeric.integer.hexadecimal.cobol"},{match:'([nNuU][xX]|[hHxX])".*"',name:"invalid.illegal.hexadecimal.cobol"},{match:'[bB]"[0-1]"',name:"constant.numeric.integer.boolean.cobol"},{match:"[bB]'[0-1]'",name:"constant.numeric.integer.boolean.cobol"},{match:'[oO]"[0-7]*"',name:"constant.numeric.integer.octal.cobol"},{match:'[oO]".*"',name:"invalid.illegal.octal.cobol"},{match:"(#)([0-9a-zA-Z][a-zA-Z\\-0-9]+)",name:"meta.symbol.cobol.forced"},{begin:"((?.*$)",name:"comment.line.modern"},{match:"(\\:([0-9a-zA-Z\\-_])*)",name:"variable.cobol"},{include:"source.sql"}]},{begin:"(?i:exec\\s+cics)",contentName:"meta.embedded.block.cics",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{match:"(\\()",name:"meta.symbol.cobol"},{include:"#cics-keywords"},{include:"#string-double-quoted-constant"},{include:"#string-quoted-constant"},{include:"#number-complex-constant"},{include:"#number-simple-constant"},{match:"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))",name:"variable.cobol"}]},{begin:"(?i:exec\\s+dli)",contentName:"meta.embedded.block.dli",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{match:"(\\()",name:"meta.symbol.cobol"},{include:"#dli-keywords"},{include:"#dli-options"},{include:"#string-double-quoted-constant"},{include:"#string-quoted-constant"},{include:"#number-complex-constant"},{include:"#number-simple-constant"},{match:"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))",name:"variable.cobol"}]},{begin:"(?i:exec\\s+sqlims)",contentName:"meta.embedded.block.sql",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{match:"(\\*>.*$)",name:"comment.line.modern"},{match:"(\\:([a-zA-Z\\-])*)",name:"variable.cobol"},{include:"source.sql"}]},{begin:"(?i:exec\\s+ado)",contentName:"meta.embedded.block.sql",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{match:"(--.*$)",name:"comment.line.sql"},{match:"(\\*>.*$)",name:"comment.line.modern"},{match:"(\\:([a-zA-Z\\-])*)",name:"variable.cobol"},{include:"source.sql"}]},{begin:"(?i:exec\\s+html)",contentName:"meta.embedded.block.html",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{include:"text.html.basic"}]},{begin:"(?i:exec\\s+java)",contentName:"meta.embedded.block.java",end:"(?i:end\\-exec)",name:"keyword.verb.cobol",patterns:[{include:"source.java"}]},{captures:{1:{name:"punctuation.definition.string.begin.cobol"},2:{name:"support.function.cobol"},3:{name:"punctuation.definition.string.end.cobol"}},match:'(")(CBL_.*)(")'},{captures:{1:{name:"punctuation.definition.string.begin.cobol"},2:{name:"support.function.cobol"},3:{name:"punctuation.definition.string.end.cobol"}},match:'(")(PC_.*)(")'},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cobol"}},end:'("|$)',endCaptures:{0:{name:"punctuation.definition.string.end.cobol"}},name:"string.quoted.double.cobol"},{captures:{1:{name:"punctuation.definition.string.begin.cobol"},2:{name:"support.function.cobol"},3:{name:"punctuation.definition.string.end.cobol"}},match:"(\\')(CBL_.*)(\\')"},{captures:{1:{name:"punctuation.definition.string.begin.cobol"},2:{name:"support.function.cobol"},3:{name:"punctuation.definition.string.end.cobol"}},match:"(\\')(PC_.*)(\\')"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.cobol"}},end:"('|$)",endCaptures:{0:{name:"punctuation.definition.string.end.cobol"}},name:"string.quoted.single.cobol"},{begin:'(?|<=|>=|<>|\\+|\\-|\\*|\\/|(?",name:"punctuation.anglebracket.close.ql"},"close-brace":{match:"(?x)\\}",name:"punctuation.curlybrace.close.ql"},"close-bracket":{match:"(?x)\\]",name:"punctuation.squarebracket.close.ql"},"close-paren":{match:"(?x)\\)",name:"punctuation.parenthesis.close.ql"},comma:{match:"(?x),",name:"punctuation.separator.comma.ql"},comment:{patterns:[{begin:"(?x)/\\*\\*",end:"(?x)\\*/",name:"comment.block.documentation.ql",patterns:[{begin:"(?x)(?<=/\\*\\*)([^*]|\\*(?!/))*$",patterns:[{match:"(?x)\\G\\s* (@\\S+)",name:"keyword.tag.ql"}],while:"(?x)(^|\\G)\\s*([^*]|\\*(?!/))(?=([^*]|[*](?!/))*$)"}]},{begin:"(?x)/\\*",end:"(?x)\\*/",name:"comment.block.ql"},{match:"(?x)//.*$",name:"comment.line.double-slash.ql"}]},"comment-start":{match:"(?x)// | /\\*"},"comparison-operator":{match:"(?x)=|\\!\\=",name:"keyword.operator.comparison.ql"},concat:{match:"(?x)\\b(?:concat)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.concat.ql"},count:{match:"(?x)\\b(?:count)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.count.ql"},date:{match:"(?x)\\b(?:date)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.type.date.ql"},default:{match:"(?x)\\b(?:default)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.default.ql"},deprecated:{match:"(?x)\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.deprecated.ql"},desc:{match:"(?x)\\b(?:desc)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.order.desc.ql"},"dont-care":{match:"(?x)\\b(?:_)(?:(?!(?:[0-9A-Za-z_])))",name:"variable.language.dont-care.ql"},dot:{match:"(?x)\\.",name:"punctuation.accessor.ql"},dotdot:{match:"(?x)\\.\\.",name:"punctuation.operator.range.ql"},else:{match:"(?x)\\b(?:else)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.else.ql"},"end-of-as-clause":{match:"(?x)(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?)|[A-Za-z0-9_]) (?!\\s*(\\.|\\:\\:|\\,|(?:<)))",name:"meta.block.import-directive.ql",patterns:[{include:"#instantiation-args"},{include:"#non-context-sensitive"},{match:"(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.namespace.ql"}]},in:{match:"(?x)\\b(?:in)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.in.ql"},instanceof:{match:"(?x)\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.instanceof.ql"},"instantiation-args":{begin:"(?x)((?:<))",beginCaptures:{1:{patterns:[{include:"#open-angle"}]}},end:"(?x)((?:>))",endCaptures:{1:{patterns:[{include:"#close-angle"}]}},name:"meta.type.parameters.ql",patterns:[{include:"#instantiation-args"},{include:"#non-context-sensitive"},{match:"(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.namespace.ql"}]},int:{match:"(?x)\\b(?:int)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.type.int.ql"},"int-literal":{match:"(?x)-?[0-9]+(?![0-9])",name:"constant.numeric.decimal.ql"},keyword:{patterns:[{include:"#dont-care"},{include:"#and"},{include:"#any"},{include:"#as"},{include:"#asc"},{include:"#avg"},{include:"#boolean"},{include:"#by"},{include:"#class"},{include:"#concat"},{include:"#count"},{include:"#date"},{include:"#desc"},{include:"#else"},{include:"#exists"},{include:"#extends"},{include:"#false"},{include:"#float"},{include:"#forall"},{include:"#forex"},{include:"#from"},{include:"#if"},{include:"#implies"},{include:"#import"},{include:"#in"},{include:"#instanceof"},{include:"#int"},{include:"#max"},{include:"#min"},{include:"#module"},{include:"#newtype"},{include:"#none"},{include:"#not"},{include:"#or"},{include:"#order"},{include:"#predicate"},{include:"#rank"},{include:"#result"},{include:"#select"},{include:"#strictconcat"},{include:"#strictcount"},{include:"#strictsum"},{include:"#string"},{include:"#sum"},{include:"#super"},{include:"#then"},{include:"#this"},{include:"#true"},{include:"#unique"},{include:"#where"}]},language:{match:"(?x)\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.language.ql"},"language-annotation":{begin:"(?x)((?:\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#language"}]}},end:"(?x)(?! (?:\\s | $ | (?:// | /\\*)) | \\[ ) | (?<=\\])",name:"meta.block.language-annotation.ql",patterns:[{include:"#language-annotation-body"},{include:"#non-context-sensitive"}]},"language-annotation-body":{begin:"(?x)((?:\\[))",beginCaptures:{1:{patterns:[{include:"#open-bracket"}]}},end:"(?x)((?:\\]))",endCaptures:{1:{patterns:[{include:"#close-bracket"}]}},name:"meta.block.language-annotation-body.ql",patterns:[{include:"#non-context-sensitive"},{match:"(?x)\\b(?:monotonicAggregates)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.ql"}]},library:{match:"(?x)\\b(?:library)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.library.ql"},literal:{patterns:[{include:"#float-literal"},{include:"#int-literal"},{include:"#string-literal"}]},"lower-id":{match:"(?x)\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"},max:{match:"(?x)\\b(?:max)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.max.ql"},min:{match:"(?x)\\b(?:min)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.min.ql"},module:{match:"(?x)\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.module.ql"},"module-body":{begin:"(?x)((?:\\{))",beginCaptures:{1:{patterns:[{include:"#open-brace"}]}},end:"(?x)((?:\\}))",endCaptures:{1:{patterns:[{include:"#close-brace"}]}},name:"meta.block.module-body.ql",patterns:[{include:"#module-member"}]},"module-declaration":{begin:"(?x)((?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#module"}]}},end:"(?x)(?<=\\}|;)",name:"meta.block.module-declaration.ql",patterns:[{include:"#module-body"},{include:"#implements-clause"},{include:"#non-context-sensitive"},{match:"(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.namespace.ql"}]},"module-member":{patterns:[{include:"#import-directive"},{include:"#import-as-clause"},{include:"#module-declaration"},{include:"#newtype-declaration"},{include:"#newtype-branch-name-with-prefix"},{include:"#predicate-parameter-list"},{include:"#predicate-body"},{include:"#class-declaration"},{include:"#select-clause"},{include:"#predicate-or-field-declaration"},{include:"#non-context-sensitive"},{include:"#annotation"}]},"module-qualifier":{match:"(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) (?=\\s*\\:\\:)",name:"entity.name.type.namespace.ql"},newtype:{match:"(?x)\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.newtype.ql"},"newtype-branch-name-with-prefix":{begin:"(?x)\\= | (?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))",beginCaptures:{0:{patterns:[{include:"#or"},{include:"#comparison-operator"}]}},end:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",endCaptures:{0:{name:"entity.name.type.ql"}},name:"meta.block.newtype-branch-name-with-prefix.ql",patterns:[{include:"#non-context-sensitive"}]},"newtype-declaration":{begin:"(?x)((?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#newtype"}]}},end:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",endCaptures:{0:{name:"entity.name.type.ql"}},name:"meta.block.newtype-declaration.ql",patterns:[{include:"#non-context-sensitive"}]},"non-context-sensitive":{patterns:[{include:"#comment"},{include:"#literal"},{include:"#operator-or-punctuation"},{include:"#keyword"}]},none:{match:"(?x)\\b(?:none)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.quantifier.none.ql"},not:{match:"(?x)\\b(?:not)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.not.ql"},"open-angle":{match:"(?x)<",name:"punctuation.anglebracket.open.ql"},"open-brace":{match:"(?x)\\{",name:"punctuation.curlybrace.open.ql"},"open-bracket":{match:"(?x)\\[",name:"punctuation.squarebracket.open.ql"},"open-paren":{match:"(?x)\\(",name:"punctuation.parenthesis.open.ql"},"operator-or-punctuation":{patterns:[{include:"#relational-operator"},{include:"#comparison-operator"},{include:"#arithmetic-operator"},{include:"#comma"},{include:"#semicolon"},{include:"#dot"},{include:"#dotdot"},{include:"#pipe"},{include:"#open-paren"},{include:"#close-paren"},{include:"#open-brace"},{include:"#close-brace"},{include:"#open-bracket"},{include:"#close-bracket"},{include:"#open-angle"},{include:"#close-angle"}]},or:{match:"(?x)\\b(?:or)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.or.ql"},order:{match:"(?x)\\b(?:order)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.order.order.ql"},override:{match:"(?x)\\b(?:override)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.override.ql"},pipe:{match:"(?x)\\|",name:"punctuation.separator.pipe.ql"},pragma:{match:"(?x)\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.pragma.ql"},"pragma-annotation":{begin:"(?x)((?:\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#pragma"}]}},end:"(?x)(?! (?:\\s | $ | (?:// | /\\*)) | \\[ ) | (?<=\\])",name:"meta.block.pragma-annotation.ql",patterns:[{include:"#pragma-annotation-body"},{include:"#non-context-sensitive"}]},"pragma-annotation-body":{begin:"(?x)((?:\\[))",beginCaptures:{1:{patterns:[{include:"#open-bracket"}]}},end:"(?x)((?:\\]))",endCaptures:{1:{patterns:[{include:"#close-bracket"}]}},name:"meta.block.pragma-annotation-body.ql",patterns:[{match:"(?x)\\b(?:inline|noinline|nomagic|noopt)\\b",name:"storage.modifier.ql"}]},predicate:{match:"(?x)\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.predicate.ql"},"predicate-body":{begin:"(?x)((?:\\{))",beginCaptures:{1:{patterns:[{include:"#open-brace"}]}},end:"(?x)((?:\\}))",endCaptures:{1:{patterns:[{include:"#close-brace"}]}},name:"meta.block.predicate-body.ql",patterns:[{include:"#predicate-body-contents"}]},"predicate-body-contents":{patterns:[{include:"#expr-as-clause"},{include:"#non-context-sensitive"},{include:"#module-qualifier"},{match:"(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\\s*(?:\\*|\\+)?\\s*(?=\\()",name:"entity.name.function.ql"},{match:"(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"variable.other.ql"},{match:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.ql"}]},"predicate-or-field-declaration":{begin:"(?x)(?:(?=(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))(?!(?:(?:(?:\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:unique)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))|(?:(?:(?:\\b(?:abstract)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:additional)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:cached)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:default)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:external)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:final)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:language)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:library)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:override)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:private)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:query)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:signature)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))))))) | (?=(?:(?:(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))))) | (?=(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))",end:"(?x)(?<=\\}|;)",name:"meta.block.predicate-or-field-declaration.ql",patterns:[{include:"#predicate-parameter-list"},{include:"#predicate-body"},{include:"#non-context-sensitive"},{include:"#module-qualifier"},{match:"(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\s*;)",name:"variable.field.ql"},{match:"(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.function.ql"},{match:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.ql"}]},"predicate-parameter-list":{begin:"(?x)((?:\\())",beginCaptures:{1:{patterns:[{include:"#open-paren"}]}},end:"(?x)((?:\\)))",endCaptures:{1:{patterns:[{include:"#close-paren"}]}},name:"meta.block.predicate-parameter-list.ql",patterns:[{include:"#non-context-sensitive"},{match:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\s*(?:,|\\)))",name:"variable.parameter.ql"},{include:"#module-qualifier"},{match:"(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"entity.name.type.ql"},{match:"(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"variable.parameter.ql"}]},"predicate-start-keyword":{patterns:[{include:"#boolean"},{include:"#date"},{include:"#float"},{include:"#int"},{include:"#predicate"},{include:"#string"}]},private:{match:"(?x)\\b(?:private)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.private.ql"},query:{match:"(?x)\\b(?:query)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.query.ql"},rank:{match:"(?x)\\b(?:rank)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.rank.ql"},"relational-operator":{match:"(?x)<=|<|>=|>",name:"keyword.operator.relational.ql"},result:{match:"(?x)\\b(?:result)(?:(?!(?:[0-9A-Za-z_])))",name:"variable.language.result.ql"},select:{match:"(?x)\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.query.select.ql"},"select-as-clause":{begin:"(?x)((?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#as"}]}},end:"(?x)(?<=(?:[0-9A-Za-z_])(?:(?!(?:[0-9A-Za-z_]))))",match:"(?x)meta.block.select-as-clause.ql",patterns:[{include:"#non-context-sensitive"},{match:"(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",name:"variable.other.ql"}]},"select-clause":{begin:"(?x)(?=(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",end:"(?x)(?!(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",name:"meta.block.select-clause.ql",patterns:[{include:"#from-section"},{include:"#where-section"},{include:"#select-section"}]},"select-section":{begin:"(?x)((?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#select"}]}},end:"(?x)(?=\\n)",name:"meta.block.select-section.ql",patterns:[{include:"#predicate-body-contents"},{include:"#select-as-clause"}]},semicolon:{match:"(?x);",name:"punctuation.separator.statement.ql"},signature:{match:"(?x)\\b(?:signature)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.signature.ql"},"simple-id":{match:"(?x)\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"},strictconcat:{match:"(?x)\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.strictconcat.ql"},strictcount:{match:"(?x)\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.strictcount.ql"},strictsum:{match:"(?x)\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.strictsum.ql"},string:{match:"(?x)\\b(?:string)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.type.string.ql"},"string-escape":{match:'(?x)\\\\["\\\\nrt]',name:"constant.character.escape.ql"},"string-literal":{begin:'(?x)"',beginCaptures:{0:{name:"punctuation.definition.string.begin.ql"}},end:'(?x)(") | ((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.ql"},2:{name:"invalid.illegal.newline.ql"}},name:"string.quoted.double.ql",patterns:[{include:"#string-escape"}]},sum:{match:"(?x)\\b(?:sum)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.sum.ql"},super:{match:"(?x)\\b(?:super)(?:(?!(?:[0-9A-Za-z_])))",name:"variable.language.super.ql"},then:{match:"(?x)\\b(?:then)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.other.then.ql"},this:{match:"(?x)\\b(?:this)(?:(?!(?:[0-9A-Za-z_])))",name:"variable.language.this.ql"},transient:{match:"(?x)\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))",name:"storage.modifier.transient.ql"},true:{match:"(?x)\\b(?:true)(?:(?!(?:[0-9A-Za-z_])))",name:"constant.language.boolean.true.ql"},unique:{match:"(?x)\\b(?:unique)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.aggregate.unique.ql"},"upper-id":{match:"(?x)\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"},where:{match:"(?x)\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))",name:"keyword.query.where.ql"},"where-section":{begin:"(?x)((?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))))",beginCaptures:{1:{patterns:[{include:"#where"}]}},end:"(?x)(?=(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",name:"meta.block.where-section.ql",patterns:[{include:"#predicate-body-contents"}]},"whitespace-or-comment-start":{match:"(?x)\\s | $ | (?:// | /\\*)"}},scopeName:"source.ql",aliases:["ql"]});var a=[e];export{a as default}; diff --git a/assets/chunks/coffee.t_LrLW_f.js b/assets/chunks/coffee.t_LrLW_f.js new file mode 100644 index 000000000..89a5cbbcf --- /dev/null +++ b/assets/chunks/coffee.t_LrLW_f.js @@ -0,0 +1,100 @@ +import e from"./javascript.Dch3xQiY.js";const t=Object.freeze({displayName:"CoffeeScript",name:"coffee",patterns:[{include:"#jsx"},{captures:{1:{name:"keyword.operator.new.coffee"},2:{name:"storage.type.class.coffee"},3:{name:"entity.name.type.instance.coffee"},4:{name:"entity.name.type.instance.coffee"}},match:"(new)\\s+(?:(?:(class)\\s+(\\w+(?:\\.\\w*)*)?)|(\\w+(?:\\.\\w*)*))",name:"meta.class.instance.constructor.coffee"},{begin:"'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:"'''",endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.single.heredoc.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\).",name:"constant.character.escape.backslash.coffee"}]},{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.double.heredoc.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\).",name:"constant.character.escape.backslash.coffee"},{include:"#interpolated_coffee"}]},{captures:{1:{name:"punctuation.definition.string.begin.coffee"},2:{name:"source.js.embedded.coffee",patterns:[{include:"source.js"}]},3:{name:"punctuation.definition.string.end.coffee"}},match:"(`)(.*)(`)",name:"string.quoted.script.coffee"},{begin:"(?)`,beginCaptures:{1:{name:"entity.name.function.coffee"},2:{name:"variable.other.readwrite.instance.coffee"},3:{name:"keyword.operator.assignment.coffee"}},end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.coffee",patterns:[{include:"#function_params"}]},{begin:`(?x) +(?<=\\s|^)(?:((')([^']*?)('))|((")([^"]*?)("))) +\\s*([:=])\\s* +(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)`,beginCaptures:{1:{name:"string.quoted.single.coffee"},2:{name:"punctuation.definition.string.begin.coffee"},3:{name:"entity.name.function.coffee"},4:{name:"punctuation.definition.string.end.coffee"},5:{name:"string.quoted.double.coffee"},6:{name:"punctuation.definition.string.begin.coffee"},7:{name:"entity.name.function.coffee"},8:{name:"punctuation.definition.string.end.coffee"},9:{name:"keyword.operator.assignment.coffee"}},end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.coffee",patterns:[{include:"#function_params"}]},{begin:"(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.inline.coffee",patterns:[{include:"#function_params"}]},{begin:`(?<=\\s|^)({)(?=[^'"#]+?}[\\s\\]}]*=)`,beginCaptures:{1:{name:"punctuation.definition.destructuring.begin.bracket.curly.coffee"}},end:"}",endCaptures:{0:{name:"punctuation.definition.destructuring.end.bracket.curly.coffee"}},name:"meta.variable.assignment.destructured.object.coffee",patterns:[{include:"$self"},{match:"[a-zA-Z$_]\\w*",name:"variable.assignment.coffee"}]},{begin:`(?<=\\s|^)(\\[)(?=[^'"#]+?\\][\\s\\]}]*=)`,beginCaptures:{1:{name:"punctuation.definition.destructuring.begin.bracket.square.coffee"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.destructuring.end.bracket.square.coffee"}},name:"meta.variable.assignment.destructured.array.coffee",patterns:[{include:"$self"},{match:"[a-zA-Z$_]\\w*",name:"variable.assignment.coffee"}]},{match:"\\b(?|\\-\\d|\\[|{|"|'))`,end:"(?=\\s*(?|\\-\\d|\\[|{|"|')))`,beginCaptures:{1:{name:"variable.other.readwrite.instance.coffee"},2:{patterns:[{include:"#function_names"}]}},end:"(?=\\s*(?)",name:"meta.tag.coffee"}]},"jsx-expression":{begin:"{",beginCaptures:{0:{name:"meta.brace.curly.coffee"}},end:"}",endCaptures:{0:{name:"meta.brace.curly.coffee"}},patterns:[{include:"#double_quoted_string"},{include:"$self"}]},"jsx-tag":{patterns:[{begin:"(<)([-\\w\\.]+)",beginCaptures:{1:{name:"punctuation.definition.tag.coffee"},2:{name:"entity.name.tag.coffee"}},end:"(/?>)",name:"meta.tag.coffee",patterns:[{include:"#jsx-attribute"}]}]},method_calls:{patterns:[{begin:"(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\()",beginCaptures:{1:{name:"punctuation.separator.method.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{patterns:[{include:"#method_names"}]}},end:"(?<=\\))",name:"meta.method-call.coffee",patterns:[{include:"#arguments"}]},{begin:`(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\s+(?!(?|\\-\\d|\\[|{|"|')))`,beginCaptures:{1:{name:"punctuation.separator.method.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{patterns:[{include:"#method_names"}]}},end:"(?=\\s*(?>=|>>>=|\\|=)"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.coffee"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.coffee"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.coffee"},{match:"&|\\||\\^|~",name:"keyword.operator.bitwise.coffee"},{captures:{1:{name:"variable.assignment.coffee"},2:{name:"keyword.operator.assignment.coffee"}},match:"([a-zA-Z$_][\\w$]*)?\\s*(=|:(?!:))(?![>=])"},{match:"--",name:"keyword.operator.decrement.coffee"},{match:"\\+\\+",name:"keyword.operator.increment.coffee"},{match:"\\.\\.\\.",name:"keyword.operator.splat.coffee"},{match:"\\?",name:"keyword.operator.existential.coffee"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.coffee"},{captures:{1:{name:"keyword.operator.logical.coffee"},2:{name:"keyword.operator.comparison.coffee"}},match:`(?x) +\\b(?\\~\\!\\?\\[\\]\\{\\}\\.]+) +\\s* +((,@|,\\.|,)?) +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +| +((,@|,\\.|,)?) +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +) +(?=(\\s|\\(|\\)))`},{captures:{1:{name:"storage.type.function.defname.commonlisp"},2:{name:"entity.name.type.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\() +(deftype|defpackage|define-condition|defclass) +\\s+ +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(?=(\\s|\\(|\\)))`},{captures:{1:{name:"storage.type.function.defname.commonlisp"},2:{patterns:[{include:"#package"},{match:"\\S+?",name:"variable.other.constant.defname.commonlisp"}]}},match:`(?xi) +(?<=^|\\s|\\() +(defconstant) +\\s+ +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(?=(\\s|\\(|\\)))`},{captures:{1:{name:"storage.type.function.defname.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\() +(defvar|defparameter) +\\s+ +(?=(\\s|\\(|\\)))`},{captures:{1:{name:"storage.type.function.defname.commonlisp"},2:{name:"entity.name.type.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\() +(defstruct) +\\s+\\(?\\s* +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(?=(\\s|\\(|\\)))`},{captures:{1:{name:"keyword.control.commonlisp"},2:{patterns:[{include:"#package"},{match:"\\S+?",name:"entity.name.function.commonlisp"}]}},match:`(?xi) +(?<=^|\\s|\\() +(macrolet|labels|flet) +\\s+\\(\\s*\\(\\s* +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(?=(\\s|\\(|\\)))`}]},escape:{match:`(?xi) +(?<=^|\\s|\\() +(?:\\#\\\\\\S+?) +(?=(\\s|\\(|\\)))`,name:"constant.character.escape.commonlisp"},function:{patterns:[{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:values|third|tenth|symbol-value|symbol-plist|symbol-function|svref|subseq|sixth|seventh|second|schar|sbit|row-major-aref| +rest|readtable-case|nth|ninth|mask-field|macro-function|logical-pathname-translations|ldb|gethash|getf|get|fourth|first| +find-class|fill-pointer|fifth|fdefinition|elt|eighth|compiler-macro-function|char|cdr|cddr|cdddr|cddddr|cdddar|cddar|cddadr| +cddaar|cdar|cdadr|cdaddr|cdadar|cdaar|cdaadr|cdaaar|car|cadr|caddr|cadddr|caddar|cadar|cadadr|cadaar|caar|caadr|caaddr|caadar| +caaar|caaadr|caaaar|bit|aref) +(?=(\\s|\\(|\\)))`,name:"support.function.accessor.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:yes-or-no-p|y-or-n-p|write-sequence|write-char|write-byte|warn|vector-pop|use-value|use-package|unuse-package|union|unintern| +unexport|terpri|tailp|substitute-if-not|substitute-if|substitute|subst-if-not|subst-if|subst|sublis|string-upcase|string-downcase| +string-capitalize|store-value|sleep|signal|shadowing-import|shadow|set-syntax-from-char|set-macro-character|set-exclusive-or| +set-dispatch-macro-character|set-difference|set|rplacd|rplaca|room|reverse|revappend|require|replace|remprop|remove-if-not|remove-if| +remove-duplicates|remove|remhash|read-sequence|read-byte|random|provide|pprint-tabular|pprint-newline|pprint-linear|pprint-fill| +nunion|nsubstitute-if-not|nsubstitute-if|nsubstitute|nsubst-if-not|nsubst-if|nsubst|nsublis|nstring-upcase|nstring-downcase|nstring-capitalize| +nset-exclusive-or|nset-difference|nreverse|nreconc|nintersection|nconc|muffle-warning|method-combination-error|maphash|makunbound|ldiff| +invoke-restart-interactively|invoke-restart|invoke-debugger|invalid-method-error|intersection|inspect|import|get-output-stream-string| +get-macro-character|get-dispatch-macro-character|gentemp|gensym|fresh-line|fill|file-position|export|describe|delete-if-not|delete-if| +delete-duplicates|delete|continue|clrhash|close|clear-input|break|abort) +(?=(\\s|\\(|\\)))`,name:"support.function.f.sideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:zerop|write-to-string|write-string|write-line|write|wild-pathname-p|vectorp|vector-push-extend|vector-push|vector|values-list| +user-homedir-pathname|upper-case-p|upgraded-complex-part-type|upgraded-array-element-type|unread-char|unbound-slot-instance|typep|type-of| +type-error-expected-type|type-error-datum|two-way-stream-output-stream|two-way-stream-input-stream|truncate|truename|tree-equal|translate-pathname| +translate-logical-pathname|tanh|tan|synonym-stream-symbol|symbolp|symbol-package|symbol-name|sxhash|subtypep|subsetp|stringp|string>=|string>| +string=|string<=|string<|string\\/=|string-trim|string-right-trim|string-not-lessp|string-not-greaterp|string-not-equal|string-lessp| +string-left-trim|string-greaterp|string-equal|string|streamp|stream-external-format|stream-error-stream|stream-element-type|standard-char-p| +stable-sort|sqrt|special-operator-p|sort|some|software-version|software-type|slot-value|slot-makunbound|slot-exists-p|slot-boundp|sinh|sin| +simple-vector-p|simple-string-p|simple-condition-format-control|simple-condition-format-arguments|simple-bit-vector-p|signum|short-site-name| +set-pprint-dispatch|search|scale-float|round|restart-name|rename-package|rename-file|rem|reduce|realpart|realp|readtablep| +read-preserving-whitespace|read-line|read-from-string|read-delimited-list|read-char-no-hang|read-char|read|rationalp|rationalize| +rational|rassoc-if-not|rassoc-if|rassoc|random-state-p|proclaim|probe-file|print-not-readable-object|print|princ-to-string|princ| +prin1-to-string|prin1|pprint-tab|pprint-indent|pprint-dispatch|pprint|position-if-not|position-if|position|plusp|phase|peek-char|pathnamep| +pathname-version|pathname-type|pathname-name|pathname-match-p|pathname-host|pathname-directory|pathname-device|pathname|parse-namestring| +parse-integer|pairlis|packagep|package-used-by-list|package-use-list|package-shadowing-symbols|package-nicknames|package-name|package-error-package| +output-stream-p|open-stream-p|open|oddp|numerator|numberp|null|nthcdr|notevery|notany|not|next-method-p|nbutlast|namestring|name-char|mod|mismatch| +minusp|min|merge-pathnames|merge|member-if-not|member-if|member|max|maplist|mapl|mapcon|mapcar|mapcan|mapc|map-into|map|make-two-way-stream| +make-synonym-stream|make-symbol|make-string-output-stream|make-string-input-stream|make-string|make-sequence|make-random-state|make-pathname| +make-package|make-load-form-saving-slots|make-list|make-hash-table|make-echo-stream|make-dispatch-macro-character|make-condition| +make-concatenated-stream|make-broadcast-stream|make-array|macroexpand-1|macroexpand|machine-version|machine-type|machine-instance|lower-case-p| +long-site-name|logxor|logtest|logorc2|logorc1|lognot|lognor|lognand|logior|logical-pathname|logeqv|logcount|logbitp|logandc2|logandc1|logand| +log|load-logical-pathname-translations|load|listp|listen|list-length|list-all-packages|list\\*|list|lisp-implementation-version| +lisp-implementation-type|length|ldb-test|lcm|last|keywordp|isqrt|intern|interactive-stream-p|integerp|integer-length|integer-decode-float| +input-stream-p|imagpart|identity|host-namestring|hash-table-test|hash-table-size|hash-table-rehash-threshold|hash-table-rehash-size|hash-table-p| +hash-table-count|graphic-char-p|get-universal-time|get-setf-expansion|get-properties|get-internal-run-time|get-internal-real-time| +get-decoded-time|gcd|functionp|function-lambda-expression|funcall|ftruncate|fround|format|force-output|fmakunbound|floor|floatp|float-sign| +float-radix|float-precision|float-digits|float|finish-output|find-symbol|find-restart|find-package|find-if-not|find-if|find-all-symbols|find| +file-write-date|file-string-length|file-namestring|file-length|file-error-pathname|file-author|ffloor|fceiling|fboundp|expt|exp|every|evenp| +eval|equalp|equal|eql|eq|ensure-generic-function|ensure-directories-exist|enough-namestring|endp|encode-universal-time|ed|echo-stream-output-stream| +echo-stream-input-stream|dribble|dpb|disassemble|directory-namestring|directory|digit-char-p|digit-char|deposit-field|denominator|delete-package| +delete-file|decode-universal-time|decode-float|count-if-not|count-if|count|cosh|cos|copy-tree|copy-symbol|copy-structure|copy-seq|copy-readtable| +copy-pprint-dispatch|copy-list|copy-alist|constantp|constantly|consp|cons|conjugate|concatenated-stream-streams|concatenate|compute-restarts| +complexp|complex|complement|compiled-function-p|compile-file-pathname|compile-file|compile|coerce|code-char|clear-output|class-of|cis|characterp| +character|char>=|char>|char=|char<=|char<|char\\/=|char-upcase|char-not-lessp|char-not-greaterp|char-not-equal|char-name|char-lessp|char-int| +char-greaterp|char-equal|char-downcase|char-code|cerror|cell-error-name|ceiling|call-next-method|byte-size|byte-position|byte|butlast| +broadcast-stream-streams|boundp|both-case-p|boole|bit-xor|bit-vector-p|bit-orc2|bit-orc1|bit-not|bit-nor|bit-nand|bit-ior|bit-eqv|bit-andc2| +bit-andc1|bit-and|atom|atanh|atan|assoc-if-not|assoc-if|assoc|asinh|asin|ash|arrayp|array-total-size|array-row-major-index|array-rank| +array-in-bounds-p|array-has-fill-pointer-p|array-element-type|array-displacement|array-dimensions|array-dimension|arithmetic-error-operation| +arithmetic-error-operands|apropos-list|apropos|apply|append|alphanumericp|alpha-char-p|adjustable-array-p|adjust-array|adjoin|acosh|acos|acons| +abs|>=|>|=|<=|<|1-|1\\+|\\/=|\\/|-|\\+|\\*) +(?=(\\s|\\(|\\)))`,name:"support.function.f.sideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:variable|update-instance-for-redefined-class|update-instance-for-different-class|structure|slot-unbound|slot-missing|shared-initialize| +remove-method|print-object|no-next-method|no-applicable-method|method-qualifiers|make-load-form|make-instances-obsolete|make-instance| +initialize-instance|function-keywords|find-method|documentation|describe-object|compute-applicable-methods|compiler-macro|class-name| +change-class|allocate-instance|add-method) +(?=(\\s|\\(|\\)))`,name:"support.function.sgf.nosideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:reinitialize-instance) +(?=(\\s|\\(|\\)))`,name:"support.function.sgf.sideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|\\#') +(?:satisfies) +(?=(\\s|\\(|\\)))`,name:"support.function.typespecifier.commonlisp"}]},"lambda-list":{match:`(?xi) +(?<=^|\\s|\\() +(?:&[#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?|&whole|&rest|&optional|&key|&environment|&body|&aux|&allow-other-keys) +(?=(\\s|\\(|\\)))`,name:"keyword.other.lambdalist.commonlisp"},macro:{patterns:[{match:`(?xi) +(?<=^|\\s|\\() +(?:with-standard-io-syntax|with-slots|with-simple-restart|with-package-iterator|with-hash-table-iterator|with-condition-restarts| +with-compilation-unit|with-accessors|when|unless|typecase|time|step|shiftf|setf|rotatef|return|restart-case|restart-bind|psetf|prog2|prog1| +prog\\*|prog|print-unreadable-object|pprint-logical-block|pprint-exit-if-list-exhausted|or|nth-value|multiple-value-setq|multiple-value-list| +multiple-value-bind|make-method|loop|lambda|ignore-errors|handler-case|handler-bind|formatter|etypecase|dotimes|dolist|do-symbols|do-external-symbols| +do-all-symbols|do\\*|do|destructuring-bind|defun|deftype|defstruct|defsetf|defpackage|defmethod|defmacro|define-symbol-macro|define-setf-expander| +define-condition|define-compiler-macro|defgeneric|defconstant|defclass|declaim|ctypecase|cond|call-method|assert|and) +(?=(\\s|\\(|\\)))`,name:"storage.type.function.m.nosideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\() +(?:with-output-to-string|with-open-stream|with-open-file|with-input-from-string|untrace|trace|remf|pushnew|push|psetq|pprint-pop|pop| +otherwise|loop-finish|incf|in-package|ecase|defvar|defparameter|define-modify-macro|define-method-combination|decf|check-type|ccase|case) +(?=(\\s|\\(|\\)))`,name:"storage.type.function.m.sideeffects.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\() +(?:setq) +(?=(\\s|\\(|\\)))`,name:"storage.type.function.specialform.commonlisp"}]},package:{patterns:[{captures:{2:{name:"support.type.package.commonlisp"},3:{name:"support.type.package.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +( +([A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +| +(\\#) +) +(?=\\:\\:|\\:)`}]},punctuation:{patterns:[{match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +('|\`) +(?=\\S)`,name:"variable.other.constant.singlequote.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(?:\\:[#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(?=(\\s|\\(|\\)))`,name:"entity.name.variable.commonlisp"},{captures:{1:{name:"variable.other.constant.sharpsign.commonlisp"},2:{name:"constant.numeric.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#)([0-9]*) +(?=\\()`},{captures:{1:{name:"variable.other.constant.sharpsign.commonlisp"},2:{name:"constant.numeric.commonlisp"},3:{name:"variable.other.constant.sharpsign.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#) +([0-9]*) +(\\*) +(?=0|1)`},{match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#\\*|\\#0\\*) +(?=(\\s|\\(|\\)))`,name:"variable.other.constant.sharpsign.commonlisp"},{captures:{1:{name:"variable.other.constant.sharpsign.commonlisp"},2:{name:"constant.numeric.commonlisp"},3:{name:"variable.other.constant.sharpsign.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#) +([0-9]+) +(a|A) +(?=.)`},{captures:{1:{name:"variable.other.constant.sharpsign.commonlisp"},2:{name:"constant.numeric.commonlisp"},3:{name:"variable.other.constant.sharpsign.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#) +([0-9]+) +(=) +(?=.)`},{captures:{1:{name:"variable.other.constant.sharpsign.commonlisp"},2:{name:"constant.numeric.commonlisp"},3:{name:"variable.other.constant.sharpsign.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#) +([0-9]+) +(\\#) +(?=.)`},{match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#(\\+|-)) +(?=\\S)`,name:"variable.other.constant.sharpsign.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#('|,|\\.|c|C|s|S|p|P)) +(?=\\S)`,name:"variable.other.constant.sharpsign.commonlisp"},{captures:{1:{name:"support.type.package.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\(|,@|,\\.|,) +(\\#) +(:) +(?=\\S)`},{captures:{2:{name:"variable.other.constant.backquote.commonlisp"},3:{name:"variable.other.constant.backquote.commonlisp"},4:{name:"variable.other.constant.backquote.commonlisp"},5:{name:"variable.other.constant.backquote.commonlisp"}},match:`(?xi) +(?<=^|\\s|\\() +( +(\`\\#) +| +(\`)(,@|,\\.|,)? +| +(,@|,\\.|,) +) +(?=\\S)`}]},"special-operator":{captures:{2:{name:"keyword.control.commonlisp"}},match:`(?xi) +(\\(\\s*) +(unwind-protect|throw|the|tagbody|symbol-macrolet|return-from|quote|progv|progn|multiple-value-prog1|multiple-value-call| +macrolet|locally|load-time-value|let\\*|let|labels|if|go|function|flet|eval-when|catch|block) +(?=(\\s|\\(|\\)))`},string:{begin:'(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.commonlisp"}},end:'(")',endCaptures:{1:{name:"punctuation.definition.string.end.commonlisp"}},name:"string.quoted.double.commonlisp",patterns:[{match:"\\\\.",name:"constant.character.escape.commonlisp"},{captures:{1:{name:"storage.type.function.formattedstring.commonlisp"},2:{name:"variable.other.constant.formattedstring.commonlisp"},8:{name:"storage.type.function.formattedstring.commonlisp"},10:{name:"storage.type.function.formattedstring.commonlisp"}},match:`(?xi) + +(~) +( +( +(([+-]?[0-9]+)|('.)|V|\\#)*? +(,)? +) +*?) +( +(:@|@:|:|@) +?) +(\\(|\\)|\\[|\\]|;|{|}|<|>|\\^)`},{captures:{1:{name:"entity.name.variable.commonlisp"},2:{name:"variable.other.constant.formattedstring.commonlisp"},8:{name:"entity.name.variable.commonlisp"},10:{name:"entity.name.variable.commonlisp"}},match:`(?xi) + +(~) +( +( +(([+-]?[0-9]+)|('.)|V|\\#)*? +(,)? +) +*?) +( +(:@|@:|:|@) +?) +(A|S|D|B|O|X|R|P|C|F|E|G|\\$|%|\\&|\\||~|T|\\*|\\?|_|W|I)`},{captures:{1:{name:"entity.name.variable.commonlisp"},2:{name:"variable.other.constant.formattedstring.commonlisp"},8:{name:"entity.name.variable.commonlisp"},10:{name:"entity.name.variable.commonlisp"},11:{name:"entity.name.variable.commonlisp"},12:{name:"entity.name.variable.commonlisp"}},match:`(?xi) + +(~) +( +( +(([+-]?[0-9]+)|('.)|V|\\#)*? +(,)? +) +*?) +( +(:@|@:|:|@) +?) +(\\/) +([#:A-Za-z0-9\\+\\-\\*\\/\\@\\$\\%\\^\\&\\_\\=\\<\\>\\~\\!\\?\\[\\]\\{\\}\\.]+?) +(\\/)`},{match:"(~\\n)",name:"variable.other.constant.formattedstring.commonlisp"}]},"style-guide":{patterns:[{captures:{3:{name:"source.commonlisp"}},match:`(?xi) +(?<=^'|\\s'|\\('|,@'|,\\.'|,') +(\\S+?) +(\\:\\:|\\:) +((\\+[^\\s\\+]+\\+)|(\\*[^\\s\\*]+\\*)) +(?=(\\s|\\(|\\)))`},{match:`(?xi) +(?<=\\S:|^|\\s|\\() +(\\+[^\\s\\+]+\\+) +(?=(\\s|\\(|\\)))`,name:"variable.other.constant.earmuffsplus.commonlisp"},{match:`(?xi) +(?<=\\S:|^|\\s|\\() +(\\*[^\\s\\*]+\\*) +(?=(\\s|\\(|\\)))`,name:"string.regexp.earmuffsasterisk.commonlisp"}]},symbol:{match:`(?xi) +(?<=^|\\s|\\() +(?:method-combination|declare) +(?=(\\s|\\(|\\)))`,name:"storage.type.function.symbol.commonlisp"},type:{match:`(?xi) +(?<=^|\\s|\\() +(?:unsigned-byte|standard-char|standard|single-float|simple-vector|simple-string|simple-bit-vector|simple-base-string|simple-array| +signed-byte|short-float|long-float|keyword|fixnum|extended-char|double-float|compiled-function|boolean|bignum|base-string|base-char) +(?=(\\s|\\(|\\)))`,name:"support.type.t.commonlisp"},variable:{patterns:[{match:`(?xi) +(?<=^|\\s|\\() +(?:\\*trace-output\\*|\\*terminal-io\\*|\\*standard-output\\*|\\*standard-input\\*|\\*readtable\\*|\\*read-suppress\\*|\\*read-eval\\*| +\\*read-default-float-format\\*|\\*read-base\\*|\\*random-state\\*|\\*query-io\\*|\\*print-right-margin\\*|\\*print-readably\\*|\\*print-radix\\*|\\*print-pretty\\*| +\\*print-pprint-dispatch\\*|\\*print-miser-width\\*|\\*print-lines\\*|\\*print-level\\*|\\*print-length\\*|\\*print-gensym\\*|\\*print-escape\\*|\\*print-circle\\*| +\\*print-case\\*|\\*print-base\\*|\\*print-array\\*|\\*package\\*|\\*modules\\*|\\*macroexpand-hook\\*|\\*load-verbose\\*|\\*load-truename\\*|\\*load-print\\*| +\\*load-pathname\\*|\\*gensym-counter\\*|\\*features\\*|\\*error-output\\*|\\*default-pathname-defaults\\*|\\*debugger-hook\\*|\\*debug-io\\*|\\*compile-verbose\\*| +\\*compile-print\\*|\\*compile-file-truename\\*|\\*compile-file-pathname\\*|\\*break-on-signals\\*) +(?=(\\s|\\(|\\)))`,name:"string.regexp.earmuffsasterisk.commonlisp"},{match:`(?xi) +(?<=^|\\s|\\() +(?:\\*\\*\\*|\\*\\*|\\+\\+\\+|\\+\\+|\\/\\/\\/|\\/\\/) +(?=(\\s|\\(|\\)))`,name:"variable.other.repl.commonlisp"}]}},scopeName:"source.commonlisp",aliases:["lisp"]});var n=[e];export{n as default}; diff --git a/assets/chunks/cpp.BnO_O5bK.js b/assets/chunks/cpp.BnO_O5bK.js new file mode 100644 index 000000000..acc35fbf8 --- /dev/null +++ b/assets/chunks/cpp.BnO_O5bK.js @@ -0,0 +1,186 @@ +import e from"./glsl.-GlVTnW0.js";import n from"./sql.DbK06e1c.js";import"./c.RCJZWN-0.js";const t=Object.freeze({displayName:"C++",name:"cpp-macro",patterns:[{include:"#ever_present_context"},{include:"#constructor_root"},{include:"#destructor_root"},{include:"#function_definition"},{include:"#operator_overload"},{include:"#using_namespace"},{include:"source.cpp#type_alias"},{include:"source.cpp#using_name"},{include:"source.cpp#namespace_alias"},{include:"#namespace_block"},{include:"#extern_block"},{include:"#typedef_class"},{include:"#typedef_struct"},{include:"#typedef_union"},{include:"source.cpp#misc_keywords"},{include:"source.cpp#standard_declares"},{include:"#class_block"},{include:"#struct_block"},{include:"#union_block"},{include:"#enum_block"},{include:"source.cpp#template_isolated_definition"},{include:"#template_definition"},{include:"source.cpp#template_explicit_instantiation"},{include:"source.cpp#access_control_keywords"},{include:"#block"},{include:"#static_assert"},{include:"#assembly"},{include:"#function_pointer"},{include:"#evaluation_context"}],repository:{alignas_attribute:{begin:"alignas\\(",beginCaptures:{0:{name:"punctuation.section.attribute.begin.cpp"}},end:`\\)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{name:"entity.name.function.call.initializer.cpp"},2:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},3:{},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{name:"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"}},contentName:"meta.parameter.initialization",end:`\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{name:"entity.name.function.call.initializer.cpp"},2:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},3:{},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{name:"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"}},contentName:"meta.parameter.initialization",end:`\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::))?(?:\\s+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{patterns:[{include:"source.cpp#scope_resolution_function_call_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.function.call.cpp"},6:{patterns:[{include:"source.cpp#inline_comment"}]},7:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},8:{name:"comment.block.cpp"},9:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},10:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},11:{},12:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},13:{name:"comment.block.cpp"},14:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},15:{name:"punctuation.section.arguments.begin.bracket.round.function.call.cpp"}},end:`\\)|(?=(?|\\*\\/))\\s*+(?:((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?=(?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))`},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:`\\}|%>|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?|(?=(?]|\\n)(?!\\()|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?|(?=(?]|\\n)(?!\\()|(?=(?|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))`}]},lambdas:{begin:'(?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))',beginCaptures:{1:{name:"punctuation.definition.capture.begin.lambda.cpp"},2:{name:"meta.lambda.capture.cpp",patterns:[{include:"source.cpp#the_this_keyword"},{captures:{1:{name:"variable.parameter.capture.cpp"},2:{patterns:[{include:"source.cpp#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"punctuation.separator.delimiter.comma.cpp"},7:{name:"keyword.operator.assignment.cpp"}},match:"((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))"},{include:"#evaluation_context"}]},3:{},4:{name:"punctuation.definition.capture.end.lambda.cpp"},5:{patterns:[{include:"source.cpp#inline_comment"}]},6:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},7:{name:"comment.block.cpp"},8:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},end:`(?<=[;}])|(?=(?",beginCaptures:{0:{name:"punctuation.definition.lambda.return-type.cpp"}},end:`(?=\\{)|(?=(?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:\\s+)?)*)(?:\\s+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:\\s+)?(\\()",beginCaptures:{1:{patterns:[{include:"source.cpp#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.access.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"},9:{patterns:[{captures:{1:{patterns:[{include:"source.cpp#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.property.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"}},match:"(?<=(?:\\.\\*|\\.|->|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{captures:{1:{patterns:[{include:"source.cpp#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.access.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"}},match:"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{include:"source.cpp#member_access"},{include:"#method_access"}]},10:{name:"entity.name.function.member.cpp"},11:{name:"punctuation.section.arguments.begin.bracket.round.function.member.cpp"}},end:`\\)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)(?:\\s+)?((?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(operator)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\->\\*)|(?:\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\|=)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:<<)|(?:>>)|(?:\\-\\-)|(?:<=)|(?:\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.cpp"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.cpp"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.cpp"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.cpp"},{match:"&|\\||\\^|~",name:"keyword.operator.bitwise.cpp"},{include:"source.cpp#assignment_operator"},{match:"%|\\*|\\/|-|\\+",name:"keyword.operator.arithmetic.cpp"},{include:"#ternary_operator"}]},parameter:{begin:"((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)",beginCaptures:{1:{patterns:[{include:"source.cpp#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},end:`(?:(?=\\))|(,))|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?=(?|(?=(?|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?|(?=(?]|\\n)(?!\\()|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",beginCaptures:{},end:`[\\s]*(?=;)|(?=(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.class.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.class.cpp"}},name:"meta.head.class.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.class.cpp"}},name:"meta.body.class.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.class.cpp",patterns:[{include:"$self"}]}]},class_declare:{captures:{1:{name:"storage.type.class.declare.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"entity.name.type.class.cpp"},5:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},6:{patterns:[{include:"#inline_comment"}]},7:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{name:"variable.other.object.declare.cpp"},13:{patterns:[{include:"#inline_comment"}]},14:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"((?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|%|"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?',name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.italic.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.bold.doxygen.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{name:"markup.inline.raw.string.cpp"}},match:"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)"},{match:"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{match:"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",name:"storage.type.class.doxygen.cpp"},{captures:{1:{name:"storage.type.class.doxygen.cpp"},2:{patterns:[{match:"in|out",name:"keyword.other.parameter.direction.$0.cpp"}]},3:{patterns:[{match:"(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.special.constructor.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"}},name:"meta.head.function.definition.special.constructor.cpp",patterns:[{include:"#ever_present_context"},{captures:{1:{name:"keyword.operator.assignment.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"keyword.other.default.function.cpp keyword.other.default.constructor.cpp"},7:{name:"keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"}},match:"(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))"},{include:"#functional_specifiers_pre_parameters"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.initializers.cpp"}},end:"(?=\\{)",endCaptures:{},patterns:[{begin:`((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{name:"entity.name.function.call.initializer.cpp"},2:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},3:{},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{name:"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"}},contentName:"meta.parameter.initialization",end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"}},patterns:[{include:"#evaluation_context"}]},{begin:"((?|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"}},name:"meta.body.function.definition.special.constructor.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.special.constructor.cpp",patterns:[{include:"$self"}]}]},constructor_root:{begin:`\\s*+((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.special.constructor.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"}},name:"meta.head.function.definition.special.constructor.cpp",patterns:[{include:"#ever_present_context"},{captures:{1:{name:"keyword.operator.assignment.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"keyword.other.default.function.cpp keyword.other.default.constructor.cpp"},7:{name:"keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"}},match:"(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))"},{include:"#functional_specifiers_pre_parameters"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.initializers.cpp"}},end:"(?=\\{)",endCaptures:{},patterns:[{begin:`((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{name:"entity.name.function.call.initializer.cpp"},2:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},3:{},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{name:"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"}},contentName:"meta.parameter.initialization",end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"}},patterns:[{include:"#evaluation_context"}]},{begin:"((?|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"}},name:"meta.body.function.definition.special.constructor.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.special.constructor.cpp",patterns:[{include:"$self"}]}]},control_flow_keywords:{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},3:{name:"keyword.control.$3.cpp"}},match:"((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{patterns:[{include:"#inline_comment"}]},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?]*(>?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/)))|((\\")[^\\"]*(\\"?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/))))|(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))(?:\\s+)?(;?)',name:"meta.preprocessor.import.cpp"},d9bc4796b0b_preprocessor_number_literal:{captures:{0:{patterns:[{begin:"(?=.)",beginCaptures:{},end:"$",endCaptures:{},patterns:[{captures:{1:{name:"keyword.other.unit.hexadecimal.cpp"},2:{name:"constant.numeric.hexadecimal.cpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.cpp"}]},3:{name:"punctuation.separator.constant.numeric.cpp"},4:{name:"constant.numeric.hexadecimal.cpp"},5:{name:"constant.numeric.hexadecimal.cpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.cpp"}]},6:{name:"punctuation.separator.constant.numeric.cpp"},7:{name:"keyword.other.unit.exponent.hexadecimal.cpp"},8:{name:"keyword.operator.plus.exponent.hexadecimal.cpp"},9:{name:"keyword.operator.minus.exponent.hexadecimal.cpp"},10:{name:"constant.numeric.exponent.hexadecimal.cpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.cpp"}]},11:{name:"keyword.other.suffix.literal.built-in.floating-point.cpp keyword.other.unit.suffix.floating-point.cpp"}},match:"(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.special.member.destructor.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"}},name:"meta.head.function.definition.special.member.destructor.cpp",patterns:[{include:"#ever_present_context"},{captures:{1:{name:"keyword.operator.assignment.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"},7:{name:"keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"}},match:"(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"}},contentName:"meta.function.definition.parameters.special.member.destructor",end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"}},patterns:[]},{include:"#qualifiers_and_specifiers_post_parameters"},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"}},name:"meta.body.function.definition.special.member.destructor.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.special.member.destructor.cpp",patterns:[{include:"$self"}]}]},destructor_root:{begin:`((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.special.member.destructor.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"}},name:"meta.head.function.definition.special.member.destructor.cpp",patterns:[{include:"#ever_present_context"},{captures:{1:{name:"keyword.operator.assignment.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"},7:{name:"keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"}},match:"(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"}},contentName:"meta.function.definition.parameters.special.member.destructor",end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"}},patterns:[]},{include:"#qualifiers_and_specifiers_post_parameters"},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"}},name:"meta.body.function.definition.special.member.destructor.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.special.member.destructor.cpp",patterns:[{include:"$self"}]}]},diagnostic:{begin:"(^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?:error|warning)))\\b(?:\\s+)?",beginCaptures:{1:{name:"keyword.control.directive.diagnostic.$7.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"punctuation.definition.directive.cpp"},7:{}},end:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::))?(?:\\s+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.enum.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.enum.cpp"}},name:"meta.head.enum.cpp",patterns:[{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.enum.cpp"}},name:"meta.body.enum.cpp",patterns:[{include:"#ever_present_context"},{include:"#enumerator_list"},{include:"#comments"},{include:"#comma"},{include:"#semicolon"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.enum.cpp",patterns:[{include:"$self"}]}]},enum_declare:{captures:{1:{name:"storage.type.enum.declare.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"entity.name.type.enum.cpp"},5:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},6:{patterns:[{include:"#inline_comment"}]},7:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{name:"variable.other.object.declare.cpp"},13:{patterns:[{include:"#inline_comment"}]},14:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.extern.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.extern.cpp"}},name:"meta.head.extern.cpp",patterns:[{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.extern.cpp"}},name:"meta.body.extern.cpp",patterns:[{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.extern.cpp",patterns:[{include:"$self"}]},{include:"$self"}]},function_body_context:{patterns:[{include:"#ever_present_context"},{include:"#using_namespace"},{include:"#type_alias"},{include:"#using_name"},{include:"#namespace_alias"},{include:"#typedef_class"},{include:"#typedef_struct"},{include:"#typedef_union"},{include:"#misc_keywords"},{include:"#standard_declares"},{include:"#class_block"},{include:"#struct_block"},{include:"#union_block"},{include:"#enum_block"},{include:"#access_control_keywords"},{include:"#block"},{include:"#static_assert"},{include:"#assembly"},{include:"#function_pointer"},{include:"#switch_statement"},{include:"#goto_statement"},{include:"#evaluation_context"},{include:"#label"}]},function_call:{begin:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()`,beginCaptures:{1:{patterns:[{include:"#scope_resolution_function_call_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.function.call.cpp"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},8:{name:"comment.block.cpp"},9:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},10:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},11:{},12:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},13:{name:"comment.block.cpp"},14:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},15:{name:"punctuation.section.arguments.begin.bracket.round.function.call.cpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.call.cpp"}},patterns:[{include:"#evaluation_context"}]},function_definition:{begin:`(?:(?:^|\\G|(?<=;|\\}))|(?<=>|\\*\\/))\\s*+(?:((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},14:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},15:{patterns:[{include:"#inline_comment"}]},16:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},17:{name:"comment.block.cpp"},18:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},19:{patterns:[{include:"#inline_comment"}]},20:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},21:{name:"comment.block.cpp"},22:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},23:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.cpp"}},name:"meta.head.function.definition.cpp",patterns:[{include:"#ever_present_context"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parameters.begin.bracket.round.cpp"}},contentName:"meta.function.definition.parameters",end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.cpp"}},patterns:[{include:"#ever_present_context"},{include:"#parameter_or_maybe_value"},{include:"#comma"},{include:"#evaluation_context"}]},{captures:{1:{name:"punctuation.definition.function.return-type.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},7:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},8:{patterns:[{include:"#inline_comment"}]},9:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},10:{name:"comment.block.cpp"},11:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},12:{patterns:[{include:"#inline_comment"}]},13:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},14:{name:"comment.block.cpp"},15:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},16:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))`},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.cpp"}},name:"meta.body.function.definition.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.cpp",patterns:[{include:"$self"}]}]},function_parameter_context:{patterns:[{include:"#ever_present_context"},{include:"#parameter"},{include:"#comma"}]},function_pointer:{begin:`(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{patterns:[{include:"#inline_comment"}]},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?]|\\n)(?!\\()",endCaptures:{1:{name:"punctuation.section.parameters.end.bracket.round.function.pointer.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},patterns:[{include:"#function_parameter_context"}]},function_pointer_parameter:{begin:`(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{patterns:[{include:"#inline_comment"}]},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?]|\\n)(?!\\()",endCaptures:{1:{name:"punctuation.section.parameters.end.bracket.round.function.pointer.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},patterns:[{include:"#function_parameter_context"}]},functional_specifiers_pre_parameters:{match:"(?]*(>?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/)))|((\\")[^\\"]*(\\"?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/))))|(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))',name:"meta.preprocessor.include.cpp"},inheritance_context:{patterns:[{include:"#ever_present_context"},{match:",",name:"punctuation.separator.delimiter.comma.inheritance.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},5:{patterns:[{include:"#inline_comment"}]},6:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},7:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))`}]},inline_builtin_storage_type:{captures:{1:{name:"storage.type.primitive.cpp storage.type.built-in.primitive.cpp"},2:{name:"storage.type.cpp storage.type.built-in.cpp"},3:{name:"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"},4:{name:"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"}},match:"\\s*+(?])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))',beginCaptures:{1:{name:"punctuation.definition.capture.begin.lambda.cpp"},2:{name:"meta.lambda.capture.cpp",patterns:[{include:"#the_this_keyword"},{captures:{1:{name:"variable.parameter.capture.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"punctuation.separator.delimiter.comma.cpp"},7:{name:"keyword.operator.assignment.cpp"}},match:"((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))"},{include:"#evaluation_context"}]},3:{},4:{name:"punctuation.definition.capture.end.lambda.cpp"},5:{patterns:[{include:"#inline_comment"}]},6:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},7:{name:"comment.block.cpp"},8:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},end:"(?<=[;}])",endCaptures:{},patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.lambda.cpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.lambda.cpp"}},name:"meta.function.definition.parameters.lambda.cpp",patterns:[{include:"#function_parameter_context"}]},{match:"(?",beginCaptures:{0:{name:"punctuation.definition.lambda.return-type.cpp"}},end:"(?=\\{)",endCaptures:{},patterns:[{include:"#comments"},{match:"\\S+",name:"storage.type.return-type.lambda.cpp"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.lambda.cpp"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.lambda.cpp"}},name:"meta.function.definition.body.lambda.cpp",patterns:[{include:"$self"}]}]},language_constants:{match:"(?|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.access.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"}},match:"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{include:"#member_access"},{include:"#method_access"}]},8:{name:"variable.other.property.cpp"}},match:"(?:((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:\\s+)?)*)(?:\\s+)?(\\b(?!uint_least32_t[^\\w]|uint_least16_t[^\\w]|uint_least64_t[^\\w]|int_least32_t[^\\w]|int_least64_t[^\\w]|uint_fast32_t[^\\w]|uint_fast64_t[^\\w]|uint_least8_t[^\\w]|uint_fast16_t[^\\w]|int_least16_t[^\\w]|int_fast16_t[^\\w]|int_least8_t[^\\w]|uint_fast8_t[^\\w]|int_fast64_t[^\\w]|int_fast32_t[^\\w]|int_fast8_t[^\\w]|suseconds_t[^\\w]|useconds_t[^\\w]|in_addr_t[^\\w]|uintmax_t[^\\w]|uintmax_t[^\\w]|uintmax_t[^\\w]|in_port_t[^\\w]|uintptr_t[^\\w]|blksize_t[^\\w]|uint32_t[^\\w]|uint64_t[^\\w]|u_quad_t[^\\w]|intmax_t[^\\w]|intmax_t[^\\w]|unsigned[^\\w]|blkcnt_t[^\\w]|uint16_t[^\\w]|intptr_t[^\\w]|swblk_t[^\\w]|wchar_t[^\\w]|u_short[^\\w]|qaddr_t[^\\w]|caddr_t[^\\w]|daddr_t[^\\w]|fixpt_t[^\\w]|nlink_t[^\\w]|segsz_t[^\\w]|clock_t[^\\w]|ssize_t[^\\w]|int16_t[^\\w]|int32_t[^\\w]|int64_t[^\\w]|uint8_t[^\\w]|int8_t[^\\w]|mode_t[^\\w]|quad_t[^\\w]|ushort[^\\w]|u_long[^\\w]|u_char[^\\w]|double[^\\w]|signed[^\\w]|time_t[^\\w]|size_t[^\\w]|key_t[^\\w]|div_t[^\\w]|ino_t[^\\w]|uid_t[^\\w]|gid_t[^\\w]|off_t[^\\w]|pid_t[^\\w]|float[^\\w]|dev_t[^\\w]|u_int[^\\w]|short[^\\w]|bool[^\\w]|id_t[^\\w]|uint[^\\w]|long[^\\w]|char[^\\w]|void[^\\w]|auto[^\\w]|id_t[^\\w]|int[^\\w])(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?!\\())"},memory_operators:{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},3:{name:"keyword.operator.wordlike.cpp"},4:{name:"keyword.operator.delete.array.cpp"},5:{name:"keyword.operator.delete.array.bracket.cpp"},6:{name:"keyword.operator.delete.cpp"},7:{name:"keyword.operator.new.cpp"}},match:"((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(delete)(?:\\s+)?(\\[\\])|(delete))|(new))(?!\\w))"},method_access:{begin:"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:\\s+)?)*)(?:\\s+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:\\s+)?(\\()",beginCaptures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.access.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"},9:{patterns:[{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.property.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"}},match:"(?<=(?:\\.\\*|\\.|->|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"variable.language.this.cpp"},6:{name:"variable.other.object.access.cpp"},7:{name:"punctuation.separator.dot-access.cpp"},8:{name:"punctuation.separator.pointer-access.cpp"}},match:"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))"},{include:"#member_access"},{include:"#method_access"}]},10:{name:"entity.name.function.member.cpp"},11:{name:"punctuation.section.arguments.begin.bracket.round.function.member.cpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.member.cpp"}},patterns:[{include:"#evaluation_context"}]},misc_keywords:{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},3:{name:"keyword.other.$3.cpp"}},match:"((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)(?:\\s+)?((?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.block.namespace.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.namespace.cpp"}},name:"meta.head.namespace.cpp",patterns:[{include:"#ever_present_context"},{include:"#attributes_context"},{captures:{1:{patterns:[{include:"#scope_resolution_namespace_block_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.namespace.cpp"},6:{name:"punctuation.separator.scope-resolution.namespace.block.cpp"},7:{name:"storage.modifier.inline.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)(?:\\s+)?((?|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.namespace.cpp"}},name:"meta.body.namespace.cpp",patterns:[{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.namespace.cpp",patterns:[{include:"$self"}]}]},noexcept_operator:{begin:"((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(operator)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\->\\*)|(?:\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\|=)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:<<)|(?:>>)|(?:\\-\\-)|(?:<=)|(?:\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},6:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},7:{patterns:[{include:"#inline_comment"}]},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{patterns:[{include:"#inline_comment"}]},12:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},13:{name:"comment.block.cpp"},14:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},15:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.function.definition.special.operator-overload.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"}},name:"meta.head.function.definition.special.operator-overload.cpp",patterns:[{include:"#ever_present_context"},{include:"#template_call_range"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"}},contentName:"meta.function.definition.parameters.special.operator-overload",end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"}},patterns:[{include:"#function_parameter_context"},{include:"#evaluation_context"}]},{include:"#qualifiers_and_specifiers_post_parameters"},{captures:{1:{name:"keyword.operator.assignment.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{name:"keyword.other.default.function.cpp"},7:{name:"keyword.other.delete.function.cpp"}},match:"(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))"},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"}},name:"meta.body.function.definition.special.operator-overload.cpp",patterns:[{include:"#function_body_context"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.function.definition.special.operator-overload.cpp",patterns:[{include:"$self"}]}]},operators:{patterns:[{begin:"((?>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.cpp"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.cpp"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.cpp"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.cpp"},{match:"&|\\||\\^|~",name:"keyword.operator.bitwise.cpp"},{include:"#assignment_operator"},{match:"%|\\*|\\/|-|\\+",name:"keyword.operator.arithmetic.cpp"},{include:"#ternary_operator"}]},over_qualified_types:{patterns:[{captures:{1:{name:"storage.type.struct.parameter.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"entity.name.type.struct.parameter.cpp"},5:{patterns:[{include:"#inline_comment"}]},6:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},7:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{patterns:[{include:"#inline_comment"}]},13:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},14:{name:"variable.other.object.declare.cpp"},15:{patterns:[{include:"#inline_comment"}]},16:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},17:{patterns:[{include:"#inline_comment"}]},18:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},19:{patterns:[{include:"#inline_comment"}]},20:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"(\\bstruct)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},1:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{patterns:[{include:"#inline_comment"}]},5:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},6:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.])`,name:"meta.qualified_type.cpp"},qualifiers_and_specifiers_post_parameters:{captures:{1:{patterns:[{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},5:{name:"storage.modifier.specifier.functional.post-parameters.$5.cpp"}},match:"((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_function_call:{captures:{0:{patterns:[{include:"#scope_resolution_function_call_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_function_call_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_function_call_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.function.call.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_function_definition:{captures:{0:{patterns:[{include:"#scope_resolution_function_definition_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_function_definition_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_function_definition_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.function.definition.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_function_definition_operator_overload:{captures:{0:{patterns:[{include:"#scope_resolution_function_definition_operator_overload_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_function_definition_operator_overload_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_function_definition_operator_overload_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.function.definition.operator-overload.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_namespace_alias:{captures:{0:{patterns:[{include:"#scope_resolution_namespace_alias_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_namespace_alias_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_namespace_alias_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.namespace.alias.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_namespace_block:{captures:{0:{patterns:[{include:"#scope_resolution_namespace_block_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_namespace_block_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_namespace_block_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.namespace.block.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_namespace_using:{captures:{0:{patterns:[{include:"#scope_resolution_namespace_using_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_namespace_using_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_namespace_using_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.namespace.using.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_parameter:{captures:{0:{patterns:[{include:"#scope_resolution_parameter_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_parameter_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_parameter_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.parameter.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_template_call:{captures:{0:{patterns:[{include:"#scope_resolution_template_call_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_template_call_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_template_call_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.template.call.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},scope_resolution_template_definition:{captures:{0:{patterns:[{include:"#scope_resolution_template_definition_inner_generated"}]},1:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"},2:{patterns:[{include:"#template_call_range"}]}},match:`(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+`},scope_resolution_template_definition_inner_generated:{captures:{1:{patterns:[{include:"#scope_resolution_template_definition_inner_generated"}]},2:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"},3:{patterns:[{include:"#template_call_range"}]},4:{},5:{name:"entity.name.scope-resolution.template.definition.cpp"},6:{name:"meta.template.call.cpp",patterns:[{include:"#template_call_range"}]},7:{},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"}},match:`((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?(::)`},semicolon:{match:";",name:"punctuation.terminator.statement.cpp"},simple_type:{captures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},5:{patterns:[{include:"#inline_comment"}]},6:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},7:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?`},single_line_macro:{captures:{0:{patterns:[{include:"#macro"},{include:"#comments"}]},1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))#define.*(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.struct.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.struct.cpp"}},name:"meta.head.struct.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.struct.cpp"}},name:"meta.body.struct.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.struct.cpp",patterns:[{include:"$self"}]}]},struct_declare:{captures:{1:{name:"storage.type.struct.declare.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"entity.name.type.struct.cpp"},5:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},6:{patterns:[{include:"#inline_comment"}]},7:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{name:"variable.other.object.declare.cpp"},13:{patterns:[{include:"#inline_comment"}]},14:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"((?|\\?\\?>)|(?=[;>\\[\\]=]))",endCaptures:{},name:"meta.block.switch.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.switch.cpp"}},name:"meta.head.switch.cpp",patterns:[{include:"#switch_conditional_parentheses"},{include:"$self"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.switch.cpp"}},name:"meta.body.switch.cpp",patterns:[{include:"#default_statement"},{include:"#case_statement"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.switch.cpp",patterns:[{include:"$self"}]}]},template_argument_defaulted:{captures:{1:{name:"storage.type.template.argument.$1.cpp"},2:{name:"entity.name.type.template.cpp"},3:{name:"keyword.operator.assignment.cpp"}},match:"(?<=<|,)(?:\\s+)?((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s+((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(\\=)"},template_call_context:{patterns:[{include:"#ever_present_context"},{include:"#template_call_range"},{include:"#storage_types"},{include:"#language_constants"},{include:"#scope_resolution_template_call_inner_generated"},{include:"#operators"},{include:"#number_literal"},{include:"#string_context"},{include:"#comma_in_template_argument"},{include:"#qualified_type"}]},template_call_innards:{captures:{0:{patterns:[{include:"#template_call_range"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:`((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+`,name:"meta.template.call.cpp"},template_call_range:{begin:"<",beginCaptures:{0:{name:"punctuation.section.angle-brackets.begin.template.call.cpp"}},end:">",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},template_definition:{begin:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.definition.cpp"}},name:"meta.template.definition.cpp",patterns:[{begin:"(?<=\\w)(?:\\s+)?<",beginCaptures:{0:{name:"punctuation.section.angle-brackets.begin.template.call.cpp"}},end:">",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},patterns:[{include:"#template_call_context"}]},{include:"#template_definition_context"}]},template_definition_argument:{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},3:{name:"storage.type.template.argument.$3.cpp"},4:{patterns:[{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"storage.type.template.argument.$0.cpp"}]},5:{name:"entity.name.type.template.cpp"},6:{name:"storage.type.template.argument.$6.cpp"},7:{name:"punctuation.vararg-ellipses.template.definition.cpp"},8:{name:"entity.name.type.template.cpp"},9:{name:"storage.type.template.cpp"},10:{name:"punctuation.section.angle-brackets.begin.template.definition.cpp"},11:{name:"storage.type.template.argument.$11.cpp"},12:{name:"entity.name.type.template.cpp"},13:{name:"punctuation.section.angle-brackets.end.template.definition.cpp"},14:{name:"storage.type.template.argument.$14.cpp"},15:{name:"entity.name.type.template.cpp"},16:{name:"keyword.operator.assignment.cpp"},17:{name:"punctuation.separator.delimiter.comma.template.argument.cpp"}},match:"((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s+)+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:\\s+)?(\\.\\.\\.)(?:\\s+)?((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))|(?)(?:\\s+)?(class|typename)(?:\\s+((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?)(?:\\s+)?(?:(\\=)(?:\\s+)?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?(?:(,)|(?=>|$))"},template_definition_context:{patterns:[{include:"#scope_resolution_template_definition_inner_generated"},{include:"#template_definition_argument"},{include:"#template_argument_defaulted"},{include:"#template_call_innards"},{include:"#evaluation_context"}]},template_explicit_instantiation:{captures:{1:{name:"storage.modifier.specifier.extern.cpp"},2:{name:"storage.type.template.cpp"}},match:"(?)(?:\\s+)?$"},ternary_operator:{applyEndPatternLast:1,begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.cpp"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.cpp"}},patterns:[{include:"#ever_present_context"},{include:"#string_context"},{include:"#number_literal"},{include:"#method_access"},{include:"#member_access"},{include:"#predefined_macros"},{include:"#operators"},{include:"#memory_operators"},{include:"#wordlike_operators"},{include:"#type_casting_operators"},{include:"#control_flow_keywords"},{include:"#exception_keywords"},{include:"#the_this_keyword"},{include:"#language_constants"},{include:"#builtin_storage_type_initilizer"},{include:"#qualifiers_and_specifiers_post_parameters"},{include:"#functional_specifiers_pre_parameters"},{include:"#storage_types"},{include:"#lambdas"},{include:"#attributes_context"},{include:"#parentheses"},{include:"#function_call"},{include:"#scope_resolution_inner_generated"},{include:"#square_brackets"},{include:"#semicolon"},{include:"#comma"}]},the_this_keyword:{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},3:{name:"variable.language.this.cpp"}},match:"((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},9:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{patterns:[{include:"#inline_comment"}]},13:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},14:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))|(.*(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.class.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.class.cpp"}},name:"meta.head.class.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.class.cpp"}},name:"meta.body.class.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.class.cpp",patterns:[{captures:{1:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},8:{name:"comment.block.cpp"},9:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},10:{patterns:[{include:"#inline_comment"}]},11:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},12:{name:"comment.block.cpp"},13:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},14:{name:"entity.name.type.alias.cpp"}},match:"(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()`,beginCaptures:{1:{name:"meta.qualified_type.cpp",patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{match:"(?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},2:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},3:{patterns:[{include:"#inline_comment"}]},4:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},5:{name:"comment.block.cpp"},6:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},7:{patterns:[{include:"#inline_comment"}]},8:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},9:{name:"comment.block.cpp"},10:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},11:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?]|\\n)(?!\\()",endCaptures:{1:{name:"punctuation.section.parameters.end.bracket.round.function.pointer.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},patterns:[{include:"#function_parameter_context"}]}]},typedef_struct:{begin:"((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.struct.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.struct.cpp"}},name:"meta.head.struct.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.struct.cpp"}},name:"meta.body.struct.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.struct.cpp",patterns:[{captures:{1:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},8:{name:"comment.block.cpp"},9:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},10:{patterns:[{include:"#inline_comment"}]},11:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},12:{name:"comment.block.cpp"},13:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},14:{name:"entity.name.type.alias.cpp"}},match:"(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.union.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.union.cpp"}},name:"meta.head.union.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.union.cpp"}},name:"meta.body.union.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.union.cpp",patterns:[{captures:{1:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},2:{patterns:[{include:"#inline_comment"}]},3:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},4:{name:"comment.block.cpp"},5:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},6:{patterns:[{include:"#inline_comment"}]},7:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},8:{name:"comment.block.cpp"},9:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},10:{patterns:[{include:"#inline_comment"}]},11:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},12:{name:"comment.block.cpp"},13:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"},14:{name:"entity.name.type.alias.cpp"}},match:"(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?",endCaptures:{0:{name:"punctuation.section.angle-brackets.end.template.call.cpp"}},name:"meta.template.call.cpp",patterns:[{include:"#template_call_context"}]},{match:"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",name:"entity.name.type.cpp"}]},7:{patterns:[{include:"#attributes_context"},{include:"#number_literal"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{patterns:[{match:"::",name:"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"},{match:"(?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))`},undef:{captures:{1:{name:"keyword.control.directive.undef.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"punctuation.definition.directive.cpp"},5:{patterns:[{include:"#inline_comment"}]},6:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},7:{name:"entity.name.function.preprocessor.cpp"}},match:"(^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?undef\\b)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",endCaptures:{1:{name:"punctuation.terminator.statement.cpp"},2:{name:"punctuation.terminator.statement.cpp"}},name:"meta.block.union.cpp",patterns:[{begin:"\\G ?",beginCaptures:{},end:"(?:\\{|<%|\\?\\?<|(?=;))",endCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.union.cpp"}},name:"meta.head.union.cpp",patterns:[{include:"#ever_present_context"},{include:"#inheritance_context"},{include:"#template_call_range"}]},{begin:"(?<=\\{|<%|\\?\\?<)",beginCaptures:{},end:"\\}|%>|\\?\\?>",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.union.cpp"}},name:"meta.body.union.cpp",patterns:[{include:"#function_pointer"},{include:"#static_assert"},{include:"#constructor_inline"},{include:"#destructor_inline"},{include:"$self"}]},{begin:"(?<=\\}|%>|\\?\\?>)[\\s]*",beginCaptures:{},end:"[\\s]*(?=;)",endCaptures:{},name:"meta.tail.union.cpp",patterns:[{include:"$self"}]}]},union_declare:{captures:{1:{name:"storage.type.union.declare.cpp"},2:{patterns:[{include:"#inline_comment"}]},3:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},4:{name:"entity.name.type.union.cpp"},5:{patterns:[{match:"\\*",name:"storage.modifier.pointer.cpp"},{captures:{1:{patterns:[{include:"#inline_comment"}]},2:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},3:{name:"comment.block.cpp"},4:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",name:"invalid.illegal.reference-type.cpp"},{match:"\\&",name:"storage.modifier.reference.cpp"}]},6:{patterns:[{include:"#inline_comment"}]},7:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},8:{patterns:[{include:"#inline_comment"}]},9:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},10:{patterns:[{include:"#inline_comment"}]},11:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]},12:{name:"variable.other.object.declare.cpp"},13:{patterns:[{include:"#inline_comment"}]},14:{patterns:[{captures:{1:{name:"comment.block.cpp punctuation.definition.comment.begin.cpp"},2:{name:"comment.block.cpp"},3:{name:"comment.block.cpp punctuation.definition.comment.end.cpp"}},match:"\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+"}]}},match:"((?|(?:(?:[^'"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)?((?~]\\s*+(if|unless)))\\b(?![^;]*+;.*?\\bend\\b)|("(\\\\.|[^"])*+"|'(\\\\.|[^'])*+'|[^#"'])*(\\{(?![^}]*+\\})|\\[(?![^\\]]*+\\]))).*$|[#].*?\\(fold\\)\\s*+$`,foldingStopMarker:"(?x)((^|;)\\s*+end\\s*+([#].*)?$|(^|;)\\s*+end\\..*$|^\\s*+[}\\]] ,?\\s*+([#].*)?$|[#].*?\\(end\\)\\s*+$|^=end)",name:"crystal",patterns:[{captures:{1:{name:"keyword.control.class.crystal"},2:{name:"keyword.control.class.crystal"},3:{name:"entity.name.type.class.crystal"},5:{name:"punctuation.separator.crystal"},6:{name:"support.class.other.type-param.crystal"},7:{name:"entity.other.inherited-class.crystal"},8:{name:"punctuation.separator.crystal"},9:{name:"punctuation.separator.crystal"},10:{name:"support.class.other.type-param.crystal"},11:{name:"punctuation.definition.variable.crystal"}},match:"(?x)^\\s*(abstract)?\\s*(class|struct|union|annotation|enum)\\s+(([.A-Z_:\\x{80}-\\x{10FFFF}][.\\w:\\x{80}-\\x{10FFFF}]*(\\(([,\\s.a-zA-Z0-9_:\\x{80}-\\x{10FFFF}]+)\\))?(\\s*(<)\\s*[.:A-Z\\x{80}-\\x{10FFFF}][.:\\w\\x{80}-\\x{10FFFF}]*(\\(([.a-zA-Z0-9_:]+\\s,)\\))?)?)|((<<)\\s*[.A-Z0-9_:\\x{80}-\\x{10FFFF}]+))",name:"meta.class.crystal"},{captures:{1:{name:"keyword.control.module.crystal"},2:{name:"entity.name.type.module.crystal"},3:{name:"entity.other.inherited-class.module.first.crystal"},4:{name:"punctuation.separator.inheritance.crystal"},5:{name:"entity.other.inherited-class.module.second.crystal"},6:{name:"punctuation.separator.inheritance.crystal"},7:{name:"entity.other.inherited-class.module.third.crystal"},8:{name:"punctuation.separator.inheritance.crystal"}},match:"^\\s*(module)\\s+(([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))?([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))?([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))*[A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*)",name:"meta.module.crystal"},{captures:{1:{name:"keyword.control.lib.crystal"},2:{name:"entity.name.type.lib.crystal"},3:{name:"entity.other.inherited-class.lib.first.crystal"},4:{name:"punctuation.separator.inheritance.crystal"},5:{name:"entity.other.inherited-class.lib.second.crystal"},6:{name:"punctuation.separator.inheritance.crystal"},7:{name:"entity.other.inherited-class.lib.third.crystal"},8:{name:"punctuation.separator.inheritance.crystal"}},match:"^\\s*(lib)\\s+(([A-Z]\\w*(::))?([A-Z]\\w*(::))?([A-Z]\\w*(::))*[A-Z]\\w*)",name:"meta.lib.crystal"},{captures:{1:{name:"keyword.control.lib.type.crystal"},2:{name:"entity.name.lib.type.crystal"},3:{name:"keyword.control.lib.crystal"},4:{name:"entity.name.lib.type.value.crystal"}},comment:"type in lib",match:"(?|_|\\*|\\$|\\?|:|\"|-[0adFiIlpv])",name:"variable.other.readwrite.global.pre-defined.crystal"},{begin:"\\b(ENV)\\[",beginCaptures:{1:{name:"variable.other.constant.crystal"}},end:"\\]",name:"meta.environment-variable.crystal",patterns:[{include:"$self"}]},{comment:"Literals name of Crystal",match:"\\b[A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*",name:"support.class.crystal"},{comment:"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html",match:"(?[a-zA-Z_]\\w*(?>\\.|::))? +(?> +[a-zA-Z_]\\w*(?>[?!]|=(?!>))? +| +\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&\`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=? +) +) +\\s*(\\()`,beginCaptures:{1:{name:"keyword.control.def.crystal"},2:{name:"entity.name.function.crystal"},3:{name:"punctuation.definition.parameters.crystal"}},comment:"The method pattern comes from the symbol pattern. See there for an explanation.",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.crystal"}},name:"meta.function.method.with-arguments.crystal",patterns:[{begin:"(?![\\s,)])",end:"(?=,|\\)\\s*)",patterns:[{captures:{1:{name:"storage.type.variable.crystal"},2:{name:"constant.other.symbol.hashkey.parameter.function.crystal"},3:{name:"punctuation.definition.constant.hashkey.crystal"},4:{name:"variable.parameter.function.crystal"}},match:"\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"},{include:"$self"}]}]},{captures:{1:{name:"keyword.control.def.crystal"},3:{name:"entity.name.function.crystal"}},comment:" the optional name is just to catch the def also without a method-name",match:`(?x) +(?=def\\b) +(?<=^|\\s)(def)\\b +( +\\s+ +( +(?>[a-zA-Z_]\\w*(?>\\.|::))? +(?> +[a-zA-Z_]\\w*(?>[?!]|=(?!>))? +| +\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&\`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=? +) +) +)?`,name:"meta.function.method.without-arguments.crystal"},{comment:"Floating point literal (fraction)",match:"\\b[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\b",name:"constant.numeric.float.crystal"},{comment:"Floating point literal (exponent)",match:"\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\b",name:"constant.numeric.float.crystal"},{comment:"Floating point literal (typed)",match:"\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\b",name:"constant.numeric.float.crystal"},{comment:"Integer literal (decimal)",match:"\\b(?!0[0-9])[0-9][0-9_]*([ui](8|16|32|64|128))?\\b",name:"constant.numeric.integer.decimal.crystal"},{comment:"Integer literal (hexadecimal)",match:"\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\b",name:"constant.numeric.integer.hexadecimal.crystal"},{comment:"Integer literal (octal)",match:"\\b0o[0-7_]+([ui](8|16|32|64|128))?\\b",name:"constant.numeric.integer.octal.crystal"},{comment:"Integer literal (binary)",match:"\\b0b[01_]+([ui](8|16|32|64|128))?\\b",name:"constant.numeric.integer.binary.crystal"},{begin:":'",beginCaptures:{0:{name:"punctuation.definition.symbol.begin.crystal"}},comment:"symbol literal with '' delimiter",end:"'",endCaptures:{0:{name:"punctuation.definition.symbol.end.crystal"}},name:"constant.other.symbol.crystal",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.crystal"}]},{begin:':"',beginCaptures:{0:{name:"punctuation.section.symbol.begin.crystal"}},comment:'symbol literal with "" delimiter',end:'"',endCaptures:{0:{name:"punctuation.section.symbol.end.crystal"}},name:"constant.other.symbol.interpolated.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{comment:"Needs higher precedence than regular expressions.",match:"(?",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.interpolated.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_ltgt_i"}]},{begin:"%x\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"execute string (allow for interpolation)",end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.interpolated.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_parens_i"}]},{begin:"%x\\|",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"execute string (allow for interpolation)",end:"\\|",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.interpolated.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?x) (?: ^| (?<=[=>~(?:\\[,|&;] | [\\s;]if\\s| [\\s;]elsif\\s | [\\s;]while\\s | [\\s;]unless\\s | [\\s;]when\\s | [\\s;]assert_match\\s | [\\s;]or\\s| [\\s;]and\\s | [\\s;]not\\s | [\\s.]index\\s| [\\s.]scan\\s | [\\s.]sub\\s | [\\s.]sub!\\s | [\\s.]gsub\\s | [\\s.]gsub!\\s | [\\s.]match\\s ) | (?<=^when\\s| ^if\\s | ^elsif\\s | ^while\\s | ^unless\\s ) ) \\s*((/))(?![*+{}?])",captures:{1:{name:"string.regexp.classic.crystal"},2:{name:"punctuation.definition.string.crystal"}},comment:"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp",contentName:"string.regexp.classic.crystal",end:"((/[imsx]*))",patterns:[{include:"#regex_sub"}]},{begin:"%r\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"regular expressions (literal)",end:"\\}[imsx]*",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.regexp.mod-r.crystal",patterns:[{include:"#regex_sub"},{include:"#nest_curly_r"}]},{begin:"%r\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"regular expressions (literal)",end:"\\][imsx]*",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.regexp.mod-r.crystal",patterns:[{include:"#regex_sub"},{include:"#nest_brackets_r"}]},{begin:"%r\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"regular expressions (literal)",end:"\\)[imsx]*",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.regexp.mod-r.crystal",patterns:[{include:"#regex_sub"},{include:"#nest_parens_r"}]},{begin:"%r\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"regular expressions (literal)",end:"\\>[imsx]*",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.regexp.mod-r.crystal",patterns:[{include:"#regex_sub"},{include:"#nest_ltgt_r"}]},{begin:"%r\\|",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"regular expressions (literal)",end:"\\|[imsx]*",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.regexp.mod-r.crystal",patterns:[{include:"#regex_sub"}]},{begin:"%Q?\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal capable of interpolation ()",end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.upper.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_parens_i"}]},{begin:"%Q?\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal capable of interpolation []",end:"\\]",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.upper.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_brackets_i"}]},{begin:"%Q?\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal capable of interpolation <>",end:"\\>",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.upper.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_ltgt_i"}]},{begin:"%Q?\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal capable of interpolation -- {}",end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.double.crystal.mod",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_curly_i"}]},{begin:"%Q\\|",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal capable of interpolation -- ||",end:"\\|",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.upper.crystal",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"%[qwi]\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal incapable of interpolation -- ()",end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.lower.crystal",patterns:[{match:"\\\\\\)|\\\\\\\\",name:"constant.character.escape.crystal"},{include:"#nest_parens"}]},{begin:"%[qwi]\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal incapable of interpolation -- <>",end:"\\>",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.lower.crystal",patterns:[{match:"\\\\\\>|\\\\\\\\",name:"constant.character.escape.crystal"},{include:"#nest_ltgt"}]},{begin:"%[qwi]\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal incapable of interpolation -- []",end:"\\]",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.lower.crystal",patterns:[{match:"\\\\\\]|\\\\\\\\",name:"constant.character.escape.crystal"},{include:"#nest_brackets"}]},{begin:"%[qwi]\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal incapable of interpolation -- {}",end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.lower.crystal",patterns:[{match:"\\\\\\}|\\\\\\\\",name:"constant.character.escape.crystal"},{include:"#nest_curly"}]},{begin:"%[qwi]\\|",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"literal incapable of interpolation -- ||",end:"\\|",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.quoted.other.literal.lower.crystal",patterns:[{comment:"Cant be named because its not necessarily an escape.",match:"\\\\."}]},{captures:{1:{name:"punctuation.definition.constant.crystal"}},comment:"symbols",match:"(?[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\][?=]?|@@?[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*)",name:"constant.other.symbol.crystal"},{captures:{1:{name:"punctuation.definition.constant.crystal"}},comment:"symbols",match:"(?>[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(?>[?!])?)(:)(?!:)",name:"constant.other.symbol.crystal.19syntax"},{captures:{1:{name:"punctuation.definition.comment.crystal"}},match:"(?:^[ \\t]+)?(#).*$\\n?",name:"comment.line.number-sign.crystal"},{match:"(?<<-('?)((?:[_\\w]+_|)HTML)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded HTML and indented terminator",contentName:"text.html.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.html.crystal",patterns:[{include:"#heredoc"},{include:"text.html.basic"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)SQL)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded SQL and indented terminator",contentName:"text.sql.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.sql.crystal",patterns:[{include:"#heredoc"},{include:"source.sql"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)CSS)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded css and intented terminator",contentName:"text.css.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.css.crystal",patterns:[{include:"#heredoc"},{include:"source.css"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)CPP)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded c++ and intented terminator",contentName:"text.c++.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.cplusplus.crystal",patterns:[{include:"#heredoc"},{include:"source.c++"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)C)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded c++ and intented terminator",contentName:"text.c.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.c.crystal",patterns:[{include:"#heredoc"},{include:"source.c"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded javascript and intented terminator",contentName:"text.js.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.js.crystal",patterns:[{include:"#heredoc"},{include:"source.js"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)JQUERY)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded javascript and intented terminator",contentName:"text.js.jquery.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.js.jquery.crystal",patterns:[{include:"#heredoc"},{include:"source.js.jquery"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded shell and intented terminator",contentName:"text.shell.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.shell.crystal",patterns:[{include:"#heredoc"},{include:"source.shell"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-('?)((?:[_\\w]+_|)CRYSTAL)\\b\\1)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with embedded crystal and intented terminator",contentName:"text.crystal.embedded.crystal",end:"\\s*\\2\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.embedded.crystal.crystal",patterns:[{include:"#heredoc"},{include:"source.crystal"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?><<-'(\\w+)')",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with indented terminator",end:"\\s*\\1\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.heredoc.crystal",patterns:[{include:"#heredoc"},{include:"#escaped_char"}]},{begin:"(?><<-(\\w+)\\b)",beginCaptures:{0:{name:"punctuation.definition.string.begin.crystal"}},comment:"heredoc with indented terminator",end:"\\s*\\1\\b",endCaptures:{0:{name:"punctuation.definition.string.end.crystal"}},name:"string.unquoted.heredoc.crystal",patterns:[{include:"#heredoc"},{include:"#interpolated_crystal"},{include:"#escaped_char"}]},{begin:"(?<={|{\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\s|^do\\s)(\\|)",captures:{1:{name:"punctuation.separator.variable.crystal"}},end:"(?",name:"punctuation.separator.key-value"},{match:"->",name:"support.function.kernel.crystal"},{match:"<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<",name:"keyword.operator.assignment.augmented.crystal"},{match:"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?",name:"keyword.operator.comparison.crystal"},{match:"(?<=^|[ \\t])!|&&|\\|\\||\\^",name:"keyword.operator.logical.crystal"},{match:"(\\{\\%|\\%\\}|\\{\\{|\\}\\})",name:"keyword.operator.macro.crystal"},{captures:{1:{name:"punctuation.separator.method.crystal"}},comment:"Safe navigation operator",match:"(&\\.)\\s*(?![A-Z])"},{match:"(%|&|\\*\\*|\\*|\\+|\\-|/)",name:"keyword.operator.arithmetic.crystal"},{match:"=",name:"keyword.operator.assignment.crystal"},{match:"\\||~|>>",name:"keyword.operator.other.crystal"},{match:":",name:"punctuation.separator.other.crystal"},{match:"\\;",name:"punctuation.separator.statement.crystal"},{match:",",name:"punctuation.separator.object.crystal"},{match:"\\.|::",name:"punctuation.separator.method.crystal"},{match:"\\{|\\}",name:"punctuation.section.scope.crystal"},{match:"\\[|\\]",name:"punctuation.section.array.crystal"},{match:"\\(|\\)",name:"punctuation.section.function.crystal"},{begin:"(?=[a-zA-Z0-9_!?]+\\()",end:"(?<=\\))",name:"meta.function-call.crystal",patterns:[{match:"([a-zA-Z0-9_!?]+)(?=\\()",name:"entity.name.function.crystal"},{include:"$self"}]},{comment:"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors",match:"((?<=\\W)\\b|^)\\w+\\b(?=\\s*([\\]\\)\\}\\=\\+\\-\\*\\/\\^\\$\\,\\.]|<\\s|<<[\\s|\\.]))",name:"variable.other.crystal"}],repository:{escaped_char:{comment:"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html",match:"\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\{[a-fA-F0-9 ]+\\}|.)",name:"constant.character.escape.crystal"},heredoc:{begin:"^<<-?\\w+",end:"$",patterns:[{include:"$self"}]},interpolated_crystal:{patterns:[{begin:"#\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.crystal"}},contentName:"source.crystal",end:"(\\})",endCaptures:{0:{name:"punctuation.section.embedded.end.crystal"},1:{name:"source.crystal"}},name:"meta.embedded.line.crystal",patterns:[{include:"#nest_curly_and_self"},{include:"$self"}],repository:{nest_curly_and_self:{patterns:[{begin:"\\{",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\}",patterns:[{include:"#nest_curly_and_self"}]},{include:"$self"}]}}},{captures:{1:{name:"punctuation.definition.variable.crystal"}},match:"(#@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.instance.crystal"},{captures:{1:{name:"punctuation.definition.variable.crystal"}},match:"(#@@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.class.crystal"},{captures:{1:{name:"punctuation.definition.variable.crystal"}},match:"(#\\$)[a-zA-Z_]\\w*",name:"variable.other.readwrite.global.crystal"}]},nest_brackets:{begin:"\\[",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\]",patterns:[{include:"#nest_brackets"}]},nest_brackets_i:{begin:"\\[",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\]",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_brackets_i"}]},nest_brackets_r:{begin:"\\[",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\]",patterns:[{include:"#regex_sub"},{include:"#nest_brackets_r"}]},nest_curly:{begin:"\\{",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\}",patterns:[{include:"#nest_curly"}]},nest_curly_and_self:{patterns:[{begin:"\\{",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\}",patterns:[{include:"#nest_curly_and_self"}]},{include:"$self"}]},nest_curly_i:{begin:"\\{",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\}",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_curly_i"}]},nest_curly_r:{begin:"\\{",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\}",patterns:[{include:"#regex_sub"},{include:"#nest_curly_r"}]},nest_ltgt:{begin:"\\<",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\>",patterns:[{include:"#nest_ltgt"}]},nest_ltgt_i:{begin:"\\<",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\>",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_ltgt_i"}]},nest_ltgt_r:{begin:"\\<",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\>",patterns:[{include:"#regex_sub"},{include:"#nest_ltgt_r"}]},nest_parens:{begin:"\\(",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\)",patterns:[{include:"#nest_parens"}]},nest_parens_i:{begin:"\\(",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\)",patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{include:"#nest_parens_i"}]},nest_parens_r:{begin:"\\(",captures:{0:{name:"punctuation.section.scope.crystal"}},end:"\\)",patterns:[{include:"#regex_sub"},{include:"#nest_parens_r"}]},regex_sub:{patterns:[{include:"#interpolated_crystal"},{include:"#escaped_char"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.crystal"},3:{name:"punctuation.definition.arbitrary-repetition.crystal"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repetition.crystal"},{begin:"\\[(?:\\^?])?",captures:{0:{name:"punctuation.definition.character-class.crystal"}},end:"]",name:"string.regexp.character-class.crystal",patterns:[{include:"#escaped_char"}]},{begin:"\\(",captures:{0:{name:"punctuation.definition.group.crystal"}},end:"\\)",name:"string.regexp.group.crystal",patterns:[{include:"#regex_sub"}]},{captures:{1:{name:"punctuation.definition.comment.crystal"}},comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",match:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",name:"comment.line.number-sign.crystal"}]}},scopeName:"source.crystal",embeddedLangs:["html","sql","css","c","javascript","shellscript"]});var p=[...e,...t,...n,...a,...r,...i,s];export{p as default}; diff --git a/assets/chunks/csharp.DISxKEhY.js b/assets/chunks/csharp.DISxKEhY.js new file mode 100644 index 000000000..e3a13656a --- /dev/null +++ b/assets/chunks/csharp.DISxKEhY.js @@ -0,0 +1,756 @@ +const e=Object.freeze({displayName:"C#",name:"csharp",patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#directives"},{include:"#declarations"},{include:"#script-top-level"}],repository:{"accessor-getter":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},contentName:"meta.accessor.getter.cs",end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},{include:"#accessor-getter-expression"},{include:"#punctuation-semicolon"}]},"accessor-getter-expression":{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},contentName:"meta.accessor.getter.cs",end:"(?=;|\\})",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"accessor-setter":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},contentName:"meta.accessor.setter.cs",end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},contentName:"meta.accessor.setter.cs",end:"(?=;|\\})",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},{include:"#punctuation-semicolon"}]},"anonymous-method-expression":{patterns:[{begin:`(?x) +((?:\\b(?:async|static)\\b\\s*)*) +(?: +(@?[_[:alpha:]][_[:alnum:]]*)\\b| +(\\() +(?(?:[^()]|\\(\\g\\))*) +(\\)) +)\\s* +(=>)`,beginCaptures:{1:{patterns:[{match:"async|static",name:"storage.modifier.$0.cs"}]},2:{name:"entity.name.variable.parameter.cs"},3:{name:"punctuation.parenthesis.open.cs"},4:{patterns:[{include:"#comment"},{include:"#explicit-anonymous-function-parameter"},{include:"#implicit-anonymous-function-parameter"},{include:"#default-argument"},{include:"#punctuation-comma"}]},5:{name:"punctuation.parenthesis.close.cs"},6:{name:"keyword.operator.arrow.cs"}},end:"(?=[,;)}])",patterns:[{include:"#intrusive"},{begin:"(?={)",end:"(?=[,;)}])",patterns:[{include:"#block"},{include:"#intrusive"}]},{begin:"\\b(ref)\\b|(?=\\S)",beginCaptures:{1:{name:"storage.modifier.ref.cs"}},end:"(?=[,;)}])",patterns:[{include:"#expression"}]}]},{begin:`(?x) +((?:\\b(?:async|static)\\b\\s*)*) +\\b(delegate)\\b\\s*`,beginCaptures:{1:{patterns:[{match:"async|static",name:"storage.modifier.$0.cs"}]},2:{name:"storage.type.delegate.cs"}},end:"(?<=})|(?=[,;)}])",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{include:"#explicit-anonymous-function-parameter"},{include:"#punctuation-comma"}]},{include:"#block"}]}]},"anonymous-object-creation-expression":{begin:"\\b(new)\\b\\s*(?=\\{|//|/\\*|$)",beginCaptures:{1:{name:"keyword.operator.expression.new.cs"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#initializer-expression"}]},argument:{patterns:[{match:"\\b(ref|in)\\b",name:"storage.modifier.$1.cs"},{begin:"\\b(out)\\b",beginCaptures:{1:{name:"storage.modifier.out.cs"}},end:"(?=,|\\)|\\])",patterns:[{include:"#declaration-expression-local"},{include:"#expression"}]},{include:"#expression"}]},"argument-list":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#named-argument"},{include:"#argument"},{include:"#punctuation-comma"}]},"array-creation-expression":{begin:`(?x) +\\b(new|stackalloc)\\b\\s* +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)?\\s* +(?=\\[)`,beginCaptures:{1:{name:"keyword.operator.expression.$1.cs"},2:{patterns:[{include:"#type"}]}},end:"(?<=\\])",patterns:[{include:"#bracketed-argument-list"}]},"as-expression":{captures:{1:{name:"keyword.operator.expression.as.cs"},2:{patterns:[{include:"#type"}]}},match:`(?x) +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?(?!\\?))? +(?:\\s* +\\[ +\\s*(?:,\\s*)* +\\] +(?:\\s*\\?(?!\\?))? +)* +) +)?`},"assignment-expression":{begin:"(?:\\*|/|%|\\+|-|\\?\\?|\\&|\\^|<<|>>>?|\\|)?=(?!=|>)",beginCaptures:{0:{patterns:[{include:"#assignment-operators"}]}},end:"(?=[,\\)\\];}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"assignment-operators":{patterns:[{match:"\\*=|/=|%=|\\+=|-=|\\?\\?=",name:"keyword.operator.assignment.compound.cs"},{match:"\\&=|\\^=|<<=|>>>?=|\\|=",name:"keyword.operator.assignment.compound.bitwise.cs"},{match:"\\=",name:"keyword.operator.assignment.cs"}]},attribute:{patterns:[{include:"#type-name"},{include:"#attribute-arguments"}]},"attribute-arguments":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#attribute-named-argument"},{include:"#expression"},{include:"#punctuation-comma"}]},"attribute-named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",beginCaptures:{1:{name:"entity.name.variable.property.cs"}},end:"(?=(,|\\)))",patterns:[{include:"#operator-assignment"},{include:"#expression"}]},"attribute-section":{begin:"(\\[)(assembly|module|field|event|method|param|property|return|type)?(\\:)?",beginCaptures:{1:{name:"punctuation.squarebracket.open.cs"},2:{name:"keyword.other.attribute-specifier.cs"},3:{name:"punctuation.separator.colon.cs"}},end:"(\\])",endCaptures:{1:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute"},{include:"#punctuation-comma"}]},"await-expression":{match:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])`},"casted-constant-pattern":{begin:`(?x) +(\\() +([\\s.:@_[:alnum:]]+) +(\\)) +(?=[\\s+\\-!~]*@?[_[:alnum:]('"]+)`,beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"},2:{patterns:[{include:"#type-builtin"},{include:"#type-name"}]},3:{name:"punctuation.parenthesis.close.cs"}},end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#casted-constant-pattern"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#constant-pattern"}]},{include:"#constant-pattern"},{captures:{1:{name:"entity.name.type.alias.cs"},2:{name:"punctuation.separator.coloncolon.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)"},{captures:{1:{name:"entity.name.type.cs"},2:{name:"punctuation.accessor.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)"},{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"variable.other.constant.cs"}]},"catch-clause":{begin:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +(?:(\\g)\\b)?`}]},{include:"#when-clause"},{include:"#comment"},{include:"#block"}]},"char-character-escape":{match:"\\\\(x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4}|.)",name:"constant.character.escape.cs"},"char-literal":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.char.begin.cs"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.char.end.cs"},2:{name:"invalid.illegal.newline.cs"}},name:"string.quoted.single.cs",patterns:[{include:"#char-character-escape"}]},"class-declaration":{begin:"(?=(\\brecord\\b\\s+)?\\bclass\\b)",end:"(?<=\\})|(?=;)",patterns:[{begin:`(?x) +(\\b(record)\\b\\s+)? +\\b(class)\\b\\s+ +(@?[_[:alpha:]][_[:alnum:]]*)\\s*`,beginCaptures:{2:{name:"storage.type.record.cs"},3:{name:"storage.type.class.cs"},4:{name:"entity.name.type.class.cs"}},end:"(?=\\{)|(?=;)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#parenthesized-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"class-or-struct-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#type-declarations"},{include:"#property-declaration"},{include:"#field-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#variable-initializer"},{include:"#constructor-declaration"},{include:"#destructor-declaration"},{include:"#operator-declaration"},{include:"#conversion-operator-declaration"},{include:"#method-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"combinator-pattern":{match:"\\b(and|or|not)\\b",name:"keyword.operator.expression.pattern.combinator.$1.cs"},comment:{patterns:[{begin:"(^\\s+)?(///)(?!/)",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},name:"comment.block.documentation.cs",patterns:[{include:"#xml-doc-comment"}],while:"^(\\s*)(///)(?!/)"},{begin:"(^\\s+)?(/\\*\\*)(?!/)",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},end:"(^\\s+)?(\\*/)",name:"comment.block.documentation.cs",patterns:[{begin:"\\G(?=(?~\\*/)$)",patterns:[{include:"#xml-doc-comment"}],while:"^(\\s*+)(\\*(?!/))?(?=(?~\\*/)$)",whileCaptures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}}},{include:"#xml-doc-comment"}]},{begin:"(^\\s+)?(//).*$",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},name:"comment.line.double-slash.cs",while:"^(\\s*)(//).*$"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.cs"}},end:"\\*/",name:"comment.block.cs"}]},"conditional-operator":{patterns:[{match:"\\?(?!\\?|\\s*[.\\[])",name:"keyword.operator.conditional.question-mark.cs"},{match:":",name:"keyword.operator.conditional.colon.cs"}]},"constant-pattern":{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#char-literal"},{include:"#string-literal"},{include:"#raw-string-literal"},{include:"#verbatim-string-literal"},{include:"#type-operator-expression"},{include:"#expression-operator-expression"},{include:"#expression-operators"},{include:"#casted-constant-pattern"}]},"constructor-declaration":{begin:"(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",end:"(?<=\\})|(?=;)",patterns:[{captures:{1:{name:"entity.name.function.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b"},{begin:"(:)",beginCaptures:{1:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|=>)",patterns:[{include:"#constructor-initializer"}]},{include:"#parenthesized-parameter-list"},{include:"#preprocessor"},{include:"#comment"},{include:"#expression-body"},{include:"#block"}]},"constructor-initializer":{begin:"\\b(base|this)\\b\\s*(?=\\()",beginCaptures:{1:{name:"variable.language.$1.cs"}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"context-control-paren-statement":{patterns:[{include:"#fixed-statement"},{include:"#lock-statement"},{include:"#using-statement"}]},"context-control-statement":{match:"\\b(checked|unchecked|unsafe)\\b(?!\\s*[@_[:alpha:](])",name:"keyword.control.context.$1.cs"},"conversion-operator-declaration":{begin:`(?x) +(?(?:\\b(?:explicit|implicit)))\\s* +(?(?:\\b(?:operator)))\\s* +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{captures:{1:{name:"storage.modifier.explicit.cs"}},match:"\\b(explicit)\\b"},{captures:{1:{name:"storage.modifier.implicit.cs"}},match:"\\b(implicit)\\b"}]},2:{name:"storage.type.operator.cs"},3:{patterns:[{include:"#type"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"declaration-expression-local":{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.local.cs"}},match:`(?x) +(?: +\\b(var)\\b| +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +) +)\\s+ +(\\g)\\b\\s* +(?=[,)\\]])`},"declaration-expression-tuple":{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.tuple-element.cs"}},match:`(?x) +(?: +\\b(var)\\b| +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +) +)\\s+ +(\\g)\\b\\s* +(?=[,)])`},declarations:{patterns:[{include:"#namespace-declaration"},{include:"#type-declarations"},{include:"#punctuation-semicolon"}]},"default-argument":{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.cs"}},end:"(?=,|\\))",patterns:[{include:"#expression"}]},"default-literal-expression":{captures:{1:{name:"keyword.operator.expression.default.cs"}},match:"\\b(default)\\b"},"delegate-declaration":{begin:`(?x) +(?:\\b(delegate)\\b)\\s+ +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +(\\g)\\s* +(<([^<>]+)>)?\\s* +(?=\\()`,beginCaptures:{1:{name:"storage.type.delegate.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.type.delegate.cs"},8:{patterns:[{include:"#type-parameter-list"}]}},end:"(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"}]},"designation-pattern":{patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#punctuation-comma"},{include:"#designation-pattern"}]},{include:"#simple-designation-pattern"}]},"destructor-declaration":{begin:"(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",beginCaptures:{1:{name:"punctuation.tilde.cs"},2:{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},directives:{patterns:[{include:"#extern-alias-directive"},{include:"#using-directive"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"discard-pattern":{match:"_(?![_[:alnum:]])",name:"variable.language.discard.cs"},"do-statement":{begin:"(?)\\s* +)? +(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? +(?:(\\?)\\s*)? +(?=\\[)`,beginCaptures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"variable.other.object.property.cs"},5:{name:"keyword.operator.null-conditional.cs"}},end:"(?<=\\])(?!\\s*\\[)",patterns:[{include:"#bracketed-argument-list"}]},"else-part":{begin:"(?|//|/\\*|$)",beginCaptures:{1:{name:"storage.type.accessor.$1.cs"}},end:"(?<=\\}|;)|(?=\\})",patterns:[{include:"#accessor-setter"}]}]},"event-declaration":{begin:`(?x) +\\b(event)\\b\\s* +(? +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(\\g)\\s* +(?=\\{|;|,|=|//|/\\*|$)`,beginCaptures:{1:{name:"storage.type.event.cs"},2:{patterns:[{include:"#type"}]},8:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},9:{name:"entity.name.variable.event.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#event-accessors"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.event.cs"},{include:"#punctuation-comma"},{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.cs"}},end:"(?<=,)|(?=;)",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]}]},"explicit-anonymous-function-parameter":{captures:{1:{name:"storage.modifier.$1.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.parameter.cs"}},match:`(?x) +(?:\\b(ref|params|out|in)\\b\\s*)? +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?<(?:[^<>]|\\g)*>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^()]|\\g)*\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +\\b(\\g)\\b`},expression:{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#expression-operator-expression"},{include:"#type-operator-expression"},{include:"#default-literal-expression"},{include:"#throw-expression"},{include:"#raw-interpolated-string"},{include:"#interpolated-string"},{include:"#verbatim-interpolated-string"},{include:"#type-builtin"},{include:"#language-variable"},{include:"#switch-statement-or-expression"},{include:"#with-expression"},{include:"#conditional-operator"},{include:"#assignment-expression"},{include:"#expression-operators"},{include:"#await-expression"},{include:"#query-expression"},{include:"#as-expression"},{include:"#is-expression"},{include:"#anonymous-method-expression"},{include:"#object-creation-expression"},{include:"#array-creation-expression"},{include:"#anonymous-object-creation-expression"},{include:"#invocation-expression"},{include:"#member-access-expression"},{include:"#element-access-expression"},{include:"#cast-expression"},{include:"#literal"},{include:"#parenthesized-expression"},{include:"#tuple-deconstruction-assignment"},{include:"#initializer-expression"},{include:"#identifier"}]},"expression-body":{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},end:"(?=[,\\);}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"expression-operator-expression":{begin:"\\b(checked|unchecked|nameof)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.expression.$1.cs"},2:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"expression-operators":{patterns:[{match:"<<|>>>?",name:"keyword.operator.bitwise.shift.cs"},{match:"==|!=",name:"keyword.operator.comparison.cs"},{match:"<=|>=|<|>",name:"keyword.operator.relational.cs"},{match:"\\!|&&|\\|\\|",name:"keyword.operator.logical.cs"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.cs"},{match:"--",name:"keyword.operator.decrement.cs"},{match:"\\+\\+",name:"keyword.operator.increment.cs"},{match:"\\+|-(?!>)|\\*|/|%",name:"keyword.operator.arithmetic.cs"},{match:"\\?\\?",name:"keyword.operator.null-coalescing.cs"},{match:"\\.\\.",name:"keyword.operator.range.cs"}]},"extern-alias-directive":{begin:"\\b(extern)\\s+(alias)\\b",beginCaptures:{1:{name:"keyword.other.directive.extern.cs"},2:{name:"keyword.other.directive.alias.cs"}},end:"(?=;)",patterns:[{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"variable.other.alias.cs"}]},"field-declaration":{begin:`(?x) +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +(\\g)\\s* +(?!=>|==)(?=,|;|=|$)`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{name:"entity.name.variable.field.cs"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.field.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"},{include:"#class-or-struct-members"}]},"finally-clause":{begin:"(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +) +)\\s+ +(\\g)\\s+ +\\b(in)\\b`},{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]},3:{name:"keyword.control.loop.in.cs"}},match:`(?x) +(?:\\b(var)\\b\\s*)? +(?\\((?:[^\\(\\)]|\\g)+\\))\\s+ +\\b(in)\\b`},{include:"#expression"}]}]},"generic-constraints":{begin:"(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{1:{name:"storage.modifier.where.cs"},2:{name:"entity.name.type.type-parameter.cs"},3:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|where|;|=>)",patterns:[{match:"\\bclass\\b",name:"storage.type.class.cs"},{match:"\\bstruct\\b",name:"storage.type.struct.cs"},{match:"\\bdefault\\b",name:"keyword.other.constraint.default.cs"},{match:"\\bnotnull\\b",name:"keyword.other.constraint.notnull.cs"},{match:"\\bunmanaged\\b",name:"keyword.other.constraint.unmanaged.cs"},{captures:{1:{name:"keyword.operator.expression.new.cs"},2:{name:"punctuation.parenthesis.open.cs"},3:{name:"punctuation.parenthesis.close.cs"}},match:"(new)\\s*(\\()\\s*(\\))"},{include:"#type"},{include:"#punctuation-comma"},{include:"#generic-constraints"}]},"goto-statement":{begin:"(? +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(?this)\\s* +(?=\\[)`,beginCaptures:{1:{patterns:[{include:"#type"}]},7:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},8:{name:"variable.language.this.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#bracketed-parameter-list"},{include:"#property-accessors"},{include:"#accessor-getter-expression"},{include:"#variable-initializer"}]},"initializer-expression":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"interface-declaration":{begin:"(?=\\binterface\\b)",end:"(?<=\\})",patterns:[{begin:`(?x) +(interface)\\b\\s+ +(@?[_[:alpha:]][_[:alnum:]]*)`,beginCaptures:{1:{name:"storage.type.interface.cs"},2:{name:"entity.name.type.interface.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#interface-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"interface-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#property-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#method-declaration"},{include:"#operator-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"interpolated-string":{begin:'\\$"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'(")|((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.cs"},2:{name:"invalid.illegal.newline.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#string-character-escape"},{include:"#interpolation"}]},interpolation:{begin:"(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",beginCaptures:{1:{name:"string.quoted.double.cs"},2:{name:"punctuation.definition.interpolation.begin.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.cs"}},name:"meta.interpolation.cs",patterns:[{include:"#expression"}]},intrusive:{patterns:[{include:"#preprocessor"},{include:"#comment"}]},"invocation-expression":{begin:`(?x) +(?: +(?:(\\?)\\s*)? +(\\.)\\s*| +(->)\\s* +)? +(@?[_[:alpha:]][_[:alnum:]]*)\\s* +( +< +(? +[^<>()]++| +<\\g*+>| +\\(\\g*+\\) +)*+ +>\\s* +)? +(?=\\()`,beginCaptures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"entity.name.function.cs"},5:{patterns:[{include:"#type-arguments"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"is-expression":{begin:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)? +\\s+(\\g)\\b\\s* +\\b(in)\\b\\s*`,beginCaptures:{1:{name:"keyword.operator.expression.query.join.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.range-variable.cs"},8:{name:"keyword.operator.expression.query.in.cs"}},end:"(?=;|\\))",patterns:[{include:"#join-on"},{include:"#join-equals"},{include:"#join-into"},{include:"#query-body"},{include:"#expression"}]},"join-equals":{captures:{1:{name:"keyword.operator.expression.query.equals.cs"}},match:"\\b(equals)\\b\\s*"},"join-into":{captures:{1:{name:"keyword.operator.expression.query.into.cs"},2:{name:"entity.name.variable.range-variable.cs"}},match:`(?x) +\\b(into)\\b\\s* +(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*`},"join-on":{captures:{1:{name:"keyword.operator.expression.query.on.cs"}},match:"\\b(on)\\b\\s*"},"labeled-statement":{captures:{1:{name:"entity.name.label.cs"},2:{name:"punctuation.separator.colon.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)"},"language-variable":{patterns:[{match:"\\b(base|this)\\b",name:"variable.language.$1.cs"},{match:"\\b(value)\\b",name:"variable.other.$1.cs"}]},"let-clause":{begin:`(?x) +\\b(let)\\b\\s* +(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s* +(=)\\s*`,beginCaptures:{1:{name:"keyword.operator.expression.query.let.cs"},2:{name:"entity.name.variable.range-variable.cs"},3:{name:"keyword.operator.assignment.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"list-pattern":{begin:"(?=\\[)",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\[",beginCaptures:{0:{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{0:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#pattern"},{include:"#punctuation-comma"}]},{begin:"(?<=\\])",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#simple-designation-pattern"}]}]},literal:{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#char-literal"},{include:"#raw-string-literal"},{include:"#string-literal"},{include:"#verbatim-string-literal"},{include:"#tuple-literal"}]},"local-constant-declaration":{begin:`(?x) +(?\\b(?:const)\\b)\\s* +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +(\\g)\\s* +(?=,|;|=)`,beginCaptures:{1:{name:"storage.modifier.const.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.local.cs"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"local-declaration":{patterns:[{include:"#local-constant-declaration"},{include:"#local-variable-declaration"},{include:"#local-function-declaration"},{include:"#local-tuple-var-deconstruction"}]},"local-function-declaration":{begin:`(?x) +\\b((?:(?:async|unsafe|static|extern)\\s+)*) +(? +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?)? +(?:\\s* +\\[ +\\s*(?:,\\s*)* +\\] +(?:\\s*\\?)? +)* +)\\s+ +(\\g)\\s* +(<[^<>]+>)?\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{include:"#storage-modifier"}]},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.function.cs"},8:{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"},{include:"#expression-body"},{include:"#block"}]},"local-tuple-var-deconstruction":{begin:`(?x) +(?:\\b(var)\\b\\s*) +(?\\((?:[^\\(\\)]|\\g)+\\))\\s* +(?=;|=|\\))`,beginCaptures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]}},end:"(?=;|\\))",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},"local-variable-declaration":{begin:`(?x) +(?: +(?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)| +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*[?*]\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +) +)\\s+ +(\\g)\\s* +(?!=>) +(?=,|;|=|\\))`,beginCaptures:{1:{name:"storage.modifier.ref.cs"},2:{name:"storage.modifier.readonly.cs"},3:{name:"storage.type.var.cs"},4:{patterns:[{include:"#type"}]},9:{name:"entity.name.variable.local.cs"}},end:"(?=[;)}])",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"lock-statement":{begin:"\\b(lock)\\b",beginCaptures:{1:{name:"keyword.control.context.lock.cs"}},end:"(?<=\\))|(?=;|})",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{include:"#expression"}]}]},"member-access-expression":{patterns:[{captures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"variable.other.object.property.cs"}},match:`(?x) +(?: +(?:(\\?)\\s*)? +(\\.)\\s*| +(->)\\s* +) +(@?[_[:alpha:]][_[:alnum:]]*)\\s* +(?![_[:alnum:]]|\\(|(\\?)?\\[|<)`},{captures:{1:{name:"punctuation.accessor.cs"},2:{name:"variable.other.object.cs"},3:{patterns:[{include:"#type-arguments"}]}},match:`(?x) +(\\.)?\\s* +(@?[_[:alpha:]][_[:alnum:]]*) +(?\\s*<([^<>]|\\g)+>\\s*) +(?= +(\\s*\\?)? +\\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]* +)`},{captures:{1:{name:"variable.other.object.cs"}},match:`(?x) +(@?[_[:alpha:]][_[:alnum:]]*) +(?= +\\s*(?:(?:\\?\\s*)?\\.|->) +\\s*@?[_[:alpha:]][_[:alnum:]]* +)`}]},"method-declaration":{begin:`(?x) +(? +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(\\g)\\s* +(<([^<>]+)>)?\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{include:"#type"}]},7:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},8:{name:"entity.name.function.cs"},9:{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"},{include:"#expression-body"},{include:"#block"}]},"named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{1:{name:"entity.name.variable.parameter.cs"},2:{name:"punctuation.separator.colon.cs"}},end:"(?=(,|\\)|\\]))",patterns:[{include:"#argument"}]},"namespace-declaration":{begin:"\\b(namespace)\\s+",beginCaptures:{1:{name:"storage.type.namespace.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.namespace.cs"},{include:"#punctuation-accessor"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#declarations"},{include:"#using-directive"},{include:"#punctuation-semicolon"}]}]},"null-literal":{match:"(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +(?=\\{|//|/\\*|$)`},"object-creation-expression-with-parameters":{begin:`(?x) +(new)(?:\\s+ +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +))?\\s* +(?=\\()`,beginCaptures:{1:{name:"keyword.operator.expression.new.cs"},2:{patterns:[{include:"#type"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"operator-assignment":{match:"(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s* +\\b(?operator)\\b\\s* +(?[+\\-*/%&|\\^!=~<>]+|true|false)\\s* +(?=\\()`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{name:"storage.type.operator.cs"},7:{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"orderby-clause":{begin:"\\b(orderby)\\b\\s*",beginCaptures:{1:{name:"keyword.operator.expression.query.orderby.cs"}},end:"(?=;|\\))",patterns:[{include:"#ordering-direction"},{include:"#query-body"},{include:"#expression"},{include:"#punctuation-comma"}]},"ordering-direction":{captures:{1:{name:"keyword.operator.expression.query.$1.cs"}},match:"\\b(ascending|descending)\\b"},parameter:{captures:{1:{name:"storage.modifier.$1.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.parameter.cs"}},match:`(?x) +(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)? +(? +(?: +(?:ref\\s+)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^()]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +(\\g)`},"parenthesized-expression":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"parenthesized-parameter-list":{begin:"(\\()",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]},pattern:{patterns:[{include:"#intrusive"},{include:"#combinator-pattern"},{include:"#discard-pattern"},{include:"#constant-pattern"},{include:"#relational-pattern"},{include:"#var-pattern"},{include:"#type-pattern"},{include:"#positional-pattern"},{include:"#property-pattern"},{include:"#list-pattern"},{include:"#slice-pattern"}]},"positional-pattern":{begin:"(?=\\()",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#subpattern"},{include:"#punctuation-comma"}]},{begin:"(?<=\\))",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#property-pattern"},{include:"#simple-designation-pattern"}]}]},preprocessor:{begin:"^\\s*(\\#)\\s*",beginCaptures:{1:{name:"punctuation.separator.hash.cs"}},end:"(?<=$)",name:"meta.preprocessor.cs",patterns:[{include:"#comment"},{include:"#preprocessor-define-or-undef"},{include:"#preprocessor-if-or-elif"},{include:"#preprocessor-else-or-endif"},{include:"#preprocessor-warning-or-error"},{include:"#preprocessor-region"},{include:"#preprocessor-endregion"},{include:"#preprocessor-load"},{include:"#preprocessor-r"},{include:"#preprocessor-line"},{include:"#preprocessor-pragma-warning"},{include:"#preprocessor-pragma-checksum"}]},"preprocessor-define-or-undef":{captures:{1:{name:"keyword.preprocessor.define.cs"},2:{name:"keyword.preprocessor.undef.cs"},3:{name:"entity.name.variable.preprocessor.symbol.cs"}},match:"\\b(?:(define)|(undef))\\b\\s*\\b([_[:alpha:]][_[:alnum:]]*)\\b"},"preprocessor-else-or-endif":{captures:{1:{name:"keyword.preprocessor.else.cs"},2:{name:"keyword.preprocessor.endif.cs"}},match:"\\b(?:(else)|(endif))\\b"},"preprocessor-endregion":{captures:{1:{name:"keyword.preprocessor.endregion.cs"}},match:"\\b(endregion)\\b"},"preprocessor-expression":{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#preprocessor-expression"}]},{captures:{1:{name:"constant.language.boolean.true.cs"},2:{name:"constant.language.boolean.false.cs"},3:{name:"entity.name.variable.preprocessor.symbol.cs"}},match:"\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\b"},{captures:{1:{name:"keyword.operator.comparison.cs"},2:{name:"keyword.operator.logical.cs"}},match:"(==|!=)|(\\!|&&|\\|\\|)"}]},"preprocessor-if-or-elif":{begin:"\\b(?:(if)|(elif))\\b",beginCaptures:{1:{name:"keyword.preprocessor.if.cs"},2:{name:"keyword.preprocessor.elif.cs"}},end:"(?=$)",patterns:[{include:"#comment"},{include:"#preprocessor-expression"}]},"preprocessor-line":{begin:"\\b(line)\\b",beginCaptures:{1:{name:"keyword.preprocessor.line.cs"}},end:"(?=$)",patterns:[{captures:{1:{name:"keyword.preprocessor.default.cs"},2:{name:"keyword.preprocessor.hidden.cs"}},match:"\\b(?:(default|hidden))"},{captures:{0:{name:"constant.numeric.decimal.cs"}},match:"[0-9]+"},{captures:{0:{name:"string.quoted.double.cs"}},match:'\\"[^"]*\\"'}]},"preprocessor-load":{begin:"\\b(load)\\b",beginCaptures:{1:{name:"keyword.preprocessor.load.cs"}},end:"(?=$)",patterns:[{captures:{0:{name:"string.quoted.double.cs"}},match:'\\"[^"]*\\"'}]},"preprocessor-pragma-checksum":{captures:{1:{name:"keyword.preprocessor.pragma.cs"},2:{name:"keyword.preprocessor.checksum.cs"},3:{name:"string.quoted.double.cs"},4:{name:"string.quoted.double.cs"},5:{name:"string.quoted.double.cs"}},match:'\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\\"[^"]*\\")\\s*(\\"[^"]*\\")\\s*(\\"[^"]*\\")'},"preprocessor-pragma-warning":{captures:{1:{name:"keyword.preprocessor.pragma.cs"},2:{name:"keyword.preprocessor.warning.cs"},3:{name:"keyword.preprocessor.disable.cs"},4:{name:"keyword.preprocessor.restore.cs"},5:{patterns:[{captures:{0:{name:"constant.numeric.decimal.cs"}},match:"[0-9]+"},{include:"#punctuation-comma"}]}},match:"\\b(pragma)\\b\\s*\\b(warning)\\b\\s*\\b(?:(disable)|(restore))\\b(\\s*[0-9]+(?:\\s*,\\s*[0-9]+)?)?"},"preprocessor-r":{begin:"\\b(r)\\b",beginCaptures:{1:{name:"keyword.preprocessor.r.cs"}},end:"(?=$)",patterns:[{captures:{0:{name:"string.quoted.double.cs"}},match:'\\"[^"]*\\"'}]},"preprocessor-region":{captures:{1:{name:"keyword.preprocessor.region.cs"},2:{name:"string.unquoted.preprocessor.message.cs"}},match:"\\b(region)\\b\\s*(.*)(?=$)"},"preprocessor-warning-or-error":{captures:{1:{name:"keyword.preprocessor.warning.cs"},2:{name:"keyword.preprocessor.error.cs"},3:{name:"string.unquoted.preprocessor.message.cs"}},match:"\\b(?:(warning)|(error))\\b\\s*(.*)(?=$)"},"property-accessors":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{match:"\\b(private|protected|internal)\\b",name:"storage.modifier.$1.cs"},{begin:"\\b(get)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",beginCaptures:{1:{name:"storage.type.accessor.$1.cs"}},end:"(?<=\\}|;)|(?=\\})",patterns:[{include:"#accessor-getter"}]},{begin:"\\b(set|init)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",beginCaptures:{1:{name:"storage.type.accessor.$1.cs"}},end:"(?<=\\}|;)|(?=\\})",patterns:[{include:"#accessor-setter"}]}]},"property-declaration":{begin:`(?x) + +# The negative lookahead below ensures that we don't match nested types +# or other declarations as properties. +(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b) + +(? +(? +(?: +(?:ref\\s+(?:readonly\\s+)?)? +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)\\s+ +) +(?\\g\\s*\\.\\s*)? +(?\\g)\\s* +(?=\\{|=>|//|/\\*|$)`,beginCaptures:{1:{patterns:[{include:"#type"}]},7:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},8:{name:"entity.name.variable.property.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#property-accessors"},{include:"#accessor-getter-expression"},{include:"#variable-initializer"},{include:"#class-or-struct-members"}]},"property-pattern":{begin:"(?={)",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#subpattern"},{include:"#punctuation-comma"}]},{begin:"(?<=\\})",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#simple-designation-pattern"}]}]},"punctuation-accessor":{match:"\\.",name:"punctuation.accessor.cs"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.cs"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.cs"},"query-body":{patterns:[{include:"#let-clause"},{include:"#where-clause"},{include:"#join-clause"},{include:"#orderby-clause"},{include:"#select-clause"},{include:"#group-clause"}]},"query-expression":{begin:`(?x) +\\b(from)\\b\\s* +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +)? +\\s+(\\g)\\b\\s* +\\b(in)\\b\\s*`,beginCaptures:{1:{name:"keyword.operator.expression.query.from.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.range-variable.cs"},8:{name:"keyword.operator.expression.query.in.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"raw-interpolated-string":{patterns:[{include:"#raw-interpolated-string-five-or-more-quote-one-or-more-interpolation"},{include:"#raw-interpolated-string-three-or-more-quote-three-or-more-interpolation"},{include:"#raw-interpolated-string-quadruple-quote-double-interpolation"},{include:"#raw-interpolated-string-quadruple-quote-single-interpolation"},{include:"#raw-interpolated-string-triple-quote-double-interpolation"},{include:"#raw-interpolated-string-triple-quote-single-interpolation"}]},"raw-interpolated-string-five-or-more-quote-one-or-more-interpolation":{begin:'\\$+"""""+',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""""+',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs"},"raw-interpolated-string-quadruple-quote-double-interpolation":{begin:'\\$\\$""""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'""""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#double-raw-interpolation"}]},"raw-interpolated-string-quadruple-quote-single-interpolation":{begin:'\\$""""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'""""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#raw-interpolation"}]},"raw-interpolated-string-three-or-more-quote-three-or-more-interpolation":{begin:'\\$\\$\\$+"""+',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""+',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs"},"raw-interpolated-string-triple-quote-double-interpolation":{begin:'\\$\\$"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#double-raw-interpolation"}]},"raw-interpolated-string-triple-quote-single-interpolation":{begin:'\\$"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#raw-interpolation"}]},"raw-interpolation":{begin:"(?<=[^\\{]|^)((?:\\{)*)(\\{)(?=[^\\{])",beginCaptures:{1:{name:"string.quoted.double.cs"},2:{name:"punctuation.definition.interpolation.begin.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.cs"}},name:"meta.interpolation.cs",patterns:[{include:"#expression"}]},"raw-string-literal":{patterns:[{include:"#raw-string-literal-more"},{include:"#raw-string-literal-quadruple"},{include:"#raw-string-literal-triple"}]},"raw-string-literal-more":{begin:'"""""+',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""""+',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs"},"raw-string-literal-quadruple":{begin:'""""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'""""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs"},"raw-string-literal-triple":{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs"},"readonly-modifier":{match:"\\breadonly\\b",name:"storage.modifier.readonly.cs"},"record-declaration":{begin:"(?=\\brecord\\b)",end:"(?<=\\})|(?=;)",patterns:[{begin:`(?x) +(record)\\b\\s+ +(@?[_[:alpha:]][_[:alnum:]]*)`,beginCaptures:{1:{name:"storage.type.record.cs"},2:{name:"entity.name.type.class.cs"}},end:"(?=\\{)|(?=;)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#parenthesized-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"ref-modifier":{match:"\\bref\\b",name:"storage.modifier.ref.cs"},"relational-pattern":{begin:"<=?|>=?",beginCaptures:{0:{name:"keyword.operator.relational.cs"}},end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#expression"}]},"return-statement":{begin:"(?",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},end:"(?=,|})",patterns:[{include:"#expression"}]},{begin:"\\b(when)\\b",beginCaptures:{1:{name:"keyword.control.conditional.when.cs"}},end:"(?==>|,|})",patterns:[{include:"#case-guard"}]},{begin:"(?!\\s)",end:"(?=\\bwhen\\b|=>|,|})",patterns:[{include:"#pattern"}]}]},"switch-label":{begin:"\\b(case|default)\\b",beginCaptures:{1:{name:"keyword.control.conditional.$1.cs"}},end:"(:)|(?=})",endCaptures:{1:{name:"punctuation.separator.colon.cs"}},patterns:[{begin:"\\b(when)\\b",beginCaptures:{1:{name:"keyword.control.conditional.when.cs"}},end:"(?=:|})",patterns:[{include:"#case-guard"}]},{begin:"(?!\\s)",end:"(?=\\bwhen\\b|:|})",patterns:[{include:"#pattern"}]}]},"switch-statement":{patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#switch-label"},{include:"#statement"}]}]},"switch-statement-or-expression":{begin:"(?\\s*\\((?:[^\\(\\)]|\\g)+\\))\\s* +(?!=>|==)(?==)`},"tuple-deconstruction-element-list":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#tuple-deconstruction-element-list"},{include:"#declaration-expression-tuple"},{include:"#punctuation-comma"},{captures:{1:{name:"variable.other.readwrite.cs"}},match:`(?x) +(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s* +(?=[,)])`}]},"tuple-element":{captures:{1:{patterns:[{include:"#type"}]},6:{name:"entity.name.variable.tuple-element.cs"}},match:`(?x) +(? +(?: +(?: +(?:(?@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(? +\\g\\s* +(?\\s*<(?:[^<>]|\\g)+>\\s*)? +) +(?:\\s*\\.\\s*\\g)* | +(?\\s*\\((?:[^\\(\\)]|\\g)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s* +\\[ +(?:\\s*,\\s*)* +\\] +\\s* +(?:\\?)? +\\s* +)* +) +) +(?:(?\\g)\\b)?`},"tuple-literal":{begin:"(\\()(?=.*[:,])",beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#tuple-literal-element"},{include:"#expression"},{include:"#punctuation-comma"}]},"tuple-literal-element":{begin:`(?x) +(@?[_[:alpha:]][_[:alnum:]]*)\\s* +(?=:)`,beginCaptures:{1:{name:"entity.name.variable.tuple-element.cs"}},end:"(:)",endCaptures:{0:{name:"punctuation.separator.colon.cs"}}},"tuple-type":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#tuple-element"},{include:"#punctuation-comma"}]},type:{patterns:[{include:"#comment"},{include:"#ref-modifier"},{include:"#readonly-modifier"},{include:"#tuple-type"},{include:"#type-builtin"},{include:"#type-name"},{include:"#type-arguments"},{include:"#type-array-suffix"},{include:"#type-nullable-suffix"},{include:"#type-pointer-suffix"}]},"type-arguments":{begin:"<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.cs"}},end:">",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.cs"}},patterns:[{include:"#type"},{include:"#punctuation-comma"}]},"type-array-suffix":{begin:"\\[",beginCaptures:{0:{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{0:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#intrusive"},{include:"#punctuation-comma"}]},"type-builtin":{captures:{1:{name:"keyword.type.$1.cs"}},match:"\\b(bool|s?byte|u?short|n?u?int|u?long|float|double|decimal|char|string|object|void|dynamic)\\b"},"type-declarations":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#class-declaration"},{include:"#delegate-declaration"},{include:"#enum-declaration"},{include:"#interface-declaration"},{include:"#struct-declaration"},{include:"#record-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"type-name":{patterns:[{captures:{1:{name:"entity.name.type.alias.cs"},2:{name:"punctuation.separator.coloncolon.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)"},{captures:{1:{name:"entity.name.type.cs"},2:{name:"punctuation.accessor.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)"},{captures:{1:{name:"punctuation.accessor.cs"},2:{name:"entity.name.type.cs"}},match:"(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.cs"}]},"type-nullable-suffix":{match:"\\?",name:"punctuation.separator.question-mark.cs"},"type-operator-expression":{begin:"\\b(default|sizeof|typeof)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.expression.$1.cs"},2:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#type"}]},"type-parameter-list":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.cs"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.cs"}},patterns:[{match:"\\b(in|out)\\b",name:"storage.modifier.$1.cs"},{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b",name:"entity.name.type.type-parameter.cs"},{include:"#comment"},{include:"#punctuation-comma"},{include:"#attribute-section"}]},"type-pattern":{begin:"(?=@?[_[:alpha:]][_[:alnum:]]*)",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\G",end:"(?!\\G[@_[:alpha:]])(?=[\\({@_[:alpha:])}\\],;:=&|^]|(?:\\s|^)\\?|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#type-subpattern"}]},{begin:"(?=[\\({@_[:alpha:]])",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#positional-pattern"},{include:"#property-pattern"},{include:"#simple-designation-pattern"}]}]},"type-pointer-suffix":{match:"\\*",name:"punctuation.separator.asterisk.cs"},"type-subpattern":{patterns:[{include:"#type-builtin"},{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(::)",beginCaptures:{1:{name:"entity.name.type.alias.cs"},2:{name:"punctuation.separator.coloncolon.cs"}},end:"(?<=[_[:alnum:]])|(?=[.<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.cs"}]},{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.cs"},{begin:"\\.",beginCaptures:{0:{name:"punctuation.accessor.cs"}},end:"(?<=[_[:alnum:]])|(?=[<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.cs"}]},{include:"#type-arguments"},{include:"#type-array-suffix"},{match:"(?)",beginCaptures:{1:{name:"keyword.operator.assignment.cs"}},end:"(?=[,\\)\\];}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"verbatim-interpolated-string":{begin:'(?:\\$@|@\\$)"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"(?=[^"])',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#verbatim-string-character-escape"},{include:"#interpolation"}]},"verbatim-string-character-escape":{match:'""',name:"constant.character.escape.cs"},"verbatim-string-literal":{begin:'@"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'"(?=[^"])',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#verbatim-string-character-escape"}]},"when-clause":{begin:"(?",endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.unquoted.cdata.cs"},"xml-character-entity":{patterns:[{captures:{1:{name:"punctuation.definition.constant.cs"},3:{name:"punctuation.definition.constant.cs"}},match:`(?x) +(&) +( +(?:[[:alpha:]:_][[:alnum:]:_.-]*)| +(?:\\#[[:digit:]]+)| +(?:\\#x[[:xdigit:]]+) +) +(;)`,name:"constant.character.entity.cs"},{match:"&",name:"invalid.illegal.bad-ampersand.cs"}]},"xml-comment":{begin:"",endCaptures:{0:{name:"punctuation.definition.comment.cs"}},name:"comment.block.cs"},"xml-doc-comment":{patterns:[{include:"#xml-comment"},{include:"#xml-character-entity"},{include:"#xml-cdata"},{include:"#xml-tag"}]},"xml-string":{patterns:[{begin:"\\'",beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:"\\'",endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.single.cs",patterns:[{include:"#xml-character-entity"}]},{begin:'\\"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'\\"',endCaptures:{0:{name:"punctuation.definition.string.end.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#xml-character-entity"}]}]},"xml-tag":{begin:`(?x) +()",endCaptures:{1:{name:"punctuation.definition.tag.cs"}},name:"meta.tag.cs",patterns:[{include:"#xml-attribute"}]},"yield-break-statement":{captures:{1:{name:"keyword.control.flow.yield.cs"},2:{name:"keyword.control.flow.break.cs"}},match:"(?>>",name:"invalid.deprecated.combinator.css"},{match:">>|>|\\+|~",name:"keyword.operator.combinator.css"}]},commas:{match:",",name:"punctuation.separator.list.comma.css"},"comment-block":{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.css"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.css"}},name:"comment.block.css"},escapes:{patterns:[{match:"\\\\[0-9a-fA-F]{1,6}",name:"constant.character.escape.codepoint.css"},{begin:"\\\\$\\s*",end:"^(?<:=]|\\)|/\\*)`},"media-query":{begin:"\\G",end:"(?=\\s*[{;])",patterns:[{include:"#comment-block"},{include:"#escapes"},{include:"#media-types"},{match:"(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)",name:"keyword.operator.logical.$1.media.css"},{match:"(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)",name:"keyword.operator.logical.and.media.css"},{match:",(?:(?:\\s*,)+|(?=\\s*[;){]))",name:"invalid.illegal.comma.css"},{include:"#commas"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.css"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.css"}},patterns:[{include:"#media-features"},{include:"#media-feature-keywords"},{match:":",name:"punctuation.separator.key-value.css"},{match:">=|<=|=|<|>",name:"keyword.operator.comparison.css"},{captures:{1:{name:"constant.numeric.css"},2:{name:"keyword.operator.arithmetic.css"},3:{name:"constant.numeric.css"}},match:"(\\d+)\\s*(/)\\s*(\\d+)",name:"meta.ratio.css"},{include:"#numeric-values"},{include:"#comment-block"}]}]},"media-query-list":{begin:"(?=\\s*[^{;])",end:"(?=\\s*[{;])",patterns:[{include:"#media-query"}]},"media-types":{captures:{1:{name:"support.constant.media.css"},2:{name:"invalid.deprecated.constant.media.css"}},match:`(?xi) +(?<=^|\\s|,|\\*/) +(?: + +(all|print|screen|speech) +| + +(aural|braille|embossed|handheld|projection|tty|tv) +) +(?=$|[{,\\s;]|/\\*)`},"numeric-values":{patterns:[{captures:{1:{name:"punctuation.definition.constant.css"}},match:"(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",name:"constant.other.color.rgb-value.hex.css"},{captures:{1:{name:"keyword.other.unit.percentage.css"},2:{name:"keyword.other.unit.${2:/downcase}.css"}},match:`(?xi) (?+~|] +| /\\* +) +| + +(?: +[-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +)* +(?: +[!"'%&(*;+~|] +| /\\* +)`,name:"entity.other.attribute-name.class.css"},{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#escapes"}]}},match:`(?x) +(\\#) +( +-? +(?![0-9]) +(?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+ +) +(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)`,name:"entity.other.attribute-name.id.css"},{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.entity.begin.bracket.square.css"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.entity.end.bracket.square.css"}},name:"meta.attribute-selector.css",patterns:[{include:"#comment-block"},{include:"#string"},{captures:{1:{name:"storage.modifier.ignore-case.css"}},match:`(?<=["'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)`},{captures:{1:{name:"string.unquoted.attribute-value.css",patterns:[{include:"#escapes"}]}},match:`(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\"'\\s\\]]|\\\\.)+)`},{include:"#escapes"},{match:"[~|^$*]?=",name:"keyword.operator.pattern.css"},{match:"\\|",name:"punctuation.separator.css"},{captures:{1:{name:"entity.other.namespace-prefix.css",patterns:[{include:"#escapes"}]}},match:`(?x) +# Qualified namespace prefix +( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+ +| \\* +) +# Lookahead to ensure there's a valid identifier ahead +(?= +\\| (?!\\s|=|$|\\]) +(?: -?(?!\\d) +| [\\\\\\w-] +| [^\\x00-\\x7F] +) +)`},{captures:{1:{name:"entity.other.attribute-name.css",patterns:[{include:"#escapes"}]}},match:`(?x) +(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+) +\\s* +(?=[~|^\\]$*=]|/\\*)`}]},{include:"#pseudo-classes"},{include:"#pseudo-elements"},{include:"#functional-pseudo-classes"},{match:`(?x) (?\\s,.\\#|){:\\[]|/\\*|$)`,name:"entity.name.tag.css"},"unicode-range":{captures:{0:{name:"constant.other.unicode-range.css"},1:{name:"punctuation.separator.dash.unicode-range.css"}},match:"(?<])=(?![=~])",name:"punctuation.bind"},{match:"<-",name:"punctuation.arrow"},{include:"#expression"}]},expression:{patterns:[{patterns:[{captures:{1:{name:"keyword.control.for"},2:{name:"variable.other"},3:{name:"punctuation.separator"},4:{name:"variable.other"},5:{name:"keyword.control.in"}},match:"(?=|[<](?![-=])|[>](?![=])",name:"keyword.operator.comparison"},{match:"&{2}|\\|{2}|!(?![=~])",name:"keyword.operator.logical"},{match:"&(?!&)|\\|(?!\\|)",name:"keyword.operator.set"}]},{captures:{1:{name:"punctuation.accessor"},2:{name:"variable.other.member"}},match:"(?|<>|<|>|=~|=)",name:"keyword.operator.compare.cypher"},{match:"(?i)\\b(OR|AND|XOR|IS)\\b",name:"keyword.operator.logical.cypher"},{match:"(?i)\\b(IN)\\b",name:"keyword.operator.in.cypher"}]},"path-patterns":{patterns:[{match:"(<--|-->|--)",name:"support.function.relationship-pattern.cypher"},{begin:"(<-|-)(\\[)",beginCaptures:{1:{name:"support.function.relationship-pattern-start.cypher"},2:{name:"keyword.operator.relationship-pattern-start.cypher"}},end:"(])(->|-)",endCaptures:{1:{name:"keyword.operator.relationship-pattern-end.cypher"},2:{name:"support.function.relationship-pattern-end.cypher"}},name:"path-pattern.cypher",patterns:[{include:"#identifiers"},{captures:{1:{name:"keyword.operator.relationship-type-start.cypher"},2:{name:"entity.name.class.relationship.type.cypher"}},match:"(:)((?:`.+?`)|(?:[\\p{L}_][\\p{L}0-9_]*))",name:"entity.name.class.relationship-type.cypher"},{captures:{1:{name:"support.type.operator.relationship-type-or.cypher"},2:{name:"entity.name.class.relationship.type-or.cypher"}},match:"(\\|)(\\s*)((?:`.+?`)|(?:[\\p{L}_][\\p{L}0-9_]*))",name:"entity.name.class.relationship-type-ored.cypher"},{match:"(?:\\?\\*|\\?|\\*)\\s*(?:\\d+\\s*(?:\\.\\.\\s*\\d+)?)?",name:"support.function.relationship-pattern.quant.cypher"},{include:"#properties_literal"}]}]},properties_literal:{patterns:[{begin:"{",beginCaptures:{0:{name:"keyword.control.properties_literal.cypher"}},end:"}",endCaptures:{0:{name:"keyword.control.properties_literal.cypher"}},name:"source.cypher",patterns:[{match:":|,",name:"keyword.control.properties_literal.seperator.cypher"},{include:"#comments"},{include:"#constants"},{include:"#functions"},{include:"#operators"},{include:"#identifiers"},{include:"#numbers"},{include:"#strings"}]}]},string_escape:{captures:{2:{name:"string.quoted.double.cypher"}},match:`(\\\\\\\\|\\\\[tbnrf])|(\\\\'|\\\\")`,name:"constant.character.escape.cypher"},strings:{patterns:[{begin:"'",end:"'",name:"string.quoted.single.cypher",patterns:[{include:"#string_escape"}]},{begin:'"',end:'"',name:"string.quoted.double.cypher",patterns:[{include:"#string_escape"}]}]}},scopeName:"source.cypher",aliases:["cql"]});var t=[e];export{t as default}; diff --git a/assets/chunks/d.PifQWv0n.js b/assets/chunks/d.PifQWv0n.js new file mode 100644 index 000000000..4ea14cada --- /dev/null +++ b/assets/chunks/d.PifQWv0n.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"D",fileTypes:["d","di","dpp"],name:"d",patterns:[{include:"#comment"},{include:"#type"},{include:"#statement"},{include:"#expression"}],repository:{"aggregate-declaration":{patterns:[{include:"#class-declaration"},{include:"#interface-declaration"},{include:"#struct-declaration"},{include:"#union-declaration"},{include:"#mixin-template-declaration"},{include:"#template-declaration"}]},"alias-declaration":{patterns:[{begin:"\\b(alias)\\b\\s*",beginCaptures:{1:{name:"keyword.other.alias.d"}},end:";",endCaptures:{0:{name:"meta.alias.end.d"}},patterns:[{include:"#type"},{match:"=(?![=>])",name:"keyword.operator.equal.alias.d"},{include:"#expression"}]}]},"align-attribute":{patterns:[{begin:"\\balign\\s*\\(",end:"\\)",name:"storage.modifier.align-attribute.d",patterns:[{include:"#integer-literal"}]},{match:"\\balign\\b\\s*(?!\\()",name:"storage.modifier.align-attribute.d"}]},"alternate-wysiwyg-string":{patterns:[{begin:"`",end:"`[cwd]?",name:"string.alternate-wysiwyg-string.d",patterns:[{include:"#wysiwyg-characters"}]}]},"arbitrary-delimited-string":{begin:'q"(\\w+)',end:'\\1"',name:"string.delimited.d",patterns:[{match:".",name:"string.delimited.d"}]},"arithmetic-expression":{patterns:[{match:"\\^\\^|\\+\\+|--|(?>>=|\\^\\^=|>>=|<<=|~=|\\^=|\\|=|&=|%=|/=|\\*=|-=|\\+=|=(?!>)",name:"keyword.operator.assign.d"}]},attribute:{patterns:[{include:"#linkage-attribute"},{include:"#align-attribute"},{include:"#deprecated-attribute"},{include:"#protection-attribute"},{include:"#pragma"},{match:"\\b(static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",name:"entity.other.attribute-name.d"},{include:"#property"}]},"base-type":{patterns:[{match:"\\b(auto|bool|byte|ubyte|short|ushort|int|uint|long|ulong|char|wchar|dchar|float|double|real|ifloat|idouble|ireal|cfloat|cdouble|creal|void|noreturn)\\b",name:"storage.type.basic-type.d"},{match:"\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b(?!\\s*=)",name:"storage.type.basic-type.d"}]},"binary-integer":{patterns:[{match:"\\b(0b|0B)[0-1_]+(Lu|LU|uL|UL|L|u|U)?\\b",name:"constant.numeric.integer.binary.d"}]},"bitwise-expression":{patterns:[{match:"\\||\\^|&",name:"keyword.operator.bitwise.d"}]},"block-comment":{patterns:[{begin:"/((?!\\*/)\\*)+",beginCaptures:{0:{name:"comment.block.begin.d"}},end:"\\*+/",endCaptures:{0:{name:"comment.block.end.d"}},name:"comment.block.content.d"}]},"break-statement":{patterns:[{match:"\\bbreak\\b",name:"keyword.control.break.d"}]},"case-statement":{patterns:[{begin:"\\b(case)\\b\\s*",beginCaptures:{1:{name:"keyword.control.case.range.d"}},end:":",endCaptures:{0:{name:"meta.case.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},"cast-expression":{patterns:[{begin:"\\b(cast)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.cast.d"},2:{name:"keyword.operator.cast.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.operator.cast.end.d"}},patterns:[{include:"#type"},{include:"#extended-type"}]}]},catch:{patterns:[{begin:"\\b(catch)\\b\\s*(?=\\()",captures:{1:{name:"keyword.control.catch.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},catches:{patterns:[{include:"#catch"}]},character:{patterns:[{match:"[\\w\\s]+",name:"string.character.d"}]},"character-literal":{patterns:[{begin:"'",end:"'",name:"string.character-literal.d",patterns:[{include:"#character"},{include:"#escape-sequence"}]}]},"class-declaration":{patterns:[{captures:{1:{name:"storage.type.class.d"},2:{name:"entity.name.class.d"}},match:"\\b(class)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"},{include:"#protection-attribute"},{include:"#class-members"}]},"class-members":{patterns:[{include:"#shared-static-constructor"},{include:"#shared-static-destructor"},{include:"#constructor"},{include:"#destructor"},{include:"#postblit"},{include:"#invariant"},{include:"#member-function-attribute"}]},colon:{patterns:[{match:":",name:"support.type.colon.d"}]},comma:{patterns:[{match:",",name:"keyword.operator.comma.d"}]},comment:{patterns:[{include:"#block-comment"},{include:"#line-comment"},{include:"#nesting-block-comment"}]},condition:{patterns:[{include:"#version-condition"},{include:"#debug-condition"},{include:"#static-if-condition"}]},"conditional-declaration":{patterns:[{include:"#condition"},{match:"\\belse\\b",name:"keyword.control.else.d"},{include:"#colon"},{include:"#decl-defs"}]},"conditional-expression":{patterns:[{match:"\\s(\\?|:)\\s",name:"keyword.operator.ternary.d"}]},"conditional-statement":{patterns:[{include:"#condition"},{include:"#no-scope-non-empty-statement"},{match:"\\belse\\b",name:"keyword.control.else.d"}]},constructor:{patterns:[{match:"\\bthis\\b",name:"entity.name.function.constructor.d"}]},"continue-statement":{patterns:[{match:"\\bcontinue\\b",name:"keyword.control.continue.d"}]},"debug-condition":{patterns:[{begin:"\\bdebug\\s*\\(",beginCaptures:{0:{name:"keyword.other.debug.identifier.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.debug.identifier.end.d"}},patterns:[{include:"#integer-literal"},{include:"#identifier"}]},{match:"\\bdebug\\b\\s*(?!\\()",name:"keyword.other.debug.plain.d"}]},"debug-specification":{patterns:[{match:"\\bdebug\\b\\s*(?==)",name:"keyword.other.debug-specification.d"}]},"decimal-float":{patterns:[{match:"\\b((\\.[0-9])|(0\\.)|(([1-9]|(0[1-9_]))[0-9_]*\\.))[0-9_]*((e-|E-|e\\+|E\\+|e|E)[0-9][0-9_]*)?[LfF]?i?\\b",name:"constant.numeric.float.decimal.d"}]},"decimal-integer":{patterns:[{match:"\\b(0(?=[^\\dxXbB]))|([1-9][0-9_]*)(Lu|LU|uL|UL|L|u|U)?\\b",name:"constant.numeric.integer.decimal.d"}]},declaration:{patterns:[{include:"#alias-declaration"},{include:"#aggregate-declaration"},{include:"#enum-declaration"},{include:"#import-declaration"},{include:"#storage-class"},{include:"#void-initializer"},{include:"#mixin-declaration"}]},"declaration-statement":{patterns:[{include:"#declaration"}]},"default-statement":{patterns:[{captures:{1:{name:"keyword.control.case.default.d"},2:{name:"meta.default.colon.d"}},match:"\\b(default)\\s*(:)"}]},"delete-expression":{patterns:[{match:"\\bdelete\\s+",name:"keyword.other.delete.d"}]},"delimited-string":{begin:'q"',end:'"',name:"string.delimited.d",patterns:[{include:"#delimited-string-bracket"},{include:"#delimited-string-parens"},{include:"#delimited-string-angle-brackets"},{include:"#delimited-string-braces"}]},"delimited-string-angle-brackets":{patterns:[{begin:"<",end:">",name:"constant.character.angle-brackets.d",patterns:[{include:"#wysiwyg-characters"}]}]},"delimited-string-braces":{patterns:[{begin:"\\{",end:"\\}",name:"constant.character.delimited.braces.d",patterns:[{include:"#wysiwyg-characters"}]}]},"delimited-string-bracket":{patterns:[{begin:"\\[",end:"\\]",name:"constant.characters.delimited.brackets.d",patterns:[{include:"#wysiwyg-characters"}]}]},"delimited-string-parens":{patterns:[{begin:"\\(",end:"\\)",name:"constant.character.delimited.parens.d",patterns:[{include:"#wysiwyg-characters"}]}]},"deprecated-statement":{patterns:[{begin:"\\bdeprecated\\s*\\(",beginCaptures:{0:{name:"keyword.other.deprecated.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.deprecated.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]},{match:"\\bdeprecated\\b\\s*(?!\\()",name:"keyword.other.deprecated.plain.d"}]},destructor:{patterns:[{match:"\\b~this\\s*\\(\\s*\\)",name:"entity.name.class.destructor.d"}]},"do-statement":{patterns:[{match:"\\bdo\\b",name:"keyword.control.do.d"}]},"double-quoted-characters":{patterns:[{include:"#character"},{include:"#end-of-line"},{include:"#escape-sequence"}]},"double-quoted-string":{patterns:[{begin:'"',end:'"[cwd]?',name:"string.double-quoted-string.d",patterns:[{include:"#double-quoted-characters"}]}]},"end-of-line":{patterns:[{match:"\\n+",name:"string.character.end-of-line.d"}]},"enum-declaration":{patterns:[{begin:"\\b(enum)\\b\\s+(?=.*[=;])",beginCaptures:{1:{name:"storage.type.enum.d"}},end:"([A-Za-z_][\\w_\\d]*)\\s*(?=;|=|\\()(;)?",endCaptures:{1:{name:"entity.name.type.enum.d"},2:{name:"meta.enum.end.d"}},patterns:[{include:"#type"},{include:"#extended-type"},{match:"=(?![=>])",name:"keyword.operator.equal.alias.d"}]}]},eof:{patterns:[{begin:"__EOF__",beginCaptures:{0:{name:"comment.block.documentation.eof.start.d"}},end:"(?!__NEVER_MATCH__)__NEVER_MATCH__",name:"text.eof.d"}]},equal:{patterns:[{match:"=(?![=>])",name:"keyword.operator.equal.d"}]},"escape-sequence":{patterns:[{match:"(\\\\(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|Aelig|Ccedil|egrave|eacute|ecirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|nabla|isin|notin|ni|prod|sum|minux|lowast|radic|prop|infin|ang|and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|loz|spades|clubs|hearts|diams|lang|rang))",name:"constant.character.escape-sequence.entity.d"},{match:"(\\\\x[0-9a-fA-F_]{2}|\\\\u[0-9a-fA-F_]{4}|\\\\U[0-9a-fA-F_]{8}|\\\\[0-7]{1,3})",name:"constant.character.escape-sequence.number.d"},{match:`(\\\\t|\\\\'|\\\\"|\\\\\\?|\\\\0|\\\\a|\\\\b|\\\\f|\\\\n|\\\\r|\\\\v|\\\\\\\\)`,name:"constant.character.escape-sequence.d"}]},expression:{patterns:[{include:"#index-expression"},{include:"#expression-no-index"}]},"expression-no-index":{patterns:[{include:"#function-literal"},{include:"#assert-expression"},{include:"#assign-expression"},{include:"#mixin-expression"},{include:"#import-expression"},{include:"#traits-expression"},{include:"#is-expression"},{include:"#typeid-expression"},{include:"#shift-expression"},{include:"#logical-expression"},{include:"#rel-expression"},{include:"#bitwise-expression"},{include:"#identity-expression"},{include:"#in-expression"},{include:"#conditional-expression"},{include:"#arithmetic-expression"},{include:"#new-expression"},{include:"#delete-expression"},{include:"#cast-expression"},{include:"#type-specialization"},{include:"#comma"},{include:"#special-keyword"},{include:"#functions"},{include:"#type"},{include:"#parentheses-expression"},{include:"#lexical"}]},"extended-type":{patterns:[{match:"\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",name:"entity.name.type.d"},{begin:"\\[",beginCaptures:{0:{name:"storage.type.array.expression.begin.d"}},end:"\\]",endCaptures:{0:{name:"storage.type.array.expression.end.d"}},patterns:[{match:"\\.\\.|\\$",name:"keyword.operator.slice.d"},{include:"#type"},{include:"#expression"}]}]},"final-switch-statement":{patterns:[{begin:"\\b(final\\s+switch)\\b\\s*",captures:{1:{name:"keyword.control.final.switch.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"finally-statement":{patterns:[{match:"\\bfinally\\b",name:"keyword.control.throw.d"}]},"float-literal":{patterns:[{include:"#decimal-float"},{include:"#hexadecimal-float"}]},"for-statement":{patterns:[{begin:"\\b(for)\\b\\s*",captures:{1:{name:"keyword.control.for.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"foreach-reverse-statement":{patterns:[{begin:"\\b(foreach_reverse)\\b\\s*",captures:{1:{name:"keyword.control.foreach_reverse.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{match:";",name:"keyword.operator.semi-colon.d"},{include:"source.d"}]}]}]},"foreach-statement":{patterns:[{begin:"\\b(foreach)\\b\\s*",captures:{1:{name:"keyword.control.foreach.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{match:";",name:"keyword.operator.semi-colon.d"},{include:"source.d"}]}]}]},"function-attribute":{patterns:[{match:"\\b(nothrow|pure)\\b",name:"storage.type.modifier.function-attribute.d"},{include:"#property"}]},"function-body":{patterns:[{include:"#in-statement"},{include:"#out-statement"},{include:"#block-statement"}]},"function-literal":{patterns:[{match:"=>",name:"keyword.operator.lambda.d"},{match:"\\b(function|delegate)\\b",name:"keyword.other.function-literal.d"},{begin:"\\b([_\\w][_\\d\\w]*)\\s*(=>)",beginCaptures:{1:{name:"variable.parameter.d"},2:{name:"meta.lexical.token.symbolic.d"}},end:"(?=[\\);,\\]}])",patterns:[{include:"source.d"}]},{begin:"(?<=\\)|\\()(\\s*)({)",beginCaptures:{1:{name:"source.d"},2:{name:"source.d"}},end:"}",patterns:[{include:"source.d"}]}]},"function-prelude":{patterns:[{match:"(?!typeof|typeid)((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\s*(?=\\()",name:"entity.name.function.d"}]},functions:{patterns:[{include:"#function-attribute"},{include:"#function-prelude"}]},"goto-statement":{patterns:[{match:"\\bgoto\\s+default\\b",name:"keyword.control.goto.d"},{match:"\\bgoto\\s+case\\b",name:"keyword.control.goto.d"},{match:"\\bgoto\\b",name:"keyword.control.goto.d"}]},"hex-string":{patterns:[{begin:'x"',end:'"[cwd]?',name:"string.hex-string.d",patterns:[{match:"[a-fA-F0-9_s]+",name:"constant.character.hex-string.d"}]}]},"hexadecimal-float":{patterns:[{match:"\\b0[xX][0-9a-fA-F_]*(\\.[0-9a-fA-F_]*)?(p-|P-|p\\+|P\\+|p|P)[0-9][0-9_]*[LfF]?i?\\b",name:"constant.numeric.float.hexadecimal.d"}]},"hexadecimal-integer":{patterns:[{match:"\\b(0x|0X)([0-9a-fA-F][0-9a-fA-F_]*)(Lu|LU|uL|UL|L|u|U)?\\b",name:"constant.numeric.integer.hexadecimal.d"}]},identifier:{patterns:[{match:"\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",name:"variable.d"}]},"identifier-list":{patterns:[{match:",",name:"keyword.other.comma.d"},{include:"#identifier"}]},"identity-expression":{patterns:[{match:"\\b(is|!is)\\b",name:"keyword.operator.identity.d"}]},"if-statement":{patterns:[{begin:"\\b(if)\\b\\s*",captures:{1:{name:"keyword.control.if.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]},{match:"\\belse\\b\\s*",name:"keyword.control.else.d"}]},"import-declaration":{patterns:[{begin:"\\b(static\\s+)?(import)\\s+(?!\\()",beginCaptures:{1:{name:"keyword.package.import.d"},2:{name:"keyword.package.import.d"}},end:";",endCaptures:{0:{name:"meta.import.end.d"}},patterns:[{include:"#import-identifier"},{include:"#comma"},{include:"#comment"}]}]},"import-expression":{patterns:[{begin:"\\b(import)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.import.d"},2:{name:"keyword.other.import.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.import.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},"import-identifier":{patterns:[{match:"([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",name:"variable.parameter.import.d"}]},"in-expression":{patterns:[{match:"\\b(in|!in)\\b",name:"keyword.operator.in.d"}]},"in-statement":{patterns:[{match:"\\bin\\b",name:"keyword.control.in.d"}]},"index-expression":{patterns:[{begin:"\\[",end:"\\]",patterns:[{match:"\\.\\.|\\$",name:"keyword.operator.slice.d"},{include:"#expression-no-index"}]}]},"integer-literal":{patterns:[{include:"#decimal-integer"},{include:"#binary-integer"},{include:"#hexadecimal-integer"}]},"interface-declaration":{patterns:[{captures:{1:{name:"storage.type.interface.d"},2:{name:"entity.name.type.interface.d"}},match:"\\b(interface)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"}]},invariant:{patterns:[{match:"\\binvariant\\s*\\(\\s*\\)",name:"entity.name.class.invariant.d"}]},"is-expression":{patterns:[{begin:"\\bis\\s*\\(",beginCaptures:{0:{name:"keyword.token.is.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.token.is.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},keyword:{patterns:[{match:"\\babstract\\b",name:"keyword.token.abstract.d"},{match:"\\balias\\b",name:"keyword.token.alias.d"},{match:"\\balign\\b",name:"keyword.token.align.d"},{match:"\\basm\\b",name:"keyword.token.asm.d"},{match:"\\bassert\\b",name:"keyword.token.assert.d"},{match:"\\bauto\\b",name:"keyword.token.auto.d"},{match:"\\bbool\\b",name:"keyword.token.bool.d"},{match:"\\bbreak\\b",name:"keyword.token.break.d"},{match:"\\bbyte\\b",name:"keyword.token.byte.d"},{match:"\\bcase\\b",name:"keyword.token.case.d"},{match:"\\bcast\\b",name:"keyword.token.cast.d"},{match:"\\bcatch\\b",name:"keyword.token.catch.d"},{match:"\\bcdouble\\b",name:"keyword.token.cdouble.d"},{match:"\\bcent\\b",name:"keyword.token.cent.d"},{match:"\\bcfloat\\b",name:"keyword.token.cfloat.d"},{match:"\\bchar\\b",name:"keyword.token.char.d"},{match:"\\bclass\\b",name:"keyword.token.class.d"},{match:"\\bconst\\b",name:"keyword.token.const.d"},{match:"\\bcontinue\\b",name:"keyword.token.continue.d"},{match:"\\bcreal\\b",name:"keyword.token.creal.d"},{match:"\\bdchar\\b",name:"keyword.token.dchar.d"},{match:"\\bdebug\\b",name:"keyword.token.debug.d"},{match:"\\bdefault\\b",name:"keyword.token.default.d"},{match:"\\bdelegate\\b",name:"keyword.token.delegate.d"},{match:"\\bdelete\\b",name:"keyword.token.delete.d"},{match:"\\bdeprecated\\b",name:"keyword.token.deprecated.d"},{match:"\\bdo\\b",name:"keyword.token.do.d"},{match:"\\bdouble\\b",name:"keyword.token.double.d"},{match:"\\belse\\b",name:"keyword.token.else.d"},{match:"\\benum\\b",name:"keyword.token.enum.d"},{match:"\\bexport\\b",name:"keyword.token.export.d"},{match:"\\bextern\\b",name:"keyword.token.extern.d"},{match:"\\bfalse\\b",name:"constant.language.boolean.false.d"},{match:"\\bfinal\\b",name:"keyword.token.final.d"},{match:"\\bfinally\\b",name:"keyword.token.finally.d"},{match:"\\bfloat\\b",name:"keyword.token.float.d"},{match:"\\bfor\\b",name:"keyword.token.for.d"},{match:"\\bforeach\\b",name:"keyword.token.foreach.d"},{match:"\\bforeach_reverse\\b",name:"keyword.token.foreach_reverse.d"},{match:"\\bfunction\\b",name:"keyword.token.function.d"},{match:"\\bgoto\\b",name:"keyword.token.goto.d"},{match:"\\bidouble\\b",name:"keyword.token.idouble.d"},{match:"\\bif\\b",name:"keyword.token.if.d"},{match:"\\bifloat\\b",name:"keyword.token.ifloat.d"},{match:"\\bimmutable\\b",name:"keyword.token.immutable.d"},{match:"\\bimport\\b",name:"keyword.token.import.d"},{match:"\\bin\\b",name:"keyword.token.in.d"},{match:"\\binout\\b",name:"keyword.token.inout.d"},{match:"\\bint\\b",name:"keyword.token.int.d"},{match:"\\binterface\\b",name:"keyword.token.interface.d"},{match:"\\binvariant\\b",name:"keyword.token.invariant.d"},{match:"\\bireal\\b",name:"keyword.token.ireal.d"},{match:"\\bis\\b",name:"keyword.token.is.d"},{match:"\\blazy\\b",name:"keyword.token.lazy.d"},{match:"\\blong\\b",name:"keyword.token.long.d"},{match:"\\bmacro\\b",name:"keyword.token.macro.d"},{match:"\\bmixin\\b",name:"keyword.token.mixin.d"},{match:"\\bmodule\\b",name:"keyword.token.module.d"},{match:"\\bnew\\b",name:"keyword.token.new.d"},{match:"\\bnothrow\\b",name:"keyword.token.nothrow.d"},{match:"\\bnull\\b",name:"constant.language.null.d"},{match:"\\bout\\b",name:"keyword.token.out.d"},{match:"\\boverride\\b",name:"keyword.token.override.d"},{match:"\\bpackage\\b",name:"keyword.token.package.d"},{match:"\\bpragma\\b",name:"keyword.token.pragma.d"},{match:"\\bprivate\\b",name:"keyword.token.private.d"},{match:"\\bprotected\\b",name:"keyword.token.protected.d"},{match:"\\bpublic\\b",name:"keyword.token.public.d"},{match:"\\bpure\\b",name:"keyword.token.pure.d"},{match:"\\breal\\b",name:"keyword.token.real.d"},{match:"\\bref\\b",name:"keyword.token.ref.d"},{match:"\\breturn\\b",name:"keyword.token.return.d"},{match:"\\bscope\\b",name:"keyword.token.scope.d"},{match:"\\bshared\\b",name:"keyword.token.shared.d"},{match:"\\bshort\\b",name:"keyword.token.short.d"},{match:"\\bstatic\\b",name:"keyword.token.static.d"},{match:"\\bstruct\\b",name:"keyword.token.struct.d"},{match:"\\bsuper\\b",name:"keyword.token.super.d"},{match:"\\bswitch\\b",name:"keyword.token.switch.d"},{match:"\\bsynchronized\\b",name:"keyword.token.synchronized.d"},{match:"\\btemplate\\b",name:"keyword.token.template.d"},{match:"\\bthis\\b",name:"keyword.token.this.d"},{match:"\\bthrow\\b",name:"keyword.token.throw.d"},{match:"\\btrue\\b",name:"constant.language.boolean.true.d"},{match:"\\btry\\b",name:"keyword.token.try.d"},{match:"\\btypedef\\b",name:"keyword.token.typedef.d"},{match:"\\btypeid\\b",name:"keyword.token.typeid.d"},{match:"\\btypeof\\b",name:"keyword.token.typeof.d"},{match:"\\bubyte\\b",name:"keyword.token.ubyte.d"},{match:"\\bucent\\b",name:"keyword.token.ucent.d"},{match:"\\buint\\b",name:"keyword.token.uint.d"},{match:"\\bulong\\b",name:"keyword.token.ulong.d"},{match:"\\bunion\\b",name:"keyword.token.union.d"},{match:"\\bunittest\\b",name:"keyword.token.unittest.d"},{match:"\\bushort\\b",name:"keyword.token.ushort.d"},{match:"\\bversion\\b",name:"keyword.token.version.d"},{match:"\\bvoid\\b",name:"keyword.token.void.d"},{match:"\\bvolatile\\b",name:"keyword.token.volatile.d"},{match:"\\bwchar\\b",name:"keyword.token.wchar.d"},{match:"\\bwhile\\b",name:"keyword.token.while.d"},{match:"\\bwith\\b",name:"keyword.token.with.d"},{match:"\\b__FILE__\\b",name:"keyword.token.__FILE__.d"},{match:"\\b__MODULE__\\b",name:"keyword.token.__MODULE__.d"},{match:"\\b__LINE__\\b",name:"keyword.token.__LINE__.d"},{match:"\\b__FUNCTION__\\b",name:"keyword.token.__FUNCTION__.d"},{match:"\\b__PRETTY_FUNCTION__\\b",name:"keyword.token.__PRETTY_FUNCTION__.d"},{match:"\\b__gshared\\b",name:"keyword.token.__gshared.d"},{match:"\\b__traits\\b",name:"keyword.token.__traits.d"},{match:"\\b__vector\\b",name:"keyword.token.__vector.d"},{match:"\\b__parameters\\b",name:"keyword.token.__parameters.d"}]},"labeled-statement":{patterns:[{match:"\\b(?!abstract|alias|align|asm|assert|auto|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|noreturn|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)[a-zA-Z_][a-zA-Z_0-9]*\\s*:",name:"entity.name.d"}]},lexical:{patterns:[{include:"#comment"},{include:"#string-literal"},{include:"#character-literal"},{include:"#float-literal"},{include:"#integer-literal"},{include:"#eof"},{include:"#special-tokens"},{include:"#special-token-sequence"},{include:"#keyword"},{include:"#identifier"}]},"line-comment":{patterns:[{match:"//+.*$",name:"comment.line.d"}]},"linkage-attribute":{patterns:[{begin:"\\bextern\\s*\\(\\s*C\\+\\+\\s*,",beginCaptures:{0:{name:"keyword.other.extern.cplusplus.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.extern.cplusplus.end.d"}},patterns:[{include:"#identifier"},{include:"#comma"}]},{begin:"\\bextern\\s*\\(",beginCaptures:{0:{name:"keyword.other.extern.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.extern.end.d"}},patterns:[{include:"#linkage-type"}]}]},"linkage-type":{patterns:[{match:"C|C\\+\\+|D|Windows|Pascal|System",name:"storage.modifier.linkage-type.d"}]},"logical-expression":{patterns:[{match:"\\|\\||&&|==|!=|!",name:"keyword.operator.logical.d"}]},"member-function-attribute":{patterns:[{match:"\\b(const|immutable|inout|shared)\\b",name:"storage.type.modifier.member-function-attribute"}]},"mixin-declaration":{patterns:[{begin:"\\bmixin\\s*\\(",beginCaptures:{0:{name:"keyword.mixin.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.mixin.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},"mixin-expression":{patterns:[{begin:"\\bmixin\\s*\\(",beginCaptures:{0:{name:"keyword.other.mixin.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.mixin.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},"mixin-statement":{patterns:[{begin:"\\bmixin\\s*\\(",beginCaptures:{0:{name:"keyword.control.mixin.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.control.mixin.end.d"}},patterns:[{include:"#comment"},{include:"#expression"},{include:"#comma"}]}]},"mixin-template-declaration":{patterns:[{captures:{1:{name:"storage.type.mixintemplate.d"},2:{name:"entity.name.type.mixintemplate.d"}},match:"\\b(mixin\\s*template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"}]},module:{packages:[{import:"#module-declaration"}]},"module-declaration":{patterns:[{begin:"\\b(module)\\s+",beginCaptures:{1:{name:"keyword.package.module.d"}},end:";",endCaptures:{0:{name:"meta.module.end.d"}},patterns:[{include:"#module-identifier"},{include:"#comment"}]}]},"module-identifier":{patterns:[{match:"([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",name:"variable.parameter.module.d"}]},"nesting-block-comment":{patterns:[{begin:"/((?!\\+/)\\+)+",beginCaptures:{0:{name:"comment.block.documentation.begin.d"}},end:"\\++/",endCaptures:{0:{name:"comment.block.documentation.end.d"}},name:"comment.block.documentation.content.d",patterns:[{include:"#nesting-block-comment"}]}]},"new-expression":{patterns:[{match:"\\bnew\\s+",name:"keyword.other.new.d"}]},"non-block-statement":{patterns:[{include:"#module-declaration"},{include:"#labeled-statement"},{include:"#if-statement"},{include:"#while-statement"},{include:"#do-statement"},{include:"#for-statement"},{include:"#static-foreach"},{include:"#static-foreach-reverse"},{include:"#foreach-statement"},{include:"#foreach-reverse-statement"},{include:"#switch-statement"},{include:"#final-switch-statement"},{include:"#case-statement"},{include:"#default-statement"},{include:"#continue-statement"},{include:"#break-statement"},{include:"#return-statement"},{include:"#goto-statement"},{include:"#with-statement"},{include:"#synchronized-statement"},{include:"#try-statement"},{include:"#catches"},{include:"#scope-guard-statement"},{include:"#throw-statement"},{include:"#finally-statement"},{include:"#asm-statement"},{include:"#pragma-statement"},{include:"#mixin-statement"},{include:"#conditional-statement"},{include:"#static-assert"},{include:"#deprecated-statement"},{include:"#unit-test"},{include:"#declaration-statement"}]},operands:{patterns:[{match:"\\?|:",name:"keyword.operator.ternary.assembly.d"},{match:"\\]|\\[",name:"keyword.operator.bracket.assembly.d"},{match:">>>|\\|\\||&&|==|!=|<=|>=|<<|>>|\\||\\^|&|<|>|\\+|-|\\*|/|%|~|!",name:"keyword.operator.assembly.d"}]},"out-statement":{patterns:[{begin:"\\bout\\s*\\(",beginCaptures:{0:{name:"keyword.control.out.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.control.out.end.d"}},patterns:[{include:"#identifier"}]},{match:"\\bout\\b",name:"keyword.control.out.d"}]},"parentheses-expression":{patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"#expression"}]}]},postblit:{patterns:[{match:"\\bthis\\s*\\(\\s*this\\s*\\)\\s",name:"entity.name.class.postblit.d"}]},pragma:{patterns:[{match:"\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*\\)",name:"keyword.other.pragma.d"},{begin:"\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*,",end:"\\)",name:"keyword.other.pragma.d",patterns:[{include:"#expression"}]},{match:"^#!.+",name:"gfm.markup.header.preprocessor.script-tag.d"}]},"pragma-statement":{patterns:[{include:"#pragma"}]},property:{patterns:[{match:"@(property|safe|trusted|system|disable|nogc)\\b",name:"entity.name.tag.property.d"},{include:"#user-defined-attribute"}]},"protection-attribute":{patterns:[{match:"\\b(private|package|protected|public|export)\\b",name:"keyword.other.protections.d"}]},register:{patterns:[{match:"\\b(XMM0|XMM1|XMM2|XMM3|XMM4|XMM5|XMM6|XMM7|MM0|MM1|MM2|MM3|MM4|MM5|MM6|MM7|ST\\(0\\)|ST\\(1\\)|ST\\(2\\)|ST\\(3\\)|ST\\(4\\)|ST\\(5\\)|ST\\(6\\)|ST\\(7\\)|ST|TR1|TR2|TR3|TR4|TR5|TR6|TR7|DR0|DR1|DR2|DR3|DR4|DR5|DR6|DR7|CR0|CR2|CR3|CR4|EAX|EBX|ECX|EDX|EBP|ESP|EDI|ESI|AL|AH|AX|BL|BH|BX|CL|CH|CX|DL|DH|DX|BP|SP|DI|SI|ES|CS|SS|DS|GS|FS)\\b",name:"storage.type.assembly.register.d"}]},"register-64":{patterns:[{match:"\\b(RAX|RBX|RCX|RDX|BPL|RBP|SPL|RSP|DIL|RDI|SIL|RSI|R8B|R8W|R8D|R8|R9B|R9W|R9D|R9|R10B|R10W|R10D|R10|R11B|R11W|R11D|R11|R12B|R12W|R12D|R12|R13B|R13W|R13D|R13|R14B|R14W|R14D|R14|R15B|R15W|R15D|R15|XMM8|XMM9|XMM10|XMM11|XMM12|XMM13|XMM14|XMM15|YMM0|YMM1|YMM2|YMM3|YMM4|YMM5|YMM6|YMM7|YMM8|YMM9|YMM10|YMM11|YMM12|YMM13|YMM14|YMM15)\\b",name:"storage.type.assembly.register-64.d"}]},"rel-expression":{patterns:[{match:"!<>=|!<>|<>=|!>=|!<=|<=|>=|<>|!>|!<|<|>",name:"keyword.operator.rel.d"}]},"return-statement":{patterns:[{match:"\\breturn\\b",name:"keyword.control.return.d"}]},"scope-guard-statement":{patterns:[{match:"\\bscope\\s*\\((exit|success|failure)\\)",name:"keyword.control.scope.d"}]},"semi-colon":{patterns:[{match:";",name:"meta.statement.end.d"}]},"shared-static-constructor":{patterns:[{match:"\\b(shared\\s+)?static\\s+this\\s*\\(\\s*\\)",name:"entity.name.class.constructor.shared-static.d"},{include:"#function-body"}]},"shared-static-destructor":{patterns:[{match:"\\b(shared\\s+)?static\\s+~this\\s*\\(\\s*\\)",name:"entity.name.class.destructor.static.d"}]},"shift-expression":{patterns:[{match:"<<|>>|>>>",name:"keyword.operator.shift.d"},{include:"#add-expression"}]},"special-keyword":{patterns:[{match:"\\b(__FILE__|__FILE_FULL_PATH__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__)\\b",name:"constant.language.special-keyword.d"}]},"special-token-sequence":{patterns:[{match:"#\\s*line.*",name:"gfm.markup.italic.special-token-sequence.d"}]},"special-tokens":{patterns:[{match:"\\b(__DATE__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b",name:"gfm.markup.raw.special-tokens.d"}]},statement:{patterns:[{include:"#non-block-statement"},{include:"#semi-colon"}]},"static-assert":{patterns:[{begin:"\\bstatic\\s+assert\\b\\s*\\(",beginCaptures:{0:{name:"keyword.other.static-assert.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.static-assert.end.d"}},patterns:[{include:"#expression"}]}]},"static-foreach":{patterns:[{begin:"\\b(static\\s+foreach)\\b\\s*",captures:{1:{name:"keyword.control.static-foreach.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{match:";",name:"keyword.operator.semi-colon.d"},{include:"source.d"}]}]}]},"static-foreach-reverse":{patterns:[{begin:"\\b(static\\s+foreach_reverse)\\b\\s*",captures:{1:{name:"keyword.control.static-foreach.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{match:";",name:"keyword.operator.semi-colon.d"},{include:"source.d"}]}]}]},"static-if-condition":{patterns:[{begin:"\\bstatic\\s+if\\b\\s*\\(",beginCaptures:{0:{name:"keyword.control.static-if.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.control.static-if.end.d"}},patterns:[{include:"#comment"},{include:"#expression"}]}]},"storage-class":{patterns:[{match:"\\b(deprecated|enum|static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",name:"storage.class.d"},{include:"#linkage-attribute"},{include:"#align-attribute"},{include:"#property"}]},"string-literal":{patterns:[{include:"#wysiwyg-string"},{include:"#alternate-wysiwyg-string"},{include:"#hex-string"},{include:"#arbitrary-delimited-string"},{include:"#delimited-string"},{include:"#double-quoted-string"},{include:"#token-string"}]},"struct-declaration":{patterns:[{captures:{1:{name:"storage.type.struct.d"},2:{name:"entity.name.type.struct.d"}},match:"\\b(struct)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"}]},"switch-statement":{patterns:[{begin:"\\b(switch)\\b\\s*",captures:{1:{name:"keyword.control.switch.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"synchronized-statement":{patterns:[{begin:"\\b(synchronized)\\b\\s*(?=\\()",captures:{1:{name:"keyword.control.synchronized.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"template-declaration":{patterns:[{captures:{1:{name:"storage.type.template.d"},2:{name:"entity.name.type.template.d"}},match:"\\b(template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"}]},"throw-statement":{patterns:[{match:"\\bthrow\\b",name:"keyword.control.throw.d"}]},"token-string":{begin:"q\\{",beginCaptures:{0:{name:"string.quoted.token.d"}},end:"\\}[cdw]?",endCaptures:{0:{name:"string.quoted.token.d"}},patterns:[{include:"#token-string-content"}]},"token-string-content":{patterns:[{begin:"{",end:"}",patterns:[{include:"#token-string-content"}]},{include:"#comment"},{include:"#tokens"}]},tokens:{patterns:[{include:"#string-literal"},{include:"#character-literal"},{include:"#integer-literal"},{include:"#float-literal"},{include:"#keyword"},{match:"~=|~|>>>|>>=|>>|>=|>|=>|==|=|<>|<=|<<|<|%=|%|#|&=|&&|&|\\$|\\|=|\\|\\||\\||\\+=|\\+\\+|\\+|\\^=|\\^\\^=|\\^\\^|\\^|\\*=|\\*|\\}|\\{|\\]|\\[|\\)|\\(|\\.\\.\\.|\\.\\.|\\.|\\?|\\!>=|\\!>|\\!=|\\!<>=|\\!<>|\\!<=|\\!<|\\!|/=|/|@|:|;|,|-=|--|-",name:"meta.lexical.token.symbolic.d"},{include:"#identifier"}]},"traits-argument":{patterns:[{include:"#expression"},{include:"#type"}]},"traits-arguments":{patterns:[{include:"#traits-argument"},{include:"#comma"}]},"traits-expression":{patterns:[{begin:"\\b__traits\\s*\\(",beginCaptures:{0:{name:"keyword.other.traits.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.traits.end.d"}},patterns:[{include:"#traits-keyword"},{include:"#comma"},{include:"#traits-argument"}]}]},"traits-keyword":{patterns:[{match:"isAbstractClass|isArithmetic|isAssociativeArray|isFinalClass|isPOD|isNested|isFloating|isIntegral|isScalar|isStaticArray|isUnsigned|isVirtualFunction|isVirtualMethod|isAbstractFunction|isFinalFunction|isStaticFunction|isOverrideFunction|isRef|isOut|isLazy|hasMember|identifier|getAliasThis|getAttributes|getMember|getOverloads|getProtection|getVirtualFunctions|getVirtualMethods|getUnitTests|parent|classInstanceSize|getVirtualIndex|allMembers|derivedMembers|isSame|compiles",name:"support.constant.traits-keyword.d"}]},"try-statement":{patterns:[{match:"\\btry\\b",name:"keyword.control.try.d"}]},type:{patterns:[{include:"#typeof"},{include:"#base-type"},{include:"#type-ctor"},{begin:"!\\(",end:"\\)",patterns:[{include:"#type"},{include:"#expression"}]}]},"type-ctor":{patterns:[{match:"(const|immutable|inout|shared)\\b",name:"storage.type.modifier.d"}]},"type-specialization":{patterns:[{match:"\\b(struct|union|class|interface|enum|function|delegate|super|const|immutable|inout|shared|return|__parameters)\\b",name:"keyword.other.storage.type-specialization.d"}]},"typeid-expression":{patterns:[{match:"\\btypeid\\s*(?=\\()",name:"keyword.other.typeid.d"}]},typeof:{begin:"typeof\\s*\\(",end:"\\)",name:"keyword.token.typeof.d",patterns:[{match:"return",name:"keyword.control.return.d"},{include:"#expression"}]},"union-declaration":{patterns:[{captures:{1:{name:"storage.type.union.d"},2:{name:"entity.name.type.union.d"}},match:"\\b(union)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b"}]},"user-defined-attribute":{patterns:[{match:"@([_\\w][_\\d\\w]*)\\b",name:"entity.name.tag.user-defined-property.d"},{begin:"@([_\\w][_\\d\\w]*)?\\(",end:"\\)",name:"entity.name.tag.user-defined-property.d",patterns:[{include:"#expression"}]}]},"version-condition":{patterns:[{match:"\\bversion\\s*\\(\\s*unittest\\s*\\)",name:"keyword.other.version.unittest.d"},{match:"\\bversion\\s*\\(\\s*assert\\s*\\)",name:"keyword.other.version.assert.d"},{begin:"\\bversion\\s*\\(",beginCaptures:{0:{name:"keyword.other.version.identifier.begin.d"}},end:"\\)",endCaptures:{0:{name:"keyword.other.version.identifer.end.d"}},patterns:[{include:"#integer-literal"},{include:"#identifier"}]},{include:"#version-specification"}]},"version-specification":{patterns:[{match:"\\bversion\\b\\s*(?==)",name:"keyword.other.version-specification.d"}]},"void-initializer":{patterns:[{match:"\\bvoid\\b",name:"support.type.void.d"}]},"while-statement":{patterns:[{begin:"\\b(while)\\b\\s*",captures:{1:{name:"keyword.control.while.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"with-statement":{patterns:[{begin:"\\b(with)\\b\\s*(?=\\()",captures:{1:{name:"keyword.control.with.d"}},end:"(?<=\\))",patterns:[{begin:"\\(",end:"\\)",patterns:[{include:"source.d"}]}]}]},"wysiwyg-characters":{patterns:[{include:"#character"},{include:"#end-of-line"}]},"wysiwyg-string":{patterns:[{begin:'r\\"',end:'\\"[cwd]?',name:"string.wysiwyg-string.d",patterns:[{include:"#wysiwyg-characters"}]}]}},scopeName:"source.d"});var t=[e];export{t as default}; diff --git a/assets/chunks/dark-plus.KEYLhlmT.js b/assets/chunks/dark-plus.KEYLhlmT.js new file mode 100644 index 000000000..59a1bc6b6 --- /dev/null +++ b/assets/chunks/dark-plus.KEYLhlmT.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"actionBar.toggledBackground":"#383a49","activityBarBadge.background":"#007ACC","checkbox.border":"#6B6B6B","editor.background":"#1E1E1E","editor.foreground":"#D4D4D4","editor.inactiveSelectionBackground":"#3A3D41","editor.selectionHighlightBackground":"#ADD6FF26","editorIndentGuide.activeBackground":"#707070","editorIndentGuide.background":"#404040","input.placeholderForeground":"#A6A6A6","list.activeSelectionIconForeground":"#FFF","list.dropBackground":"#383B3D","menu.background":"#252526","menu.border":"#454545","menu.foreground":"#CCCCCC","menu.separatorBackground":"#454545","ports.iconRunningProcessForeground":"#369432","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#ccc3","sideBarTitle.foreground":"#BBBBBB","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#ccc3","terminal.inactiveSelectionBackground":"#3A3D41","widget.border":"#303031"},displayName:"Dark Plus",name:"dark-plus",semanticHighlighting:!0,semanticTokenColors:{customLiteral:"#DCDCAA",newOperator:"#C586C0",numberLiteral:"#b5cea8",stringLiteral:"#ce9178"},tokenColors:[{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#D4D4D4"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"header",settings:{foreground:"#000080"}},{scope:"comment",settings:{foreground:"#6A9955"}},{scope:"constant.language",settings:{foreground:"#569cd6"}},{scope:["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],settings:{foreground:"#b5cea8"}},{scope:"constant.regexp",settings:{foreground:"#646695"}},{scope:"entity.name.tag",settings:{foreground:"#569cd6"}},{scope:"entity.name.tag.css",settings:{foreground:"#d7ba7d"}},{scope:"entity.other.attribute-name",settings:{foreground:"#9cdcfe"}},{scope:["entity.other.attribute-name.class.css","entity.other.attribute-name.class.mixin.css","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.pseudo-class.css","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],settings:{foreground:"#d7ba7d"}},{scope:"invalid",settings:{foreground:"#f44747"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inserted",settings:{foreground:"#b5cea8"}},{scope:"markup.deleted",settings:{foreground:"#ce9178"}},{scope:"markup.changed",settings:{foreground:"#569cd6"}},{scope:"punctuation.definition.quote.begin.markdown",settings:{foreground:"#6A9955"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#6796e6"}},{scope:"markup.inline.raw",settings:{foreground:"#ce9178"}},{scope:"punctuation.definition.tag",settings:{foreground:"#808080"}},{scope:["meta.preprocessor","entity.name.function.preprocessor"],settings:{foreground:"#569cd6"}},{scope:"meta.preprocessor.string",settings:{foreground:"#ce9178"}},{scope:"meta.preprocessor.numeric",settings:{foreground:"#b5cea8"}},{scope:"meta.structure.dictionary.key.python",settings:{foreground:"#9cdcfe"}},{scope:"meta.diff.header",settings:{foreground:"#569cd6"}},{scope:"storage",settings:{foreground:"#569cd6"}},{scope:"storage.type",settings:{foreground:"#569cd6"}},{scope:["storage.modifier","keyword.operator.noexcept"],settings:{foreground:"#569cd6"}},{scope:["string","meta.embedded.assembly"],settings:{foreground:"#ce9178"}},{scope:"string.tag",settings:{foreground:"#ce9178"}},{scope:"string.value",settings:{foreground:"#ce9178"}},{scope:"string.regexp",settings:{foreground:"#d16969"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#569cd6"}},{scope:["meta.template.expression"],settings:{foreground:"#d4d4d4"}},{scope:["support.type.vendored.property-name","support.type.property-name","variable.css","variable.scss","variable.other.less","source.coffee.embedded"],settings:{foreground:"#9cdcfe"}},{scope:"keyword",settings:{foreground:"#569cd6"}},{scope:"keyword.control",settings:{foreground:"#569cd6"}},{scope:"keyword.operator",settings:{foreground:"#d4d4d4"}},{scope:["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],settings:{foreground:"#569cd6"}},{scope:"keyword.other.unit",settings:{foreground:"#b5cea8"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#569cd6"}},{scope:"support.function.git-rebase",settings:{foreground:"#9cdcfe"}},{scope:"constant.sha.git-rebase",settings:{foreground:"#b5cea8"}},{scope:["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],settings:{foreground:"#d4d4d4"}},{scope:"variable.language",settings:{foreground:"#569cd6"}},{scope:["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],settings:{foreground:"#DCDCAA"}},{scope:["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],settings:{foreground:"#4EC9B0"}},{scope:["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class"],settings:{foreground:"#4EC9B0"}},{scope:["keyword.control","source.cpp keyword.operator.new","keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],settings:{foreground:"#C586C0"}},{scope:["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],settings:{foreground:"#9CDCFE"}},{scope:["variable.other.constant","variable.other.enummember"],settings:{foreground:"#4FC1FF"}},{scope:["meta.object-literal.key"],settings:{foreground:"#9CDCFE"}},{scope:["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],settings:{foreground:"#CE9178"}},{scope:["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],settings:{foreground:"#CE9178"}},{scope:["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],settings:{foreground:"#d16969"}},{scope:["keyword.operator.or.regexp","keyword.control.anchor.regexp"],settings:{foreground:"#DCDCAA"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#d7ba7d"}},{scope:["constant.character","constant.other.option"],settings:{foreground:"#569cd6"}},{scope:"constant.character.escape",settings:{foreground:"#d7ba7d"}},{scope:"entity.name.label",settings:{foreground:"#C8C8C8"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/dart.DZLoTQm4.js b/assets/chunks/dart.DZLoTQm4.js new file mode 100644 index 000000000..f46cc66b2 --- /dev/null +++ b/assets/chunks/dart.DZLoTQm4.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Dart",name:"dart",patterns:[{match:"^(#!.*)$",name:"meta.preprocessor.script.dart"},{begin:"^\\w*\\b(augment\\s+library|library|import\\s+augment|import|part\\s+of|part|export)\\b",beginCaptures:{0:{name:"keyword.other.import.dart"}},end:";",endCaptures:{0:{name:"punctuation.terminator.dart"}},name:"meta.declaration.dart",patterns:[{include:"#strings"},{include:"#comments"},{match:"\\b(as|show|hide)\\b",name:"keyword.other.import.dart"},{match:"\\b(if)\\b",name:"keyword.control.dart"}]},{include:"#comments"},{include:"#punctuation"},{include:"#annotations"},{include:"#keywords"},{include:"#constants-and-special-vars"},{include:"#operators"},{include:"#strings"}],repository:{annotations:{patterns:[{match:"@[a-zA-Z]+",name:"storage.type.annotation.dart"}]},"class-identifier":{patterns:[{match:"(??]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\("}]},keywords:{patterns:[{match:"(?>>?|~|\\^|\\||&)",name:"keyword.operator.bitwise.dart"},{match:"((&|\\^|\\||<<|>>>?)=)",name:"keyword.operator.assignment.bitwise.dart"},{match:"(=>)",name:"keyword.operator.closure.dart"},{match:"(==|!=|<=?|>=?)",name:"keyword.operator.comparison.dart"},{match:"(([+*/%-]|\\~)=)",name:"keyword.operator.assignment.arithmetic.dart"},{match:"(=)",name:"keyword.operator.assignment.dart"},{match:"(\\-\\-|\\+\\+)",name:"keyword.operator.increment-decrement.dart"},{match:"(\\-|\\+|\\*|\\/|\\~\\/|%)",name:"keyword.operator.arithmetic.dart"},{match:"(!|&&|\\|\\|)",name:"keyword.operator.logical.dart"}]},punctuation:{patterns:[{match:",",name:"punctuation.comma.dart"},{match:";",name:"punctuation.terminator.dart"},{match:"\\.",name:"punctuation.dot.dart"}]},"string-interp":{patterns:[{captures:{1:{name:"variable.parameter.dart"}},match:"\\$([a-zA-Z0-9_]+)",name:"meta.embedded.expression.dart"},{begin:"\\$\\{",end:"\\}",name:"meta.embedded.expression.dart",patterns:[{include:"#expression"}]},{match:"\\\\.",name:"constant.character.escape.dart"}]},strings:{patterns:[{begin:'(?)",endCaptures:{1:{name:"other.source.dart"}},patterns:[{include:"#class-identifier"},{match:","},{match:"extends",name:"keyword.declaration.dart"},{include:"#comments"}]}},scopeName:"source.dart"});var t=[e];export{t as default}; diff --git a/assets/chunks/dax.DsfXcHUZ.js b/assets/chunks/dax.DsfXcHUZ.js new file mode 100644 index 000000000..24f2b250c --- /dev/null +++ b/assets/chunks/dax.DsfXcHUZ.js @@ -0,0 +1,29 @@ +const E=Object.freeze({displayName:"DAX",name:"dax",patterns:[{include:"#comments"},{include:"#keywords"},{include:"#labels"},{include:"#parameters"},{include:"#strings"},{include:"#numbers"}],repository:{comments:{patterns:[{begin:"//",captures:{0:{name:"punctuation.definition.comment.dax"}},end:` +`,name:"comment.line.dax"},{begin:"--",captures:{0:{name:"punctuation.definition.comment.dax"}},end:` +`,name:"comment.line.dax"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.dax"}},end:"\\*/",name:"comment.block.dax"}]},keywords:{patterns:[{match:"\\b(YIELDMAT|YIELDDISC|YIELD|YEARFRAC|YEAR|XNPV|XIRR|WEEKNUM|WEEKDAY|VDB|VARX.S|VARX.P|VAR.S|VAR.P|VALUES|VALUE|UTCTODAY|UTCNOW|USERPRINCIPALNAME|USEROBJECTID|USERNAME|USERELATIONSHIP|USERCULTURE|UPPER|UNION|UNICODE|UNICHAR|TRUNC|TRUE|TRIM|TREATAS|TOTALYTD|TOTALQTD|TOTALMTD|TOPNSKIP|TOPNPERLEVEL|TOPN|TODAY|TIMEVALUE|TIME|TBILLYIELD|TBILLPRICE|TBILLEQ|TANH|TAN|T.INV.2T|T.INV|T.DIST.RT|T.DIST.2T|T.DIST|SYD|SWITCH|SUMX|SUMMARIZECOLUMNS|SUMMARIZE|SUM|SUBSTITUTEWITHINDEX|SUBSTITUTE|STDEVX.S|STDEVX.P|STDEV.S|STDEV.P|STARTOFYEAR|STARTOFQUARTER|STARTOFMONTH|SQRTPI|SQRT|SLN|SINH|SIN|SIGN|SELECTEDVALUE|SELECTEDMEASURENAME|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURE|SELECTCOLUMNS|SECOND|SEARCH|SAMPLE|SAMEPERIODLASTYEAR|RRI|ROW|ROUNDUP|ROUNDDOWN|ROUND|ROLLUPISSUBTOTAL|ROLLUPGROUP|ROLLUPADDISSUBTOTAL|ROLLUP|RIGHT|REPT|REPLACE|REMOVEFILTERS|RELATEDTABLE|RELATED|RECEIVED|RATE|RANKX|RANK.EQ|RANDBETWEEN|RAND|RADIANS|QUOTIENT|QUARTER|PV|PRODUCTX|PRODUCT|PRICEMAT|PRICEDISC|PRICE|PREVIOUSYEAR|PREVIOUSQUARTER|PREVIOUSMONTH|PREVIOUSDAY|PPMT|POWER|POISSON.DIST|PMT|PI|PERMUT|PERCENTILEX.INC|PERCENTILEX.EXC|PERCENTILE.INC|PERCENTILE.EXC|PDURATION|PATHLENGTH|PATHITEMREVERSE|PATHITEM|PATHCONTAINS|PATH|PARALLELPERIOD|OR|OPENINGBALANCEYEAR|OPENINGBALANCEQUARTER|OPENINGBALANCEMONTH|ODDLYIELD|ODDLPRICE|ODDFYIELD|ODDFPRICE|ODD|NPER|NOW|NOT|NORM.S.INV|NORM.S.DIST|NORM.INV|NORM.DIST|NONVISUAL|NOMINAL|NEXTYEAR|NEXTQUARTER|NEXTMONTH|NEXTDAY|NATURALLEFTOUTERJOIN|NATURALINNERJOIN|MROUND|MONTH|MOD|MINX|MINUTE|MINA|MIN|MID|MEDIANX|MEDIAN|MDURATION|MAXX|MAXA|MAX|LOWER|LOOKUPVALUE|LOG10|LOG|LN|LEN|LEFT|LCM|LASTNONBLANKVALUE|LASTNONBLANK|LASTDATE|KEYWORDMATCH|KEEPFILTERS|ISTEXT|ISSUBTOTAL|ISSELECTEDMEASURE|ISPMT|ISONORAFTER|ISODD|ISO.CEILING|ISNUMBER|ISNONTEXT|ISLOGICAL|ISINSCOPE|ISFILTERED|ISEVEN|ISERROR|ISEMPTY|ISCROSSFILTERED|ISBLANK|ISAFTER|IPMT|INTRATE|INTERSECT|INT|IGNORE|IFERROR|IF.EAGER|IF|HOUR|HASONEVALUE|HASONEFILTER|HASH|GROUPBY|GEOMEANX|GEOMEAN|GENERATESERIES|GENERATEALL|GENERATE|GCD|FV|FORMAT|FLOOR|FIXED|FIRSTNONBLANKVALUE|FIRSTNONBLANK|FIRSTDATE|FIND|FILTERS|FILTER|FALSE|FACT|EXPON.DIST|EXP|EXCEPT|EXACT|EVEN|ERROR|EOMONTH|ENDOFYEAR|ENDOFQUARTER|ENDOFMONTH|EFFECT|EDATE|EARLIEST|EARLIER|DURATION|DOLLARFR|DOLLARDE|DIVIDE|DISTINCTCOUNTNOBLANK|DISTINCTCOUNT|DISTINCT|DISC|DETAILROWS|DEGREES|DDB|DB|DAY|DATEVALUE|DATESYTD|DATESQTD|DATESMTD|DATESINPERIOD|DATESBETWEEN|DATEDIFF|DATEADD|DATE|DATATABLE|CUSTOMDATA|CURRENTGROUP|CURRENCY|CUMPRINC|CUMIPMT|CROSSJOIN|CROSSFILTER|COUPPCD|COUPNUM|COUPNCD|COUPDAYSNC|COUPDAYS|COUPDAYBS|COUNTX|COUNTROWS|COUNTBLANK|COUNTAX|COUNTA|COUNT|COTH|COT|COSH|COS|CONVERT|CONTAINSSTRINGEXACT|CONTAINSSTRING|CONTAINSROW|CONTAINS|CONFIDENCE.T|CONFIDENCE.NORM|CONCATENATEX|CONCATENATE|COMBINEVALUES|COMBINA|COMBIN|COLUMNSTATISTICS|COALESCE|CLOSINGBALANCEYEAR|CLOSINGBALANCEQUARTER|CLOSINGBALANCEMONTH|CHISQ.INV.RT|CHISQ.INV|CHISQ.DIST.RT|CHISQ.DIST|CEILING|CALENDARAUTO|CALENDAR|CALCULATETABLE|CALCULATE|BLANK|BETA.INV|BETA.DIST|AVERAGEX|AVERAGEA|AVERAGE|ATANH|ATAN|ASINH|ASIN|APPROXIMATEDISTINCTCOUNT|AND|AMORLINC|AMORDEGRC|ALLSELECTED|ALLNOBLANKROW|ALLEXCEPT|ALLCROSSFILTERED|ALL|ADDMISSINGITEMS|ADDCOLUMNS|ACOTH|ACOT|ACOSH|ACOS|ACCRINTM|ACCRINT|ABS)\\b",name:"variable.language.dax"},{match:"\\b(DEFINE|EVALUATE|ORDER BY|RETURN|VAR)\\b",name:"keyword.control.dax"},{match:`(?x) +{ | }`,name:"keyword.array.constructor.dax"},{match:`(?x) +> | < | >= | <= | =(?!==) +`,name:"keyword.operator.comparison.dax"},{match:`(?x) +&& | IN | NOT | \\|\\|`,name:"keyword.operator.logical.dax"},{match:`(?x) +\\+ | \\- | \\* | \\/ +`,name:"keyword.arithmetic.operator.dax"},{begin:"\\[",end:"\\]",name:"support.function.dax"},{begin:'"',end:'"',name:"string.quoted.double.dax"},{begin:"\\'",end:"\\'",name:"support.class.dax"}]},labels:{patterns:[{captures:{1:{name:"punctuation.separator.label.dax"},2:{name:"entity.name.label.dax"}},match:"(^(.*?)\\s*(:=|!=))"}]},metas:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.dax"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.dax"}}}]},numbers:{match:`(?x) +-? +(?: +0 +| +[1-9] +\\d* +) +(?: +(?: +\\. +\\d+ +)? +(?: +[eE] +[+-]? +\\d+ +)? +)?`,name:"constant.numeric.dax"},parameters:{patterns:[{begin:"\\b(?)( .*)?)|((\\+).*))$\\n?",name:"markup.inserted.diff"},{captures:{1:{name:"punctuation.definition.changed.diff"}},match:"^(!).*$\\n?",name:"markup.changed.diff"},{captures:{3:{name:"punctuation.definition.deleted.diff"},6:{name:"punctuation.definition.deleted.diff"}},match:"^(((<)( .*)?)|((-).*))$\\n?",name:"markup.deleted.diff"},{begin:"^(#)",captures:{1:{name:"punctuation.definition.comment.diff"}},comment:'Git produces unified diffs with embedded comments"',end:"\\n",name:"comment.line.number-sign.diff"},{match:"^index [0-9a-f]{7,40}\\.\\.[0-9a-f]{7,40}.*$\\n?",name:"meta.diff.index.git"},{captures:{1:{name:"punctuation.separator.key-value.diff"},2:{name:"meta.toc-list.file-name.diff"}},match:"^Index(:) (.+)$\\n?",name:"meta.diff.index"},{match:"^Only in .*: .*$\\n?",name:"meta.diff.only-in"}],scopeName:"source.diff"});var e=[n];export{e as default}; diff --git a/assets/chunks/docker.DNR26wTC.js b/assets/chunks/docker.DNR26wTC.js new file mode 100644 index 000000000..d782409eb --- /dev/null +++ b/assets/chunks/docker.DNR26wTC.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Dockerfile",name:"docker",patterns:[{captures:{1:{name:"keyword.other.special-method.dockerfile"},2:{name:"keyword.other.special-method.dockerfile"}},match:"^\\s*\\b(?i:(FROM))\\b.*?\\b(?i:(AS))\\b"},{captures:{1:{name:"keyword.control.dockerfile"},2:{name:"keyword.other.special-method.dockerfile"}},match:"^\\s*(?i:(ONBUILD)\\s+)?(?i:(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR))\\s"},{captures:{1:{name:"keyword.operator.dockerfile"},2:{name:"keyword.other.special-method.dockerfile"}},match:"^\\s*(?i:(ONBUILD)\\s+)?(?i:(CMD|ENTRYPOINT))\\s"},{begin:'"',beginCaptures:{1:{name:"punctuation.definition.string.begin.dockerfile"}},end:'"',endCaptures:{1:{name:"punctuation.definition.string.end.dockerfile"}},name:"string.quoted.double.dockerfile",patterns:[{match:"\\\\.",name:"constant.character.escaped.dockerfile"}]},{begin:"'",beginCaptures:{1:{name:"punctuation.definition.string.begin.dockerfile"}},end:"'",endCaptures:{1:{name:"punctuation.definition.string.end.dockerfile"}},name:"string.quoted.single.dockerfile",patterns:[{match:"\\\\.",name:"constant.character.escaped.dockerfile"}]},{captures:{1:{name:"punctuation.whitespace.comment.leading.dockerfile"},2:{name:"comment.line.number-sign.dockerfile"},3:{name:"punctuation.definition.comment.dockerfile"}},comment:"comment.line",match:"^(\\s*)((#).*$\\n?)"}],scopeName:"source.dockerfile",aliases:["dockerfile"]});var n=[e];export{n as default}; diff --git a/assets/chunks/dracula-soft.9B1nZgL-.js b/assets/chunks/dracula-soft.9B1nZgL-.js new file mode 100644 index 000000000..b85246de6 --- /dev/null +++ b/assets/chunks/dracula-soft.9B1nZgL-.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#BD93F910","activityBar.activeBorder":"#FF79C680","activityBar.background":"#343746","activityBar.foreground":"#f6f6f4","activityBar.inactiveForeground":"#7b7f8b","activityBarBadge.background":"#f286c4","activityBarBadge.foreground":"#f6f6f4","badge.background":"#44475A","badge.foreground":"#f6f6f4","breadcrumb.activeSelectionForeground":"#f6f6f4","breadcrumb.background":"#282A36","breadcrumb.focusForeground":"#f6f6f4","breadcrumb.foreground":"#7b7f8b","breadcrumbPicker.background":"#191A21","button.background":"#44475A","button.foreground":"#f6f6f4","button.secondaryBackground":"#282A36","button.secondaryForeground":"#f6f6f4","button.secondaryHoverBackground":"#343746","debugToolBar.background":"#262626","diffEditor.insertedTextBackground":"#50FA7B20","diffEditor.removedTextBackground":"#FF555550","dropdown.background":"#343746","dropdown.border":"#191A21","dropdown.foreground":"#f6f6f4","editor.background":"#282A36","editor.findMatchBackground":"#FFB86C80","editor.findMatchHighlightBackground":"#FFFFFF40","editor.findRangeHighlightBackground":"#44475A75","editor.foldBackground":"#21222C80","editor.foreground":"#f6f6f4","editor.hoverHighlightBackground":"#8BE9FD50","editor.lineHighlightBorder":"#44475A","editor.rangeHighlightBackground":"#BD93F915","editor.selectionBackground":"#44475A","editor.selectionHighlightBackground":"#424450","editor.snippetFinalTabstopHighlightBackground":"#282A36","editor.snippetFinalTabstopHighlightBorder":"#62e884","editor.snippetTabstopHighlightBackground":"#282A36","editor.snippetTabstopHighlightBorder":"#7b7f8b","editor.wordHighlightBackground":"#8BE9FD50","editor.wordHighlightStrongBackground":"#50FA7B50","editorBracketHighlight.foreground1":"#f6f6f4","editorBracketHighlight.foreground2":"#f286c4","editorBracketHighlight.foreground3":"#97e1f1","editorBracketHighlight.foreground4":"#62e884","editorBracketHighlight.foreground5":"#bf9eee","editorBracketHighlight.foreground6":"#FFB86C","editorBracketHighlight.unexpectedBracket.foreground":"#ee6666","editorCodeLens.foreground":"#7b7f8b","editorError.foreground":"#ee6666","editorGroup.border":"#bf9eee","editorGroup.dropBackground":"#44475A70","editorGroupHeader.tabsBackground":"#191A21","editorGutter.addedBackground":"#50FA7B80","editorGutter.deletedBackground":"#FF555580","editorGutter.modifiedBackground":"#8BE9FD80","editorHoverWidget.background":"#282A36","editorHoverWidget.border":"#7b7f8b","editorIndentGuide.activeBackground":"#FFFFFF45","editorIndentGuide.background":"#FFFFFF1A","editorLineNumber.foreground":"#7b7f8b","editorLink.activeForeground":"#97e1f1","editorMarkerNavigation.background":"#262626","editorOverviewRuler.addedForeground":"#50FA7B80","editorOverviewRuler.border":"#191A21","editorOverviewRuler.currentContentForeground":"#62e884","editorOverviewRuler.deletedForeground":"#FF555580","editorOverviewRuler.errorForeground":"#FF555580","editorOverviewRuler.incomingContentForeground":"#bf9eee","editorOverviewRuler.infoForeground":"#8BE9FD80","editorOverviewRuler.modifiedForeground":"#8BE9FD80","editorOverviewRuler.selectionHighlightForeground":"#FFB86C","editorOverviewRuler.warningForeground":"#FFB86C80","editorOverviewRuler.wordHighlightForeground":"#97e1f1","editorOverviewRuler.wordHighlightStrongForeground":"#62e884","editorRuler.foreground":"#FFFFFF1A","editorSuggestWidget.background":"#262626","editorSuggestWidget.foreground":"#f6f6f4","editorSuggestWidget.selectedBackground":"#44475A","editorWarning.foreground":"#97e1f1","editorWhitespace.foreground":"#FFFFFF1A","editorWidget.background":"#262626",errorForeground:"#ee6666","extensionButton.prominentBackground":"#50FA7B90","extensionButton.prominentForeground":"#f6f6f4","extensionButton.prominentHoverBackground":"#50FA7B60",focusBorder:"#7b7f8b",foreground:"#f6f6f4","gitDecoration.conflictingResourceForeground":"#FFB86C","gitDecoration.deletedResourceForeground":"#ee6666","gitDecoration.ignoredResourceForeground":"#7b7f8b","gitDecoration.modifiedResourceForeground":"#97e1f1","gitDecoration.untrackedResourceForeground":"#62e884","inlineChat.regionHighlight":"#343746","input.background":"#282A36","input.border":"#191A21","input.foreground":"#f6f6f4","input.placeholderForeground":"#7b7f8b","inputOption.activeBorder":"#bf9eee","inputValidation.errorBorder":"#ee6666","inputValidation.infoBorder":"#f286c4","inputValidation.warningBorder":"#FFB86C","list.activeSelectionBackground":"#44475A","list.activeSelectionForeground":"#f6f6f4","list.dropBackground":"#44475A","list.errorForeground":"#ee6666","list.focusBackground":"#44475A75","list.highlightForeground":"#97e1f1","list.hoverBackground":"#44475A75","list.inactiveSelectionBackground":"#44475A75","list.warningForeground":"#FFB86C","listFilterWidget.background":"#343746","listFilterWidget.noMatchesOutline":"#ee6666","listFilterWidget.outline":"#424450","merge.currentHeaderBackground":"#50FA7B90","merge.incomingHeaderBackground":"#BD93F990","panel.background":"#282A36","panel.border":"#bf9eee","panelTitle.activeBorder":"#f286c4","panelTitle.activeForeground":"#f6f6f4","panelTitle.inactiveForeground":"#7b7f8b","peekView.border":"#44475A","peekViewEditor.background":"#282A36","peekViewEditor.matchHighlightBackground":"#F1FA8C80","peekViewResult.background":"#262626","peekViewResult.fileForeground":"#f6f6f4","peekViewResult.lineForeground":"#f6f6f4","peekViewResult.matchHighlightBackground":"#F1FA8C80","peekViewResult.selectionBackground":"#44475A","peekViewResult.selectionForeground":"#f6f6f4","peekViewTitle.background":"#191A21","peekViewTitleDescription.foreground":"#7b7f8b","peekViewTitleLabel.foreground":"#f6f6f4","pickerGroup.border":"#bf9eee","pickerGroup.foreground":"#97e1f1","progressBar.background":"#f286c4","selection.background":"#bf9eee","settings.checkboxBackground":"#262626","settings.checkboxBorder":"#191A21","settings.checkboxForeground":"#f6f6f4","settings.dropdownBackground":"#262626","settings.dropdownBorder":"#191A21","settings.dropdownForeground":"#f6f6f4","settings.headerForeground":"#f6f6f4","settings.modifiedItemIndicator":"#FFB86C","settings.numberInputBackground":"#262626","settings.numberInputBorder":"#191A21","settings.numberInputForeground":"#f6f6f4","settings.textInputBackground":"#262626","settings.textInputBorder":"#191A21","settings.textInputForeground":"#f6f6f4","sideBar.background":"#262626","sideBarSectionHeader.background":"#282A36","sideBarSectionHeader.border":"#191A21","sideBarTitle.foreground":"#f6f6f4","statusBar.background":"#191A21","statusBar.debuggingBackground":"#ee6666","statusBar.debuggingForeground":"#191A21","statusBar.foreground":"#f6f6f4","statusBar.noFolderBackground":"#191A21","statusBar.noFolderForeground":"#f6f6f4","statusBarItem.prominentBackground":"#ee6666","statusBarItem.prominentHoverBackground":"#FFB86C","statusBarItem.remoteBackground":"#bf9eee","statusBarItem.remoteForeground":"#282A36","tab.activeBackground":"#282A36","tab.activeBorderTop":"#FF79C680","tab.activeForeground":"#f6f6f4","tab.border":"#191A21","tab.inactiveBackground":"#262626","tab.inactiveForeground":"#7b7f8b","terminal.ansiBlack":"#262626","terminal.ansiBlue":"#bf9eee","terminal.ansiBrightBlack":"#7b7f8b","terminal.ansiBrightBlue":"#d6b4f7","terminal.ansiBrightCyan":"#adf6f6","terminal.ansiBrightGreen":"#78f09a","terminal.ansiBrightMagenta":"#f49dda","terminal.ansiBrightRed":"#f07c7c","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#f6f6ae","terminal.ansiCyan":"#97e1f1","terminal.ansiGreen":"#62e884","terminal.ansiMagenta":"#f286c4","terminal.ansiRed":"#ee6666","terminal.ansiWhite":"#f6f6f4","terminal.ansiYellow":"#e7ee98","terminal.background":"#282A36","terminal.foreground":"#f6f6f4","titleBar.activeBackground":"#262626","titleBar.activeForeground":"#f6f6f4","titleBar.inactiveBackground":"#191A21","titleBar.inactiveForeground":"#7b7f8b","walkThrough.embeddedEditorBackground":"#262626"},displayName:"Dracula Soft",name:"dracula-soft",semanticHighlighting:!0,tokenColors:[{scope:["emphasis"],settings:{fontStyle:"italic"}},{scope:["strong"],settings:{fontStyle:"bold"}},{scope:["header"],settings:{foreground:"#bf9eee"}},{scope:["meta.diff","meta.diff.header"],settings:{foreground:"#7b7f8b"}},{scope:["markup.inserted"],settings:{foreground:"#62e884"}},{scope:["markup.deleted"],settings:{foreground:"#ee6666"}},{scope:["markup.changed"],settings:{foreground:"#FFB86C"}},{scope:["invalid"],settings:{fontStyle:"underline italic",foreground:"#ee6666"}},{scope:["invalid.deprecated"],settings:{fontStyle:"underline italic",foreground:"#f6f6f4"}},{scope:["entity.name.filename"],settings:{foreground:"#e7ee98"}},{scope:["markup.error"],settings:{foreground:"#ee6666"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.bold"],settings:{fontStyle:"bold",foreground:"#FFB86C"}},{scope:["markup.heading"],settings:{fontStyle:"bold",foreground:"#bf9eee"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#e7ee98"}},{scope:["beginning.punctuation.definition.list.markdown","beginning.punctuation.definition.quote.markdown","punctuation.definition.link.restructuredtext"],settings:{foreground:"#97e1f1"}},{scope:["markup.inline.raw","markup.raw.restructuredtext"],settings:{foreground:"#62e884"}},{scope:["markup.underline.link","markup.underline.link.image"],settings:{foreground:"#97e1f1"}},{scope:["meta.link.reference.def.restructuredtext","punctuation.definition.directive.restructuredtext","string.other.link.description","string.other.link.title"],settings:{foreground:"#f286c4"}},{scope:["entity.name.directive.restructuredtext","markup.quote"],settings:{fontStyle:"italic",foreground:"#e7ee98"}},{scope:["meta.separator.markdown"],settings:{foreground:"#7b7f8b"}},{scope:["fenced_code.block.language","markup.raw.inner.restructuredtext","markup.fenced_code.block.markdown punctuation.definition.markdown"],settings:{foreground:"#62e884"}},{scope:["punctuation.definition.constant.restructuredtext"],settings:{foreground:"#bf9eee"}},{scope:["markup.heading.markdown punctuation.definition.string.begin","markup.heading.markdown punctuation.definition.string.end"],settings:{foreground:"#bf9eee"}},{scope:["meta.paragraph.markdown punctuation.definition.string.begin","meta.paragraph.markdown punctuation.definition.string.end"],settings:{foreground:"#f6f6f4"}},{scope:["markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin","markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end"],settings:{foreground:"#e7ee98"}},{scope:["entity.name.type.class","entity.name.class"],settings:{fontStyle:"normal",foreground:"#97e1f1"}},{scope:["keyword.expressions-and-types.swift","keyword.other.this","variable.language","variable.language punctuation.definition.variable.php","variable.other.readwrite.instance.ruby","variable.parameter.function.language.special"],settings:{fontStyle:"italic",foreground:"#bf9eee"}},{scope:["entity.other.inherited-class"],settings:{fontStyle:"italic",foreground:"#97e1f1"}},{scope:["comment","punctuation.definition.comment","unused.comment","wildcard.comment"],settings:{foreground:"#7b7f8b"}},{scope:["comment keyword.codetag.notation","comment.block.documentation keyword","comment.block.documentation storage.type.class"],settings:{foreground:"#f286c4"}},{scope:["comment.block.documentation entity.name.type"],settings:{fontStyle:"italic",foreground:"#97e1f1"}},{scope:["comment.block.documentation entity.name.type punctuation.definition.bracket"],settings:{foreground:"#97e1f1"}},{scope:["comment.block.documentation variable"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["constant","variable.other.constant"],settings:{foreground:"#bf9eee"}},{scope:["constant.character.escape","constant.character.string.escape","constant.regexp"],settings:{foreground:"#f286c4"}},{scope:["entity.name.tag"],settings:{foreground:"#f286c4"}},{scope:["entity.other.attribute-name.parent-selector"],settings:{foreground:"#f286c4"}},{scope:["entity.other.attribute-name"],settings:{fontStyle:"italic",foreground:"#62e884"}},{scope:["entity.name.function","meta.function-call.object","meta.function-call.php","meta.function-call.static","meta.method-call.java meta.method","meta.method.groovy","support.function.any-method.lua","keyword.operator.function.infix"],settings:{foreground:"#62e884"}},{scope:["entity.name.variable.parameter","meta.at-rule.function variable","meta.at-rule.mixin variable","meta.function.arguments variable.other.php","meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql","variable.parameter"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["meta.decorator variable.other.readwrite","meta.decorator variable.other.property"],settings:{fontStyle:"italic",foreground:"#62e884"}},{scope:["meta.decorator variable.other.object"],settings:{foreground:"#62e884"}},{scope:["keyword","punctuation.definition.keyword"],settings:{foreground:"#f286c4"}},{scope:["keyword.control.new","keyword.operator.new"],settings:{fontStyle:"bold"}},{scope:["meta.selector"],settings:{foreground:"#f286c4"}},{scope:["support"],settings:{fontStyle:"italic",foreground:"#97e1f1"}},{scope:["support.function.magic","support.variable","variable.other.predefined"],settings:{fontStyle:"regular",foreground:"#bf9eee"}},{scope:["support.function","support.type.property-name"],settings:{fontStyle:"regular"}},{scope:["constant.other.symbol.hashkey punctuation.definition.constant.ruby","entity.other.attribute-name.placeholder punctuation","entity.other.attribute-name.pseudo-class punctuation","entity.other.attribute-name.pseudo-element punctuation","meta.group.double.toml","meta.group.toml","meta.object-binding-pattern-variable punctuation.destructuring","punctuation.colon.graphql","punctuation.definition.block.scalar.folded.yaml","punctuation.definition.block.scalar.literal.yaml","punctuation.definition.block.sequence.item.yaml","punctuation.definition.entity.other.inherited-class","punctuation.function.swift","punctuation.separator.dictionary.key-value","punctuation.separator.hash","punctuation.separator.inheritance","punctuation.separator.key-value","punctuation.separator.key-value.mapping.yaml","punctuation.separator.namespace","punctuation.separator.pointer-access","punctuation.separator.slice","string.unquoted.heredoc punctuation.definition.string","support.other.chomping-indicator.yaml","punctuation.separator.annotation"],settings:{foreground:"#f286c4"}},{scope:["keyword.operator.other.powershell","keyword.other.statement-separator.powershell","meta.brace.round","meta.function-call punctuation","punctuation.definition.arguments.begin","punctuation.definition.arguments.end","punctuation.definition.entity.begin","punctuation.definition.entity.end","punctuation.definition.tag.cs","punctuation.definition.type.begin","punctuation.definition.type.end","punctuation.section.scope.begin","punctuation.section.scope.end","punctuation.terminator.expression.php","storage.type.generic.java","string.template meta.brace","string.template punctuation.accessor"],settings:{foreground:"#f6f6f4"}},{scope:["meta.string-contents.quoted.double punctuation.definition.variable","punctuation.definition.interpolation.begin","punctuation.definition.interpolation.end","punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded.begin","punctuation.section.embedded.coffee","punctuation.section.embedded.end","punctuation.section.embedded.end source.php","punctuation.section.embedded.end source.ruby","punctuation.definition.variable.makefile"],settings:{foreground:"#f286c4"}},{scope:["entity.name.function.target.makefile","entity.name.section.toml","entity.name.tag.yaml","variable.other.key.toml"],settings:{foreground:"#97e1f1"}},{scope:["constant.other.date","constant.other.timestamp"],settings:{foreground:"#FFB86C"}},{scope:["variable.other.alias.yaml"],settings:{fontStyle:"italic underline",foreground:"#62e884"}},{scope:["storage","meta.implementation storage.type.objc","meta.interface-or-protocol storage.type.objc","source.groovy storage.type.def"],settings:{fontStyle:"regular",foreground:"#f286c4"}},{scope:["entity.name.type","keyword.primitive-datatypes.swift","keyword.type.cs","meta.protocol-list.objc","meta.return-type.objc","source.go storage.type","source.groovy storage.type","source.java storage.type","source.powershell entity.other.attribute-name","storage.class.std.rust","storage.type.attribute.swift","storage.type.c","storage.type.core.rust","storage.type.cs","storage.type.groovy","storage.type.objc","storage.type.php","storage.type.haskell","storage.type.ocaml"],settings:{fontStyle:"italic",foreground:"#97e1f1"}},{scope:["entity.name.type.type-parameter","meta.indexer.mappedtype.declaration entity.name.type","meta.type.parameters entity.name.type"],settings:{foreground:"#FFB86C"}},{scope:["storage.modifier"],settings:{foreground:"#f286c4"}},{scope:["string.regexp","constant.other.character-class.set.regexp","constant.character.escape.backslash.regexp"],settings:{foreground:"#e7ee98"}},{scope:["punctuation.definition.group.capture.regexp"],settings:{foreground:"#f286c4"}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#ee6666"}},{scope:["punctuation.definition.character-class.regexp"],settings:{foreground:"#97e1f1"}},{scope:["punctuation.definition.group.regexp"],settings:{foreground:"#FFB86C"}},{scope:["punctuation.definition.group.assertion.regexp","keyword.operator.negation.regexp"],settings:{foreground:"#ee6666"}},{scope:["meta.assertion.look-ahead.regexp"],settings:{foreground:"#62e884"}},{scope:["string"],settings:{foreground:"#e7ee98"}},{scope:["punctuation.definition.string.begin","punctuation.definition.string.end"],settings:{foreground:"#dee492"}},{scope:["punctuation.support.type.property-name.begin","punctuation.support.type.property-name.end"],settings:{foreground:"#97e2f2"}},{scope:["string.quoted.docstring.multi","string.quoted.docstring.multi.python punctuation.definition.string.begin","string.quoted.docstring.multi.python punctuation.definition.string.end","string.quoted.docstring.multi.python constant.character.escape"],settings:{foreground:"#7b7f8b"}},{scope:["variable","constant.other.key.perl","support.variable.property","variable.other.constant.js","variable.other.constant.ts","variable.other.constant.tsx"],settings:{foreground:"#f6f6f4"}},{scope:["meta.import variable.other.readwrite","meta.variable.assignment.destructured.object.coffee variable"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["meta.import variable.other.readwrite.alias","meta.export variable.other.readwrite.alias","meta.variable.assignment.destructured.object.coffee variable variable"],settings:{fontStyle:"normal",foreground:"#f6f6f4"}},{scope:["meta.selectionset.graphql variable"],settings:{foreground:"#e7ee98"}},{scope:["meta.selectionset.graphql meta.arguments variable"],settings:{foreground:"#f6f6f4"}},{scope:["entity.name.fragment.graphql","variable.fragment.graphql"],settings:{foreground:"#97e1f1"}},{scope:["constant.other.symbol.hashkey.ruby","keyword.operator.dereference.java","keyword.operator.navigation.groovy","meta.scope.for-loop.shell punctuation.definition.string.begin","meta.scope.for-loop.shell punctuation.definition.string.end","meta.scope.for-loop.shell string","storage.modifier.import","punctuation.section.embedded.begin.tsx","punctuation.section.embedded.end.tsx","punctuation.section.embedded.begin.jsx","punctuation.section.embedded.end.jsx","punctuation.separator.list.comma.css","constant.language.empty-list.haskell"],settings:{foreground:"#f6f6f4"}},{scope:["source.shell variable.other"],settings:{foreground:"#bf9eee"}},{scope:["support.constant"],settings:{fontStyle:"normal",foreground:"#bf9eee"}},{scope:["meta.scope.prerequisites.makefile"],settings:{foreground:"#e7ee98"}},{scope:["meta.attribute-selector.scss"],settings:{foreground:"#e7ee98"}},{scope:["punctuation.definition.attribute-selector.end.bracket.square.scss","punctuation.definition.attribute-selector.begin.bracket.square.scss"],settings:{foreground:"#f6f6f4"}},{scope:["meta.preprocessor.haskell"],settings:{foreground:"#7b7f8b"}},{scope:["log.error"],settings:{fontStyle:"bold",foreground:"#ee6666"}},{scope:["log.warning"],settings:{fontStyle:"bold",foreground:"#e7ee98"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/dracula.DGO8GyiP.js b/assets/chunks/dracula.DGO8GyiP.js new file mode 100644 index 000000000..83ed35a41 --- /dev/null +++ b/assets/chunks/dracula.DGO8GyiP.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#BD93F910","activityBar.activeBorder":"#FF79C680","activityBar.background":"#343746","activityBar.foreground":"#F8F8F2","activityBar.inactiveForeground":"#6272A4","activityBarBadge.background":"#FF79C6","activityBarBadge.foreground":"#F8F8F2","badge.background":"#44475A","badge.foreground":"#F8F8F2","breadcrumb.activeSelectionForeground":"#F8F8F2","breadcrumb.background":"#282A36","breadcrumb.focusForeground":"#F8F8F2","breadcrumb.foreground":"#6272A4","breadcrumbPicker.background":"#191A21","button.background":"#44475A","button.foreground":"#F8F8F2","button.secondaryBackground":"#282A36","button.secondaryForeground":"#F8F8F2","button.secondaryHoverBackground":"#343746","debugToolBar.background":"#21222C","diffEditor.insertedTextBackground":"#50FA7B20","diffEditor.removedTextBackground":"#FF555550","dropdown.background":"#343746","dropdown.border":"#191A21","dropdown.foreground":"#F8F8F2","editor.background":"#282A36","editor.findMatchBackground":"#FFB86C80","editor.findMatchHighlightBackground":"#FFFFFF40","editor.findRangeHighlightBackground":"#44475A75","editor.foldBackground":"#21222C80","editor.foreground":"#F8F8F2","editor.hoverHighlightBackground":"#8BE9FD50","editor.lineHighlightBorder":"#44475A","editor.rangeHighlightBackground":"#BD93F915","editor.selectionBackground":"#44475A","editor.selectionHighlightBackground":"#424450","editor.snippetFinalTabstopHighlightBackground":"#282A36","editor.snippetFinalTabstopHighlightBorder":"#50FA7B","editor.snippetTabstopHighlightBackground":"#282A36","editor.snippetTabstopHighlightBorder":"#6272A4","editor.wordHighlightBackground":"#8BE9FD50","editor.wordHighlightStrongBackground":"#50FA7B50","editorBracketHighlight.foreground1":"#F8F8F2","editorBracketHighlight.foreground2":"#FF79C6","editorBracketHighlight.foreground3":"#8BE9FD","editorBracketHighlight.foreground4":"#50FA7B","editorBracketHighlight.foreground5":"#BD93F9","editorBracketHighlight.foreground6":"#FFB86C","editorBracketHighlight.unexpectedBracket.foreground":"#FF5555","editorCodeLens.foreground":"#6272A4","editorError.foreground":"#FF5555","editorGroup.border":"#BD93F9","editorGroup.dropBackground":"#44475A70","editorGroupHeader.tabsBackground":"#191A21","editorGutter.addedBackground":"#50FA7B80","editorGutter.deletedBackground":"#FF555580","editorGutter.modifiedBackground":"#8BE9FD80","editorHoverWidget.background":"#282A36","editorHoverWidget.border":"#6272A4","editorIndentGuide.activeBackground":"#FFFFFF45","editorIndentGuide.background":"#FFFFFF1A","editorLineNumber.foreground":"#6272A4","editorLink.activeForeground":"#8BE9FD","editorMarkerNavigation.background":"#21222C","editorOverviewRuler.addedForeground":"#50FA7B80","editorOverviewRuler.border":"#191A21","editorOverviewRuler.currentContentForeground":"#50FA7B","editorOverviewRuler.deletedForeground":"#FF555580","editorOverviewRuler.errorForeground":"#FF555580","editorOverviewRuler.incomingContentForeground":"#BD93F9","editorOverviewRuler.infoForeground":"#8BE9FD80","editorOverviewRuler.modifiedForeground":"#8BE9FD80","editorOverviewRuler.selectionHighlightForeground":"#FFB86C","editorOverviewRuler.warningForeground":"#FFB86C80","editorOverviewRuler.wordHighlightForeground":"#8BE9FD","editorOverviewRuler.wordHighlightStrongForeground":"#50FA7B","editorRuler.foreground":"#FFFFFF1A","editorSuggestWidget.background":"#21222C","editorSuggestWidget.foreground":"#F8F8F2","editorSuggestWidget.selectedBackground":"#44475A","editorWarning.foreground":"#8BE9FD","editorWhitespace.foreground":"#FFFFFF1A","editorWidget.background":"#21222C",errorForeground:"#FF5555","extensionButton.prominentBackground":"#50FA7B90","extensionButton.prominentForeground":"#F8F8F2","extensionButton.prominentHoverBackground":"#50FA7B60",focusBorder:"#6272A4",foreground:"#F8F8F2","gitDecoration.conflictingResourceForeground":"#FFB86C","gitDecoration.deletedResourceForeground":"#FF5555","gitDecoration.ignoredResourceForeground":"#6272A4","gitDecoration.modifiedResourceForeground":"#8BE9FD","gitDecoration.untrackedResourceForeground":"#50FA7B","inlineChat.regionHighlight":"#343746","input.background":"#282A36","input.border":"#191A21","input.foreground":"#F8F8F2","input.placeholderForeground":"#6272A4","inputOption.activeBorder":"#BD93F9","inputValidation.errorBorder":"#FF5555","inputValidation.infoBorder":"#FF79C6","inputValidation.warningBorder":"#FFB86C","list.activeSelectionBackground":"#44475A","list.activeSelectionForeground":"#F8F8F2","list.dropBackground":"#44475A","list.errorForeground":"#FF5555","list.focusBackground":"#44475A75","list.highlightForeground":"#8BE9FD","list.hoverBackground":"#44475A75","list.inactiveSelectionBackground":"#44475A75","list.warningForeground":"#FFB86C","listFilterWidget.background":"#343746","listFilterWidget.noMatchesOutline":"#FF5555","listFilterWidget.outline":"#424450","merge.currentHeaderBackground":"#50FA7B90","merge.incomingHeaderBackground":"#BD93F990","panel.background":"#282A36","panel.border":"#BD93F9","panelTitle.activeBorder":"#FF79C6","panelTitle.activeForeground":"#F8F8F2","panelTitle.inactiveForeground":"#6272A4","peekView.border":"#44475A","peekViewEditor.background":"#282A36","peekViewEditor.matchHighlightBackground":"#F1FA8C80","peekViewResult.background":"#21222C","peekViewResult.fileForeground":"#F8F8F2","peekViewResult.lineForeground":"#F8F8F2","peekViewResult.matchHighlightBackground":"#F1FA8C80","peekViewResult.selectionBackground":"#44475A","peekViewResult.selectionForeground":"#F8F8F2","peekViewTitle.background":"#191A21","peekViewTitleDescription.foreground":"#6272A4","peekViewTitleLabel.foreground":"#F8F8F2","pickerGroup.border":"#BD93F9","pickerGroup.foreground":"#8BE9FD","progressBar.background":"#FF79C6","selection.background":"#BD93F9","settings.checkboxBackground":"#21222C","settings.checkboxBorder":"#191A21","settings.checkboxForeground":"#F8F8F2","settings.dropdownBackground":"#21222C","settings.dropdownBorder":"#191A21","settings.dropdownForeground":"#F8F8F2","settings.headerForeground":"#F8F8F2","settings.modifiedItemIndicator":"#FFB86C","settings.numberInputBackground":"#21222C","settings.numberInputBorder":"#191A21","settings.numberInputForeground":"#F8F8F2","settings.textInputBackground":"#21222C","settings.textInputBorder":"#191A21","settings.textInputForeground":"#F8F8F2","sideBar.background":"#21222C","sideBarSectionHeader.background":"#282A36","sideBarSectionHeader.border":"#191A21","sideBarTitle.foreground":"#F8F8F2","statusBar.background":"#191A21","statusBar.debuggingBackground":"#FF5555","statusBar.debuggingForeground":"#191A21","statusBar.foreground":"#F8F8F2","statusBar.noFolderBackground":"#191A21","statusBar.noFolderForeground":"#F8F8F2","statusBarItem.prominentBackground":"#FF5555","statusBarItem.prominentHoverBackground":"#FFB86C","statusBarItem.remoteBackground":"#BD93F9","statusBarItem.remoteForeground":"#282A36","tab.activeBackground":"#282A36","tab.activeBorderTop":"#FF79C680","tab.activeForeground":"#F8F8F2","tab.border":"#191A21","tab.inactiveBackground":"#21222C","tab.inactiveForeground":"#6272A4","terminal.ansiBlack":"#21222C","terminal.ansiBlue":"#BD93F9","terminal.ansiBrightBlack":"#6272A4","terminal.ansiBrightBlue":"#D6ACFF","terminal.ansiBrightCyan":"#A4FFFF","terminal.ansiBrightGreen":"#69FF94","terminal.ansiBrightMagenta":"#FF92DF","terminal.ansiBrightRed":"#FF6E6E","terminal.ansiBrightWhite":"#FFFFFF","terminal.ansiBrightYellow":"#FFFFA5","terminal.ansiCyan":"#8BE9FD","terminal.ansiGreen":"#50FA7B","terminal.ansiMagenta":"#FF79C6","terminal.ansiRed":"#FF5555","terminal.ansiWhite":"#F8F8F2","terminal.ansiYellow":"#F1FA8C","terminal.background":"#282A36","terminal.foreground":"#F8F8F2","titleBar.activeBackground":"#21222C","titleBar.activeForeground":"#F8F8F2","titleBar.inactiveBackground":"#191A21","titleBar.inactiveForeground":"#6272A4","walkThrough.embeddedEditorBackground":"#21222C"},displayName:"Dracula",name:"dracula",semanticHighlighting:!0,tokenColors:[{scope:["emphasis"],settings:{fontStyle:"italic"}},{scope:["strong"],settings:{fontStyle:"bold"}},{scope:["header"],settings:{foreground:"#BD93F9"}},{scope:["meta.diff","meta.diff.header"],settings:{foreground:"#6272A4"}},{scope:["markup.inserted"],settings:{foreground:"#50FA7B"}},{scope:["markup.deleted"],settings:{foreground:"#FF5555"}},{scope:["markup.changed"],settings:{foreground:"#FFB86C"}},{scope:["invalid"],settings:{fontStyle:"underline italic",foreground:"#FF5555"}},{scope:["invalid.deprecated"],settings:{fontStyle:"underline italic",foreground:"#F8F8F2"}},{scope:["entity.name.filename"],settings:{foreground:"#F1FA8C"}},{scope:["markup.error"],settings:{foreground:"#FF5555"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.bold"],settings:{fontStyle:"bold",foreground:"#FFB86C"}},{scope:["markup.heading"],settings:{fontStyle:"bold",foreground:"#BD93F9"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#F1FA8C"}},{scope:["beginning.punctuation.definition.list.markdown","beginning.punctuation.definition.quote.markdown","punctuation.definition.link.restructuredtext"],settings:{foreground:"#8BE9FD"}},{scope:["markup.inline.raw","markup.raw.restructuredtext"],settings:{foreground:"#50FA7B"}},{scope:["markup.underline.link","markup.underline.link.image"],settings:{foreground:"#8BE9FD"}},{scope:["meta.link.reference.def.restructuredtext","punctuation.definition.directive.restructuredtext","string.other.link.description","string.other.link.title"],settings:{foreground:"#FF79C6"}},{scope:["entity.name.directive.restructuredtext","markup.quote"],settings:{fontStyle:"italic",foreground:"#F1FA8C"}},{scope:["meta.separator.markdown"],settings:{foreground:"#6272A4"}},{scope:["fenced_code.block.language","markup.raw.inner.restructuredtext","markup.fenced_code.block.markdown punctuation.definition.markdown"],settings:{foreground:"#50FA7B"}},{scope:["punctuation.definition.constant.restructuredtext"],settings:{foreground:"#BD93F9"}},{scope:["markup.heading.markdown punctuation.definition.string.begin","markup.heading.markdown punctuation.definition.string.end"],settings:{foreground:"#BD93F9"}},{scope:["meta.paragraph.markdown punctuation.definition.string.begin","meta.paragraph.markdown punctuation.definition.string.end"],settings:{foreground:"#F8F8F2"}},{scope:["markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin","markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end"],settings:{foreground:"#F1FA8C"}},{scope:["entity.name.type.class","entity.name.class"],settings:{fontStyle:"normal",foreground:"#8BE9FD"}},{scope:["keyword.expressions-and-types.swift","keyword.other.this","variable.language","variable.language punctuation.definition.variable.php","variable.other.readwrite.instance.ruby","variable.parameter.function.language.special"],settings:{fontStyle:"italic",foreground:"#BD93F9"}},{scope:["entity.other.inherited-class"],settings:{fontStyle:"italic",foreground:"#8BE9FD"}},{scope:["comment","punctuation.definition.comment","unused.comment","wildcard.comment"],settings:{foreground:"#6272A4"}},{scope:["comment keyword.codetag.notation","comment.block.documentation keyword","comment.block.documentation storage.type.class"],settings:{foreground:"#FF79C6"}},{scope:["comment.block.documentation entity.name.type"],settings:{fontStyle:"italic",foreground:"#8BE9FD"}},{scope:["comment.block.documentation entity.name.type punctuation.definition.bracket"],settings:{foreground:"#8BE9FD"}},{scope:["comment.block.documentation variable"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["constant","variable.other.constant"],settings:{foreground:"#BD93F9"}},{scope:["constant.character.escape","constant.character.string.escape","constant.regexp"],settings:{foreground:"#FF79C6"}},{scope:["entity.name.tag"],settings:{foreground:"#FF79C6"}},{scope:["entity.other.attribute-name.parent-selector"],settings:{foreground:"#FF79C6"}},{scope:["entity.other.attribute-name"],settings:{fontStyle:"italic",foreground:"#50FA7B"}},{scope:["entity.name.function","meta.function-call.object","meta.function-call.php","meta.function-call.static","meta.method-call.java meta.method","meta.method.groovy","support.function.any-method.lua","keyword.operator.function.infix"],settings:{foreground:"#50FA7B"}},{scope:["entity.name.variable.parameter","meta.at-rule.function variable","meta.at-rule.mixin variable","meta.function.arguments variable.other.php","meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql","variable.parameter"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["meta.decorator variable.other.readwrite","meta.decorator variable.other.property"],settings:{fontStyle:"italic",foreground:"#50FA7B"}},{scope:["meta.decorator variable.other.object"],settings:{foreground:"#50FA7B"}},{scope:["keyword","punctuation.definition.keyword"],settings:{foreground:"#FF79C6"}},{scope:["keyword.control.new","keyword.operator.new"],settings:{fontStyle:"bold"}},{scope:["meta.selector"],settings:{foreground:"#FF79C6"}},{scope:["support"],settings:{fontStyle:"italic",foreground:"#8BE9FD"}},{scope:["support.function.magic","support.variable","variable.other.predefined"],settings:{fontStyle:"regular",foreground:"#BD93F9"}},{scope:["support.function","support.type.property-name"],settings:{fontStyle:"regular"}},{scope:["constant.other.symbol.hashkey punctuation.definition.constant.ruby","entity.other.attribute-name.placeholder punctuation","entity.other.attribute-name.pseudo-class punctuation","entity.other.attribute-name.pseudo-element punctuation","meta.group.double.toml","meta.group.toml","meta.object-binding-pattern-variable punctuation.destructuring","punctuation.colon.graphql","punctuation.definition.block.scalar.folded.yaml","punctuation.definition.block.scalar.literal.yaml","punctuation.definition.block.sequence.item.yaml","punctuation.definition.entity.other.inherited-class","punctuation.function.swift","punctuation.separator.dictionary.key-value","punctuation.separator.hash","punctuation.separator.inheritance","punctuation.separator.key-value","punctuation.separator.key-value.mapping.yaml","punctuation.separator.namespace","punctuation.separator.pointer-access","punctuation.separator.slice","string.unquoted.heredoc punctuation.definition.string","support.other.chomping-indicator.yaml","punctuation.separator.annotation"],settings:{foreground:"#FF79C6"}},{scope:["keyword.operator.other.powershell","keyword.other.statement-separator.powershell","meta.brace.round","meta.function-call punctuation","punctuation.definition.arguments.begin","punctuation.definition.arguments.end","punctuation.definition.entity.begin","punctuation.definition.entity.end","punctuation.definition.tag.cs","punctuation.definition.type.begin","punctuation.definition.type.end","punctuation.section.scope.begin","punctuation.section.scope.end","punctuation.terminator.expression.php","storage.type.generic.java","string.template meta.brace","string.template punctuation.accessor"],settings:{foreground:"#F8F8F2"}},{scope:["meta.string-contents.quoted.double punctuation.definition.variable","punctuation.definition.interpolation.begin","punctuation.definition.interpolation.end","punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded.begin","punctuation.section.embedded.coffee","punctuation.section.embedded.end","punctuation.section.embedded.end source.php","punctuation.section.embedded.end source.ruby","punctuation.definition.variable.makefile"],settings:{foreground:"#FF79C6"}},{scope:["entity.name.function.target.makefile","entity.name.section.toml","entity.name.tag.yaml","variable.other.key.toml"],settings:{foreground:"#8BE9FD"}},{scope:["constant.other.date","constant.other.timestamp"],settings:{foreground:"#FFB86C"}},{scope:["variable.other.alias.yaml"],settings:{fontStyle:"italic underline",foreground:"#50FA7B"}},{scope:["storage","meta.implementation storage.type.objc","meta.interface-or-protocol storage.type.objc","source.groovy storage.type.def"],settings:{fontStyle:"regular",foreground:"#FF79C6"}},{scope:["entity.name.type","keyword.primitive-datatypes.swift","keyword.type.cs","meta.protocol-list.objc","meta.return-type.objc","source.go storage.type","source.groovy storage.type","source.java storage.type","source.powershell entity.other.attribute-name","storage.class.std.rust","storage.type.attribute.swift","storage.type.c","storage.type.core.rust","storage.type.cs","storage.type.groovy","storage.type.objc","storage.type.php","storage.type.haskell","storage.type.ocaml"],settings:{fontStyle:"italic",foreground:"#8BE9FD"}},{scope:["entity.name.type.type-parameter","meta.indexer.mappedtype.declaration entity.name.type","meta.type.parameters entity.name.type"],settings:{foreground:"#FFB86C"}},{scope:["storage.modifier"],settings:{foreground:"#FF79C6"}},{scope:["string.regexp","constant.other.character-class.set.regexp","constant.character.escape.backslash.regexp"],settings:{foreground:"#F1FA8C"}},{scope:["punctuation.definition.group.capture.regexp"],settings:{foreground:"#FF79C6"}},{scope:["string.regexp punctuation.definition.string.begin","string.regexp punctuation.definition.string.end"],settings:{foreground:"#FF5555"}},{scope:["punctuation.definition.character-class.regexp"],settings:{foreground:"#8BE9FD"}},{scope:["punctuation.definition.group.regexp"],settings:{foreground:"#FFB86C"}},{scope:["punctuation.definition.group.assertion.regexp","keyword.operator.negation.regexp"],settings:{foreground:"#FF5555"}},{scope:["meta.assertion.look-ahead.regexp"],settings:{foreground:"#50FA7B"}},{scope:["string"],settings:{foreground:"#F1FA8C"}},{scope:["punctuation.definition.string.begin","punctuation.definition.string.end"],settings:{foreground:"#E9F284"}},{scope:["punctuation.support.type.property-name.begin","punctuation.support.type.property-name.end"],settings:{foreground:"#8BE9FE"}},{scope:["string.quoted.docstring.multi","string.quoted.docstring.multi.python punctuation.definition.string.begin","string.quoted.docstring.multi.python punctuation.definition.string.end","string.quoted.docstring.multi.python constant.character.escape"],settings:{foreground:"#6272A4"}},{scope:["variable","constant.other.key.perl","support.variable.property","variable.other.constant.js","variable.other.constant.ts","variable.other.constant.tsx"],settings:{foreground:"#F8F8F2"}},{scope:["meta.import variable.other.readwrite","meta.variable.assignment.destructured.object.coffee variable"],settings:{fontStyle:"italic",foreground:"#FFB86C"}},{scope:["meta.import variable.other.readwrite.alias","meta.export variable.other.readwrite.alias","meta.variable.assignment.destructured.object.coffee variable variable"],settings:{fontStyle:"normal",foreground:"#F8F8F2"}},{scope:["meta.selectionset.graphql variable"],settings:{foreground:"#F1FA8C"}},{scope:["meta.selectionset.graphql meta.arguments variable"],settings:{foreground:"#F8F8F2"}},{scope:["entity.name.fragment.graphql","variable.fragment.graphql"],settings:{foreground:"#8BE9FD"}},{scope:["constant.other.symbol.hashkey.ruby","keyword.operator.dereference.java","keyword.operator.navigation.groovy","meta.scope.for-loop.shell punctuation.definition.string.begin","meta.scope.for-loop.shell punctuation.definition.string.end","meta.scope.for-loop.shell string","storage.modifier.import","punctuation.section.embedded.begin.tsx","punctuation.section.embedded.end.tsx","punctuation.section.embedded.begin.jsx","punctuation.section.embedded.end.jsx","punctuation.separator.list.comma.css","constant.language.empty-list.haskell"],settings:{foreground:"#F8F8F2"}},{scope:["source.shell variable.other"],settings:{foreground:"#BD93F9"}},{scope:["support.constant"],settings:{fontStyle:"normal",foreground:"#BD93F9"}},{scope:["meta.scope.prerequisites.makefile"],settings:{foreground:"#F1FA8C"}},{scope:["meta.attribute-selector.scss"],settings:{foreground:"#F1FA8C"}},{scope:["punctuation.definition.attribute-selector.end.bracket.square.scss","punctuation.definition.attribute-selector.begin.bracket.square.scss"],settings:{foreground:"#F8F8F2"}},{scope:["meta.preprocessor.haskell"],settings:{foreground:"#6272A4"}},{scope:["log.error"],settings:{fontStyle:"bold",foreground:"#FF5555"}},{scope:["log.warning"],settings:{fontStyle:"bold",foreground:"#F1FA8C"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/dream-maker.Eh5U-gDp.js b/assets/chunks/dream-maker.Eh5U-gDp.js new file mode 100644 index 000000000..2e8748fe8 --- /dev/null +++ b/assets/chunks/dream-maker.Eh5U-gDp.js @@ -0,0 +1,52 @@ +const e=Object.freeze({displayName:"Dream Maker",fileTypes:["dm","dme"],foldingStartMarker:`(?x) +/\\*\\*(?!\\*) +|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))`,foldingStopMarker:"(?|<)(=)?|\\.|:|/(=)?|~|\\+(\\+|=)?|-(-|=)?|\\*(\\*|=)?|%|>>|<<|=(=)?|!(=)?|<>|&|&&|\\^|\\||\\|\\||\\bto\\b|\\bin\\b|\\bstep\\b)",name:"keyword.operator.dm"},{match:"\\b([A-Z_][A-Z_0-9]*)\\b",name:"constant.language.dm"},{match:"\\bnull\\b",name:"constant.language.dm"},{begin:'{"',beginCaptures:{0:{name:"punctuation.definition.string.begin.dm"}},end:'"}',endCaptures:{0:{name:"punctuation.definition.string.end.dm"}},name:"string.quoted.triple.dm",patterns:[{include:"#string_escaped_char"},{include:"#string_embedded_expression"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.dm"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.dm"}},name:"string.quoted.double.dm",patterns:[{include:"#string_escaped_char"},{include:"#string_embedded_expression"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.dm"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.dm"}},name:"string.quoted.single.dm",patterns:[{include:"#string_escaped_char"}]},{begin:`(?x) +^\\s* ((\\#)\\s*define) \\s+ +((?[a-zA-Z_][a-zA-Z0-9_]*)) +(?: +(\\() +( +\\s* \\g \\s* +((,) \\s* \\g \\s*)* +(?:\\.\\.\\.)? +) +(\\)) +)`,beginCaptures:{1:{name:"keyword.control.directive.define.dm"},2:{name:"punctuation.definition.directive.dm"},3:{name:"entity.name.function.preprocessor.dm"},5:{name:"punctuation.definition.parameters.begin.dm"},6:{name:"variable.parameter.preprocessor.dm"},8:{name:"punctuation.separator.parameters.dm"},9:{name:"punctuation.definition.parameters.end.dm"}},end:"(?=(?://|/\\*))|(?[a-zA-Z_][a-zA-Z0-9_]*))`,beginCaptures:{1:{name:"keyword.control.directive.define.dm"},2:{name:"punctuation.definition.directive.dm"},3:{name:"variable.other.preprocessor.dm"}},end:"(?=(?://|/\\*))|(?\\\\\\s*\\n)",name:"punctuation.separator.continuation.dm"}]},{begin:"^\\s*(?:((#)\\s*(?:elif|else|if|ifdef|ifndef))|((#)\\s*(undef|include)))\\b",beginCaptures:{1:{name:"keyword.control.directive.conditional.dm"},2:{name:"punctuation.definition.directive.dm"},3:{name:"keyword.control.directive.$5.dm"},4:{name:"punctuation.definition.directive.dm"}},end:"(?=(?://|/\\*))|(?\\\\\\s*\\n)",name:"punctuation.separator.continuation.dm"}]},{include:"#block"},{begin:`(?x) +(?: ^ +| +(?: (?= \\s ) (?]) +) +) +(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\() +( +(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | +(?: (?<=operator) (?: [-*&<>=+!]+ | \\(\\) | \\[\\] ) ) +) +\\s*(?=\\()`,beginCaptures:{1:{name:"punctuation.whitespace.function.leading.dm"},3:{name:"entity.name.function.dm"},4:{name:"punctuation.definition.parameters.dm"}},end:"(?<=\\})|(?=#)|(;)?",name:"meta.function.dm",patterns:[{include:"#comments"},{include:"#parens"},{match:"\\bconst\\b",name:"storage.modifier.dm"},{include:"#block"}]}],repository:{access:{match:"\\.[a-zA-Z_][a-zA-Z_0-9]*\\b(?!\\s*\\()",name:"variable.other.dot-access.dm"},block:{begin:"\\{",end:"\\}",name:"meta.block.dm",patterns:[{include:"#block_innards"}]},block_innards:{patterns:[{include:"#preprocessor-rule-enabled-block"},{include:"#preprocessor-rule-disabled-block"},{include:"#preprocessor-rule-other-block"},{include:"#access"},{captures:{1:{name:"punctuation.whitespace.function-call.leading.dm"},2:{name:"support.function.any-method.dm"},3:{name:"punctuation.definition.parameters.dm"}},match:`(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?\\\\\\s*\\n)",name:"punctuation.separator.continuation.dm"}]}]},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",comment:"eat nested preprocessor if(def)s",end:"^\\s*#\\s*endif\\b.*$",patterns:[{include:"#disabled"}]},parens:{begin:"\\(",end:"\\)",name:"meta.parens.dm",patterns:[{include:"$base"}]},"preprocessor-rule-disabled":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.if.dm"},3:{name:"constant.numeric.preprocessor.dm"}},end:"^\\s*(#\\s*(endif)\\b)",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.else.dm"}},end:"(?=^\\s*#\\s*endif\\b.*$)",patterns:[{include:"$base"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*$)",name:"comment.block.preprocessor.if-branch",patterns:[{include:"#disabled"}]}]},"preprocessor-rule-disabled-block":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.if.dm"},3:{name:"constant.numeric.preprocessor.dm"}},end:"^\\s*(#\\s*(endif)\\b)",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.else.dm"}},end:"(?=^\\s*#\\s*endif\\b.*$)",patterns:[{include:"#block_innards"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*$)",name:"comment.block.preprocessor.if-branch.in-block",patterns:[{include:"#disabled"}]}]},"preprocessor-rule-enabled":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.if.dm"},3:{name:"constant.numeric.preprocessor.dm"}},end:"^\\s*(#\\s*(endif)\\b)",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.else.dm"}},contentName:"comment.block.preprocessor.else-branch",end:"(?=^\\s*#\\s*endif\\b.*$)",patterns:[{include:"#disabled"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*$)",patterns:[{include:"$base"}]}]},"preprocessor-rule-enabled-block":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.if.dm"},3:{name:"constant.numeric.preprocessor.dm"}},end:"^\\s*(#\\s*(endif)\\b)",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.else.dm"}},contentName:"comment.block.preprocessor.else-branch.in-block",end:"(?=^\\s*#\\s*endif\\b.*$)",patterns:[{include:"#disabled"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*$)",patterns:[{include:"#block_innards"}]}]},"preprocessor-rule-other":{begin:"^\\s*((#\\s*(if(n?def)?))\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.dm"}},end:"^\\s*((#\\s*(endif))\\b).*$",patterns:[{include:"$base"}]},"preprocessor-rule-other-block":{begin:"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.dm"},2:{name:"keyword.control.import.dm"}},end:"^\\s*(#\\s*(endif)\\b).*$",patterns:[{include:"#block_innards"}]},string_embedded_expression:{patterns:[{begin:"(?"n\\n \\[] +)`,name:"constant.character.escape.dm"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.dm"}]}},scopeName:"source.dm"});var n=[e];export{n as default}; diff --git a/assets/chunks/elixir.CpdO1lki.js b/assets/chunks/elixir.CpdO1lki.js new file mode 100644 index 000000000..6426bf12a --- /dev/null +++ b/assets/chunks/elixir.CpdO1lki.js @@ -0,0 +1,17 @@ +import e from"./html.CuK0VrWf.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";const i=Object.freeze({displayName:"Elixir",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",name:"elixir",patterns:[{begin:"\\b(fn)\\b(?!.*->)",beginCaptures:{1:{name:"keyword.control.elixir"}},end:"$",patterns:[{include:"#core_syntax"}]},{captures:{1:{name:"entity.name.type.class.elixir"},2:{name:"punctuation.separator.method.elixir"},3:{name:"entity.name.function.elixir"}},match:"([A-Z]\\w+)\\s*(\\.)\\s*([a-z_]\\w*[!?]?)"},{captures:{1:{name:"constant.other.symbol.elixir"},2:{name:"punctuation.separator.method.elixir"},3:{name:"entity.name.function.elixir"}},match:"(\\:\\w+)\\s*(\\.)\\s*([_]?\\w*[!?]?)"},{captures:{1:{name:"keyword.operator.other.elixir"},2:{name:"entity.name.function.elixir"}},match:"(\\|\\>)\\s*([a-z_]\\w*[!?]?)"},{match:"\\b[a-z_]\\w*[!?]?(?=\\s*\\.?\\s*\\()",name:"entity.name.function.elixir"},{begin:"\\b(fn)\\b(?=.*->)",beginCaptures:{1:{name:"keyword.control.elixir"}},end:"(?>(->)|(when)|(\\)))",endCaptures:{1:{name:"keyword.operator.other.elixir"},2:{name:"keyword.control.elixir"},3:{name:"punctuation.section.function.elixir"}},patterns:[{include:"#core_syntax"}]},{include:"#core_syntax"},{begin:`^(?=.*->)((?![^"']*("|')[^"']*->)|(?=.*->[^"']*("|')[^"']*->))((?!.*\\([^\\)]*->)|(?=[^\\(\\)]*->)|(?=\\s*\\(.*\\).*->))((?!.*\\b(fn)\\b)|(?=.*->.*\\bfn\\b))`,beginCaptures:{1:{name:"keyword.control.elixir"}},end:"(?>(->)|(when)|(\\)))",endCaptures:{1:{name:"keyword.operator.other.elixir"},2:{name:"keyword.control.elixir"},3:{name:"punctuation.section.function.elixir"}},patterns:[{include:"#core_syntax"}]}],repository:{core_syntax:{patterns:[{begin:"^\\s*(defmodule)\\b",beginCaptures:{1:{name:"keyword.control.module.elixir"}},end:"\\b(do)\\b",endCaptures:{1:{name:"keyword.control.module.elixir"}},name:"meta.module.elixir",patterns:[{match:"\\b[A-Z]\\w*(?=\\.)",name:"entity.other.inherited-class.elixir"},{match:"\\b[A-Z]\\w*\\b",name:"entity.name.type.class.elixir"}]},{begin:"^\\s*(defprotocol)\\b",beginCaptures:{1:{name:"keyword.control.protocol.elixir"}},end:"\\b(do)\\b",endCaptures:{1:{name:"keyword.control.protocol.elixir"}},name:"meta.protocol_declaration.elixir",patterns:[{match:"\\b[A-Z]\\w*\\b",name:"entity.name.type.protocol.elixir"}]},{begin:"^\\s*(defimpl)\\b",beginCaptures:{1:{name:"keyword.control.protocol.elixir"}},end:"\\b(do)\\b",endCaptures:{1:{name:"keyword.control.protocol.elixir"}},name:"meta.protocol_implementation.elixir",patterns:[{match:"\\b[A-Z]\\w*\\b",name:"entity.name.type.protocol.elixir"}]},{begin:"^\\s*(def|defmacro|defdelegate|defguard)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",beginCaptures:{1:{name:"keyword.control.module.elixir"},2:{name:"entity.name.function.public.elixir"},4:{name:"punctuation.section.function.elixir"}},end:"(\\bdo:)|(\\bdo\\b)|(?=\\s+(def|defn|defmacro|defdelegate|defguard)\\b)",endCaptures:{1:{name:"constant.other.keywords.elixir"},2:{name:"keyword.control.module.elixir"}},name:"meta.function.public.elixir",patterns:[{include:"$self"},{begin:"\\s(\\\\\\\\)",beginCaptures:{1:{name:"keyword.operator.other.elixir"}},end:",|\\)|$",patterns:[{include:"$self"}]},{match:"\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",name:"keyword.control.elixir"}]},{begin:"^\\s*(defp|defnp|defmacrop|defguardp)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",beginCaptures:{1:{name:"keyword.control.module.elixir"},2:{name:"entity.name.function.private.elixir"},4:{name:"punctuation.section.function.elixir"}},end:"(\\bdo:)|(\\bdo\\b)|(?=\\s+(defp|defmacrop|defguardp)\\b)",endCaptures:{1:{name:"constant.other.keywords.elixir"},2:{name:"keyword.control.module.elixir"}},name:"meta.function.private.elixir",patterns:[{include:"$self"},{begin:"\\s(\\\\\\\\)",beginCaptures:{1:{name:"keyword.operator.other.elixir"}},end:",|\\)|$",patterns:[{include:"$self"}]},{match:"\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",name:"keyword.control.elixir"}]},{begin:'\\s*~L"""',comment:"Leex Sigil",end:'\\s*"""',name:"sigil.leex",patterns:[{include:"text.elixir"},{include:"text.html.basic"}]},{begin:'\\s*~H"""',comment:"HEEx Sigil",end:'\\s*"""',name:"sigil.heex",patterns:[{include:"text.elixir"},{include:"text.html.basic"}]},{begin:'@(module|type)?doc (~[a-z])?"""',comment:"@doc with heredocs is treated as documentation",end:'\\s*"""',name:"comment.block.documentation.heredoc",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:'@(module|type)?doc ~[A-Z]"""',comment:"@doc with heredocs is treated as documentation",end:'\\s*"""',name:"comment.block.documentation.heredoc"},{begin:"@(module|type)?doc (~[a-z])?'''",comment:"@doc with heredocs is treated as documentation",end:"\\s*'''",name:"comment.block.documentation.heredoc",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"@(module|type)?doc ~[A-Z]'''",comment:"@doc with heredocs is treated as documentation",end:"\\s*'''",name:"comment.block.documentation.heredoc"},{comment:"@doc false is treated as documentation",match:"@(module|type)?doc false",name:"comment.block.documentation.false"},{begin:'@(module|type)?doc "',comment:"@doc with string is treated as documentation",end:'"',name:"comment.block.documentation.string",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{match:"(?_?[0-9A-Fa-f])*\\b",name:"constant.numeric.hex.elixir"},{match:"\\b\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)+)([eE][-+]?\\d(?>_?\\d)*)?\\b",name:"constant.numeric.float.elixir"},{match:"\\b\\d(?>_?\\d)*\\b",name:"constant.numeric.integer.elixir"},{match:"\\b0b[01](?>_?[01])*\\b",name:"constant.numeric.binary.elixir"},{match:"\\b0o[0-7](?>_?[0-7])*\\b",name:"constant.numeric.octal.elixir"},{begin:":'",captures:{0:{name:"punctuation.definition.constant.elixir"}},end:"'",name:"constant.other.symbol.single-quoted.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:':"',captures:{0:{name:"punctuation.definition.constant.elixir"}},end:'"',name:"constant.other.symbol.double-quoted.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"(?>''')",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"Single-quoted heredocs",end:"^\\s*'''",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.single.heredoc.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"single quoted string (allows for interpolation)",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.single.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:'(?>""")',beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"Double-quoted heredocs",end:'^\\s*"""',endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.double.heredoc.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"double quoted string (allows for interpolation)",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.double.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:'~[a-z](?>""")',beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"Double-quoted heredocs sigils",end:'^\\s*"""',endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.heredoc.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"~[a-z]\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (allow for interpolation)",end:"\\}[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"~[a-z]\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (allow for interpolation)",end:"\\][a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"~[a-z]\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (allow for interpolation)",end:"\\>[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"~[a-z]\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (allow for interpolation)",end:"\\)[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:"~[a-z]([^\\w])",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (allow for interpolation)",end:"\\1[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.elixir",patterns:[{include:"#interpolated_elixir"},{include:"#escaped_char"}]},{begin:'~[A-Z](?>""")',beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"Double-quoted heredocs sigils",end:'^\\s*"""',endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.heredoc.literal.elixir"},{begin:"~[A-Z]\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (without interpolation)",end:"\\}[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.literal.elixir"},{begin:"~[A-Z]\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (without interpolation)",end:"\\][a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.literal.elixir"},{begin:"~[A-Z]\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (without interpolation)",end:"\\>[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.literal.elixir"},{begin:"~[A-Z]\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (without interpolation)",end:"\\)[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.literal.elixir"},{begin:"~[A-Z]([^\\w])",beginCaptures:{0:{name:"punctuation.definition.string.begin.elixir"}},comment:"sigil (without interpolation)",end:"\\1[a-z]*",endCaptures:{0:{name:"punctuation.definition.string.end.elixir"}},name:"string.quoted.other.sigil.literal.elixir"},{captures:{1:{name:"punctuation.definition.constant.elixir"}},comment:"symbols",match:"(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|=~|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|\\.\\.//|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",name:"constant.other.symbol.elixir"},{captures:{1:{name:"punctuation.definition.constant.elixir"}},comment:"symbols",match:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",name:"constant.other.keywords.elixir"},{begin:"(^[ \\t]+)?(?=##)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.elixir"}},end:"(?!#)",patterns:[{begin:"##",beginCaptures:{0:{name:"punctuation.definition.comment.elixir"}},end:"\\n",name:"comment.line.section.elixir"}]},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.elixir"}},end:"(?!#)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.elixir"}},end:"\\n",name:"comment.line.number-sign.elixir"}]},{match:"\\b_([^_][\\w]+[?!]?)",name:"comment.unused.elixir"},{match:"\\b_\\b",name:"comment.wildcard.elixir"},{comment:` + matches questionmark-letters. + + examples (1st alternation = hex): + ?\\x1 ?\\x61 + + examples (2rd alternation = escaped): + ?\\n ?\\b + + examples (3rd alternation = normal): + ?a ?A ?0 + ?* ?" ?( + ?. ?# + + the negative lookbehind prevents against matching + p(42.tainted?) + `,match:"(?",name:"keyword.operator.concatenation.elixir"},{match:"\\|\\>|<~>|<>|<<<|>>>|~>>|<<~|~>|<~|<\\|>",name:"keyword.operator.sigils_1.elixir"},{match:"&&&|&&",name:"keyword.operator.sigils_2.elixir"},{match:"<\\-|\\\\\\\\",name:"keyword.operator.sigils_3.elixir"},{match:"===?|!==?|<=?|>=?",name:"keyword.operator.comparison.elixir"},{match:"(\\|\\|\\||&&&|\\^\\^\\^|<<<|>>>|~~~)",name:"keyword.operator.bitwise.elixir"},{match:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",name:"keyword.operator.logical.elixir"},{match:"(\\*|\\+|\\-|/)",name:"keyword.operator.arithmetic.elixir"},{match:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|//|\\|>|~|=>|&",name:"keyword.operator.other.elixir"},{match:"=",name:"keyword.operator.assignment.elixir"},{match:":",name:"punctuation.separator.other.elixir"},{match:"\\;",name:"punctuation.separator.statement.elixir"},{match:",",name:"punctuation.separator.object.elixir"},{match:"\\.",name:"punctuation.separator.method.elixir"},{match:"\\{|\\}",name:"punctuation.section.scope.elixir"},{match:"\\[|\\]",name:"punctuation.section.array.elixir"},{match:"\\(|\\)",name:"punctuation.section.function.elixir"}]},escaped_char:{match:"\\\\(x[\\da-fA-F]{1,2}|.)",name:"constant.character.escaped.elixir"},interpolated_elixir:{begin:"#\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.elixir"}},contentName:"source.elixir",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.elixir"}},name:"meta.embedded.line.elixir",patterns:[{include:"#nest_curly_and_self"},{include:"$self"}]},nest_curly_and_self:{patterns:[{begin:"\\{",captures:{0:{name:"punctuation.section.scope.elixir"}},end:"\\}",patterns:[{include:"#nest_curly_and_self"}]},{include:"$self"}]}},scopeName:"source.elixir",embeddedLangs:["html"]});var r=[...e,i];export{r as default}; diff --git a/assets/chunks/elm.DbZvrHdh.js b/assets/chunks/elm.DbZvrHdh.js new file mode 100644 index 000000000..175270215 --- /dev/null +++ b/assets/chunks/elm.DbZvrHdh.js @@ -0,0 +1 @@ +import e from"./glsl.-GlVTnW0.js";import"./c.RCJZWN-0.js";const a=Object.freeze({displayName:"Elm",fileTypes:["elm"],name:"elm",patterns:[{include:"#import"},{include:"#module"},{include:"#debug"},{include:"#comments"},{match:"\\b(_)\\b",name:"keyword.unused.elm"},{include:"#type-signature"},{include:"#type-declaration"},{include:"#type-alias-declaration"},{include:"#string-triple"},{include:"#string-quote"},{include:"#char"},{comment:"Floats are always decimal",match:"\\b([0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",name:"constant.numeric.float.elm"},{match:"\\b([0-9]+)\\b",name:"constant.numeric.elm"},{match:"\\b(0x[0-9a-fA-F]+)\\b",name:"constant.numeric.elm"},{include:"#glsl"},{include:"#record-prefix"},{include:"#module-prefix"},{include:"#constructor"},{captures:{1:{name:"punctuation.bracket.elm"},2:{name:"record.name.elm"},3:{name:"keyword.pipe.elm"},4:{name:"entity.name.record.field.elm"}},match:"(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\|)\\s+([a-z][a-zA-Z0-9_]*)",name:"meta.record.field.update.elm"},{captures:{1:{name:"keyword.pipe.elm"},2:{name:"entity.name.record.field.elm"},3:{name:"keyword.operator.assignment.elm"}},match:"(\\|)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",name:"meta.record.field.update.elm"},{captures:{1:{name:"punctuation.bracket.elm"},2:{name:"record.name.elm"}},match:"(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+$",name:"meta.record.field.update.elm"},{captures:{1:{name:"punctuation.bracket.elm"},2:{name:"entity.name.record.field.elm"},3:{name:"keyword.operator.assignment.elm"}},match:"(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",name:"meta.record.field.elm"},{captures:{1:{name:"punctuation.separator.comma.elm"},2:{name:"entity.name.record.field.elm"},3:{name:"keyword.operator.assignment.elm"}},match:"(,)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",name:"meta.record.field.elm"},{match:"(\\}|\\{)",name:"punctuation.bracket.elm"},{include:"#unit"},{include:"#comma"},{include:"#parens"},{match:"(->)",name:"keyword.operator.arrow.elm"},{include:"#infix_op"},{match:"(\\=|\\:|\\||\\\\)",name:"keyword.other.elm"},{match:"\\b(type|as|port|exposing|alias|infixl|infixr|infix)\\s+",name:"keyword.other.elm"},{match:"\\b(if|then|else|case|of|let|in)\\s+",name:"keyword.control.elm"},{include:"#record-accessor"},{include:"#top_level_value"},{include:"#value"},{include:"#period"},{include:"#square_brackets"}],repository:{block_comment:{applyEndPatternLast:1,begin:"\\{-(?!#)",captures:{0:{name:"punctuation.definition.comment.elm"}},end:"-\\}",name:"comment.block.elm",patterns:[{include:"#block_comment"}]},char:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.char.begin.elm"}},end:"'",endCaptures:{0:{name:"punctuation.definition.char.end.elm"}},name:"string.quoted.single.elm",patterns:[{match:`\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})`,name:"constant.character.escape.elm"},{match:"\\^[A-Z@\\[\\]\\\\\\^_]",name:"constant.character.escape.control.elm"}]},comma:{match:"(,)",name:"punctuation.separator.comma.elm"},comments:{patterns:[{begin:"--",captures:{1:{name:"punctuation.definition.comment.elm"}},end:"$",name:"comment.line.double-dash.elm"},{include:"#block_comment"}]},constructor:{match:"\\b[A-Z][a-zA-Z0-9_]*\\b",name:"constant.type-constructor.elm"},debug:{match:"\\b(Debug)\\b",name:"invalid.illegal.debug.elm"},glsl:{begin:"(\\[)(glsl)(\\|)",beginCaptures:{1:{name:"entity.glsl.bracket.elm"},2:{name:"entity.glsl.name.elm"},3:{name:"entity.glsl.bracket.elm"}},end:"(\\|\\])",endCaptures:{1:{name:"entity.glsl.bracket.elm"}},name:"meta.embedded.block.glsl",patterns:[{include:"source.glsl"}]},import:{begin:"^\\b(import)\\s+",beginCaptures:{1:{name:"keyword.control.import.elm"}},end:"\\n(?!\\s)",name:"meta.import.elm",patterns:[{match:"(as|exposing)",name:"keyword.control.elm"},{include:"#module_chunk"},{include:"#period"},{match:"\\s+",name:"punctuation.spaces.elm"},{include:"#module-exports"}]},infix_op:{match:"(|<\\?>|<\\||<=|\\|\\||&&|>=|\\|>|\\|=|\\|\\.|\\+\\+|::|/=|==|//|>>|<<|<|>|\\^|\\+|-|/|\\*)",name:"keyword.operator.elm"},module:{begin:"^\\b((port |effect )?module)\\s+",beginCaptures:{1:{name:"keyword.other.elm"}},end:"\\n(?!\\s)",endCaptures:{1:{name:"keyword.other.elm"}},name:"meta.declaration.module.elm",patterns:[{include:"#module_chunk"},{include:"#period"},{match:"(exposing)",name:"keyword.other.elm"},{match:"\\s+",name:"punctuation.spaces.elm"},{include:"#module-exports"}]},"module-exports":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.parens.module-export.elm"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parens.module-export.elm"}},name:"meta.declaration.exports.elm",patterns:[{match:"\\b[a-z][a-zA-Z_'0-9]*",name:"entity.name.function.elm"},{match:"\\b[A-Z][A-Za-z_'0-9]*",name:"storage.type.elm"},{match:",",name:"punctuation.separator.comma.elm"},{match:"\\s+",name:"punctuation.spaces.elm"},{include:"#comma"},{match:"\\(\\.\\.\\)",name:"punctuation.parens.ellipses.elm"},{match:"\\.\\.",name:"punctuation.parens.ellipses.elm"},{include:"#infix_op"},{comment:"So named because I don't know what to call this.",match:"\\(.*?\\)",name:"meta.other.unknown.elm"}]},"module-prefix":{captures:{1:{name:"support.module.elm"},2:{name:"keyword.other.period.elm"}},match:"([A-Z][a-zA-Z0-9_]*)(\\.)",name:"meta.module.name.elm"},module_chunk:{match:"[A-Z][a-zA-Z0-9_]*",name:"support.module.elm"},parens:{match:"(\\(|\\))",name:"punctuation.parens.elm"},period:{match:"[.]",name:"keyword.other.period.elm"},"record-accessor":{captures:{1:{name:"keyword.other.period.elm"},2:{name:"entity.name.record.field.accessor.elm"}},match:"(\\.)([a-z][a-zA-Z0-9_]*)",name:"meta.record.accessor"},"record-prefix":{captures:{1:{name:"record.name.elm"},2:{name:"keyword.other.period.elm"},3:{name:"entity.name.record.field.accessor.elm"}},match:"([a-z][a-zA-Z0-9_]*)(\\.)([a-z][a-zA-Z0-9_]*)",name:"record.accessor.elm"},square_brackets:{match:"[\\[\\]]",name:"punctuation.definition.list.elm"},"string-quote":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.elm"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.elm"}},name:"string.quoted.double.elm",patterns:[{match:`\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})`,name:"constant.character.escape.elm"},{match:"\\^[A-Z@\\[\\]\\\\\\^_]",name:"constant.character.escape.control.elm"}]},"string-triple":{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.elm"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.elm"}},name:"string.quoted.triple.elm",patterns:[{match:`\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})`,name:"constant.character.escape.elm"},{match:"\\^[A-Z@\\[\\]\\\\\\^_]",name:"constant.character.escape.control.elm"}]},top_level_value:{match:"^[a-z][a-zA-Z0-9_]*\\b",name:"entity.name.function.top_level.elm"},"type-alias-declaration":{begin:"^(type\\s+)(alias\\s+)([A-Z][a-zA-Z0-9_']*)\\s+",beginCaptures:{1:{name:"keyword.type.elm"},2:{name:"keyword.type-alias.elm"},3:{name:"storage.type.elm"}},end:"^(?=\\S)",name:"meta.function.type-declaration.elm",patterns:[{match:"\\n\\s+",name:"punctuation.spaces.elm"},{match:"\\=",name:"keyword.operator.assignment.elm"},{include:"#module-prefix"},{match:"\\b[A-Z][a-zA-Z0-9_]*\\b",name:"storage.type.elm"},{match:"\\b[a-z][a-zA-Z0-9_]*\\b",name:"variable.type.elm"},{include:"#comments"},{include:"#type-record"}]},"type-declaration":{begin:"^(type\\s+)([A-Z][a-zA-Z0-9_']*)\\s+",beginCaptures:{1:{name:"keyword.type.elm"},2:{name:"storage.type.elm"}},end:"^(?=\\S)",name:"meta.function.type-declaration.elm",patterns:[{captures:{1:{name:"constant.type-constructor.elm"}},match:"^\\s*([A-Z][a-zA-Z0-9_]*)\\b",name:"meta.record.field.elm"},{match:"\\s+",name:"punctuation.spaces.elm"},{captures:{1:{name:"keyword.operator.assignment.elm"},2:{name:"constant.type-constructor.elm"}},match:"(\\=|\\|)\\s+([A-Z][a-zA-Z0-9_]*)\\b",name:"meta.record.field.elm"},{match:"\\=",name:"keyword.operator.assignment.elm"},{match:"\\-\\>",name:"keyword.operator.arrow.elm"},{include:"#module-prefix"},{match:"\\b[a-z][a-zA-Z0-9_]*\\b",name:"variable.type.elm"},{match:"\\b[A-Z][a-zA-Z0-9_]*\\b",name:"storage.type.elm"},{include:"#comments"},{include:"#type-record"}]},"type-record":{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.section.braces.begin"}},end:"(\\})",endCaptures:{1:{name:"punctuation.section.braces.end"}},name:"meta.function.type-record.elm",patterns:[{match:"\\s+",name:"punctuation.spaces.elm"},{match:"->",name:"keyword.operator.arrow.elm"},{captures:{1:{name:"entity.name.record.field.elm"},2:{name:"keyword.other.elm"}},match:"([a-z][a-zA-Z0-9_]*)\\s+(\\:)",name:"meta.record.field.elm"},{match:"\\,",name:"punctuation.separator.comma.elm"},{include:"#module-prefix"},{match:"\\b[a-z][a-zA-Z0-9_]*\\b",name:"variable.type.elm"},{match:"\\b[A-Z][a-zA-Z0-9_]*\\b",name:"storage.type.elm"},{include:"#comments"},{include:"#type-record"}]},"type-signature":{begin:"^(port\\s+)?([a-z_][a-zA-Z0-9_']*)\\s+(\\:)",beginCaptures:{1:{name:"keyword.other.port.elm"},2:{name:"entity.name.function.elm"},3:{name:"keyword.other.colon.elm"}},end:"((^(?=[a-z]))|^$)",name:"meta.function.type-declaration.elm",patterns:[{include:"#type-signature-chunk"}]},"type-signature-chunk":{patterns:[{match:"->",name:"keyword.operator.arrow.elm"},{match:"\\s+",name:"punctuation.spaces.elm"},{include:"#module-prefix"},{match:"\\b[a-z][a-zA-Z0-9_]*\\b",name:"variable.type.elm"},{match:"\\b[A-Z][a-zA-Z0-9_]*\\b",name:"storage.type.elm"},{match:"\\(\\)",name:"constant.unit.elm"},{include:"#comma"},{include:"#parens"},{include:"#comments"},{include:"#type-record"}]},unit:{match:"\\(\\)",name:"constant.unit.elm"},value:{match:"\\b[a-z][a-zA-Z0-9_]*\\b",name:"meta.value.elm"}},scopeName:"source.elm",embeddedLangs:["glsl"]});var m=[...e,a];export{m as default}; diff --git a/assets/chunks/erb.C8njeWMx.js b/assets/chunks/erb.C8njeWMx.js new file mode 100644 index 000000000..7a88b7c91 --- /dev/null +++ b/assets/chunks/erb.C8njeWMx.js @@ -0,0 +1 @@ +import e from"./html.CuK0VrWf.js";import n from"./ruby.BYVeyLWu.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";import"./xml.BzTcx3OS.js";import"./java.ClXEvkw9.js";import"./sql.DbK06e1c.js";import"./c.RCJZWN-0.js";import"./shellscript.BZfs-ost.js";import"./lua.CHJYZA-p.js";const t=Object.freeze({displayName:"ERB",fileTypes:["erb","rhtml","html.erb"],injections:{"text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | comment)":{patterns:[{begin:"(^\\s*)(?=<%+#(?![^%]*%>))",beginCaptures:{0:{name:"punctuation.whitespace.comment.leading.erb"}},end:"(?!\\G)(\\s*$\\n)?",endCaptures:{0:{name:"punctuation.whitespace.comment.trailing.erb"}},patterns:[{include:"#comment"}]},{begin:"(^\\s*)(?=<%(?![^%]*%>))",beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.erb"}},end:"(?!\\G)(\\s*$\\n)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.erb"}},patterns:[{include:"#tags"}]},{include:"#comment"},{include:"#tags"}]}},name:"erb",patterns:[{include:"text.html.basic"}],repository:{comment:{patterns:[{begin:"<%+#",beginCaptures:{0:{name:"punctuation.definition.comment.begin.erb"}},end:"%>",endCaptures:{0:{name:"punctuation.definition.comment.end.erb"}},name:"comment.block.erb"}]},tags:{patterns:[{begin:"<%+(?!>)[-=]?(?![^%]*%>)",beginCaptures:{0:{name:"punctuation.section.embedded.begin.erb"}},contentName:"source.ruby",end:"(-?%)>",endCaptures:{0:{name:"punctuation.section.embedded.end.erb"},1:{name:"source.ruby"}},name:"meta.embedded.block.erb",patterns:[{captures:{1:{name:"punctuation.definition.comment.erb"}},match:"(#).*?(?=-?%>)",name:"comment.line.number-sign.erb"},{include:"source.ruby"}]},{begin:"<%+(?!>)[-=]?",beginCaptures:{0:{name:"punctuation.section.embedded.begin.erb"}},contentName:"source.ruby",end:"(-?%)>",endCaptures:{0:{name:"punctuation.section.embedded.end.erb"},1:{name:"source.ruby"}},name:"meta.embedded.line.erb",patterns:[{captures:{1:{name:"punctuation.definition.comment.erb"}},match:"(#).*?(?=-?%>)",name:"comment.line.number-sign.erb"},{include:"source.ruby"}]}]}},scopeName:"text.html.erb",embeddedLangs:["html","ruby"]});var p=[...e,...n,t];export{p as default}; diff --git a/assets/chunks/erlang.DS9ZWoKD.js b/assets/chunks/erlang.DS9ZWoKD.js new file mode 100644 index 000000000..c329126c1 --- /dev/null +++ b/assets/chunks/erlang.DS9ZWoKD.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Erlang",fileTypes:["erl","escript","hrl","xrl","yrl"],name:"erlang",patterns:[{include:"#module-directive"},{include:"#import-export-directive"},{include:"#behaviour-directive"},{include:"#record-directive"},{include:"#define-directive"},{include:"#macro-directive"},{include:"#directive"},{include:"#function"},{include:"#everything-else"}],repository:{atom:{patterns:[{begin:"(')",beginCaptures:{1:{name:"punctuation.definition.symbol.begin.erlang"}},end:"(')",endCaptures:{1:{name:"punctuation.definition.symbol.end.erlang"}},name:"constant.other.symbol.quoted.single.erlang",patterns:[{captures:{1:{name:"punctuation.definition.escape.erlang"},3:{name:"punctuation.definition.escape.erlang"}},match:`(\\\\)([bdefnrstv\\\\'"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})`,name:"constant.other.symbol.escape.erlang"},{match:"\\\\\\^?.?",name:"invalid.illegal.atom.erlang"}]},{match:"[a-z][a-zA-Z\\d@_]*+",name:"constant.other.symbol.unquoted.erlang"}]},"behaviour-directive":{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.behaviour.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.type.class.behaviour.definition.erlang"},5:{name:"punctuation.definition.parameters.end.erlang"},6:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+(behaviour)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",name:"meta.directive.behaviour.erlang"},binary:{begin:"(<<)",beginCaptures:{1:{name:"punctuation.definition.binary.begin.erlang"}},end:"(>>)",endCaptures:{1:{name:"punctuation.definition.binary.end.erlang"}},name:"meta.structure.binary.erlang",patterns:[{captures:{1:{name:"punctuation.separator.binary.erlang"},2:{name:"punctuation.separator.value-size.erlang"}},match:"(,)|(:)"},{include:"#internal-type-specifiers"},{include:"#everything-else"}]},character:{patterns:[{captures:{1:{name:"punctuation.definition.character.erlang"},2:{name:"constant.character.escape.erlang"},3:{name:"punctuation.definition.escape.erlang"},5:{name:"punctuation.definition.escape.erlang"}},match:`(\\$)((\\\\)([bdefnrstv\\\\'"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2}))`,name:"constant.character.erlang"},{match:"\\$\\\\\\^?.?",name:"invalid.illegal.character.erlang"},{captures:{1:{name:"punctuation.definition.character.erlang"}},match:"(\\$)[ \\S]",name:"constant.character.erlang"},{match:"\\$.?",name:"invalid.illegal.character.erlang"}]},comment:{begin:"(^[ \\t]+)?(?=%)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.erlang"}},end:"(?!\\G)",patterns:[{begin:"%",beginCaptures:{0:{name:"punctuation.definition.comment.erlang"}},end:"\\n",name:"comment.line.percentage.erlang"}]},"define-directive":{patterns:[{begin:"^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+",beginCaptures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.define.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.function.macro.definition.erlang"}},end:"(\\))\\s*+(\\.)",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"},2:{name:"punctuation.section.directive.end.erlang"}},name:"meta.directive.define.erlang",patterns:[{include:"#everything-else"}]},{begin:"(?=^\\s*+-\\s*+define\\s*+\\(\\s*+[a-zA-Z\\d@_]++\\s*+\\()",end:"(\\))\\s*+(\\.)",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"},2:{name:"punctuation.section.directive.end.erlang"}},name:"meta.directive.define.erlang",patterns:[{begin:"^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(\\()",beginCaptures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.define.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.function.macro.definition.erlang"},5:{name:"punctuation.definition.parameters.begin.erlang"}},end:"(\\))\\s*(,)",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"},2:{name:"punctuation.separator.parameters.erlang"}},patterns:[{match:",",name:"punctuation.separator.parameters.erlang"},{include:"#everything-else"}]},{match:"\\|\\||\\||:|;|,|\\.|->",name:"punctuation.separator.define.erlang"},{include:"#everything-else"}]}]},directive:{patterns:[{begin:"^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\(?)",beginCaptures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"}},end:"(\\)?)\\s*+(\\.)",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"},2:{name:"punctuation.section.directive.end.erlang"}},name:"meta.directive.erlang",patterns:[{include:"#everything-else"}]},{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.erlang"},3:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\.)",name:"meta.directive.erlang"}]},docstring:{begin:'(?)|(;)|(,)"},"internal-function-list":{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.list.begin.erlang"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.list.end.erlang"}},name:"meta.structure.list.function.erlang",patterns:[{begin:"([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(/)",beginCaptures:{1:{name:"entity.name.function.erlang"},2:{name:"punctuation.separator.function-arity.erlang"}},end:"(,)|(?=\\])",endCaptures:{1:{name:"punctuation.separator.list.erlang"}},patterns:[{include:"#everything-else"}]},{include:"#everything-else"}]},"internal-function-parts":{patterns:[{begin:"(?=\\()",end:"(->)",endCaptures:{1:{name:"punctuation.separator.clause-head-body.erlang"}},patterns:[{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.erlang"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"}},patterns:[{match:",",name:"punctuation.separator.parameters.erlang"},{include:"#everything-else"}]},{match:",|;",name:"punctuation.separator.guards.erlang"},{include:"#everything-else"}]},{match:",",name:"punctuation.separator.expressions.erlang"},{include:"#everything-else"}]},"internal-record-body":{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.definition.class.record.begin.erlang"}},end:"(\\})",endCaptures:{1:{name:"punctuation.definition.class.record.end.erlang"}},name:"meta.structure.record.erlang",patterns:[{begin:"(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_))",beginCaptures:{2:{name:"variable.other.field.erlang"},3:{name:"variable.language.omitted.field.erlang"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.class.record.erlang"}},patterns:[{include:"#everything-else"}]},{include:"#everything-else"}]},"internal-string-body":{patterns:[{captures:{1:{name:"punctuation.definition.escape.erlang"},3:{name:"punctuation.definition.escape.erlang"}},comment:"escape sequence",match:`(\\\\)([bdefnrstv\\\\'"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})`,name:"constant.character.escape.erlang"},{match:"\\\\\\^?.?",name:"invalid.illegal.string.erlang"},{captures:{1:{name:"punctuation.definition.placeholder.erlang"},6:{name:"punctuation.separator.placeholder-parts.erlang"},10:{name:"punctuation.separator.placeholder-parts.erlang"}},comment:"io:fwrite format control sequence",match:"(~)((\\-)?\\d++|(\\*))?((\\.)(\\d++|(\\*))?((\\.)((\\*)|.))?)?[tlkK]*[~cfegswpWPBX#bx\\+ni]",name:"constant.character.format.placeholder.other.erlang"},{captures:{1:{name:"punctuation.definition.placeholder.erlang"}},comment:"io:fread format control sequence",match:"(~)(\\*)?(\\d++)?(t)?[~du\\-#fsacl]",name:"constant.character.format.placeholder.other.erlang"},{match:'~[^"]?',name:"invalid.illegal.string.erlang"}]},"internal-type-specifiers":{begin:"(/)",beginCaptures:{1:{name:"punctuation.separator.value-type.erlang"}},end:"(?=,|:|>>)",patterns:[{captures:{1:{name:"storage.type.erlang"},2:{name:"storage.modifier.signedness.erlang"},3:{name:"storage.modifier.endianness.erlang"},4:{name:"storage.modifier.unit.erlang"},5:{name:"punctuation.separator.unit-specifiers.erlang"},6:{name:"constant.numeric.integer.decimal.erlang"},7:{name:"punctuation.separator.type-specifiers.erlang"}},match:"(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\d++)|(-)"}]},keyword:{match:"\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when|maybe|else)\\b",name:"keyword.control.erlang"},"language-constant":{match:"\\b(false|true|undefined)\\b",name:"constant.language"},list:{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.list.begin.erlang"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.list.end.erlang"}},name:"meta.structure.list.erlang",patterns:[{match:"\\||\\|\\||,",name:"punctuation.separator.list.erlang"},{include:"#everything-else"}]},"macro-directive":{patterns:[{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.ifdef.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.function.macro.erlang"},5:{name:"punctuation.definition.parameters.end.erlang"},6:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+(ifdef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",name:"meta.directive.ifdef.erlang"},{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.ifndef.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.function.macro.erlang"},5:{name:"punctuation.definition.parameters.end.erlang"},6:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+(ifndef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",name:"meta.directive.ifndef.erlang"},{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.undef.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.function.macro.erlang"},5:{name:"punctuation.definition.parameters.end.erlang"},6:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+(undef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",name:"meta.directive.undef.erlang"}]},"macro-usage":{captures:{1:{name:"keyword.operator.macro.erlang"},2:{name:"entity.name.function.macro.erlang"}},match:"(\\?\\??)\\s*+([a-zA-Z\\d@_]++)",name:"meta.macro-usage.erlang"},"module-directive":{captures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.module.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.type.class.module.definition.erlang"},5:{name:"punctuation.definition.parameters.end.erlang"},6:{name:"punctuation.section.directive.end.erlang"}},match:"^\\s*+(-)\\s*+(module)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",name:"meta.directive.module.erlang"},number:{begin:"(?=\\d)",end:"(?!\\d)",patterns:[{captures:{1:{name:"punctuation.separator.integer-float.erlang"},2:{name:"punctuation.separator.float-exponent.erlang"}},match:"\\d++(\\.)\\d++([eE][\\+\\-]?\\d++)?",name:"constant.numeric.float.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"2(#)([0-1]++_)*[0-1]++",name:"constant.numeric.integer.binary.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"3(#)([0-2]++_)*[0-2]++",name:"constant.numeric.integer.base-3.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"4(#)([0-3]++_)*[0-3]++",name:"constant.numeric.integer.base-4.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"5(#)([0-4]++_)*[0-4]++",name:"constant.numeric.integer.base-5.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"6(#)([0-5]++_)*[0-5]++",name:"constant.numeric.integer.base-6.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"7(#)([0-6]++_)*[0-6]++",name:"constant.numeric.integer.base-7.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"8(#)([0-7]++_)*[0-7]++",name:"constant.numeric.integer.octal.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"9(#)([0-8]++_)*[0-8]++",name:"constant.numeric.integer.base-9.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"10(#)(\\d++_)*\\d++",name:"constant.numeric.integer.decimal.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"11(#)([\\daA]++_)*[\\daA]++",name:"constant.numeric.integer.base-11.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"12(#)([\\da-bA-B]++_)*[\\da-bA-B]++",name:"constant.numeric.integer.base-12.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"13(#)([\\da-cA-C]++_)*[\\da-cA-C]++",name:"constant.numeric.integer.base-13.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"14(#)([\\da-dA-D]++_)*[\\da-dA-D]++",name:"constant.numeric.integer.base-14.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"15(#)([\\da-eA-E]++_)*[\\da-eA-E]++",name:"constant.numeric.integer.base-15.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"16(#)([\\da-fA-F]++_)*[\\da-fA-F]++",name:"constant.numeric.integer.hexadecimal.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"17(#)([\\da-gA-G]++_)*[\\da-gA-G]++",name:"constant.numeric.integer.base-17.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"18(#)([\\da-hA-H]++_)*[\\da-hA-H]++",name:"constant.numeric.integer.base-18.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"19(#)([\\da-iA-I]++_)*[\\da-iA-I]++",name:"constant.numeric.integer.base-19.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"20(#)([\\da-jA-J]++_)*[\\da-jA-J]++",name:"constant.numeric.integer.base-20.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"21(#)([\\da-kA-K]++_)*[\\da-kA-K]++",name:"constant.numeric.integer.base-21.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"22(#)([\\da-lA-L]++_)*[\\da-lA-L]++",name:"constant.numeric.integer.base-22.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"23(#)([\\da-mA-M]++_)*[\\da-mA-M]++",name:"constant.numeric.integer.base-23.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"24(#)([\\da-nA-N]++_)*[\\da-nA-N]++",name:"constant.numeric.integer.base-24.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"25(#)([\\da-oA-O]++_)*[\\da-oA-O]++",name:"constant.numeric.integer.base-25.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"26(#)([\\da-pA-P]++_)*[\\da-pA-P]++",name:"constant.numeric.integer.base-26.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"27(#)([\\da-qA-Q]++_)*[\\da-qA-Q]++",name:"constant.numeric.integer.base-27.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"28(#)([\\da-rA-R]++_)*[\\da-rA-R]++",name:"constant.numeric.integer.base-28.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"29(#)([\\da-sA-S]++_)*[\\da-sA-S]++",name:"constant.numeric.integer.base-29.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"30(#)([\\da-tA-T]++_)*[\\da-tA-T]++",name:"constant.numeric.integer.base-30.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"31(#)([\\da-uA-U]++_)*[\\da-uA-U]++",name:"constant.numeric.integer.base-31.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"32(#)([\\da-vA-V]++_)*[\\da-vA-V]++",name:"constant.numeric.integer.base-32.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"33(#)([\\da-wA-W]++_)*[\\da-wA-W]++",name:"constant.numeric.integer.base-33.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"34(#)([\\da-xA-X]++_)*[\\da-xA-X]++",name:"constant.numeric.integer.base-34.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"35(#)([\\da-yA-Y]++_)*[\\da-yA-Y]++",name:"constant.numeric.integer.base-35.erlang"},{captures:{1:{name:"punctuation.separator.base-integer.erlang"}},match:"36(#)([\\da-zA-Z]++_)*[\\da-zA-Z]++",name:"constant.numeric.integer.base-36.erlang"},{match:"\\d++#([\\da-zA-Z]++_)*[\\da-zA-Z]++",name:"invalid.illegal.integer.erlang"},{match:"(\\d++_)*\\d++",name:"constant.numeric.integer.decimal.erlang"}]},"parenthesized-expression":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.expression.begin.erlang"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.expression.end.erlang"}},name:"meta.expression.parenthesized",patterns:[{include:"#everything-else"}]},"record-directive":{begin:"^\\s*+(-)\\s*+(record)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",beginCaptures:{1:{name:"punctuation.section.directive.begin.erlang"},2:{name:"keyword.control.directive.import.erlang"},3:{name:"punctuation.definition.parameters.begin.erlang"},4:{name:"entity.name.type.class.record.definition.erlang"},5:{name:"punctuation.separator.parameters.erlang"}},end:"(\\))\\s*+(\\.)",endCaptures:{1:{name:"punctuation.definition.parameters.end.erlang"},2:{name:"punctuation.section.directive.end.erlang"}},name:"meta.directive.record.erlang",patterns:[{include:"#internal-record-body"},{include:"#comment"}]},"record-usage":{patterns:[{captures:{1:{name:"keyword.operator.record.erlang"},2:{name:"entity.name.type.class.record.erlang"},3:{name:"punctuation.separator.record-field.erlang"},4:{name:"variable.other.field.erlang"}},match:"(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(\\.)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",name:"meta.record-usage.erlang"},{begin:"(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",beginCaptures:{1:{name:"keyword.operator.record.erlang"},2:{name:"entity.name.type.class.record.erlang"}},end:"(?<=\\})",name:"meta.record-usage.erlang",patterns:[{include:"#internal-record-body"}]}]},"sigil-docstring":{begin:'(~[bBsS]?)((["]{3,})\\s*)(\\S.*)?$',beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"meta.string.quoted.triple.begin.erlang"},3:{name:"punctuation.definition.string.begin.erlang"},4:{name:"invalid.illegal.string.erlang"}},comment:"Only whitespace characters are allowed after the beggining and before the closing sequences and those cannot be in the same line",end:'^(\\s*(\\3))(?!")',endCaptures:{1:{name:"meta.string.quoted.triple.end.erlang"},2:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.tripple.sigil.erlang"},"sigil-string":{patterns:[{include:"#sigil-string-parenthesis"},{include:"#sigil-string-parenthesis-verbatim"},{include:"#sigil-string-curly-brackets"},{include:"#sigil-string-curly-brackets-verbatim"},{include:"#sigil-string-square-brackets"},{include:"#sigil-string-square-brackets-verbatim"},{include:"#sigil-string-less-greater"},{include:"#sigil-string-less-greater-verbatim"},{include:"#sigil-string-single-character"},{include:"#sigil-string-single-character-verbatim"},{include:"#sigil-string-single-quote"},{include:"#sigil-string-single-quote-verbatim"},{include:"#sigil-string-double-quote"},{include:"#sigil-string-double-quote-verbatim"}]},"sigil-string-curly-brackets":{begin:"(~[bs]?)([{])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([}])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.curly-brackets.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-curly-brackets-verbatim":{begin:"(~[BS])([{])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([}])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.curly-brackets.sigil.erlang"},"sigil-string-double-quote":{begin:'(~[bs]?)(")',beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.double.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-double-quote-verbatim":{begin:'(~[BS])(")',beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.double.sigil.erlang"},"sigil-string-less-greater":{begin:"(~[bs]?)(<)",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.less-greater.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-less-greater-verbatim":{begin:"(~[BS])(<)",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.less-greater.sigil.erlang"},"sigil-string-parenthesis":{begin:"(~[bs]?)([(])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([)])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.parenthesis.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-parenthesis-verbatim":{begin:"(~[BS])([(])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([)])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.parenthesis.sigil.erlang"},"sigil-string-single-character":{begin:"(~[bs]?)([/\\|`#])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.other.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-single-character-verbatim":{begin:"(~[BS])([/\\|`#])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.other.sigil.erlang"},"sigil-string-single-quote":{begin:"(~[bs]?)(')",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.single.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-single-quote-verbatim":{begin:"(~[BS])(')",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.single.sigil.erlang"},"sigil-string-square-brackets":{begin:"(~[bs]?)([\\[])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([\\]])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.square-brackets.sigil.erlang",patterns:[{include:"#internal-string-body"}]},"sigil-string-square-brackets-verbatim":{begin:"(~[BS])([\\[])",beginCaptures:{1:{name:"storage.type.string.erlang"},2:{name:"punctuation.definition.string.begin.erlang"}},end:"([\\]])",endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.square-brackets.sigil.erlang"},string:{begin:'(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.erlang"}},end:'(")',endCaptures:{1:{name:"punctuation.definition.string.end.erlang"}},name:"string.quoted.double.erlang",patterns:[{include:"#internal-string-body"}]},"symbolic-operator":{match:"\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::|\\?=",name:"keyword.operator.symbolic.erlang"},"textual-operator":{match:"\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b",name:"keyword.operator.textual.erlang"},tuple:{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.definition.tuple.begin.erlang"}},end:"(\\})",endCaptures:{1:{name:"punctuation.definition.tuple.end.erlang"}},name:"meta.structure.tuple.erlang",patterns:[{match:",",name:"punctuation.separator.tuple.erlang"},{include:"#everything-else"}]},variable:{captures:{1:{name:"variable.other.erlang"},2:{name:"variable.language.omitted.erlang"}},match:"(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)|(_)"}},scopeName:"source.erlang",aliases:["erl"]});var n=[e];export{n as default}; diff --git a/assets/chunks/fennel.C6XIsc4F.js b/assets/chunks/fennel.C6XIsc4F.js new file mode 100644 index 000000000..4af235c6e --- /dev/null +++ b/assets/chunks/fennel.C6XIsc4F.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Fennel",name:"fennel",patterns:[{include:"#expression"}],repository:{comment:{patterns:[{begin:";",end:"$",name:"comment.line.semicolon.fennel"}]},constants:{patterns:[{match:"nil",name:"constant.language.nil.fennel"},{match:"false|true",name:"constant.language.boolean.fennel"},{match:"(-?\\d+\\.\\d+([eE][+-]?\\d+)?)",name:"constant.numeric.double.fennel"},{match:"(-?\\d+)",name:"constant.numeric.integer.fennel"}]},expression:{patterns:[{include:"#comment"},{include:"#constants"},{include:"#sexp"},{include:"#table"},{include:"#vector"},{include:"#keywords"},{include:"#special"},{include:"#lua"},{include:"#strings"},{include:"#methods"},{include:"#symbols"}]},keywords:{match:":[^ ]+",name:"constant.keyword.fennel"},lua:{patterns:[{match:"\\b(assert|collectgarbage|dofile|error|getmetatable|ipairs|load|loadfile|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setmetatable|tonumber|tostring|type|xpcall)\\b",name:"support.function.fennel"},{match:"\\b(coroutine|coroutine.create|coroutine.isyieldable|coroutine.resume|coroutine.running|coroutine.status|coroutine.wrap|coroutine.yield|debug|debug.debug|debug.gethook|debug.getinfo|debug.getlocal|debug.getmetatable|debug.getregistry|debug.getupvalue|debug.getuservalue|debug.sethook|debug.setlocal|debug.setmetatable|debug.setupvalue|debug.setuservalue|debug.traceback|debug.upvalueid|debug.upvaluejoin|io|io.close|io.flush|io.input|io.lines|io.open|io.output|io.popen|io.read|io.stderr|io.stdin|io.stdout|io.tmpfile|io.type|io.write|math|math.abs|math.acos|math.asin|math.atan|math.ceil|math.cos|math.deg|math.exp|math.floor|math.fmod|math.huge|math.log|math.max|math.maxinteger|math.min|math.mininteger|math.modf|math.pi|math.rad|math.random|math.randomseed|math.sin|math.sqrt|math.tan|math.tointeger|math.type|math.ult|os|os.clock|os.date|os.difftime|os.execute|os.exit|os.getenv|os.remove|os.rename|os.setlocale|os.time|os.tmpname|package|package.config|package.cpath|package.loaded|package.loadlib|package.path|package.preload|package.searchers|package.searchpath|string|string.byte|string.char|string.dump|string.find|string.format|string.gmatch|string.gsub|string.len|string.lower|string.match|string.pack|string.packsize|string.rep|string.reverse|string.sub|string.unpack|string.upper|table|table.concat|table.insert|table.move|table.pack|table.remove|table.sort|table.unpack|utf8|utf8.char|utf8.charpattern|utf8.codepoint|utf8.codes|utf8.len|utf8.offset)\\b",name:"support.function.library.fennel"},{match:"\\b(_G|_VERSION)\\b",name:"constant.language.fennel"}]},methods:{patterns:[{match:"\\w+\\:\\w+",name:"entity.name.function.method.fennel"}]},sexp:{begin:"\\(",beginCaptures:{0:{name:"punctuation.paren.open.fennel"}},end:"\\)",endCaptures:{0:{name:"punctuation.paren.close.fennel"}},name:"sexp.fennel",patterns:[{include:"#expression"}]},special:{patterns:[{match:"\\#|\\%|\\+|\\*|[?][.]|(\\.)?\\.|(\\/)?\\/|:|<=?|=|>=?|\\^",name:"keyword.special.fennel"},{match:"(\\-\\>(\\>)?)",name:"keyword.special.fennel"},{match:"\\-\\?\\>(\\>)?",name:"keyword.special.fennel"},{match:"-",name:"keyword.special.fennel"},{match:"not=",name:"keyword.special.fennel"},{match:"set-forcibly!",name:"keyword.special.fennel"},{match:"\\b(and|band|bnot|bor|bxor|collect|comment|do|doc|doto|each|eval-compiler|for|global|hashfn|icollect|if|import-macros|include|lambda|length|let|local|lshift|lua|macro|macrodebug|macros|match|not=?|or|partial|pick-args|pick-values|quote|require-macros|rshift|set|tset|values|var|when|while|with-open)\\b",name:"keyword.special.fennel"},{match:"\\b(fn)\\b",name:"keyword.control.fennel"},{match:"~=",name:"keyword.special.fennel"},{match:"λ",name:"keyword.special.fennel"}]},strings:{begin:'"',end:'"',name:"string.quoted.double.fennel",patterns:[{match:"\\\\.",name:"constant.character.escape.fennel"}]},symbols:{patterns:[{match:"\\w+(?:\\.\\w+)+",name:"entity.name.function.symbol.fennel"},{match:"\\w+",name:"variable.other.fennel"}]},table:{begin:"\\{",beginCaptures:{0:{name:"punctuation.table.bracket.open.fennel"}},end:"\\}",endCaptures:{0:{name:"punctuation.table.bracket.close.fennel"}},name:"table.fennel",patterns:[{include:"#expression"}]},vector:{begin:"\\[",beginCaptures:{0:{name:"punctuation.vector.bracket.open.fennel"}},end:"\\]",endCaptures:{0:{name:"punctuation.vector.bracket.close.fennel"}},name:"meta.vector.fennel",patterns:[{include:"#expression"}]}},scopeName:"source.fnl"});var n=[e];export{n as default}; diff --git a/assets/chunks/fish.DfeQjIbs.js b/assets/chunks/fish.DfeQjIbs.js new file mode 100644 index 000000000..5dbfb6130 --- /dev/null +++ b/assets/chunks/fish.DfeQjIbs.js @@ -0,0 +1,5 @@ +const e=Object.freeze({displayName:"Fish",fileTypes:["fish"],firstLineMatch:"^#!.*\\bfish\\b",foldingStartMarker:"^\\s*(function|while|if|switch|for|begin)\\s.*$",foldingStopMarker:"^\\s*end\\s*$",name:"fish",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.fish"}},comment:"Double quoted string",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.fish"}},name:"string.quoted.double.fish",patterns:[{include:"#variable"},{comment:"https://fishshell.com/docs/current/#quotes",match:'\\\\(\\"|\\$|$|\\\\)',name:"constant.character.escape.fish"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.fish"}},comment:"Single quoted string",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.fish"}},name:"string.quoted.single.fish",patterns:[{comment:"https://fishshell.com/docs/current/#quotes",match:"\\\\('|`|\\\\)",name:"constant.character.escape.fish"}]},{captures:{1:{name:"punctuation.definition.comment.fish"}},comment:"line comment",match:"(?|\\^|>>|\\^\\^)(&[012\\-])?| +[012](<|>|>>)(&[012\\-])? +)`,name:"keyword.operator.redirect.fish"},{match:"&",name:"keyword.operator.background.fish"},{match:"\\*\\*|\\*|\\?",name:"keyword.operator.glob.fish"},{captures:{1:{name:"source.option.fish"}},comment:"command short/long options",match:"\\s(-{1,2}[a-zA-Z_\\-0-9]+|-\\w)\\b"},{include:"#variable"},{include:"#escape"}],repository:{escape:{patterns:[{comment:"single character character escape sequences",match:`\\\\[abefnrtv $*?~#(){}\\[\\]<>^&|;"']`,name:"constant.character.escape.single.fish"},{comment:"escapes the ascii character with the specified value (hexadecimal)",match:"\\\\x[0-9a-fA-F]{1,2}",name:"constant.character.escape.hex-ascii.fish"},{comment:"escapes a byte of data with the specified value (hexadecimal). If you are using mutibyte encoding, this can be used to enter invalid strings. Only use this if you know what are doing.",match:"\\\\X[0-9a-fA-F]{1,2}",name:"constant.character.escape.hex-byte.fish"},{comment:"escapes the ascii character with the specified value (octal)",match:"\\\\[0-7]{1,3}",name:"constant.character.escape.octal.fish"},{comment:"escapes the 16-bit unicode character with the specified value (hexadecimal)",match:"\\\\u[0-9a-fA-F]{1,4}",name:"constant.character.escape.unicode-16-bit.fish"},{comment:"escapes the 32-bit unicode character with the specified value (hexadecimal)",match:"\\\\U[0-9a-fA-F]{1,8}",name:"constant.character.escape.unicode-32-bit.fish"},{comment:"escapes the control sequence generated by pressing the control key and the specified letter",match:"\\\\c[a-zA-Z]",name:"constant.character.escape.control.fish"}]},variable:{patterns:[{captures:{1:{name:"punctuation.definition.variable.fish"}},comment:"Built-in variables visible by pressing $ TAB TAB in a new shell",match:"(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b",name:"variable.language.fish"},{captures:{1:{name:"punctuation.definition.variable.fish"}},match:"(\\$)[a-zA-Z_][a-zA-Z0-9_]*",name:"variable.other.normal.fish"}]}},scopeName:"source.fish"});var t=[e];export{t as default}; diff --git a/assets/chunks/fortran-fixed-form.Cx0tWteX.js b/assets/chunks/fortran-fixed-form.Cx0tWteX.js new file mode 100644 index 000000000..04058e565 --- /dev/null +++ b/assets/chunks/fortran-fixed-form.Cx0tWteX.js @@ -0,0 +1 @@ +import e from"./fortran-free-form.D6pmzCqS.js";const n=Object.freeze({displayName:"Fortran (Fixed Form)",fileTypes:["f","F","f77","F77","for","FOR"],injections:{"source.fortran.fixed - ( string | comment )":{patterns:[{include:"#line-header"},{include:"#line-end-comment"}]}},name:"fortran-fixed-form",patterns:[{include:"#comments"},{include:"#line-header"},{include:"source.fortran.free"}],repository:{comments:{patterns:[{begin:"^[cC\\*]",end:"\\n",name:"comment.line.fortran"},{begin:"^ *!",end:"\\n",name:"comment.line.fortran"}]},"line-end-comment":{begin:"(?<=^.{72})(?!\\n)",end:"(?=\\n)",name:"comment.line-end.fortran"},"line-header":{captures:{1:{name:"constant.numeric.fortran"},2:{name:"keyword.line-continuation-operator.fortran"},3:{name:"source.fortran.free"},4:{name:"invalid.error.fortran"}},match:"^(?!\\s*[!#])(?:([ \\d]{5} )|( {5}.)|(\\t)|(.{1,5}))"}},scopeName:"source.fortran.fixed",embeddedLangs:["fortran-free-form"],aliases:["f","for","f77"]});var o=[...e,n];export{o as default}; diff --git a/assets/chunks/fortran-free-form.D6pmzCqS.js b/assets/chunks/fortran-free-form.D6pmzCqS.js new file mode 100644 index 000000000..d2ee5d6f3 --- /dev/null +++ b/assets/chunks/fortran-free-form.D6pmzCqS.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Fortran (Free Form)",fileTypes:["f90","F90","f95","F95","f03","F03","f08","F08","f18","F18","fpp","FPP",".pf",".PF"],firstLineMatch:"(?i)-[*]- mode: fortran free -[*]-",injections:{"source.fortran.free - ( string | comment | meta.preprocessor )":{patterns:[{include:"#line-continuation-operator"},{include:"#preprocessor"}]},"string.quoted.double.fortran":{patterns:[{include:"#string-line-continuation-operator"}]},"string.quoted.single.fortran":{patterns:[{include:"#string-line-continuation-operator"}]}},name:"fortran-free-form",patterns:[{include:"#preprocessor"},{include:"#comments"},{include:"#constants"},{include:"#operators"},{include:"#array-constructor"},{include:"#parentheses"},{include:"#include-statement"},{include:"#import-statement"},{include:"#block-data-definition"},{include:"#function-definition"},{include:"#module-definition"},{include:"#program-definition"},{include:"#submodule-definition"},{include:"#subroutine-definition"},{include:"#procedure-definition"},{include:"#derived-type-definition"},{include:"#enum-block-construct"},{include:"#interface-block-constructs"},{include:"#procedure-specification-statement"},{include:"#type-specification-statements"},{include:"#specification-statements"},{include:"#control-constructs"},{include:"#control-statements"},{include:"#execution-statements"},{include:"#intrinsic-functions"},{include:"#variable"}],repository:{"IO-item-list":{begin:`(?i)(?=\\s*[a-z0-9"'])`,comment:"Name list.",contentName:"meta.name-list.fortran",end:"(?=[\\);!\\n])",patterns:[{include:"#constants"},{include:"#operators"},{include:"#intrinsic-functions"},{include:"#array-constructor"},{include:"#parentheses"},{include:"#brackets"},{include:"#assignment-keyword"},{include:"#operator-keyword"},{include:"#variable"}]},"IO-keywords":{begin:"(?i)\\G\\s*\\b(?:(read)|(write))\\s*(\\()",beginCaptures:{1:{name:"keyword.control.generic-spec.read.fortran"},2:{name:"keyword.control.generic-spec.write.fortran"},3:{name:"punctuation.parentheses.left.fortran"}},comment:"IO generic specification.",end:"(\\))",endCaptures:{1:{name:"punctuation.parentheses.right.fortran"}},patterns:[{captures:{1:{name:"keyword.control.generic-spec.formatted.fortran"},2:{name:"keyword.control.generic-spec.unformatted.fortran"}},match:"(?i)\\G\\s*\\b(?:(formatted)|(unformatted))\\b"},{include:"#invalid-word"}]},"IO-statements":{patterns:[{begin:"(?ix)\\b(?:(backspace)|(close)|(endfile)|(format)|(inquire)|(open)|(read)|(rewind)|(write))\\s*(?=\\()",beginCaptures:{1:{name:"keyword.control.backspace.fortran"},2:{name:"keyword.control.close.fortran"},3:{name:"keyword.control.endfile.fortran"},4:{name:"keyword.control.format.fortran"},5:{name:"keyword.control.inquire.fortran"},6:{name:"keyword.control.open.fortran"},7:{name:"keyword.control.read.fortran"},8:{name:"keyword.control.rewind.fortran"},9:{name:"keyword.control.write.fortran"},10:{name:"punctuation.parentheses.left.fortran"}},comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",endCaptures:{1:{name:"punctuation.parentheses.right.fortran"}},name:"meta.statement.IO.fortran",patterns:[{include:"#parentheses-dummy-variables"},{include:"#IO-item-list"}]},{captures:{1:{name:"keyword.control.backspace.fortran"},2:{name:"keyword.control.endfile.fortran"},3:{name:"keyword.control.format.fortran"},4:{name:"keyword.control.print.fortran"},5:{name:"keyword.control.read.fortran"},6:{name:"keyword.control.rewind.fortran"}},comment:"Introduced in the Fortran 1977 standard.",match:"(?i)\\b(?:(backspace)|(endfile)|(format)|(print)|(read)|(rewind))\\b"},{begin:"(?i)\\b(?:(flush)|(wait))\\s*(?=\\()",beginCaptures:{1:{name:"keyword.control.flush.fortran"},2:{name:"keyword.control.wait.fortran"},3:{name:"punctuation.parentheses.left.fortran"}},comment:"Introduced in the Fortran 2003 standard.",end:"(?)(\\=)(?!\\=|\\>)",name:"keyword.operator.assignment.fortran"},"associate-construct":{begin:"(?i)\\b(associate)\\b(?=\\s*\\()",beginCaptures:{1:{name:"keyword.control.associate.fortran"}},comment:"Introduced in the Fortran 2003 standard.",contentName:"meta.block.associate.fortran",end:"(?i)\\b(end\\s*associate)\\b",endCaptures:{1:{name:"keyword.control.endassociate.fortran"}},patterns:[{include:"$base"}]},"asynchronous-attribute":{captures:{1:{name:"storage.modifier.asynchronous.fortran"}},comment:"Introduced in the Fortran 2003 standard.",match:"(?i)\\G\\s*\\b(asynchronous)\\b"},"attribute-specification-statement":{begin:"(?ix)(?=\\b(?:allocatable|asynchronous|contiguous |external|intrinsic|optional|parameter|pointer|private|protected|public|save|target|value|volatile)\\b |(bind|dimension|intent)\\s*\\( |(codimension)\\s*\\[)",end:"(?=[;!\\n])",name:"meta.statement.attribute-specification.fortran",patterns:[{include:"#access-attribute"},{include:"#allocatable-attribute"},{include:"#asynchronous-attribute"},{include:"#codimension-attribute"},{include:"#contiguous-attribute"},{include:"#dimension-attribute"},{include:"#external-attribute"},{include:"#intent-attribute"},{include:"#intrinsic-attribute"},{include:"#language-binding-attribute"},{include:"#optional-attribute"},{include:"#parameter-attribute"},{include:"#pointer-attribute"},{include:"#protected-attribute"},{include:"#save-attribute"},{include:"#target-attribute"},{include:"#value-attribute"},{include:"#volatile-attribute"},{begin:"(?=\\s*::)",comment:"Attribute list.",contentName:"meta.attribute-list.normal.fortran",end:"(::)|(?=[;!\\n])",endCaptures:{1:{name:"keyword.operator.double-colon.fortran"}},patterns:[{include:"#invalid-word"}]},{include:"#name-list"}]},"block-construct":{begin:"(?i)\\b(block)\\b(?!\\s*\\bdata\\b)",beginCaptures:{1:{name:"keyword.control.associate.fortran"}},comment:"Introduced in the Fortran 2008 standard.",contentName:"meta.block.block.fortran",end:"(?i)\\b(end\\s*block)\\b",endCaptures:{1:{name:"keyword.control.endassociate.fortran"}},patterns:[{include:"$base"}]},"block-data-definition":{begin:"(?i)\\b(block\\s*data)\\b(?:\\s+([a-z]\\w*)\\b)?",beginCaptures:{1:{name:"keyword.control.block-data.fortran"},2:{name:"entity.name.block-data.fortran"}},end:"(?ix)\\b(?:(end\\s*block\\s*data)(?:\\s+(\\2))?|(end))\\b (?:\\s*(\\S((?!\\n).)*))?",endCaptures:{1:{name:"keyword.control.end-block-data.fortran"},2:{name:"entity.name.block-data.fortran"},3:{name:"keyword.control.end-block-data.fortran"},4:{name:"invalid.error.block-data-definition.fortran"}},name:"meta.block-data.fortran",patterns:[{include:"$base"}]},brackets:{begin:"\\s*(\\[)",beginCaptures:{1:{name:"punctuation.bracket.left.fortran"}},end:"(\\])",endCaptures:{1:{name:"punctuation.bracket.left.fortran"}},patterns:[{include:"#comments"},{include:"#constants"},{include:"#operators"},{include:"#array-constructor"},{include:"#parentheses"},{include:"#intrinsic-functions"},{include:"#variable"}]},"call-statement":{patterns:[{begin:"(?i)\\s*\\b(call)\\b",beginCaptures:{1:{name:"keyword.control.call.fortran"}},comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.statement.control.call.fortran",patterns:[{begin:"(?ix)\\G\\s*([a-z]\\w*)(%)([a-z]\\w*)\\b\\s*(?=\\()",beginCaptures:{1:{name:"variable.other.fortran"},2:{name:"keyword.accessor.fortran"},3:{name:"entity.name.function.subroutine.fortran"}},comment:"type-bound subroutines",end:"(?\\=|\\>|\\<|\\<\\=|\\-|\\+|\\/|\\/\\/|\\*\\*|\\*) |(\\S.*) )\\s*(\\))",beginCaptures:{1:{name:"keyword.other.operator.fortran"},2:{name:"punctuation.parentheses.left.fortran"},3:{name:"keyword.operator.fortran"},4:{name:"invalid.error.generic-interface-block-op.fortran"},5:{name:"punctuation.parentheses.right.fortran"}},comment:"Operator generic interface.",end:"(?ix)\\b(end\\s*interface)\\b (?:\\s*\\b(\\1)\\b\\s*(\\()\\s*(?:(\\3)|(\\S.*))\\s*(\\)))?",endCaptures:{1:{name:"keyword.control.endinterface.fortran"},2:{name:"keyword.other.operator.fortran"},3:{name:"punctuation.parentheses.left.fortran"},4:{name:"keyword.operator.fortran"},5:{name:"invalid.error.generic-interface-block-op-end.fortran"},6:{name:"punctuation.parentheses.right.fortran"}},patterns:[{include:"#interface-procedure-statement"},{include:"$base"}]},{begin:"(?ix)\\G\\s*\\b(?:(read)|(write))\\s* (\\()\\s*(?:(formatted)|(unformatted)|(\\S.*))\\s*(\\))",beginCaptures:{1:{name:"keyword.other.read.fortran"},2:{name:"keyword.other.write.fortran"},3:{name:"punctuation.parentheses.left.fortran"},4:{name:"keyword.other.formatted.fortran"},5:{name:"keyword.other.unformatted.fortran"},6:{name:"invalid.error.generic-interface-block.fortran"},7:{name:"punctuation.parentheses.right.fortran"}},comment:"Read/Write generic interface.",end:"(?ix)\\b(end\\s*interface)\\b(?:\\s*\\b(?:(\\2)|(\\3))\\b\\s* (\\()\\s*(?:(\\4)|(\\5)|(\\S.*))\\s*(\\)))?",endCaptures:{1:{name:"keyword.control.endinterface.fortran"},2:{name:"keyword.other.read.fortran"},3:{name:"keyword.other.write.fortran"},4:{name:"punctuation.parentheses.left.fortran"},5:{name:"keyword.other.formatted.fortran"},6:{name:"keyword.other.unformatted.fortran"},7:{name:"invalid.error.generic-interface-block-end.fortran"},8:{name:"punctuation.parentheses.right.fortran"}},patterns:[{include:"#interface-procedure-statement"},{include:"$base"}]},{begin:"(?i)\\G\\s*\\b([a-z]\\w*)\\b",beginCaptures:{1:{name:"entity.name.function.fortran"}},comment:"Generic interface.",end:"(?i)\\b(end\\s*interface)\\b(?:\\s*\\b(\\1)\\b)?",endCaptures:{1:{name:"keyword.control.endinterface.fortran"},2:{name:"entity.name.function.fortran"}},patterns:[{include:"#interface-procedure-statement"},{include:"$base"}]}]},"goto-statement":{begin:"(?i)\\s*\\b(go\\s*to)\\b",beginCaptures:{1:{name:"keyword.control.goto.fortran"}},comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.statement.control.goto.fortran",patterns:[{include:"$base"}]},"if-construct":{patterns:[{begin:"(?i)\\b(if)\\b",beginCaptures:{1:{name:"keyword.control.if.fortran"}},end:"(?=[;!\\n])",patterns:[{include:"#logical-control-expression"},{begin:"(?i)\\s*\\b(then)\\b",beginCaptures:{1:{name:"keyword.control.then.fortran"}},contentName:"meta.block.if.fortran",end:"(?i)\\b(end\\s*if)\\b",endCaptures:{1:{name:"keyword.control.endif.fortran"}},patterns:[{begin:"(?i)\\b(else\\s*if)\\b",beginCaptures:{1:{name:"keyword.control.elseif.fortran"}},comment:"else if statement",end:"(?=[;!\\n])",patterns:[{include:"#parentheses"},{captures:{1:{name:"keyword.control.then.fortran"},2:{name:"meta.label.elseif.fortran"}},comment:"capture the label if present",match:"(?i)\\b(then)\\b(\\s*[a-z]\\w*)?"},{include:"#invalid-word"}]},{begin:"(?i)\\b(else)\\b",beginCaptures:{1:{name:"keyword.control.else.fortran"}},comment:"else block",end:"(?i)(?=\\b(end\\s*if)\\b)",patterns:[{begin:"(?!(\\s*(;|!|\\n)))",comment:"rest of else line",end:"(?=[;!\\n])",patterns:[{captures:{1:{name:"meta.label.else.fortran"},2:{name:"invalid.error.label.else.fortran"}},comment:"capture the label if present",match:"\\s*([a-z]\\w*)?\\s*\\b(\\w*)\\b"},{include:"#invalid-word"}]},{begin:"(?i)(?!\\b(end\\s*if)\\b)",end:"(?i)(?=\\b(end\\s*if)\\b)",patterns:[{include:"$base"}]}]},{include:"$base"}]},{begin:"(?i)(?=\\s*[a-z])",end:"(?=[;!\\n])",name:"meta.statement.control.if.fortran",patterns:[{include:"$base"}]}]}]},"image-control-statement":{patterns:[{include:"#sync-all-statement"},{include:"#sync-statement"},{include:"#event-statement"},{include:"#form-team-statement"},{include:"#fail-image-statement"}]},"implicit-statement":{begin:"(?i)\\b(implicit)\\b",beginCaptures:{1:{name:"keyword.other.implicit.fortran"}},end:"(?=[;!\\n])",name:"meta.statement.implicit.fortran",patterns:[{captures:{1:{name:"keyword.other.none.fortran"}},match:"(?i)\\s*\\b(none)\\b"},{include:"$base"}]},"import-statement":{begin:"(?i)\\b(import)\\b",beginCaptures:{1:{name:"keyword.control.include.fortran"}},comment:"Introduced in the Fortran 1990 standard.",end:"(?=[;!\\n])",name:"meta.statement.include.fortran",patterns:[{begin:"(?i)\\G\\s*(?:(::)|(?=[a-z]))",beginCaptures:{1:{name:"keyword.operator.double-colon.fortran"}},end:"(?=[;!\\n])",patterns:[{include:"#name-list"}]},{begin:"\\G\\s*(,)",beginCaptures:{1:{name:"punctuation.comma.fortran"}},end:"(?=[;!\\n])",patterns:[{captures:{1:{name:"keyword.other.all.fortran"}},match:"(?i)\\G\\s*\\b(all)\\b"},{captures:{1:{name:"keyword.other.none.fortran"}},match:"(?i)\\G\\s*\\b(none)\\b"},{begin:"(?i)\\G\\s*\\b(only)\\s*(:)",beginCaptures:{1:{name:"keyword.other.only.fortran"},2:{name:"keyword.other.colon.fortran"}},end:"(?=[;!\\n])",patterns:[{include:"#name-list"}]},{include:"#invalid-word"}]}]},"include-statement":{begin:"(?i)\\b(include)\\b",beginCaptures:{1:{name:"keyword.control.include.fortran"}},comment:"Introduced in the Fortran 1990 standard.",end:"(?=[;!\\n])",name:"meta.statement.include.fortran",patterns:[{include:"#string-constant"},{include:"#invalid-character"}]},"intent-attribute":{begin:"(?i)\\s*\\b(intent)\\s*(\\()",beginCaptures:{1:{name:"storage.modifier.intent.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},comment:"Introduced in the Fortran 1990 standard.",end:"(\\))|(?=[;!\\n])",endCaptures:{1:{name:"punctuation.parentheses.left.fortran"}},patterns:[{captures:{1:{name:"storage.modifier.intent.in-out.fortran"},2:{name:"storage.modifier.intent.in.fortran"},3:{name:"storage.modifier.intent.out.fortran"}},match:"(?i)\\b(?:(in\\s*out)|(in)|(out))\\b"},{include:"#invalid-word"}]},"interface-block-constructs":{patterns:[{include:"#abstract-interface-block-construct"},{include:"#explicit-interface-block-construct"},{include:"#generic-interface-block-construct"}]},"interface-procedure-statement":{begin:`(?i)(?=[^'";!\\n]*\\bprocedure\\b)`,comment:"Introduced in the Fortran 1990 standard.",end:"(?=[;!\\n])",name:"meta.statement.procedure.fortran",patterns:[{begin:"(?i)(?=\\G\\s*(?!\\bprocedure\\b))",comment:"Attribute list.",end:"(?i)(?=\\bprocedure\\b)",name:"meta.attribute-list.interface.fortran",patterns:[{include:"#module-attribute"},{include:"#invalid-word"}]},{begin:"(?i)\\s*\\b(procedure)\\b",beginCaptures:{1:{name:"keyword.other.procedure.fortran"}},comment:"Procedure statement.",end:"(?=[;!\\n])",patterns:[{captures:{1:{name:"keyword.operator.double-colon.fortran"}},match:"\\G\\s*(::)"},{include:"#procedure-name-list"}]}]},"intrinsic-attribute":{captures:{1:{name:"storage.modifier.intrinsic.fortran"}},comment:"Introduced in the Fortran 1977 standard.",match:"(?i)\\s*\\b(intrinsic)\\b"},"intrinsic-functions":{patterns:[{begin:"(?ix)\\b(acosh|asinh|atanh|bge|bgt|ble|blt|dshiftl|dshiftr| findloc|hypot|iall|iany|image_index|iparity|is_contiguous|lcobound| leadz|mask[lr]|merge_bits|norm2|num_images|parity|popcnt|poppar| shift[alr]|storage_size|this_image|trailz|ucobound)\\s*(?=\\()",beginCaptures:{1:{name:"support.function.intrinsic.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},comment:"Intrinsic functions introduced in the Fortran 2008 standard.",end:"(?\\=|(?|\\<\\=|\\<)",name:"keyword.logical.fortran.modern"}]},"logical-type":{comment:"Introduced in the Fortran 1977 standard.",patterns:[{begin:"(?i)\\b(logical)\\s*(?=\\()",beginCaptures:{1:{name:"storage.type.logical.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},contentName:"meta.type-spec.fortran",end:"(?)",name:"keyword.other.point.fortran"},preprocessor:{begin:"^\\s*(#:?)",beginCaptures:{1:{name:"keyword.control.preprocessor.indicator.fortran"}},end:"\\n",name:"meta.preprocessor",patterns:[{include:"#preprocessor-if-construct"},{include:"#preprocessor-statements"}]},"preprocessor-arithmetic-operators":{captures:{1:{name:"keyword.operator.subtraction.fortran"},2:{name:"keyword.operator.addition.fortran"},3:{name:"keyword.operator.division.fortran"},4:{name:"keyword.operator.multiplication.fortran"}},comment:"division regex is different than in main fortran",match:"(\\-)|(\\+)|(\\/)|(\\*)"},"preprocessor-assignment-operator":{comment:"assignments with = are not allowed",match:"(?",endCaptures:{0:{name:"punctuation.definition.string.end.preprocessor.fortran"}},name:"string.quoted.other.lt-gt.include.preprocessor.fortran"},{include:"#line-continuation-operator"}]},"preprocessor-line-continuation-operator":{begin:"\\s*(\\\\)",beginCaptures:{1:{name:"constant.character.escape.line-continuation.preprocessor.fortran"}},end:"(?i)^"},"preprocessor-logical-operators":{captures:{1:{name:"keyword.operator.logical.preprocessor.and.fortran"},2:{name:"keyword.operator.logical.preprocessor.equals.fortran"},3:{name:"keyword.operator.logical.preprocessor.not_equals.fortran"},4:{name:"keyword.operator.logical.preprocessor.or.fortran"},5:{name:"keyword.operator.logical.preprocessor.less_eq.fortran"},6:{name:"keyword.operator.logical.preprocessor.more_eq.fortran"},7:{name:"keyword.operator.logical.preprocessor.less.fortran"},8:{name:"keyword.operator.logical.preprocessor.more.fortran"},9:{name:"keyword.operator.logical.preprocessor.complementary.fortran"},10:{name:"keyword.operator.logical.preprocessor.xor.fortran"},11:{name:"keyword.operator.logical.preprocessor.bitand.fortran"},12:{name:"keyword.operator.logical.preprocessor.not.fortran"},13:{name:"keyword.operator.logical.preprocessor.bitor.fortran"}},comment:"and:&&, bitand:&, or:||, bitor:|, not eq:!=, not:!, xor:^, compl:~",match:"(&&)|(==)|(\\!=)|(\\|\\|)|(\\<\\=)|(\\>=)|(\\<)|(\\>)|(~)|(\\^)|(&)|(\\!)|(\\|)",name:"keyword.operator.logical.preprocessor.fortran"},"preprocessor-operators":{patterns:[{include:"#preprocessor-line-continuation-operator"},{include:"#preprocessor-logical-operators"},{include:"#preprocessor-arithmetic-operators"}]},"preprocessor-pragma-statement":{begin:"(?i)\\G\\s*\\b(pragma)\\b",beginCaptures:{1:{name:"keyword.control.preprocessor.pragma.fortran"}},end:"(?=\\n)",name:"meta.preprocessor.pragma.fortran",patterns:[{include:"#preprocessor-comments"},{include:"#preprocessor-string-constant"}]},"preprocessor-statements":{patterns:[{include:"#preprocessor-define-statement"},{include:"#preprocessor-error-statement"},{include:"#preprocessor-include-statement"},{include:"#preprocessor-preprocessor-pragma-statement"},{include:"#preprocessor-undefine-statement"}]},"preprocessor-string-constant":{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.preprocessor.fortran"}},comment:"Double quote string",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.preprocessor.fortran"}},name:"string.quoted.double.include.preprocessor.fortran"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.preprocessor.fortran"}},comment:"Single quote string",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.preprocessor.fortran"}},name:"string.quoted.single.include.preprocessor.fortran"}]},"preprocessor-undefine-statement":{begin:"(?i)\\G\\s*\\b(undef)\\b",beginCaptures:{1:{name:"keyword.control.preprocessor.undef.fortran"}},end:"(?=\\n)",name:"meta.preprocessor.undef.fortran",patterns:[{include:"#preprocessor-comments"},{include:"#preprocessor-line-continuation-operator"}]},"private-attribute":{captures:{1:{name:"storage.modifier.private.fortran"}},comment:"Introduced in the Fortran 1990 standard.",match:"(?i)\\s*\\b(private)\\b"},"procedure-call-dummy-variable":{match:"(?i)\\s*([a-z]\\w*)(?=\\s*\\=)(?!\\s*\\=\\=)",name:"variable.parameter.dummy-variable.fortran.modern"},"procedure-definition":{begin:`(?i)(?=[^'";!\\n]*\\bmodule\\s+procedure\\b)`,comment:"Procedure program unit. Introduced in the Fortran 2008 standard.",end:"(?=[;!\\n])",name:"meta.procedure.fortran",patterns:[{begin:"(?i)\\s*\\b(module\\s+procedure)\\b",beginCaptures:{1:{name:"keyword.other.procedure.fortran"}},end:"(?=[;!\\n])",patterns:[{begin:"(?i)\\G\\s*\\b([a-z]\\w*)\\b",beginCaptures:{1:{name:"entity.name.function.procedure.fortran"}},comment:"Procedure body.",end:"(?ix)\\s*\\b(?:(end\\s*procedure)(?:\\s+([a-z_]\\w*))?|(end))\\b \\s*([^;!\\n]+)?(?=[;!\\n])",endCaptures:{1:{name:"keyword.other.endprocedure.fortran"},2:{name:"entity.name.function.procedure.fortran"},3:{name:"keyword.other.endprocedure.fortran"},4:{name:"invalid.error.procedure-definition.fortran"}},patterns:[{begin:"\\G(?!\\s*[;!\\n])",comment:"Rest of the first line in procedure construct - should be empty.",end:"(?=[;!\\n])",name:"meta.first-line.fortran",patterns:[{include:"#invalid-character"}]},{begin:"(?i)(?!\\s*(?:contains\\b|end\\s*[;!\\n]|end\\s*procedure\\b))",comment:"Specification and execution block.",end:"(?i)(?=\\s*(?:contains\\b|end\\s*[;!\\n]|end\\s*procedure\\b))",name:"meta.block.specification.procedure.fortran",patterns:[{include:"$self"}]},{begin:"(?i)\\s*(contains)\\b",beginCaptures:{1:{name:"keyword.control.contains.fortran"}},comment:"Contains block.",end:"(?i)(?=\\s*(?:end\\s*[;!\\n]|end\\s*procedure\\b))",name:"meta.block.contains.fortran",patterns:[{include:"$self"}]}]}]}]},"procedure-name":{captures:{1:{name:"entity.name.function.procedure.fortran"}},comment:"Procedure name.",match:"(?i)\\s*\\b([a-z]\\w*)\\b"},"procedure-name-list":{begin:"(?i)(?=\\s*[a-z])",comment:"Name list.",contentName:"meta.name-list.fortran",end:"(?=[;!\\n])",patterns:[{begin:"(?!\\s*\\n)",end:"(,)|(?=[!;\\n])",endCaptures:{1:{name:"punctuation.comma.fortran"}},patterns:[{include:"#procedure-name"},{include:"#pointer-operators"}]}]},"procedure-specification-statement":{begin:"(?i)(?=\\b(?:procedure)\\b)",comment:"Introduced in the Fortran 2003 standard.",end:"(?=[;!\\n])",name:"meta.specification.procedure.fortran",patterns:[{include:"#procedure-type"},{begin:"(?=\\s*(,|::|\\())",comment:"Attribute list.",contentName:"meta.attribute-list.procedure.fortran",end:"(::)|(?=[;!\\n])",endCaptures:{1:{name:"keyword.operator.double-colon.fortran"}},patterns:[{begin:"(,)|^|(?<=&)",beginCaptures:{1:{name:"punctuation.comma.fortran"}},end:"(?=::|[,&;!\\n])",patterns:[{include:"#access-attribute"},{include:"#intent-attribute"},{include:"#optional-attribute"},{include:"#pointer-attribute"},{include:"#protected-attribute"},{include:"#save-attribute"},{include:"#invalid-word"}]}]},{include:"#procedure-name-list"}]},"procedure-type":{comment:"Introduced in the Fortran ???? standard.",patterns:[{begin:"(?i)\\b(procedure)\\s*(\\()",beginCaptures:{1:{name:"storage.type.procedure.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},contentName:"meta.type-spec.fortran",end:"(\\))",endCaptures:{1:{name:"punctuation.parentheses.right.fortran"}},patterns:[{include:"#types"},{include:"#procedure-name"}]},{captures:{1:{name:"storage.type.procedure.fortran"}},match:"(?i)\\b(procedure)\\b"}]},"program-definition":{begin:"(?i)(?=\\b(program)\\b)",comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.program.fortran",patterns:[{captures:{1:{name:"keyword.control.program.fortran"}},match:"(?i)\\G\\s*\\b(program)\\b"},{applyEndPatternLast:1,begin:"(?i)\\s*\\b([a-z]\\w*)\\b",beginCaptures:{1:{name:"entity.name.program.fortran"}},comment:"Program body.",end:"(?ix)\\b(?:(end\\s*program)(?:\\s+([a-z_]\\w*))?|(end))\\b\\s*([^;!\\n]+)?(?=[;!\\n])",endCaptures:{1:{name:"keyword.control.endprogram.fortran"},2:{name:"entity.name.program.fortran"},3:{name:"keyword.control.endprogram.fortran"},4:{name:"invalid.error.program-definition.fortran"}},patterns:[{begin:"\\G",comment:"Program specification block.",end:"(?i)(?=\\b(?:end\\s*[;!\\n]|end\\s*program\\b))",name:"meta.block.specification.program.fortran",patterns:[{begin:"(?i)\\b(contains)\\b",beginCaptures:{1:{name:"keyword.control.contains.fortran"}},comment:"Program contains block.",end:"(?i)(?=(?:end\\s*[;!\\n]|end\\s*program\\b))",name:"meta.block.contains.fortran",patterns:[{include:"$base"}]},{include:"$base"}]}]}]},"protected-attribute":{captures:{1:{name:"storage.modifier.protected.fortran"}},comment:"Introduced in the Fortran 2003 standard.",match:"(?i)\\s*\\b(protected)\\b"},"public-attribute":{captures:{1:{name:"storage.modifier.public.fortran"}},comment:"Introduced in the Fortran 1990 standard.",match:"(?i)\\s*\\b(public)\\b"},"pure-attribute":{captures:{1:{name:"storage.modifier.impure.fortran"},2:{name:"storage.modifier.pure.fortran"}},comment:"Introduced in the Fortran 1995 standard.",match:"(?i)\\s*\\b(?:(impure)|(pure))\\b"},"recursive-attribute":{captures:{1:{name:"storage.modifier.non_recursive.fortran"},2:{name:"storage.modifier.recursive.fortran"}},comment:"Introduced in the Fortran 1977 standard.",match:"(?i)\\s*\\b(?:(non_recursive)|(recursive))\\b"},"result-statement":{begin:"(?i)\\s*\\b(result)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.result.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},comment:"Introduced in the Fortran 1990 standard.",end:"(\\))",endCaptures:{1:{name:"punctuation.parentheses.right.fortran"}},patterns:[{include:"#dummy-variable"}]},"return-statement":{begin:"(?i)\\s*\\b(return)\\b",beginCaptures:{1:{name:"keyword.control.return.fortran"}},comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.statement.control.return.fortran",patterns:[{include:"#invalid-character"}]},"save-attribute":{captures:{1:{name:"storage.modifier.save.fortran"}},comment:"Introduced in the Fortran 1977 standard.",match:"(?i)\\s*\\b(save)\\b"},"select-case-construct":{begin:"(?i)\\b(select\\s*case)\\b",beginCaptures:{1:{name:"keyword.control.selectcase.fortran"}},comment:"Select case construct. Introduced in the Fortran 1990 standard.",end:"(?i)\\b(end\\s*select)\\b",endCaptures:{1:{name:"keyword.control.endselect.fortran"}},name:"meta.block.select.case.fortran",patterns:[{include:"#parentheses"},{begin:"(?i)\\b(case)\\b",beginCaptures:{1:{name:"keyword.control.case.fortran"}},end:"(?i)(?=[;!\\n])",patterns:[{captures:{1:{name:"keyword.control.default.fortran"}},match:"(?i)\\G\\s*\\b(default)\\b"},{include:"#parentheses"},{include:"#invalid-word"}]},{include:"$base"}]},"select-rank-construct":{begin:"(?i)\\b(select\\s*rank)\\b",beginCaptures:{1:{name:"keyword.control.selectrank.fortran"}},comment:"Select rank construct. Introduced in the Fortran 2008 standard.",end:"(?i)\\b(end\\s*select)\\b",endCaptures:{1:{name:"keyword.control.endselect.fortran"}},name:"meta.block.select.rank.fortran",patterns:[{include:"#parentheses"},{begin:"(?i)\\b(rank)\\b",beginCaptures:{1:{name:"keyword.control.rank.fortran"}},end:"(?i)(?=[;!\\n])",patterns:[{captures:{1:{name:"keyword.control.default.fortran"}},match:"(?i)\\G\\s*\\b(default)\\b"},{include:"#parentheses"},{include:"#invalid-word"}]},{include:"$base"}]},"select-type-construct":{begin:"(?i)\\b(select\\s*type)\\b",beginCaptures:{1:{name:"keyword.control.selecttype.fortran"}},comment:"Select type construct. Introduced in the Fortran 2003 standard.",end:"(?i)\\b(end\\s*select)\\b",endCaptures:{1:{name:"keyword.control.endselect.fortran"}},name:"meta.block.select.type.fortran",patterns:[{include:"#parentheses"},{begin:"(?i)\\b(?:(class)|(type))\\b",beginCaptures:{1:{name:"keyword.control.class.fortran"},2:{name:"keyword.control.type.fortran"}},end:"(?i)(?=[;!\\n])",patterns:[{captures:{1:{name:"keyword.control.default.fortran"}},match:"(?i)\\G\\s*\\b(default)\\b"},{captures:{1:{name:"keyword.control.is.fortran"}},match:"(?i)\\G\\s*\\b(is)\\b"},{include:"#parentheses"},{include:"#invalid-word"}]},{include:"$base"}]},"sequence-attribute":{captures:{1:{name:"storage.modifier.sequence.fortran"}},comment:"Introduced in the Fortran 20?? standard.",match:"(?i)\\s*\\b(sequence)\\b"},"specification-statements":{patterns:[{include:"#attribute-specification-statement"},{include:"#common-statement"},{include:"#data-statement"},{include:"#equivalence-statement"},{include:"#implicit-statement"},{include:"#namelist-statement"},{include:"#use-statement"}]},"stop-statement":{begin:"(?i)\\s*\\b(stop)\\b(?:\\s*\\b([a-z]\\w*)\\b)?",beginCaptures:{1:{name:"keyword.control.stop.fortran"},2:{name:"meta.label.stop.stop"}},comment:"Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.statement.control.stop.fortran",patterns:[{include:"#constants"},{include:"#string-operators"},{include:"#invalid-character"}]},"string-constant":{comment:"Introduced in the Fortran 1977 standard.",patterns:[{applyEndPatternLast:1,begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.fortran"}},comment:"String",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.fortran"}},name:"string.quoted.single.fortran",patterns:[{match:"''",name:"constant.character.escape.apostrophe.fortran"}]},{applyEndPatternLast:1,begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.fortran"}},comment:"String",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.fortran"}},name:"string.quoted.double.fortran",patterns:[{match:'""',name:"constant.character.escape.quote.fortran"}]}]},"string-line-continuation-operator":{begin:"(&)(?=\\s*\\n)",beginCaptures:{1:{name:"keyword.operator.line-continuation.fortran"}},comment:"Operator that allows a line to be continued on the next line.",end:"(?i)^(?:(?=\\s*[^\\s!&])|\\s*(&))",endCaptures:{1:{name:"keyword.operator.line-continuation.fortran"}},patterns:[{include:"#comments"},{match:"\\S.*",name:"invalid.error.string-line-cont.fortran"}]},"string-operators":{comment:"Introduced in the Fortran 19?? standard.",match:"(\\/\\/)",name:"keyword.other.concatination.fortran"},"submodule-definition":{begin:"(?i)(?=\\b(submodule)\\s*\\()",comment:"Introduced in the Fortran 2008 standard.",end:"(?=[;!\\n])",name:"meta.submodule.fortran",patterns:[{begin:"(?i)\\G\\s*\\b(submodule)\\s*(\\()\\s*(\\w+)",beginCaptures:{1:{name:"keyword.other.submodule.fortran"},2:{name:"punctuation.parentheses.left.fortran"},3:{name:"entity.name.class.submodule.fortran"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parentheses.left.fortran"}},patterns:[]},{applyEndPatternLast:1,begin:"(?i)\\s*\\b([a-z]\\w*)\\b",beginCaptures:{1:{name:"entity.name.module.submodule.fortran"}},comment:"Submodule body.",end:"(?ix)\\s*\\b(?:(end\\s*submodule)(?:\\s+([a-z_]\\w*))?|(end))\\b \\s*([^;!\\n]+)?(?=[;!\\n])",endCaptures:{1:{name:"keyword.other.endsubmodule.fortran"},2:{name:"entity.name.module.submodule.fortran"},3:{name:"keyword.other.endsubmodule.fortran"},4:{name:"invalid.error.submodule.fortran"}},patterns:[{begin:"\\G",comment:"Submodule specification block.",end:"(?i)(?=\\b(?:end\\s*[;!\\n]|end\\s*submodule\\b))",name:"meta.block.specification.submodule.fortran",patterns:[{begin:"(?i)\\b(contains)\\b",beginCaptures:{1:{name:"keyword.control.contains.fortran"}},comment:"Submodule contains block.",end:"(?i)(?=\\s*(?:end\\s*[;!\\n]|end\\s*submodule\\b))",name:"meta.block.contains.fortran",patterns:[{include:"$base"}]},{include:"$base"}]}]}]},"subroutine-definition":{begin:`(?i)(?=([^:'";!\\n](?!\\bend))*\\bsubroutine\\b)`,comment:"Subroutine program unit. Introduced in the Fortran 1977 standard.",end:"(?=[;!\\n])",name:"meta.subroutine.fortran",patterns:[{begin:"(?i)(?=\\G\\s*(?!\\bsubroutine\\b))",comment:"Attribute list.",end:"(?i)(?=\\bsubroutine\\b)",name:"meta.attribute-list.subroutine.fortran",patterns:[{include:"#elemental-attribute"},{include:"#module-attribute"},{include:"#pure-attribute"},{include:"#recursive-attribute"},{include:"#invalid-word"}]},{begin:"(?i)\\s*\\b(subroutine)\\b",beginCaptures:{1:{name:"keyword.other.subroutine.fortran"}},end:"(?=[;!\\n])",patterns:[{begin:"(?i)\\G\\s*\\b([a-z]\\w*)\\b",beginCaptures:{1:{name:"entity.name.function.subroutine.fortran"}},comment:"Subroutine body.",end:"(?ix)\\b(?:(end\\s*subroutine)(?:\\s+([a-z_]\\w*))?|(end))\\b \\s*([^;!\\n]+)?(?=[;!\\n])",endCaptures:{1:{name:"keyword.other.endsubroutine.fortran"},2:{name:"entity.name.function.subroutine.fortran"},3:{name:"keyword.other.endsubroutine.fortran"},4:{name:"invalid.error.subroutine.fortran"}},patterns:[{begin:"\\G(?!\\s*[;!\\n])",comment:"Rest of the first line in subroutine construct.",end:"(?=[;!\\n])",name:"meta.first-line.fortran",patterns:[{include:"#dummy-variable-list"},{include:"#language-binding-attribute"}]},{begin:"(?i)(?!\\b(?:end\\s*[;!\\n]|end\\s*subroutine\\b))",comment:"Specification and execution block.",end:"(?i)(?=\\b(?:end\\s*[;!\\n]|end\\s*subroutine\\b))",name:"meta.block.specification.subroutine.fortran",patterns:[{begin:"(?i)\\b(contains)\\b",beginCaptures:{1:{name:"keyword.control.contains.fortran"}},comment:"Contains block.",end:"(?i)(?=(?:end\\s*[;!\\n]|end\\s*subroutine\\b))",name:"meta.block.contains.fortran",patterns:[{include:"$base"}]},{include:"$base"}]}]}]}]},"sync-all-statement":{begin:"(?i)\\b(sync all|sync memory)(\\s*(?=\\())?",beginCaptures:{1:{name:"keyword.control.sync-all-memory.fortran"},2:{name:"punctuation.parentheses.left.fortran"}},comment:"Introduced in the Fortran 2018 standard.",end:"(?n.has(s)}const ee={},mt=[],Ee=()=>{},Ei=()=>!1,Bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ss=e=>e.startsWith("onUpdate:"),ie=Object.assign,xs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ci=Object.prototype.hasOwnProperty,Y=(e,t)=>Ci.call(e,t),H=Array.isArray,yt=e=>Kt(e)==="[object Map]",On=e=>Kt(e)==="[object Set]",zs=e=>Kt(e)==="[object Date]",W=e=>typeof e=="function",re=e=>typeof e=="string",Ve=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",kr=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),Br=Object.prototype.toString,Kt=e=>Br.call(e),Si=e=>Kt(e).slice(8,-1),Kr=e=>Kt(e)==="[object Object]",Ts=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),In=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},xi=/-(\w)/g,Oe=In(e=>e.replace(xi,(t,n)=>n?n.toUpperCase():"")),Ti=/\B([A-Z])/g,et=In(e=>e.replace(Ti,"-$1").toLowerCase()),Ln=In(e=>e.charAt(0).toUpperCase()+e.slice(1)),hn=In(e=>e?`on${Ln(e)}`:""),Fe=(e,t)=>!Object.is(e,t),pn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},us=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ai=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Xs;const qr=()=>Xs||(Xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function As(e){if(H(e)){const t={};for(let n=0;n{if(n){const s=n.split(Oi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Rs(e){let t="";if(re(e))t=e;else if(H(e))for(let n=0;nMn(n,t))}const Ya=e=>re(e)?e:e==null?"":H(e)||Z(e)&&(e.toString===Br||!W(e.toString))?JSON.stringify(e,Xr,2):String(e),Xr=(e,t)=>t&&t.__v_isRef?Xr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[qn(s,o)+" =>"]=r,n),{})}:On(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qn(n))}:Ve(t)?qn(t):Z(t)&&!H(t)&&!Kr(t)?String(t):t,qn=(e,t="")=>{var n;return Ve(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.26 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class Fi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),nt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ft;try{return Ye=!0,ft=this,this._runnings++,Ys(this),this.fn()}finally{Js(this),this._runnings--,ft=n,Ye=t}}stop(){this.active&&(Ys(this),Js(this),this.onStop&&this.onStop(),this.active=!1)}}function ji(e){return e.value}function Ys(e){e._trackId++,e._depsLength=0}function Js(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{n.dirty&&n.run()});n.run();const s=n.run.bind(n);return s.effect=n,s}let Ye=!0,fs=0;const Qr=[];function tt(){Qr.push(Ye),Ye=!1}function nt(){const e=Qr.pop();Ye=e===void 0?!0:e}function Os(){fs++}function Is(){for(fs--;!fs&&ds.length;)ds.shift()()}function Zr(e,t,n){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const s=e.deps[e._depsLength];s!==t?(s&&Jr(s,e),e.deps[e._depsLength++]=t):e._depsLength++}}const ds=[];function eo(e,t,n){Os();for(const s of e.keys()){let r;s._dirtyLevel{const n=new Map;return n.cleanup=e,n.computed=t,n},vn=new WeakMap,dt=Symbol(""),hs=Symbol("");function ve(e,t,n){if(Ye&&ft){let s=vn.get(e);s||vn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=to(()=>s.delete(n))),Zr(ft,r)}}function je(e,t,n,s,r,o){const i=vn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&H(e)){const c=Number(s);i.forEach((u,f)=>{(f==="length"||!Ve(f)&&f>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":H(e)?Ts(n)&&l.push(i.get("length")):(l.push(i.get(dt)),yt(e)&&l.push(i.get(hs)));break;case"delete":H(e)||(l.push(i.get(dt)),yt(e)&&l.push(i.get(hs)));break;case"set":yt(e)&&l.push(i.get(dt));break}Os();for(const c of l)c&&eo(c,4);Is()}function Vi(e,t){const n=vn.get(e);return n&&n.get(t)}const Di=Cs("__proto__,__v_isRef,__isVue"),no=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ve)),Qs=Ui();function Ui(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){tt(),Os();const s=J(this)[t].apply(this,n);return Is(),nt(),s}}),e}function ki(e){Ve(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class so{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?tl:lo:o?io:oo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=H(t);if(!r){if(i&&Y(Qs,n))return Reflect.get(Qs,n,s);if(n==="hasOwnProperty")return ki}const l=Reflect.get(t,n,s);return(Ve(n)?no.has(n):Di(n))||(r||ve(t,"get",n),o)?l:he(l)?i&&Ts(n)?l:l.value:Z(l)?r?Fn(l):Nn(l):l}}class ro extends so{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=Ht(o);if(!bn(s)&&!Ht(s)&&(o=J(o),s=J(s)),!H(t)&&he(o)&&!he(s))return c?!1:(o.value=s,!0)}const i=H(t)&&Ts(n)?Number(n)e,Pn=e=>Reflect.getPrototypeOf(e);function Zt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),o=J(t);n||(Fe(t,o)&&ve(r,"get",t),ve(r,"get",o));const{has:i}=Pn(r),l=s?Ls:n?Ns:jt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function en(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Fe(e,r)&&ve(s,"has",e),ve(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function tn(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",dt),Reflect.get(e,"size",e)}function Zs(e){e=J(e);const t=J(this);return Pn(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function er(e,t){t=J(t);const n=J(this),{has:s,get:r}=Pn(n);let o=s.call(n,e);o||(e=J(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?Fe(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function tr(e){const t=J(this),{has:n,get:s}=Pn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&je(t,"delete",e,void 0),o}function nr(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function nn(e,t){return function(s,r){const o=this,i=o.__v_raw,l=J(i),c=t?Ls:e?Ns:jt;return!e&&ve(l,"iterate",dt),i.forEach((u,f)=>s.call(r,c(u),c(f),o))}}function sn(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=yt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=r[e](...s),f=n?Ls:t?Ns:jt;return!t&&ve(o,"iterate",c?hs:dt),{next(){const{value:h,done:m}=u.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function ke(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Gi(){const e={get(o){return Zt(this,o)},get size(){return tn(this)},has:en,add:Zs,set:er,delete:tr,clear:nr,forEach:nn(!1,!1)},t={get(o){return Zt(this,o,!1,!0)},get size(){return tn(this)},has:en,add:Zs,set:er,delete:tr,clear:nr,forEach:nn(!1,!0)},n={get(o){return Zt(this,o,!0)},get size(){return tn(this,!0)},has(o){return en.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:nn(!0,!1)},s={get(o){return Zt(this,o,!0,!0)},get size(){return tn(this,!0)},has(o){return en.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=sn(o,!1,!1),n[o]=sn(o,!0,!1),t[o]=sn(o,!1,!0),s[o]=sn(o,!0,!0)}),[e,n,t,s]}const[zi,Xi,Yi,Ji]=Gi();function Ms(e,t){const n=t?e?Ji:Yi:e?Xi:zi;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,o)}const Qi={get:Ms(!1,!1)},Zi={get:Ms(!1,!0)},el={get:Ms(!0,!1)};const oo=new WeakMap,io=new WeakMap,lo=new WeakMap,tl=new WeakMap;function nl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function sl(e){return e.__v_skip||!Object.isExtensible(e)?0:nl(Si(e))}function Nn(e){return Ht(e)?e:Ps(e,!1,Ki,Qi,oo)}function rl(e){return Ps(e,!1,qi,Zi,io)}function Fn(e){return Ps(e,!0,Wi,el,lo)}function Ps(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=sl(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function It(e){return Ht(e)?It(e.__v_raw):!!(e&&e.__v_isReactive)}function Ht(e){return!!(e&&e.__v_isReadonly)}function bn(e){return!!(e&&e.__v_isShallow)}function co(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function gn(e){return Object.isExtensible(e)&&Wr(e,"__v_skip",!0),e}const jt=e=>Z(e)?Nn(e):e,Ns=e=>Z(e)?Fn(e):e;class ao{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new $t(()=>t(this._value),()=>Lt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Fe(t._value,t._value=t.effect.run())&&Lt(t,4),Fs(t),t.effect._dirtyLevel>=2&&Lt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ol(e,t,n=!1){let s,r;const o=W(e);return o?(s=e,r=Ee):(s=e.get,r=e.set),new ao(s,r,o||!r,n)}function Fs(e){var t;Ye&&ft&&(e=J(e),Zr(ft,(t=e.dep)!=null?t:e.dep=to(()=>e.dep=void 0,e instanceof ao?e:void 0)))}function Lt(e,t=4,n){e=J(e);const s=e.dep;s&&eo(s,t)}function he(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return fo(e,!1)}function uo(e){return fo(e,!0)}function fo(e,t){return he(e)?e:new il(e,t)}class il{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:jt(t)}get value(){return Fs(this),this._value}set value(t){const n=this.__v_isShallow||bn(t)||Ht(t);t=n?t:J(t),Fe(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:jt(t),Lt(this,4))}}function ho(e){return he(e)?e.value:e}const ll={get:(e,t,n)=>ho(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return he(r)&&!he(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function po(e){return It(e)?e:new Proxy(e,ll)}class cl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Fs(this),()=>Lt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function go(e){return new cl(e)}class al{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Vi(J(this._object),this._key)}}class ul{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function fl(e,t,n){return he(e)?e:W(e)?new ul(e):Z(e)&&arguments.length>1?dl(e,t,n):oe(e)}function dl(e,t,n){const s=e[t];return he(s)?s:new al(e,t,n)}/** +* @vue/runtime-core v3.4.26 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Je(e,t,n,s){try{return s?e(...s):e()}catch(r){Wt(r,t,n)}}function xe(e,t,n,s){if(W(e)){const r=Je(e,t,n,s);return r&&kr(r)&&r.catch(o=>{Wt(o,t,n)}),r}if(H(e)){const r=[];for(let o=0;o>>1,r=de[s],o=Dt(r);oPe&&de.splice(t,1)}function ml(e){H(e)?vt.push(...e):(!qe||!qe.includes(e,e.allowRecurse?lt+1:lt))&&vt.push(e),yo()}function sr(e,t,n=Vt?Pe+1:0){for(;nDt(n)-Dt(s));if(vt.length=0,qe){qe.push(...t);return}for(qe=t,lt=0;lte.id==null?1/0:e.id,yl=(e,t)=>{const n=Dt(e)-Dt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function _o(e){ps=!1,Vt=!0,de.sort(yl);try{for(Pe=0;Pere(w)?w.trim():w)),h&&(r=n.map(us))}let l,c=s[l=hn(t)]||s[l=hn(Oe(t))];!c&&o&&(c=s[l=hn(et(t))]),c&&xe(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(u,e,6,r)}}function vo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!W(e)){const c=u=>{const f=vo(u,t,!0);f&&(l=!0,ie(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&s.set(e,null),null):(H(o)?o.forEach(c=>i[c]=null):ie(i,o),Z(e)&&s.set(e,i),i)}function jn(e,t){return!e||!Bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,et(t))||Y(e,t))}let ce=null,Vn=null;function En(e){const t=ce;return ce=e,Vn=e&&e.type.__scopeId||null,t}function Qa(e){Vn=e}function Za(){Vn=null}function vl(e,t=ce,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&gr(-1);const o=En(t);let i;try{i=e(...r)}finally{En(o),s._d&&gr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Gn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,props:h,data:m,setupState:w,ctx:A,inheritAttrs:P}=e,F=En(e);let q,D;try{if(n.shapeFlag&4){const y=r||s,M=y;q=Ae(u.call(M,y,f,h,w,m,A)),D=l}else{const y=t;q=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:bl(l)}}catch(y){Ft.length=0,Wt(y,e,1),q=se(_e)}let g=q;if(D&&P!==!1){const y=Object.keys(D),{shapeFlag:M}=g;y.length&&M&7&&(o&&y.some(Ss)&&(D=wl(D,o)),g=Ze(g,D,!1,!0))}return n.dirs&&(g=Ze(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),q=g,En(F),q}const bl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Bt(n))&&((t||(t={}))[n]=e[n]);return t},wl=(e,t)=>{const n={};for(const s in e)(!Ss(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function El(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?rr(s,i,u):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Co(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):ml(e)}const xl=Symbol.for("v-scx"),Tl=()=>wt(xl);function So(e,t){return qt(e,null,t)}function nu(e,t){return qt(e,null,{flush:"post"})}function Al(e,t){return qt(e,null,{flush:"sync"})}const rn={};function Ne(e,t,n){return qt(e,t,n)}function qt(e,t,{immediate:n,deep:s,flush:r,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const I=t;t=(...k)=>{I(...k),M()}}const c=ue,u=I=>s===!0?I:ut(I,s===!1?1:void 0);let f,h=!1,m=!1;if(he(e)?(f=()=>e.value,h=bn(e)):It(e)?(f=()=>u(e),h=!0):H(e)?(m=!0,h=e.some(I=>It(I)||bn(I)),f=()=>e.map(I=>{if(he(I))return I.value;if(It(I))return u(I);if(W(I))return Je(I,c,2)})):W(e)?t?f=()=>Je(e,c,2):f=()=>(w&&w(),xe(e,c,3,[A])):f=Ee,t&&s){const I=f;f=()=>ut(I())}let w,A=I=>{w=g.onStop=()=>{Je(I,c,4),w=g.onStop=void 0}},P;if(Yt)if(A=Ee,t?n&&xe(t,c,3,[f(),m?[]:void 0,A]):f(),r==="sync"){const I=Tl();P=I.__watcherHandles||(I.__watcherHandles=[])}else return Ee;let F=m?new Array(e.length).fill(rn):rn;const q=()=>{if(!(!g.active||!g.dirty))if(t){const I=g.run();(s||h||(m?I.some((k,R)=>Fe(k,F[R])):Fe(I,F)))&&(w&&w(),xe(t,c,3,[I,F===rn?void 0:m&&F[0]===rn?[]:F,A]),F=I)}else g.run()};q.allowRecurse=!!t;let D;r==="sync"?D=q:r==="post"?D=()=>me(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),D=()=>Hn(q));const g=new $t(f,Ee,D),y=Yr(),M=()=>{g.stop(),y&&xs(y.effects,g)};return t?n?q():F=g.run():r==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),P&&P.push(M),M}function Rl(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?xo(s,e):()=>s[e]:e.bind(s,s);let o;W(t)?o=t:(o=t.handler,n=t);const i=Xt(this),l=qt(r,o.bind(s),n);return i(),l}function xo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{ut(s,t,n)});else if(Kr(e))for(const s in e)ut(e[s],t,n);return e}function su(e,t){if(ce===null)return e;const n=kn(ce)||ce.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),Io(()=>{e.isUnmounting=!0}),e}const Ce=[Function,Array],To={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ce,onEnter:Ce,onAfterEnter:Ce,onEnterCancelled:Ce,onBeforeLeave:Ce,onLeave:Ce,onAfterLeave:Ce,onLeaveCancelled:Ce,onBeforeAppear:Ce,onAppear:Ce,onAfterAppear:Ce,onAppearCancelled:Ce},Il={name:"BaseTransition",props:To,setup(e,{slots:t}){const n=zt(),s=Ol();return()=>{const r=t.default&&Ro(t.default(),!0);if(!r||!r.length)return;let o=r[0];if(r.length>1){for(const m of r)if(m.type!==_e){o=m;break}}const i=J(e),{mode:l}=i;if(s.isLeaving)return zn(o);const c=ir(o);if(!c)return zn(o);const u=gs(c,i,s,n);ms(c,u);const f=n.subTree,h=f&&ir(f);if(h&&h.type!==_e&&!ct(c,h)){const m=gs(h,i,s,n);if(ms(h,m),l==="out-in"&&c.type!==_e)return s.isLeaving=!0,m.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zn(o);l==="in-out"&&c.type!==_e&&(m.delayLeave=(w,A,P)=>{const F=Ao(s,h);F[String(h.key)]=h,w[Ge]=()=>{A(),w[Ge]=void 0,delete u.delayedLeave},u.delayedLeave=P})}return o}}},Ll=Il;function Ao(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function gs(e,t,n,s){const{appear:r,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:h,onLeave:m,onAfterLeave:w,onLeaveCancelled:A,onBeforeAppear:P,onAppear:F,onAfterAppear:q,onAppearCancelled:D}=t,g=String(e.key),y=Ao(n,e),M=(R,U)=>{R&&xe(R,s,9,U)},I=(R,U)=>{const E=U[1];M(R,U),H(R)?R.every(B=>B.length<=1)&&E():R.length<=1&&E()},k={mode:o,persisted:i,beforeEnter(R){let U=l;if(!n.isMounted)if(r)U=P||l;else return;R[Ge]&&R[Ge](!0);const E=y[g];E&&ct(e,E)&&E.el[Ge]&&E.el[Ge](),M(U,[R])},enter(R){let U=c,E=u,B=f;if(!n.isMounted)if(r)U=F||c,E=q||u,B=D||f;else return;let x=!1;const G=R[on]=le=>{x||(x=!0,le?M(B,[R]):M(E,[R]),k.delayedLeave&&k.delayedLeave(),R[on]=void 0)};U?I(U,[R,G]):G()},leave(R,U){const E=String(e.key);if(R[on]&&R[on](!0),n.isUnmounting)return U();M(h,[R]);let B=!1;const x=R[Ge]=G=>{B||(B=!0,U(),G?M(A,[R]):M(w,[R]),R[Ge]=void 0,y[E]===e&&delete y[E])};y[E]=e,m?I(m,[R,x]):x()},clone(R){return gs(R,t,n,s)}};return k}function zn(e){if(Gt(e))return e=Ze(e),e.children=null,e}function ir(e){if(!Gt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function ms(e,t){e.shapeFlag&6&&e.component?ms(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ro(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function ru(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,u,f=0;const h=()=>(f++,c=null,m()),m=()=>{let w;return c||(w=c=t().catch(A=>{if(A=A instanceof Error?A:new Error(String(A)),l)return new Promise((P,F)=>{l(A,()=>P(h()),()=>F(A),f+1)});throw A}).then(A=>w!==c&&c?c:(A&&(A.__esModule||A[Symbol.toStringTag]==="Module")&&(A=A.default),u=A,A)))};return Hs({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return u},setup(){const w=ue;if(u)return()=>Xn(u,w);const A=D=>{c=null,Wt(D,w,13,!s)};if(i&&w.suspense||Yt)return m().then(D=>()=>Xn(D,w)).catch(D=>(A(D),()=>s?se(s,{error:D}):null));const P=oe(!1),F=oe(),q=oe(!!r);return r&&setTimeout(()=>{q.value=!1},r),o!=null&&setTimeout(()=>{if(!P.value&&!F.value){const D=new Error(`Async component timed out after ${o}ms.`);A(D),F.value=D}},o),m().then(()=>{P.value=!0,w.parent&&Gt(w.parent.vnode)&&(w.parent.effect.dirty=!0,Hn(w.parent.update))}).catch(D=>{A(D),F.value=D}),()=>{if(P.value&&u)return Xn(u,w);if(F.value&&s)return se(s,{error:F.value});if(n&&!q.value)return se(n)}}})}function Xn(e,t){const{ref:n,props:s,children:r,ce:o}=t.vnode,i=se(e,s,r);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Gt=e=>e.type.__isKeepAlive;function Ml(e,t){Oo(e,"a",t)}function Pl(e,t){Oo(e,"da",t)}function Oo(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Dn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Gt(r.parent.vnode)&&Nl(s,t,n,r),r=r.parent}}function Nl(e,t,n,s){const r=Dn(t,e,s,!0);Un(()=>{xs(s[t],r)},n)}function Dn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;tt();const l=Xt(n),c=xe(t,n,e,i);return l(),nt(),c});return s?r.unshift(o):r.push(o),o}}const Ue=e=>(t,n=ue)=>(!Yt||e==="sp")&&Dn(e,(...s)=>t(...s),n),Fl=Ue("bm"),xt=Ue("m"),$l=Ue("bu"),Hl=Ue("u"),Io=Ue("bum"),Un=Ue("um"),jl=Ue("sp"),Vl=Ue("rtg"),Dl=Ue("rtc");function Ul(e,t=ue){Dn("ec",e,t)}function ou(e,t,n,s){let r;const o=n;if(H(e)||re(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;lxn(t)?!(t.type===_e||t.type===ye&&!Lo(t.children)):!0)?e:null}function lu(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:hn(s)]=e[s];return n}const ys=e=>e?Jo(e)?kn(e)||e.proxy:ys(e.parent):null,Mt=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ys(e.parent),$root:e=>ys(e.root),$emit:e=>e.emit,$options:e=>js(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Hn(e.update)}),$nextTick:e=>e.n||(e.n=$n.bind(e.proxy)),$watch:e=>Rl.bind(e)}),Yn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),kl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const w=i[t];if(w!==void 0)switch(w){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Yn(s,t))return i[t]=1,s[t];if(r!==ee&&Y(r,t))return i[t]=2,r[t];if((u=e.propsOptions[0])&&Y(u,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];_s&&(i[t]=0)}}const f=Mt[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,Y(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Yn(r,t)?(r[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||Yn(t,i)||(l=o[0])&&Y(l,i)||Y(s,i)||Y(Mt,i)||Y(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cu(){return Bl().slots}function Bl(){const e=zt();return e.setupContext||(e.setupContext=Zo(e))}function lr(e){return H(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _s=!0;function Kl(e){const t=js(e),n=e.proxy,s=e.ctx;_s=!1,t.beforeCreate&&cr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:m,beforeUpdate:w,updated:A,activated:P,deactivated:F,beforeDestroy:q,beforeUnmount:D,destroyed:g,unmounted:y,render:M,renderTracked:I,renderTriggered:k,errorCaptured:R,serverPrefetch:U,expose:E,inheritAttrs:B,components:x,directives:G,filters:le}=t;if(u&&Wl(u,s,null),i)for(const X in i){const $=i[X];W($)&&(s[X]=$.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=Nn(X))}if(_s=!0,o)for(const X in o){const $=o[X],$e=W($)?$.bind(n,n):W($.get)?$.get.bind(n,n):Ee,Jt=!W($)&&W($.set)?$.set.bind(n):Ee,st=ne({get:$e,set:Jt});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Ie=>st.value=Ie})}if(l)for(const X in l)Mo(l[X],s,n,X);if(c){const X=W(c)?c.call(n):c;Reflect.ownKeys(X).forEach($=>{Jl($,X[$])})}f&&cr(f,e,"c");function j(X,$){H($)?$.forEach($e=>X($e.bind(n))):$&&X($.bind(n))}if(j(Fl,h),j(xt,m),j($l,w),j(Hl,A),j(Ml,P),j(Pl,F),j(Ul,R),j(Dl,I),j(Vl,k),j(Io,D),j(Un,y),j(jl,U),H(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach($=>{Object.defineProperty(X,$,{get:()=>n[$],set:$e=>n[$]=$e})})}else e.exposed||(e.exposed={});M&&e.render===Ee&&(e.render=M),B!=null&&(e.inheritAttrs=B),x&&(e.components=x),G&&(e.directives=G)}function Wl(e,t,n=Ee){H(e)&&(e=vs(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=wt(r.from||s,r.default,!0):o=wt(r.from||s):o=wt(r),he(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function cr(e,t,n){xe(H(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Mo(e,t,n,s){const r=s.includes(".")?xo(n,s):()=>n[s];if(re(e)){const o=t[e];W(o)&&Ne(r,o)}else if(W(e))Ne(r,e.bind(n));else if(Z(e))if(H(e))e.forEach(o=>Mo(o,t,n,s));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&Ne(r,o,e)}}function js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>Cn(c,u,i,!0)),Cn(c,t,i)),Z(t)&&o.set(t,c),c}function Cn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Cn(e,o,n,!0),r&&r.forEach(i=>Cn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ql={data:ar,props:ur,emits:ur,methods:Ot,computed:Ot,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ot,directives:Ot,watch:zl,provide:ar,inject:Gl};function ar(e,t){return t?e?function(){return ie(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return Ot(vs(e),vs(t))}function vs(e){if(H(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}const No={},Fo=()=>Object.create(No),$o=e=>Object.getPrototypeOf(e)===No;function Ql(e,t,n,s=!1){const r={},o=Fo();e.propsDefaults=Object.create(null),Ho(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:rl(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Zl(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,w]=jo(h,t,!0);ie(i,m),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&s.set(e,mt),mt;if(H(o))for(let f=0;f-1,w[1]=P<0||A-1||Y(w,"default"))&&l.push(h)}}}const u=[i,l];return Z(e)&&s.set(e,u),u}function fr(e){return e[0]!=="$"&&!_t(e)}function dr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function hr(e,t){return dr(e)===dr(t)}function pr(e,t){return H(t)?t.findIndex(n=>hr(n,e)):W(t)&&hr(t,e)?0:-1}const Vo=e=>e[0]==="_"||e==="$stable",Vs=e=>H(e)?e.map(Ae):[Ae(e)],ec=(e,t,n)=>{if(t._n)return t;const s=vl((...r)=>Vs(t(...r)),n);return s._c=!1,s},Do=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Vo(r))continue;const o=e[r];if(W(o))t[r]=ec(r,o,s);else if(o!=null){const i=Vs(o);t[r]=()=>i}}},Uo=(e,t)=>{const n=Vs(t);e.slots.default=()=>n},tc=(e,t)=>{const n=e.slots=Fo();if(e.vnode.shapeFlag&32){const s=t._;s?(ie(n,t),Wr(n,"_",s,!0)):Do(t,n)}else t&&Uo(e,t)},nc=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ie(r,t),!n&&l===1&&delete r._):(o=!t.$stable,Do(t,r)),i=t}else t&&(Uo(e,t),i={default:1});if(o)for(const l in r)!Vo(l)&&i[l]==null&&delete r[l]};function Sn(e,t,n,s,r=!1){if(H(e)){e.forEach((m,w)=>Sn(m,t&&(H(t)?t[w]:t),n,s,r));return}if(bt(s)&&!r)return;const o=s.shapeFlag&4?kn(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,u=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(re(u)?(f[u]=null,Y(h,u)&&(h[u]=null)):he(u)&&(u.value=null)),W(c))Je(c,l,12,[i,f]);else{const m=re(c),w=he(c);if(m||w){const A=()=>{if(e.f){const P=m?Y(h,c)?h[c]:f[c]:c.value;r?H(P)&&xs(P,o):H(P)?P.includes(o)||P.push(o):m?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,Y(h,c)&&(h[c]=i)):w&&(c.value=i,e.k&&(f[e.k]=i))};i?(A.id=-1,me(A,n)):A()}}}let Be=!1;const sc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",rc=e=>e.namespaceURI.includes("MathML"),ln=e=>{if(sc(e))return"svg";if(rc(e))return"mathml"},cn=e=>e.nodeType===8;function oc(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,f=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),wn(),y._vnode=g;return}Be=!1,h(y.firstChild,g,null,null,null),wn(),y._vnode=g,Be&&console.error("Hydration completed but contains mismatches.")},h=(g,y,M,I,k,R=!1)=>{R=R||!!y.dynamicChildren;const U=cn(g)&&g.data==="[",E=()=>P(g,y,M,I,k,U),{type:B,ref:x,shapeFlag:G,patchFlag:le}=y;let fe=g.nodeType;y.el=g,le===-2&&(R=!1,y.dynamicChildren=null);let j=null;switch(B){case Ct:fe!==3?y.children===""?(c(y.el=r(""),i(g),g),j=g):j=E():(g.data!==y.children&&(Be=!0,g.data=y.children),j=o(g));break;case _e:D(g)?(j=o(g),q(y.el=g.content.firstChild,g,M)):fe!==8||U?j=E():j=o(g);break;case Nt:if(U&&(g=o(g),fe=g.nodeType),fe===1||fe===3){j=g;const X=!y.children.length;for(let $=0;${R=R||!!y.dynamicChildren;const{type:U,props:E,patchFlag:B,shapeFlag:x,dirs:G,transition:le}=y,fe=U==="input"||U==="option";if(fe||B!==-1){G&&Me(y,null,M,"created");let j=!1;if(D(g)){j=ko(I,le)&&M&&M.vnode.props&&M.vnode.props.appear;const $=g.content.firstChild;j&&le.beforeEnter($),q($,g,M),y.el=g=$}if(x&16&&!(E&&(E.innerHTML||E.textContent))){let $=w(g.firstChild,y,g,M,I,k,R);for(;$;){Be=!0;const $e=$;$=$.nextSibling,l($e)}}else x&8&&g.textContent!==y.children&&(Be=!0,g.textContent=y.children);if(E)if(fe||!R||B&48)for(const $ in E)(fe&&($.endsWith("value")||$==="indeterminate")||Bt($)&&!_t($)||$[0]===".")&&s(g,$,null,E[$],void 0,void 0,M);else E.onClick&&s(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Se(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||j)&&Co(()=>{X&&Se(X,M,y),j&&le.enter(g),G&&Me(y,null,M,"mounted")},I)}return g.nextSibling},w=(g,y,M,I,k,R,U)=>{U=U||!!y.dynamicChildren;const E=y.children,B=E.length;for(let x=0;x{const{slotScopeIds:U}=y;U&&(k=k?k.concat(U):U);const E=i(g),B=w(o(g),y,E,M,I,k,R);return B&&cn(B)&&B.data==="]"?o(y.anchor=B):(Be=!0,c(y.anchor=u("]"),E,B),B)},P=(g,y,M,I,k,R)=>{if(Be=!0,y.el=null,R){const B=F(g);for(;;){const x=o(g);if(x&&x!==B)l(x);else break}}const U=o(g),E=i(g);return l(g),n(null,y,E,U,M,I,ln(E),k),U},F=(g,y="[",M="]")=>{let I=0;for(;g;)if(g=o(g),g&&cn(g)&&(g.data===y&&I++,g.data===M)){if(I===0)return o(g);I--}return g},q=(g,y,M)=>{const I=y.parentNode;I&&I.replaceChild(g,y);let k=M;for(;k;)k.vnode.el===y&&(k.vnode.el=k.subTree.el=g),k=k.parent},D=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const me=Co;function ic(e){return lc(e,oc)}function lc(e,t){const n=qr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:m,setScopeId:w=Ee,insertStaticContent:A}=e,P=(a,d,p,_=null,v=null,S=null,O=void 0,C=null,T=!!d.dynamicChildren)=>{if(a===d)return;a&&!ct(a,d)&&(_=Qt(a),Ie(a,v,S,!0),a=null),d.patchFlag===-2&&(T=!1,d.dynamicChildren=null);const{type:b,ref:L,shapeFlag:V}=d;switch(b){case Ct:F(a,d,p,_);break;case _e:q(a,d,p,_);break;case Nt:a==null&&D(d,p,_,O);break;case ye:x(a,d,p,_,v,S,O,C,T);break;default:V&1?M(a,d,p,_,v,S,O,C,T):V&6?G(a,d,p,_,v,S,O,C,T):(V&64||V&128)&&b.process(a,d,p,_,v,S,O,C,T,pt)}L!=null&&v&&Sn(L,a&&a.ref,S,d||a,!d)},F=(a,d,p,_)=>{if(a==null)s(d.el=l(d.children),p,_);else{const v=d.el=a.el;d.children!==a.children&&u(v,d.children)}},q=(a,d,p,_)=>{a==null?s(d.el=c(d.children||""),p,_):d.el=a.el},D=(a,d,p,_)=>{[a.el,a.anchor]=A(a.children,d,p,_,a.el,a.anchor)},g=({el:a,anchor:d},p,_)=>{let v;for(;a&&a!==d;)v=m(a),s(a,p,_),a=v;s(d,p,_)},y=({el:a,anchor:d})=>{let p;for(;a&&a!==d;)p=m(a),r(a),a=p;r(d)},M=(a,d,p,_,v,S,O,C,T)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),a==null?I(d,p,_,v,S,O,C,T):U(a,d,v,S,O,C,T)},I=(a,d,p,_,v,S,O,C)=>{let T,b;const{props:L,shapeFlag:V,transition:N,dirs:K}=a;if(T=a.el=i(a.type,S,L&&L.is,L),V&8?f(T,a.children):V&16&&R(a.children,T,null,_,v,Jn(a,S),O,C),K&&Me(a,null,_,"created"),k(T,a,a.scopeId,O,_),L){for(const Q in L)Q!=="value"&&!_t(Q)&&o(T,Q,null,L[Q],S,a.children,_,v,He);"value"in L&&o(T,"value",null,L.value,S),(b=L.onVnodeBeforeMount)&&Se(b,_,a)}K&&Me(a,null,_,"beforeMount");const z=ko(v,N);z&&N.beforeEnter(T),s(T,d,p),((b=L&&L.onVnodeMounted)||z||K)&&me(()=>{b&&Se(b,_,a),z&&N.enter(T),K&&Me(a,null,_,"mounted")},v)},k=(a,d,p,_,v)=>{if(p&&w(a,p),_)for(let S=0;S<_.length;S++)w(a,_[S]);if(v){let S=v.subTree;if(d===S){const O=v.vnode;k(a,O,O.scopeId,O.slotScopeIds,v.parent)}}},R=(a,d,p,_,v,S,O,C,T=0)=>{for(let b=T;b{const C=d.el=a.el;let{patchFlag:T,dynamicChildren:b,dirs:L}=d;T|=a.patchFlag&16;const V=a.props||ee,N=d.props||ee;let K;if(p&&rt(p,!1),(K=N.onVnodeBeforeUpdate)&&Se(K,p,d,a),L&&Me(d,a,p,"beforeUpdate"),p&&rt(p,!0),b?E(a.dynamicChildren,b,C,p,_,Jn(d,v),S):O||$(a,d,C,null,p,_,Jn(d,v),S,!1),T>0){if(T&16)B(C,d,V,N,p,_,v);else if(T&2&&V.class!==N.class&&o(C,"class",null,N.class,v),T&4&&o(C,"style",V.style,N.style,v),T&8){const z=d.dynamicProps;for(let Q=0;Q{K&&Se(K,p,d,a),L&&Me(d,a,p,"updated")},_)},E=(a,d,p,_,v,S,O)=>{for(let C=0;C{if(p!==_){if(p!==ee)for(const C in p)!_t(C)&&!(C in _)&&o(a,C,p[C],null,O,d.children,v,S,He);for(const C in _){if(_t(C))continue;const T=_[C],b=p[C];T!==b&&C!=="value"&&o(a,C,b,T,O,d.children,v,S,He)}"value"in _&&o(a,"value",p.value,_.value,O)}},x=(a,d,p,_,v,S,O,C,T)=>{const b=d.el=a?a.el:l(""),L=d.anchor=a?a.anchor:l("");let{patchFlag:V,dynamicChildren:N,slotScopeIds:K}=d;K&&(C=C?C.concat(K):K),a==null?(s(b,p,_),s(L,p,_),R(d.children||[],p,L,v,S,O,C,T)):V>0&&V&64&&N&&a.dynamicChildren?(E(a.dynamicChildren,N,p,v,S,O,C),(d.key!=null||v&&d===v.subTree)&&Bo(a,d,!0)):$(a,d,p,L,v,S,O,C,T)},G=(a,d,p,_,v,S,O,C,T)=>{d.slotScopeIds=C,a==null?d.shapeFlag&512?v.ctx.activate(d,p,_,O,T):le(d,p,_,v,S,O,T):fe(a,d,T)},le=(a,d,p,_,v,S,O)=>{const C=a.component=mc(a,_,v);if(Gt(a)&&(C.ctx.renderer=pt),yc(C),C.asyncDep){if(v&&v.registerDep(C,j),!a.el){const T=C.subTree=se(_e);q(null,T,d,p)}}else j(C,a,d,p,v,S,O)},fe=(a,d,p)=>{const _=d.component=a.component;if(El(a,d,p))if(_.asyncDep&&!_.asyncResolved){X(_,d,p);return}else _.next=d,gl(_.update),_.effect.dirty=!0,_.update();else d.el=a.el,_.vnode=d},j=(a,d,p,_,v,S,O)=>{const C=()=>{if(a.isMounted){let{next:L,bu:V,u:N,parent:K,vnode:z}=a;{const gt=Ko(a);if(gt){L&&(L.el=z.el,X(a,L,O)),gt.asyncDep.then(()=>{a.isUnmounted||C()});return}}let Q=L,te;rt(a,!1),L?(L.el=z.el,X(a,L,O)):L=z,V&&pn(V),(te=L.props&&L.props.onVnodeBeforeUpdate)&&Se(te,K,L,z),rt(a,!0);const ae=Gn(a),Te=a.subTree;a.subTree=ae,P(Te,ae,h(Te.el),Qt(Te),a,v,S),L.el=ae.el,Q===null&&Cl(a,ae.el),N&&me(N,v),(te=L.props&&L.props.onVnodeUpdated)&&me(()=>Se(te,K,L,z),v)}else{let L;const{el:V,props:N}=d,{bm:K,m:z,parent:Q}=a,te=bt(d);if(rt(a,!1),K&&pn(K),!te&&(L=N&&N.onVnodeBeforeMount)&&Se(L,Q,d),rt(a,!0),V&&Wn){const ae=()=>{a.subTree=Gn(a),Wn(V,a.subTree,a,v,null)};te?d.type.__asyncLoader().then(()=>!a.isUnmounted&&ae()):ae()}else{const ae=a.subTree=Gn(a);P(null,ae,p,_,a,v,S),d.el=ae.el}if(z&&me(z,v),!te&&(L=N&&N.onVnodeMounted)){const ae=d;me(()=>Se(L,Q,ae),v)}(d.shapeFlag&256||Q&&bt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&me(a.a,v),a.isMounted=!0,d=p=_=null}},T=a.effect=new $t(C,Ee,()=>Hn(b),a.scope),b=a.update=()=>{T.dirty&&T.run()};b.id=a.uid,rt(a,!0),b()},X=(a,d,p)=>{d.component=a;const _=a.vnode.props;a.vnode=d,a.next=null,Zl(a,d.props,_,p),nc(a,d.children,p),tt(),sr(a),nt()},$=(a,d,p,_,v,S,O,C,T=!1)=>{const b=a&&a.children,L=a?a.shapeFlag:0,V=d.children,{patchFlag:N,shapeFlag:K}=d;if(N>0){if(N&128){Jt(b,V,p,_,v,S,O,C,T);return}else if(N&256){$e(b,V,p,_,v,S,O,C,T);return}}K&8?(L&16&&He(b,v,S),V!==b&&f(p,V)):L&16?K&16?Jt(b,V,p,_,v,S,O,C,T):He(b,v,S,!0):(L&8&&f(p,""),K&16&&R(V,p,_,v,S,O,C,T))},$e=(a,d,p,_,v,S,O,C,T)=>{a=a||mt,d=d||mt;const b=a.length,L=d.length,V=Math.min(b,L);let N;for(N=0;NL?He(a,v,S,!0,!1,V):R(d,p,_,v,S,O,C,T,V)},Jt=(a,d,p,_,v,S,O,C,T)=>{let b=0;const L=d.length;let V=a.length-1,N=L-1;for(;b<=V&&b<=N;){const K=a[b],z=d[b]=T?ze(d[b]):Ae(d[b]);if(ct(K,z))P(K,z,p,null,v,S,O,C,T);else break;b++}for(;b<=V&&b<=N;){const K=a[V],z=d[N]=T?ze(d[N]):Ae(d[N]);if(ct(K,z))P(K,z,p,null,v,S,O,C,T);else break;V--,N--}if(b>V){if(b<=N){const K=N+1,z=KN)for(;b<=V;)Ie(a[b],v,S,!0),b++;else{const K=b,z=b,Q=new Map;for(b=z;b<=N;b++){const be=d[b]=T?ze(d[b]):Ae(d[b]);be.key!=null&&Q.set(be.key,b)}let te,ae=0;const Te=N-z+1;let gt=!1,Ws=0;const Tt=new Array(Te);for(b=0;b=Te){Ie(be,v,S,!0);continue}let Le;if(be.key!=null)Le=Q.get(be.key);else for(te=z;te<=N;te++)if(Tt[te-z]===0&&ct(be,d[te])){Le=te;break}Le===void 0?Ie(be,v,S,!0):(Tt[Le-z]=b+1,Le>=Ws?Ws=Le:gt=!0,P(be,d[Le],p,null,v,S,O,C,T),ae++)}const qs=gt?cc(Tt):mt;for(te=qs.length-1,b=Te-1;b>=0;b--){const be=z+b,Le=d[be],Gs=be+1{const{el:S,type:O,transition:C,children:T,shapeFlag:b}=a;if(b&6){st(a.component.subTree,d,p,_);return}if(b&128){a.suspense.move(d,p,_);return}if(b&64){O.move(a,d,p,pt);return}if(O===ye){s(S,d,p);for(let V=0;VC.enter(S),v);else{const{leave:V,delayLeave:N,afterLeave:K}=C,z=()=>s(S,d,p),Q=()=>{V(S,()=>{z(),K&&K()})};N?N(S,z,Q):Q()}else s(S,d,p)},Ie=(a,d,p,_=!1,v=!1)=>{const{type:S,props:O,ref:C,children:T,dynamicChildren:b,shapeFlag:L,patchFlag:V,dirs:N}=a;if(C!=null&&Sn(C,null,p,a,!0),L&256){d.ctx.deactivate(a);return}const K=L&1&&N,z=!bt(a);let Q;if(z&&(Q=O&&O.onVnodeBeforeUnmount)&&Se(Q,d,a),L&6)wi(a.component,p,_);else{if(L&128){a.suspense.unmount(p,_);return}K&&Me(a,null,d,"beforeUnmount"),L&64?a.type.remove(a,d,p,v,pt,_):b&&(S!==ye||V>0&&V&64)?He(b,d,p,!1,!0):(S===ye&&V&384||!v&&L&16)&&He(T,d,p),_&&Bs(a)}(z&&(Q=O&&O.onVnodeUnmounted)||K)&&me(()=>{Q&&Se(Q,d,a),K&&Me(a,null,d,"unmounted")},p)},Bs=a=>{const{type:d,el:p,anchor:_,transition:v}=a;if(d===ye){bi(p,_);return}if(d===Nt){y(a);return}const S=()=>{r(p),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:O,delayLeave:C}=v,T=()=>O(p,S);C?C(a.el,S,T):T()}else S()},bi=(a,d)=>{let p;for(;a!==d;)p=m(a),r(a),a=p;r(d)},wi=(a,d,p)=>{const{bum:_,scope:v,update:S,subTree:O,um:C}=a;_&&pn(_),v.stop(),S&&(S.active=!1,Ie(O,a,d,p)),C&&me(C,d),me(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},He=(a,d,p,_=!1,v=!1,S=0)=>{for(let O=S;Oa.shapeFlag&6?Qt(a.component.subTree):a.shapeFlag&128?a.suspense.next():m(a.anchor||a.el);let Bn=!1;const Ks=(a,d,p)=>{a==null?d._vnode&&Ie(d._vnode,null,null,!0):P(d._vnode||null,a,d,null,null,null,p),Bn||(Bn=!0,sr(),wn(),Bn=!1),d._vnode=a},pt={p:P,um:Ie,m:st,r:Bs,mt:le,mc:R,pc:$,pbc:E,n:Qt,o:e};let Kn,Wn;return t&&([Kn,Wn]=t(pt)),{render:Ks,hydrate:Kn,createApp:Yl(Ks,Kn)}}function Jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Bo(e,t,n=!1){const s=e.children,r=t.children;if(H(s)&&H(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Ko(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ko(t)}const ac=e=>e.__isTeleport,ye=Symbol.for("v-fgt"),Ct=Symbol.for("v-txt"),_e=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ft=[];let Re=null;function Wo(e=!1){Ft.push(Re=e?null:[])}function uc(){Ft.pop(),Re=Ft[Ft.length-1]||null}let Ut=1;function gr(e){Ut+=e}function qo(e){return e.dynamicChildren=Ut>0?Re||mt:null,uc(),Ut>0&&Re&&Re.push(e),e}function au(e,t,n,s,r,o){return qo(Xo(e,t,n,s,r,o,!0))}function Go(e,t,n,s,r){return qo(se(e,t,n,s,r,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function ct(e,t){return e.type===t.type&&e.key===t.key}const zo=({key:e})=>e??null,mn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||he(e)||W(e)?{i:ce,r:e,k:t,f:!!n}:e:null);function Xo(e,t=null,n=null,s=0,r=null,o=e===ye?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zo(t),ref:t&&mn(t),scopeId:Vn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ce};return l?(Ds(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Ut>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const se=fc;function fc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===wo)&&(e=_e),xn(e)){const l=Ze(e,t,!0);return n&&Ds(l,n),Ut>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(wc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Rs(l)),Z(c)&&(co(c)&&!H(c)&&(c=ie({},c)),t.style=As(c))}const i=re(e)?1:Sl(e)?128:ac(e)?64:Z(e)?4:W(e)?2:0;return Xo(e,t,n,s,r,i,o,!0)}function dc(e){return e?co(e)||$o(e)?ie({},e):e:null}function Ze(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?hc(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&zo(u),ref:t&&t.ref?n&&o?H(o)?o.concat(mn(t)):[o,mn(t)]:mn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&(f.transition=c.clone(f)),f}function Yo(e=" ",t=0){return se(Ct,null,e,t)}function uu(e,t){const n=se(Nt,null,e);return n.staticCount=t,n}function fu(e="",t=!1){return t?(Wo(),Go(_e,null,e)):se(_e,null,e)}function Ae(e){return e==null||typeof e=="boolean"?se(_e):H(e)?se(ye,null,e.slice()):typeof e=="object"?ze(e):se(Ct,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Ds(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(H(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ds(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!$o(t)?t._ctx=ce:r===3&&ce&&(ce.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ce},n=32):(t=String(t),s&64?(n=16,t=[Yo(t)]):n=8);e.children=t,e.shapeFlag|=n}function hc(...e){const t={};for(let n=0;nue||ce;let Tn,ws;{const e=qr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Tn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),ws=t("__VUE_SSR_SETTERS__",n=>Yt=n)}const Xt=e=>{const t=ue;return Tn(e),e.scope.on(),()=>{e.scope.off(),Tn(t)}},mr=()=>{ue&&ue.scope.off(),Tn(null)};function Jo(e){return e.vnode.shapeFlag&4}let Yt=!1;function yc(e,t=!1){t&&ws(t);const{props:n,children:s}=e.vnode,r=Jo(e);Ql(e,n,r,t),tc(e,s);const o=r?_c(e,t):void 0;return t&&ws(!1),o}function _c(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,kl);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Zo(e):null,o=Xt(e);tt();const i=Je(s,e,0,[e.props,r]);if(nt(),o(),kr(i)){if(i.then(mr,mr),t)return i.then(l=>{yr(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else yr(e,i,t)}else Qo(e,t)}function yr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=po(t)),Qo(e,n)}let _r;function Qo(e,t,n){const s=e.type;if(!e.render){if(!t&&_r&&!s.render){const r=s.template||js(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=ie(ie({isCustomElement:o,delimiters:l},i),c);s.render=_r(r,u)}}e.render=s.render||Ee}{const r=Xt(e);tt();try{Kl(e)}finally{nt(),r()}}}const vc={get(e,t){return ve(e,"get",""),e[t]}};function Zo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,vc),slots:e.slots,emit:e.emit,expose:t}}function kn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(po(gn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}}))}function bc(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function wc(e){return W(e)&&"__vccOpts"in e}const ne=(e,t)=>ol(e,t,Yt);function du(e,t,n=ee){const s=zt(),r=Oe(t),o=et(t),i=go((c,u)=>{let f;return Al(()=>{const h=e[t];Fe(f,h)&&(f=h,u())}),{get(){return c(),n.get?n.get(f):f},set(h){const m=s.vnode.props;!(m&&(t in m||r in m||o in m)&&(`onUpdate:${t}`in m||`onUpdate:${r}`in m||`onUpdate:${o}`in m))&&Fe(h,f)&&(f=h,u()),s.emit(`update:${t}`,n.set?n.set(h):h)}}}),l=t==="modelValue"?"modelModifiers":`${t}Modifiers`;return i[Symbol.iterator]=()=>{let c=0;return{next(){return c<2?{value:c++?e[l]||{}:i,done:!1}:{done:!0}}}},i}function Es(e,t,n){const s=arguments.length;return s===2?Z(t)&&!H(t)?xn(t)?se(e,null,[t]):se(e,t):se(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&xn(n)&&(n=[n]),se(e,t,n))}const Ec="3.4.26";/** +* @vue/runtime-dom v3.4.26 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Cc="http://www.w3.org/2000/svg",Sc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,vr=Xe&&Xe.createElement("template"),xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(Cc,e):t==="mathml"?Xe.createElementNS(Sc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{vr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=vr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",At="animation",kt=Symbol("_vtc"),ei=(e,{slots:t})=>Es(Ll,Tc(e),t);ei.displayName="Transition";const ti={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ei.props=ie({},To,ti);const ot=(e,t=[])=>{H(e)?e.forEach(n=>n(...t)):e&&e(...t)},br=e=>e?H(e)?e.some(t=>t.length>1):e.length>1:!1;function Tc(e){const t={};for(const x in e)x in ti||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,A=Ac(r),P=A&&A[0],F=A&&A[1],{onBeforeEnter:q,onEnter:D,onEnterCancelled:g,onLeave:y,onLeaveCancelled:M,onBeforeAppear:I=q,onAppear:k=D,onAppearCancelled:R=g}=t,U=(x,G,le)=>{it(x,G?f:l),it(x,G?u:i),le&&le()},E=(x,G)=>{x._isLeaving=!1,it(x,h),it(x,w),it(x,m),G&&G()},B=x=>(G,le)=>{const fe=x?k:D,j=()=>U(G,x,le);ot(fe,[G,j]),wr(()=>{it(G,x?c:o),We(G,x?f:l),br(fe)||Er(G,s,P,j)})};return ie(t,{onBeforeEnter(x){ot(q,[x]),We(x,o),We(x,i)},onBeforeAppear(x){ot(I,[x]),We(x,c),We(x,u)},onEnter:B(!1),onAppear:B(!0),onLeave(x,G){x._isLeaving=!0;const le=()=>E(x,G);We(x,h),We(x,m),Ic(),wr(()=>{x._isLeaving&&(it(x,h),We(x,w),br(y)||Er(x,s,F,le))}),ot(y,[x,le])},onEnterCancelled(x){U(x,!1),ot(g,[x])},onAppearCancelled(x){U(x,!0),ot(R,[x])},onLeaveCancelled(x){E(x),ot(M,[x])}})}function Ac(e){if(e==null)return null;if(Z(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return Ai(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[kt]||(e[kt]=new Set)).add(t)}function it(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[kt];n&&(n.delete(t),n.size||(e[kt]=void 0))}function wr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rc=0;function Er(e,t,n,s){const r=e._endId=++Rc,o=()=>{r===e._endId&&s()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Oc(e,t);if(!i)return s();const u=i+"end";let f=0;const h=()=>{e.removeEventListener(u,m),o()},m=w=>{w.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[A]||"").split(", "),r=s(`${Ke}Delay`),o=s(`${Ke}Duration`),i=Cr(r,o),l=s(`${At}Delay`),c=s(`${At}Duration`),u=Cr(l,c);let f=null,h=0,m=0;t===Ke?i>0&&(f=Ke,h=i,m=o.length):t===At?u>0&&(f=At,h=u,m=c.length):(h=Math.max(i,u),f=h>0?i>u?Ke:At:null,m=f?f===Ke?o.length:c.length:0);const w=f===Ke&&/\b(transform|all)(,|$)/.test(s(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:w}}function Cr(e,t){for(;e.lengthSr(n)+Sr(e[s])))}function Sr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ic(){return document.body.offsetHeight}function Lc(e,t,n){const s=e[kt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const An=Symbol("_vod"),ni=Symbol("_vsh"),hu={beforeMount(e,{value:t},{transition:n}){e[An]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Rt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Rt(e,!0),s.enter(e)):s.leave(e,()=>{Rt(e,!1)}):Rt(e,t))},beforeUnmount(e,{value:t}){Rt(e,t)}};function Rt(e,t){e.style.display=t?e[An]:"none",e[ni]=!t}const Mc=Symbol(""),Pc=/(^|;)\s*display\s*:/;function Nc(e,t,n){const s=e.style,r=re(n);let o=!1;if(n&&!r){if(t)if(re(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&yn(s,l,"")}else for(const i in t)n[i]==null&&yn(s,i,"");for(const i in n)i==="display"&&(o=!0),yn(s,i,n[i])}else if(r){if(t!==n){const i=s[Mc];i&&(n+=";"+i),s.cssText=n,o=Pc.test(n)}}else t&&e.removeAttribute("style");An in e&&(e[An]=o?s.display:"",e[ni]&&(s.display="none"))}const xr=/\s*!important$/;function yn(e,t,n){if(H(n))n.forEach(s=>yn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Fc(e,t);xr.test(n)?e.setProperty(et(s),n.replace(xr,""),"important"):e[s]=n}}const Tr=["Webkit","Moz","ms"],Zn={};function Fc(e,t){const n=Zn[t];if(n)return n;let s=Oe(t);if(s!=="filter"&&s in e)return Zn[t]=s;s=Ln(s);for(let r=0;res||(Uc.then(()=>es=0),es=Date.now());function Bc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;xe(Kc(s,n.value),t,5,[s])};return n.value=e,n.attached=kc(),n}function Kc(e,t){if(H(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ir=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wc=(e,t,n,s,r,o,i,l,c)=>{const u=r==="svg";t==="class"?Lc(e,s,u):t==="style"?Nc(e,n,s):Bt(t)?Ss(t)||Vc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):qc(e,t,s,u))?Hc(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),$c(e,t,s,u))};function qc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ir(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Ir(t)&&re(n)?!1:t in e}const Rn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?n=>pn(t,n):t};function Gc(e){e.target.composing=!0}function Lr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Et=Symbol("_assign"),pu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Et]=Rn(r);const o=s||r.props&&r.props.type==="number";at(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=us(l)),e[Et](l)}),n&&at(e,"change",()=>{e.value=e.value.trim()}),t||(at(e,"compositionstart",Gc),at(e,"compositionend",Lr),at(e,"change",Lr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},o){if(e[Et]=Rn(o),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?us(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},gu={deep:!0,created(e,t,n){e[Et]=Rn(n),at(e,"change",()=>{const s=e._modelValue,r=zc(e),o=e.checked,i=e[Et];if(H(s)){const l=zr(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const u=[...s];u.splice(l,1),i(u)}}else if(On(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(si(e,o))})},mounted:Mr,beforeUpdate(e,t,n){e[Et]=Rn(n),Mr(e,t,n)}};function Mr(e,{value:t,oldValue:n},s){e._modelValue=t,H(t)?e.checked=zr(t,s.props.value)>-1:On(t)?e.checked=t.has(s.props.value):t!==n&&(e.checked=Mn(t,si(e,!0)))}function zc(e){return"_value"in e?e._value:e.value}function si(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Xc=["ctrl","shift","alt","meta"],Yc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Xc.some(n=>e[`${n}Key`]&&!t.includes(n))},mu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=et(r.key);if(t.some(i=>i===o||Jc[i]===o))return e(r)})},Qc=ie({patchProp:Wc},xc);let ts,Pr=!1;function Zc(){return ts=Pr?ts:ic(Qc),Pr=!0,ts}const _u=(...e)=>{const t=Zc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=ta(s);if(r)return n(r,!0,ea(r))},t};function ea(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ta(e){return re(e)?document.querySelector(e):e}const vu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},na=window.__VP_SITE_DATA__;function Us(e){return Yr()?(Hi(e),!0):!1}function Qe(e){return typeof e=="function"?e():ho(e)}const ri=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const sa=Object.prototype.toString,ra=e=>sa.call(e)==="[object Object]",oi=()=>{},Nr=oa();function oa(){var e,t;return ri&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ia(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}const ii=e=>e();function la(e=ii){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...o)=>{t.value&&e(...o)};return{isActive:Fn(t),pause:n,resume:s,eventFilter:r}}function ca(e){return zt()}function li(...e){if(e.length!==1)return fl(...e);const t=e[0];return typeof t=="function"?Fn(go(()=>({get:t,set:oi}))):oe(t)}function aa(e,t,n={}){const{eventFilter:s=ii,...r}=n;return Ne(e,ia(s,t),r)}function ua(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=la(s);return{stop:aa(e,t,{...r,eventFilter:o}),pause:i,resume:l,isActive:c}}function ks(e,t=!0,n){ca()?xt(e,n):t?e():$n(e)}function ci(e){var t;const n=Qe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const De=ri?window:void 0;function St(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=De):[t,n,s,r]=e,!t)return oi;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,w)=>(f.addEventListener(h,m,w),()=>f.removeEventListener(h,m,w)),c=Ne(()=>[ci(t),Qe(r)],([f,h])=>{if(i(),!f)return;const m=ra(h)?{...h}:h;o.push(...n.flatMap(w=>s.map(A=>l(f,w,A,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return Us(u),u}function fa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function bu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=De,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=s,c=fa(t);return St(r,o,f=>{f.repeat&&Qe(l)||c(f)&&n(f)},i)}function da(){const e=oe(!1),t=zt();return t&&xt(()=>{e.value=!0},t),e}function ha(e){const t=da();return ne(()=>(t.value,!!e()))}function ai(e,t={}){const{window:n=De}=t,s=ha(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const o=oe(!1),i=u=>{o.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",i):r.removeListener(i))},c=So(()=>{s.value&&(l(),r=n.matchMedia(Qe(e)),"addEventListener"in r?r.addEventListener("change",i):r.addListener(i),o.value=r.matches)});return Us(()=>{c(),l(),r=void 0}),o}const an=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},un="__vueuse_ssr_handlers__",pa=ga();function ga(){return un in an||(an[un]=an[un]||{}),an[un]}function ui(e,t){return pa[e]||t}function ma(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ya={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Fr="vueuse-storage";function _a(e,t,n,s={}){var r;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=De,eventFilter:m,onError:w=E=>{console.error(E)},initOnMounted:A}=s,P=(f?uo:oe)(typeof t=="function"?t():t);if(!n)try{n=ui("getDefaultStorage",()=>{var E;return(E=De)==null?void 0:E.localStorage})()}catch(E){w(E)}if(!n)return P;const F=Qe(t),q=ma(F),D=(r=s.serializer)!=null?r:ya[q],{pause:g,resume:y}=ua(P,()=>I(P.value),{flush:o,deep:i,eventFilter:m});h&&l&&ks(()=>{St(h,"storage",R),St(h,Fr,U),A&&R()}),A||R();function M(E,B){h&&h.dispatchEvent(new CustomEvent(Fr,{detail:{key:e,oldValue:E,newValue:B,storageArea:n}}))}function I(E){try{const B=n.getItem(e);if(E==null)M(B,null),n.removeItem(e);else{const x=D.write(E);B!==x&&(n.setItem(e,x),M(B,x))}}catch(B){w(B)}}function k(E){const B=E?E.newValue:n.getItem(e);if(B==null)return c&&F!=null&&n.setItem(e,D.write(F)),F;if(!E&&u){const x=D.read(B);return typeof u=="function"?u(x,F):q==="object"&&!Array.isArray(x)?{...F,...x}:x}else return typeof B!="string"?B:D.read(B)}function R(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){P.value=F;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==D.write(P.value)&&(P.value=k(E))}catch(B){w(B)}finally{E?$n(y):y()}}}}function U(E){R(E.detail)}return P}function fi(e){return ai("(prefers-color-scheme: dark)",e)}function va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=De,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=fi({window:r}),w=ne(()=>m.value?"dark":"light"),A=c||(i==null?li(s):_a(i,s,o,{window:r,listenToStorageChanges:l})),P=ne(()=>A.value==="auto"?w.value:A.value),F=ui("updateHTMLAttrs",(y,M,I)=>{const k=typeof y=="string"?r==null?void 0:r.document.querySelector(y):ci(y);if(!k)return;let R;if(f&&(R=r.document.createElement("style"),R.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(R)),M==="class"){const U=I.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{U.includes(E)?k.classList.add(E):k.classList.remove(E)})}else k.setAttribute(M,I);f&&(r.getComputedStyle(R).opacity,document.head.removeChild(R))});function q(y){var M;F(t,n,(M=h[y])!=null?M:y)}function D(y){e.onChanged?e.onChanged(y,q):q(y)}Ne(P,D,{flush:"post",immediate:!0}),ks(()=>D(P.value));const g=ne({get(){return u?A.value:P.value},set(y){A.value=y}});try{return Object.assign(g,{store:A,system:w,state:P})}catch{return g}}function ba(e={}){const{valueDark:t="dark",valueLight:n="",window:s=De}=e,r=va({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>r.system?r.system.value:fi({window:s}).value?"dark":"light");return ne({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?r.value="auto":r.value=c}})}function ns(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function di(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const fn=new WeakMap;function wu(e,t=!1){const n=oe(t);let s=null;Ne(li(e),i=>{const l=ns(Qe(i));if(l){const c=l;fn.get(c)||fn.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const r=()=>{const i=ns(Qe(e));!i||n.value||(Nr&&(s=St(i,"touchmove",l=>{wa(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=ns(Qe(e));!l||!n.value||(Nr&&(s==null||s()),l.style.overflow=(i=fn.get(l))!=null?i:"",fn.delete(l),n.value=!1)};return Us(o),ne({get(){return n.value},set(i){i?r():o()}})}function Eu(e={}){const{window:t=De,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),o=ne({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return St(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Cu(e={}){const{window:t=De,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=oe(n),l=oe(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),ks(c),St("resize",c,{passive:!0}),r){const u=ai("(orientation: portrait)");Ne(u,()=>c())}return{width:i,height:l}}const ss={BASE_URL:"/Coalesce/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var rs={};const hi=/^(?:[a-z]+:|\/\/)/i,Ea="vitepress-theme-appearance",Ca=/#.*$/,Sa=/[?#].*$/,xa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",pi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ta(e,t,n=!1){if(t===void 0)return!1;if(e=$r(`/${e}`),n)return new RegExp(t).test(e);if($r(t)!==e)return!1;const s=t.match(Ca);return s?(ge?location.hash:"")===s[0]:!0}function $r(e){return decodeURI(e).replace(Sa,"").replace(xa,"$1")}function Aa(e){return hi.test(e)}function Ra(e,t){var s,r,o,i,l,c,u;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Aa(f)&&Ta(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:mi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function gi(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Oa(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Oa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ia(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([o,i])=>o===n&&i[r[0]]===r[1])}function mi(e,t){return[...e.filter(n=>!Ia(t,n)),...t]}const La=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ma=/^[a-z]:/i;function Hr(e){const t=Ma.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(La,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const os=new Set;function Pa(e){if(os.size===0){const n=typeof process=="object"&&(rs==null?void 0:rs.VITE_EXTRA_EXTENSIONS)||(ss==null?void 0:ss.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>os.add(s))}const t=e.split(".").pop();return t==null||!os.has(t.toLowerCase())}const Na=Symbol(),ht=uo(na);function Su(e){const t=ne(()=>Ra(ht.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n?ba({storageKey:Ea,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Ne(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>gi(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:s,hash:ne(()=>r.value)}}function Fa(){const e=wt(Na);if(!e)throw new Error("vitepress data not properly injected in app");return e}function $a(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function jr(e){return hi.test(e)||!e.startsWith("/")?e:$a(ht.value.base,e)}function Ha(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/Coalesce/";t=Hr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Hr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let _n=[];function xu(e){_n.push(e),Un(()=>{_n=_n.filter(t=>t!==e)})}function ja(){let e=ht.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Vr(e,n);else if(Array.isArray(e))for(const s of e){const r=Vr(s,n);if(r){t=r;break}}return t}function Vr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Va=Symbol(),yi="http://a.com",Da=()=>({path:"/",component:null,data:pi});function Tu(e,t){const n=Nn(Da()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,u;l=is(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==is(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const f=new URL(l,yi),h=o=f.pathname;try{let w=await e(h);if(!w)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:A,__pageData:P}=w;if(!A)throw new Error(`Invalid route component: ${A}`);n.path=ge?h:jr(h),n.component=gn(A),n.data=gn(P),ge&&$n(()=>{let F=ht.value.base+P.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ht.value.cleanUrls&&!F.endsWith("/")&&(F+=".html"),F!==f.pathname&&(f.pathname=F,l=F+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(q){Dr(q,f.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!u)try{const A=await fetch(ht.value.base+"hashmap.json");window.__VP_HASH_MAP__=await A.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=ge?h:jr(h),n.component=t?gn(t):null,n.data=pi)}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:f}=u,{href:h,origin:m,pathname:w,hash:A,search:P}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),F=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===F.origin&&Pa(w)&&(l.preventDefault(),w===F.pathname&&P===F.search?(A!==F.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:F.href,newURL:h}))),A?Dr(u,A,u.classList.contains("header-anchor")):window.scrollTo(0,0)):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(is(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ua(){const e=wt(Va);if(!e)throw new Error("useRouter() is called without provider.");return e}function _i(){return Ua().route}function Dr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-ja()+o;requestAnimationFrame(r)}}function is(e){const t=new URL(e,yi);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ht.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ls=()=>_n.forEach(e=>e()),Au=Hs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=_i(),{site:n}=Fa();return()=>Es(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Es(t.component,{onVnodeMounted:ls,onVnodeUpdated:ls,onVnodeUnmounted:ls}):"404 Page Not Found"])}}),ka="modulepreload",Ba=function(e){return"/Coalesce/"+e},Ur={},Ru=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=Ba(c),c in Ur)return;Ur[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const h=document.createElement("link");if(h.rel=u?"stylesheet":ka,u||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),u)return new Promise((m,w)=>{h.addEventListener("load",m),h.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})},Ou=Hs({setup(e,{slots:t}){const n=oe(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Iu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const o=s.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[r];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Lu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,o=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Ka(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ka(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Mu(e,t){let n=!0,s=[];const r=o=>{if(n){n=!1,o.forEach(l=>{const c=cs(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const i=o.map(cs);s.forEach((l,c)=>{const u=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete s[c])}),i.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...i].filter(Boolean)};So(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=gi(i,o);u!==document.title&&(document.title=u);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):cs(["meta",{name:"description",content:f}]),r(mi(i.head,qa(c)))})}function cs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Wa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function qa(e){return e.filter(t=>!Wa(t))}const as=new Set,vi=()=>document.createElement("link"),Ga=e=>{const t=vi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},za=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let dn;const Xa=ge&&(dn=vi())&&dn.relList&&dn.relList.supports&&dn.relList.supports("prefetch")?Ga:za;function Pu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!as.has(c)){as.add(c);const u=Ha(c);u&&Xa(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):as.add(l))})})};xt(s);const r=_i();Ne(()=>r.path,s),Un(()=>{n&&n.disconnect()})}export{lu as $,nu as A,Hl as B,ja as C,eu as D,ou as E,ye as F,uo as G,xu as H,se as I,tu as J,hi as K,_i as L,hc as M,wt as N,Cu as O,As as P,bu as Q,$n as R,Eu as S,ei as T,ge as U,Fn as V,ru as W,Ru as X,wu as Y,Jl as Z,vu as _,Yo as a,yu as a0,mu as a1,cu as a2,Nn as a3,Ja as a4,su as a5,hu as a6,uu as a7,Es as a8,du as a9,pu as aa,gu as ab,Mu as ac,Va as ad,Su as ae,Na as af,Au as ag,Ou as ah,ht as ai,_u as aj,Tu as ak,Ha as al,Pu as am,Lu as an,Iu as ao,Ua as ap,Go as b,au as c,Hs as d,fu as e,Pa as f,jr as g,ne as h,Aa as i,oe as j,xt as k,Xo as l,ho as m,Rs as n,Wo as o,Qa as p,Za as q,iu as r,Ta as s,Ya as t,Fa as u,ai as v,vl as w,Ne as x,So as y,Un as z}; diff --git a/assets/chunks/fsharp.COWl2xCs.js b/assets/chunks/fsharp.COWl2xCs.js new file mode 100644 index 000000000..4b611d1c3 --- /dev/null +++ b/assets/chunks/fsharp.COWl2xCs.js @@ -0,0 +1 @@ +import e from"./markdown.BdfWgkoX.js";const a=Object.freeze({displayName:"F#",name:"fsharp",patterns:[{include:"#compiler_directives"},{include:"#comments"},{include:"#constants"},{include:"#strings"},{include:"#chars"},{include:"#double_tick"},{include:"#definition"},{include:"#abstract_definition"},{include:"#attributes"},{include:"#modules"},{include:"#anonymous_functions"},{include:"#du_declaration"},{include:"#record_declaration"},{include:"#records"},{include:"#strp_inlined"},{include:"#keywords"},{include:"#cexprs"},{include:"#text"}],repository:{abstract_definition:{begin:"\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(<)?",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"keyword.fsharp"},3:{name:"support.function.attribute.fsharp"},5:{name:"keyword.symbol.fsharp"}},end:"\\s*(with)\\b|=|$",endCaptures:{1:{name:"keyword.fsharp"}},name:"abstract.definition.fsharp",patterns:[{include:"#comments"},{include:"#common_declaration"},{captures:{1:{name:"keyword.symbol.fsharp"},2:{name:"variable.parameter.fsharp"},3:{name:"keyword.symbol.fsharp"},4:{name:"entity.name.type.fsharp"}},match:"(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)((?!with\\b)\\b([\\w0-9'`^._ ]+)){0,1}"},{captures:{1:{name:"entity.name.type.fsharp"}},comments:"Here we need the \\w modifier in order to check that the words isn't blacklisted",match:"(?!with|get|set\\b)\\s*([\\w0-9'`^._]+)"},{include:"#keywords"}]},anonymous_functions:{patterns:[{begin:"\\b(fun)\\b",beginCaptures:{1:{name:"keyword.fsharp"}},end:"(->)",endCaptures:{1:{name:"keyword.symbol.arrow.fsharp"}},name:"function.anonymous",patterns:[{include:"#comments"},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"\\s*(?=(->))",endCaptures:{1:{name:"keyword.symbol.arrow.fsharp"}},patterns:[{include:"#member_declaration"}]},{include:"#variables"}]}]},anonymous_record_declaration:{begin:"(\\{\\|)",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\|\\})",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"keyword.symbol.fsharp"}},match:"[[:alpha:]0-9'`^_ ]+(:)"},{captures:{1:{name:"entity.name.type.fsharp"}},match:"([[:alpha:]0-9'`^_ ]+)"},{include:"#anonymous_record_declaration"},{include:"#keywords"}]},attributes:{patterns:[{begin:"\\[\\<",end:"\\>\\]|\\]",name:"support.function.attribute.fsharp",patterns:[{include:"$self"}]}]},cexprs:{patterns:[{captures:{0:{name:"keyword.fsharp"}},match:"\\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)(?=\\s*\\{)",name:"cexpr.fsharp"}]},chars:{patterns:[{captures:{1:{name:"string.quoted.single.fsharp"}},match:"('\\\\?.')",name:"char.fsharp"}]},comments:{patterns:[{beginCaptures:{1:{name:"comment.block.fsharp"}},match:"(\\(\\*{3}.*\\*{3}\\))",name:"comment.literate.command.fsharp"},{begin:"^\\s*(\\(\\*\\*(?!\\)))((?!\\*\\)).)*$",beginCaptures:{1:{name:"comment.block.fsharp"}},endCaptures:{1:{name:"comment.block.fsharp"}},name:"comment.block.markdown.fsharp",patterns:[{include:"text.html.markdown"}],while:"^(?!\\s*(\\*)+\\)\\s*$)"},{begin:"(\\(\\*(?!\\)))",beginCaptures:{1:{name:"comment.block.fsharp"}},end:"(\\*+\\))",endCaptures:{1:{name:"comment.block.fsharp"}},name:"comment.block.fsharp",patterns:[{comments:"Capture // when inside of (* *) like that the rule which capture comments starting by // is not trigger. See https://github.com/ionide/ionide-fsgrammar/issues/155",match:"//",name:"fast-capture.comment.line.double-slash.fsharp"},{comments:"Capture (*) when inside of (* *) so that it doesn't prematurely end the comment block.",match:"\\(\\*\\)",name:"fast-capture.comment.line.mul-operator.fsharp"},{include:"#comments"}]},{captures:{1:{name:"comment.block.fsharp"}},match:"((??@^|/])///(?!/)",name:"comment.line.markdown.fsharp",patterns:[{include:"text.html.markdown"}],while:"(??@^|/])///(?!/)"},{match:"(??@^|/])//(.*$)",name:"comment.line.double-slash.fsharp"}]},common_binding_definition:{patterns:[{include:"#comments"},{include:"#attributes"},{begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"keyword.symbol.fsharp"},3:{name:"keyword.fsharp"}},comments:"SRTP syntax support",end:"(\\))\\s*((?=,)|(?=\\=))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(\\^[[:alpha:]0-9'._]+)"},{include:"#variables"},{include:"#keywords"}]},{begin:"(:)\\s*(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"keyword.symbol.fsharp"}},end:"(\\)\\s*(([?[:alpha:]0-9'`^._ ]*)))",endCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"entity.name.type.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(:)\\s*(\\^[[:alpha:]0-9'._]+)\\s*(when)",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"entity.name.type.fsharp"},3:{name:"keyword.fsharp"}},end:"(?=:)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{match:"\\b(and|when|or)\\b",name:"keyword.fsharp"},{captures:{1:{name:"entity.name.type.fsharp"}},comment:"Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition",match:"([[:alpha:]0-9'^._]+)"},{match:"(\\(|\\))",name:"keyword.symbol.fsharp"}]},{captures:{1:{name:"keyword.symbol.fsharp"},2:{name:"entity.name.type.fsharp"}},match:"(:)\\s*([?[:alpha:]0-9'`^._ ]+)"},{captures:{1:{name:"keyword.symbol.arrow.fsharp"},2:{name:"keyword.symbol.fsharp"},3:{name:"entity.name.type.fsharp"}},match:"(->)\\s*(\\()?\\s*([?[:alpha:]0-9'`^._ ]+)*"},{begin:"(\\*)\\s*(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"keyword.symbol.fsharp"}},end:"(\\)\\s*(([?[:alpha:]0-9'`^._ ]+))+)",endCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"entity.name.type.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(\\*)(\\s*([?[:alpha:]0-9'`^._ ]+))*",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"entity.name.type.fsharp"}},end:"(?==)|(?=\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(<+(?![[:space:]]*\\)))",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},beginComment:"The group (?![[:space:]]*\\) is for protection against overload operator. static member (<)",end:"((?|\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},endComment:"The group (? when using SRTP synthax",patterns:[{include:"#generic_declaration"}]},{include:"#anonymous_record_declaration"},{begin:"({)",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(})",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#record_signature"}]},{include:"#definition"},{include:"#variables"},{include:"#keywords"}]},common_declaration:{patterns:[{begin:"\\s*(->)\\s*([[:alpha:]0-9'`^._ ]+)(<)",beginCaptures:{1:{name:"keyword.symbol.arrow.fsharp"},2:{name:"entity.name.type.fsharp"},3:{name:"keyword.symbol.fsharp"}},end:"(>)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"([[:alpha:]0-9'`^._ ]+)"},{include:"#keywords"}]},{captures:{1:{name:"keyword.symbol.arrow.fsharp"},2:{name:"entity.name.type.fsharp"}},match:"\\s*(->)\\s*(?!with|get|set\\b)\\b([\\w0-9'`^._]+)"},{include:"#anonymous_record_declaration"},{begin:"(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([?[:alpha:]0-9'`^._ ]+)(<))",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"variable.parameter.fsharp"},3:{name:"keyword.symbol.fsharp"},4:{name:"keyword.symbol.fsharp"},5:{name:"entity.name.type.fsharp"}},end:"(>)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"([[:alpha:]0-9'`^._ ]+)"},{include:"#keywords"}]}]},compiler_directives:{patterns:[{captures:{},match:"\\s?(#if|#elif|#elseif|#else|#endif|#light|#nowarn)",name:"keyword.control.directive.fsharp"}]},constants:{patterns:[{match:"\\(\\)",name:"keyword.symbol.fsharp"},{match:"\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))",name:"constant.numeric.float.fsharp"},{match:"\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))",name:"constant.numeric.integer.nativeint.fsharp"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.fsharp"},{match:"\\b(null|void)\\b",name:"constant.other.fsharp"}]},definition:{patterns:[{begin:"\\b(let mutable|static let mutable|static let|let inline|let|and|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"keyword.fsharp"},3:{name:"support.function.attribute.fsharp"},4:{name:"storage.modifier.fsharp"},5:{name:"variable.fsharp"}},end:"\\s*((with\\b)|(=|\\n+=|(?<=\\=)))",endCaptures:{2:{name:"keyword.fsharp"},3:{name:"keyword.symbol.fsharp"}},name:"binding.fsharp",patterns:[{include:"#common_binding_definition"}]},{begin:"\\b(use|use!|and|and!)\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",beginCaptures:{1:{name:"keyword.fsharp"}},end:"\\s*(=)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},name:"binding.fsharp",patterns:[{include:"#common_binding_definition"}]},{begin:"(?<=with|and)\\s*\\b((get|set)\\s*(?=\\())(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",beginCaptures:{4:{name:"variable.fsharp"}},end:"\\s*(=|\\n+=|(?<=\\=))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},name:"binding.fsharp",patterns:[{include:"#common_binding_definition"}]},{begin:"\\b(static val mutable|val mutable|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"keyword.fsharp"},3:{name:"support.function.attribute.fsharp"},4:{name:"storage.modifier.fsharp"},5:{name:"variable.fsharp"}},end:"\\n$",name:"binding.fsharp",patterns:[{include:"#common_binding_definition"}]},{begin:"\\b(new)\\b\\s+(\\()",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},name:"binding.fsharp",patterns:[{include:"#common_binding_definition"}]}]},double_tick:{patterns:[{captures:{1:{name:"string.quoted.single.fsharp"},2:{name:"variable.other.binding.fsharp"},3:{name:"string.quoted.single.fsharp"}},match:"(``)([^`]*)(``)",name:"variable.other.binding.fsharp"}]},du_declaration:{patterns:[{begin:"\\b(of)\\b",beginCaptures:{1:{name:"keyword.fsharp"}},end:"$|(\\|)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},name:"du_declaration.fsharp",patterns:[{include:"#comments"},{captures:{1:{name:"variable.parameter.fsharp"},2:{name:"keyword.symbol.fsharp"},3:{name:"entity.name.type.fsharp"}},match:"([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)"},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)"},{include:"#anonymous_record_declaration"},{include:"#keywords"}]}]},generic_declaration:{patterns:[{begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"keyword.symbol.fsharp"},3:{name:"keyword.fsharp"}},comments:"SRTP syntax support",end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(('|\\^)[[:alpha:]0-9'._]+)"},{include:"#variables"},{include:"#keywords"}]},{match:"\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b",name:"keyword.fsharp"},{match:":",name:"keyword.symbol.fsharp"},{include:"#constants"},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(('|\\^)[[:alpha:]0-9'._]+)"},{begin:"(<)",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(>)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(('|\\^)[[:alpha:]0-9'._]+)"},{include:"#tuple_signature"},{include:"#generic_declaration"}]},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(([?[:alpha:]0-9'`^._ ]+))+"},{include:"#tuple_signature"}]},{captures:{1:{name:"entity.name.type.fsharp"}},comments:"Here we need the \\w modifier in order to check that the words are allowed",match:"(?!when|and|or\\b)\\b([\\w0-9'`^._]+)"},{captures:{1:{name:"keyword.symbol.fsharp"}},comments:"Prevent captures of `|>` as a keyword when defining custom operator like `<|>`",match:"(\\|)"},{include:"#keywords"}]},keywords:{patterns:[{match:"\\b(private|public|internal)\\b",name:"storage.modifier"},{match:"\\b(private|to|public|internal|function|class|exception|delegate|of|new|as|begin|end|inherit|let!|interface|abstract|enum|member|and|when|or|use|use\\!|struct|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b",name:"keyword.fsharp"},{match:"\\b(match|yield|yield!|with|if|then|else|elif|for|in|return!|return|try|finally|while|do)(?!')\\b",name:"keyword.control"},{match:"(\\->|\\<\\-)",name:"keyword.symbol.arrow.fsharp"},{match:"(&&&|\\|\\|\\||\\^\\^\\^|~~~|~\\+|~\\-|<<<|>>>|\\|>|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|&|%|{|}|\\||_|\\.\\.|\\,|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\(|\\)|\\<\\<)",name:"keyword.symbol.fsharp"}]},member_declaration:{patterns:[{include:"#comments"},{include:"#common_declaration"},{begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{1:{name:"keyword.symbol.fsharp"},2:{name:"keyword.symbol.fsharp"},3:{name:"keyword.fsharp"}},comments:"SRTP syntax support",end:"(\\))\\s*((?=,)|(?=\\=))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(\\^[[:alpha:]0-9'._]+)"},{include:"#variables"},{include:"#keywords"}]},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(\\^[[:alpha:]0-9'._]+)"},{match:"\\b(and|when|or)\\b",name:"keyword.fsharp"},{match:"(\\(|\\))",name:"keyword.symbol.fsharp"},{captures:{1:{name:"keyword.symbol.fsharp"},2:{name:"variable.parameter.fsharp"},3:{name:"keyword.symbol.fsharp"},4:{name:"entity.name.type.fsharp"}},match:"(\\?{0,1})([[:alpha:]0-9'`^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\\s*(:{0,1})(\\s*([?[:alpha:]0-9'`<>._ ]+)){0,1}"},{include:"#keywords"}]},modules:{patterns:[{begin:"\\b(namespace global)|\\b(namespace|module)\\s*(public|internal|private|rec)?\\s+([[:alpha:]|``][[:alpha:]0-9'_. ]*)",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"keyword.fsharp"},3:{name:"storage.modifier.fsharp"},4:{name:"entity.name.section.fsharp"}},end:"(\\s?=|\\s|$)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},name:"entity.name.section.fsharp",patterns:[{captures:{1:{name:"punctuation.separator.namespace-reference.fsharp"},2:{name:"entity.name.section.fsharp"}},match:"(\\.)([A-Z][[:alpha:]0-9'_]*)",name:"entity.name.section.fsharp"}]},{begin:"\\b(open type|open)\\s+([[:alpha:]|``][[:alpha:]0-9'_]*)(?=(\\.[A-Z][[:alpha:]0-9_]*)*)",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"entity.name.section.fsharp"}},end:"(\\s|$)",name:"namespace.open.fsharp",patterns:[{captures:{1:{name:"punctuation.separator.namespace-reference.fsharp"},2:{name:"entity.name.section.fsharp"}},match:"(\\.)([[:alpha:]][[:alpha:]0-9'_]*)",name:"entity.name.section.fsharp"},{include:"#comments"}]},{begin:"^\\s*(module)\\s+([A-Z][[:alpha:]0-9'_]*)\\s*(=)\\s*([A-Z][[:alpha:]0-9'_]*)",beginCaptures:{1:{name:"keyword.fsharp"},2:{name:"entity.name.type.namespace.fsharp"},3:{name:"keyword.symbol.fsharp"},4:{name:"entity.name.section.fsharp"}},end:"(\\s|$)",name:"namespace.alias.fsharp",patterns:[{captures:{1:{name:"punctuation.separator.namespace-reference.fsharp"},2:{name:"entity.name.section.fsharp"}},match:"(\\.)([A-Z][[:alpha:]0-9'_]*)",name:"entity.name.section.fsharp"}]}]},record_declaration:{patterns:[{begin:"(\\{)",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(?<=\\})",patterns:[{include:"#comments"},{begin:"(((mutable)\\s[[:alpha:]]+)|[[:alpha:]0-9'`<>^._]*)\\s*((?)",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(('|\\^)``[[:alpha:]0-9`^:,._ ]+``|('|\\^)[[:alpha:]0-9`^:._]+)"},{match:"\\b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\\b",name:"keyword.fsharp"},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"keyword.fsharp"}},match:"(static member|member|new)"},{include:"#common_binding_definition"}]},{captures:{1:{name:"entity.name.type.fsharp"}},comments:"Here we need the \\w modifier in order to check that the words isn't blacklisted",match:"([\\w0-9'`^._]+)"},{include:"#keywords"}]},{captures:{1:{name:"storage.modifier.fsharp"}},match:"\\s*(private|internal|public)"},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"\\s*(?=(=)|[\\n=]|(\\(\\))|(as))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{include:"#keywords"}]}]},string_formatter:{patterns:[{captures:{1:{name:"keyword.format.specifier.fsharp"}},match:"(%0?-?(\\d+)?((a|t)|(\\.\\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\\+?A)))",name:"entity.name.type.format.specifier.fsharp"}]},strings:{patterns:[{begin:'(?=[^\\\\])(@")',beginCaptures:{1:{name:"punctuation.definition.string.begin.fsharp"}},end:'(")(?!")',endCaptures:{1:{name:"punctuation.definition.string.end.fsharp"}},name:"string.quoted.literal.fsharp",patterns:[{match:'"(")',name:"constant.character.string.escape.fsharp"}]},{begin:'(?=[^\\\\])(""")',beginCaptures:{1:{name:"punctuation.definition.string.begin.fsharp"}},end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.fsharp"}},name:"string.quoted.triple.fsharp",patterns:[{include:"#string_formatter"}]},{begin:'(?=[^\\\\])(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.fsharp"}},end:'(")',endCaptures:{1:{name:"punctuation.definition.string.end.fsharp"}},name:"string.quoted.double.fsharp",patterns:[{match:"\\\\$[ \\t]*",name:"punctuation.separator.string.ignore-eol.fsharp"},{match:`\\\\(['"\\\\abfnrtv]|([01][0-9][0-9]|2[0-4][0-9]|25[0-5])|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U00(0[0-9a-fA-F]|10)[0-9a-fA-F]{4}))`,name:"constant.character.string.escape.fsharp"},{match:"\\\\(([0-9]{1,3})|(x[^\\s]{0,2})|(u[^\\s]{0,4})|(U[^\\s]{0,8})|[^\\s])",name:"invalid.illegal.character.string.fsharp"},{include:"#string_formatter"}]}]},strp_inlined:{patterns:[{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#strp_inlined_body"}]}]},strp_inlined_body:{patterns:[{include:"#comments"},{include:"#anonymous_functions"},{captures:{1:{name:"entity.name.type.fsharp"}},match:"(\\^[[:alpha:]0-9'._]+)"},{match:"\\b(and|when|or)\\b",name:"keyword.fsharp"},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{include:"#strp_inlined_body"}]},{captures:{1:{name:"keyword.fsharp"},2:{name:"variable.fsharp"},3:{name:"keyword.symbol.fsharp"}},match:"(static member|member)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)"},{include:"#compiler_directives"},{include:"#constants"},{include:"#strings"},{include:"#chars"},{include:"#double_tick"},{include:"#keywords"},{include:"#text"},{include:"#definition"},{include:"#attributes"},{include:"#keywords"},{include:"#cexprs"},{include:"#text"}]},text:{patterns:[{match:"\\\\",name:"text.fsharp"}]},tuple_signature:{patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(([?[:alpha:]0-9'`^._ ]+))+"},{begin:"(\\()",beginCaptures:{1:{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{1:{name:"keyword.symbol.fsharp"}},patterns:[{captures:{1:{name:"entity.name.type.fsharp"}},match:"(([?[:alpha:]0-9'`^._ ]+))+"},{include:"#tuple_signature"}]},{include:"#keywords"}]},variables:{patterns:[{match:"\\(\\)",name:"keyword.symbol.fsharp"},{captures:{1:{name:"keyword.symbol.fsharp"},2:{name:"variable.parameter.fsharp"}},match:"(\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private|struct\\b)\\b[\\w[:alpha:]0-9'`<>^._ ]+)"}]}},scopeName:"source.fsharp",embeddedLangs:["markdown"],aliases:["f#","fs"]});var t=[...e,a];export{t as default}; diff --git a/assets/chunks/gdresource.Dyo1-XBj.js b/assets/chunks/gdresource.Dyo1-XBj.js new file mode 100644 index 000000000..22ab0110c --- /dev/null +++ b/assets/chunks/gdresource.Dyo1-XBj.js @@ -0,0 +1 @@ +import e from"./gdshader.B_SUYfiV.js";import r from"./gdscript.CoEqzGFw.js";const a=Object.freeze({displayName:"GDResource",name:"gdresource",patterns:[{include:"#embedded_shader"},{include:"#embedded_gdscript"},{include:"#comment"},{include:"#heading"},{include:"#key_value"}],repository:{comment:{captures:{1:{name:"punctuation.definition.comment.gdresource"}},match:"(;).*$\\n?",name:"comment.line.gdresource"},data:{patterns:[{include:"#comment"},{begin:"(?|\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~|!",name:"keyword.operator.arithmetic.gdscript"},assignment_operator:{match:"=",name:"keyword.operator.assignment.gdscript"},base_expression:{patterns:[{include:"#builtin_get_node_shorthand"},{include:"#nodepath_object"},{include:"#nodepath_function"},{include:"#strings"},{include:"#const_vars"},{include:"#keywords"},{include:"#logic_operator"},{include:"#compare_operator"},{include:"#arithmetic_operator"},{include:"#lambda_declaration"},{include:"#class_declaration"},{include:"#variable_declaration"},{include:"#signal_declaration_bare"},{include:"#signal_declaration"},{include:"#function_declaration"},{include:"#statement_keyword"},{include:"#assignment_operator"},{include:"#in_keyword"},{include:"#control_flow"},{include:"#round_braces"},{include:"#function_call"},{include:"#comment"},{include:"#self"},{include:"#func"},{include:"#letter"},{include:"#numbers"},{include:"#builtin_classes"},{include:"#pascal_case_class"},{include:"#line_continuation"}]},builtin_classes:{match:"(?=|==|<|>|!=",name:"keyword.operator.comparison.gdscript"},const_vars:{match:"\\b([A-Z_][A-Z_0-9]*)\\b",name:"constant.language.gdscript"},control_flow:{match:"\\b(?:if|elif|else|while|break|continue|pass|return|match|yield|await)\\b",name:"keyword.control.gdscript"},expression:{patterns:[{include:"#base_expression"},{include:"#getter_setter_godot4"},{include:"#assignment_operator"},{include:"#annotations"},{include:"#class_name"},{include:"#builtin_classes"},{include:"#class_new"},{include:"#class_is"},{include:"#class_enum"},{include:"#any_method"},{include:"#any_variable"},{include:"#any_property"}]},extends_statement:{captures:{1:{name:"keyword.language.gdscript"},2:{name:"entity.other.inherited-class.gdscript"}},match:"(extends)\\s+([a-zA-Z_]\\w*\\.[a-zA-Z_]\\w*)?"},func:{match:"\\bfunc\\b",name:"keyword.language.gdscript"},function_arguments:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.gdscript"}},contentName:"meta.function.parameters.gdscript",end:"(?=\\))(?!\\)\\s*\\()",patterns:[{match:"(,)",name:"punctuation.separator.arguments.gdscript"},{captures:{1:{name:"variable.parameter.function-call.gdscript"},2:{name:"keyword.operator.assignment.gdscript"}},match:"\\b([a-zA-Z_]\\w*)\\s*(=)(?!=)"},{match:"=(?!=)",name:"keyword.operator.assignment.gdscript"},{include:"#base_expression"},{captures:{1:{name:"punctuation.definition.arguments.end.gdscript"},2:{name:"punctuation.definition.arguments.begin.gdscript"}},match:"\\s*(\\))\\s*(\\()"},{include:"#letter"},{include:"#any_variable"},{include:"#any_property"},{include:"#keywords"}]},function_call:{begin:`(?x) +\\b(?= +([a-zA-Z_]\\w*) \\s* (\\() +) +`,beginCaptures:{2:{name:"punctuation.definition.arguments.begin.gdscript"}},comment:'Regular function call of the type "name(args)"',end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.gdscript"}},name:"meta.function-call.gdscript",patterns:[{include:"#function_name"},{include:"#function_arguments"}]},function_declaration:{begin:`(?x) \\s* +(func) \\s+ +([a-zA-Z_]\\w*) \\s* +(?=\\()`,beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,end2:"(\\s*(\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:)",endCaptures2:{1:{name:"punctuation.separator.annotation.result.gdscript"},2:{name:"keyword.language.void.gdscript"},3:{name:"entity.name.type.class.gdscript markup.italic"}},name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"},{include:"#base_expression"}]},function_name:{patterns:[{include:"#builtin_classes"},{comment:"Some color schemas support meta.function-call.generic scope",match:`(?x) +\\b ([a-zA-Z_]\\w*) \\b +`,name:"support.function.any-method.gdscript"}]},getter_setter_godot4:{patterns:[{captures:{1:{name:"entity.name.function.gdscript"}},match:"\\b(get):"},{begin:`(?x) \\s+ +(set) \\s* +(?=\\()`,beginCaptures:{1:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"}]}]},in_keyword:{patterns:[{begin:"\\b(for)\\b",captures:{1:{name:"keyword.control.gdscript"}},end:":",patterns:[{match:"\\bin\\b",name:"keyword.control.gdscript"},{include:"#base_expression"},{include:"#any_variable"},{include:"#any_property"}]},{match:"\\bin\\b",name:"keyword.operator.wordlike.gdscript"}]},keywords:{match:"\\b(?:class|class_name|is|onready|tool|static|export|as|void|enum|preload|assert|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace)\\b",name:"keyword.language.gdscript"},lambda_declaration:{begin:"(func)\\s?(?=\\()",beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`(:|(?=[#'"\\n]))`,end2:"(\\s*(\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:)",endCaptures2:{1:{name:"punctuation.separator.annotation.result.gdscript"},2:{name:"keyword.language.void.gdscript"},3:{name:"entity.name.type.class.gdscript markup.italic"}},name:"meta.function.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"},{include:"#base_expression"},{include:"#any_variable"},{include:"#any_property"}]},letter:{match:"\\b(?:true|false|null)\\b",name:"constant.language.gdscript"},line_continuation:{patterns:[{captures:{1:{name:"punctuation.separator.continuation.line.gdscript"},2:{name:"invalid.illegal.line.continuation.gdscript"}},match:"(\\\\)\\s*(\\S.*$\\n?)"},{begin:"(\\\\)\\s*$\\n?",beginCaptures:{1:{name:"punctuation.separator.continuation.line.gdscript"}},end:`(?x) +(?=^\\s*$) +| +(?! (\\s* [rR]? (\\'\\'\\'|\\"\\"\\"|\\'|\\")) +| +(\\G $) (?# '\\G' is necessary for ST) +) +`,patterns:[{include:"#base_expression"}]}]},logic_operator:{match:"\\b(and|or|not|!)\\b",name:"keyword.operator.wordlike.gdscript"},loose_default:{begin:"(=)",beginCaptures:{1:{name:"keyword.operator.gdscript"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.gdscript"}},patterns:[{include:"#base_expression"}]},nodepath_function:{begin:"(get_node_or_null|has_node|has_node_and_resource|find_node|get_node)\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.gdscript"},2:{name:"punctuation.definition.parameters.begin.gdscript"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.gdscript"}},patterns:[{begin:`("|')`,end:"\\1",name:"string.quoted.gdscript meta.literal.nodepath.gdscript constant.character.escape",patterns:[{match:"%",name:"keyword.control.flow"}]}]},nodepath_object:{begin:"(NodePath)\\s*(?:\\()",beginCaptures:{1:{name:"support.class.library.gdscript"}},end:"(?:\\))",name:"meta.literal.nodepath.gdscript",patterns:[{begin:`("|')`,end:"\\1",name:"string.quoted.gdscript constant.character.escape.gdscript",patterns:[{match:"%",name:"keyword.control.flow.gdscript"}]}]},numbers:{patterns:[{match:"0b[01_]+",name:"constant.numeric.integer.binary.gdscript"},{match:"0x[0-9A-Fa-f_]+",name:"constant.numeric.integer.hexadecimal.gdscript"},{match:"[-]?([0-9][0-9_]+\\.[0-9_]*(e[\\-\\+]?[0-9_]+)?)",name:"constant.numeric.float.gdscript"},{match:"[-]?(\\.[0-9][0-9_]*(e[\\-\\+]?[0-9_]+)?)",name:"constant.numeric.float.gdscript"},{match:"[-]?([0-9][0-9_]*e[\\-\\+]?\\[0-9_])",name:"constant.numeric.float.gdscript"},{match:"[-]?[0-9][0-9_]*",name:"constant.numeric.integer.gdscript"}]},parameters:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.gdscript"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.gdscript"}},name:"meta.function.parameters.gdscript",patterns:[{include:"#annotated_parameter"},{captures:{1:{name:"variable.parameter.function.language.gdscript"},2:{name:"punctuation.separator.parameters.gdscript"}},match:`(?x) +([a-zA-Z_]\\w*) +\\s* (?: (,) | (?=[)#\\n=])) +`},{include:"#comment"},{include:"#loose_default"}]},pascal_case_class:{match:"\\b([A-Z][a-z_0-9]*([A-Z]?[a-z_0-9]+)*[A-Z]?)\\b",name:"entity.name.type.class.gdscript"},round_braces:{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.begin.gdscript"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.end.gdscript"}},patterns:[{include:"#base_expression"},{include:"#any_variable"}]},self:{match:"\\bself\\b",name:"variable.language.gdscript"},signal_declaration:{begin:`(?x) \\s* +(signal) \\s+ +([a-zA-Z_]\\w*) \\s* +(?=\\()`,beginCaptures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},end:`((?=[#'"\\n]))`,name:"meta.signal.gdscript",patterns:[{include:"#parameters"},{include:"#line_continuation"}]},signal_declaration_bare:{captures:{1:{name:"keyword.language.gdscript storage.type.function.gdscript"},2:{name:"entity.name.function.gdscript"}},match:`(?x) \\s* +(signal) \\s+ +([a-zA-Z_]\\w*)(?=[\\n\\s])`,name:"meta.signal.gdscript"},statement:{patterns:[{include:"#extends_statement"}]},statement_keyword:{patterns:[{match:`(?x) +\\b(?\\>\\=?|[-+*/&|<>=!]\\=|\\&\\&|[|][|]|[-+~!*/%<>&^|=]",name:"keyword.operator.gdshader"},precisionKeyword:{match:"\\b(?:low|medium|high)p\\b",name:"storage.type.built-in.primitive.precision.gdshader"},processorFunction:{match:"\\b(?:vertex|fragment|light|start|process|sky|fog)(?=(?:\\s|/\\*(?:\\*(?!/)|[^*])*\\*/)*[(])",name:"support.function.gdshader"},separator:{patterns:[{match:"[.]",name:"punctuation.accessor.gdshader"},{include:"#separatorComma"},{match:"[;]",name:"punctuation.terminator.statement.gdshader"},{match:"[:]",name:"keyword.operator.type.annotation.gdshader"}]},separatorComma:{match:"[,]",name:"punctuation.separator.comma.gdshader"},structDefinition:{begin:"(?=\\b(?:struct)\\b)",end:"(?<=;)",patterns:[{include:"#comment"},{include:"#keyword"},{include:"#structName"},{include:"#structDefinitionBlock"},{include:"#separator"}]},structDefinitionBlock:{begin:"\\{",captures:{0:{name:"punctuation.definition.block.struct.gdshader"}},end:"\\}",name:"meta.definition.block.struct.gdshader",patterns:[{include:"#comment"},{include:"#precisionKeyword"},{include:"#fieldDefinition"},{include:"#keyword"},{include:"#any"}]},structKeyword:{match:"\\b(?:struct)\\b",name:"keyword.other.struct.gdshader"},structName:{match:"\\b[a-zA-Z_]\\w*\\b",name:"entity.name.type.struct.gdshader"},swizzling:{captures:{1:{name:"punctuation.accessor.gdshader"},2:{name:"variable.other.property.gdshader"}},match:"([.])\\s*([xyzw]{2,4}|[rgba]{2,4}|[stpq]{2,4})\\b"},typeKeyword:{match:"\\b(?:void|bool|[biu]?vec[234]|u?int|float|mat[234]|[iu]?sampler(?:3D|2D(?:Array)?)|samplerCube)\\b",name:"support.type.gdshader"}},scopeName:"source.gdshader"});var a=[e];export{a as default}; diff --git a/assets/chunks/gherkin.DjTlIhuc.js b/assets/chunks/gherkin.DjTlIhuc.js new file mode 100644 index 000000000..8a5a72d06 --- /dev/null +++ b/assets/chunks/gherkin.DjTlIhuc.js @@ -0,0 +1 @@ +const u=Object.freeze({displayName:"Gherkin",fileTypes:["feature"],firstLineMatch:"기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd(.*)",foldingStartMarker:"^\\s*\\b(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra)",foldingStopMarker:"^\\s*$",name:"gherkin",patterns:[{include:"#feature_element_keyword"},{include:"#feature_keyword"},{include:"#step_keyword"},{include:"#strings_triple_quote"},{include:"#strings_single_quote"},{include:"#strings_double_quote"},{include:"#comments"},{include:"#tags"},{include:"#scenario_outline_variable"},{include:"#table"}],repository:{comments:{captures:{0:{name:"comment.line.number-sign"}},match:"^\\s*(#.*)"},feature_element_keyword:{captures:{1:{name:"keyword.language.gherkin.feature.scenario"},2:{name:"string.language.gherkin.scenario.title.title"}},match:"^\\s*(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra):(.*)"},feature_keyword:{captures:{1:{name:"keyword.language.gherkin.feature"},2:{name:"string.language.gherkin.feature.title"}},match:"^\\s*(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Ability|Egenskap|Egenskab|Crikey|Característica|Arwedd):(.*)\\b"},scenario_outline_variable:{match:"<[a-zA-Z0-9 _-]*>",name:"variable.other"},step_keyword:{captures:{1:{name:"keyword.language.gherkin.feature.step"}},match:"^\\s*(En |و |Y |E |Եվ |Ya |Too right |Və |Həm |A |И |而且 |并且 |同时 |並且 |同時 |Ak |Epi |A také |Og |😂 |And |Kaj |Ja |Et que |Et qu' |Et |და |Und |Και |અને |וגם |और |तथा |És |Dan |Agus |かつ |Lan |ಮತ್ತು |'ej |latlh |그리고 |AN |Un |Ir |an |a |Мөн |Тэгээд |Ond |7 |ਅਤੇ |Aye |Oraz |Si |Și |Şi |К тому же |Также |An |A tiež |A taktiež |A zároveň |In |Ter |Och |மேலும் |மற்றும் |Һәм |Вә |మరియు |และ |Ve |І |А також |Та |اور |Ва |Và |Maar |لكن |Pero |Բայց |Peru |Yeah nah |Amma |Ancaq |Ali |Но |Però |但是 |Men |Ale |😔 |But |Sed |Kuid |Mutta |Mais que |Mais qu' |Mais |მაგ­რამ |Aber |Αλλά |પણ |אבל |पर |परन्तु |किन्तु |De |En |Tapi |Ach |Ma |しかし |但し |ただし |Nanging |Ananging |ಆದರೆ |'ach |'a |하지만 |단 |BUT |Bet |awer |mä |No |Tetapi |Гэхдээ |Харин |Ac |ਪਰ |اما |Avast! |Mas |Dar |А |Иначе |Buh |Али |Toda |Ampak |Vendar |ஆனால் |Ләкин |Әмма |కాని |แต่ |Fakat |Ama |Але |لیکن |Лекин |Бирок |Аммо |Nhưng |Ond |Dan |اذاً |ثم |Alavez |Allora |Antonces |Ապա |Entós |But at the end of the day I reckon |O halda |Zatim |То |Aleshores |Cal |那么 |那麼 |Lè sa a |Le sa a |Onda |Pak |Så |🙏 |Then |Do |Siis |Niin |Alors |Entón |Logo |მაშინ |Dann |Τότε |પછી |אז |אזי |तब |तदा |Akkor |Þá |Maka |Ansin |ならば |Njuk |Banjur |ನಂತರ |vaj |그러면 |DEN |Tad |Tada |dann |Тогаш |Togash |Kemudian |Тэгэхэд |Үүний дараа |Tha |Þa |Ða |Tha the |Þa þe |Ða ðe |ਤਦ |آنگاه |Let go and haul |Wtedy |Então |Entao |Atunci |Затем |Тогда |Dun |Den youse gotta |Онда |Tak |Potom |Nato |Potem |Takrat |Entonces |அப்பொழுது |Нәтиҗәдә |అప్పుడు |ดังนั้น |O zaman |Тоді |پھر |تب |Унда |Thì |Yna |Wanneer |متى |عندما |Cuan |Եթե |Երբ |Cuando |It's just unbelievable |Əgər |Nə vaxt ki |Kada |Когато |Quan |当 |當 |Lè |Le |Kad |Když |Når |Als |🎬 |When |Se |Kui |Kun |Quand |Lorsque |Lorsqu' |Cando |როდესაც |Wenn |Όταν |ક્યારે |כאשר |जब |कदा |Majd |Ha |Amikor |Þegar |Ketika |Nuair a |Nuair nach |Nuair ba |Nuair nár |Quando |もし |Manawa |Menawa |ಸ್ಥಿತಿಯನ್ನು |qaSDI' |만일 |만약 |WEN |Ja |Kai |wann |Кога |Koga |Apabila |Хэрэв |Tha |Þa |Ða |ਜਦੋਂ |هنگامی |Blimey! |Jeżeli |Jeśli |Gdy |Kiedy |Cand |Când |Когда |Если |Wun |Youse know like when |Када |Кад |Keď |Ak |Ko |Ce |Če |Kadar |När |எப்போது |Әгәр |ఈ పరిస్థితిలో |เมื่อ |Eğer ki |Якщо |Коли |جب |Агар |Khi |Pryd |Gegewe |بفرض |Dau |Dada |Daus |Dadas |Դիցուք |Dáu |Daos |Daes |Y'know |Tutaq ki |Verilir |Dato |Дадено |Donat |Donada |Atès |Atesa |假如 |假设 |假定 |假設 |Sipoze |Sipoze ke |Sipoze Ke |Zadan |Zadani |Zadano |Pokud |Za předpokladu |Givet |Gegeven |Stel |😐 |Given |Donitaĵo |Komence |Eeldades |Oletetaan |Soit |Etant donné que |Etant donné qu' |Etant donné |Etant donnée |Etant donnés |Etant données |Étant donné que |Étant donné qu' |Étant donné |Étant donnée |Étant donnés |Étant données |Dado |Dados |მოცემული |Angenommen |Gegeben sei |Gegeben seien |Δεδομένου |આપેલ છે |בהינתן |अगर |यदि |चूंकि |Amennyiben |Adott |Ef |Dengan |Cuir i gcás go |Cuir i gcás nach |Cuir i gcás gur |Cuir i gcás nár |Data |Dati |Date |前提 |Nalika |Nalikaning |ನೀಡಿದ |ghu' noblu' |DaH ghu' bejlu' |조건 |먼저 |I CAN HAZ |Kad |Duota |ugeholl |Дадена |Dadeno |Dadena |Diberi |Bagi |Өгөгдсөн нь |Анх |Gitt |Thurh |Þurh |Ðurh |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |با فرض |Gangway! |Zakładając |Mając |Zakładając, że |Date fiind |Dat fiind |Dată fiind |Dati fiind |Dați fiind |Daţi fiind |Допустим |Дано |Пусть |Givun |Youse know when youse got |За дато |За дате |За дати |Za dato |Za date |Za dati |Pokiaľ |Za predpokladu |Dano |Podano |Zaradi |Privzeto |கொடுக்கப்பட்ட |Әйтик |చెప్పబడినది |กำหนดให้ |Diyelim ki |Припустимо |Припустимо, що |Нехай |اگر |بالفرض |فرض کیا |Агар |Biết |Cho |Anrhegedig a |\\* )"},strings_double_quote:{begin:`(? 50 lines as deprecated, > 72 as illegal",match:"\\G.{0,50}(.{0,22}(.*))$",name:"meta.scope.subject.git-commit"}]},{begin:"^(?=#)",comment:"Git supplied metadata in a number of lines starting with #",contentName:"comment.line.number-sign.git-commit",end:"^(?!#)",name:"meta.scope.metadata.git-commit",patterns:[{captures:{1:{name:"markup.changed.git-commit"}},match:"^#\\t((modified|renamed):.*)$"},{captures:{1:{name:"markup.inserted.git-commit"}},match:"^#\\t(new file:.*)$"},{captures:{1:{name:"markup.deleted.git-commit"}},match:"^#\\t(deleted.*)$"},{captures:{1:{name:"keyword.other.file-type.git-commit"},2:{name:"string.unquoted.filename.git-commit"}},comment:"Fallback for non-English git commit template",match:"^#\\t([^:]+): *(.*)$"}]}],scopeName:"text.git-commit",embeddedLangs:["diff"]});var i=[...e,t];export{i as default}; diff --git a/assets/chunks/git-rebase.wSeoO_tD.js b/assets/chunks/git-rebase.wSeoO_tD.js new file mode 100644 index 000000000..945688dc3 --- /dev/null +++ b/assets/chunks/git-rebase.wSeoO_tD.js @@ -0,0 +1 @@ +import e from"./shellscript.BZfs-ost.js";const a=Object.freeze({displayName:"Git Rebase Message",name:"git-rebase",patterns:[{captures:{1:{name:"punctuation.definition.comment.git-rebase"}},match:"^\\s*(#).*$\\n?",name:"comment.line.number-sign.git-rebase"},{captures:{1:{name:"support.function.git-rebase"},2:{name:"constant.sha.git-rebase"},3:{name:"meta.commit-message.git-rebase"}},match:"^\\s*(pick|p|reword|r|edit|e|squash|s|fixup|f|drop|d)\\s+([0-9a-f]+)\\s+(.*)$",name:"meta.commit-command.git-rebase"},{captures:{1:{name:"support.function.git-rebase"},2:{patterns:[{include:"source.shell"}]}},match:"^\\s*(exec|x)\\s+(.*)$",name:"meta.commit-command.git-rebase"},{captures:{1:{name:"support.function.git-rebase"}},match:"^\\s*(break|b)\\s*$",name:"meta.commit-command.git-rebase"}],scopeName:"text.git-rebase",embeddedLangs:["shellscript"]});var s=[...e,a];export{s as default}; diff --git a/assets/chunks/github-dark-default.BXF7Vm5l.js b/assets/chunks/github-dark-default.BXF7Vm5l.js new file mode 100644 index 000000000..a0a0a7ad6 --- /dev/null +++ b/assets/chunks/github-dark-default.BXF7Vm5l.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#f78166","activityBar.background":"#0d1117","activityBar.border":"#30363d","activityBar.foreground":"#e6edf3","activityBar.inactiveForeground":"#7d8590","activityBarBadge.background":"#1f6feb","activityBarBadge.foreground":"#ffffff","badge.background":"#1f6feb","badge.foreground":"#ffffff","breadcrumb.activeSelectionForeground":"#7d8590","breadcrumb.focusForeground":"#e6edf3","breadcrumb.foreground":"#7d8590","breadcrumbPicker.background":"#161b22","button.background":"#238636","button.foreground":"#ffffff","button.hoverBackground":"#2ea043","button.secondaryBackground":"#282e33","button.secondaryForeground":"#c9d1d9","button.secondaryHoverBackground":"#30363d","checkbox.background":"#161b22","checkbox.border":"#30363d","debugConsole.errorForeground":"#ffa198","debugConsole.infoForeground":"#8b949e","debugConsole.sourceForeground":"#e3b341","debugConsole.warningForeground":"#d29922","debugConsoleInputIcon.foreground":"#bc8cff","debugIcon.breakpointForeground":"#f85149","debugTokenExpression.boolean":"#56d364","debugTokenExpression.error":"#ffa198","debugTokenExpression.name":"#79c0ff","debugTokenExpression.number":"#56d364","debugTokenExpression.string":"#a5d6ff","debugTokenExpression.value":"#a5d6ff","debugToolBar.background":"#161b22",descriptionForeground:"#7d8590","diffEditor.insertedLineBackground":"#23863626","diffEditor.insertedTextBackground":"#3fb9504d","diffEditor.removedLineBackground":"#da363326","diffEditor.removedTextBackground":"#ff7b724d","dropdown.background":"#161b22","dropdown.border":"#30363d","dropdown.foreground":"#e6edf3","dropdown.listBackground":"#161b22","editor.background":"#0d1117","editor.findMatchBackground":"#9e6a03","editor.findMatchHighlightBackground":"#f2cc6080","editor.focusedStackFrameHighlightBackground":"#2ea04366","editor.foldBackground":"#6e76811a","editor.foreground":"#e6edf3","editor.lineHighlightBackground":"#6e76811a","editor.linkedEditingBackground":"#2f81f712","editor.selectionHighlightBackground":"#3fb95040","editor.stackFrameHighlightBackground":"#bb800966","editor.wordHighlightBackground":"#6e768180","editor.wordHighlightBorder":"#6e768199","editor.wordHighlightStrongBackground":"#6e76814d","editor.wordHighlightStrongBorder":"#6e768199","editorBracketHighlight.foreground1":"#79c0ff","editorBracketHighlight.foreground2":"#56d364","editorBracketHighlight.foreground3":"#e3b341","editorBracketHighlight.foreground4":"#ffa198","editorBracketHighlight.foreground5":"#ff9bce","editorBracketHighlight.foreground6":"#d2a8ff","editorBracketHighlight.unexpectedBracket.foreground":"#7d8590","editorBracketMatch.background":"#3fb95040","editorBracketMatch.border":"#3fb95099","editorCursor.foreground":"#2f81f7","editorGroup.border":"#30363d","editorGroupHeader.tabsBackground":"#010409","editorGroupHeader.tabsBorder":"#30363d","editorGutter.addedBackground":"#2ea04366","editorGutter.deletedBackground":"#f8514966","editorGutter.modifiedBackground":"#bb800966","editorIndentGuide.activeBackground":"#e6edf33d","editorIndentGuide.background":"#e6edf31f","editorInlayHint.background":"#8b949e33","editorInlayHint.foreground":"#7d8590","editorInlayHint.paramBackground":"#8b949e33","editorInlayHint.paramForeground":"#7d8590","editorInlayHint.typeBackground":"#8b949e33","editorInlayHint.typeForeground":"#7d8590","editorLineNumber.activeForeground":"#e6edf3","editorLineNumber.foreground":"#6e7681","editorOverviewRuler.border":"#010409","editorWhitespace.foreground":"#484f58","editorWidget.background":"#161b22",errorForeground:"#f85149",focusBorder:"#1f6feb",foreground:"#e6edf3","gitDecoration.addedResourceForeground":"#3fb950","gitDecoration.conflictingResourceForeground":"#db6d28","gitDecoration.deletedResourceForeground":"#f85149","gitDecoration.ignoredResourceForeground":"#6e7681","gitDecoration.modifiedResourceForeground":"#d29922","gitDecoration.submoduleResourceForeground":"#7d8590","gitDecoration.untrackedResourceForeground":"#3fb950","icon.foreground":"#7d8590","input.background":"#0d1117","input.border":"#30363d","input.foreground":"#e6edf3","input.placeholderForeground":"#6e7681","keybindingLabel.foreground":"#e6edf3","list.activeSelectionBackground":"#6e768166","list.activeSelectionForeground":"#e6edf3","list.focusBackground":"#388bfd26","list.focusForeground":"#e6edf3","list.highlightForeground":"#2f81f7","list.hoverBackground":"#6e76811a","list.hoverForeground":"#e6edf3","list.inactiveFocusBackground":"#388bfd26","list.inactiveSelectionBackground":"#6e768166","list.inactiveSelectionForeground":"#e6edf3","minimapSlider.activeBackground":"#8b949e47","minimapSlider.background":"#8b949e33","minimapSlider.hoverBackground":"#8b949e3d","notificationCenterHeader.background":"#161b22","notificationCenterHeader.foreground":"#7d8590","notifications.background":"#161b22","notifications.border":"#30363d","notifications.foreground":"#e6edf3","notificationsErrorIcon.foreground":"#f85149","notificationsInfoIcon.foreground":"#2f81f7","notificationsWarningIcon.foreground":"#d29922","panel.background":"#010409","panel.border":"#30363d","panelInput.border":"#30363d","panelTitle.activeBorder":"#f78166","panelTitle.activeForeground":"#e6edf3","panelTitle.inactiveForeground":"#7d8590","peekViewEditor.background":"#6e76811a","peekViewEditor.matchHighlightBackground":"#bb800966","peekViewResult.background":"#0d1117","peekViewResult.matchHighlightBackground":"#bb800966","pickerGroup.border":"#30363d","pickerGroup.foreground":"#7d8590","progressBar.background":"#1f6feb","quickInput.background":"#161b22","quickInput.foreground":"#e6edf3","scrollbar.shadow":"#484f5833","scrollbarSlider.activeBackground":"#8b949e47","scrollbarSlider.background":"#8b949e33","scrollbarSlider.hoverBackground":"#8b949e3d","settings.headerForeground":"#e6edf3","settings.modifiedItemIndicator":"#bb800966","sideBar.background":"#010409","sideBar.border":"#30363d","sideBar.foreground":"#e6edf3","sideBarSectionHeader.background":"#010409","sideBarSectionHeader.border":"#30363d","sideBarSectionHeader.foreground":"#e6edf3","sideBarTitle.foreground":"#e6edf3","statusBar.background":"#0d1117","statusBar.border":"#30363d","statusBar.debuggingBackground":"#da3633","statusBar.debuggingForeground":"#ffffff","statusBar.focusBorder":"#1f6feb80","statusBar.foreground":"#7d8590","statusBar.noFolderBackground":"#0d1117","statusBarItem.activeBackground":"#e6edf31f","statusBarItem.focusBorder":"#1f6feb","statusBarItem.hoverBackground":"#e6edf314","statusBarItem.prominentBackground":"#6e768166","statusBarItem.remoteBackground":"#30363d","statusBarItem.remoteForeground":"#e6edf3","symbolIcon.arrayForeground":"#f0883e","symbolIcon.booleanForeground":"#58a6ff","symbolIcon.classForeground":"#f0883e","symbolIcon.colorForeground":"#79c0ff","symbolIcon.constantForeground":["#aff5b4","#7ee787","#56d364","#3fb950","#2ea043","#238636","#196c2e","#0f5323","#033a16","#04260f"],"symbolIcon.constructorForeground":"#d2a8ff","symbolIcon.enumeratorForeground":"#f0883e","symbolIcon.enumeratorMemberForeground":"#58a6ff","symbolIcon.eventForeground":"#6e7681","symbolIcon.fieldForeground":"#f0883e","symbolIcon.fileForeground":"#d29922","symbolIcon.folderForeground":"#d29922","symbolIcon.functionForeground":"#bc8cff","symbolIcon.interfaceForeground":"#f0883e","symbolIcon.keyForeground":"#58a6ff","symbolIcon.keywordForeground":"#ff7b72","symbolIcon.methodForeground":"#bc8cff","symbolIcon.moduleForeground":"#ff7b72","symbolIcon.namespaceForeground":"#ff7b72","symbolIcon.nullForeground":"#58a6ff","symbolIcon.numberForeground":"#3fb950","symbolIcon.objectForeground":"#f0883e","symbolIcon.operatorForeground":"#79c0ff","symbolIcon.packageForeground":"#f0883e","symbolIcon.propertyForeground":"#f0883e","symbolIcon.referenceForeground":"#58a6ff","symbolIcon.snippetForeground":"#58a6ff","symbolIcon.stringForeground":"#79c0ff","symbolIcon.structForeground":"#f0883e","symbolIcon.textForeground":"#79c0ff","symbolIcon.typeParameterForeground":"#79c0ff","symbolIcon.unitForeground":"#58a6ff","symbolIcon.variableForeground":"#f0883e","tab.activeBackground":"#0d1117","tab.activeBorder":"#0d1117","tab.activeBorderTop":"#f78166","tab.activeForeground":"#e6edf3","tab.border":"#30363d","tab.hoverBackground":"#0d1117","tab.inactiveBackground":"#010409","tab.inactiveForeground":"#7d8590","tab.unfocusedActiveBorder":"#0d1117","tab.unfocusedActiveBorderTop":"#30363d","tab.unfocusedHoverBackground":"#6e76811a","terminal.ansiBlack":"#484f58","terminal.ansiBlue":"#58a6ff","terminal.ansiBrightBlack":"#6e7681","terminal.ansiBrightBlue":"#79c0ff","terminal.ansiBrightCyan":"#56d4dd","terminal.ansiBrightGreen":"#56d364","terminal.ansiBrightMagenta":"#d2a8ff","terminal.ansiBrightRed":"#ffa198","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#e3b341","terminal.ansiCyan":"#39c5cf","terminal.ansiGreen":"#3fb950","terminal.ansiMagenta":"#bc8cff","terminal.ansiRed":"#ff7b72","terminal.ansiWhite":"#b1bac4","terminal.ansiYellow":"#d29922","terminal.foreground":"#e6edf3","textBlockQuote.background":"#010409","textBlockQuote.border":"#30363d","textCodeBlock.background":"#6e768166","textLink.activeForeground":"#2f81f7","textLink.foreground":"#2f81f7","textPreformat.foreground":"#7d8590","textSeparator.foreground":"#21262d","titleBar.activeBackground":"#0d1117","titleBar.activeForeground":"#7d8590","titleBar.border":"#30363d","titleBar.inactiveBackground":"#010409","titleBar.inactiveForeground":"#7d8590","tree.indentGuidesStroke":"#21262d","welcomePage.buttonBackground":"#21262d","welcomePage.buttonHoverBackground":"#30363d"},displayName:"GitHub Dark Default",name:"github-dark-default",semanticHighlighting:!0,tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#8b949e"}},{scope:["constant.other.placeholder","constant.character"],settings:{foreground:"#ff7b72"}},{scope:["constant","entity.name.constant","variable.other.constant","variable.other.enummember","variable.language","entity"],settings:{foreground:"#79c0ff"}},{scope:["entity.name","meta.export.default","meta.definition.variable"],settings:{foreground:"#ffa657"}},{scope:["variable.parameter.function","meta.jsx.children","meta.block","meta.tag.attributes","entity.name.constant","meta.object.member","meta.embedded.expression"],settings:{foreground:"#e6edf3"}},{scope:"entity.name.function",settings:{foreground:"#d2a8ff"}},{scope:["entity.name.tag","support.class.component"],settings:{foreground:"#7ee787"}},{scope:"keyword",settings:{foreground:"#ff7b72"}},{scope:["storage","storage.type"],settings:{foreground:"#ff7b72"}},{scope:["storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#e6edf3"}},{scope:["string","string punctuation.section.embedded source"],settings:{foreground:"#a5d6ff"}},{scope:"support",settings:{foreground:"#79c0ff"}},{scope:"meta.property-name",settings:{foreground:"#79c0ff"}},{scope:"variable",settings:{foreground:"#ffa657"}},{scope:"variable.other",settings:{foreground:"#e6edf3"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#ffa198"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#ffa198"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#ffa198"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#ffa198"}},{scope:"carriage-return",settings:{background:"#ff7b72",content:"^M",fontStyle:"italic underline",foreground:"#f0f6fc"}},{scope:"message.error",settings:{foreground:"#ffa198"}},{scope:"string variable",settings:{foreground:"#79c0ff"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#a5d6ff"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#a5d6ff"}},{scope:"string.regexp constant.character.escape",settings:{fontStyle:"bold",foreground:"#7ee787"}},{scope:"support.constant",settings:{foreground:"#79c0ff"}},{scope:"support.variable",settings:{foreground:"#79c0ff"}},{scope:"support.type.property-name.json",settings:{foreground:"#7ee787"}},{scope:"meta.module-reference",settings:{foreground:"#79c0ff"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#ffa657"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#79c0ff"}},{scope:"markup.quote",settings:{foreground:"#7ee787"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#e6edf3"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#e6edf3"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.strikethrough"],settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{foreground:"#79c0ff"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#490202",foreground:"#ffa198"}},{scope:["punctuation.section.embedded"],settings:{foreground:"#ff7b72"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#04260f",foreground:"#7ee787"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#5a1e02",foreground:"#ffa657"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#79c0ff",foreground:"#161b22"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#d2a8ff"}},{scope:"meta.diff.header",settings:{foreground:"#79c0ff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#79c0ff"}},{scope:"meta.output",settings:{foreground:"#79c0ff"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#8b949e"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#ffa198"}},{scope:["constant.other.reference.link","string.other.link"],settings:{foreground:"#a5d6ff"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/github-dark-dimmed.CRDKj6ck.js b/assets/chunks/github-dark-dimmed.CRDKj6ck.js new file mode 100644 index 000000000..abb212391 --- /dev/null +++ b/assets/chunks/github-dark-dimmed.CRDKj6ck.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#ec775c","activityBar.background":"#22272e","activityBar.border":"#444c56","activityBar.foreground":"#adbac7","activityBar.inactiveForeground":"#768390","activityBarBadge.background":"#316dca","activityBarBadge.foreground":"#cdd9e5","badge.background":"#316dca","badge.foreground":"#cdd9e5","breadcrumb.activeSelectionForeground":"#768390","breadcrumb.focusForeground":"#adbac7","breadcrumb.foreground":"#768390","breadcrumbPicker.background":"#2d333b","button.background":"#347d39","button.foreground":"#ffffff","button.hoverBackground":"#46954a","button.secondaryBackground":"#3d444d","button.secondaryForeground":"#adbac7","button.secondaryHoverBackground":"#444c56","checkbox.background":"#2d333b","checkbox.border":"#444c56","debugConsole.errorForeground":"#ff938a","debugConsole.infoForeground":"#768390","debugConsole.sourceForeground":"#daaa3f","debugConsole.warningForeground":"#c69026","debugConsoleInputIcon.foreground":"#b083f0","debugIcon.breakpointForeground":"#e5534b","debugTokenExpression.boolean":"#6bc46d","debugTokenExpression.error":"#ff938a","debugTokenExpression.name":"#6cb6ff","debugTokenExpression.number":"#6bc46d","debugTokenExpression.string":"#96d0ff","debugTokenExpression.value":"#96d0ff","debugToolBar.background":"#2d333b",descriptionForeground:"#768390","diffEditor.insertedLineBackground":"#347d3926","diffEditor.insertedTextBackground":"#57ab5a4d","diffEditor.removedLineBackground":"#c93c3726","diffEditor.removedTextBackground":"#f470674d","dropdown.background":"#2d333b","dropdown.border":"#444c56","dropdown.foreground":"#adbac7","dropdown.listBackground":"#2d333b","editor.background":"#22272e","editor.findMatchBackground":"#966600","editor.findMatchHighlightBackground":"#eac55f80","editor.focusedStackFrameHighlightBackground":"#46954a66","editor.foldBackground":"#636e7b1a","editor.foreground":"#adbac7","editor.lineHighlightBackground":"#636e7b1a","editor.linkedEditingBackground":"#539bf512","editor.selectionHighlightBackground":"#57ab5a40","editor.stackFrameHighlightBackground":"#ae7c1466","editor.wordHighlightBackground":"#636e7b80","editor.wordHighlightBorder":"#636e7b99","editor.wordHighlightStrongBackground":"#636e7b4d","editor.wordHighlightStrongBorder":"#636e7b99","editorBracketHighlight.foreground1":"#6cb6ff","editorBracketHighlight.foreground2":"#6bc46d","editorBracketHighlight.foreground3":"#daaa3f","editorBracketHighlight.foreground4":"#ff938a","editorBracketHighlight.foreground5":"#fc8dc7","editorBracketHighlight.foreground6":"#dcbdfb","editorBracketHighlight.unexpectedBracket.foreground":"#768390","editorBracketMatch.background":"#57ab5a40","editorBracketMatch.border":"#57ab5a99","editorCursor.foreground":"#539bf5","editorGroup.border":"#444c56","editorGroupHeader.tabsBackground":"#1c2128","editorGroupHeader.tabsBorder":"#444c56","editorGutter.addedBackground":"#46954a66","editorGutter.deletedBackground":"#e5534b66","editorGutter.modifiedBackground":"#ae7c1466","editorIndentGuide.activeBackground":"#adbac73d","editorIndentGuide.background":"#adbac71f","editorInlayHint.background":"#76839033","editorInlayHint.foreground":"#768390","editorInlayHint.paramBackground":"#76839033","editorInlayHint.paramForeground":"#768390","editorInlayHint.typeBackground":"#76839033","editorInlayHint.typeForeground":"#768390","editorLineNumber.activeForeground":"#adbac7","editorLineNumber.foreground":"#636e7b","editorOverviewRuler.border":"#1c2128","editorWhitespace.foreground":"#545d68","editorWidget.background":"#2d333b",errorForeground:"#e5534b",focusBorder:"#316dca",foreground:"#adbac7","gitDecoration.addedResourceForeground":"#57ab5a","gitDecoration.conflictingResourceForeground":"#cc6b2c","gitDecoration.deletedResourceForeground":"#e5534b","gitDecoration.ignoredResourceForeground":"#636e7b","gitDecoration.modifiedResourceForeground":"#c69026","gitDecoration.submoduleResourceForeground":"#768390","gitDecoration.untrackedResourceForeground":"#57ab5a","icon.foreground":"#768390","input.background":"#22272e","input.border":"#444c56","input.foreground":"#adbac7","input.placeholderForeground":"#636e7b","keybindingLabel.foreground":"#adbac7","list.activeSelectionBackground":"#636e7b66","list.activeSelectionForeground":"#adbac7","list.focusBackground":"#4184e426","list.focusForeground":"#adbac7","list.highlightForeground":"#539bf5","list.hoverBackground":"#636e7b1a","list.hoverForeground":"#adbac7","list.inactiveFocusBackground":"#4184e426","list.inactiveSelectionBackground":"#636e7b66","list.inactiveSelectionForeground":"#adbac7","minimapSlider.activeBackground":"#76839047","minimapSlider.background":"#76839033","minimapSlider.hoverBackground":"#7683903d","notificationCenterHeader.background":"#2d333b","notificationCenterHeader.foreground":"#768390","notifications.background":"#2d333b","notifications.border":"#444c56","notifications.foreground":"#adbac7","notificationsErrorIcon.foreground":"#e5534b","notificationsInfoIcon.foreground":"#539bf5","notificationsWarningIcon.foreground":"#c69026","panel.background":"#1c2128","panel.border":"#444c56","panelInput.border":"#444c56","panelTitle.activeBorder":"#ec775c","panelTitle.activeForeground":"#adbac7","panelTitle.inactiveForeground":"#768390","peekViewEditor.background":"#636e7b1a","peekViewEditor.matchHighlightBackground":"#ae7c1466","peekViewResult.background":"#22272e","peekViewResult.matchHighlightBackground":"#ae7c1466","pickerGroup.border":"#444c56","pickerGroup.foreground":"#768390","progressBar.background":"#316dca","quickInput.background":"#2d333b","quickInput.foreground":"#adbac7","scrollbar.shadow":"#545d6833","scrollbarSlider.activeBackground":"#76839047","scrollbarSlider.background":"#76839033","scrollbarSlider.hoverBackground":"#7683903d","settings.headerForeground":"#adbac7","settings.modifiedItemIndicator":"#ae7c1466","sideBar.background":"#1c2128","sideBar.border":"#444c56","sideBar.foreground":"#adbac7","sideBarSectionHeader.background":"#1c2128","sideBarSectionHeader.border":"#444c56","sideBarSectionHeader.foreground":"#adbac7","sideBarTitle.foreground":"#adbac7","statusBar.background":"#22272e","statusBar.border":"#444c56","statusBar.debuggingBackground":"#c93c37","statusBar.debuggingForeground":"#cdd9e5","statusBar.focusBorder":"#316dca80","statusBar.foreground":"#768390","statusBar.noFolderBackground":"#22272e","statusBarItem.activeBackground":"#adbac71f","statusBarItem.focusBorder":"#316dca","statusBarItem.hoverBackground":"#adbac714","statusBarItem.prominentBackground":"#636e7b66","statusBarItem.remoteBackground":"#444c56","statusBarItem.remoteForeground":"#adbac7","symbolIcon.arrayForeground":"#e0823d","symbolIcon.booleanForeground":"#539bf5","symbolIcon.classForeground":"#e0823d","symbolIcon.colorForeground":"#6cb6ff","symbolIcon.constantForeground":["#b4f1b4","#8ddb8c","#6bc46d","#57ab5a","#46954a","#347d39","#2b6a30","#245829","#1b4721","#113417"],"symbolIcon.constructorForeground":"#dcbdfb","symbolIcon.enumeratorForeground":"#e0823d","symbolIcon.enumeratorMemberForeground":"#539bf5","symbolIcon.eventForeground":"#636e7b","symbolIcon.fieldForeground":"#e0823d","symbolIcon.fileForeground":"#c69026","symbolIcon.folderForeground":"#c69026","symbolIcon.functionForeground":"#b083f0","symbolIcon.interfaceForeground":"#e0823d","symbolIcon.keyForeground":"#539bf5","symbolIcon.keywordForeground":"#f47067","symbolIcon.methodForeground":"#b083f0","symbolIcon.moduleForeground":"#f47067","symbolIcon.namespaceForeground":"#f47067","symbolIcon.nullForeground":"#539bf5","symbolIcon.numberForeground":"#57ab5a","symbolIcon.objectForeground":"#e0823d","symbolIcon.operatorForeground":"#6cb6ff","symbolIcon.packageForeground":"#e0823d","symbolIcon.propertyForeground":"#e0823d","symbolIcon.referenceForeground":"#539bf5","symbolIcon.snippetForeground":"#539bf5","symbolIcon.stringForeground":"#6cb6ff","symbolIcon.structForeground":"#e0823d","symbolIcon.textForeground":"#6cb6ff","symbolIcon.typeParameterForeground":"#6cb6ff","symbolIcon.unitForeground":"#539bf5","symbolIcon.variableForeground":"#e0823d","tab.activeBackground":"#22272e","tab.activeBorder":"#22272e","tab.activeBorderTop":"#ec775c","tab.activeForeground":"#adbac7","tab.border":"#444c56","tab.hoverBackground":"#22272e","tab.inactiveBackground":"#1c2128","tab.inactiveForeground":"#768390","tab.unfocusedActiveBorder":"#22272e","tab.unfocusedActiveBorderTop":"#444c56","tab.unfocusedHoverBackground":"#636e7b1a","terminal.ansiBlack":"#545d68","terminal.ansiBlue":"#539bf5","terminal.ansiBrightBlack":"#636e7b","terminal.ansiBrightBlue":"#6cb6ff","terminal.ansiBrightCyan":"#56d4dd","terminal.ansiBrightGreen":"#6bc46d","terminal.ansiBrightMagenta":"#dcbdfb","terminal.ansiBrightRed":"#ff938a","terminal.ansiBrightWhite":"#cdd9e5","terminal.ansiBrightYellow":"#daaa3f","terminal.ansiCyan":"#39c5cf","terminal.ansiGreen":"#57ab5a","terminal.ansiMagenta":"#b083f0","terminal.ansiRed":"#f47067","terminal.ansiWhite":"#909dab","terminal.ansiYellow":"#c69026","terminal.foreground":"#adbac7","textBlockQuote.background":"#1c2128","textBlockQuote.border":"#444c56","textCodeBlock.background":"#636e7b66","textLink.activeForeground":"#539bf5","textLink.foreground":"#539bf5","textPreformat.foreground":"#768390","textSeparator.foreground":"#373e47","titleBar.activeBackground":"#22272e","titleBar.activeForeground":"#768390","titleBar.border":"#444c56","titleBar.inactiveBackground":"#1c2128","titleBar.inactiveForeground":"#768390","tree.indentGuidesStroke":"#373e47","welcomePage.buttonBackground":"#373e47","welcomePage.buttonHoverBackground":"#444c56"},displayName:"GitHub Dark Dimmed",name:"github-dark-dimmed",semanticHighlighting:!0,tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#768390"}},{scope:["constant.other.placeholder","constant.character"],settings:{foreground:"#f47067"}},{scope:["constant","entity.name.constant","variable.other.constant","variable.other.enummember","variable.language","entity"],settings:{foreground:"#6cb6ff"}},{scope:["entity.name","meta.export.default","meta.definition.variable"],settings:{foreground:"#f69d50"}},{scope:["variable.parameter.function","meta.jsx.children","meta.block","meta.tag.attributes","entity.name.constant","meta.object.member","meta.embedded.expression"],settings:{foreground:"#adbac7"}},{scope:"entity.name.function",settings:{foreground:"#dcbdfb"}},{scope:["entity.name.tag","support.class.component"],settings:{foreground:"#8ddb8c"}},{scope:"keyword",settings:{foreground:"#f47067"}},{scope:["storage","storage.type"],settings:{foreground:"#f47067"}},{scope:["storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#adbac7"}},{scope:["string","string punctuation.section.embedded source"],settings:{foreground:"#96d0ff"}},{scope:"support",settings:{foreground:"#6cb6ff"}},{scope:"meta.property-name",settings:{foreground:"#6cb6ff"}},{scope:"variable",settings:{foreground:"#f69d50"}},{scope:"variable.other",settings:{foreground:"#adbac7"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#ff938a"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#ff938a"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#ff938a"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#ff938a"}},{scope:"carriage-return",settings:{background:"#f47067",content:"^M",fontStyle:"italic underline",foreground:"#cdd9e5"}},{scope:"message.error",settings:{foreground:"#ff938a"}},{scope:"string variable",settings:{foreground:"#6cb6ff"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#96d0ff"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#96d0ff"}},{scope:"string.regexp constant.character.escape",settings:{fontStyle:"bold",foreground:"#8ddb8c"}},{scope:"support.constant",settings:{foreground:"#6cb6ff"}},{scope:"support.variable",settings:{foreground:"#6cb6ff"}},{scope:"support.type.property-name.json",settings:{foreground:"#8ddb8c"}},{scope:"meta.module-reference",settings:{foreground:"#6cb6ff"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#f69d50"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#6cb6ff"}},{scope:"markup.quote",settings:{foreground:"#8ddb8c"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#adbac7"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#adbac7"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.strikethrough"],settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{foreground:"#6cb6ff"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#5d0f12",foreground:"#ff938a"}},{scope:["punctuation.section.embedded"],settings:{foreground:"#f47067"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#113417",foreground:"#8ddb8c"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#682d0f",foreground:"#f69d50"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#6cb6ff",foreground:"#2d333b"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#dcbdfb"}},{scope:"meta.diff.header",settings:{foreground:"#6cb6ff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#6cb6ff"}},{scope:"meta.output",settings:{foreground:"#6cb6ff"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#768390"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#ff938a"}},{scope:["constant.other.reference.link","string.other.link"],settings:{foreground:"#96d0ff"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/github-dark.CzPA46E-.js b/assets/chunks/github-dark.CzPA46E-.js new file mode 100644 index 000000000..c61633a5d --- /dev/null +++ b/assets/chunks/github-dark.CzPA46E-.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#f9826c","activityBar.background":"#24292e","activityBar.border":"#1b1f23","activityBar.foreground":"#e1e4e8","activityBar.inactiveForeground":"#6a737d","activityBarBadge.background":"#0366d6","activityBarBadge.foreground":"#fff","badge.background":"#044289","badge.foreground":"#c8e1ff","breadcrumb.activeSelectionForeground":"#d1d5da","breadcrumb.focusForeground":"#e1e4e8","breadcrumb.foreground":"#959da5","breadcrumbPicker.background":"#2b3036","button.background":"#176f2c","button.foreground":"#dcffe4","button.hoverBackground":"#22863a","button.secondaryBackground":"#444d56","button.secondaryForeground":"#fff","button.secondaryHoverBackground":"#586069","checkbox.background":"#444d56","checkbox.border":"#1b1f23","debugToolBar.background":"#2b3036",descriptionForeground:"#959da5","diffEditor.insertedTextBackground":"#28a74530","diffEditor.removedTextBackground":"#d73a4930","dropdown.background":"#2f363d","dropdown.border":"#1b1f23","dropdown.foreground":"#e1e4e8","dropdown.listBackground":"#24292e","editor.background":"#24292e","editor.findMatchBackground":"#ffd33d44","editor.findMatchHighlightBackground":"#ffd33d22","editor.focusedStackFrameHighlightBackground":"#2b6a3033","editor.foldBackground":"#58606915","editor.foreground":"#e1e4e8","editor.inactiveSelectionBackground":"#3392FF22","editor.lineHighlightBackground":"#2b3036","editor.linkedEditingBackground":"#3392FF22","editor.selectionBackground":"#3392FF44","editor.selectionHighlightBackground":"#17E5E633","editor.selectionHighlightBorder":"#17E5E600","editor.stackFrameHighlightBackground":"#C6902625","editor.wordHighlightBackground":"#17E5E600","editor.wordHighlightBorder":"#17E5E699","editor.wordHighlightStrongBackground":"#17E5E600","editor.wordHighlightStrongBorder":"#17E5E666","editorBracketHighlight.foreground1":"#79b8ff","editorBracketHighlight.foreground2":"#ffab70","editorBracketHighlight.foreground3":"#b392f0","editorBracketHighlight.foreground4":"#79b8ff","editorBracketHighlight.foreground5":"#ffab70","editorBracketHighlight.foreground6":"#b392f0","editorBracketMatch.background":"#17E5E650","editorBracketMatch.border":"#17E5E600","editorCursor.foreground":"#c8e1ff","editorError.foreground":"#f97583","editorGroup.border":"#1b1f23","editorGroupHeader.tabsBackground":"#1f2428","editorGroupHeader.tabsBorder":"#1b1f23","editorGutter.addedBackground":"#28a745","editorGutter.deletedBackground":"#ea4a5a","editorGutter.modifiedBackground":"#2188ff","editorIndentGuide.activeBackground":"#444d56","editorIndentGuide.background":"#2f363d","editorLineNumber.activeForeground":"#e1e4e8","editorLineNumber.foreground":"#444d56","editorOverviewRuler.border":"#1b1f23","editorWarning.foreground":"#ffea7f","editorWhitespace.foreground":"#444d56","editorWidget.background":"#1f2428",errorForeground:"#f97583",focusBorder:"#005cc5",foreground:"#d1d5da","gitDecoration.addedResourceForeground":"#34d058","gitDecoration.conflictingResourceForeground":"#ffab70","gitDecoration.deletedResourceForeground":"#ea4a5a","gitDecoration.ignoredResourceForeground":"#6a737d","gitDecoration.modifiedResourceForeground":"#79b8ff","gitDecoration.submoduleResourceForeground":"#6a737d","gitDecoration.untrackedResourceForeground":"#34d058","input.background":"#2f363d","input.border":"#1b1f23","input.foreground":"#e1e4e8","input.placeholderForeground":"#959da5","list.activeSelectionBackground":"#39414a","list.activeSelectionForeground":"#e1e4e8","list.focusBackground":"#044289","list.hoverBackground":"#282e34","list.hoverForeground":"#e1e4e8","list.inactiveFocusBackground":"#1d2d3e","list.inactiveSelectionBackground":"#282e34","list.inactiveSelectionForeground":"#e1e4e8","notificationCenterHeader.background":"#24292e","notificationCenterHeader.foreground":"#959da5","notifications.background":"#2f363d","notifications.border":"#1b1f23","notifications.foreground":"#e1e4e8","notificationsErrorIcon.foreground":"#ea4a5a","notificationsInfoIcon.foreground":"#79b8ff","notificationsWarningIcon.foreground":"#ffab70","panel.background":"#1f2428","panel.border":"#1b1f23","panelInput.border":"#2f363d","panelTitle.activeBorder":"#f9826c","panelTitle.activeForeground":"#e1e4e8","panelTitle.inactiveForeground":"#959da5","peekViewEditor.background":"#1f242888","peekViewEditor.matchHighlightBackground":"#ffd33d33","peekViewResult.background":"#1f2428","peekViewResult.matchHighlightBackground":"#ffd33d33","pickerGroup.border":"#444d56","pickerGroup.foreground":"#e1e4e8","progressBar.background":"#0366d6","quickInput.background":"#24292e","quickInput.foreground":"#e1e4e8","scrollbar.shadow":"#0008","scrollbarSlider.activeBackground":"#6a737d88","scrollbarSlider.background":"#6a737d33","scrollbarSlider.hoverBackground":"#6a737d44","settings.headerForeground":"#e1e4e8","settings.modifiedItemIndicator":"#0366d6","sideBar.background":"#1f2428","sideBar.border":"#1b1f23","sideBar.foreground":"#d1d5da","sideBarSectionHeader.background":"#1f2428","sideBarSectionHeader.border":"#1b1f23","sideBarSectionHeader.foreground":"#e1e4e8","sideBarTitle.foreground":"#e1e4e8","statusBar.background":"#24292e","statusBar.border":"#1b1f23","statusBar.debuggingBackground":"#931c06","statusBar.debuggingForeground":"#fff","statusBar.foreground":"#d1d5da","statusBar.noFolderBackground":"#24292e","statusBarItem.prominentBackground":"#282e34","statusBarItem.remoteBackground":"#24292e","statusBarItem.remoteForeground":"#d1d5da","tab.activeBackground":"#24292e","tab.activeBorder":"#24292e","tab.activeBorderTop":"#f9826c","tab.activeForeground":"#e1e4e8","tab.border":"#1b1f23","tab.hoverBackground":"#24292e","tab.inactiveBackground":"#1f2428","tab.inactiveForeground":"#959da5","tab.unfocusedActiveBorder":"#24292e","tab.unfocusedActiveBorderTop":"#1b1f23","tab.unfocusedHoverBackground":"#24292e","terminal.ansiBlack":"#586069","terminal.ansiBlue":"#2188ff","terminal.ansiBrightBlack":"#959da5","terminal.ansiBrightBlue":"#79b8ff","terminal.ansiBrightCyan":"#56d4dd","terminal.ansiBrightGreen":"#85e89d","terminal.ansiBrightMagenta":"#b392f0","terminal.ansiBrightRed":"#f97583","terminal.ansiBrightWhite":"#fafbfc","terminal.ansiBrightYellow":"#ffea7f","terminal.ansiCyan":"#39c5cf","terminal.ansiGreen":"#34d058","terminal.ansiMagenta":"#b392f0","terminal.ansiRed":"#ea4a5a","terminal.ansiWhite":"#d1d5da","terminal.ansiYellow":"#ffea7f","terminal.foreground":"#d1d5da","terminal.tab.activeBorder":"#f9826c","terminalCursor.background":"#586069","terminalCursor.foreground":"#79b8ff","textBlockQuote.background":"#24292e","textBlockQuote.border":"#444d56","textCodeBlock.background":"#2f363d","textLink.activeForeground":"#c8e1ff","textLink.foreground":"#79b8ff","textPreformat.foreground":"#d1d5da","textSeparator.foreground":"#586069","titleBar.activeBackground":"#24292e","titleBar.activeForeground":"#e1e4e8","titleBar.border":"#1b1f23","titleBar.inactiveBackground":"#1f2428","titleBar.inactiveForeground":"#959da5","tree.indentGuidesStroke":"#2f363d","welcomePage.buttonBackground":"#2f363d","welcomePage.buttonHoverBackground":"#444d56"},displayName:"GitHub Dark",name:"github-dark",semanticHighlighting:!0,tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#6a737d"}},{scope:["constant","entity.name.constant","variable.other.constant","variable.other.enummember","variable.language"],settings:{foreground:"#79b8ff"}},{scope:["entity","entity.name"],settings:{foreground:"#b392f0"}},{scope:"variable.parameter.function",settings:{foreground:"#e1e4e8"}},{scope:"entity.name.tag",settings:{foreground:"#85e89d"}},{scope:"keyword",settings:{foreground:"#f97583"}},{scope:["storage","storage.type"],settings:{foreground:"#f97583"}},{scope:["storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#e1e4e8"}},{scope:["string","punctuation.definition.string","string punctuation.section.embedded source"],settings:{foreground:"#9ecbff"}},{scope:"support",settings:{foreground:"#79b8ff"}},{scope:"meta.property-name",settings:{foreground:"#79b8ff"}},{scope:"variable",settings:{foreground:"#ffab70"}},{scope:"variable.other",settings:{foreground:"#e1e4e8"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"carriage-return",settings:{background:"#f97583",content:"^M",fontStyle:"italic underline",foreground:"#24292e"}},{scope:"message.error",settings:{foreground:"#fdaeb7"}},{scope:"string variable",settings:{foreground:"#79b8ff"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#dbedff"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#dbedff"}},{scope:"string.regexp constant.character.escape",settings:{fontStyle:"bold",foreground:"#85e89d"}},{scope:"support.constant",settings:{foreground:"#79b8ff"}},{scope:"support.variable",settings:{foreground:"#79b8ff"}},{scope:"meta.module-reference",settings:{foreground:"#79b8ff"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#ffab70"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#79b8ff"}},{scope:"markup.quote",settings:{foreground:"#85e89d"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#e1e4e8"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#e1e4e8"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.strikethrough"],settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{foreground:"#79b8ff"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#86181d",foreground:"#fdaeb7"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#144620",foreground:"#85e89d"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#c24e00",foreground:"#ffab70"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#79b8ff",foreground:"#2f363d"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#b392f0"}},{scope:"meta.diff.header",settings:{foreground:"#79b8ff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#79b8ff"}},{scope:"meta.output",settings:{foreground:"#79b8ff"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#d1d5da"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#fdaeb7"}},{scope:["constant.other.reference.link","string.other.link"],settings:{fontStyle:"underline",foreground:"#dbedff"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/github-light-default.UREJT2Bw.js b/assets/chunks/github-light-default.UREJT2Bw.js new file mode 100644 index 000000000..5f1389516 --- /dev/null +++ b/assets/chunks/github-light-default.UREJT2Bw.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#fd8c73","activityBar.background":"#ffffff","activityBar.border":"#d0d7de","activityBar.foreground":"#1f2328","activityBar.inactiveForeground":"#656d76","activityBarBadge.background":"#0969da","activityBarBadge.foreground":"#ffffff","badge.background":"#0969da","badge.foreground":"#ffffff","breadcrumb.activeSelectionForeground":"#656d76","breadcrumb.focusForeground":"#1f2328","breadcrumb.foreground":"#656d76","breadcrumbPicker.background":"#ffffff","button.background":"#1f883d","button.foreground":"#ffffff","button.hoverBackground":"#1a7f37","button.secondaryBackground":"#ebecf0","button.secondaryForeground":"#24292f","button.secondaryHoverBackground":"#f3f4f6","checkbox.background":"#f6f8fa","checkbox.border":"#d0d7de","debugConsole.errorForeground":"#cf222e","debugConsole.infoForeground":"#57606a","debugConsole.sourceForeground":"#9a6700","debugConsole.warningForeground":"#7d4e00","debugConsoleInputIcon.foreground":"#6639ba","debugIcon.breakpointForeground":"#cf222e","debugTokenExpression.boolean":"#116329","debugTokenExpression.error":"#a40e26","debugTokenExpression.name":"#0550ae","debugTokenExpression.number":"#116329","debugTokenExpression.string":"#0a3069","debugTokenExpression.value":"#0a3069","debugToolBar.background":"#ffffff",descriptionForeground:"#656d76","diffEditor.insertedLineBackground":"#aceebb4d","diffEditor.insertedTextBackground":"#6fdd8b80","diffEditor.removedLineBackground":"#ffcecb4d","diffEditor.removedTextBackground":"#ff818266","dropdown.background":"#ffffff","dropdown.border":"#d0d7de","dropdown.foreground":"#1f2328","dropdown.listBackground":"#ffffff","editor.background":"#ffffff","editor.findMatchBackground":"#bf8700","editor.findMatchHighlightBackground":"#fae17d80","editor.focusedStackFrameHighlightBackground":"#4ac26b66","editor.foldBackground":"#6e77811a","editor.foreground":"#1f2328","editor.lineHighlightBackground":"#eaeef280","editor.linkedEditingBackground":"#0969da12","editor.selectionHighlightBackground":"#4ac26b40","editor.stackFrameHighlightBackground":"#d4a72c66","editor.wordHighlightBackground":"#eaeef280","editor.wordHighlightBorder":"#afb8c199","editor.wordHighlightStrongBackground":"#afb8c14d","editor.wordHighlightStrongBorder":"#afb8c199","editorBracketHighlight.foreground1":"#0969da","editorBracketHighlight.foreground2":"#1a7f37","editorBracketHighlight.foreground3":"#9a6700","editorBracketHighlight.foreground4":"#cf222e","editorBracketHighlight.foreground5":"#bf3989","editorBracketHighlight.foreground6":"#8250df","editorBracketHighlight.unexpectedBracket.foreground":"#656d76","editorBracketMatch.background":"#4ac26b40","editorBracketMatch.border":"#4ac26b99","editorCursor.foreground":"#0969da","editorGroup.border":"#d0d7de","editorGroupHeader.tabsBackground":"#f6f8fa","editorGroupHeader.tabsBorder":"#d0d7de","editorGutter.addedBackground":"#4ac26b66","editorGutter.deletedBackground":"#ff818266","editorGutter.modifiedBackground":"#d4a72c66","editorIndentGuide.activeBackground":"#1f23283d","editorIndentGuide.background":"#1f23281f","editorInlayHint.background":"#afb8c133","editorInlayHint.foreground":"#656d76","editorInlayHint.paramBackground":"#afb8c133","editorInlayHint.paramForeground":"#656d76","editorInlayHint.typeBackground":"#afb8c133","editorInlayHint.typeForeground":"#656d76","editorLineNumber.activeForeground":"#1f2328","editorLineNumber.foreground":"#8c959f","editorOverviewRuler.border":"#ffffff","editorWhitespace.foreground":"#afb8c1","editorWidget.background":"#ffffff",errorForeground:"#cf222e",focusBorder:"#0969da",foreground:"#1f2328","gitDecoration.addedResourceForeground":"#1a7f37","gitDecoration.conflictingResourceForeground":"#bc4c00","gitDecoration.deletedResourceForeground":"#cf222e","gitDecoration.ignoredResourceForeground":"#6e7781","gitDecoration.modifiedResourceForeground":"#9a6700","gitDecoration.submoduleResourceForeground":"#656d76","gitDecoration.untrackedResourceForeground":"#1a7f37","icon.foreground":"#656d76","input.background":"#ffffff","input.border":"#d0d7de","input.foreground":"#1f2328","input.placeholderForeground":"#6e7781","keybindingLabel.foreground":"#1f2328","list.activeSelectionBackground":"#afb8c133","list.activeSelectionForeground":"#1f2328","list.focusBackground":"#ddf4ff","list.focusForeground":"#1f2328","list.highlightForeground":"#0969da","list.hoverBackground":"#eaeef280","list.hoverForeground":"#1f2328","list.inactiveFocusBackground":"#ddf4ff","list.inactiveSelectionBackground":"#afb8c133","list.inactiveSelectionForeground":"#1f2328","minimapSlider.activeBackground":"#8c959f47","minimapSlider.background":"#8c959f33","minimapSlider.hoverBackground":"#8c959f3d","notificationCenterHeader.background":"#f6f8fa","notificationCenterHeader.foreground":"#656d76","notifications.background":"#ffffff","notifications.border":"#d0d7de","notifications.foreground":"#1f2328","notificationsErrorIcon.foreground":"#cf222e","notificationsInfoIcon.foreground":"#0969da","notificationsWarningIcon.foreground":"#9a6700","panel.background":"#f6f8fa","panel.border":"#d0d7de","panelInput.border":"#d0d7de","panelTitle.activeBorder":"#fd8c73","panelTitle.activeForeground":"#1f2328","panelTitle.inactiveForeground":"#656d76","pickerGroup.border":"#d0d7de","pickerGroup.foreground":"#656d76","progressBar.background":"#0969da","quickInput.background":"#ffffff","quickInput.foreground":"#1f2328","scrollbar.shadow":"#6e778133","scrollbarSlider.activeBackground":"#8c959f47","scrollbarSlider.background":"#8c959f33","scrollbarSlider.hoverBackground":"#8c959f3d","settings.headerForeground":"#1f2328","settings.modifiedItemIndicator":"#d4a72c66","sideBar.background":"#f6f8fa","sideBar.border":"#d0d7de","sideBar.foreground":"#1f2328","sideBarSectionHeader.background":"#f6f8fa","sideBarSectionHeader.border":"#d0d7de","sideBarSectionHeader.foreground":"#1f2328","sideBarTitle.foreground":"#1f2328","statusBar.background":"#ffffff","statusBar.border":"#d0d7de","statusBar.debuggingBackground":"#cf222e","statusBar.debuggingForeground":"#ffffff","statusBar.focusBorder":"#0969da80","statusBar.foreground":"#656d76","statusBar.noFolderBackground":"#ffffff","statusBarItem.activeBackground":"#1f23281f","statusBarItem.focusBorder":"#0969da","statusBarItem.hoverBackground":"#1f232814","statusBarItem.prominentBackground":"#afb8c133","statusBarItem.remoteBackground":"#eaeef2","statusBarItem.remoteForeground":"#1f2328","symbolIcon.arrayForeground":"#953800","symbolIcon.booleanForeground":"#0550ae","symbolIcon.classForeground":"#953800","symbolIcon.colorForeground":"#0a3069","symbolIcon.constantForeground":"#116329","symbolIcon.constructorForeground":"#3e1f79","symbolIcon.enumeratorForeground":"#953800","symbolIcon.enumeratorMemberForeground":"#0550ae","symbolIcon.eventForeground":"#57606a","symbolIcon.fieldForeground":"#953800","symbolIcon.fileForeground":"#7d4e00","symbolIcon.folderForeground":"#7d4e00","symbolIcon.functionForeground":"#6639ba","symbolIcon.interfaceForeground":"#953800","symbolIcon.keyForeground":"#0550ae","symbolIcon.keywordForeground":"#a40e26","symbolIcon.methodForeground":"#6639ba","symbolIcon.moduleForeground":"#a40e26","symbolIcon.namespaceForeground":"#a40e26","symbolIcon.nullForeground":"#0550ae","symbolIcon.numberForeground":"#116329","symbolIcon.objectForeground":"#953800","symbolIcon.operatorForeground":"#0a3069","symbolIcon.packageForeground":"#953800","symbolIcon.propertyForeground":"#953800","symbolIcon.referenceForeground":"#0550ae","symbolIcon.snippetForeground":"#0550ae","symbolIcon.stringForeground":"#0a3069","symbolIcon.structForeground":"#953800","symbolIcon.textForeground":"#0a3069","symbolIcon.typeParameterForeground":"#0a3069","symbolIcon.unitForeground":"#0550ae","symbolIcon.variableForeground":"#953800","tab.activeBackground":"#ffffff","tab.activeBorder":"#ffffff","tab.activeBorderTop":"#fd8c73","tab.activeForeground":"#1f2328","tab.border":"#d0d7de","tab.hoverBackground":"#ffffff","tab.inactiveBackground":"#f6f8fa","tab.inactiveForeground":"#656d76","tab.unfocusedActiveBorder":"#ffffff","tab.unfocusedActiveBorderTop":"#d0d7de","tab.unfocusedHoverBackground":"#eaeef280","terminal.ansiBlack":"#24292f","terminal.ansiBlue":"#0969da","terminal.ansiBrightBlack":"#57606a","terminal.ansiBrightBlue":"#218bff","terminal.ansiBrightCyan":"#3192aa","terminal.ansiBrightGreen":"#1a7f37","terminal.ansiBrightMagenta":"#a475f9","terminal.ansiBrightRed":"#a40e26","terminal.ansiBrightWhite":"#8c959f","terminal.ansiBrightYellow":"#633c01","terminal.ansiCyan":"#1b7c83","terminal.ansiGreen":"#116329","terminal.ansiMagenta":"#8250df","terminal.ansiRed":"#cf222e","terminal.ansiWhite":"#6e7781","terminal.ansiYellow":"#4d2d00","terminal.foreground":"#1f2328","textBlockQuote.background":"#f6f8fa","textBlockQuote.border":"#d0d7de","textCodeBlock.background":"#afb8c133","textLink.activeForeground":"#0969da","textLink.foreground":"#0969da","textPreformat.foreground":"#656d76","textSeparator.foreground":"#d8dee4","titleBar.activeBackground":"#ffffff","titleBar.activeForeground":"#656d76","titleBar.border":"#d0d7de","titleBar.inactiveBackground":"#f6f8fa","titleBar.inactiveForeground":"#656d76","tree.indentGuidesStroke":"#d8dee4","welcomePage.buttonBackground":"#f6f8fa","welcomePage.buttonHoverBackground":"#f3f4f6"},displayName:"GitHub Light Default",name:"github-light-default",semanticHighlighting:!0,tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#6e7781"}},{scope:["constant.other.placeholder","constant.character"],settings:{foreground:"#cf222e"}},{scope:["constant","entity.name.constant","variable.other.constant","variable.other.enummember","variable.language","entity"],settings:{foreground:"#0550ae"}},{scope:["entity.name","meta.export.default","meta.definition.variable"],settings:{foreground:"#953800"}},{scope:["variable.parameter.function","meta.jsx.children","meta.block","meta.tag.attributes","entity.name.constant","meta.object.member","meta.embedded.expression"],settings:{foreground:"#1f2328"}},{scope:"entity.name.function",settings:{foreground:"#8250df"}},{scope:["entity.name.tag","support.class.component"],settings:{foreground:"#116329"}},{scope:"keyword",settings:{foreground:"#cf222e"}},{scope:["storage","storage.type"],settings:{foreground:"#cf222e"}},{scope:["storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#1f2328"}},{scope:["string","string punctuation.section.embedded source"],settings:{foreground:"#0a3069"}},{scope:"support",settings:{foreground:"#0550ae"}},{scope:"meta.property-name",settings:{foreground:"#0550ae"}},{scope:"variable",settings:{foreground:"#953800"}},{scope:"variable.other",settings:{foreground:"#1f2328"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#82071e"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#82071e"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#82071e"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#82071e"}},{scope:"carriage-return",settings:{background:"#cf222e",content:"^M",fontStyle:"italic underline",foreground:"#f6f8fa"}},{scope:"message.error",settings:{foreground:"#82071e"}},{scope:"string variable",settings:{foreground:"#0550ae"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#0a3069"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#0a3069"}},{scope:"string.regexp constant.character.escape",settings:{fontStyle:"bold",foreground:"#116329"}},{scope:"support.constant",settings:{foreground:"#0550ae"}},{scope:"support.variable",settings:{foreground:"#0550ae"}},{scope:"support.type.property-name.json",settings:{foreground:"#116329"}},{scope:"meta.module-reference",settings:{foreground:"#0550ae"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#953800"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#0550ae"}},{scope:"markup.quote",settings:{foreground:"#116329"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#1f2328"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#1f2328"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.strikethrough"],settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{foreground:"#0550ae"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#ffebe9",foreground:"#82071e"}},{scope:["punctuation.section.embedded"],settings:{foreground:"#cf222e"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#dafbe1",foreground:"#116329"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#ffd8b5",foreground:"#953800"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#0550ae",foreground:"#eaeef2"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#8250df"}},{scope:"meta.diff.header",settings:{foreground:"#0550ae"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#0550ae"}},{scope:"meta.output",settings:{foreground:"#0550ae"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#57606a"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#82071e"}},{scope:["constant.other.reference.link","string.other.link"],settings:{foreground:"#0a3069"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/github-light.CRlnGVMD.js b/assets/chunks/github-light.CRlnGVMD.js new file mode 100644 index 000000000..8cead181b --- /dev/null +++ b/assets/chunks/github-light.CRlnGVMD.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#f9826c","activityBar.background":"#fff","activityBar.border":"#e1e4e8","activityBar.foreground":"#2f363d","activityBar.inactiveForeground":"#959da5","activityBarBadge.background":"#2188ff","activityBarBadge.foreground":"#fff","badge.background":"#dbedff","badge.foreground":"#005cc5","breadcrumb.activeSelectionForeground":"#586069","breadcrumb.focusForeground":"#2f363d","breadcrumb.foreground":"#6a737d","breadcrumbPicker.background":"#fafbfc","button.background":"#159739","button.foreground":"#fff","button.hoverBackground":"#138934","button.secondaryBackground":"#e1e4e8","button.secondaryForeground":"#1b1f23","button.secondaryHoverBackground":"#d1d5da","checkbox.background":"#fafbfc","checkbox.border":"#d1d5da","debugToolBar.background":"#fff",descriptionForeground:"#6a737d","diffEditor.insertedTextBackground":"#34d05822","diffEditor.removedTextBackground":"#d73a4922","dropdown.background":"#fafbfc","dropdown.border":"#e1e4e8","dropdown.foreground":"#2f363d","dropdown.listBackground":"#fff","editor.background":"#fff","editor.findMatchBackground":"#ffdf5d","editor.findMatchHighlightBackground":"#ffdf5d66","editor.focusedStackFrameHighlightBackground":"#28a74525","editor.foldBackground":"#d1d5da11","editor.foreground":"#24292e","editor.inactiveSelectionBackground":"#0366d611","editor.lineHighlightBackground":"#f6f8fa","editor.linkedEditingBackground":"#0366d611","editor.selectionBackground":"#0366d625","editor.selectionHighlightBackground":"#34d05840","editor.selectionHighlightBorder":"#34d05800","editor.stackFrameHighlightBackground":"#ffd33d33","editor.wordHighlightBackground":"#34d05800","editor.wordHighlightBorder":"#24943e99","editor.wordHighlightStrongBackground":"#34d05800","editor.wordHighlightStrongBorder":"#24943e50","editorBracketHighlight.foreground1":"#005cc5","editorBracketHighlight.foreground2":"#e36209","editorBracketHighlight.foreground3":"#5a32a3","editorBracketHighlight.foreground4":"#005cc5","editorBracketHighlight.foreground5":"#e36209","editorBracketHighlight.foreground6":"#5a32a3","editorBracketMatch.background":"#34d05840","editorBracketMatch.border":"#34d05800","editorCursor.foreground":"#044289","editorError.foreground":"#cb2431","editorGroup.border":"#e1e4e8","editorGroupHeader.tabsBackground":"#f6f8fa","editorGroupHeader.tabsBorder":"#e1e4e8","editorGutter.addedBackground":"#28a745","editorGutter.deletedBackground":"#d73a49","editorGutter.modifiedBackground":"#2188ff","editorIndentGuide.activeBackground":"#d7dbe0","editorIndentGuide.background":"#eff2f6","editorLineNumber.activeForeground":"#24292e","editorLineNumber.foreground":"#1b1f234d","editorOverviewRuler.border":"#fff","editorWarning.foreground":"#f9c513","editorWhitespace.foreground":"#d1d5da","editorWidget.background":"#f6f8fa",errorForeground:"#cb2431",focusBorder:"#2188ff",foreground:"#444d56","gitDecoration.addedResourceForeground":"#28a745","gitDecoration.conflictingResourceForeground":"#e36209","gitDecoration.deletedResourceForeground":"#d73a49","gitDecoration.ignoredResourceForeground":"#959da5","gitDecoration.modifiedResourceForeground":"#005cc5","gitDecoration.submoduleResourceForeground":"#959da5","gitDecoration.untrackedResourceForeground":"#28a745","input.background":"#fafbfc","input.border":"#e1e4e8","input.foreground":"#2f363d","input.placeholderForeground":"#959da5","list.activeSelectionBackground":"#e2e5e9","list.activeSelectionForeground":"#2f363d","list.focusBackground":"#cce5ff","list.hoverBackground":"#ebf0f4","list.hoverForeground":"#2f363d","list.inactiveFocusBackground":"#dbedff","list.inactiveSelectionBackground":"#e8eaed","list.inactiveSelectionForeground":"#2f363d","notificationCenterHeader.background":"#e1e4e8","notificationCenterHeader.foreground":"#6a737d","notifications.background":"#fafbfc","notifications.border":"#e1e4e8","notifications.foreground":"#2f363d","notificationsErrorIcon.foreground":"#d73a49","notificationsInfoIcon.foreground":"#005cc5","notificationsWarningIcon.foreground":"#e36209","panel.background":"#f6f8fa","panel.border":"#e1e4e8","panelInput.border":"#e1e4e8","panelTitle.activeBorder":"#f9826c","panelTitle.activeForeground":"#2f363d","panelTitle.inactiveForeground":"#6a737d","pickerGroup.border":"#e1e4e8","pickerGroup.foreground":"#2f363d","progressBar.background":"#2188ff","quickInput.background":"#fafbfc","quickInput.foreground":"#2f363d","scrollbar.shadow":"#6a737d33","scrollbarSlider.activeBackground":"#959da588","scrollbarSlider.background":"#959da533","scrollbarSlider.hoverBackground":"#959da544","settings.headerForeground":"#2f363d","settings.modifiedItemIndicator":"#2188ff","sideBar.background":"#f6f8fa","sideBar.border":"#e1e4e8","sideBar.foreground":"#586069","sideBarSectionHeader.background":"#f6f8fa","sideBarSectionHeader.border":"#e1e4e8","sideBarSectionHeader.foreground":"#2f363d","sideBarTitle.foreground":"#2f363d","statusBar.background":"#fff","statusBar.border":"#e1e4e8","statusBar.debuggingBackground":"#f9826c","statusBar.debuggingForeground":"#fff","statusBar.foreground":"#586069","statusBar.noFolderBackground":"#fff","statusBarItem.prominentBackground":"#e8eaed","statusBarItem.remoteBackground":"#fff","statusBarItem.remoteForeground":"#586069","tab.activeBackground":"#fff","tab.activeBorder":"#fff","tab.activeBorderTop":"#f9826c","tab.activeForeground":"#2f363d","tab.border":"#e1e4e8","tab.hoverBackground":"#fff","tab.inactiveBackground":"#f6f8fa","tab.inactiveForeground":"#6a737d","tab.unfocusedActiveBorder":"#fff","tab.unfocusedActiveBorderTop":"#e1e4e8","tab.unfocusedHoverBackground":"#fff","terminal.ansiBlack":"#24292e","terminal.ansiBlue":"#0366d6","terminal.ansiBrightBlack":"#959da5","terminal.ansiBrightBlue":"#005cc5","terminal.ansiBrightCyan":"#3192aa","terminal.ansiBrightGreen":"#22863a","terminal.ansiBrightMagenta":"#5a32a3","terminal.ansiBrightRed":"#cb2431","terminal.ansiBrightWhite":"#d1d5da","terminal.ansiBrightYellow":"#b08800","terminal.ansiCyan":"#1b7c83","terminal.ansiGreen":"#28a745","terminal.ansiMagenta":"#5a32a3","terminal.ansiRed":"#d73a49","terminal.ansiWhite":"#6a737d","terminal.ansiYellow":"#dbab09","terminal.foreground":"#586069","terminal.tab.activeBorder":"#f9826c","terminalCursor.background":"#d1d5da","terminalCursor.foreground":"#005cc5","textBlockQuote.background":"#fafbfc","textBlockQuote.border":"#e1e4e8","textCodeBlock.background":"#f6f8fa","textLink.activeForeground":"#005cc5","textLink.foreground":"#0366d6","textPreformat.foreground":"#586069","textSeparator.foreground":"#d1d5da","titleBar.activeBackground":"#fff","titleBar.activeForeground":"#2f363d","titleBar.border":"#e1e4e8","titleBar.inactiveBackground":"#f6f8fa","titleBar.inactiveForeground":"#6a737d","tree.indentGuidesStroke":"#e1e4e8","welcomePage.buttonBackground":"#f6f8fa","welcomePage.buttonHoverBackground":"#e1e4e8"},displayName:"GitHub Light",name:"github-light",semanticHighlighting:!0,tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#6a737d"}},{scope:["constant","entity.name.constant","variable.other.constant","variable.other.enummember","variable.language"],settings:{foreground:"#005cc5"}},{scope:["entity","entity.name"],settings:{foreground:"#6f42c1"}},{scope:"variable.parameter.function",settings:{foreground:"#24292e"}},{scope:"entity.name.tag",settings:{foreground:"#22863a"}},{scope:"keyword",settings:{foreground:"#d73a49"}},{scope:["storage","storage.type"],settings:{foreground:"#d73a49"}},{scope:["storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#24292e"}},{scope:["string","punctuation.definition.string","string punctuation.section.embedded source"],settings:{foreground:"#032f62"}},{scope:"support",settings:{foreground:"#005cc5"}},{scope:"meta.property-name",settings:{foreground:"#005cc5"}},{scope:"variable",settings:{foreground:"#e36209"}},{scope:"variable.other",settings:{foreground:"#24292e"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"carriage-return",settings:{background:"#d73a49",content:"^M",fontStyle:"italic underline",foreground:"#fafbfc"}},{scope:"message.error",settings:{foreground:"#b31d28"}},{scope:"string variable",settings:{foreground:"#005cc5"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#032f62"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#032f62"}},{scope:"string.regexp constant.character.escape",settings:{fontStyle:"bold",foreground:"#22863a"}},{scope:"support.constant",settings:{foreground:"#005cc5"}},{scope:"support.variable",settings:{foreground:"#005cc5"}},{scope:"meta.module-reference",settings:{foreground:"#005cc5"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#e36209"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#005cc5"}},{scope:"markup.quote",settings:{foreground:"#22863a"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#24292e"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#24292e"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["markup.strikethrough"],settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{foreground:"#005cc5"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#ffeef0",foreground:"#b31d28"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#f0fff4",foreground:"#22863a"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#ffebda",foreground:"#e36209"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#005cc5",foreground:"#f6f8fa"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#6f42c1"}},{scope:"meta.diff.header",settings:{foreground:"#005cc5"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#005cc5"}},{scope:"meta.output",settings:{foreground:"#005cc5"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#586069"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#b31d28"}},{scope:["constant.other.reference.link","string.other.link"],settings:{fontStyle:"underline",foreground:"#032f62"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/gleam.Dz2Ca8U2.js b/assets/chunks/gleam.Dz2Ca8U2.js new file mode 100644 index 000000000..9413db13d --- /dev/null +++ b/assets/chunks/gleam.Dz2Ca8U2.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Gleam",name:"gleam",patterns:[{include:"#comments"},{include:"#keywords"},{include:"#strings"},{include:"#constant"},{include:"#entity"}],repository:{binary_number:{match:"\\b0b[0-1]+\\b",name:"constant.numeric.binary.gleam",patterns:[]},boolean:{match:"\\b(True|False)\\b",name:"constant.language.boolean.gleam",patterns:[]},comments:{patterns:[{match:"//.*",name:"comment.line.gleam"}]},constant:{patterns:[{include:"#binary_number"},{include:"#octal_number"},{include:"#hexadecimal_number"},{include:"#decimal_number"},{include:"#boolean"},{match:"[[:upper:]][[:word:]]*",name:"entity.name.type.gleam"}]},decimal_number:{match:"\\b[[:digit:]]+(_?[[:digit:]])*(\\.[[:digit:]]*)?(e-?[[:digit:]]*)?\\b",name:"constant.numeric.decimal.gleam",patterns:[]},entity:{patterns:[{begin:"\\b([[:lower:]][[:word:]]*)([[:space:]]*)?\\(",captures:{1:{name:"entity.name.function.gleam"}},end:"\\)",patterns:[{include:"$self"}]},{match:"\\b([[:lower:]][[:word:]]*):\\s",name:"variable.parameter.gleam"},{match:"\\b([[:lower:]][[:word:]]*):",name:"entity.name.namespace.gleam"}]},hexadecimal_number:{match:"\\b0x[[:xdigit:]]+\\b",name:"constant.numeric.hexadecimal.gleam",patterns:[]},keywords:{patterns:[{match:"\\b(as|use|case|if|fn|import|let|assert|pub|type|opaque|const|todo|panic)\\b",name:"keyword.control.gleam"},{match:"(<\\-|\\->)",name:"keyword.operator.arrow.gleam"},{match:"\\|>",name:"keyword.operator.pipe.gleam"},{match:"\\.\\.",name:"keyword.operator.splat.gleam"},{match:"(<=\\.|>=\\.|==\\.|!=\\.|<\\.|>\\.)",name:"keyword.operator.comparison.float.gleam"},{match:"(<=|>=|==|!=|<|>)",name:"keyword.operator.comparison.int.gleam"},{match:"(&&|\\|\\|)",name:"keyword.operator.logical.gleam"},{match:"<>",name:"keyword.operator.string.gleam"},{match:"\\|",name:"keyword.operator.other.gleam"},{match:"(\\+\\.|\\-\\.|/\\.|\\*\\.|%\\.)",name:"keyword.operator.arithmetic.float.gleam"},{match:"(\\+|\\-|/|\\*|%)",name:"keyword.operator.arithmetic.int.gleam"},{match:"=",name:"keyword.operator.assignment.gleam"}]},octal_number:{match:"\\b0o[0-7]+\\b",name:"constant.numeric.octal.gleam",patterns:[]},strings:{begin:'"',end:'"',name:"string.quoted.double.gleam",patterns:[{match:"\\\\.",name:"constant.character.escape.gleam"}]}},scopeName:"source.gleam"});var a=[e];export{a as default}; diff --git a/assets/chunks/glimmer-js.CKLJpqca.js b/assets/chunks/glimmer-js.CKLJpqca.js new file mode 100644 index 000000000..88a8b9959 --- /dev/null +++ b/assets/chunks/glimmer-js.CKLJpqca.js @@ -0,0 +1,13 @@ +import e from"./javascript.Dch3xQiY.js";import n from"./typescript.DC8MraHL.js";import t from"./css.CbYhyuC0.js";import a from"./html.CuK0VrWf.js";const i=Object.freeze({displayName:"Glimmer JS",injections:{"L:source.gjs -comment -(string -meta.embedded)":{patterns:[{include:"#main"}]}},name:"glimmer-js",patterns:[{include:"#main"},{include:"source.js"}],repository:{"as-keyword":{match:"\\s\\b(as)\\b(?=\\s\\|)",name:"keyword.control",patterns:[]},"as-params":{begin:"(?)",endCaptures:{1:{name:"punctuation.definition.tag"},2:{name:"punctuation.definition.tag"}},name:"meta.tag.any.ember-handlebars",patterns:[{include:"#tag-like-content"}]},digit:{captures:{0:{name:"constant.numeric"},1:{name:"constant.numeric"},2:{name:"constant.numeric"}},match:"\\d*(\\.)?\\d+",patterns:[]},entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.html.ember-handlebars"},3:{name:"punctuation.definition.entity.html.ember-handlebars"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.html.ember-handlebars"},{match:"&",name:"invalid.illegal.bad-ampersand.html.ember-handlebars"}]},"glimmer-argument":{captures:{1:{name:"entity.other.attribute-name.ember-handlebars.argument",patterns:[{match:"(@)",name:"markup.italic"}]},2:{name:"punctuation.separator.key-value.html.ember-handlebars"}},match:"\\s(@[a-zA-Z0-9:_.-]+)(=)?"},"glimmer-as-stuff":{patterns:[{include:"#as-keyword"},{include:"#as-params"}]},"glimmer-block":{begin:"({{~?)(#|/)(([@\\$a-zA-Z0-9_/.-]+))",captures:{1:{name:"punctuation.definition.tag"},2:{name:"punctuation.definition.tag"},3:{name:"keyword.control",patterns:[{include:"#glimmer-component-path"},{match:"(\\/)+",name:"punctuation.definition.tag"},{match:"(\\.)+",name:"punctuation.definition.tag"}]}},end:"(~?}})",name:"entity.expression.ember-handlebars",patterns:[{include:"#glimmer-as-stuff"},{include:"#glimmer-supexp-content"}]},"glimmer-bools":{captures:{0:{name:"keyword.operator"},1:{name:"keyword.operator"},2:{name:"string.regexp"},3:{name:"string.regexp"},4:{name:"keyword.operator"}},match:"({{~?)(true|false|null|undefined|\\d*(\\.)?\\d+)(~?}})",name:"entity.expression.ember-handlebars"},"glimmer-comment-block":{begin:"{{!--",captures:{0:{name:"punctuation.definition.block.comment.glimmer"}},end:"--}}",name:"comment.block.glimmer",patterns:[{include:"#script"},{include:"#attention"}]},"glimmer-comment-inline":{begin:"{{!",captures:{0:{name:"punctuation.definition.block.comment.glimmer"}},end:"}}",name:"comment.inline.glimmer",patterns:[{include:"#script"},{include:"#attention"}]},"glimmer-component-path":{captures:{1:{name:"punctuation.definition.tag"}},match:"(::|_|\\$|\\.)"},"glimmer-control-expression":{begin:"({{~?)(([-a-zA-Z_0-9/]+)\\s)",captures:{1:{name:"keyword.operator"},2:{name:"keyword.operator"},3:{name:"keyword.control"}},end:"(~?}})",name:"entity.expression.ember-handlebars",patterns:[{include:"#glimmer-supexp-content"}]},"glimmer-else-block":{captures:{0:{name:"punctuation.definition.tag"},1:{name:"punctuation.definition.tag"},2:{name:"keyword.control"},3:{name:"keyword.control",patterns:[{include:"#glimmer-subexp"},{include:"#string-single-quoted-handlebars"},{include:"#string-double-quoted-handlebars"},{include:"#boolean"},{include:"#digit"},{include:"#param"},{include:"#glimmer-parameter-name"},{include:"#glimmer-parameter-value"}]},4:{name:"punctuation.definition.tag"}},match:"({{~?)(else\\s[a-z]+\\s|else)([()@a-zA-Z0-9\\.\\s\\b]+)?(~?}})",name:"entity.expression.ember-handlebars"},"glimmer-expression":{begin:"({{~?)(([()\\s@a-zA-Z0-9_.-]+))",captures:{1:{name:"keyword.operator"},2:{name:"keyword.operator"},3:{name:"support.function",patterns:[{match:"[(]+",name:"string.regexp"},{match:"[)]+",name:"string.regexp"},{match:"(\\.)+",name:"punctuation.definition.tag"},{include:"#glimmer-supexp-content"}]}},end:"(~?}})",name:"entity.expression.ember-handlebars",patterns:[{include:"#glimmer-supexp-content"}]},"glimmer-expression-property":{begin:"({{~?)((@|this.)([a-zA-Z0-9_.-]+))",captures:{1:{name:"keyword.operator"},2:{name:"keyword.operator"},3:{name:"support.function",patterns:[{match:"(@|this)",name:"variable.language"},{match:"(\\.)+",name:"punctuation.definition.tag"}]},4:{name:"support.function",patterns:[{match:"(\\.)+",name:"punctuation.definition.tag"}]}},end:"(~?}})",name:"entity.expression.ember-handlebars",patterns:[{include:"#glimmer-supexp-content"}]},"glimmer-parameter-name":{captures:{1:{name:"variable.parameter.name.ember-handlebars"},2:{name:"punctuation.definition.expression.ember-handlebars"}},match:"\\b([a-zA-Z0-9_-]+)(\\s?=)",patterns:[]},"glimmer-parameter-value":{captures:{1:{name:"support.function",patterns:[{match:"(\\.)+",name:"punctuation.definition.tag"}]}},match:"\\b([a-zA-Z0-9:_.-]+)\\b(?!=)",patterns:[]},"glimmer-special-block":{captures:{0:{name:"keyword.operator"},1:{name:"keyword.operator"},2:{name:"keyword.control"},3:{name:"keyword.operator"}},match:"({{~?)(yield|outlet)(~?}})",name:"entity.expression.ember-handlebars"},"glimmer-subexp":{begin:"(\\()([@a-zA-Z0-9.-]+)",captures:{1:{name:"keyword.other"},2:{name:"keyword.control"}},end:"(\\))",name:"entity.subexpression.ember-handlebars",patterns:[{include:"#glimmer-supexp-content"}]},"glimmer-supexp-content":{patterns:[{include:"#glimmer-subexp"},{include:"#string-single-quoted-handlebars"},{include:"#string-double-quoted-handlebars"},{include:"#boolean"},{include:"#digit"},{include:"#param"},{include:"#glimmer-parameter-name"},{include:"#glimmer-parameter-value"}]},"glimmer-unescaped-expression":{begin:"{{{",captures:{0:{name:"keyword.operator"}},end:"}}}",name:"entity.unescaped.expression.ember-handlebars",patterns:[{include:"#string-single-quoted-handlebars"},{include:"#string-double-quoted-handlebars"},{include:"#glimmer-subexp"},{include:"#param"}]},"html-attribute":{captures:{1:{name:"entity.other.attribute-name.ember-handlebars",patterns:[{match:"(\\.\\.\\.attributes)",name:"markup.bold"}]},2:{name:"punctuation.separator.key-value.html.ember-handlebars"}},match:"\\s([a-zA-Z0-9:_.-]+)(=)?"},"html-comment":{begin:"",name:"comment.block.html",patterns:[{match:"\\G-?>",name:"invalid.illegal.characters-not-allowed-here.html"},{match:")",name:"invalid.illegal.characters-not-allowed-here.html"},{match:"--!>",name:"invalid.illegal.characters-not-allowed-here.html"}]},"core-minus-invalid":{comment:"This should be the root pattern array includes minus #tags-invalid",patterns:[{include:"#xml-processing"},{include:"#comment"},{include:"#doctype"},{include:"#cdata"},{include:"#tags-valid"},{include:"#entities"}]},doctype:{begin:"",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.doctype.html",patterns:[{match:"\\G(?i:DOCTYPE)",name:"entity.name.tag.html"},{begin:'"',end:'"',name:"string.quoted.double.html"},{match:"[^\\s>]+",name:"entity.other.attribute-name.html"}]},entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.html"},912:{name:"punctuation.definition.entity.html"}},comment:"Yes this is a bit ridiculous, there are quite a lot of these",match:`(?x) +(&) (?=[a-zA-Z]) +( +(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve)) +| (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?)) +| (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross)) +| (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger))) +| (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr))) +| (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr)) +| (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve)) +| (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy)) +| (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?)) +| (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr)) +| (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa)) +| (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot)) +| (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker))) +| (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute)) +| (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr))) +| (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?)) +| (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr)) +| (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))) +| (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle)) +| (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot)) +| (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve))) +| (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar)) +| (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr)) +| (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map)) +| (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy)) +| (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)) +) +(;) +`,name:"constant.character.entity.named.$2.html"},{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)#[0-9]+(;)",name:"constant.character.entity.numeric.decimal.html"},{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)#[xX][0-9a-fA-F]+(;)",name:"constant.character.entity.numeric.hexadecimal.html"},{match:"&(?=[a-zA-Z0-9]+;)",name:"invalid.illegal.ambiguous-ampersand.html"}]},math:{patterns:[{begin:`(?i)(<)(math)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.structure.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()",endCaptures:{0:{name:"meta.tag.structure.$2.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"punctuation.definition.tag.end.html"}},name:"meta.element.structure.$2.html",patterns:[{begin:"(?)\\G",end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]}],repository:{attribute:{patterns:[{begin:"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])",beginCaptures:{0:{name:"entity.other.attribute-name.html"}},end:"(?=\\s*+[^=\\s])",name:"meta.attribute.$1.html",patterns:[{include:"#attribute-interior"}]},{begin:`([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,beginCaptures:{0:{name:"entity.other.attribute-name.html"}},comment:"Anything else that is valid",end:"(?=\\s*+[^=\\s])",name:"meta.attribute.unrecognized.$1.html",patterns:[{include:"#attribute-interior"}]},{match:"[^\\s>]+",name:"invalid.illegal.character-not-allowed-here.html"}]},tags:{patterns:[{include:"#comment"},{include:"#cdata"},{captures:{0:{name:"meta.tag.structure.math.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.structure.math.$2.html"},{begin:`(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.structure.math.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.inline.math.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.inline.math.$2.html"},{begin:`(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.inline.math.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.object.math.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.object.math.$2.html"},{begin:`(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.object.math.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.other.invalid.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.unrecognized-tag.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.other.invalid.html"},{begin:`(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.other.invalid.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.unrecognized-tag.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.invalid.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{include:"#tags-invalid"}]}}},svg:{patterns:[{begin:`(?i)(<)(svg)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.structure.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()",endCaptures:{0:{name:"meta.tag.structure.$2.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"punctuation.definition.tag.end.html"}},name:"meta.element.structure.$2.html",patterns:[{begin:"(?)\\G",end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]}],repository:{attribute:{patterns:[{begin:"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])",beginCaptures:{0:{name:"entity.other.attribute-name.html"}},end:"(?=\\s*+[^=\\s])",name:"meta.attribute.$1.html",patterns:[{include:"#attribute-interior"}]},{begin:`([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,beginCaptures:{0:{name:"entity.other.attribute-name.html"}},comment:"Anything else that is valid",end:"(?=\\s*+[^=\\s])",name:"meta.attribute.unrecognized.$1.html",patterns:[{include:"#attribute-interior"}]},{match:"[^\\s>]+",name:"invalid.illegal.character-not-allowed-here.html"}]},tags:{patterns:[{include:"#comment"},{include:"#cdata"},{captures:{0:{name:"meta.tag.metadata.svg.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.metadata.svg.$2.html"},{begin:`(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.metadata.svg.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.structure.svg.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.structure.svg.$2.html"},{begin:`(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.structure.svg.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.inline.svg.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.inline.svg.$2.html"},{begin:`(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.inline.svg.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.object.svg.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.object.svg.$2.html"},{begin:`(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.object.svg.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{patterns:[{include:"#attribute"}]},5:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.other.svg.$2.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.other.svg.$2.html"},{begin:`(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.other.svg.$2.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{captures:{0:{name:"meta.tag.other.invalid.void.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.unrecognized-tag.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},match:`(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,name:"meta.element.other.invalid.html"},{begin:`(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,beginCaptures:{0:{name:"meta.tag.other.invalid.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.unrecognized-tag.html"},4:{patterns:[{include:"#attribute"}]},6:{name:"punctuation.definition.tag.end.html"}},end:"(?i)()|(/>)|(?=)\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.invalid.start.html",patterns:[{include:"#attribute"}]},{include:"#tags"}]},{include:"#tags-invalid"}]}}},"tags-invalid":{patterns:[{begin:"(]*))(?)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.$2.html",patterns:[{include:"#attribute"}]}]},"tags-valid":{patterns:[{begin:"(^[ \\t]+)?(?=<(?i:style)\\b(?!-))",beginCaptures:{1:{name:"punctuation.whitespace.embedded.leading.html"}},end:"(?!\\G)([ \\t]*$\\n?)?",endCaptures:{1:{name:"punctuation.whitespace.embedded.trailing.html"}},patterns:[{begin:"(?i)(<)(style)(?=\\s|/?>)",beginCaptures:{0:{name:"meta.tag.metadata.style.start.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"(?i)((<)/)(style)\\s*(>)",endCaptures:{0:{name:"meta.tag.metadata.style.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"source.css-ignored-vscode"},3:{name:"entity.name.tag.html"},4:{name:"punctuation.definition.tag.end.html"}},name:"meta.embedded.block.html",patterns:[{begin:"\\G",captures:{1:{name:"punctuation.definition.tag.end.html"}},end:"(>)",name:"meta.tag.metadata.style.start.html",patterns:[{include:"#attribute"}]},{begin:"(?!\\G)",end:"(?=)",endCaptures:{0:{name:"meta.tag.metadata.script.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"punctuation.definition.tag.end.html"}},name:"meta.embedded.block.html",patterns:[{begin:"\\G",end:"(?=/)",patterns:[{begin:"(>)",beginCaptures:{0:{name:"meta.tag.metadata.script.start.html"},1:{name:"punctuation.definition.tag.end.html"}},end:"((<))(?=/(?i:script))",endCaptures:{0:{name:"meta.tag.metadata.script.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"source.js-ignored-vscode"}},patterns:[{begin:"\\G",end:"(?= +| type(?=[\\s=]) +(?!\\s*=\\s* +( +'' +| "" +| ('|"|) +( +text/ +( +javascript(1\\.[0-5])? +| x-javascript +| jscript +| livescript +| (x-)?ecmascript +| babel + +) +| application/ +( +(x-)?javascript +| (x-)?ecmascript +) +| module +) +[\\s"'>] +) +) +) +)`,name:"meta.tag.metadata.script.start.html",patterns:[{include:"#attribute"}]},{begin:`(?ix: +(?= +type\\s*=\\s* +('|"|) +text/ +( +x-handlebars +| (x-(handlebars-)?|ng-)?template +| html +) +[\\s"'>] +) +)`,end:"((<))(?=/(?i:script))",endCaptures:{0:{name:"meta.tag.metadata.script.end.html"},1:{name:"punctuation.definition.tag.begin.html"},2:{name:"text.html.basic"}},patterns:[{begin:"\\G",end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.script.start.html",patterns:[{include:"#attribute"}]},{begin:"(?!\\G)",end:"(?=)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.script.start.html",patterns:[{include:"#attribute"}]},{begin:"(?!\\G)",end:"(?=)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(noscript|title)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(col|hr|input)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(area|br|wbr)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((basefont|isindex))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((frame))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.void.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((applet))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.deprecated.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.object.$2.end.html",patterns:[{include:"#attribute"}]},{begin:"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.no-longer-supported.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.$2.start.html",patterns:[{include:"#attribute"}]},{begin:"(?i)()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"invalid.illegal.no-longer-supported.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.$2.end.html",patterns:[{include:"#attribute"}]},{include:"#math"},{include:"#svg"},{begin:"(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.custom.start.html",patterns:[{include:"#attribute"}]},{begin:"()",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:">",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.custom.end.html",patterns:[{include:"#attribute"}]}]},"xml-processing":{begin:"(<\\?)(xml)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.html"}},end:"(\\?>)",name:"meta.tag.metadata.processing.xml.html",patterns:[{include:"#attribute"}]}},scopeName:"text.html.basic",embeddedLangs:["javascript","css"]});var r=[...t,...e,n];export{r as default}; diff --git a/assets/chunks/http.DvBm4YdT.js b/assets/chunks/http.DvBm4YdT.js new file mode 100644 index 000000000..47725a069 --- /dev/null +++ b/assets/chunks/http.DvBm4YdT.js @@ -0,0 +1 @@ +import t from"./shellscript.BZfs-ost.js";import e from"./json.CupVZNk8.js";import n from"./xml.BzTcx3OS.js";import a from"./graphql.C4V4xKFR.js";import"./java.ClXEvkw9.js";import"./javascript.Dch3xQiY.js";import"./typescript.DC8MraHL.js";import"./jsx.CsyrCbsw.js";import"./tsx.BlxWTfDV.js";const s=Object.freeze({displayName:"HTTP",fileTypes:["http","rest"],name:"http",patterns:[{begin:"^\\s*(?=curl)",end:"^\\s*(\\#{3,}.*?)?\\s*$",endCaptures:{0:{name:"comment.line.sharp.http"}},name:"http.request.curl",patterns:[{include:"source.shell"}]},{begin:"\\s*(?=(\\[|{[^{]))",end:"^\\s*(\\#{3,}.*?)?\\s*$",endCaptures:{0:{name:"comment.line.sharp.http"}},name:"http.request.body.json",patterns:[{include:"source.json"}]},{begin:"^\\s*(?=<\\S)",end:"^\\s*(\\#{3,}.*?)?\\s*$",endCaptures:{0:{name:"comment.line.sharp.http"}},name:"http.request.body.xml",patterns:[{include:"text.xml"}]},{begin:"\\s*(?=(query|mutation))",end:"^\\s*(\\#{3,}.*?)?\\s*$",endCaptures:{0:{name:"comment.line.sharp.http"}},name:"http.request.body.graphql",patterns:[{include:"source.graphql"}]},{begin:"\\s*(?=(query|mutation))",end:"^\\{\\s*$",name:"http.request.body.graphql",patterns:[{include:"source.graphql"}]},{include:"#metadata"},{include:"#comments"},{captures:{1:{name:"keyword.other.http"},2:{name:"variable.other.http"},3:{name:"string.other.http"}},match:"^\\s*(@)([^\\s=]+)\\s*=\\s*(.*?)\\s*$",name:"http.filevariable"},{captures:{1:{name:"keyword.operator.http"},2:{name:"variable.other.http"},3:{name:"string.other.http"}},match:"^\\s*(\\?|&)([^=\\s]+)=(.*)$",name:"http.query"},{captures:{1:{name:"entity.name.tag.http"},2:{name:"keyword.other.http"},3:{name:"string.other.http"}},match:"^([\\w\\-]+)\\s*(\\:)\\s*([^/].*?)\\s*$",name:"http.headers"},{include:"#request-line"},{include:"#response-line"}],repository:{comments:{patterns:[{match:"^\\s*\\#{1,}.*$",name:"comment.line.sharp.http"},{match:"^\\s*\\/{2,}.*$",name:"comment.line.double-slash.http"}]},metadata:{patterns:[{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"},3:{name:"entity.name.type.http"}},match:"^\\s*\\#{1,}\\s+(?:((@)name)\\s+([^\\s\\.]+))$",name:"comment.line.sharp.http"},{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"},3:{name:"entity.name.type.http"}},match:"^\\s*\\/{2,}\\s+(?:((@)name)\\s+([^\\s\\.]+))$",name:"comment.line.double-slash.http"},{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"}},match:"^\\s*\\#{1,}\\s+((@)note)\\s*$",name:"comment.line.sharp.http"},{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"}},match:"^\\s*\\/{2,}\\s+((@)note)\\s*$",name:"comment.line.double-slash.http"},{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"},3:{name:"variable.other.http"},4:{name:"string.other.http"}},match:"^\\s*\\#{1,}\\s+(?:((@)prompt)\\s+([^\\s]+)(?:\\s+(.*))?\\s*)$",name:"comment.line.sharp.http"},{captures:{1:{name:"entity.other.attribute-name"},2:{name:"punctuation.definition.block.tag.metadata"},3:{name:"variable.other.http"},4:{name:"string.other.http"}},match:"^\\s*\\/{2,}\\s+(?:((@)prompt)\\s+([^\\s]+)(?:\\s+(.*))?\\s*)$",name:"comment.line.double-slash.http"}]},protocol:{patterns:[{captures:{1:{name:"keyword.other.http"},2:{name:"constant.numeric.http"}},match:"(HTTP)/(\\d+.\\d+)",name:"http.version"}]},"request-line":{captures:{1:{name:"keyword.control.http"},2:{name:"const.language.http"},3:{patterns:[{include:"#protocol"}]}},match:"(?i)^(?:(get|post|put|delete|patch|head|options|connect|trace|lock|unlock|propfind|proppatch|copy|move|mkcol|mkcalendar|acl|search)\\s+)?\\s*(.+?)(?:\\s+(HTTP\\/\\S+))?$",name:"http.requestline"},"response-line":{captures:{1:{patterns:[{include:"#protocol"}]},2:{name:"constant.numeric.http"},3:{name:"string.other.http"}},match:"(?i)^\\s*(HTTP\\/\\S+)\\s([1-5][0-9][0-9])\\s(.*)$",name:"http.responseLine"}},scopeName:"source.http",embeddedLangs:["shellscript","json","xml","graphql"]});var d=[...t,...e,...n,...a,s];export{d as default}; diff --git a/assets/chunks/hy.C3qJFuQy.js b/assets/chunks/hy.C3qJFuQy.js new file mode 100644 index 000000000..dea06ffd7 --- /dev/null +++ b/assets/chunks/hy.C3qJFuQy.js @@ -0,0 +1,3 @@ +const e=Object.freeze({displayName:"Hy",name:"hy",patterns:[{include:"#all"}],repository:{all:{patterns:[{include:"#comment"},{include:"#constants"},{include:"#keywords"},{include:"#strings"},{include:"#operators"},{include:"#keysym"},{include:"#symbol"}]},comment:{patterns:[{match:"(;).*$",name:"comment.line.hy"}]},constants:{patterns:[{match:`(?<=[\\{\\[\\(\\s])([0-9]+(\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\s;()'",\\[\\]\\{\\}])`,name:"constant.numeric.hy"}]},keysym:{match:"(?*]):[\\.:\\w_\\-=!@\\$%^&?\\/<>*]*",name:"variable.other.constant"},keywords:{patterns:[{match:"\\b(\\.|->|->>|and|match|let|await|annotate|as->|as-model|assert|assoc|break|chainc|comment|cond|continue|do|doc|#doc|([dgls])?for|set[vx]|defclass|defmain|defmacro|defmacro\\/g!|defmacro!|deftag|del|doto|eval-and-compile|eval-when-compile|first|gensym|get|global|if|if\\*|if-not|import|(de)?fn(\\/a)?|last|nonlocal|not(\\?|-in)?|or|print|(quasi)?quote|require|rest|return|cut|raise|try|unless|unpack-iterable|unpack-mapping|unquote|unquote-splice|when|while|with(\\/a)?|with-decorator|with-gensyms|xor|yield(-from)?|butlast|coll\\?|comp|complement|constantly|dec|disassemble|empty\\?|eval|every\\?|exec|float\\?|fraction|even\\?|identity|inc|instance\\?|integer\\?|interleave|interpose|iterable\\?|iterator\\?|juxt|keyword|keyword\\?|macroexpand(-1)?|mangle|merge-with|name|neg\\?|none\\?|nth|numeric\\?|odd\\?|partition|pos\\?|second|some|string\\?|symbol\\?|zero\\?|cycle|distinct|drop|drop-last|drop-while|filter|flatten|iterate|read|read-str|remove|repeat|repeatedly|take|take-nth|take-while|unmangle|False|None|True|as|in|is|py(s)?|lambda|nonlocal|not|pass|abs|all|any|ascii|bin|bool|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr(-register)?|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip|__import__|abs|acos|angle|asin|assoc|assq|assv|atan|ceiling|cos|floor|round|sin|sqrt|tan|(?:real|imag)-part|numerator|denominatormodulo|exp|expt|remainder|quotient|lcm|call-with-(?:input|output)-file|(?:close|current)-(?:input|output)-port|with-(?:input|output)-from-file|open-(?:input|output)-file|char-(?:downcase|upcase|ready)|make-(?:polar|promise|rectangular|string|vector)|string(?:-(?:append|copy|length|ref))|vector(?:-length|-ref))[\\s\\)]",name:"keyword.control.hy"}]},operators:{patterns:[{match:"(?<=\\()\\s*(\\+=?|\\/+|\\*+|-=?|[!<>]?=|@|%|<<|>>|<|>|&|\\||\\^|~)",name:"keyword.control.hy"}]},strings:{begin:`(f?"|}(?=[^ +]*?[{"]))`,end:`("|(?<=["}][^ +]*?){)`,name:"string.quoted.double.hy",patterns:[{match:"\\\\.",name:"constant.character.escape.hy"}]},symbol:{match:"(?*#])[\\.a-zA-ZΑ-Ωα-ω_\\-=!@\\$%^*#][\\.:\\w_\\-=!@\\$%^&?/<>*#]*",name:"variable.other.hy"}},scopeName:"source.hy"});var t=[e];export{t as default}; diff --git a/assets/chunks/imba.DxX1Vuw3.js b/assets/chunks/imba.DxX1Vuw3.js new file mode 100644 index 000000000..4447a28cf --- /dev/null +++ b/assets/chunks/imba.DxX1Vuw3.js @@ -0,0 +1,223 @@ +import e from"./typescript.DC8MraHL.js";const n=Object.freeze({displayName:"Imba",fileTypes:["imba","imba2"],name:"imba",patterns:[{include:"#root"},{captures:{1:{name:"punctuation.definition.comment.imba"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.imba"}],repository:{"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.imba"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.imba"}},name:"meta.array.literal.imba",patterns:[{include:"#expr"},{include:"#punctuation-comma"}]},block:{patterns:[{include:"#style-declaration"},{include:"#mixin-declaration"},{include:"#object-keys"},{include:"#generics-literal"},{include:"#tag-literal"},{include:"#regex"},{include:"#keywords"},{include:"#comment"},{include:"#literal"},{include:"#plain-identifiers"},{include:"#plain-accessors"},{include:"#pairs"},{include:"#invalid-indentation"}]},"boolean-literal":{patterns:[{match:"(?>>|>>|>|\\+|~",name:"punctuation.separator.combinator.css"},{match:"&",name:"keyword.other.parent-selector.css"}]},"css-commas":{match:",",name:"punctuation.separator.list.comma.css"},"css-comment":{patterns:[{match:"\\#(\\s.+)?(\\n|$)",name:"comment.line.imba"},{match:"(^\\t+)(\\#(\\s.+)?(\\n|$))",name:"comment.line.imba"}]},"css-escapes":{patterns:[{match:"\\\\[0-9a-fA-F]{1,6}",name:"constant.character.escape.codepoint.css"},{begin:"\\\\$\\s*",end:"^(?[\\w-]|[^\\\\x00-\\\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+) +\\s* +(?=[~|^\\]$*=]|/\\*)`}]},{include:"#css-pseudo-classes"},{include:"#css-pseudo-elements"},{include:"#css-mixin"}]},"css-size-keywords":{patterns:[{match:"(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])",name:"support.constant.size.property-value.css"}]},"curly-braces":{begin:"\\s*(\\{)",beginCaptures:{1:{name:"meta.brace.curly.imba"}},end:"\\}",endCaptures:{0:{name:"meta.brace.curly.imba"}},patterns:[{include:"#expr"},{include:"#punctuation-comma"}]},decorator:{begin:"(?\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.imba"}},end:"(?=$)",name:"comment.line.triple-slash.directive.imba",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.imba"},2:{name:"entity.name.tag.directive.imba"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.imba"}},name:"meta.tag.imba",patterns:[{match:"path|types|no-default-lib|lib|name",name:"entity.other.attribute-name.directive.imba"},{match:"=",name:"keyword.operator.assignment.imba"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"()|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.imba"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.imba"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))(?=\\s+)"}]},expr:{patterns:[{include:"#style-declaration"},{include:"#object-keys"},{include:"#generics-literal"},{include:"#tag-literal"},{include:"#regex"},{include:"#keywords"},{include:"#comment"},{include:"#literal"},{include:"#plain-identifiers"},{include:"#plain-accessors"},{include:"#pairs"}]},expression:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.imba"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.imba"}},patterns:[{include:"#expr"}]},{include:"#tag-literal"},{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#literal"},{include:"#support-objects"}]},"generics-literal":{begin:"(?<=[\\w\\]\\)])\\<",beginCaptures:{1:{name:"meta.generics.annotation.open.imba"}},end:"\\>",endCaptures:{0:{name:"meta.generics.annotation.close.imba"}},name:"meta.generics.annotation.imba",patterns:[{include:"#type-brackets"}]},"global-literal":{match:"(?\\=?|\\<\\=?)",name:"keyword.operator.imba"},{match:"(of|delete|\\!?isa|typeof|\\!?in|new|\\!?is|isnt)(?![\\?_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.imba"}]},literal:{patterns:[{include:"#number-with-unit-literal"},{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#this-literal"},{include:"#global-literal"},{include:"#super-literal"},{include:"#type-literal"},{include:"#generics-literal"},{include:"#string"}]},"mixin-css-selector":{begin:"(\\%[\\w\\-]+)",beginCaptures:{1:{name:"entity.other.attribute-name.mixin.css"}},end:"(\\s*(?=(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=])[^\\:])|\\s*$|(?=\\s+\\#\\s))",endCaptures:{0:{name:"punctuation.separator.sel-properties.css"}},name:"meta.selector.css",patterns:[{include:"#css-selector-innards"}]},"mixin-css-selector-after":{begin:"(?<=%[\\w\\-]+)(?!(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=])[^\\:])",end:"(\\s*(?=(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=])[^\\:])|\\s*$|(?=\\s+\\#\\s))",endCaptures:{0:{name:"punctuation.separator.sel-properties.css"}},name:"meta.selector.css",patterns:[{include:"#css-selector-innards"}]},"mixin-declaration":{begin:"^(\\t*)(\\%[\\w\\-]+)",beginCaptures:{2:{name:"entity.other.attribute-name.mixin.css"}},end:"^(?!(\\1\\t|\\s*$))",name:"meta.style.imba",patterns:[{include:"#mixin-css-selector-after"},{include:"#css-comment"},{include:"#nested-css-selector"},{include:"#inline-styles"}]},"nested-css-selector":{begin:"(^\\t+)(?!(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=])[^\\:])",end:"(\\s*(?=(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=])[^\\:])|\\s*$|(?=\\s+\\#\\s))",endCaptures:{0:{name:"punctuation.separator.sel-properties.css"}},name:"meta.selector.css",patterns:[{include:"#css-selector-innards"}]},"nested-style-declaration":{begin:"^(\\t+)(?=[\\n^]*\\&)",end:"^(?!(\\1\\t|\\s*$))",name:"meta.style.imba",patterns:[{include:"#nested-css-selector"},{include:"#inline-styles"}]},"null-literal":{match:"(?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.imba"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.imba"},{match:"===|!==|==|!=|~=",name:"keyword.operator.comparison.imba"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.imba"},{captures:{1:{name:"keyword.operator.logical.imba"},2:{name:"keyword.operator.arithmetic.imba"}},match:"(\\!)\\s*(/)(?![/*])"},{match:"\\!|&&|\\|\\||\\?\\?|or\\b(?=\\s|$)|and\\b(?=\\s|$)|\\@\\b(?=\\s|$)",name:"keyword.operator.logical.imba"},{match:"\\?(?=\\s|$)",name:"keyword.operator.bitwise.imba"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.ternary.imba"},{match:"\\=",name:"keyword.operator.assignment.imba"},{match:"--",name:"keyword.operator.decrement.imba"},{match:"\\+\\+",name:"keyword.operator.increment.imba"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.imba"}]},pairs:{patterns:[{include:"#curly-braces"},{include:"#square-braces"},{include:"#round-braces"}]},"plain-accessors":{patterns:[{captures:{1:{name:"punctuation.accessor.imba"},2:{name:"variable.other.property.imba"}},match:"(\\.\\.?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)"}]},"plain-identifiers":{patterns:[{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.imba"},{match:"[[:upper:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\!]?",name:"variable.other.class.imba"},{match:"\\$\\d+",name:"variable.special.imba"},{match:"\\$[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"variable.other.internal.imba"},{match:"\\@\\@+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"variable.other.symbol.imba"},{match:"[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"variable.other.readwrite.imba"},{match:"\\@[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"variable.other.instance.imba"},{match:"\\#+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"variable.other.private.imba"},{match:"\\:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"string.symbol.imba"}]},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.imba"},2:{name:"punctuation.accessor.optional.imba"}},match:"(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.imba"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.imba"},"qstring-double":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.imba"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.imba"}},name:"string.quoted.double.imba",patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]},"qstring-single":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.imba"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.string.end.imba"},2:{name:"invalid.illegal.newline.imba"}},name:"string.quoted.single.imba",patterns:[{include:"#string-character-escape"}]},"qstring-single-multi":{begin:"'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.imba"}},end:"'''",endCaptures:{0:{name:"punctuation.definition.string.end.imba"}},name:"string.quoted.single.imba",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{begin:"(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([gimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.imba"}},end:"(/)([gimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.imba"},2:{name:"keyword.other.imba"}},name:"string.regexp.imba",patterns:[{include:"#regexp"}]},{begin:"((?"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},root:{patterns:[{include:"#block"}]},"round-braces":{begin:"\\s*(\\()",beginCaptures:{1:{name:"meta.brace.round.imba"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.imba"}},patterns:[{include:"#expr"},{include:"#punctuation-comma"}]},"single-line-comment-consuming-line-ending":{begin:"(^[ \\t]+)?((//|\\#\\s)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.imba"},2:{name:"comment.line.double-slash.imba"},3:{name:"punctuation.definition.comment.imba"},4:{name:"storage.type.internaldeclaration.imba"},5:{name:"punctuation.decorator.internaldeclaration.imba"}},contentName:"comment.line.double-slash.imba",end:"(?=^)"},"square-braces":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.imba"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.imba"}},patterns:[{include:"#expr"},{include:"#punctuation-comma"}]},string:{patterns:[{include:"#qstring-single-multi"},{include:"#qstring-double-multi"},{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{match:"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",name:"constant.character.escape.imba"},"style-declaration":{begin:"^(\\t*)(?:(global|local|export)\\s+)?(?:(scoped)\\s+)?(css)\\s",beginCaptures:{2:{name:"keyword.control.export.imba"},3:{name:"storage.modifier.imba"},4:{name:"storage.type.style.imba"}},end:"^(?!(\\1\\t|\\s*$))",name:"meta.style.imba",patterns:[{include:"#css-selector"},{include:"#css-comment"},{include:"#nested-css-selector"},{include:"#inline-styles"}]},"style-expr":{patterns:[{captures:{1:{name:"constant.numeric.integer.decimal.css"},2:{name:"keyword.other.unit.css"}},match:"(\\b[0-9][0-9_]*)(\\w+|%)?"},{match:"--[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"support.constant.property-value.var.css"},{match:"(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])",name:"support.constant.property-value.size.css"},{match:"[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?",name:"support.constant.property-value.css"},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",name:"meta.function.css",patterns:[{include:"#style-expr"}]}]},"style-property":{patterns:[{begin:"(?=(?:[\\^\\@\\.\\%\\w\\$\\!\\-]+)(?:\\s*[\\:\\=]))",beginCaptures:{1:{name:"support.function.calc.css"},2:{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\s*[\\:\\=]",endCaptures:{0:{name:"punctuation.separator.key-value.css"}},name:"meta.property-name.css",patterns:[{match:"(?:--|\\$)[\\w\\-\\$]+",name:"support.type.property-name.variable.css"},{match:"\\@[\\!\\<\\>]?[0-9]+",name:"support.type.property-name.modifier.breakpoint.css"},{match:"\\^?\\@+[\\w\\-\\$]+",name:"support.type.property-name.modifier.css"},{match:"\\^?\\.+[\\w\\-\\$]+",name:"support.type.property-name.modifier.flag.css"},{match:"\\^?\\%+[\\w\\-\\$]+",name:"support.type.property-name.modifier.state.css"},{match:"\\.\\.[\\w\\-\\$]+|\\^+[\\.\\@\\%][\\w\\-\\$]+",name:"support.type.property-name.modifier.up.css"},{match:"\\.[\\w\\-\\$]+",name:"support.type.property-name.modifier.is.css"},{match:"[\\w\\-\\$]+",name:"support.type.property-name.css"}]}]},"super-literal":{match:"(?\\=])"},"tag-attr-value":{begin:"(\\=)",beginCaptures:{0:{name:"keyword.operator.tag.assignment"}},contentName:"meta.tag.attribute-value.imba",end:"(?=>|\\s)",patterns:[{include:"#expr"}]},"tag-classname":{begin:"\\.",contentName:"entity.other.attribute-name.class.css",end:"(?=[\\.\\[\\>\\s\\(\\=])",patterns:[{include:"#tag-interpolated-content"}]},"tag-content":{patterns:[{include:"#tag-name"},{include:"#tag-expr-name"},{include:"#tag-interpolated-content"},{include:"#tag-interpolated-parens"},{include:"#tag-interpolated-brackets"},{include:"#tag-event-handler"},{include:"#tag-mixin-name"},{include:"#tag-classname"},{include:"#tag-ref"},{include:"#tag-attr-value"},{include:"#tag-attr-name"},{include:"#comment"}]},"tag-event-handler":{begin:"(\\@[\\w$_]+(?:\\-[\\w$_]+)*)",beginCaptures:{0:{name:"entity.other.event-name.imba"}},contentName:"entity.other.tag.event",end:"(?=[\\[\\>\\s\\=])",patterns:[{include:"#tag-interpolated-content"},{include:"#tag-interpolated-parens"},{begin:"\\.",beginCaptures:{0:{name:"punctuation.section.tag"}},end:"(?=[\\.\\[\\>\\s\\=]|$)",name:"entity.other.event-modifier.imba",patterns:[{include:"#tag-interpolated-parens"},{include:"#tag-interpolated-content"}]}]},"tag-expr-name":{begin:"(?<=<)(?=[\\w\\{])",contentName:"entity.name.tag.imba",end:"(?=[\\%\\$\\#\\.\\[\\>\\s\\(])",patterns:[{include:"#tag-interpolated-content"}]},"tag-interpolated-brackets":{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.tag.imba"}},contentName:"meta.embedded.line.imba",end:"\\]",endCaptures:{0:{name:"punctuation.section.tag.imba"}},name:"meta.tag.expression.imba",patterns:[{include:"#inline-css-selector"},{include:"#inline-styles"}]},"tag-interpolated-content":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.tag.imba"}},contentName:"meta.embedded.line.imba",end:"\\}",endCaptures:{0:{name:"punctuation.section.tag.imba"}},name:"meta.tag.expression.imba",patterns:[{include:"#expression"}]},"tag-interpolated-parens":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.tag.imba"}},contentName:"meta.embedded.line.imba",end:"\\)",endCaptures:{0:{name:"punctuation.section.tag.imba"}},name:"meta.tag.expression.imba",patterns:[{include:"#expression"}]},"tag-literal":{patterns:[{begin:"(<)(?=[\\%\\~\\w\\{\\[\\.\\#\\$\\@\\(])",beginCaptures:{1:{name:"punctuation.section.tag.open.imba"}},contentName:"meta.tag.attributes.imba",end:"(>)",endCaptures:{1:{name:"punctuation.section.tag.close.imba"}},name:"meta.tag.imba",patterns:[{include:"#tag-content"}]}]},"tag-mixin-name":{match:"(\\%[\\w\\-]+)",name:"entity.other.tag-mixin.imba"},"tag-name":{patterns:[{match:"(?<=<)(self|global|slot)(?=[\\.\\[\\>\\s\\(])",name:"entity.name.tag.special.imba"}]},"tag-ref":{match:"(\\$[\\w\\-]+)",name:"entity.other.tag-ref.imba"},template:{patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)({{typeArguments}}\\s*)?`)",end:"(?=`)",name:"string.template.imba",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))",end:"(?=({{typeArguments}}\\s*)?`)",patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",name:"entity.name.function.tagged-template.imba"}]}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)\\s*(?=({{typeArguments}}\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.imba"}},end:"(?=`)",name:"string.template.imba",patterns:[{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.imba"},2:{name:"punctuation.definition.string.template.begin.imba"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.template.end.imba"}},name:"string.template.imba",patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-substitution-element":{begin:"(?",patterns:[{include:"#type-brackets"}]},{begin:"\\(",end:"\\)",patterns:[{include:"#type-brackets"}]}]},"type-literal":{begin:"(\\\\)",beginCaptures:{1:{name:"meta.type.annotation.open.imba"}},end:"(?=[\\s\\]\\)\\,\\.\\=\\}]|$)",name:"meta.type.annotation.imba",patterns:[{include:"#type-brackets"}]},"undefined-literal":{match:"(?i.map(i=>d[i]); +var Xt=Object.defineProperty;var Jt=(i,e,t)=>e in i?Xt(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var p=(i,e,t)=>Jt(i,typeof e!="symbol"?e+"":e,t);import{X as u}from"./framework.BkavzUpE.js";const dt=[{id:"abap",name:"ABAP",import:()=>u(()=>import("./abap.DXFkqnOI.js"),[])},{id:"actionscript-3",name:"ActionScript",import:()=>u(()=>import("./actionscript-3.D6NljDpC.js"),[])},{id:"ada",name:"Ada",import:()=>u(()=>import("./ada.CowR2XfX.js"),[])},{id:"angular-html",name:"Angular HTML",import:()=>u(()=>import("./angular-html.833w9gUK.js").then(i=>i.e),__vite__mapDeps([0,1,2,3]))},{id:"angular-ts",name:"Angular TypeScript",import:()=>u(()=>import("./angular-ts.BCBvF5Sf.js"),__vite__mapDeps([4,0,1,2,3,5]))},{id:"apache",name:"Apache Conf",import:()=>u(()=>import("./apache.rS0jd3Ly.js"),[])},{id:"apex",name:"Apex",import:()=>u(()=>import("./apex.Sfo2eW0G.js"),[])},{id:"apl",name:"APL",import:()=>u(()=>import("./apl.7kPAH7yp.js"),__vite__mapDeps([6,1,2,3,7,8,9]))},{id:"applescript",name:"AppleScript",import:()=>u(()=>import("./applescript.B4yE-MfL.js"),[])},{id:"ara",name:"Ara",import:()=>u(()=>import("./ara.CG4fK2Nq.js"),[])},{id:"asm",name:"Assembly",import:()=>u(()=>import("./asm.PWN5J14X.js"),[])},{id:"astro",name:"Astro",import:()=>u(()=>import("./astro.Dtt22nl1.js"),__vite__mapDeps([10,9,2,11,12,13,3,5,14,15,16]))},{id:"awk",name:"AWK",import:()=>u(()=>import("./awk.i0IPvypD.js"),[])},{id:"ballerina",name:"Ballerina",import:()=>u(()=>import("./ballerina.T9ysyp6P.js"),[])},{id:"bat",name:"Batch File",aliases:["batch"],import:()=>u(()=>import("./bat.BPiaQZfK.js"),[])},{id:"beancount",name:"Beancount",import:()=>u(()=>import("./beancount.Urb1RsFe.js"),[])},{id:"berry",name:"Berry",aliases:["be"],import:()=>u(()=>import("./berry.CxrokwfH.js"),[])},{id:"bibtex",name:"BibTeX",import:()=>u(()=>import("./bibtex.BaedD2tq.js"),[])},{id:"bicep",name:"Bicep",import:()=>u(()=>import("./bicep.3ghuYFLd.js"),[])},{id:"blade",name:"Blade",import:()=>u(()=>import("./blade.Ge7MpD7w.js"),__vite__mapDeps([17,1,2,3,7,8,18,9]))},{id:"c",name:"C",import:()=>u(()=>import("./c.RCJZWN-0.js"),[])},{id:"cadence",name:"Cadence",aliases:["cdc"],import:()=>u(()=>import("./cadence.Bgpqy2XC.js"),[])},{id:"clarity",name:"Clarity",import:()=>u(()=>import("./clarity.CIekO_uJ.js"),[])},{id:"clojure",name:"Clojure",aliases:["clj"],import:()=>u(()=>import("./clojure.BF6G6X0H.js"),[])},{id:"cmake",name:"CMake",import:()=>u(()=>import("./cmake.DXZpi2gR.js"),[])},{id:"cobol",name:"COBOL",import:()=>u(()=>import("./cobol.Be8n44jy.js"),__vite__mapDeps([19,18,1,2,3,8]))},{id:"codeql",name:"CodeQL",aliases:["ql"],import:()=>u(()=>import("./codeql.BOpLLL-w.js"),[])},{id:"coffee",name:"CoffeeScript",aliases:["coffeescript"],import:()=>u(()=>import("./coffee.t_LrLW_f.js"),__vite__mapDeps([20,2]))},{id:"common-lisp",name:"Common Lisp",aliases:["lisp"],import:()=>u(()=>import("./common-lisp.CX2EUjC8.js"),[])},{id:"cpp",name:"C++",aliases:["c++"],import:()=>u(()=>import("./cpp.BnO_O5bK.js"),__vite__mapDeps([21,22,23,18]))},{id:"crystal",name:"Crystal",import:()=>u(()=>import("./crystal.DUeHF1Px.js"),__vite__mapDeps([24,1,2,3,18,23,25]))},{id:"csharp",name:"C#",aliases:["c#","cs"],import:()=>u(()=>import("./csharp.DISxKEhY.js"),[])},{id:"css",name:"CSS",import:()=>u(()=>import("./css.CbYhyuC0.js"),[])},{id:"csv",name:"CSV",import:()=>u(()=>import("./csv.B2DkETJQ.js"),[])},{id:"cue",name:"CUE",import:()=>u(()=>import("./cue.C6Aznpr-.js"),[])},{id:"cypher",name:"Cypher",aliases:["cql"],import:()=>u(()=>import("./cypher.ByMv4Xf1.js"),[])},{id:"d",name:"D",import:()=>u(()=>import("./d.PifQWv0n.js"),[])},{id:"dart",name:"Dart",import:()=>u(()=>import("./dart.DZLoTQm4.js"),[])},{id:"dax",name:"DAX",import:()=>u(()=>import("./dax.DsfXcHUZ.js"),[])},{id:"desktop",name:"Desktop",import:()=>u(()=>import("./desktop.D71BffLY.js"),[])},{id:"diff",name:"Diff",import:()=>u(()=>import("./diff.DvyTQcux.js"),[])},{id:"docker",name:"Dockerfile",aliases:["dockerfile"],import:()=>u(()=>import("./docker.DNR26wTC.js"),[])},{id:"dream-maker",name:"Dream Maker",import:()=>u(()=>import("./dream-maker.Eh5U-gDp.js"),[])},{id:"elixir",name:"Elixir",import:()=>u(()=>import("./elixir.CpdO1lki.js"),__vite__mapDeps([26,1,2,3]))},{id:"elm",name:"Elm",import:()=>u(()=>import("./elm.DbZvrHdh.js"),__vite__mapDeps([27,22,23]))},{id:"erb",name:"ERB",import:()=>u(()=>import("./erb.C8njeWMx.js"),__vite__mapDeps([28,1,2,3,29,7,8,18,23,25,30]))},{id:"erlang",name:"Erlang",aliases:["erl"],import:()=>u(()=>import("./erlang.DS9ZWoKD.js"),[])},{id:"fennel",name:"Fennel",import:()=>u(()=>import("./fennel.C6XIsc4F.js"),[])},{id:"fish",name:"Fish",import:()=>u(()=>import("./fish.DfeQjIbs.js"),[])},{id:"fortran-fixed-form",name:"Fortran (Fixed Form)",aliases:["f","for","f77"],import:()=>u(()=>import("./fortran-fixed-form.Cx0tWteX.js"),__vite__mapDeps([31,32]))},{id:"fortran-free-form",name:"Fortran (Free Form)",aliases:["f90","f95","f03","f08","f18"],import:()=>u(()=>import("./fortran-free-form.D6pmzCqS.js"),[])},{id:"fsharp",name:"F#",aliases:["f#","fs"],import:()=>u(()=>import("./fsharp.COWl2xCs.js"),__vite__mapDeps([33,34]))},{id:"gdresource",name:"GDResource",import:()=>u(()=>import("./gdresource.Dyo1-XBj.js"),__vite__mapDeps([35,36,37]))},{id:"gdscript",name:"GDScript",import:()=>u(()=>import("./gdscript.CoEqzGFw.js"),[])},{id:"gdshader",name:"GDShader",import:()=>u(()=>import("./gdshader.B_SUYfiV.js"),[])},{id:"gherkin",name:"Gherkin",import:()=>u(()=>import("./gherkin.DjTlIhuc.js"),[])},{id:"git-commit",name:"Git Commit Message",import:()=>u(()=>import("./git-commit.aPmGthaS.js"),__vite__mapDeps([38,39]))},{id:"git-rebase",name:"Git Rebase Message",import:()=>u(()=>import("./git-rebase.wSeoO_tD.js"),__vite__mapDeps([40,25]))},{id:"gleam",name:"Gleam",import:()=>u(()=>import("./gleam.Dz2Ca8U2.js"),[])},{id:"glimmer-js",name:"Glimmer JS",aliases:["gjs"],import:()=>u(()=>import("./glimmer-js.CKLJpqca.js"),__vite__mapDeps([41,2,11,3,1]))},{id:"glimmer-ts",name:"Glimmer TS",aliases:["gts"],import:()=>u(()=>import("./glimmer-ts.Bp7XmXVh.js"),__vite__mapDeps([42,11,3,2,1]))},{id:"glsl",name:"GLSL",import:()=>u(()=>import("./glsl.-GlVTnW0.js"),__vite__mapDeps([22,23]))},{id:"gnuplot",name:"Gnuplot",import:()=>u(()=>import("./gnuplot.nclm9rTJ.js"),[])},{id:"go",name:"Go",import:()=>u(()=>import("./go.BAMIS8DD.js"),[])},{id:"graphql",name:"GraphQL",aliases:["gql"],import:()=>u(()=>import("./graphql.C4V4xKFR.js"),__vite__mapDeps([43,2,11,44,16]))},{id:"groovy",name:"Groovy",import:()=>u(()=>import("./groovy.wChcbJ1V.js"),[])},{id:"hack",name:"Hack",import:()=>u(()=>import("./hack.B30vrIHT.js"),__vite__mapDeps([45,1,2,3,18]))},{id:"haml",name:"Ruby Haml",import:()=>u(()=>import("./haml.RaSm5nLU.js"),__vite__mapDeps([46,29,1,2,3,7,8,18,23,25,30,13,20,34]))},{id:"handlebars",name:"Handlebars",aliases:["hbs"],import:()=>u(()=>import("./handlebars.W0zz18bm.js"),__vite__mapDeps([47,1,2,3,48]))},{id:"haskell",name:"Haskell",aliases:["hs"],import:()=>u(()=>import("./haskell.DAGYewaG.js"),[])},{id:"hcl",name:"HashiCorp HCL",import:()=>u(()=>import("./hcl.CudBhkk3.js"),[])},{id:"hjson",name:"Hjson",import:()=>u(()=>import("./hjson.DZqG9GXz.js"),[])},{id:"hlsl",name:"HLSL",import:()=>u(()=>import("./hlsl.DmDrTTlz.js"),[])},{id:"html",name:"HTML",import:()=>u(()=>import("./html.CuK0VrWf.js"),__vite__mapDeps([1,2,3]))},{id:"html-derivative",name:"HTML (Derivative)",import:()=>u(()=>import("./html-derivative.fiapQfxX.js"),__vite__mapDeps([49,1,2,3]))},{id:"http",name:"HTTP",import:()=>u(()=>import("./http.DvBm4YdT.js"),__vite__mapDeps([50,25,9,7,8,43,2,11,44,16]))},{id:"hy",name:"Hy",import:()=>u(()=>import("./hy.C3qJFuQy.js"),[])},{id:"imba",name:"Imba",import:()=>u(()=>import("./imba.DxX1Vuw3.js"),__vite__mapDeps([51,11]))},{id:"ini",name:"INI",aliases:["properties"],import:()=>u(()=>import("./ini.DeVv6D4_.js"),[])},{id:"java",name:"Java",import:()=>u(()=>import("./java.ClXEvkw9.js"),[])},{id:"javascript",name:"JavaScript",aliases:["js"],import:()=>u(()=>import("./javascript.Dch3xQiY.js"),[])},{id:"jinja",name:"Jinja",import:()=>u(()=>import("./jinja.DWD-OL5F.js"),__vite__mapDeps([52,1,2,3]))},{id:"jison",name:"Jison",import:()=>u(()=>import("./jison.CHwQvgii.js"),__vite__mapDeps([53,2]))},{id:"json",name:"JSON",import:()=>u(()=>import("./json.CupVZNk8.js"),[])},{id:"json5",name:"JSON5",import:()=>u(()=>import("./json5.Bh8mriwU.js"),[])},{id:"jsonc",name:"JSON with Comments",import:()=>u(()=>import("./jsonc.DYI1rfmx.js"),[])},{id:"jsonl",name:"JSON Lines",import:()=>u(()=>import("./jsonl.BUpeXbsf.js"),[])},{id:"jsonnet",name:"Jsonnet",import:()=>u(()=>import("./jsonnet.C9d3aiqh.js"),[])},{id:"jssm",name:"JSSM",aliases:["fsl"],import:()=>u(()=>import("./jssm.Dble9ECP.js"),[])},{id:"jsx",name:"JSX",import:()=>u(()=>import("./jsx.CsyrCbsw.js"),[])},{id:"julia",name:"Julia",aliases:["jl"],import:()=>u(()=>import("./julia.CyGW3mcn.js"),__vite__mapDeps([54,21,22,23,18,55,2,56]))},{id:"kotlin",name:"Kotlin",aliases:["kt","kts"],import:()=>u(()=>import("./kotlin.BIxS-Weu.js"),[])},{id:"kusto",name:"Kusto",aliases:["kql"],import:()=>u(()=>import("./kusto.DIr-ordK.js"),[])},{id:"latex",name:"LaTeX",import:()=>u(()=>import("./latex.CbyClHu1.js"),__vite__mapDeps([57,58,56,25,3,59,60,1,2,8,54,21,22,23,18,55,30,29,7,61,11,48,62]))},{id:"less",name:"Less",import:()=>u(()=>import("./less.Du6_OKDb.js"),[])},{id:"liquid",name:"Liquid",import:()=>u(()=>import("./liquid.Cp8214eI.js"),__vite__mapDeps([63,1,2,3,9]))},{id:"log",name:"Log file",import:()=>u(()=>import("./log.Ksn5IXup.js"),[])},{id:"logo",name:"Logo",import:()=>u(()=>import("./logo.DdacRhvC.js"),[])},{id:"lua",name:"Lua",import:()=>u(()=>import("./lua.CHJYZA-p.js"),__vite__mapDeps([30,23]))},{id:"make",name:"Makefile",aliases:["makefile"],import:()=>u(()=>import("./make.B9S9BZZh.js"),[])},{id:"markdown",name:"Markdown",aliases:["md"],import:()=>u(()=>import("./markdown.BdfWgkoX.js"),[])},{id:"marko",name:"Marko",import:()=>u(()=>import("./marko.DXVuwHdi.js"),__vite__mapDeps([64,3,14,5,2]))},{id:"matlab",name:"MATLAB",import:()=>u(()=>import("./matlab.Btshr8M_.js"),[])},{id:"mdc",name:"MDC",import:()=>u(()=>import("./mdc.BtXAnNXs.js"),__vite__mapDeps([65,34,48,49,1,2,3]))},{id:"mdx",name:"MDX",import:()=>u(()=>import("./mdx.CBPJd_fO.js"),[])},{id:"mermaid",name:"Mermaid",import:()=>u(()=>import("./mermaid.Dkb1Nx48.js"),[])},{id:"mojo",name:"Mojo",import:()=>u(()=>import("./mojo.-7WWnkdy.js"),[])},{id:"move",name:"Move",import:()=>u(()=>import("./move.C9UBdavN.js"),[])},{id:"narrat",name:"Narrat Language",aliases:["nar"],import:()=>u(()=>import("./narrat.B9CT-1u6.js"),[])},{id:"nextflow",name:"Nextflow",aliases:["nf"],import:()=>u(()=>import("./nextflow.DBxHOdLe.js"),[])},{id:"nginx",name:"Nginx",import:()=>u(()=>import("./nginx.CFCDRImM.js"),__vite__mapDeps([66,30,23]))},{id:"nim",name:"Nim",import:()=>u(()=>import("./nim.whBoXTHG.js"),__vite__mapDeps([67,23,1,2,3,7,8,22,34]))},{id:"nix",name:"Nix",import:()=>u(()=>import("./nix.Dszwcx0o.js"),[])},{id:"nushell",name:"nushell",aliases:["nu"],import:()=>u(()=>import("./nushell.CrgTADc5.js"),[])},{id:"objective-c",name:"Objective-C",aliases:["objc"],import:()=>u(()=>import("./objective-c.DHmGyzbM.js"),[])},{id:"objective-cpp",name:"Objective-C++",import:()=>u(()=>import("./objective-cpp.BWKJ1FCf.js"),[])},{id:"ocaml",name:"OCaml",import:()=>u(()=>import("./ocaml.RqY_Nz63.js"),[])},{id:"pascal",name:"Pascal",import:()=>u(()=>import("./pascal.B6ZnTe72.js"),[])},{id:"perl",name:"Perl",import:()=>u(()=>import("./perl.Czv4QcIx.js"),__vite__mapDeps([68,1,2,3,7,8,18]))},{id:"php",name:"PHP",import:()=>u(()=>import("./php.DEqKwr-6.js"),__vite__mapDeps([69,1,2,3,7,8,18,9]))},{id:"plsql",name:"PL/SQL",import:()=>u(()=>import("./plsql.BbJj1K1w.js"),[])},{id:"po",name:"Gettext PO",aliases:["pot","potx"],import:()=>u(()=>import("./po.HrnDn_2Q.js"),[])},{id:"postcss",name:"PostCSS",import:()=>u(()=>import("./postcss.DXT9h7v2.js"),[])},{id:"powerquery",name:"PowerQuery",import:()=>u(()=>import("./powerquery.CApMHEaB.js"),[])},{id:"powershell",name:"PowerShell",aliases:["ps","ps1"],import:()=>u(()=>import("./powershell.9ZOzOPqN.js"),[])},{id:"prisma",name:"Prisma",import:()=>u(()=>import("./prisma.BBJYjQ0k.js"),[])},{id:"prolog",name:"Prolog",import:()=>u(()=>import("./prolog.BH_RS3WO.js"),[])},{id:"proto",name:"Protocol Buffer 3",import:()=>u(()=>import("./proto.DOtRmeXT.js"),[])},{id:"pug",name:"Pug",aliases:["jade"],import:()=>u(()=>import("./pug.BWq4yR4F.js"),__vite__mapDeps([70,2,3,13,5,12,20,1]))},{id:"puppet",name:"Puppet",import:()=>u(()=>import("./puppet.37ic6j3l.js"),[])},{id:"purescript",name:"PureScript",import:()=>u(()=>import("./purescript.CfPQhs6g.js"),[])},{id:"python",name:"Python",aliases:["py"],import:()=>u(()=>import("./python.DwuVtWc2.js"),[])},{id:"r",name:"R",import:()=>u(()=>import("./r.BXfENWL6.js"),[])},{id:"racket",name:"Racket",import:()=>u(()=>import("./racket.B5NHDIr7.js"),[])},{id:"raku",name:"Raku",aliases:["perl6"],import:()=>u(()=>import("./raku.D384ylkT.js"),[])},{id:"razor",name:"ASP.NET Razor",import:()=>u(()=>import("./razor.BPIJn9no.js"),__vite__mapDeps([71,1,2,3,72]))},{id:"reg",name:"Windows Registry Script",import:()=>u(()=>import("./reg.CrhH3_Og.js"),[])},{id:"rel",name:"Rel",import:()=>u(()=>import("./rel.6Kuza3Wr.js"),[])},{id:"riscv",name:"RISC-V",import:()=>u(()=>import("./riscv.AgnqFTPX.js"),[])},{id:"rst",name:"reStructuredText",import:()=>u(()=>import("./rst.MQSXyo4o.js"),__vite__mapDeps([73,49,1,2,3,21,22,23,18,55,25,48,74,29,7,8,30]))},{id:"ruby",name:"Ruby",aliases:["rb"],import:()=>u(()=>import("./ruby.BYVeyLWu.js"),__vite__mapDeps([29,1,2,3,7,8,18,23,25,30]))},{id:"rust",name:"Rust",aliases:["rs"],import:()=>u(()=>import("./rust.DGxQkqYo.js"),[])},{id:"sas",name:"SAS",import:()=>u(()=>import("./sas.2Dj3KWk-.js"),__vite__mapDeps([75,18]))},{id:"sass",name:"Sass",import:()=>u(()=>import("./sass.CMDmr8et.js"),[])},{id:"scala",name:"Scala",import:()=>u(()=>import("./scala.vMsNTMhM.js"),[])},{id:"scheme",name:"Scheme",import:()=>u(()=>import("./scheme.1Je9_Reo.js"),[])},{id:"scss",name:"SCSS",import:()=>u(()=>import("./scss.Dr-_CcBd.js"),__vite__mapDeps([5,3]))},{id:"shaderlab",name:"ShaderLab",aliases:["shader"],import:()=>u(()=>import("./shaderlab.D_C8j_yu.js"),__vite__mapDeps([76,77]))},{id:"shellscript",name:"Shell",aliases:["bash","sh","shell","zsh"],import:()=>u(()=>import("./shellscript.BZfs-ost.js"),[])},{id:"shellsession",name:"Shell Session",aliases:["console"],import:()=>u(()=>import("./shellsession.D2P9pGgM.js"),__vite__mapDeps([78,25]))},{id:"smalltalk",name:"Smalltalk",import:()=>u(()=>import("./smalltalk.DSsji4Hu.js"),[])},{id:"solidity",name:"Solidity",import:()=>u(()=>import("./solidity.CThH5sBG.js"),[])},{id:"sparql",name:"SPARQL",import:()=>u(()=>import("./sparql.DJ46LgWq.js"),__vite__mapDeps([79,80]))},{id:"splunk",name:"Splunk Query Language",aliases:["spl"],import:()=>u(()=>import("./splunk.6XBPEST2.js"),[])},{id:"sql",name:"SQL",import:()=>u(()=>import("./sql.DbK06e1c.js"),[])},{id:"ssh-config",name:"SSH Config",import:()=>u(()=>import("./ssh-config.BH1M7C1g.js"),[])},{id:"stata",name:"Stata",import:()=>u(()=>import("./stata.DCIeX9IZ.js"),__vite__mapDeps([81,18]))},{id:"stylus",name:"Stylus",aliases:["styl"],import:()=>u(()=>import("./stylus.DSrLtGYv.js"),[])},{id:"svelte",name:"Svelte",import:()=>u(()=>import("./svelte.CpQM5Shq.js"),__vite__mapDeps([82,2,11,20,12,13,3,5,14,15,70,1,34]))},{id:"swift",name:"Swift",import:()=>u(()=>import("./swift.Dez-Qvcc.js"),[])},{id:"system-verilog",name:"SystemVerilog",import:()=>u(()=>import("./system-verilog.BscxmKrE.js"),[])},{id:"systemd",name:"Systemd Units",import:()=>u(()=>import("./systemd.CuJfdYLG.js"),[])},{id:"tasl",name:"Tasl",import:()=>u(()=>import("./tasl.BxwAa5i0.js"),[])},{id:"tcl",name:"Tcl",import:()=>u(()=>import("./tcl.C_8Fx7bH.js"),[])},{id:"terraform",name:"Terraform",aliases:["tf","tfvars"],import:()=>u(()=>import("./terraform.DBeuZS66.js"),[])},{id:"tex",name:"TeX",import:()=>u(()=>import("./tex.-C-BpcSB.js"),__vite__mapDeps([58,56]))},{id:"toml",name:"TOML",import:()=>u(()=>import("./toml.BT9ZzGyQ.js"),[])},{id:"tsv",name:"TSV",import:()=>u(()=>import("./tsv.DnLUQrgA.js"),[])},{id:"tsx",name:"TSX",import:()=>u(()=>import("./tsx.BlxWTfDV.js"),[])},{id:"turtle",name:"Turtle",import:()=>u(()=>import("./turtle.C15OxdQ5.js"),[])},{id:"twig",name:"Twig",import:()=>u(()=>import("./twig.C7WLmjjl.js"),__vite__mapDeps([83,3,2,5,69,1,7,8,18,9,55,29,23,25,30]))},{id:"typescript",name:"TypeScript",aliases:["ts"],import:()=>u(()=>import("./typescript.DC8MraHL.js"),[])},{id:"typst",name:"Typst",aliases:["typ"],import:()=>u(()=>import("./typst.I4qd5QHW.js"),[])},{id:"v",name:"V",import:()=>u(()=>import("./v.C2TBxDwV.js"),[])},{id:"vb",name:"Visual Basic",aliases:["cmd"],import:()=>u(()=>import("./vb.beD-FUib.js"),[])},{id:"verilog",name:"Verilog",import:()=>u(()=>import("./verilog.DVfdqzEq.js"),[])},{id:"vhdl",name:"VHDL",import:()=>u(()=>import("./vhdl.QZ3jNtnE.js"),[])},{id:"viml",name:"Vim Script",aliases:["vim","vimscript"],import:()=>u(()=>import("./viml.BLluXI4E.js"),[])},{id:"vue",name:"Vue",import:()=>u(()=>import("./vue.DT8Wph6y.js"),__vite__mapDeps([84,1,2,3,34,70,13,5,12,20,14,11,44,16,9,85,86,48,87,43,49]))},{id:"vue-html",name:"Vue HTML",import:()=>u(()=>import("./vue-html.B4wQFpQy.js"),__vite__mapDeps([88,84,1,2,3,34,70,13,5,12,20,14,11,44,16,9,85,86,48,87,43,49]))},{id:"vyper",name:"Vyper",aliases:["vy"],import:()=>u(()=>import("./vyper.o-cPXEvd.js"),[])},{id:"wasm",name:"WebAssembly",import:()=>u(()=>import("./wasm.Cicx_DS6.js"),[])},{id:"wenyan",name:"Wenyan",aliases:["文言"],import:()=>u(()=>import("./wenyan.D3VXSfF0.js"),[])},{id:"wgsl",name:"WGSL",import:()=>u(()=>import("./wgsl.BZz1Hhek.js"),[])},{id:"wolfram",name:"Wolfram",aliases:["wl"],import:()=>u(()=>import("./wolfram.BICIrM8O.js"),[])},{id:"xml",name:"XML",import:()=>u(()=>import("./xml.BzTcx3OS.js"),__vite__mapDeps([7,8]))},{id:"xsl",name:"XSL",import:()=>u(()=>import("./xsl.lJB8dDLf.js"),__vite__mapDeps([89,7,8]))},{id:"yaml",name:"YAML",aliases:["yml"],import:()=>u(()=>import("./yaml.C5gCGmDW.js"),[])},{id:"zenscript",name:"ZenScript",import:()=>u(()=>import("./zenscript.B1nm99XP.js"),[])},{id:"zig",name:"Zig",import:()=>u(()=>import("./zig.Bsp1M94H.js"),[])}],Qt=Object.fromEntries(dt.map(i=>[i.id,i.import])),Zt=Object.fromEntries(dt.flatMap(i=>{var e;return((e=i.aliases)==null?void 0:e.map(t=>[t,i.import]))||[]})),en={...Qt,...Zt},tn=async i=>u(()=>import("./wasm.CsTmP73Z.js"),[]).then(e=>e.default(i)),nn=[{id:"andromeeda",displayName:"Andromeeda",type:"dark",import:()=>u(()=>import("./andromeeda.YxQm0tCS.js"),[])},{id:"aurora-x",displayName:"Aurora X",type:"dark",import:()=>u(()=>import("./aurora-x.BaWyeHV_.js"),[])},{id:"ayu-dark",displayName:"Ayu Dark",type:"dark",import:()=>u(()=>import("./ayu-dark.Bn5gmY5k.js"),[])},{id:"catppuccin-frappe",displayName:"Catppuccin Frappé",type:"dark",import:()=>u(()=>import("./catppuccin-frappe.CSPeAESR.js"),[])},{id:"catppuccin-latte",displayName:"Catppuccin Latte",type:"light",import:()=>u(()=>import("./catppuccin-latte.BYdKNJ10.js"),[])},{id:"catppuccin-macchiato",displayName:"Catppuccin Macchiato",type:"dark",import:()=>u(()=>import("./catppuccin-macchiato.DVLwECkk.js"),[])},{id:"catppuccin-mocha",displayName:"Catppuccin Mocha",type:"dark",import:()=>u(()=>import("./catppuccin-mocha.CEfge3mM.js"),[])},{id:"dark-plus",displayName:"Dark Plus",type:"dark",import:()=>u(()=>import("./dark-plus.KEYLhlmT.js"),[])},{id:"dracula",displayName:"Dracula",type:"dark",import:()=>u(()=>import("./dracula.DGO8GyiP.js"),[])},{id:"dracula-soft",displayName:"Dracula Soft",type:"dark",import:()=>u(()=>import("./dracula-soft.9B1nZgL-.js"),[])},{id:"github-dark",displayName:"GitHub Dark",type:"dark",import:()=>u(()=>import("./github-dark.CzPA46E-.js"),[])},{id:"github-dark-default",displayName:"GitHub Dark Default",type:"dark",import:()=>u(()=>import("./github-dark-default.BXF7Vm5l.js"),[])},{id:"github-dark-dimmed",displayName:"GitHub Dark Dimmed",type:"dark",import:()=>u(()=>import("./github-dark-dimmed.CRDKj6ck.js"),[])},{id:"github-light",displayName:"GitHub Light",type:"light",import:()=>u(()=>import("./github-light.CRlnGVMD.js"),[])},{id:"github-light-default",displayName:"GitHub Light Default",type:"light",import:()=>u(()=>import("./github-light-default.UREJT2Bw.js"),[])},{id:"houston",displayName:"Houston",type:"dark",import:()=>u(()=>import("./houston.CZZ6oYdA.js"),[])},{id:"light-plus",displayName:"Light Plus",type:"light",import:()=>u(()=>import("./light-plus.BsvsQ1iS.js"),[])},{id:"material-theme",displayName:"Material Theme",type:"dark",import:()=>u(()=>import("./material-theme.B2BuIiKK.js"),[])},{id:"material-theme-darker",displayName:"Material Theme Darker",type:"dark",import:()=>u(()=>import("./material-theme-darker.BrGg7AAd.js"),[])},{id:"material-theme-lighter",displayName:"Material Theme Lighter",type:"light",import:()=>u(()=>import("./material-theme-lighter.DDRuGeQH.js"),[])},{id:"material-theme-ocean",displayName:"Material Theme Ocean",type:"dark",import:()=>u(()=>import("./material-theme-ocean.CBL0qBdF.js"),[])},{id:"material-theme-palenight",displayName:"Material Theme Palenight",type:"dark",import:()=>u(()=>import("./material-theme-palenight.D7gg1Usp.js"),[])},{id:"min-dark",displayName:"Min Dark",type:"dark",import:()=>u(()=>import("./min-dark.iSbrOpM4.js"),[])},{id:"min-light",displayName:"Min Light",type:"light",import:()=>u(()=>import("./min-light.BITGhEdf.js"),[])},{id:"monokai",displayName:"Monokai",type:"dark",import:()=>u(()=>import("./monokai.sMI-pExk.js"),[])},{id:"night-owl",displayName:"Night Owl",type:"dark",import:()=>u(()=>import("./night-owl.BeocmOPF.js"),[])},{id:"nord",displayName:"Nord",type:"dark",import:()=>u(()=>import("./nord.CsyjKwr8.js"),[])},{id:"one-dark-pro",displayName:"One Dark Pro",type:"dark",import:()=>u(()=>import("./one-dark-pro.BTtaZsq5.js"),[])},{id:"one-light",displayName:"One Light",type:"light",import:()=>u(()=>import("./one-light.alpzPJ78.js"),[])},{id:"poimandres",displayName:"Poimandres",type:"dark",import:()=>u(()=>import("./poimandres.Cda-MJFk.js"),[])},{id:"red",displayName:"Red",type:"dark",import:()=>u(()=>import("./red.jaXbsbtS.js"),[])},{id:"rose-pine",displayName:"Rosé Pine",type:"dark",import:()=>u(()=>import("./rose-pine.CX_FIdg1.js"),[])},{id:"rose-pine-dawn",displayName:"Rosé Pine Dawn",type:"light",import:()=>u(()=>import("./rose-pine-dawn.Bj5xdiaE.js"),[])},{id:"rose-pine-moon",displayName:"Rosé Pine Moon",type:"dark",import:()=>u(()=>import("./rose-pine-moon.CdedUr_-.js"),[])},{id:"slack-dark",displayName:"Slack Dark",type:"dark",import:()=>u(()=>import("./slack-dark.C7oZ9nno.js"),[])},{id:"slack-ochin",displayName:"Slack Ochin",type:"light",import:()=>u(()=>import("./slack-ochin.hXH8Gyq8.js"),[])},{id:"snazzy-light",displayName:"Snazzy Light",type:"light",import:()=>u(()=>import("./snazzy-light.CA9nliXM.js"),[])},{id:"solarized-dark",displayName:"Solarized Dark",type:"dark",import:()=>u(()=>import("./solarized-dark.C86elO-m.js"),[])},{id:"solarized-light",displayName:"Solarized Light",type:"light",import:()=>u(()=>import("./solarized-light.xPNGhBYe.js"),[])},{id:"synthwave-84",displayName:"Synthwave '84",type:"dark",import:()=>u(()=>import("./synthwave-84.BBDuFDsq.js"),[])},{id:"tokyo-night",displayName:"Tokyo Night",type:"dark",import:()=>u(()=>import("./tokyo-night.eJfcURhx.js"),[])},{id:"vesper",displayName:"Vesper",type:"dark",import:()=>u(()=>import("./vesper.BSB_bK09.js"),[])},{id:"vitesse-black",displayName:"Vitesse Black",type:"dark",import:()=>u(()=>import("./vitesse-black.CDJL3WWm.js"),[])},{id:"vitesse-dark",displayName:"Vitesse Dark",type:"dark",import:()=>u(()=>import("./vitesse-dark.V_y36BGi.js"),[])},{id:"vitesse-light",displayName:"Vitesse Light",type:"light",import:()=>u(()=>import("./vitesse-light.BGq4KZyx.js"),[])}],rn=Object.fromEntries(nn.map(i=>[i.id,i.import]));var B;(function(i){i[i.NotSet=-1]="NotSet",i[i.None=0]="None",i[i.Italic=1]="Italic",i[i.Bold=2]="Bold",i[i.Underline=4]="Underline"})(B||(B={}));var J;(function(i){function e(d){return d.toString(2).padStart(32,"0")}i.toBinaryStr=e;function t(d){const m=i.getLanguageId(d),h=i.getTokenType(d),f=i.getFontStyle(d),_=i.getForeground(d),E=i.getBackground(d);console.log({languageId:m,tokenType:h,fontStyle:f,foreground:_,background:E})}i.print=t;function n(d){return(d&255)>>>0}i.getLanguageId=n;function r(d){return(d&768)>>>8}i.getTokenType=r;function o(d){return(d&1024)!==0}i.containsBalancedBrackets=o;function s(d){return(d&30720)>>>11}i.getFontStyle=s;function l(d){return(d&16744448)>>>15}i.getForeground=l;function a(d){return(d&4278190080)>>>24}i.getBackground=a;function c(d,m,h,f,_,E,y){let v=i.getLanguageId(d),b=i.getTokenType(d),P=i.containsBalancedBrackets(d)?1:0,O=i.getFontStyle(d),A=i.getForeground(d),T=i.getBackground(d);return m!==0&&(v=m),h!==8&&(b=h),f!==null&&(P=f?1:0),_!==-1&&(O=_),E!==0&&(A=E),y!==0&&(T=y),(v<<0|b<<8|P<<10|O<<11|A<<15|T<<24)>>>0}i.set=c})(J||(J={}));function he(i,e){const t=[],n=on(i);let r=n.next();for(;r!==null;){let a=0;if(r.length===2&&r.charAt(1)===":"){switch(r.charAt(0)){case"R":a=1;break;case"L":a=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=n.next()}let c=s();if(t.push({matcher:c,priority:a}),r!==",")break;r=n.next()}return t;function o(){if(r==="-"){r=n.next();const a=o();return c=>!!a&&!a(c)}if(r==="("){r=n.next();const a=l();return r===")"&&(r=n.next()),a}if(We(r)){const a=[];do a.push(r),r=n.next();while(We(r));return c=>e(a,c)}return null}function s(){const a=[];let c=o();for(;c;)a.push(c),c=o();return d=>a.every(m=>m(d))}function l(){const a=[];let c=s();for(;c&&(a.push(c),r==="|"||r===",");){do r=n.next();while(r==="|"||r===",");c=s()}return d=>a.some(m=>m(d))}}function We(i){return!!i&&!!i.match(/[\w\.:]+/)}function on(i){let e=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,t=e.exec(i);return{next:()=>{if(!t)return null;const n=t[0];return t=e.exec(i),n}}}function pt(i){typeof i.dispose=="function"&&i.dispose()}function sn(i){return Be(i)}function Be(i){return Array.isArray(i)?an(i):typeof i=="object"?ln(i):i}function an(i){let e=[];for(let t=0,n=i.length;t{for(let n in t)i[n]=t[n]}),i}function mt(i){const e=~i.lastIndexOf("/")||~i.lastIndexOf("\\");return e===0?i:~e===i.length-1?mt(i.substring(0,i.length-1)):i.substr(~e+1)}let Le=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;class ae{static hasCaptures(e){return e===null?!1:(Le.lastIndex=0,Le.test(e))}static replaceCaptures(e,t,n){return e.replace(Le,(r,o,s,l)=>{let a=n[parseInt(o||s,10)];if(a){let c=t.substring(a.start,a.end);for(;c[0]===".";)c=c.substring(1);switch(l){case"downcase":return c.toLowerCase();case"upcase":return c.toUpperCase();default:return c}}else return r})}}function ft(i,e){return ie?1:0}function _t(i,e){if(i===null&&e===null)return 0;if(!i)return-1;if(!e)return 1;let t=i.length,n=e.length;if(t===n){for(let r=0;r`);return}const o=t.lookup(e);i instanceof te?pe({baseGrammar:o,selfGrammar:r},n):ke(i.ruleName,{baseGrammar:o,selfGrammar:r,repository:r.repository},n);const s=t.injections(i.scopeName);if(s)for(const l of s)n.add(new te(l))}function ke(i,e,t){if(e.repository&&e.repository[i]){const n=e.repository[i];me([n],e,t)}}function pe(i,e){i.selfGrammar.patterns&&Array.isArray(i.selfGrammar.patterns)&&me(i.selfGrammar.patterns,{...i,repository:i.selfGrammar.repository},e),i.selfGrammar.injections&&me(Object.values(i.selfGrammar.injections),{...i,repository:i.selfGrammar.repository},e)}function me(i,e,t){for(const n of i){if(t.visitedRule.has(n))continue;t.visitedRule.add(n);const r=n.repository?ht({},e.repository,n.repository):e.repository;Array.isArray(n.patterns)&&me(n.patterns,{...e,repository:r},t);const o=n.include;if(!o)continue;const s=Et(o);switch(s.kind){case 0:pe({...e,selfGrammar:e.baseGrammar},t);break;case 1:pe(e,t);break;case 2:ke(s.ruleName,{...e,repository:r},t);break;case 3:case 4:const l=s.scopeName===e.selfGrammar.scopeName?e.selfGrammar:s.scopeName===e.baseGrammar.scopeName?e.baseGrammar:void 0;if(l){const a={baseGrammar:e.baseGrammar,selfGrammar:l,repository:r};s.kind===4?ke(s.ruleName,a,t):pe(a,t)}else s.kind===4?t.add(new cn(s.scopeName,s.ruleName)):t.add(new te(s.scopeName));break}}}class hn{constructor(){p(this,"kind",0)}}class mn{constructor(){p(this,"kind",1)}}class fn{constructor(e){p(this,"ruleName");p(this,"kind",2);this.ruleName=e}}class _n{constructor(e){p(this,"scopeName");p(this,"kind",3);this.scopeName=e}}class gn{constructor(e,t){p(this,"scopeName");p(this,"ruleName");p(this,"kind",4);this.scopeName=e,this.ruleName=t}}function Et(i){if(i==="$base")return new hn;if(i==="$self")return new mn;const e=i.indexOf("#");if(e===-1)return new _n(i);if(e===0)return new fn(i.substring(1));{const t=i.substring(0,e),n=i.substring(e+1);return new gn(t,n)}}const yn=/\\(\d+)/,qe=/\\(\d+)/g,En=-1,vt=-2;class oe{constructor(e,t,n,r){p(this,"$location");p(this,"id");p(this,"_nameIsCapturing");p(this,"_name");p(this,"_contentNameIsCapturing");p(this,"_contentName");this.$location=e,this.id=t,this._name=n||null,this._nameIsCapturing=ae.hasCaptures(this._name),this._contentName=r||null,this._contentNameIsCapturing=ae.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${mt(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,t){return!this._nameIsCapturing||this._name===null||e===null||t===null?this._name:ae.replaceCaptures(this._name,e,t)}getContentName(e,t){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:ae.replaceCaptures(this._contentName,e,t)}}class vn extends oe{constructor(t,n,r,o,s){super(t,n,r,o);p(this,"retokenizeCapturedWithRuleId");this.retokenizeCapturedWithRuleId=s}dispose(){}collectPatterns(t,n){throw new Error("Not supported!")}compile(t,n){throw new Error("Not supported!")}compileAG(t,n,r,o){throw new Error("Not supported!")}}class bn extends oe{constructor(t,n,r,o,s){super(t,n,r,null);p(this,"_match");p(this,"captures");p(this,"_cachedCompiledPatterns");this._match=new W(o,this.id),this.captures=s,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(t,n){n.push(this._match)}compile(t,n){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,n,r,o){return this._getCachedCompiledPatterns(t).compileAG(t,r,o)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new ne,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}class Ke extends oe{constructor(t,n,r,o,s){super(t,n,r,o);p(this,"hasMissingPatterns");p(this,"patterns");p(this,"_cachedCompiledPatterns");this.patterns=s.patterns,this.hasMissingPatterns=s.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(t,n){for(const r of this.patterns)t.getRule(r).collectPatterns(t,n)}compile(t,n){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,n,r,o){return this._getCachedCompiledPatterns(t).compileAG(t,r,o)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new ne,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}class De extends oe{constructor(t,n,r,o,s,l,a,c,d,m){super(t,n,r,o);p(this,"_begin");p(this,"beginCaptures");p(this,"_end");p(this,"endHasBackReferences");p(this,"endCaptures");p(this,"applyEndPatternLast");p(this,"hasMissingPatterns");p(this,"patterns");p(this,"_cachedCompiledPatterns");this._begin=new W(s,this.id),this.beginCaptures=l,this._end=new W(a||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=c,this.applyEndPatternLast=d||!1,this.patterns=m.patterns,this.hasMissingPatterns=m.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(t,n){return this._end.resolveBackReferences(t,n)}collectPatterns(t,n){n.push(this._begin)}compile(t,n){return this._getCachedCompiledPatterns(t,n).compile(t)}compileAG(t,n,r,o){return this._getCachedCompiledPatterns(t,n).compileAG(t,r,o)}_getCachedCompiledPatterns(t,n){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new ne;for(const r of this.patterns)t.getRule(r).collectPatterns(t,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,n):this._cachedCompiledPatterns.setSource(0,n)),this._cachedCompiledPatterns}}class fe extends oe{constructor(t,n,r,o,s,l,a,c,d){super(t,n,r,o);p(this,"_begin");p(this,"beginCaptures");p(this,"whileCaptures");p(this,"_while");p(this,"whileHasBackReferences");p(this,"hasMissingPatterns");p(this,"patterns");p(this,"_cachedCompiledPatterns");p(this,"_cachedCompiledWhilePatterns");this._begin=new W(s,this.id),this.beginCaptures=l,this.whileCaptures=c,this._while=new W(a,vt),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=d.patterns,this.hasMissingPatterns=d.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(t,n){return this._while.resolveBackReferences(t,n)}collectPatterns(t,n){n.push(this._begin)}compile(t,n){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,n,r,o){return this._getCachedCompiledPatterns(t).compileAG(t,r,o)}_getCachedCompiledPatterns(t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new ne;for(const n of this.patterns)t.getRule(n).collectPatterns(t,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(t,n){return this._getCachedCompiledWhilePatterns(t,n).compile(t)}compileWhileAG(t,n,r,o){return this._getCachedCompiledWhilePatterns(t,n).compileAG(t,r,o)}_getCachedCompiledWhilePatterns(t,n){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new ne,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,n||"￿"),this._cachedCompiledWhilePatterns}}class I{static createCaptureRule(e,t,n,r,o){return e.registerRule(s=>new vn(t,s,n,r,o))}static getCompiledRuleId(e,t,n){return e.id||t.registerRule(r=>{if(e.id=r,e.match)return new bn(e.$vscodeTextmateLocation,e.id,e.name,e.match,I._compileCaptures(e.captures,t,n));if(typeof e.begin>"u"){e.repository&&(n=ht({},n,e.repository));let o=e.patterns;return typeof o>"u"&&e.include&&(o=[{include:e.include}]),new Ke(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,I._compilePatterns(o,t,n))}return e.while?new fe(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,I._compileCaptures(e.beginCaptures||e.captures,t,n),e.while,I._compileCaptures(e.whileCaptures||e.captures,t,n),I._compilePatterns(e.patterns,t,n)):new De(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,I._compileCaptures(e.beginCaptures||e.captures,t,n),e.end,I._compileCaptures(e.endCaptures||e.captures,t,n),e.applyEndPatternLast,I._compilePatterns(e.patterns,t,n))}),e.id}static _compileCaptures(e,t,n){let r=[];if(e){let o=0;for(const s in e){if(s==="$vscodeTextmateLocation")continue;const l=parseInt(s,10);l>o&&(o=l)}for(let s=0;s<=o;s++)r[s]=null;for(const s in e){if(s==="$vscodeTextmateLocation")continue;const l=parseInt(s,10);let a=0;e[s].patterns&&(a=I.getCompiledRuleId(e[s],t,n)),r[l]=I.createCaptureRule(t,e[s].$vscodeTextmateLocation,e[s].name,e[s].contentName,a)}}return r}static _compilePatterns(e,t,n){let r=[];if(e)for(let o=0,s=e.length;oe.substring(r.start,r.end));return qe.lastIndex=0,this.source.replace(qe,(r,o)=>gt(n[parseInt(o,10)]||""))}_buildAnchorCache(){let e=[],t=[],n=[],r=[],o,s,l,a;for(o=0,s=this.source.length;on.source);this._cached=new Ye(e,t,this._items.map(n=>n.ruleId))}return this._cached}compileAG(e,t,n){return this._hasAnchors?t?n?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,t,n)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,t,n)),this._anchorCache.A1_G0):n?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,t,n)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,t,n)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,t,n){let r=this._items.map(o=>o.resolveAnchors(t,n));return new Ye(e,r,this._items.map(o=>o.ruleId))}}class Ye{constructor(e,t,n){p(this,"regExps");p(this,"rules");p(this,"scanner");this.regExps=t,this.rules=n,this.scanner=e.createOnigScanner(t)}dispose(){typeof this.scanner.dispose=="function"&&this.scanner.dispose()}toString(){const e=[];for(let t=0,n=this.rules.length;tthis._root.match(e)));this._colorMap=e,this._defaults=t,this._root=n}static createFromRawTheme(e,t){return this.createFromParsedTheme(Tn(e),t)}static createFromParsedTheme(e,t){return Ln(e,t)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(e===null)return this._defaults;const t=e.scopeName,r=this._cachedMatchRoot.get(t).find(o=>Rn(e.parent,o.parentScopes));return r?new bt(r.fontStyle,r.foreground,r.background):null}}class H{constructor(e,t){p(this,"parent");p(this,"scopeName");this.parent=e,this.scopeName=t}static push(e,t){for(const n of t)e=new H(e,n);return e}static from(...e){let t=null;for(let n=0;n1&&(y=_.slice(0,_.length-1),y.reverse()),t[n++]=new Pn(E,y,r,a,c,d)}}return t}class Pn{constructor(e,t,n,r,o,s){p(this,"scope");p(this,"parentScopes");p(this,"index");p(this,"fontStyle");p(this,"foreground");p(this,"background");this.scope=e,this.parentScopes=t,this.index=n,this.fontStyle=r,this.foreground=o,this.background=s}}function Ln(i,e){i.sort((a,c)=>{let d=ft(a.scope,c.scope);return d!==0||(d=_t(a.parentScopes,c.parentScopes),d!==0)?d:a.index-c.index});let t=0,n="#000000",r="#ffffff";for(;i.length>=1&&i[0].scope==="";){let a=i.shift();a.fontStyle!==-1&&(t=a.fontStyle),a.foreground!==null&&(n=a.foreground),a.background!==null&&(r=a.background)}let o=new Sn(e),s=new bt(t,o.getId(n),o.getId(r)),l=new ee(new re(0,null,-1,0,0),[]);for(let a=0,c=i.length;ae?console.log("how did this happen?"):this.scopeDepth=e,t!==-1&&(this.fontStyle=t),n!==0&&(this.foreground=n),r!==0&&(this.background=r)}}class ee{constructor(e,t=[],n={}){p(this,"_mainRule");p(this,"_children");p(this,"_rulesWithParentScopes");this._mainRule=e,this._children=n,this._rulesWithParentScopes=t}static _sortBySpecificity(e){return e.length===1||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,t){if(e.scopeDepth===t.scopeDepth){const n=e.parentScopes,r=t.parentScopes;let o=n===null?0:n.length,s=r===null?0:r.length;if(o===s)for(let l=0;l{const t=this._scopeToLanguage(e),n=this._toStandardTokenType(e);return new Se(t,n)}));this._defaultAttributes=new Se(e,8),this._embeddedLanguagesMatcher=new On(Object.entries(t||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return e===null?K._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const t=e.match(K.STANDARD_TOKEN_TYPE_REGEXP);if(!t)return 8;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}};p(K,"_NULL_SCOPE_METADATA",new Se(0,0)),p(K,"STANDARD_TOKEN_TYPE_REGEXP",/\b(comment|string|regex|meta\.embedded)\b/);let Ne=K;class On{constructor(e){p(this,"values");p(this,"scopesRegExp");if(e.length===0)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const t=e.map(([n,r])=>gt(n));t.sort(),t.reverse(),this.scopesRegExp=new RegExp(`^((${t.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const t=e.match(this.scopesRegExp);if(t)return this.values.get(t[1])}}class Xe{constructor(e,t){p(this,"stack");p(this,"stoppedEarly");this.stack=e,this.stoppedEarly=t}}function Rt(i,e,t,n,r,o,s,l){const a=e.content.length;let c=!1,d=-1;if(s){const f=Cn(i,e,t,n,r,o);r=f.stack,n=f.linePos,t=f.isFirstLine,d=f.anchorPosition}const m=Date.now();for(;!c;){if(l!==0&&Date.now()-m>l)return new Xe(r,!0);h()}return new Xe(r,!1);function h(){const f=In(i,e,t,n,r,d);if(!f){o.produce(r,a),c=!0;return}const _=f.captureIndices,E=f.matchedRuleId,y=_&&_.length>0?_[0].end>n:!1;if(E===En){const v=r.getRule(i);o.produce(r,_[0].start),r=r.withContentNameScopesList(r.nameScopesList),Z(i,e,t,r,o,v.endCaptures,_),o.produce(r,_[0].end);const b=r;if(r=r.parent,d=b.getAnchorPos(),!y&&b.getEnterPos()===n){r=b,o.produce(r,a),c=!0;return}}else{const v=i.getRule(E);o.produce(r,_[0].start);const b=r,P=v.getName(e.content,_),O=r.contentNameScopesList.pushAttributed(P,i);if(r=r.push(E,n,d,_[0].end===a,null,O,O),v instanceof De){const A=v;Z(i,e,t,r,o,A.beginCaptures,_),o.produce(r,_[0].end),d=_[0].end;const T=A.getContentName(e.content,_),G=O.pushAttributed(T,i);if(r=r.withContentNameScopesList(G),A.endHasBackReferences&&(r=r.withEndRule(A.getEndWithResolvedBackReferences(e.content,_))),!y&&b.hasSameRuleAs(r)){r=r.pop(),o.produce(r,a),c=!0;return}}else if(v instanceof fe){const A=v;Z(i,e,t,r,o,A.beginCaptures,_),o.produce(r,_[0].end),d=_[0].end;const T=A.getContentName(e.content,_),G=O.pushAttributed(T,i);if(r=r.withContentNameScopesList(G),A.whileHasBackReferences&&(r=r.withEndRule(A.getWhileWithResolvedBackReferences(e.content,_))),!y&&b.hasSameRuleAs(r)){r=r.pop(),o.produce(r,a),c=!0;return}}else if(Z(i,e,t,r,o,v.captures,_),o.produce(r,_[0].end),r=r.pop(),!y){r=r.safePop(),o.produce(r,a),c=!0;return}}_[0].end>n&&(n=_[0].end,t=!1)}}function Cn(i,e,t,n,r,o){let s=r.beginRuleCapturedEOL?0:-1;const l=[];for(let a=r;a;a=a.pop()){const c=a.getRule(i);c instanceof fe&&l.push({rule:c,stack:a})}for(let a=l.pop();a;a=l.pop()){const{ruleScanner:c,findOptions:d}=Dn(a.rule,i,a.stack.endRule,t,n===s),m=c.findNextMatchSync(e,n,d);if(m){if(m.ruleId!==vt){r=a.stack.pop();break}m.captureIndices&&m.captureIndices.length&&(o.produce(a.stack,m.captureIndices[0].start),Z(i,e,t,a.stack,o,a.rule.whileCaptures,m.captureIndices),o.produce(a.stack,m.captureIndices[0].end),s=m.captureIndices[0].end,m.captureIndices[0].end>n&&(n=m.captureIndices[0].end,t=!1))}else{r=a.stack.pop();break}}return{stack:r,linePos:n,anchorPosition:s,isFirstLine:t}}function In(i,e,t,n,r,o){const s=wn(i,e,t,n,r,o),l=i.getInjections();if(l.length===0)return s;const a=kn(l,i,e,t,n,r,o);if(!a)return s;if(!s)return a;const c=s.captureIndices[0].start,d=a.captureIndices[0].start;return d=l)&&(l=P,a=b.captureIndices,c=b.ruleId,d=_.priority,l===r))break}return a?{priorityMatch:d===-1,captureIndices:a,matchedRuleId:c}:null}function At(i,e,t,n,r){return{ruleScanner:i.compileAG(e,t,n,r),findOptions:0}}function Dn(i,e,t,n,r){return{ruleScanner:i.compileWhileAG(e,t,n,r),findOptions:0}}function Z(i,e,t,n,r,o,s){if(o.length===0)return;const l=e.content,a=Math.min(o.length,s.length),c=[],d=s[0].end;for(let m=0;md)break;for(;c.length>0&&c[c.length-1].endPos<=f.start;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop();if(c.length>0?r.produceFromScopes(c[c.length-1].scopes,f.start):r.produce(n,f.start),h.retokenizeCapturedWithRuleId){const E=h.getName(l,s),y=n.contentNameScopesList.pushAttributed(E,i),v=h.getContentName(l,s),b=y.pushAttributed(v,i),P=n.push(h.retokenizeCapturedWithRuleId,f.start,-1,!1,null,y,b),O=i.createOnigString(l.substring(0,f.end));Rt(i,O,t&&f.start===0,f.start,P,r,!1,0),pt(O);continue}const _=h.getName(l,s);if(_!==null){const y=(c.length>0?c[c.length-1].scopes:n.contentNameScopesList).pushAttributed(_,i);c.push(new Nn(y,f.end))}}for(;c.length>0;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop()}class Nn{constructor(e,t){p(this,"scopes");p(this,"endPos");this.scopes=e,this.endPos=t}}function xn(i,e,t,n,r,o,s,l){return new Mn(i,e,t,n,r,o,s,l)}function Je(i,e,t,n,r){const o=he(e,ge),s=I.getCompiledRuleId(t,n,r.repository);for(const l of o)i.push({debugSelector:e,matcher:l.matcher,ruleId:s,grammar:r,priority:l.priority})}function ge(i,e){if(e.length{for(let r=t;rt&&i.substr(0,t)===e&&i[t]==="."}class Mn{constructor(e,t,n,r,o,s,l,a){p(this,"_rootScopeName");p(this,"balancedBracketSelectors");p(this,"_onigLib");p(this,"_rootId");p(this,"_lastRuleId");p(this,"_ruleId2desc");p(this,"_includedGrammars");p(this,"_grammarRepository");p(this,"_grammar");p(this,"_injections");p(this,"_basicScopeAttributesProvider");p(this,"_tokenTypeMatchers");if(this._rootScopeName=e,this.balancedBracketSelectors=s,this._onigLib=a,this._basicScopeAttributesProvider=new Ne(n,r),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=l,this._grammar=Qe(t,null),this._injections=null,this._tokenTypeMatchers=[],o)for(const c of Object.keys(o)){const d=he(c,ge);for(const m of d)this._tokenTypeMatchers.push({matcher:m.matcher,type:o[c]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e={lookup:o=>o===this._rootScopeName?this._grammar:this.getExternalGrammar(o),injections:o=>this._grammarRepository.injections(o)},t=[],n=this._rootScopeName,r=e.lookup(n);if(r){const o=r.injections;if(o)for(let l in o)Je(t,l,o[l],this,r);const s=this._grammarRepository.injections(n);s&&s.forEach(l=>{const a=this.getExternalGrammar(l);if(a){const c=a.injectionSelector;c&&Je(t,c,a,this,a)}})}return t.sort((o,s)=>o.priority-s.priority),t}getInjections(){return this._injections===null&&(this._injections=this._collectInjections()),this._injections}registerRule(e){const t=++this._lastRuleId,n=e(t);return this._ruleId2desc[t]=n,n}getRule(e){return this._ruleId2desc[e]}getExternalGrammar(e,t){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const n=this._grammarRepository.lookup(e);if(n)return this._includedGrammars[e]=Qe(n,t&&t.$base),this._includedGrammars[e]}}tokenizeLine(e,t,n=0){const r=this._tokenize(e,t,!1,n);return{tokens:r.lineTokens.getResult(r.ruleStack,r.lineLength),ruleStack:r.ruleStack,stoppedEarly:r.stoppedEarly}}tokenizeLine2(e,t,n=0){const r=this._tokenize(e,t,!0,n);return{tokens:r.lineTokens.getBinaryResult(r.ruleStack,r.lineLength),ruleStack:r.ruleStack,stoppedEarly:r.stoppedEarly}}_tokenize(e,t,n,r){this._rootId===-1&&(this._rootId=I.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository),this.getInjections());let o;if(!t||t===ie.NULL){o=!0;const d=this._basicScopeAttributesProvider.getDefaultAttributes(),m=this.themeProvider.getDefaults(),h=J.set(0,d.languageId,d.tokenType,null,m.fontStyle,m.foregroundId,m.backgroundId),f=this.getRule(this._rootId).getName(null,null);let _;f?_=N.createRootAndLookUpScopeName(f,h,this):_=N.createRoot("unknown",h),t=new ie(null,this._rootId,-1,-1,!1,null,_,_)}else o=!1,t.reset();e=e+` +`;const s=this.createOnigString(e),l=s.content.length,a=new Gn(n,e,this._tokenTypeMatchers,this.balancedBracketSelectors),c=Rt(this,s,o,0,t,a,!0,r);return pt(s),{lineLength:l,lineTokens:a,ruleStack:c.stack,stoppedEarly:c.stoppedEarly}}}function Qe(i,e){return i=sn(i),i.repository=i.repository||{},i.repository.$self={$vscodeTextmateLocation:i.$vscodeTextmateLocation,patterns:i.patterns,name:i.scopeName},i.repository.$base=e||i.repository.$self,i}class N{constructor(e,t,n){p(this,"parent");p(this,"scopePath");p(this,"tokenAttributes");this.parent=e,this.scopePath=t,this.tokenAttributes=n}static fromExtension(e,t){let n=e,r=(e==null?void 0:e.scopePath)??null;for(const o of t)r=H.push(r,o.scopeNames),n=new N(n,r,o.encodedTokenAttributes);return n}static createRoot(e,t){return new N(null,new H(null,e),t)}static createRootAndLookUpScopeName(e,t,n){const r=n.getMetadataForScope(e),o=new H(null,e),s=n.themeProvider.themeMatch(o),l=N.mergeAttributes(t,r,s);return new N(null,o,l)}get scopeName(){return this.scopePath.scopeName}toString(){return this.getScopeNames().join(" ")}equals(e){return N.equals(this,e)}static equals(e,t){do{if(e===t||!e&&!t)return!0;if(!e||!t||e.scopeName!==t.scopeName||e.tokenAttributes!==t.tokenAttributes)return!1;e=e.parent,t=t.parent}while(!0)}static mergeAttributes(e,t,n){let r=-1,o=0,s=0;return n!==null&&(r=n.fontStyle,o=n.foregroundId,s=n.backgroundId),J.set(e,t.languageId,t.tokenType,null,r,o,s)}pushAttributed(e,t){if(e===null)return this;if(e.indexOf(" ")===-1)return N._pushAttributed(this,e,t);const n=e.split(/ /g);let r=this;for(const o of n)r=N._pushAttributed(r,o,t);return r}static _pushAttributed(e,t,n){const r=n.getMetadataForScope(t),o=e.scopePath.push(t),s=n.themeProvider.themeMatch(o),l=N.mergeAttributes(e.tokenAttributes,r,s);return new N(e,o,l)}getScopeNames(){return this.scopePath.getSegments()}getExtensionIfDefined(e){var r;const t=[];let n=this;for(;n&&n!==e;)t.push({encodedTokenAttributes:n.tokenAttributes,scopeNames:n.scopePath.getExtensionIfDefined(((r=n.parent)==null?void 0:r.scopePath)??null)}),n=n.parent;return n===e?t.reverse():void 0}}const j=class j{constructor(e,t,n,r,o,s,l,a){p(this,"parent");p(this,"ruleId");p(this,"beginRuleCapturedEOL");p(this,"endRule");p(this,"nameScopesList");p(this,"contentNameScopesList");p(this,"_stackElementBrand");p(this,"_enterPos");p(this,"_anchorPos");p(this,"depth");this.parent=e,this.ruleId=t,this.beginRuleCapturedEOL=o,this.endRule=s,this.nameScopesList=l,this.contentNameScopesList=a,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=n,this._anchorPos=r}equals(e){return e===null?!1:j._equals(this,e)}static _equals(e,t){return e===t?!0:this._structuralEquals(e,t)?N.equals(e.contentNameScopesList,t.contentNameScopesList):!1}static _structuralEquals(e,t){do{if(e===t||!e&&!t)return!0;if(!e||!t||e.depth!==t.depth||e.ruleId!==t.ruleId||e.endRule!==t.endRule)return!1;e=e.parent,t=t.parent}while(!0)}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){j._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,t,n,r,o,s,l){return new j(this,e,t,n,r,o,s,l)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,t){var n,r;return this.parent&&(t=this.parent._writeString(e,t)),e[t++]=`(${this.ruleId}, ${(n=this.nameScopesList)==null?void 0:n.toString()}, ${(r=this.contentNameScopesList)==null?void 0:r.toString()})`,t}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new j(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let t=this;for(;t&&t._enterPos===e._enterPos;){if(t.ruleId===e.ruleId)return!0;t=t.parent}return!1}toStateStackFrame(){var e,t,n;return{ruleId:this.ruleId,beginRuleCapturedEOL:this.beginRuleCapturedEOL,endRule:this.endRule,nameScopesList:((t=this.nameScopesList)==null?void 0:t.getExtensionIfDefined(((e=this.parent)==null?void 0:e.nameScopesList)??null))??[],contentNameScopesList:((n=this.contentNameScopesList)==null?void 0:n.getExtensionIfDefined(this.nameScopesList))??[]}}static pushFrame(e,t){const n=N.fromExtension((e==null?void 0:e.nameScopesList)??null,t.nameScopesList);return new j(e,t.ruleId,t.enterPos??-1,t.anchorPos??-1,t.beginRuleCapturedEOL,t.endRule,n,N.fromExtension(n,t.contentNameScopesList))}};p(j,"NULL",new j(null,0,0,0,!1,null,null,null));let ie=j;class Bn{constructor(e,t){p(this,"balancedBracketScopes");p(this,"unbalancedBracketScopes");p(this,"allowAny",!1);this.balancedBracketScopes=e.flatMap(n=>n==="*"?(this.allowAny=!0,[]):he(n,ge).map(r=>r.matcher)),this.unbalancedBracketScopes=t.flatMap(n=>he(n,ge).map(r=>r.matcher))}get matchesAlways(){return this.allowAny&&this.unbalancedBracketScopes.length===0}get matchesNever(){return this.balancedBracketScopes.length===0&&!this.allowAny}match(e){for(const t of this.unbalancedBracketScopes)if(t(e))return!1;for(const t of this.balancedBracketScopes)if(t(e))return!0;return this.allowAny}}class Gn{constructor(e,t,n,r){p(this,"balancedBracketSelectors");p(this,"_emitBinaryTokens");p(this,"_lineText");p(this,"_tokens");p(this,"_binaryTokens");p(this,"_lastTokenEndIndex");p(this,"_tokenTypeOverrides");this.balancedBracketSelectors=r,this._emitBinaryTokens=e,this._tokenTypeOverrides=n,this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,t){this.produceFromScopes(e.contentNameScopesList,t)}produceFromScopes(e,t){var r;if(this._lastTokenEndIndex>=t)return;if(this._emitBinaryTokens){let o=(e==null?void 0:e.tokenAttributes)??0,s=!1;if((r=this.balancedBracketSelectors)!=null&&r.matchesAlways&&(s=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const l=(e==null?void 0:e.getScopeNames())??[];for(const a of this._tokenTypeOverrides)a.matcher(l)&&(o=J.set(o,0,a.type,null,-1,0,0));this.balancedBracketSelectors&&(s=this.balancedBracketSelectors.match(l))}if(s&&(o=J.set(o,0,8,s,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===o){this._lastTokenEndIndex=t;return}this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(o),this._lastTokenEndIndex=t;return}const n=(e==null?void 0:e.getScopeNames())??[];this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:t,scopes:n}),this._lastTokenEndIndex=t}getResult(e,t){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===t-1&&this._tokens.pop(),this._tokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,t){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===t-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),this._binaryTokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._binaryTokens[this._binaryTokens.length-2]=0);const n=new Uint32Array(this._binaryTokens.length);for(let r=0,o=this._binaryTokens.length;r0;)await Promise.all(s.Q.map(l=>this._loadSingleGrammar(l.scopeName))),s.processQueue();return this._grammarForScopeName(e,t,n,r,o)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const t=await this._options.loadGrammar(e);if(t){const n=typeof this._options.getInjections=="function"?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(t,n)}}async addGrammar(e,t=[],n=0,r=null){return this._syncRegistry.addGrammar(e,t),await this._grammarForScopeName(e.scopeName,n,r)}_grammarForScopeName(e,t=0,n=null,r=null,o=null){return this._syncRegistry.grammarForScopeName(e,t,n,r,o)}};const Un=ie.NULL,k={LANGUAGEID_MASK:255,TOKEN_TYPE_MASK:768,BALANCED_BRACKETS_MASK:1024,FONT_STYLE_MASK:14336,FOREGROUND_MASK:8372224,BACKGROUND_MASK:4286578688,LANGUAGEID_OFFSET:0,TOKEN_TYPE_OFFSET:8,BALANCED_BRACKETS_OFFSET:10,FONT_STYLE_OFFSET:11,FOREGROUND_OFFSET:15,BACKGROUND_OFFSET:24};class F{static toBinaryStr(e){let t=e.toString(2);for(;t.length<32;)t=`0${t}`;return t}static getLanguageId(e){return(e&k.LANGUAGEID_MASK)>>>k.LANGUAGEID_OFFSET}static getTokenType(e){return(e&k.TOKEN_TYPE_MASK)>>>k.TOKEN_TYPE_OFFSET}static getFontStyle(e){return(e&k.FONT_STYLE_MASK)>>>k.FONT_STYLE_OFFSET}static getForeground(e){return(e&k.FOREGROUND_MASK)>>>k.FOREGROUND_OFFSET}static getBackground(e){return(e&k.BACKGROUND_MASK)>>>k.BACKGROUND_OFFSET}static containsBalancedBrackets(e){return(e&k.BALANCED_BRACKETS_MASK)!==0}static set(e,t,n,r,o,s){let l=F.getLanguageId(e),a=F.getTokenType(e),c=F.getFontStyle(e),d=F.getForeground(e),m=F.getBackground(e);const h=F.containsBalancedBrackets(e)?1:0;return t!==0&&(l=t),n!==0&&(a=n===8?0:n),r!==B.NotSet&&(c=r),o!==0&&(d=o),s!==0&&(m=s),(l<>>0}}function le(i){return Array.isArray(i)?i:[i]}function Re(i,e=!1){var o;const t=i.split(/(\r?\n)/g);let n=0;const r=[];for(let s=0;st&&n.push({...i,content:i.content.slice(t,r),offset:i.offset+t}),t=r;return tn-r);return t.length?i.map(n=>n.flatMap(r=>{const o=t.filter(s=>r.offsets-r.offset).sort((s,l)=>s-l);return o.length?$n(r,o):r})):i}function U(i,e){return i&&((e==null?void 0:e[i==null?void 0:i.toLowerCase()])||i)}function Ct(i){const e={};return i.color&&(e.color=i.color),i.bgColor&&(e["background-color"]=i.bgColor),i.fontStyle&&(i.fontStyle&B.Italic&&(e["font-style"]="italic"),i.fontStyle&B.Bold&&(e["font-weight"]="bold"),i.fontStyle&B.Underline&&(e["text-decoration"]="underline")),e}function It(i){return Object.entries(i).map(([e,t])=>`${e}:${t}`).join(";")}function Wn(i){const e=Re(i,!0).map(([r])=>r);function t(r){let o=r,s=0;for(const l of e){if(oNumber.parseInt(s));o.length===3&&!o.some(s=>Number.isNaN(s))&&(r={type:"rgb",rgb:o})}else if(n==="5"){const o=Number.parseInt(i[e+t]);Number.isNaN(o)||(r={type:"table",index:Number(o)})}return[t,r]}function qn(i){const e=[];for(let t=0;t=90&&r<=97?e.push({type:"setForegroundColor",value:{type:"named",name:$[r-90+8]}}):r>=100&&r<=107&&e.push({type:"setBackgroundColor",value:{type:"named",name:$[r-100+8]}})}return e}function Kn(){let i=null,e=null,t=new Set;return{parse(n){const r=[];let o=0;do{const s=zn(n,o),l=s.sequence?n.substring(o,s.startPosition):n.substring(o);if(l.length>0&&r.push({value:l,foreground:i,background:e,decorations:new Set(t)}),s.sequence){const a=qn(s.sequence);for(const c of a)c.type==="resetAll"?(i=null,e=null,t.clear()):c.type==="resetForegroundColor"?i=null:c.type==="resetBackgroundColor"?e=null:c.type==="resetDecoration"&&t.delete(c.value);for(const c of a)c.type==="setForegroundColor"?i=c.value:c.type==="setBackgroundColor"?e=c.value:c.type==="setDecoration"&&t.add(c.value)}o=s.position}while(oMath.max(0,Math.min(a,255)).toString(16).padStart(2,"0")).join("")}`}let n;function r(){if(n)return n;n=[];for(let c=0;c<$.length;c++)n.push(e($[c]));let l=[0,95,135,175,215,255];for(let c=0;c<6;c++)for(let d=0;d<6;d++)for(let m=0;m<6;m++)n.push(t([l[c],l[d],l[m]]));let a=8;for(let c=0;c<24;c++,a+=10)n.push(t([a,a,a]));return n}function o(l){return r()[l]}function s(l){switch(l.type){case"named":return e(l.name);case"rgb":return t(l.rgb);case"table":return o(l.index)}}return{value:s}}function Jn(i,e,t){const n={...i.colorReplacements,...t==null?void 0:t.colorReplacements},r=Re(e),o=Xn(Object.fromEntries($.map(l=>{var a;return[l,(a=i.colors)==null?void 0:a[`terminal.ansi${l[0].toUpperCase()}${l.substring(1)}`]]}))),s=Kn();return r.map(l=>s.parse(l[0]).map(a=>{let c,d;a.decorations.has("reverse")?(c=a.background?o.value(a.background):i.bg,d=a.foreground?o.value(a.foreground):i.fg):(c=a.foreground?o.value(a.foreground):i.fg,d=a.background?o.value(a.background):void 0),c=U(c,n),d=U(d,n),a.decorations.has("dim")&&(c=Qn(c));let m=B.None;return a.decorations.has("bold")&&(m|=B.Bold),a.decorations.has("italic")&&(m|=B.Italic),a.decorations.has("underline")&&(m|=B.Underline),{content:a.value,offset:l[1],color:c,bgColor:d,fontStyle:m}}))}function Qn(i){const e=i.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);if(e)if(e[3]){const n=Math.round(Number.parseInt(e[3],16)/2).toString(16).padStart(2,"0");return`#${e[1]}${e[2]}${n}`}else return e[2]?`#${e[1]}${e[2]}80`:`#${Array.from(e[1]).map(n=>`${n}${n}`).join("")}80`;const t=i.match(/var\((--[\w-]+-ansi-[\w-]+)\)/);return t?`var(${t[1]}-dim)`:i}function Ge(i,e,t={}){const{lang:n="text",theme:r=i.getLoadedThemes()[0]}=t;if(Tt(n)||Lt(r))return Re(e).map(a=>[{content:a[0],offset:a[1]}]);const{theme:o,colorMap:s}=i.setTheme(r);if(n==="ansi")return Jn(o,e,t);const l=i.getLanguage(n);return Zn(e,l,o,s,t)}function Zn(i,e,t,n,r){const o={...t.colorReplacements,...r==null?void 0:r.colorReplacements},{tokenizeMaxLineLength:s=0,tokenizeTimeLimit:l=500}=r,a=Re(i);let c=Un,d=[];const m=[];for(let h=0,f=a.length;h0&&_.length>=s){d=[],m.push([{content:_,offset:E,color:"",fontStyle:0}]);continue}let y,v,b;r.includeExplanation&&(y=e.tokenizeLine(_,c),v=y.tokens,b=0);const P=e.tokenizeLine2(_,c,l),O=P.tokens.length/2;for(let A=0;A=0&&o>=0;)et(e[r],n[o])&&(r-=1),o-=1;return r===-1}function nr(i,e,t){const n=[];let r=0;for(let o=0,s=i.settings.length;oc.trim());else if(Array.isArray(l.scope))a=l.scope;else continue;for(let c=0,d=a.length;cs[1]).map(s=>({color:s[0],theme:s[1]})),r=rr(...n.map(s=>Ge(i,e,{...t,theme:s.theme})));return r[0].map((s,l)=>s.map((a,c)=>{const d={content:a.content,variants:{},offset:a.offset};return r.forEach((m,h)=>{const{content:f,explanation:_,offset:E,...y}=m[l][c];d.variants[n[h].color]=y}),d}))}function rr(...i){const e=i.map(()=>[]),t=i.length;for(let n=0;na[n]),o=e.map(()=>[]);e.forEach((a,c)=>a.push(o[c]));const s=r.map(()=>0),l=r.map(a=>a[0]);for(;l.every(a=>a);){const a=Math.min(...l.map(c=>c.content.length));for(let c=0;cE[1]).map(E=>({color:E[0],theme:E[1]})).sort((E,y)=>E.color===a?-1:y.color===a?1:0);if(m.length===0)throw new D("`themes` option must not be empty");const h=wt(i,e,t);if(a&&!m.find(E=>E.color===a))throw new D(`\`themes\` option must contain the defaultColor key \`${a}\``);const f=m.map(E=>i.getTheme(E.theme)),_=m.map(E=>E.color);o=h.map(E=>E.map(y=>ir(y,_,c,a))),r=m.map((E,y)=>(y===0&&a?"":`${c+E.color}:`)+(U(f[y].fg,d)||"inherit")).join(";"),n=m.map((E,y)=>(y===0&&a?"":`${c+E.color}-bg:`)+(U(f[y].bg,d)||"inherit")).join(";"),s=`shiki-themes ${f.map(E=>E.name).join(" ")}`,l=a?void 0:[r,n].join(";")}else if("theme"in t){const{colorReplacements:a}=t;o=Ge(i,e,t);const c=i.getTheme(t.theme);n=U(c.bg,a),r=U(c.fg,a),s=c.name}else throw new D("Invalid options, either `theme` or `themes` must be provided");return{tokens:o,fg:r,bg:n,themeName:s,rootStyle:l}}function ir(i,e,t,n){const r={content:i.content,explanation:i.explanation,offset:i.offset},o=e.map(a=>Ct(i.variants[a])),s=new Set(o.flatMap(a=>Object.keys(a))),l=o.reduce((a,c,d)=>{for(const m of s){const h=c[m]||"inherit";if(d===0&&n)a[m]=h;else{const f=m==="color"?"":m==="background-color"?"-bg":`-${m}`,_=t+e[d]+(m==="color"?"":f);a[m]?a[m]+=`;${_}:${h}`:a[m]=`${_}:${h}`}}return a},{});return r.htmlStyle=n?It(l):Object.values(l).join(";"),r}function or(){const i=new WeakMap;function e(n){if(!i.has(n.meta)){let o=function(l){return typeof l=="number"?{...r.indexToPos(l),offset:l}:{...l,offset:r.posToIndex(l.line,l.character)}};const r=Wn(n.source),s=(n.options.decorations||[]).map(l=>({...l,start:o(l.start),end:o(l.end)}));t(s),i.set(n.meta,{decorations:s,converter:r,source:n.source})}return i.get(n.meta)}function t(n){for(let r=0;ro.end.offset)throw new D(`Invalid decoration range: ${JSON.stringify(o.start)} - ${JSON.stringify(o.end)}`);for(let s=r+1;s[a.start.offset,a.end.offset]);return Hn(n,o)},code(n){var m;if(!((m=this.options.decorations)!=null&&m.length))return;const r=e(this),o=Array.from(n.children).filter(h=>h.type==="element"&&h.tagName==="span");if(o.length!==r.converter.lines.length)throw new D(`Number of lines in code element (${o.length}) does not match the number of lines in the source (${r.converter.lines.length}). Failed to apply decorations.`);function s(h,f,_,E){const y=o[h];let v="",b=-1,P=-1;function O(T){return T.type==="text"?T.value:T.type==="element"?T.children.map(O).join(""):""}if(f===0&&(b=0),_===0&&(P=0),_===Number.POSITIVE_INFINITY&&(P=y.children.length),b===-1||P===-1)for(let T=0;Tb);return h.tagName=f.tagName||"span",h.properties={...h.properties,...E,class:h.properties.class},(v=f.properties)!=null&&v.class&&Ot(h,f.properties.class),h=y(h,_)||h,h}const c=[],d=r.decorations.sort((h,f)=>f.start.offset-h.start.offset);for(const h of d){const{start:f,end:_}=h;if(f.line===_.line)s(f.line,f.character,_.character,h);else if(f.line<_.line){s(f.line,f.character,Number.POSITIVE_INFINITY,h);for(let E=f.line+1;E<_.line;E++)c.unshift(()=>l(E,h));s(_.line,0,_.character,h)}}c.forEach(h=>h())}}}const sr=[or()];function Ee(i){return[...i.transformers||[],...sr]}function ve(i,e,t,n={meta:{},options:t,codeToHast:(r,o)=>ve(i,r,o),codeToTokens:(r,o)=>ye(i,r,o)}){var h,f;let r=e;for(const _ of Ee(t))r=((h=_.preprocess)==null?void 0:h.call(n,r,t))||r;let{tokens:o,fg:s,bg:l,themeName:a,rootStyle:c}=ye(i,r,t);const{mergeWhitespaces:d=!0}=t;d===!0?o=lr(o):d==="never"&&(o=cr(o));const m={...n,get source(){return r}};for(const _ of Ee(t))o=((f=_.tokens)==null?void 0:f.call(m,o))||o;return ar(o,{...t,fg:s,bg:l,themeName:a,rootStyle:c},m)}function ar(i,e,t){var h,f,_;const n=Ee(e),r=[],o={type:"root",children:[]},{structure:s="classic"}=e;let l={type:"element",tagName:"pre",properties:{class:`shiki ${e.themeName||""}`,style:e.rootStyle||`background-color:${e.bg};color:${e.fg}`,tabindex:"0",...Object.fromEntries(Array.from(Object.entries(e.meta||{})).filter(([E])=>!E.startsWith("_")))},children:[]},a={type:"element",tagName:"code",properties:{},children:r};const c=[],d={...t,structure:s,addClassToHast:Ot,get source(){return t.source},get tokens(){return i},get options(){return e},get root(){return o},get pre(){return l},get code(){return a},get lines(){return c}};if(i.forEach((E,y)=>{var P,O;y&&(s==="inline"?o.children.push({type:"element",tagName:"br",properties:{},children:[]}):s==="classic"&&r.push({type:"text",value:` +`}));let v={type:"element",tagName:"span",properties:{class:"line"},children:[]},b=0;for(const A of E){let T={type:"element",tagName:"span",properties:{},children:[{type:"text",value:A.content}]};const G=A.htmlStyle||It(Ct(A));G&&(T.properties.style=G);for(const q of n)T=((P=q==null?void 0:q.span)==null?void 0:P.call(d,T,y+1,b,v))||T;s==="inline"?o.children.push(T):s==="classic"&&v.children.push(T),b+=A.content.length}if(s==="classic"){for(const A of n)v=((O=A==null?void 0:A.line)==null?void 0:O.call(d,v,y+1))||v;c.push(v),r.push(v)}}),s==="classic"){for(const E of n)a=((h=E==null?void 0:E.code)==null?void 0:h.call(d,a))||a;l.children.push(a);for(const E of n)l=((f=E==null?void 0:E.pre)==null?void 0:f.call(d,l))||l;o.children.push(l)}let m=o;for(const E of n)m=((_=E==null?void 0:E.root)==null?void 0:_.call(d,m))||m;return m}function lr(i){return i.map(e=>{const t=[];let n="",r=0;return e.forEach((o,s)=>{const a=!(o.fontStyle&&o.fontStyle&B.Underline);a&&o.content.match(/^\s+$/)&&e[s+1]?(r||(r=o.offset),n+=o.content):n?(a?t.push({...o,offset:r,content:n+o.content}):t.push({content:n,offset:r},o),r=0,n=""):t.push(o)}),t})}function cr(i){return i.map(e=>e.flatMap(t=>{if(t.content.match(/^\s+$/))return t;const n=t.content.match(/^(\s*)(.*?)(\s*)$/);if(!n)return t;const[,r,o,s]=n;if(!r&&!s)return t;const l=[{...t,offset:t.offset+r.length,content:o}];return r&&l.unshift({content:r,offset:t.offset}),s&&l.push({content:s,offset:t.offset+r.length+o.length}),l}))}const ur=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","keygen","link","meta","param","source","track","wbr"];class se{constructor(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}}se.prototype.property={};se.prototype.normal={};se.prototype.space=null;function kt(i,e){const t={},n={};let r=-1;for(;++r4&&t.slice(0,4)==="data"&&fr.test(e)){if(e.charAt(4)==="-"){const o=e.slice(5).replace(nt,Er);n="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=e.slice(4);if(!nt.test(o)){let s=o.replace(_r,yr);s.charAt(0)!=="-"&&(s="-"+s),e="data"+s}}r=je}return new r(n,e)}function yr(i){return"-"+i.toLowerCase()}function Er(i){return i.charAt(1).toUpperCase()}const vr=kt([xt,Nt,Bt,Gt,hr],"html"),jt=kt([xt,Nt,Bt,Gt,mr],"svg"),rt={}.hasOwnProperty;function br(i,e){const t=e||{};function n(r,...o){let s=n.invalid;const l=n.handlers;if(r&&rt.call(r,i)){const a=String(r[i]);s=rt.call(l,a)?l[a]:n.unknown}if(s)return s.call(this,r,...o)}return n.handlers=t.handlers||{},n.invalid=t.invalid,n.unknown=t.unknown,n}function Rr(i,e){if(i=i.replace(e.subset?Ar(e.subset):/["&'<>`]/g,n),e.subset||e.escapeOnly)return i;return i.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,t).replace(/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,n);function t(r,o,s){return e.format((r.charCodeAt(0)-55296)*1024+r.charCodeAt(1)-56320+65536,s.charCodeAt(o+2),e)}function n(r,o,s){return e.format(r.charCodeAt(0),s.charCodeAt(o+1),e)}}function Ar(i){const e=[];let t=-1;for(;++t",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},Sr=["cent","copy","divide","gt","lt","not","para","times"],Ft={}.hasOwnProperty,Me={};let ce;for(ce in Ie)Ft.call(Ie,ce)&&(Me[Ie[ce]]=ce);function Or(i,e,t,n){const r=String.fromCharCode(i);if(Ft.call(Me,r)){const o=Me[r],s="&"+o;return t&&Lr.includes(o)&&!Sr.includes(o)&&(!n||e&&e!==61&&/[^\da-z]/i.test(String.fromCharCode(e)))?s:s+";"}return""}function Cr(i,e,t){let n=Tr(i,e,t.omitOptionalSemicolons),r;if((t.useNamedReferences||t.useShortestReferences)&&(r=Or(i,e,t.omitOptionalSemicolons,t.attribute)),(t.useShortestReferences||!r)&&t.useShortestReferences){const o=Pr(i,e,t.omitOptionalSemicolons);o.length|^->||--!>|"],kr=["<",">"];function Dr(i,e,t,n){return n.settings.bogusComments?"":"";function r(o){return X(o,Object.assign({},n.settings.characterReferences,{subset:kr}))}}function Nr(i,e,t,n){return""}function it(i,e){const t=String(i);if(typeof e!="string")throw new TypeError("Expected character");let n=0,r=t.indexOf(e);for(;r!==-1;)n++,r=t.indexOf(e,r+e.length);return n}function xr(i,e){const t=e||{};return(i[i.length-1]===""?[...i,""]:i).join((t.padRight?" ":"")+","+(t.padLeft===!1?"":" ")).trim()}function Vr(i){return i.join(" ").trim()}const Mr=/[ \t\n\f\r]/g;function Fe(i){return typeof i=="object"?i.type==="text"?ot(i.value):!1:ot(i)}function ot(i){return i.replace(Mr,"")===""}const C=$t(1),Ut=$t(-1),Br=[];function $t(i){return e;function e(t,n,r){const o=t?t.children:Br;let s=(n||0)+i,l=o[s];if(!r)for(;l&&Fe(l);)s+=i,l=o[s];return l}}const Gr={}.hasOwnProperty;function Ht(i){return e;function e(t,n,r){return Gr.call(i,t.tagName)&&i[t.tagName](t,n,r)}}const Ue=Ht({body:Fr,caption:we,colgroup:we,dd:Wr,dt:Hr,head:we,html:jr,li:$r,optgroup:zr,option:qr,p:Ur,rp:st,rt:st,tbody:Yr,td:at,tfoot:Xr,th:at,thead:Kr,tr:Jr});function we(i,e,t){const n=C(t,e,!0);return!n||n.type!=="comment"&&!(n.type==="text"&&Fe(n.value.charAt(0)))}function jr(i,e,t){const n=C(t,e);return!n||n.type!=="comment"}function Fr(i,e,t){const n=C(t,e);return!n||n.type!=="comment"}function Ur(i,e,t){const n=C(t,e);return n?n.type==="element"&&(n.tagName==="address"||n.tagName==="article"||n.tagName==="aside"||n.tagName==="blockquote"||n.tagName==="details"||n.tagName==="div"||n.tagName==="dl"||n.tagName==="fieldset"||n.tagName==="figcaption"||n.tagName==="figure"||n.tagName==="footer"||n.tagName==="form"||n.tagName==="h1"||n.tagName==="h2"||n.tagName==="h3"||n.tagName==="h4"||n.tagName==="h5"||n.tagName==="h6"||n.tagName==="header"||n.tagName==="hgroup"||n.tagName==="hr"||n.tagName==="main"||n.tagName==="menu"||n.tagName==="nav"||n.tagName==="ol"||n.tagName==="p"||n.tagName==="pre"||n.tagName==="section"||n.tagName==="table"||n.tagName==="ul"):!t||!(t.type==="element"&&(t.tagName==="a"||t.tagName==="audio"||t.tagName==="del"||t.tagName==="ins"||t.tagName==="map"||t.tagName==="noscript"||t.tagName==="video"))}function $r(i,e,t){const n=C(t,e);return!n||n.type==="element"&&n.tagName==="li"}function Hr(i,e,t){const n=C(t,e);return!!(n&&n.type==="element"&&(n.tagName==="dt"||n.tagName==="dd"))}function Wr(i,e,t){const n=C(t,e);return!n||n.type==="element"&&(n.tagName==="dt"||n.tagName==="dd")}function st(i,e,t){const n=C(t,e);return!n||n.type==="element"&&(n.tagName==="rp"||n.tagName==="rt")}function zr(i,e,t){const n=C(t,e);return!n||n.type==="element"&&n.tagName==="optgroup"}function qr(i,e,t){const n=C(t,e);return!n||n.type==="element"&&(n.tagName==="option"||n.tagName==="optgroup")}function Kr(i,e,t){const n=C(t,e);return!!(n&&n.type==="element"&&(n.tagName==="tbody"||n.tagName==="tfoot"))}function Yr(i,e,t){const n=C(t,e);return!n||n.type==="element"&&(n.tagName==="tbody"||n.tagName==="tfoot")}function Xr(i,e,t){return!C(t,e)}function Jr(i,e,t){const n=C(t,e);return!n||n.type==="element"&&n.tagName==="tr"}function at(i,e,t){const n=C(t,e);return!n||n.type==="element"&&(n.tagName==="td"||n.tagName==="th")}const Qr=Ht({body:ti,colgroup:ni,head:ei,html:Zr,tbody:ri});function Zr(i){const e=C(i,-1);return!e||e.type!=="comment"}function ei(i){const e=i.children,t=[];let n=-1;for(;++n0}function ti(i){const e=C(i,-1,!0);return!e||e.type!=="comment"&&!(e.type==="text"&&Fe(e.value.charAt(0)))&&!(e.type==="element"&&(e.tagName==="meta"||e.tagName==="link"||e.tagName==="script"||e.tagName==="style"||e.tagName==="template"))}function ni(i,e,t){const n=Ut(t,e),r=C(i,-1,!0);return t&&n&&n.type==="element"&&n.tagName==="colgroup"&&Ue(n,t.children.indexOf(n),t)?!1:!!(r&&r.type==="element"&&r.tagName==="col")}function ri(i,e,t){const n=Ut(t,e),r=C(i,-1);return t&&n&&n.type==="element"&&(n.tagName==="thead"||n.tagName==="tbody")&&Ue(n,t.children.indexOf(n),t)?!1:!!(r&&r.type==="element"&&r.tagName==="tr")}const ue={name:[[` +\f\r &/=>`.split(""),` +\f\r "&'/=>\``.split("")],[`\0 +\f\r "&'/<=>`.split(""),`\0 +\f\r "&'/<=>\``.split("")]],unquoted:[[` +\f\r &>`.split(""),`\0 +\f\r "&'<=>\``.split("")],[`\0 +\f\r "&'<=>\``.split(""),`\0 +\f\r "&'<=>\``.split("")]],single:[["&'".split(""),"\"&'`".split("")],["\0&'".split(""),"\0\"&'`".split("")]],double:[['"&'.split(""),"\"&'`".split("")],['\0"&'.split(""),"\0\"&'`".split("")]]};function ii(i,e,t,n){const r=n.schema,o=r.space==="svg"?!1:n.settings.omitOptionalTags;let s=r.space==="svg"?n.settings.closeEmptyElements:n.settings.voids.includes(i.tagName.toLowerCase());const l=[];let a;r.space==="html"&&i.tagName==="svg"&&(n.schema=jt);const c=oi(n,i.properties),d=n.all(r.space==="html"&&i.tagName==="template"?i.content:i);return n.schema=r,d&&(s=!1),(c||!o||!Qr(i,e,t))&&(l.push("<",i.tagName,c?" "+c:""),s&&(r.space==="svg"||n.settings.closeSelfClosing)&&(a=c.charAt(c.length-1),(!n.settings.tightSelfClosing||a==="/"||a&&a!=='"'&&a!=="'")&&l.push(" "),l.push("/")),l.push(">")),l.push(d),!s&&(!o||!Ue(i,e,t))&&l.push(""),l.join("")}function oi(i,e){const t=[];let n=-1,r;if(e){for(r in e)if(e[r]!==null&&e[r]!==void 0){const o=si(i,r,e[r]);o&&t.push(o)}}for(;++nit(t,i.alternative)&&(s=i.alternative),l=s+X(t,Object.assign({},i.settings.characterReferences,{subset:(s==="'"?ue.single:ue.double)[r][o],attribute:!0}))+s),a+(l&&"="+l))}const ai=["<","&"];function Wt(i,e,t,n){return t&&t.type==="element"&&(t.tagName==="script"||t.tagName==="style")?i.value:X(i.value,Object.assign({},n.settings.characterReferences,{subset:ai}))}function li(i,e,t,n){return n.settings.allowDangerousHtml?i.value:Wt(i,e,t,n)}function ci(i,e,t,n){return n.all(i)}const ui=br("type",{invalid:di,unknown:pi,handlers:{comment:Dr,doctype:Nr,element:ii,raw:li,root:ci,text:Wt}});function di(i){throw new Error("Expected node, not `"+i+"`")}function pi(i){const e=i;throw new Error("Cannot compile unknown node `"+e.type+"`")}const hi={},mi={},fi=[];function _i(i,e){const t=e||hi,n=t.quote||'"',r=n==='"'?"'":'"';if(n!=='"'&&n!=="'")throw new Error("Invalid quote `"+n+"`, expected `'` or `\"`");return{one:gi,all:yi,settings:{omitOptionalTags:t.omitOptionalTags||!1,allowParseErrors:t.allowParseErrors||!1,allowDangerousCharacters:t.allowDangerousCharacters||!1,quoteSmart:t.quoteSmart||!1,preferUnquoted:t.preferUnquoted||!1,tightAttributes:t.tightAttributes||!1,upperDoctype:t.upperDoctype||!1,tightDoctype:t.tightDoctype||!1,bogusComments:t.bogusComments||!1,tightCommaSeparatedLists:t.tightCommaSeparatedLists||!1,tightSelfClosing:t.tightSelfClosing||!1,collapseEmptyAttributes:t.collapseEmptyAttributes||!1,allowDangerousHtml:t.allowDangerousHtml||!1,voids:t.voids||ur,characterReferences:t.characterReferences||mi,closeSelfClosing:t.closeSelfClosing||!1,closeEmptyElements:t.closeEmptyElements||!1},schema:t.space==="svg"?jt:vr,quote:n,alternative:r}.one(Array.isArray(i)?{type:"root",children:i}:i,void 0,void 0)}function gi(i,e,t){return ui(i,e,t,this)}function yi(i){const e=[],t=i&&i.children||fi;let n=-1;for(;++nve(i,s,l),codeToTokens:(s,l)=>ye(i,s,l)};let r=_i(ve(i,e,t,n));for(const s of Ee(t))r=((o=s.postprocess)==null?void 0:o.call(n,r,t))||r;return r}async function vi(i){let e,t;const n={};function r(h){t=h,n.HEAPU8=new Uint8Array(h),n.HEAPU32=new Uint32Array(h)}function o(){return typeof performance<"u"?performance.now():Date.now()}function s(h,f,_){n.HEAPU8.copyWithin(h,f,f+_)}function l(){return 2147483648}function a(h){try{return e.grow(h-t.byteLength+65535>>>16),r(e.buffer),1}catch{}}function c(h){const f=n.HEAPU8.length;h=h>>>0;const _=l();if(h>_)return!1;const E=(y,v)=>y+(v-y%v)%v;for(let y=1;y<=4;y*=2){let v=f*(1+.2/y);v=Math.min(v,h+100663296);const b=Math.min(_,E(Math.max(h,v),65536));if(a(b))return!0}return!1}const d={emscripten_get_now:o,emscripten_memcpy_big:s,emscripten_resize_heap:c,fd_write:()=>0};async function m(){const f=await i({env:d,wasi_snapshot_preview1:d});e=f.memory,r(e.buffer),Object.assign(n,f)}return await m(),n}let w=null,bi=!1;function Ri(i){throw new D(i.UTF8ToString(i.getLastOnigError()))}class Ae{constructor(e){p(this,"utf16Length");p(this,"utf8Length");p(this,"utf16Value");p(this,"utf8Value");p(this,"utf16OffsetToUtf8");p(this,"utf8OffsetToUtf16");const t=e.length,n=Ae._utf8ByteLength(e),r=n!==t,o=r?new Uint32Array(t+1):null;r&&(o[t]=n);const s=r?new Uint32Array(n+1):null;r&&(s[n]=t);const l=new Uint8Array(n);let a=0;for(let c=0;c=55296&&d<=56319&&c+1=56320&&f<=57343&&(m=(d-55296<<10)+65536|f-56320,h=!0)}r&&(o[c]=a,h&&(o[c+1]=a),m<=127?s[a+0]=c:m<=2047?(s[a+0]=c,s[a+1]=c):m<=65535?(s[a+0]=c,s[a+1]=c,s[a+2]=c):(s[a+0]=c,s[a+1]=c,s[a+2]=c,s[a+3]=c)),m<=127?l[a++]=m:m<=2047?(l[a++]=192|(m&1984)>>>6,l[a++]=128|(m&63)>>>0):m<=65535?(l[a++]=224|(m&61440)>>>12,l[a++]=128|(m&4032)>>>6,l[a++]=128|(m&63)>>>0):(l[a++]=240|(m&1835008)>>>18,l[a++]=128|(m&258048)>>>12,l[a++]=128|(m&4032)>>>6,l[a++]=128|(m&63)>>>0),h&&c++}this.utf16Length=t,this.utf8Length=n,this.utf16Value=e,this.utf8Value=l,this.utf16OffsetToUtf8=o,this.utf8OffsetToUtf16=s}static _utf8ByteLength(e){let t=0;for(let n=0,r=e.length;n=55296&&o<=56319&&n+1=56320&&a<=57343&&(s=(o-55296<<10)+65536|a-56320,l=!0)}s<=127?t+=1:s<=2047?t+=2:s<=65535?t+=3:t+=4,l&&n++}return t}createString(e){const t=e.omalloc(this.utf8Length);return e.HEAPU8.set(this.utf8Value,t),t}}const x=class x{constructor(e){p(this,"id",++x.LAST_ID);p(this,"_onigBinding");p(this,"content");p(this,"utf16Length");p(this,"utf8Length");p(this,"utf16OffsetToUtf8");p(this,"utf8OffsetToUtf16");p(this,"ptr");if(!w)throw new D("Must invoke loadWasm first.");this._onigBinding=w,this.content=e;const t=new Ae(e);this.utf16Length=t.utf16Length,this.utf8Length=t.utf8Length,this.utf16OffsetToUtf8=t.utf16OffsetToUtf8,this.utf8OffsetToUtf16=t.utf8OffsetToUtf16,this.utf8Length<1e4&&!x._sharedPtrInUse?(x._sharedPtr||(x._sharedPtr=w.omalloc(1e4)),x._sharedPtrInUse=!0,w.HEAPU8.set(t.utf8Value,x._sharedPtr),this.ptr=x._sharedPtr):this.ptr=t.createString(w)}convertUtf8OffsetToUtf16(e){return this.utf8OffsetToUtf16?e<0?0:e>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[e]:e}convertUtf16OffsetToUtf8(e){return this.utf16OffsetToUtf8?e<0?0:e>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[e]:e}dispose(){this.ptr===x._sharedPtr?x._sharedPtrInUse=!1:this._onigBinding.ofree(this.ptr)}};p(x,"LAST_ID",0),p(x,"_sharedPtr",0),p(x,"_sharedPtrInUse",!1);let be=x;class Ai{constructor(e){p(this,"_onigBinding");p(this,"_ptr");if(!w)throw new D("Must invoke loadWasm first.");const t=[],n=[];for(let l=0,a=e.length;l{let n=i;return n=await n,typeof n=="function"&&(n=await n(t)),typeof n=="function"&&(n=await n(t)),Ti(n)?n=await n.instantiator(t):Pi(n)?n=await n.default(t):(Li(n)&&(n=n.data),Si(n)?typeof WebAssembly.instantiateStreaming=="function"?n=await wi(n)(t):n=await ki(n)(t):Oi(n)&&(n=await Ii(n)(t))),"instance"in n&&(n=n.instance),"exports"in n&&(n=n.exports),n})}return de=e(),de}function Ii(i){return e=>WebAssembly.instantiate(i,e)}function wi(i){return e=>WebAssembly.instantiateStreaming(i,e)}function ki(i){return async e=>{const t=await i.arrayBuffer();return WebAssembly.instantiate(t,e)}}function Di(i){return new be(i)}function Ni(i){return new Ai(i)}const lt={light:"#333333",dark:"#bbbbbb"},ct={light:"#fffffe",dark:"#1e1e1e"},ut="__shiki_resolved";function zt(i){var l,a,c,d,m;if(i!=null&&i[ut])return i;const e={...i};e.tokenColors&&!e.settings&&(e.settings=e.tokenColors,delete e.tokenColors),e.type||(e.type="dark"),e.colorReplacements={...e.colorReplacements},e.settings||(e.settings=[]);let{bg:t,fg:n}=e;if(!t||!n){const h=e.settings?e.settings.find(f=>!f.name&&!f.scope):void 0;(l=h==null?void 0:h.settings)!=null&&l.foreground&&(n=h.settings.foreground),(a=h==null?void 0:h.settings)!=null&&a.background&&(t=h.settings.background),!n&&((c=e==null?void 0:e.colors)!=null&&c["editor.foreground"])&&(n=e.colors["editor.foreground"]),!t&&((d=e==null?void 0:e.colors)!=null&&d["editor.background"])&&(t=e.colors["editor.background"]),n||(n=e.type==="light"?lt.light:lt.dark),t||(t=e.type==="light"?ct.light:ct.dark),e.fg=n,e.bg=t}e.settings[0]&&e.settings[0].settings&&!e.settings[0].scope||e.settings.unshift({settings:{foreground:e.fg,background:e.bg}});let r=0;const o=new Map;function s(h){var _;if(o.has(h))return o.get(h);r+=1;const f=`#${r.toString(16).padStart(8,"0").toLowerCase()}`;return(_=e.colorReplacements)!=null&&_[`#${f}`]?s(h):(o.set(h,f),f)}e.settings=e.settings.map(h=>{var y,v;const f=((y=h.settings)==null?void 0:y.foreground)&&!h.settings.foreground.startsWith("#"),_=((v=h.settings)==null?void 0:v.background)&&!h.settings.background.startsWith("#");if(!f&&!_)return h;const E={...h,settings:{...h.settings}};if(f){const b=s(h.settings.foreground);e.colorReplacements[b]=h.settings.foreground,E.settings.foreground=b}if(_){const b=s(h.settings.background);e.colorReplacements[b]=h.settings.background,E.settings.background=b}return E});for(const h of Object.keys(e.colors||{}))if((h==="editor.foreground"||h==="editor.background"||h.startsWith("terminal.ansi"))&&!((m=e.colors[h])!=null&&m.startsWith("#"))){const f=s(e.colors[h]);e.colorReplacements[f]=e.colors[h],e.colors[h]=f}return Object.defineProperty(e,ut,{enumerable:!1,writable:!1,value:!0}),e}class xi extends Fn{constructor(t,n,r,o={}){super(t);p(this,"_resolver");p(this,"_themes");p(this,"_langs");p(this,"_alias");p(this,"_resolvedThemes",{});p(this,"_resolvedGrammars",{});p(this,"_langMap",{});p(this,"_langGraph",new Map);p(this,"_textmateThemeCache",new WeakMap);p(this,"_loadedThemesCache",null);p(this,"_loadedLanguagesCache",null);this._resolver=t,this._themes=n,this._langs=r,this._alias=o,n.forEach(s=>this.loadTheme(s)),r.forEach(s=>this.loadLanguage(s))}getTheme(t){return typeof t=="string"?this._resolvedThemes[t]:this.loadTheme(t)}loadTheme(t){const n=zt(t);return n.name&&(this._resolvedThemes[n.name]=n,this._loadedThemesCache=null),n}getLoadedThemes(){return this._loadedThemesCache||(this._loadedThemesCache=Object.keys(this._resolvedThemes)),this._loadedThemesCache}setTheme(t){let n=this._textmateThemeCache.get(t);n||(n=_e.createFromRawTheme(t),this._textmateThemeCache.set(t,n)),this._syncRegistry.setTheme(n)}getGrammar(t){if(this._alias[t]){const n=new Set([t]);for(;this._alias[t];){if(t=this._alias[t],n.has(t))throw new D(`Circular alias \`${Array.from(n).join(" -> ")} -> ${t}\``);n.add(t)}}return this._resolvedGrammars[t]}async loadLanguage(t){var s,l,a,c;if(this.getGrammar(t.name))return;const n=new Set(Object.values(this._langMap).filter(d=>{var m;return(m=d.embeddedLangsLazy)==null?void 0:m.includes(t.name)}));this._resolver.addLanguage(t);const r={balancedBracketSelectors:t.balancedBracketSelectors||["*"],unbalancedBracketSelectors:t.unbalancedBracketSelectors||[]};this._syncRegistry._rawGrammars.set(t.scopeName,t);const o=await this.loadGrammarWithConfiguration(t.scopeName,1,r);if(this._resolvedGrammars[t.name]=o,t.aliases&&t.aliases.forEach(d=>{this._alias[d]=t.name}),this._loadedLanguagesCache=null,n.size)for(const d of n)delete this._resolvedGrammars[d.name],this._loadedLanguagesCache=null,(l=(s=this._syncRegistry)==null?void 0:s._injectionGrammars)==null||l.delete(d.scopeName),(c=(a=this._syncRegistry)==null?void 0:a._grammars)==null||c.delete(d.scopeName),await this.loadLanguage(this._langMap[d.name])}async init(){this._themes.map(t=>this.loadTheme(t)),await this.loadLanguages(this._langs)}async loadLanguages(t){for(const o of t)this.resolveEmbeddedLanguages(o);const n=Array.from(this._langGraph.entries()),r=n.filter(([o,s])=>!s);if(r.length){const o=n.filter(([s,l])=>{var a;return l&&((a=l.embeddedLangs)==null?void 0:a.some(c=>r.map(([d])=>d).includes(c)))}).filter(s=>!r.includes(s));throw new D(`Missing languages ${r.map(([s])=>`\`${s}\``).join(", ")}, required by ${o.map(([s])=>`\`${s}\``).join(", ")}`)}for(const[o,s]of n)this._resolver.addLanguage(s);for(const[o,s]of n)await this.loadLanguage(s)}getLoadedLanguages(){return this._loadedLanguagesCache||(this._loadedLanguagesCache=Object.keys({...this._resolvedGrammars,...this._alias})),this._loadedLanguagesCache}resolveEmbeddedLanguages(t){if(this._langMap[t.name]=t,this._langGraph.set(t.name,t),t.embeddedLangs)for(const n of t.embeddedLangs)this._langGraph.set(n,this._langMap[n])}}class Vi{constructor(e,t){p(this,"_langs",new Map);p(this,"_scopeToLang",new Map);p(this,"_injections",new Map);p(this,"_onigLibPromise");this._onigLibPromise=e,t.forEach(n=>this.addLanguage(n))}get onigLib(){return this._onigLibPromise}getLangRegistration(e){return this._langs.get(e)}async loadGrammar(e){return this._scopeToLang.get(e)}addLanguage(e){this._langs.set(e.name,e),e.aliases&&e.aliases.forEach(t=>{this._langs.set(t,e)}),this._scopeToLang.set(e.scopeName,e),e.injectTo&&e.injectTo.forEach(t=>{this._injections.get(t)||this._injections.set(t,[]),this._injections.get(t).push(e.scopeName)})}getInjections(e){const t=e.split(".");let n=[];for(let r=1;r<=t.length;r++){const o=t.slice(0,r).join(".");n=[...n,...this._injections.get(o)||[]]}return n}}let qt;function Wi(i){qt=i}async function Mi(i={}){async function e(y){return Promise.resolve(typeof y=="function"?y():y).then(v=>v.default||v)}async function t(y){return Array.from(new Set((await Promise.all(y.filter(v=>!Pt(v)).map(async v=>await e(v).then(b=>Array.isArray(b)?b:[b])))).flat()))}const n=i.loadWasm||qt,[r,o]=await Promise.all([Promise.all((i.themes||[]).map(e)).then(y=>y.map(zt)),t(i.langs||[]),n?Ci(n):void 0]),s=new Vi(Promise.resolve({createOnigScanner(y){return Ni(y)},createOnigString(y){return Di(y)}}),o),l=new xi(s,r,o,i.langAlias);await l.init();let a;function c(y){const v=l.getGrammar(typeof y=="string"?y:y.name);if(!v)throw new D(`Language \`${y}\` not found, you may need to load it first`);return v}function d(y){if(y==="none")return{bg:"",fg:"",name:"none",settings:[],type:"dark"};const v=l.getTheme(y);if(!v)throw new D(`Theme \`${y}\` not found, you may need to load it first`);return v}function m(y){const v=d(y);a!==y&&(l.setTheme(v),a=y);const b=l.getColorMap();return{theme:v,colorMap:b}}function h(){return l.getLoadedThemes()}function f(){return l.getLoadedLanguages()}async function _(...y){await l.loadLanguages(await t(y))}async function E(...y){await Promise.all(y.map(async v=>St(v)?null:l.loadTheme(await e(v))))}return{setTheme:m,getTheme:d,getLanguage:c,getLoadedThemes:h,getLoadedLanguages:f,loadLanguage:_,loadTheme:E}}async function Bi(i={}){const e=await Mi(i);return{codeToTokensBase:(t,n)=>Ge(e,t,n),codeToTokensWithThemes:(t,n)=>wt(e,t,n),codeToTokens:(t,n)=>ye(e,t,n),codeToHast:(t,n)=>ve(e,t,n),codeToHtml:(t,n)=>Ei(e,t,n),...e,getInternalContext:()=>e}}function Gi(i,e,t){async function n(r){function o(d){if(typeof d=="string"){if(Pt(d))return[];const m=i[d];if(!m)throw new D(`Language \`${d}\` is not included in this bundle. You may want to load it from external source.`);return m}return d}function s(d){if(St(d))return"none";if(typeof d=="string"){const m=e[d];if(!m)throw new D(`Theme \`${d}\` is not included in this bundle. You may want to load it from external source.`);return m}return d}const l=(r.themes??[]).map(d=>s(d)),a=(r.langs??[]).map(d=>o(d)),c=await Bi({...r,themes:l,langs:a,loadWasm:t});return{...c,loadLanguage(...d){return c.loadLanguage(...d.map(o))},loadTheme(...d){return c.loadTheme(...d.map(s))}}}return n}function ji(i){let e;async function t(n={}){if(e){const r=await e;return await Promise.all([r.loadTheme(...le(n.theme||[])),r.loadLanguage(...le(n.lang||[]))]),r}else return e=i({themes:le(n.theme||[]),langs:le(n.lang||[])}),e}return{getSingletonHighlighter:()=>t(),async codeToHtml(n,r){return(await t({lang:r.lang,theme:"theme"in r?[r.theme]:Object.values(r.themes)})).codeToHtml(n,r)},async codeToHast(n,r){return(await t({lang:r.lang,theme:"theme"in r?[r.theme]:Object.values(r.themes)})).codeToHast(n,r)},async codeToTokens(n,r){return(await t({lang:r.lang,theme:"theme"in r?[r.theme]:Object.values(r.themes)})).codeToTokens(n,r)},async codeToTokensBase(n,r){return(await t(r)).codeToTokensBase(n,r)},async codeToTokensWithThemes(n,r){return(await t({lang:r.lang,theme:Object.values(r.themes).filter(Boolean)})).codeToTokensWithThemes(n,r)}}}const Fi=Gi(en,rn,tn),{codeToHtml:zi,codeToHast:qi,codeToTokens:Ki,codeToTokensBase:Yi,codeToTokensWithThemes:Xi,getSingletonHighlighter:Ji}=ji(Fi);function Qi(i={}){var s;const{name:e="css-variables",variablePrefix:t="--shiki-",fontStyle:n=!0}=i,r=l=>{var a;return(a=i.variableDefaults)!=null&&a[l]?`var(${t}${l}, ${i.variableDefaults[l]})`:`var(${t}${l})`},o={name:e,type:"dark",colors:{"editor.foreground":r("foreground"),"editor.background":r("background"),"terminal.ansiBlack":r("ansi-black"),"terminal.ansiRed":r("ansi-red"),"terminal.ansiGreen":r("ansi-green"),"terminal.ansiYellow":r("ansi-yellow"),"terminal.ansiBlue":r("ansi-blue"),"terminal.ansiMagenta":r("ansi-magenta"),"terminal.ansiCyan":r("ansi-cyan"),"terminal.ansiWhite":r("ansi-white"),"terminal.ansiBrightBlack":r("ansi-bright-black"),"terminal.ansiBrightRed":r("ansi-bright-red"),"terminal.ansiBrightGreen":r("ansi-bright-green"),"terminal.ansiBrightYellow":r("ansi-bright-yellow"),"terminal.ansiBrightBlue":r("ansi-bright-blue"),"terminal.ansiBrightMagenta":r("ansi-bright-magenta"),"terminal.ansiBrightCyan":r("ansi-bright-cyan"),"terminal.ansiBrightWhite":r("ansi-bright-white")},tokenColors:[{scope:["keyword.operator.accessor","meta.group.braces.round.function.arguments","meta.template.expression","markup.fenced_code meta.embedded.block"],settings:{foreground:r("foreground")}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:["strong","markup.heading.markdown","markup.bold.markdown"],settings:{fontStyle:"bold"}},{scope:["markup.italic.markdown"],settings:{fontStyle:"italic"}},{scope:"meta.link.inline.markdown",settings:{fontStyle:"underline",foreground:r("token-link")}},{scope:["string","markup.fenced_code","markup.inline"],settings:{foreground:r("token-string")}},{scope:["comment","string.quoted.docstring.multi"],settings:{foreground:r("token-comment")}},{scope:["constant.numeric","constant.language","constant.other.placeholder","constant.character.format.placeholder","variable.language.this","variable.other.object","variable.other.class","variable.other.constant","meta.property-name","meta.property-value","support"],settings:{foreground:r("token-constant")}},{scope:["keyword","storage.modifier","storage.type","storage.control.clojure","entity.name.function.clojure","entity.name.tag.yaml","support.function.node","support.type.property-name.json","punctuation.separator.key-value","punctuation.definition.template-expression"],settings:{foreground:r("token-keyword")}},{scope:"variable.parameter.function",settings:{foreground:r("token-parameter")}},{scope:["support.function","entity.name.type","entity.other.inherited-class","meta.function-call","meta.instance.constructor","entity.other.attribute-name","entity.name.function","constant.keyword.clojure"],settings:{foreground:r("token-function")}},{scope:["entity.name.tag","string.quoted","string.regexp","string.interpolated","string.template","string.unquoted.plain.out.yaml","keyword.other.template"],settings:{foreground:r("token-string-expression")}},{scope:["punctuation.definition.arguments","punctuation.definition.dict","punctuation.separator","meta.function-call.arguments"],settings:{foreground:r("token-punctuation")}},{scope:["markup.underline.link","punctuation.definition.metadata.markdown"],settings:{foreground:r("token-link")}},{scope:["beginning.punctuation.definition.list.markdown"],settings:{foreground:r("token-string")}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","string.other.link.title.markdown","string.other.link.description.markdown"],settings:{foreground:r("token-keyword")}}]};return n||(o.tokenColors=(s=o.tokenColors)==null?void 0:s.map(l=>{var a;return(a=l.settings)!=null&&a.fontStyle&&delete l.settings.fontStyle,l})),o}export{B as FontStyle,D as ShikiError,Ot as addClassToHast,U as applyColorReplacements,en as bundledLanguages,Zt as bundledLanguagesAlias,Qt as bundledLanguagesBase,dt as bundledLanguagesInfo,rn as bundledThemes,nn as bundledThemesInfo,qi as codeToHast,zi as codeToHtml,Ki as codeToTokens,Yi as codeToTokensBase,Xi as codeToTokensWithThemes,Qi as createCssVariablesTheme,Wn as createPositionConverter,ji as createSingletonShorthands,Gi as createdBundledHighlighter,Fi as getHighlighter,Bi as getHighlighterCore,Mi as getShikiInternal,Ji as getSingletonHighlighter,Ct as getTokenStyleObject,tn as getWasmInlined,_i as hastToHtml,Lt as isNoneTheme,Tt as isPlainLang,Pt as isSpecialLang,St as isSpecialTheme,Ci as loadWasm,zt as normalizeTheme,Wi as setDefaultWasmLoader,Re as splitLines,$n as splitToken,Hn as splitTokens,It as stringifyTokenStyle,le as toArray,Jn as tokenizeAnsiWithTheme,Zn as tokenizeWithTheme,ar as tokensToHast,or as transformerDecorations}; diff --git a/assets/chunks/ini.DeVv6D4_.js b/assets/chunks/ini.DeVv6D4_.js new file mode 100644 index 000000000..705ff684f --- /dev/null +++ b/assets/chunks/ini.DeVv6D4_.js @@ -0,0 +1 @@ +const n=Object.freeze({displayName:"INI",name:"ini",patterns:[{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ini"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.ini"}},end:"\\n",name:"comment.line.number-sign.ini"}]},{begin:"(^[ \\t]+)?(?=;)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ini"}},end:"(?!\\G)",patterns:[{begin:";",beginCaptures:{0:{name:"punctuation.definition.comment.ini"}},end:"\\n",name:"comment.line.semicolon.ini"}]},{captures:{1:{name:"keyword.other.definition.ini"},2:{name:"punctuation.separator.key-value.ini"}},match:"\\b([a-zA-Z0-9_.-]+)\\b\\s*(=)"},{captures:{1:{name:"punctuation.definition.entity.ini"},3:{name:"punctuation.definition.entity.ini"}},match:"^(\\[)(.*?)(\\])",name:"entity.name.section.group-title.ini"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.ini"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.ini"}},name:"string.quoted.single.ini",patterns:[{match:"\\\\.",name:"constant.character.escape.ini"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.ini"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.ini"}},name:"string.quoted.double.ini"}],scopeName:"source.ini",aliases:["properties"]});var i=[n];export{i as default}; diff --git a/assets/chunks/java.ClXEvkw9.js b/assets/chunks/java.ClXEvkw9.js new file mode 100644 index 000000000..0d3dff69a --- /dev/null +++ b/assets/chunks/java.ClXEvkw9.js @@ -0,0 +1,68 @@ +const e=Object.freeze({displayName:"Java",name:"java",patterns:[{begin:"\\b(package)\\b\\s*",beginCaptures:{1:{name:"keyword.other.package.java"}},contentName:"storage.modifier.package.java",end:"\\s*(;)",endCaptures:{1:{name:"punctuation.terminator.java"}},name:"meta.package.java",patterns:[{include:"#comments"},{match:"(?<=\\.)\\s*\\.|\\.(?=\\s*;)",name:"invalid.illegal.character_not_allowed_here.java"},{match:"(?",endCaptures:{0:{name:"punctuation.bracket.angle.java"}},patterns:[{match:"\\b(extends|super)\\b",name:"storage.modifier.$1.java"},{captures:{1:{name:"storage.type.java"}},match:"(?>>?|~|\\^)",name:"keyword.operator.bitwise.java"},{match:"((&|\\^|\\||<<|>>>?)=)",name:"keyword.operator.assignment.bitwise.java"},{match:"(===?|!=|<=|>=|<>|<|>)",name:"keyword.operator.comparison.java"},{match:"([+*/%-]=)",name:"keyword.operator.assignment.arithmetic.java"},{match:"(=)",name:"keyword.operator.assignment.java"},{match:"(\\-\\-|\\+\\+)",name:"keyword.operator.increment-decrement.java"},{match:"(\\-|\\+|\\*|\\/|%)",name:"keyword.operator.arithmetic.java"},{match:"(!|&&|\\|\\|)",name:"keyword.operator.logical.java"},{match:"(\\||&)",name:"keyword.operator.bitwise.java"},{match:"\\b(const|goto)\\b",name:"keyword.reserved.java"}]},"lambda-expression":{patterns:[{match:"->",name:"storage.type.function.arrow.java"}]},"member-variables":{begin:"(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)",end:"(?=\\=|;)",patterns:[{include:"#storage-modifiers"},{include:"#variables"},{include:"#primitive-arrays"},{include:"#object-types"}]},"method-call":{begin:"(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()",beginCaptures:{1:{name:"punctuation.separator.period.java"},2:{name:"entity.name.function.java"},3:{name:"punctuation.definition.parameters.begin.bracket.round.java"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.java"}},name:"meta.method-call.java",patterns:[{include:"#code"}]},methods:{begin:"(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()",end:"(})|(?=;)",endCaptures:{1:{name:"punctuation.section.method.end.bracket.curly.java"}},name:"meta.method.java",patterns:[{include:"#storage-modifiers"},{begin:"(\\w+)\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.java"},2:{name:"punctuation.definition.parameters.begin.bracket.round.java"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.java"}},name:"meta.method.identifier.java",patterns:[{include:"#parameters"},{include:"#parens"},{include:"#comments"}]},{include:"#generics"},{begin:"(?=\\w.*\\s+\\w+\\s*\\()",end:"(?=\\s+\\w+\\s*\\()",name:"meta.method.return-type.java",patterns:[{include:"#all-types"},{include:"#parens"},{include:"#comments"}]},{include:"#throws"},{begin:"{",beginCaptures:{0:{name:"punctuation.section.method.begin.bracket.curly.java"}},contentName:"meta.method.body.java",end:"(?=})",patterns:[{include:"#code"}]},{include:"#comments"}]},module:{begin:"((open)\\s)?(module)\\s+(\\w+)",beginCaptures:{1:{name:"storage.modifier.java"},3:{name:"storage.modifier.java"},4:{name:"entity.name.type.module.java"}},end:"}",endCaptures:{0:{name:"punctuation.section.module.end.bracket.curly.java"}},name:"meta.module.java",patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.module.begin.bracket.curly.java"}},contentName:"meta.module.body.java",end:"(?=})",patterns:[{include:"#comments"},{include:"#comments-javadoc"},{match:"\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",name:"keyword.module.java"}]}]},numbers:{patterns:[{match:`(?x) +\\b(?)?(\\()",beginCaptures:{1:{name:"storage.modifier.java"},2:{name:"entity.name.type.record.java"},3:{patterns:[{include:"#generics"}]},4:{name:"punctuation.definition.parameters.begin.bracket.round.java"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.java"}},name:"meta.record.identifier.java",patterns:[{include:"#code"}]},{begin:"(implements)\\s",beginCaptures:{1:{name:"storage.modifier.implements.java"}},end:"(?=\\s*\\{)",name:"meta.definition.class.implemented.interfaces.java",patterns:[{include:"#object-types-inherited"},{include:"#comments"}]},{include:"#record-body"}]},"record-body":{begin:"{",beginCaptures:{0:{name:"punctuation.section.class.begin.bracket.curly.java"}},end:"(?=})",name:"meta.record.body.java",patterns:[{include:"#record-constructor"},{include:"#class-body"}]},"record-constructor":{begin:"(?!new)(?=[\\w<].*\\s+)(?=([^\\(=/]|/(?!/))+(?={))",end:"(})|(?=;)",endCaptures:{1:{name:"punctuation.section.method.end.bracket.curly.java"}},name:"meta.method.java",patterns:[{include:"#storage-modifiers"},{begin:"(\\w+)",beginCaptures:{1:{name:"entity.name.function.java"}},end:"(?=\\s*{)",name:"meta.method.identifier.java",patterns:[{include:"#comments"}]},{include:"#comments"},{begin:"{",beginCaptures:{0:{name:"punctuation.section.method.begin.bracket.curly.java"}},contentName:"meta.method.body.java",end:"(?=})",patterns:[{include:"#code"}]}]},"static-initializer":{patterns:[{include:"#anonymous-block-and-instance-initializer"},{match:"static",name:"storage.modifier.java"}]},"storage-modifiers":{match:"\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\b",name:"storage.modifier.java"},strings:{patterns:[{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.java"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.java"}},name:"string.quoted.triple.java",patterns:[{match:'(\\\\""")(?!")|(\\\\.)',name:"constant.character.escape.java"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.java"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.java"}},name:"string.quoted.double.java",patterns:[{match:"\\\\.",name:"constant.character.escape.java"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.java"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.java"}},name:"string.quoted.single.java",patterns:[{match:"\\\\.",name:"constant.character.escape.java"}]}]},throws:{begin:"throws",beginCaptures:{0:{name:"storage.modifier.java"}},end:"(?={|;)",name:"meta.throwables.java",patterns:[{match:",",name:"punctuation.separator.delimiter.java"},{match:"[a-zA-Z$_][\\.a-zA-Z0-9$_]*",name:"storage.type.java"},{include:"#comments"}]},"try-catch-finally":{patterns:[{begin:"\\btry\\b",beginCaptures:{0:{name:"keyword.control.try.java"}},end:"}",endCaptures:{0:{name:"punctuation.section.try.end.bracket.curly.java"}},name:"meta.try.java",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.try.resources.begin.bracket.round.java"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.try.resources.end.bracket.round.java"}},name:"meta.try.resources.java",patterns:[{include:"#code"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.try.begin.bracket.curly.java"}},contentName:"meta.try.body.java",end:"(?=})",patterns:[{include:"#code"}]}]},{begin:"\\b(catch)\\b",beginCaptures:{1:{name:"keyword.control.catch.java"}},end:"}",endCaptures:{0:{name:"punctuation.section.catch.end.bracket.curly.java"}},name:"meta.catch.java",patterns:[{include:"#comments"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.java"}},contentName:"meta.catch.parameters.java",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.java"}},patterns:[{include:"#comments"},{include:"#storage-modifiers"},{begin:"[a-zA-Z$_][\\.a-zA-Z0-9$_]*",beginCaptures:{0:{name:"storage.type.java"}},end:"(\\|)|(?=\\))",endCaptures:{1:{name:"punctuation.catch.separator.java"}},patterns:[{include:"#comments"},{captures:{0:{name:"variable.parameter.java"}},match:"\\w+"}]}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.catch.begin.bracket.curly.java"}},contentName:"meta.catch.body.java",end:"(?=})",patterns:[{include:"#code"}]}]},{begin:"\\bfinally\\b",beginCaptures:{0:{name:"keyword.control.finally.java"}},end:"}",endCaptures:{0:{name:"punctuation.section.finally.end.bracket.curly.java"}},name:"meta.finally.java",patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.finally.begin.bracket.curly.java"}},contentName:"meta.finally.body.java",end:"(?=})",patterns:[{include:"#code"}]}]}]},variables:{begin:`(?x) +(?= +\\b +( +(void|boolean|byte|char|short|int|float|long|double) +| +(?>(\\w+\\.)*[A-Z_]+\\w*) +) +\\b +\\s* +( +<[\\w<>,\\.?\\s\\[\\]]*> +)? +\\s* +( +(\\[\\])* +)? +\\s+ +[A-Za-z_$][\\w$]* +([\\w\\[\\],$][\\w\\[\\],\\s]*)? +\\s*(=|:|;) +)`,end:"(?=\\=|:|;)",name:"meta.definition.variable.java",patterns:[{captures:{1:{name:"variable.other.definition.java"}},match:"([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))"},{include:"#all-types"},{include:"#code"}]},"variables-local":{begin:"(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))",end:"(?=\\=|:|;)",name:"meta.definition.variable.local.java",patterns:[{match:"\\bvar\\b",name:"storage.type.local.java"},{captures:{1:{name:"variable.other.definition.java"}},match:"([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))"},{include:"#code"}]}},scopeName:"source.java"});var a=[e];export{a as default}; diff --git a/assets/chunks/javascript.Dch3xQiY.js b/assets/chunks/javascript.Dch3xQiY.js new file mode 100644 index 000000000..f429ddc37 --- /dev/null +++ b/assets/chunks/javascript.Dch3xQiY.js @@ -0,0 +1,699 @@ +const e=Object.freeze({displayName:"JavaScript",name:"javascript",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},name:"meta.objectliteral.js",patterns:[{include:"#object-member"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.js"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js"}},name:"meta.array.literal.js",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.js"},2:{name:"variable.parameter.js"}},match:"(?:(?)",name:"meta.arrow.js"},{begin:`(?x) (?: +(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +) +)`,beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.js",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"((?<=\\}|\\S)(?)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.js",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.return.type.arrow.js",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"async-modifier":{match:"(?\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.js"}},end:"(?=$)",name:"comment.line.triple-slash.directive.js",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.js"},2:{name:"entity.name.tag.directive.js"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.js"}},name:"meta.tag.js",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.js"},{match:"=",name:"keyword.operator.assignment.js"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"()|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.js"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.js"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|satisfies|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}},match:"(?x)(?:(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.js"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.js"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.js"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.js"},{captures:{1:{name:"keyword.operator.logical.js"},2:{name:"keyword.operator.assignment.compound.js"},3:{name:"keyword.operator.arithmetic.js"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.js"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.js"},{match:"\\=",name:"keyword.operator.assignment.js"},{match:"--",name:"keyword.operator.decrement.js"},{match:"\\+\\+",name:"keyword.operator.increment.js"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.js"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#jsx"},{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},"field-declaration":{begin:`(?x)(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.js variable.object.property.js"},{match:"\\?",name:"keyword.operator.optional.js"},{match:"\\!",name:"keyword.operator.definiteassignment.js"}]},"for-loop":{begin:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",name:"meta.function-call.js",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.js",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.js punctuation.accessor.optional.js"},{match:"\\!",name:"meta.function-call.js keyword.operator.definiteassignment.js"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.js"}]},"function-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.constant.property.js"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.property.js"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.js"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.js"}]},"if-statement":{patterns:[{begin:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?))",end:"(/>)|(?:())",endCaptures:{1:{name:"punctuation.definition.tag.end.js"},2:{name:"punctuation.definition.tag.begin.js"},3:{name:"entity.name.tag.namespace.js"},4:{name:"punctuation.separator.namespace.js"},5:{name:"entity.name.tag.js"},6:{name:"support.class.component.js"},7:{name:"punctuation.definition.tag.end.js"}},name:"meta.tag.js",patterns:[{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"}},end:"(?=[/]?>)",patterns:[{include:"#comment"},{include:"#type-arguments"},{include:"#jsx-tag-attributes"}]},{begin:"(>)",beginCaptures:{1:{name:"punctuation.definition.tag.end.js"}},contentName:"meta.jsx.children.js",end:"(?=|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.js",patterns:[{include:"#comment"},{include:"#jsx-tag-attribute-name"},{include:"#jsx-tag-attribute-assignment"},{include:"#jsx-string-double-quoted"},{include:"#jsx-string-single-quoted"},{include:"#jsx-evaluated-code"},{include:"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.js"},"jsx-tag-in-expression":{begin:`(?x) +(?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* +(?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) +(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))`,end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag"}]},"jsx-tag-without-attributes":{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"},6:{name:"punctuation.definition.tag.end.js"}},contentName:"meta.jsx.children.js",end:"()",endCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"},6:{name:"punctuation.definition.tag.end.js"}},name:"meta.tag.without-attributes.js",patterns:[{include:"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{begin:"(?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag-without-attributes"}]},label:{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",beginCaptures:{1:{name:"entity.name.label.js"},2:{name:"punctuation.separator.label.js"}},end:"(?<=\\})",patterns:[{include:"#decl-block"}]},{captures:{1:{name:"entity.name.label.js"},2:{name:"punctuation.separator.label.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},literal:{patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#array-literal"},{include:"#this-literal"},{include:"#super-literal"}]},"method-declaration":{patterns:[{begin:"(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.modifier.async.js"},5:{name:"keyword.operator.new.js"},6:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.modifier.async.js"},5:{name:"storage.type.property.js"},6:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.property.js"},3:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.property.js"},3:{name:"keyword.generator.asterisk.js"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.js meta.object-literal.key.js",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.js meta.object-literal.key.js",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.js"},{captures:{0:{name:"meta.object-literal.key.js"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.js"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js"}},end:"(?=,|\\})",name:"meta.object.member.js",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.js"},{captures:{1:{name:"keyword.control.as.js"},2:{name:"storage.modifier.js"}},match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.js"}},match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}},match:"(?x)(?:(?])",name:"meta.type.annotation.js",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"}},contentName:"meta.arrow.js meta.return.type.arrow.js",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.js"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"keyword.other.js"}},name:"string.regexp.js",patterns:[{include:"#regexp"}]},{begin:"((?"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) +| +(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`},{captures:{1:{name:"support.type.object.module.js"},2:{name:"support.type.object.module.js"},3:{name:"punctuation.accessor.js"},4:{name:"punctuation.accessor.optional.js"},5:{name:"support.type.object.module.js"}},match:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.js"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},contentName:"meta.embedded.line.js",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},name:"meta.template.expression.js",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"},2:{name:"string.template.js punctuation.definition.string.template.begin.js"}},contentName:"string.template.js",end:"`",endCaptures:{0:{name:"string.template.js punctuation.definition.string.template.end.js"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},contentName:"meta.embedded.line.js",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},name:"meta.template.expression.js",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.js"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.js"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.js"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.js"}},name:"meta.type.parameters.js",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.js"}},match:"(?)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?) +)) +) +) +)`,end:"(?<=\\))",name:"meta.type.function.js",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.js"}},end:"(?)(?:\\?]|//|$)",name:"meta.type.function.return.js",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"(?)(?]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.js",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.js"},2:{name:"entity.name.type.js"},3:{name:"keyword.operator.expression.extends.js"}},match:"(?)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.js"},2:{name:"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},contentName:"meta.type.parameters.js",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.js"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},name:"meta.object.type.js",patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?=\\S)"},{match:"(?)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.js"}},name:"meta.type.parameters.js",patterns:[{include:"#comment"},{match:"(?)",name:"keyword.operator.assignment.js"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},name:"meta.type.paren.cover.js",patterns:[{captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"entity.name.function.js variable.language.this.js"},4:{name:"entity.name.function.js"},5:{name:"keyword.operator.optional.js"}},match:`(?x)(?:(?) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`},{captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}},match:"(?x)(?:(?:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js variable.other.constant.js entity.name.function.js"}},end:"(?=$|^|[;,=}]|((?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js entity.name.function.js"},2:{name:"keyword.operator.definiteassignment.js"}},end:"(?=$|^|[;,=}]|((?\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.js"}},end:"(?=$|^|[,);}\\]]|((?|{%\\s*(block|filter|for|if|macro|raw))",foldingStopMarker:"(|{%\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\s*%})",name:"jinja-html",patterns:[{include:"source.jinja"},{include:"text.html.basic"}],scopeName:"text.html.jinja",embeddedLangs:["html"]});var n=[...e,a];const t=Object.freeze({displayName:"Jinja",foldingStartMarker:"({%\\s*(block|filter|for|if|macro|raw))",foldingStopMarker:"({%\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\s*%})",name:"jinja",patterns:[{begin:"({%)\\s*(raw)\\s*(%})",captures:{1:{name:"entity.other.jinja.delimiter.tag"},2:{name:"keyword.control.jinja"},3:{name:"entity.other.jinja.delimiter.tag"}},end:"({%)\\s*(endraw)\\s*(%})",name:"comment.block.jinja.raw"},{include:"#comments"},{begin:"{{-?",captures:[{name:"variable.entity.other.jinja.delimiter"}],end:"-?}}",name:"variable.meta.scope.jinja",patterns:[{include:"#expression"}]},{begin:"{%-?",captures:[{name:"entity.other.jinja.delimiter.tag"}],end:"-?%}",name:"meta.scope.jinja.tag",patterns:[{include:"#expression"}]}],repository:{comments:{begin:"{#-?",captures:[{name:"entity.other.jinja.delimiter.comment"}],end:"-?#}",name:"comment.block.jinja",patterns:[{include:"#comments"}]},escaped_char:{match:"\\\\x[0-9A-F]{2}",name:"constant.character.escape.hex.jinja"},escaped_unicode_char:{captures:{1:{name:"constant.character.escape.unicode.16-bit-hex.jinja"},2:{name:"constant.character.escape.unicode.32-bit-hex.jinja"},3:{name:"constant.character.escape.unicode.name.jinja"}},match:"(\\\\U[0-9A-Fa-f]{8})|(\\\\u[0-9A-Fa-f]{4})|(\\\\N\\{[a-zA-Z ]+\\})"},expression:{patterns:[{captures:{1:{name:"keyword.control.jinja"},2:{name:"variable.other.jinja.block"}},match:"\\s*\\b(block)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{captures:{1:{name:"keyword.control.jinja"},2:{name:"variable.other.jinja.filter"}},match:"\\s*\\b(filter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{captures:{1:{name:"keyword.control.jinja"},2:{name:"variable.other.jinja.test"}},match:"\\s*\\b(is)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{captures:{1:{name:"keyword.control.jinja"}},match:"(?<=\\{\\%-|\\{\\%)\\s*\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*[,=])"},{match:"\\b(and|else|if|in|import|not|or|recursive|with(out)?\\s+context)\\b",name:"keyword.control.jinja"},{match:"\\b(true|false|none)\\b",name:"constant.language.jinja"},{match:"\\b(loop|super|self|varargs|kwargs)\\b",name:"variable.language.jinja"},{match:"[a-zA-Z_][a-zA-Z0-9_]*",name:"variable.other.jinja"},{match:"(\\+|\\-|\\*\\*|\\*|//|/|%)",name:"keyword.operator.arithmetic.jinja"},{captures:{1:{name:"punctuation.other.jinja"},2:{name:"variable.other.jinja.filter"}},match:"(\\|)([a-zA-Z_][a-zA-Z0-9_]*)"},{captures:{1:{name:"punctuation.other.jinja"},2:{name:"variable.other.jinja.attribute"}},match:"(\\.)([a-zA-Z_][a-zA-Z0-9_]*)"},{begin:"\\[",captures:[{name:"punctuation.other.jinja"}],end:"\\]",patterns:[{include:"#expression"}]},{begin:"\\(",captures:[{name:"punctuation.other.jinja"}],end:"\\)",patterns:[{include:"#expression"}]},{begin:"\\{",captures:[{name:"punctuation.other.jinja"}],end:"\\}",patterns:[{include:"#expression"}]},{match:"(\\.|:|\\||,)",name:"punctuation.other.jinja"},{match:"(==|<=|=>|<|>|!=)",name:"keyword.operator.comparison.jinja"},{match:"=",name:"keyword.operator.assignment.jinja"},{begin:'"',beginCaptures:[{name:"punctuation.definition.string.begin.jinja"}],end:'"',endCaptures:[{name:"punctuation.definition.string.end.jinja"}],name:"string.quoted.double.jinja",patterns:[{include:"#string"}]},{begin:"'",beginCaptures:[{name:"punctuation.definition.string.begin.jinja"}],end:"'",endCaptures:[{name:"punctuation.definition.string.end.jinja"}],name:"string.quoted.single.jinja",patterns:[{include:"#string"}]},{begin:"@/",beginCaptures:[{name:"punctuation.definition.regexp.begin.jinja"}],end:"/",endCaptures:[{name:"punctuation.definition.regexp.end.jinja"}],name:"string.regexp.jinja",patterns:[{include:"#simple_escapes"}]}]},simple_escapes:{captures:{1:{name:"constant.character.escape.newline.jinja"},2:{name:"constant.character.escape.backlash.jinja"},3:{name:"constant.character.escape.double-quote.jinja"},4:{name:"constant.character.escape.single-quote.jinja"},5:{name:"constant.character.escape.bell.jinja"},6:{name:"constant.character.escape.backspace.jinja"},7:{name:"constant.character.escape.formfeed.jinja"},8:{name:"constant.character.escape.linefeed.jinja"},9:{name:"constant.character.escape.return.jinja"},10:{name:"constant.character.escape.tab.jinja"},11:{name:"constant.character.escape.vertical-tab.jinja"}},match:`(\\\\\\n)|(\\\\\\\\)|(\\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)`},string:{patterns:[{include:"#simple_escapes"},{include:"#escaped_char"},{include:"#escaped_unicode_char"}]}},scopeName:"source.jinja",embeddedLangs:["jinja-html"]});var s=[...n,t];export{s as default}; diff --git a/assets/chunks/jison.CHwQvgii.js b/assets/chunks/jison.CHwQvgii.js new file mode 100644 index 000000000..e5eff1bcf --- /dev/null +++ b/assets/chunks/jison.CHwQvgii.js @@ -0,0 +1 @@ +import e from"./javascript.Dch3xQiY.js";const n=Object.freeze({displayName:"Jison",fileTypes:["jison"],injections:{"L:(meta.action.jison - (comment | string)), source.js.embedded.jison - (comment | string), source.js.embedded.source - (comment | string.quoted.double | string.quoted.single)":{patterns:[{match:"\\${2}",name:"variable.language.semantic-value.jison"},{match:"@\\$",name:"variable.language.result-location.jison"},{match:"##\\$|\\byysp\\b",name:"variable.language.stack-index-0.jison"},{match:"#\\S+#",name:"support.variable.token-reference.jison"},{match:"#\\$",name:"variable.language.result-id.jison"},{match:"\\$(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)",name:"support.variable.token-value.jison"},{match:"@(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)",name:"support.variable.token-location.jison"},{match:"##(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)",name:"support.variable.stack-index.jison"},{match:"#(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)",name:"support.variable.token-id.jison"},{match:"\\byy(?:l(?:eng|ineno|oc|stack)|rulelength|s(?:tate|s?tack)|text|vstack)\\b",name:"variable.language.jison"},{match:"\\byy(?:clearin|erro[kr])\\b",name:"keyword.other.jison"}]}},name:"jison",patterns:[{begin:"%%",beginCaptures:{0:{name:"meta.separator.section.jison"}},end:"\\z",patterns:[{begin:"%%",beginCaptures:{0:{name:"meta.separator.section.jison"}},end:"\\z",patterns:[{begin:"\\G",contentName:"source.js.embedded.jison",end:"\\z",name:"meta.section.epilogue.jison",patterns:[{include:"#epilogue_section"}]}]},{begin:"\\G",end:"(?=%%)",name:"meta.section.rules.jison",patterns:[{include:"#rules_section"}]}]},{begin:"^",end:"(?=%%)",name:"meta.section.declarations.jison",patterns:[{include:"#declarations_section"}]}],repository:{actions:{patterns:[{begin:"\\{\\{",beginCaptures:{0:{name:"punctuation.definition.action.begin.jison"}},contentName:"source.js.embedded.jison",end:"\\}\\}",endCaptures:{0:{name:"punctuation.definition.action.end.jison"}},name:"meta.action.jison",patterns:[{include:"source.js"}]},{begin:"(?=%\\{)",end:"(?<=%\\})",name:"meta.action.jison",patterns:[{include:"#user_code_blocks"}]}]},comments:{patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.jison"}},end:"$",name:"comment.line.double-slash.jison"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.jison"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.jison"}},name:"comment.block.jison"}]},declarations_section:{patterns:[{include:"#comments"},{begin:"^\\s*(%lex)\\s*$",beginCaptures:{1:{name:"entity.name.tag.lexer.begin.jison"}},end:"^\\s*(/lex)\\b",endCaptures:{1:{name:"entity.name.tag.lexer.end.jison"}},patterns:[{begin:"%%",beginCaptures:{0:{name:"meta.separator.section.jisonlex"}},end:"(?=/lex)",patterns:[{begin:"^%%",beginCaptures:{0:{name:"meta.separator.section.jisonlex"}},end:"(?=/lex)",patterns:[{begin:"\\G",contentName:"source.js.embedded.jisonlex",end:"(?=/lex)",name:"meta.section.user-code.jisonlex",patterns:[{include:"source.jisonlex#user_code_section"}]}]},{begin:"\\G",end:"^(?=%%|/lex)",name:"meta.section.rules.jisonlex",patterns:[{include:"source.jisonlex#rules_section"}]}]},{begin:"^",end:"(?=%%|/lex)",name:"meta.section.definitions.jisonlex",patterns:[{include:"source.jisonlex#definitions_section"}]}]},{begin:"(?=%\\{)",end:"(?<=%\\})",name:"meta.section.prologue.jison",patterns:[{include:"#user_code_blocks"}]},{include:"#options_declarations"},{match:"%(ebnf|left|nonassoc|parse-param|right|start)\\b",name:"keyword.other.declaration.$1.jison"},{include:"#include_declarations"},{begin:"%(code)\\b",beginCaptures:{0:{name:"keyword.other.declaration.$1.jison"}},end:"$",name:"meta.code.jison",patterns:[{include:"#comments"},{include:"#rule_actions"},{match:"(init|required)",name:"keyword.other.code-qualifier.$1.jison"},{include:"#quoted_strings"},{match:"\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b",name:"string.unquoted.jison"}]},{begin:"%(parser-type)\\b",beginCaptures:{0:{name:"keyword.other.declaration.$1.jison"}},end:"$",name:"meta.parser-type.jison",patterns:[{include:"#comments"},{include:"#quoted_strings"},{match:"\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b",name:"string.unquoted.jison"}]},{begin:"%(token)\\b",beginCaptures:{0:{name:"keyword.other.declaration.$1.jison"}},end:"$|(%%|;)",endCaptures:{1:{name:"punctuation.terminator.declaration.token.jison"}},name:"meta.token.jison",patterns:[{include:"#comments"},{include:"#numbers"},{include:"#quoted_strings"},{match:"<[[:alpha:]_](?:[\\w-]*\\w)?>",name:"invalid.unimplemented.jison"},{match:"\\S+",name:"entity.other.token.jison"}]},{match:"%(debug|import)\\b",name:"keyword.other.declaration.$1.jison"},{match:"%prec\\b",name:"invalid.illegal.jison"},{match:"%[[:alpha:]_](?:[\\w-]*\\w)?\\b",name:"invalid.unimplemented.jison"},{include:"#numbers"},{include:"#quoted_strings"}]},epilogue_section:{patterns:[{include:"#user_code_include_declarations"},{include:"source.js"}]},include_declarations:{patterns:[{begin:"(%(include))\\s*",beginCaptures:{1:{name:"keyword.other.declaration.$2.jison"}},end:`(?<=['"])|(?=\\s)`,name:"meta.include.jison",patterns:[{include:"#include_paths"}]}]},include_paths:{patterns:[{include:"#quoted_strings"},{begin:"(?=\\S)",end:"(?=\\s)",name:"string.unquoted.jison",patterns:[{include:"source.js#string_escapes"}]}]},numbers:{patterns:[{captures:{1:{name:"storage.type.number.jison"},2:{name:"constant.numeric.integer.hexadecimal.jison"}},match:"(0[Xx])([0-9A-Fa-f]+)"},{match:"\\d+",name:"constant.numeric.integer.decimal.jison"}]},options_declarations:{patterns:[{begin:"%options\\b",beginCaptures:{0:{name:"keyword.other.options.jison"}},end:"^(?=\\S|\\s*$)",name:"meta.options.jison",patterns:[{include:"#comments"},{match:"\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b",name:"entity.name.constant.jison"},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.option.assignment.jison"}},end:`(?<=['"])|(?=\\s)`,patterns:[{include:"#comments"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.$1.jison"},{include:"#numbers"},{include:"#quoted_strings"},{match:"\\S+",name:"string.unquoted.jison"}]},{include:"#quoted_strings"}]}]},quoted_strings:{patterns:[{begin:'"',end:'"',name:"string.quoted.double.jison",patterns:[{include:"source.js#string_escapes"}]},{begin:"'",end:"'",name:"string.quoted.single.jison",patterns:[{include:"source.js#string_escapes"}]}]},rule_actions:{patterns:[{include:"#actions"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.action.begin.jison"}},contentName:"source.js.embedded.jison",end:"\\}",endCaptures:{0:{name:"punctuation.definition.action.end.jison"}},name:"meta.action.jison",patterns:[{include:"source.js"}]},{include:"#include_declarations"},{begin:"->|→",beginCaptures:{0:{name:"punctuation.definition.action.arrow.jison"}},contentName:"source.js.embedded.jison",end:"$",name:"meta.action.jison",patterns:[{include:"source.js"}]}]},rules_section:{patterns:[{include:"#comments"},{include:"#actions"},{include:"#include_declarations"},{begin:"\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b",beginCaptures:{0:{name:"entity.name.constant.rule-result.jison"}},end:";",endCaptures:{0:{name:"punctuation.terminator.rule.jison"}},name:"meta.rule.jison",patterns:[{include:"#comments"},{begin:":",beginCaptures:{0:{name:"keyword.operator.rule-components.assignment.jison"}},end:"(?=;)",name:"meta.rule-components.jison",patterns:[{include:"#comments"},{include:"#quoted_strings"},{captures:{1:{name:"punctuation.definition.named-reference.begin.jison"},2:{name:"entity.name.other.reference.jison"},3:{name:"punctuation.definition.named-reference.end.jison"}},match:"(\\[)([[:alpha:]_](?:[\\w-]*\\w)?)(\\])"},{begin:"(%(prec))\\s*",beginCaptures:{1:{name:"keyword.other.$2.jison"}},end:`(?<=['"])|(?=\\s)`,name:"meta.prec.jison",patterns:[{include:"#comments"},{include:"#quoted_strings"},{begin:"(?=\\S)",end:"(?=\\s)",name:"constant.other.token.jison"}]},{match:"\\|",name:"keyword.operator.rule-components.separator.jison"},{match:"\\b(?:EOF|error)\\b",name:"keyword.other.$0.jison"},{match:"(?:%(?:e(?:mpty|psilon))|\\b[Ɛɛεϵ])\\b",name:"keyword.other.empty.jison"},{include:"#rule_actions"}]}]}]},user_code_blocks:{patterns:[{begin:"%\\{",beginCaptures:{0:{name:"punctuation.definition.user-code-block.begin.jison"}},contentName:"source.js.embedded.jison",end:"%\\}",endCaptures:{0:{name:"punctuation.definition.user-code-block.end.jison"}},name:"meta.user-code-block.jison",patterns:[{include:"source.js"}]}]},user_code_include_declarations:{patterns:[{begin:"^(%(include))\\s*",beginCaptures:{1:{name:"keyword.other.declaration.$2.jison"}},end:`(?<=['"])|(?=\\s)`,name:"meta.include.jison",patterns:[{include:"#include_paths"}]}]}},scopeName:"source.jison",embeddedLangs:["javascript"]});var i=[...e,n];export{i as default}; diff --git a/assets/chunks/json.CupVZNk8.js b/assets/chunks/json.CupVZNk8.js new file mode 100644 index 000000000..312d1d8ef --- /dev/null +++ b/assets/chunks/json.CupVZNk8.js @@ -0,0 +1,25 @@ +const n=Object.freeze({displayName:"JSON",name:"json",patterns:[{include:"#value"}],repository:{array:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.json"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.json"}},name:"meta.structure.array.json",patterns:[{include:"#value"},{match:",",name:"punctuation.separator.array.json"},{match:"[^\\s\\]]",name:"invalid.illegal.expected-array-separator.json"}]},comments:{patterns:[{begin:"/\\*\\*(?!/)",captures:{0:{name:"punctuation.definition.comment.json"}},end:"\\*/",name:"comment.block.documentation.json"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.json"}},end:"\\*/",name:"comment.block.json"},{captures:{1:{name:"punctuation.definition.comment.json"}},match:"(//).*$\\n?",name:"comment.line.double-slash.js"}]},constant:{match:"\\b(?:true|false|null)\\b",name:"constant.language.json"},number:{match:`(?x) +-? +(?: +0 +| +[1-9] +\\d* +) +(?: +(?: +\\. +\\d+ +)? +(?: +[eE] +[+-]? +\\d+ +)? +)?`,name:"constant.numeric.json"},object:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dictionary.begin.json"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dictionary.end.json"}},name:"meta.structure.dictionary.json",patterns:[{comment:"the JSON object key",include:"#objectkey"},{include:"#comments"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.dictionary.key-value.json"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.dictionary.pair.json"}},name:"meta.structure.dictionary.value.json",patterns:[{comment:"the JSON object value",include:"#value"},{match:"[^\\s,]",name:"invalid.illegal.expected-dictionary-separator.json"}]},{match:"[^\\s\\}]",name:"invalid.illegal.expected-dictionary-separator.json"}]},objectkey:{begin:'"',beginCaptures:{0:{name:"punctuation.support.type.property-name.begin.json"}},end:'"',endCaptures:{0:{name:"punctuation.support.type.property-name.end.json"}},name:"string.json support.type.property-name.json",patterns:[{include:"#stringcontent"}]},string:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.json"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.json"}},name:"string.quoted.double.json",patterns:[{include:"#stringcontent"}]},stringcontent:{patterns:[{match:`(?x) +\\\\ +(?: +["\\\\/bfnrt] +| +u +[0-9a-fA-F]{4})`,name:"constant.character.escape.json"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json"}]},value:{patterns:[{include:"#constant"},{include:"#number"},{include:"#string"},{include:"#array"},{include:"#object"},{include:"#comments"}]}},scopeName:"source.json"});var e=[n];export{e as default}; diff --git a/assets/chunks/json5.Bh8mriwU.js b/assets/chunks/json5.Bh8mriwU.js new file mode 100644 index 000000000..d4970bf42 --- /dev/null +++ b/assets/chunks/json5.Bh8mriwU.js @@ -0,0 +1,17 @@ +const n=Object.freeze({displayName:"JSON5",fileTypes:["json5"],name:"json5",patterns:[{include:"#comments"},{include:"#value"}],repository:{array:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.json5"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.json5"}},name:"meta.structure.array.json5",patterns:[{include:"#comments"},{include:"#value"},{match:",",name:"punctuation.separator.array.json5"},{match:"[^\\s\\]]",name:"invalid.illegal.expected-array-separator.json5"}]},comments:{patterns:[{match:"/{2}.*",name:"comment.single.json5"},{begin:"/\\*\\*(?!/)",captures:{0:{name:"punctuation.definition.comment.json5"}},end:"\\*/",name:"comment.block.documentation.json5"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.json5"}},end:"\\*/",name:"comment.block.json5"}]},constant:{match:"\\b(?:true|false|null|Infinity|NaN)\\b",name:"constant.language.json5"},infinity:{match:"(-)*\\b(?:Infinity|NaN)\\b",name:"constant.language.json5"},key:{name:"string.key.json5",patterns:[{include:"#stringSingle"},{include:"#stringDouble"},{match:"[a-zA-Z0-9_-]",name:"string.key.json5"}]},number:{patterns:[{comment:"handles hexadecimal numbers",match:"(0x)[0-9a-fA-f]*",name:"constant.hex.numeric.json5"},{comment:"handles integer and decimal numbers",match:"[+-.]?(?=[1-9]|0(?!\\d))\\d+(\\.\\d+)?([eE][+-]?\\d+)?",name:"constant.dec.numeric.json5"}]},object:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dictionary.begin.json5"}},comment:"a json5 object",end:"\\}",endCaptures:{0:{name:"punctuation.definition.dictionary.end.json5"}},name:"meta.structure.dictionary.json5",patterns:[{include:"#comments"},{comment:"the json5 object key",include:"#key"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.dictionary.key-value.json5"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.dictionary.pair.json5"}},name:"meta.structure.dictionary.value.json5",patterns:[{comment:"the json5 object value",include:"#value"},{match:"[^\\s,]",name:"invalid.illegal.expected-dictionary-separator.json5"}]},{match:"[^\\s\\}]",name:"invalid.illegal.expected-dictionary-separator.json5"}]},stringDouble:{begin:'["]',beginCaptures:{0:{name:"punctuation.definition.string.begin.json5"}},end:'["]',endCaptures:{0:{name:"punctuation.definition.string.end.json5"}},name:"string.quoted.json5",patterns:[{match:`(?x: +\\\\ +(?: +["\\\\/bfnrt] +| +u +[0-9a-fA-F]{4} +) +)`,name:"constant.character.escape.json5"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json5"}]},stringSingle:{begin:"[']",beginCaptures:{0:{name:"punctuation.definition.string.begin.json5"}},end:"[']",endCaptures:{0:{name:"punctuation.definition.string.end.json5"}},name:"string.quoted.json5",patterns:[{match:`(?x: +\\\\ +(?: +["\\\\/bfnrt] +| +u +[0-9a-fA-F]{4} +) +)`,name:"constant.character.escape.json5"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json5"}]},value:{comment:"the 'value' diagram at http://json.org",patterns:[{include:"#constant"},{include:"#infinity"},{include:"#number"},{include:"#stringSingle"},{include:"#stringDouble"},{include:"#array"},{include:"#object"}]}},scopeName:"source.json5"});var e=[n];export{e as default}; diff --git a/assets/chunks/jsonc.DYI1rfmx.js b/assets/chunks/jsonc.DYI1rfmx.js new file mode 100644 index 000000000..151a4816b --- /dev/null +++ b/assets/chunks/jsonc.DYI1rfmx.js @@ -0,0 +1,25 @@ +const n=Object.freeze({displayName:"JSON with Comments",name:"jsonc",patterns:[{include:"#value"}],repository:{array:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.json.comments"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.json.comments"}},name:"meta.structure.array.json.comments",patterns:[{include:"#value"},{match:",",name:"punctuation.separator.array.json.comments"},{match:"[^\\s\\]]",name:"invalid.illegal.expected-array-separator.json.comments"}]},comments:{patterns:[{begin:"/\\*\\*(?!/)",captures:{0:{name:"punctuation.definition.comment.json.comments"}},end:"\\*/",name:"comment.block.documentation.json.comments"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.json.comments"}},end:"\\*/",name:"comment.block.json.comments"},{captures:{1:{name:"punctuation.definition.comment.json.comments"}},match:"(//).*$\\n?",name:"comment.line.double-slash.js"}]},constant:{match:"\\b(?:true|false|null)\\b",name:"constant.language.json.comments"},number:{match:`(?x) +-? +(?: +0 +| +[1-9] +\\d* +) +(?: +(?: +\\. +\\d+ +)? +(?: +[eE] +[+-]? +\\d+ +)? +)?`,name:"constant.numeric.json.comments"},object:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dictionary.begin.json.comments"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dictionary.end.json.comments"}},name:"meta.structure.dictionary.json.comments",patterns:[{comment:"the JSON object key",include:"#objectkey"},{include:"#comments"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.dictionary.key-value.json.comments"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.dictionary.pair.json.comments"}},name:"meta.structure.dictionary.value.json.comments",patterns:[{comment:"the JSON object value",include:"#value"},{match:"[^\\s,]",name:"invalid.illegal.expected-dictionary-separator.json.comments"}]},{match:"[^\\s\\}]",name:"invalid.illegal.expected-dictionary-separator.json.comments"}]},objectkey:{begin:'"',beginCaptures:{0:{name:"punctuation.support.type.property-name.begin.json.comments"}},end:'"',endCaptures:{0:{name:"punctuation.support.type.property-name.end.json.comments"}},name:"string.json.comments support.type.property-name.json.comments",patterns:[{include:"#stringcontent"}]},string:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.json.comments"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.json.comments"}},name:"string.quoted.double.json.comments",patterns:[{include:"#stringcontent"}]},stringcontent:{patterns:[{match:`(?x) +\\\\ +(?: +["\\\\/bfnrt] +| +u +[0-9a-fA-F]{4})`,name:"constant.character.escape.json.comments"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json.comments"}]},value:{patterns:[{include:"#constant"},{include:"#number"},{include:"#string"},{include:"#array"},{include:"#object"},{include:"#comments"}]}},scopeName:"source.json.comments"});var e=[n];export{e as default}; diff --git a/assets/chunks/jsonl.BUpeXbsf.js b/assets/chunks/jsonl.BUpeXbsf.js new file mode 100644 index 000000000..d18f3192c --- /dev/null +++ b/assets/chunks/jsonl.BUpeXbsf.js @@ -0,0 +1,25 @@ +const n=Object.freeze({displayName:"JSON Lines",name:"jsonl",patterns:[{include:"#value"}],repository:{array:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.json.lines"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.json.lines"}},name:"meta.structure.array.json.lines",patterns:[{include:"#value"},{match:",",name:"punctuation.separator.array.json.lines"},{match:"[^\\s\\]]",name:"invalid.illegal.expected-array-separator.json.lines"}]},comments:{patterns:[{begin:"/\\*\\*(?!/)",captures:{0:{name:"punctuation.definition.comment.json.lines"}},end:"\\*/",name:"comment.block.documentation.json.lines"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.json.lines"}},end:"\\*/",name:"comment.block.json.lines"},{captures:{1:{name:"punctuation.definition.comment.json.lines"}},match:"(//).*$\\n?",name:"comment.line.double-slash.js"}]},constant:{match:"\\b(?:true|false|null)\\b",name:"constant.language.json.lines"},number:{match:`(?x) +-? +(?: +0 +| +[1-9] +\\d* +) +(?: +(?: +\\. +\\d+ +)? +(?: +[eE] +[+-]? +\\d+ +)? +)?`,name:"constant.numeric.json.lines"},object:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dictionary.begin.json.lines"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dictionary.end.json.lines"}},name:"meta.structure.dictionary.json.lines",patterns:[{comment:"the JSON object key",include:"#objectkey"},{include:"#comments"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.dictionary.key-value.json.lines"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.dictionary.pair.json.lines"}},name:"meta.structure.dictionary.value.json.lines",patterns:[{comment:"the JSON object value",include:"#value"},{match:"[^\\s,]",name:"invalid.illegal.expected-dictionary-separator.json.lines"}]},{match:"[^\\s\\}]",name:"invalid.illegal.expected-dictionary-separator.json.lines"}]},objectkey:{begin:'"',beginCaptures:{0:{name:"punctuation.support.type.property-name.begin.json.lines"}},end:'"',endCaptures:{0:{name:"punctuation.support.type.property-name.end.json.lines"}},name:"string.json.lines support.type.property-name.json.lines",patterns:[{include:"#stringcontent"}]},string:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.json.lines"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.json.lines"}},name:"string.quoted.double.json.lines",patterns:[{include:"#stringcontent"}]},stringcontent:{patterns:[{match:`(?x) +\\\\ +(?: +["\\\\/bfnrt] +| +u +[0-9a-fA-F]{4})`,name:"constant.character.escape.json.lines"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json.lines"}]},value:{patterns:[{include:"#constant"},{include:"#number"},{include:"#string"},{include:"#array"},{include:"#object"},{include:"#comments"}]}},scopeName:"source.json.lines"});var e=[n];export{e as default}; diff --git a/assets/chunks/jsonnet.C9d3aiqh.js b/assets/chunks/jsonnet.C9d3aiqh.js new file mode 100644 index 000000000..f6af7941b --- /dev/null +++ b/assets/chunks/jsonnet.C9d3aiqh.js @@ -0,0 +1 @@ +const n=Object.freeze({displayName:"Jsonnet",name:"jsonnet",patterns:[{include:"#expression"},{include:"#keywords"}],repository:{"builtin-functions":{patterns:[{match:"\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](filter|floor|force|length|log|makeArray|mantissa)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](objectFields|objectHas|pow|sin|sqrt|tan|type|thisFile)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](abs|assertEqual|escapeString(Bash|Dollars|Json|Python))\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](filterMap|flattenArrays|foldl|foldr|format|join)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](lines|manifest(Ini|Python(Vars)?)|map|max|min|mod)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](set|set(Diff|Inter|Member|Union)|sort)\\b",name:"support.function.jsonnet"},{match:"\\bstd[.](range|split|stringChars|substr|toString|uniq)\\b",name:"support.function.jsonnet"}]},comment:{patterns:[{begin:"/\\*",end:"\\*/",name:"comment.block.jsonnet"},{match:"//.*$",name:"comment.line.jsonnet"},{match:"#.*$",name:"comment.block.jsonnet"}]},"double-quoted-strings":{begin:'"',end:'"',name:"string.quoted.double.jsonnet",patterns:[{match:'\\\\(["\\\\/bfnrt]|(u[0-9a-fA-F]{4}))',name:"constant.character.escape.jsonnet"},{match:'\\\\[^"\\\\/bfnrtu]',name:"invalid.illegal.jsonnet"}]},expression:{patterns:[{include:"#literals"},{include:"#comment"},{include:"#single-quoted-strings"},{include:"#double-quoted-strings"},{include:"#triple-quoted-strings"},{include:"#builtin-functions"},{include:"#functions"}]},functions:{patterns:[{begin:"\\b([a-zA-Z_][a-z0-9A-Z_]*)\\s*\\(",beginCaptures:{1:{name:"entity.name.function.jsonnet"}},end:"\\)",name:"meta.function",patterns:[{include:"#expression"}]}]},keywords:{patterns:[{match:"[!:~\\+\\-&\\|\\^=<>\\*\\/%]",name:"keyword.operator.jsonnet"},{match:"\\$",name:"keyword.other.jsonnet"},{match:"\\b(self|super|import|importstr|local|tailstrict)\\b",name:"keyword.other.jsonnet"},{match:"\\b(if|then|else|for|in|error|assert)\\b",name:"keyword.control.jsonnet"},{match:"\\b(function)\\b",name:"storage.type.jsonnet"},{match:"[a-zA-Z_][a-z0-9A-Z_]*\\s*(:::|\\+:::)",name:"variable.parameter.jsonnet"},{match:"[a-zA-Z_][a-z0-9A-Z_]*\\s*(::|\\+::)",name:"entity.name.type"},{match:"[a-zA-Z_][a-z0-9A-Z_]*\\s*(:|\\+:)",name:"variable.parameter.jsonnet"}]},literals:{patterns:[{match:"\\b(true|false|null)\\b",name:"constant.language.jsonnet"},{match:"\\b(\\d+([Ee][+-]?\\d+)?)\\b",name:"constant.numeric.jsonnet"},{match:"\\b\\d+[.]\\d*([Ee][+-]?\\d+)?\\b",name:"constant.numeric.jsonnet"},{match:"\\b[.]\\d+([Ee][+-]?\\d+)?\\b",name:"constant.numeric.jsonnet"}]},"single-quoted-strings":{begin:"'",end:"'",name:"string.quoted.double.jsonnet",patterns:[{match:"\\\\(['\\\\/bfnrt]|(u[0-9a-fA-F]{4}))",name:"constant.character.escape.jsonnet"},{match:"\\\\[^'\\\\/bfnrtu]",name:"invalid.illegal.jsonnet"}]},"triple-quoted-strings":{patterns:[{begin:"\\|\\|\\|",end:"\\|\\|\\|",name:"string.quoted.triple.jsonnet"}]}},scopeName:"source.jsonnet"});var t=[n];export{t as default}; diff --git a/assets/chunks/jssm.Dble9ECP.js b/assets/chunks/jssm.Dble9ECP.js new file mode 100644 index 000000000..5009443e9 --- /dev/null +++ b/assets/chunks/jssm.Dble9ECP.js @@ -0,0 +1 @@ +const n=Object.freeze({displayName:"JSSM",fileTypes:["jssm","jssm_state"],name:"jssm",patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.mn"}},comment:"block comment",end:"\\*/",name:"comment.block.jssm"},{begin:"//",comment:"block comment",end:"$",name:"comment.line.jssm"},{begin:"\\${",captures:{0:{name:"entity.name.function"}},comment:"js outcalls",end:"}",name:"keyword.other"},{comment:"semver",match:"([0-9]*)(\\.)([0-9]*)(\\.)([0-9]*)",name:"constant.numeric"},{comment:"jssm language tokens",match:"graph_layout(\\s*)(:)",name:"constant.language.jssmLanguage"},{comment:"jssm language tokens",match:"machine_name(\\s*)(:)",name:"constant.language.jssmLanguage"},{comment:"jssm language tokens",match:"machine_version(\\s*)(:)",name:"constant.language.jssmLanguage"},{comment:"jssm language tokens",match:"jssm_version(\\s*)(:)",name:"constant.language.jssmLanguage"},{comment:"transitions",match:"<->",name:"keyword.control.transition.jssmArrow.legal_legal"},{comment:"transitions",match:"<-",name:"keyword.control.transition.jssmArrow.legal_none"},{comment:"transitions",match:"->",name:"keyword.control.transition.jssmArrow.none_legal"},{comment:"transitions",match:"<=>",name:"keyword.control.transition.jssmArrow.main_main"},{comment:"transitions",match:"=>",name:"keyword.control.transition.jssmArrow.none_main"},{comment:"transitions",match:"<=",name:"keyword.control.transition.jssmArrow.main_none"},{comment:"transitions",match:"<~>",name:"keyword.control.transition.jssmArrow.forced_forced"},{comment:"transitions",match:"~>",name:"keyword.control.transition.jssmArrow.none_forced"},{comment:"transitions",match:"<~",name:"keyword.control.transition.jssmArrow.forced_none"},{comment:"transitions",match:"<-=>",name:"keyword.control.transition.jssmArrow.legal_main"},{comment:"transitions",match:"<=->",name:"keyword.control.transition.jssmArrow.main_legal"},{comment:"transitions",match:"<-~>",name:"keyword.control.transition.jssmArrow.legal_forced"},{comment:"transitions",match:"<~->",name:"keyword.control.transition.jssmArrow.forced_legal"},{comment:"transitions",match:"<=~>",name:"keyword.control.transition.jssmArrow.main_forced"},{comment:"transitions",match:"<~=>",name:"keyword.control.transition.jssmArrow.forced_main"},{comment:"edge probability annotation",match:"([0-9]+)%",name:"constant.numeric.jssmProbability"},{comment:"action annotation",match:"\\'[^']*\\'",name:"constant.character.jssmAction"},{comment:"jssm label annotation",match:'\\"[^"]*\\"',name:"entity.name.tag.jssmLabel.doublequoted"},{comment:"jssm label annotation",match:"([a-zA-Z0-9_.+&()#@!?,])",name:"entity.name.tag.jssmLabel.atom"}],scopeName:"source.jssm",aliases:["fsl"]});var t=[n];export{t as default}; diff --git a/assets/chunks/jsx.CsyrCbsw.js b/assets/chunks/jsx.CsyrCbsw.js new file mode 100644 index 000000000..b32aeb712 --- /dev/null +++ b/assets/chunks/jsx.CsyrCbsw.js @@ -0,0 +1,699 @@ +const e=Object.freeze({displayName:"JSX",name:"jsx",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.objectliteral.js.jsx",patterns:[{include:"#object-member"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.js.jsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js.jsx"}},name:"meta.array.literal.js.jsx",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.js.jsx"},2:{name:"variable.parameter.js.jsx"}},match:"(?:(?)",name:"meta.arrow.js.jsx"},{begin:`(?x) (?: +(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +) +)`,beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.js.jsx",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js.jsx"}},end:"((?<=\\}|\\S)(?)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.js.jsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.return.type.arrow.js.jsx",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"async-modifier":{match:"(?\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.js.jsx"}},end:"(?=$)",name:"comment.line.triple-slash.directive.js.jsx",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.js.jsx"},2:{name:"entity.name.tag.directive.js.jsx"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.js.jsx"}},name:"meta.tag.js.jsx",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.js.jsx"},{match:"=",name:"keyword.operator.assignment.js.jsx"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"()|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.js.jsx"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.js.jsx"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|satisfies|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.js.jsx"},2:{name:"keyword.operator.rest.js.jsx"},3:{name:"variable.parameter.js.jsx variable.language.this.js.jsx"},4:{name:"variable.parameter.js.jsx"},5:{name:"keyword.operator.optional.js.jsx"}},match:"(?x)(?:(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.js.jsx"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.js.jsx"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.js.jsx"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.js.jsx"},{captures:{1:{name:"keyword.operator.logical.js.jsx"},2:{name:"keyword.operator.assignment.compound.js.jsx"},3:{name:"keyword.operator.arithmetic.js.jsx"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.js.jsx"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.js.jsx"},{match:"\\=",name:"keyword.operator.assignment.js.jsx"},{match:"--",name:"keyword.operator.decrement.js.jsx"},{match:"\\+\\+",name:"keyword.operator.increment.js.jsx"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.js.jsx"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.js.jsx"},2:{name:"keyword.operator.arithmetic.js.jsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.js.jsx"},2:{name:"keyword.operator.arithmetic.js.jsx"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#jsx"},{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},"field-declaration":{begin:`(?x)(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.js.jsx variable.object.property.js.jsx"},{match:"\\?",name:"keyword.operator.optional.js.jsx"},{match:"\\!",name:"keyword.operator.definiteassignment.js.jsx"}]},"for-loop":{begin:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())",name:"meta.function-call.js.jsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.js.jsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx"},{match:"\\!",name:"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.js.jsx"}]},"function-declaration":{begin:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.js.jsx"},2:{name:"punctuation.accessor.optional.js.jsx"},3:{name:"variable.other.constant.property.js.jsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.js.jsx"},2:{name:"punctuation.accessor.optional.js.jsx"},3:{name:"variable.other.property.js.jsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.js.jsx"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.js.jsx"}]},"if-statement":{patterns:[{begin:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?))",end:"(/>)|(?:())",endCaptures:{1:{name:"punctuation.definition.tag.end.js.jsx"},2:{name:"punctuation.definition.tag.begin.js.jsx"},3:{name:"entity.name.tag.namespace.js.jsx"},4:{name:"punctuation.separator.namespace.js.jsx"},5:{name:"entity.name.tag.js.jsx"},6:{name:"support.class.component.js.jsx"},7:{name:"punctuation.definition.tag.end.js.jsx"}},name:"meta.tag.js.jsx",patterns:[{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js.jsx"},2:{name:"entity.name.tag.namespace.js.jsx"},3:{name:"punctuation.separator.namespace.js.jsx"},4:{name:"entity.name.tag.js.jsx"},5:{name:"support.class.component.js.jsx"}},end:"(?=[/]?>)",patterns:[{include:"#comment"},{include:"#type-arguments"},{include:"#jsx-tag-attributes"}]},{begin:"(>)",beginCaptures:{1:{name:"punctuation.definition.tag.end.js.jsx"}},contentName:"meta.jsx.children.js.jsx",end:"(?=|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.js.jsx",patterns:[{include:"#comment"},{include:"#jsx-tag-attribute-name"},{include:"#jsx-tag-attribute-assignment"},{include:"#jsx-string-double-quoted"},{include:"#jsx-string-single-quoted"},{include:"#jsx-evaluated-code"},{include:"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.js.jsx"},"jsx-tag-in-expression":{begin:`(?x) +(?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* +(?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) +(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))`,end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag"}]},"jsx-tag-without-attributes":{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js.jsx"},2:{name:"entity.name.tag.namespace.js.jsx"},3:{name:"punctuation.separator.namespace.js.jsx"},4:{name:"entity.name.tag.js.jsx"},5:{name:"support.class.component.js.jsx"},6:{name:"punctuation.definition.tag.end.js.jsx"}},contentName:"meta.jsx.children.js.jsx",end:"()",endCaptures:{1:{name:"punctuation.definition.tag.begin.js.jsx"},2:{name:"entity.name.tag.namespace.js.jsx"},3:{name:"punctuation.separator.namespace.js.jsx"},4:{name:"entity.name.tag.js.jsx"},5:{name:"support.class.component.js.jsx"},6:{name:"punctuation.definition.tag.end.js.jsx"}},name:"meta.tag.without-attributes.js.jsx",patterns:[{include:"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{begin:"(?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag-without-attributes"}]},label:{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",beginCaptures:{1:{name:"entity.name.label.js.jsx"},2:{name:"punctuation.separator.label.js.jsx"}},end:"(?<=\\})",patterns:[{include:"#decl-block"}]},{captures:{1:{name:"entity.name.label.js.jsx"},2:{name:"punctuation.separator.label.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},literal:{patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#array-literal"},{include:"#this-literal"},{include:"#super-literal"}]},"method-declaration":{patterns:[{begin:"(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.js.jsx"},2:{name:"storage.modifier.js.jsx"},3:{name:"storage.modifier.js.jsx"},4:{name:"storage.modifier.async.js.jsx"},5:{name:"keyword.operator.new.js.jsx"},6:{name:"keyword.generator.asterisk.js.jsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.js.jsx"},2:{name:"storage.modifier.js.jsx"},3:{name:"storage.modifier.js.jsx"},4:{name:"storage.modifier.async.js.jsx"},5:{name:"storage.type.property.js.jsx"},6:{name:"keyword.generator.asterisk.js.jsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js.jsx"},2:{name:"storage.type.property.js.jsx"},3:{name:"keyword.generator.asterisk.js.jsx"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js.jsx"},2:{name:"storage.type.property.js.jsx"},3:{name:"keyword.generator.asterisk.js.jsx"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.js.jsx meta.object-literal.key.js.jsx",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.js.jsx meta.object-literal.key.js.jsx",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.js.jsx"},{captures:{0:{name:"meta.object-literal.key.js.jsx"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.js.jsx"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js.jsx"}},end:"(?=,|\\})",name:"meta.object.member.js.jsx",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.js.jsx"},{captures:{1:{name:"keyword.control.as.js.jsx"},2:{name:"storage.modifier.js.jsx"}},match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js.jsx"},2:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js.jsx"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.js.jsx"}},match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.js.jsx"},2:{name:"keyword.operator.rest.js.jsx"},3:{name:"variable.parameter.js.jsx variable.language.this.js.jsx"},4:{name:"variable.parameter.js.jsx"},5:{name:"keyword.operator.optional.js.jsx"}},match:"(?x)(?:(?])",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"}},contentName:"meta.arrow.js.jsx meta.return.type.arrow.js.jsx",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.js.jsx"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.js.jsx"},2:{name:"keyword.other.js.jsx"}},name:"string.regexp.js.jsx",patterns:[{include:"#regexp"}]},{begin:"((?"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) +| +(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`},{captures:{1:{name:"support.type.object.module.js.jsx"},2:{name:"support.type.object.module.js.jsx"},3:{name:"punctuation.accessor.js.jsx"},4:{name:"punctuation.accessor.optional.js.jsx"},5:{name:"support.type.object.module.js.jsx"}},match:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.js.jsx"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js.jsx"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js.jsx"}},contentName:"meta.embedded.line.js.jsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js.jsx"}},name:"meta.template.expression.js.jsx",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js.jsx"},2:{name:"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},contentName:"string.template.js.jsx",end:"`",endCaptures:{0:{name:"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js.jsx"}},contentName:"meta.embedded.line.js.jsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js.jsx"}},name:"meta.template.expression.js.jsx",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.js.jsx"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.js.jsx"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.js.jsx"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.js.jsx"}},name:"meta.type.parameters.js.jsx",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.js.jsx"}},match:"(?)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?) +)) +) +) +)`,end:"(?<=\\))",name:"meta.type.function.js.jsx",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.js.jsx"}},end:"(?)(?:\\?]|//|$)",name:"meta.type.function.return.js.jsx",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js.jsx"}},end:"(?)(?]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.js.jsx",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.js.jsx"},2:{name:"entity.name.type.js.jsx"},3:{name:"keyword.operator.expression.extends.js.jsx"}},match:"(?)",endCaptures:{1:{name:"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.js.jsx"},2:{name:"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"}},contentName:"meta.type.parameters.js.jsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.js.jsx"},2:{name:"punctuation.accessor.js.jsx"},3:{name:"punctuation.accessor.optional.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.js.jsx"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.object.type.js.jsx",patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js.jsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.js.jsx"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.js.jsx"}},end:"(?=\\S)"},{match:"(?)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.js.jsx"}},name:"meta.type.parameters.js.jsx",patterns:[{include:"#comment"},{match:"(?)",name:"keyword.operator.assignment.js.jsx"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},name:"meta.type.paren.cover.js.jsx",patterns:[{captures:{1:{name:"storage.modifier.js.jsx"},2:{name:"keyword.operator.rest.js.jsx"},3:{name:"entity.name.function.js.jsx variable.language.this.js.jsx"},4:{name:"entity.name.function.js.jsx"},5:{name:"keyword.operator.optional.js.jsx"}},match:`(?x)(?:(?) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`},{captures:{1:{name:"storage.modifier.js.jsx"},2:{name:"keyword.operator.rest.js.jsx"},3:{name:"variable.parameter.js.jsx variable.language.this.js.jsx"},4:{name:"variable.parameter.js.jsx"},5:{name:"keyword.operator.optional.js.jsx"}},match:"(?x)(?:(?:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"}},end:"(?=$|^|[;,=}]|((?) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js.jsx entity.name.function.js.jsx"},2:{name:"keyword.operator.definiteassignment.js.jsx"}},end:"(?=$|^|[;,=}]|((?\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.js.jsx"}},end:"(?=$|^|[,);}\\]]|((?]))"},{captures:{1:{name:"keyword.other.julia"},2:{name:"keyword.operator.dots.julia"},3:{name:"entity.name.function.julia"},4:{name:"support.type.julia"}},comment:"similar regex to previous, but with keyword not 1-line syntax",match:"\\b(function|macro)(?:\\s+(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}-¡]|[^\\P{Mc}-¡]|[^\\P{Nd}-¡]|[^\\P{Pc}-¡]|[^\\P{Sk}-¡]|[^\\P{Me}-¡]|[^\\P{No}-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(\\.))?((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}-¡]|[^\\P{Mc}-¡]|[^\\P{Nd}-¡]|[^\\P{Pc}-¡]|[^\\P{Sk}-¡]|[^\\P{Me}-¡]|[^\\P{No}-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\s*)(?=\\()"}]},keyword:{patterns:[{match:"\\b(?|->|-->|<--|←|→|↔|↚|↛|↞|↠|↢|↣|↦|↤|↮|⇎|⇍|⇏|⇐|⇒|⇔|⇴|⇶|⇷|⇸|⇹|⇺|⇻|⇼|⇽|⇾|⇿|⟵|⟶|⟷|⟹|⟺|⟻|⟼|⟽|⟾|⟿|⤀|⤁|⤂|⤃|⤄|⤅|⤆|⤇|⤌|⤍|⤎|⤏|⤐|⤑|⤔|⤕|⤖|⤗|⤘|⤝|⤞|⤟|⤠|⥄|⥅|⥆|⥇|⥈|⥊|⥋|⥎|⥐|⥒|⥓|⥖|⥗|⥚|⥛|⥞|⥟|⥢|⥤|⥦|⥧|⥨|⥩|⥪|⥫|⥬|⥭|⥰|⧴|⬱|⬰|⬲|⬳|⬴|⬵|⬶|⬷|⬸|⬹|⬺|⬻|⬼|⬽|⬾|⬿|⭀|⭁|⭂|⭃|⥷|⭄|⥺|⭇|⭈|⭉|⭊|⭋|⭌|←|→|⇜|⇝|↜|↝|↩|↪|↫|↬|↼|↽|⇀|⇁|⇄|⇆|⇇|⇉|⇋|⇌|⇚|⇛|⇠|⇢|↷|↶|↺|↻|=>)",name:"keyword.operator.arrow.julia"},{match:"(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|&=|\\.&=|⊻=|\\.⊻=|\\$=|<<=|>>=|>>>=|=(?!=))",name:"keyword.operator.update.julia"},{match:"(?:<<|>>>|>>|\\.>>>|\\.>>|\\.<<)",name:"keyword.operator.shift.julia"},{captures:{1:{name:"keyword.operator.relation.types.julia"},2:{name:"support.type.julia"},3:{name:"keyword.operator.transpose.julia"}},match:`(?:\\s*(::|>:|<:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:".+?(?)>=|>|<|≥|≤|===|==|≡|!=|≠|!==|≢|∈|∉|∋|∌|⊆|⊈|⊂|⊄|⊊|∝|∊|∍|∥|∦|∷|∺|∻|∽|∾|≁|≃|≂|≄|≅|≆|≇|≈|≉|≊|≋|≌|≍|≎|≐|≑|≒|≓|≖|≗|≘|≙|≚|≛|≜|≝|≞|≟|≣|≦|≧|≨|≩|≪|≫|≬|≭|≮|≯|≰|≱|≲|≳|≴|≵|≶|≷|≸|≹|≺|≻|≼|≽|≾|≿|⊀|⊁|⊃|⊅|⊇|⊉|⊋|⊏|⊐|⊑|⊒|⊜|⊩|⊬|⊮|⊰|⊱|⊲|⊳|⊴|⊵|⊶|⊷|⋍|⋐|⋑|⋕|⋖|⋗|⋘|⋙|⋚|⋛|⋜|⋝|⋞|⋟|⋠|⋡|⋢|⋣|⋤|⋥|⋦|⋧|⋨|⋩|⋪|⋫|⋬|⋭|⋲|⋳|⋴|⋵|⋶|⋷|⋸|⋹|⋺|⋻|⋼|⋽|⋾|⋿|⟈|⟉|⟒|⦷|⧀|⧁|⧡|⧣|⧤|⧥|⩦|⩧|⩪|⩫|⩬|⩭|⩮|⩯|⩰|⩱|⩲|⩳|⩵|⩶|⩷|⩸|⩹|⩺|⩻|⩼|⩽|⩾|⩿|⪀|⪁|⪂|⪃|⪄|⪅|⪆|⪇|⪈|⪉|⪊|⪋|⪌|⪍|⪎|⪏|⪐|⪑|⪒|⪓|⪔|⪕|⪖|⪗|⪘|⪙|⪚|⪛|⪜|⪝|⪞|⪟|⪠|⪡|⪢|⪣|⪤|⪥|⪦|⪧|⪨|⪩|⪪|⪫|⪬|⪭|⪮|⪯|⪰|⪱|⪲|⪳|⪴|⪵|⪶|⪷|⪸|⪹|⪺|⪻|⪼|⪽|⪾|⪿|⫀|⫁|⫂|⫃|⫄|⫅|⫆|⫇|⫈|⫉|⫊|⫋|⫌|⫍|⫎|⫏|⫐|⫑|⫒|⫓|⫔|⫕|⫖|⫗|⫘|⫙|⫷|⫸|⫹|⫺|⊢|⊣|⟂|⫪|⫫|<:|>:))",name:"keyword.operator.relation.julia"},{match:"(?<=\\s)(?:\\?)(?=\\s)",name:"keyword.operator.ternary.julia"},{match:"(?<=\\s)(?:\\:)(?=\\s)",name:"keyword.operator.ternary.julia"},{match:"(?:\\|\\||&&|(?)",name:"keyword.operator.applies.julia"},{match:"(?:\\||\\.\\||\\&|\\.\\&|~|¬|\\.~|⊻|\\.⊻)",name:"keyword.operator.bitwise.julia"},{match:"\\.?(?:\\+\\+|\\-\\-|\\+|\\-|−|¦|\\||⊕|⊖|⊞|⊟|∪|∨|⊔|±|∓|∔|∸|≏|⊎|⊻|⊽|⋎|⋓|⟇|⧺|⧻|⨈|⨢|⨣|⨤|⨥|⨦|⨧|⨨|⨩|⨪|⨫|⨬|⨭|⨮|⨹|⨺|⩁|⩂|⩅|⩊|⩌|⩏|⩐|⩒|⩔|⩖|⩗|⩛|⩝|⩡|⩢|⩣|\\*|//?|⌿|÷|%|&|·|·|⋅|∘|×|\\\\|∩|∧|⊗|⊘|⊙|⊚|⊛|⊠|⊡|⊓|∗|∙|∤|⅋|≀|⊼|⋄|⋆|⋇|⋉|⋊|⋋|⋌|⋏|⋒|⟑|⦸|⦼|⦾|⦿|⧶|⧷|⨇|⨰|⨱|⨲|⨳|⨴|⨵|⨶|⨷|⨸|⨻|⨼|⨽|⩀|⩃|⩄|⩋|⩍|⩎|⩑|⩓|⩕|⩘|⩚|⩜|⩞|⩟|⩠|⫛|⊍|▷|⨝|⟕|⟖|⟗|⨟|\\^|↑|↓|⇵|⟰|⟱|⤈|⤉|⤊|⤋|⤒|⤓|⥉|⥌|⥍|⥏|⥑|⥔|⥕|⥘|⥙|⥜|⥝|⥠|⥡|⥣|⥥|⥮|⥯|↑|↓|√|∛|∜|⋆|±|∓)",name:"keyword.operator.arithmetic.julia"},{match:"(?:∘)",name:"keyword.operator.compose.julia"},{match:"(?:::|(?<=\\s)isa(?=\\s))",name:"keyword.operator.isa.julia"},{match:"(?:(?<=\\s)in(?=\\s))",name:"keyword.operator.relation.in.julia"},{match:"(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+|…|⁝|⋮|⋱|⋰|⋯)",name:"keyword.operator.dots.julia"},{match:"(?:\\$)(?=.+)",name:"keyword.operator.interpolation.julia"},{captures:{2:{name:"keyword.operator.transposed-variable.julia"}},match:"((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}-¡]|[^\\P{Mc}-¡]|[^\\P{Nd}-¡]|[^\\P{Pc}-¡]|[^\\P{Sk}-¡]|[^\\P{Me}-¡]|[^\\P{No}-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(('|(\\.'))*\\.?')"},{captures:{1:{name:"bracket.end.julia"},2:{name:"keyword.operator.transposed-matrix.julia"}},match:"(\\])((?:'|(?:\\.'))*\\.?')"},{captures:{1:{name:"bracket.end.julia"},2:{name:"keyword.operator.transposed-parens.julia"}},match:"(\\))((?:'|(?:\\.'))*\\.?')"}]},parentheses:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"meta.bracket.julia"}},end:"(\\))((?:\\.)?'*)",endCaptures:{1:{name:"meta.bracket.julia"},2:{name:"keyword.operator.transpose.julia"}},patterns:[{include:"#self_no_for_block"}]}]},punctuation:{patterns:[{match:",",name:"punctuation.separator.comma.julia"},{match:";",name:"punctuation.separator.semicolon.julia"}]},self_no_for_block:{comment:"Same as $self, but does not contain #for_block. 'outer' is not valid in some contexts (e.g. generators, comprehensions, indexing), so use this when matching those in begin/end patterns. Keep this up-to-date with $self!",patterns:[{include:"#operator"},{include:"#array"},{include:"#string"},{include:"#parentheses"},{include:"#bracket"},{include:"#function_decl"},{include:"#function_call"},{include:"#keyword"},{include:"#number"},{include:"#comment"},{include:"#type_decl"},{include:"#symbol"},{include:"#punctuation"}]},string:{patterns:[{begin:'(?:(@doc)\\s((?:doc)?""")|(doc"""))',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},end:'(""") ?(->)?',endCaptures:{1:{name:"punctuation.definition.string.end.julia"},2:{name:"keyword.operator.arrow.julia"}},name:"string.docstring.julia",patterns:[{include:"#string_escaped_char"},{include:"#string_dollar_sign_interpolate"}]},{begin:'(i?cxx)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},contentName:"meta.embedded.inline.cpp",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"embed.cxx.julia",patterns:[{include:"source.cpp#root_context"},{include:"#string_dollar_sign_interpolate"}]},{begin:'(py)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},contentName:"meta.embedded.inline.python",end:'([\\s\\w]*)(""")',endCaptures:{2:{name:"punctuation.definition.string.end.julia"}},name:"embed.python.julia",patterns:[{include:"source.python"},{include:"#string_dollar_sign_interpolate"}]},{begin:'(js)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},contentName:"meta.embedded.inline.javascript",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"embed.js.julia",patterns:[{include:"source.js"},{include:"#string_dollar_sign_interpolate"}]},{begin:'(R)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},contentName:"meta.embedded.inline.r",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"embed.R.julia",patterns:[{include:"source.r"},{include:"#string_dollar_sign_interpolate"}]},{begin:'(raw)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"string.quoted.other.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'(raw)(")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"string.quoted.other.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'(sql)(""")',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},contentName:"meta.embedded.inline.sql",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"embed.sql.julia",patterns:[{include:"source.sql"},{include:"#string_dollar_sign_interpolate"}]},{begin:'var"""',end:'"""',name:"constant.other.symbol.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'var"',end:'"',name:"constant.other.symbol.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'^\\s?(doc)?(""")\\s?$',beginCaptures:{1:{name:"support.function.macro.julia"},2:{name:"punctuation.definition.string.begin.julia"}},comment:`This only matches docstrings that start and end with triple quotes on +their own line in the void`,end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.julia"}},name:"string.docstring.julia",patterns:[{include:"#string_escaped_char"},{include:"#string_dollar_sign_interpolate"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.julia"}},end:"'(?!')",endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"string.quoted.single.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.multiline.begin.julia"}},comment:"multi-line string with triple double quotes",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.multiline.end.julia"}},name:"string.quoted.triple.double.julia",patterns:[{include:"#string_escaped_char"},{include:"#string_dollar_sign_interpolate"}]},{begin:'"(?!"")',beginCaptures:{0:{name:"punctuation.definition.string.begin.julia"}},comment:"String with single pair of double quotes. Regex matches isolated double quote",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.julia"}},name:"string.quoted.double.julia",patterns:[{include:"#string_escaped_char"},{include:"#string_dollar_sign_interpolate"}]},{begin:'r"""',beginCaptures:{0:{name:"punctuation.definition.string.regexp.begin.julia"}},end:'(""")([imsx]{0,4})?',endCaptures:{1:{name:"punctuation.definition.string.regexp.end.julia"},2:{comment:"I took this scope name from python regex grammar",name:"keyword.other.option-toggle.regexp.julia"}},name:"string.regexp.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'r"',beginCaptures:{0:{name:"punctuation.definition.string.regexp.begin.julia"}},end:'(")([imsx]{0,4})?',endCaptures:{1:{name:"punctuation.definition.string.regexp.end.julia"},2:{comment:"I took this scope name from python regex grammar",name:"keyword.other.option-toggle.regexp.julia"}},name:"string.regexp.julia",patterns:[{include:"#string_escaped_char"}]},{begin:'(?!:_)(?:struct|mutable\\s+struct|abstract\\s+type|primitive\\s+type)\\s+((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}-¡]|[^\\P{Mc}-¡]|[^\\P{Nd}-¡]|[^\\P{Pc}-¡]|[^\\P{Sk}-¡]|[^\\P{Me}-¡]|[^\\P{No}-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(\\s*(<:)\\s*(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}-¡]|[^\\P{Mc}-¡]|[^\\P{Nd}-¡]|[^\\P{Pc}-¡]|[^\\P{Sk}-¡]|[^\\P{Me}-¡]|[^\\P{No}-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(?:{.*})?)?",name:"meta.type.julia"}]}},scopeName:"source.julia",embeddedLangs:["cpp","python","javascript","r","sql"],aliases:["jl"]});var l=[...u,...e,...n,...t,...a,A];export{l as default}; diff --git a/assets/chunks/kotlin.BIxS-Weu.js b/assets/chunks/kotlin.BIxS-Weu.js new file mode 100644 index 000000000..17a34ad66 --- /dev/null +++ b/assets/chunks/kotlin.BIxS-Weu.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Kotlin",fileTypes:["kt","kts"],name:"kotlin",patterns:[{include:"#import"},{include:"#package"},{include:"#code"}],repository:{"annotation-simple":{match:"(?<([^<>]|\\g)+>)?"},code:{patterns:[{include:"#comments"},{include:"#keywords"},{include:"#annotation-simple"},{include:"#annotation-site-list"},{include:"#annotation-site"},{include:"#class-declaration"},{include:"#object"},{include:"#type-alias"},{include:"#function"},{include:"#variable-declaration"},{include:"#type-constraint"},{include:"#type-annotation"},{include:"#function-call"},{include:"#method-reference"},{include:"#key"},{include:"#string"},{include:"#string-empty"},{include:"#string-multiline"},{include:"#character"},{include:"#lambda-arrow"},{include:"#operators"},{include:"#self-reference"},{include:"#decimal-literal"},{include:"#hex-literal"},{include:"#binary-literal"},{include:"#boolean-literal"},{include:"#null-literal"}]},"comment-block":{begin:"/\\*(?!\\*)",end:"\\*/",name:"comment.block.kotlin"},"comment-javadoc":{patterns:[{begin:"/\\*\\*",end:"\\*/",name:"comment.block.javadoc.kotlin",patterns:[{match:"@(return|constructor|receiver|sample|see|author|since|suppress)\\b",name:"keyword.other.documentation.javadoc.kotlin"},{captures:{1:{name:"keyword.other.documentation.javadoc.kotlin"},2:{name:"variable.parameter.kotlin"}},match:"(@param|@property)\\s+(\\S+)"},{captures:{1:{name:"keyword.other.documentation.javadoc.kotlin"},2:{name:"variable.parameter.kotlin"}},match:"(@param)\\[(\\S+)\\]"},{captures:{1:{name:"keyword.other.documentation.javadoc.kotlin"},2:{name:"entity.name.type.class.kotlin"}},match:"(@(?:exception|throws))\\s+(\\S+)"},{captures:{1:{name:"keyword.other.documentation.javadoc.kotlin"},2:{name:"entity.name.type.class.kotlin"},3:{name:"variable.parameter.kotlin"}},match:"{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*}"}]}]},"comment-line":{begin:"//",end:"$",name:"comment.line.double-slash.kotlin"},comments:{patterns:[{include:"#comment-line"},{include:"#comment-block"},{include:"#comment-javadoc"}]},"control-keywords":{match:"\\b(if|else|while|do|when|try|throw|break|continue|return|for)\\b",name:"keyword.control.kotlin"},"decimal-literal":{match:"\\b\\d[\\d_]*(\\.[\\d_]+)?((e|E)\\d+)?(u|U)?(L|F|f)?\\b",name:"constant.numeric.decimal.kotlin"},function:{captures:{1:{name:"storage.type.function.kotlin"},2:{patterns:[{include:"#type-parameter"}]},4:{name:"entity.name.type.class.extension.kotlin"},5:{name:"entity.name.function.declaration.kotlin"}},match:"\\b(fun)\\b\\s*(?<([^<>]|\\g)+>)?\\s*(?:(?:(\\w+)\\.)?(\\b\\w+\\b|`[^`]+`))?"},"function-call":{captures:{1:{name:"entity.name.function.call.kotlin"},2:{patterns:[{include:"#type-parameter"}]}},match:"\\??\\.?(\\b\\w+\\b|`[^`]+`)\\s*(?<([^<>]|\\g)+>)?\\s*(?=[({])"},"hard-keywords":{match:"\\b(as|typeof|is|in)\\b",name:"keyword.hard.kotlin"},"hex-literal":{match:"0(x|X)[A-Fa-f0-9][A-Fa-f0-9_]*(u|U)?",name:"constant.numeric.hex.kotlin"},import:{begin:"\\b(import)\\b\\s*",beginCaptures:{1:{name:"storage.type.import.kotlin"}},contentName:"entity.name.package.kotlin",end:";|$",name:"meta.import.kotlin",patterns:[{include:"#comments"},{include:"#hard-keywords"},{match:"\\*",name:"variable.language.wildcard.kotlin"}]},key:{captures:{1:{name:"variable.parameter.kotlin"},2:{name:"keyword.operator.assignment.kotlin"}},match:"\\b(\\w=)\\s*(=)"},keywords:{patterns:[{include:"#prefix-modifiers"},{include:"#postfix-modifiers"},{include:"#soft-keywords"},{include:"#hard-keywords"},{include:"#control-keywords"}]},"lambda-arrow":{match:"->",name:"storage.type.function.arrow.kotlin"},"method-reference":{captures:{1:{name:"entity.name.function.reference.kotlin"}},match:"\\??::(\\b\\w+\\b|`[^`]+`)"},"null-literal":{match:"\\bnull\\b",name:"constant.language.null.kotlin"},object:{captures:{1:{name:"storage.type.object.kotlin"},2:{name:"entity.name.type.object.kotlin"}},match:"\\b(object)(?:\\s+(\\b\\w+\\b|`[^`]+`))?"},operators:{patterns:[{match:"(===?|\\!==?|<=|>=|<|>)",name:"keyword.operator.comparison.kotlin"},{match:"([+*/%-]=)",name:"keyword.operator.assignment.arithmetic.kotlin"},{match:"(=)",name:"keyword.operator.assignment.kotlin"},{match:"([+*/%-])",name:"keyword.operator.arithmetic.kotlin"},{match:"(!|&&|\\|\\|)",name:"keyword.operator.logical.kotlin"},{match:"(--|\\+\\+)",name:"keyword.operator.increment-decrement.kotlin"},{match:"(\\.\\.)",name:"keyword.operator.range.kotlin"}]},package:{begin:"\\b(package)\\b\\s*",beginCaptures:{1:{name:"storage.type.package.kotlin"}},contentName:"entity.name.package.kotlin",end:";|$",name:"meta.package.kotlin",patterns:[{include:"#comments"}]},"postfix-modifiers":{match:"\\b(where|by|get|set)\\b",name:"storage.modifier.other.kotlin"},"prefix-modifiers":{match:"\\b(abstract|final|enum|open|annotation|sealed|data|override|final|lateinit|private|protected|public|internal|inner|companion|noinline|crossinline|vararg|reified|tailrec|operator|infix|inline|external|const|suspend|value)\\b",name:"storage.modifier.other.kotlin"},"self-reference":{match:"\\b(this|super)(@\\w+)?\\b",name:"variable.language.this.kotlin"},"soft-keywords":{match:"\\b(catch|finally|field)\\b",name:"keyword.soft.kotlin"},string:{begin:'(?<([^<>]|\\g)+>)?"},"type-annotation":{captures:{0:{patterns:[{include:"#type-parameter"}]}},match:`(?|(?[<(]([^<>()"']|\\g)+[)>]))+`},"type-parameter":{patterns:[{match:"\\b\\w+\\b",name:"entity.name.type.kotlin"},{match:"\\b(in|out)\\b",name:"storage.modifier.kotlin"}]},"unescaped-annotation":{match:"\\b[\\w\\.]+\\b",name:"entity.name.type.annotation.kotlin"},"variable-declaration":{captures:{1:{name:"storage.type.variable.kotlin"},2:{patterns:[{include:"#type-parameter"}]}},match:"\\b(val|var)\\b\\s*(?<([^<>]|\\g)+>)?"}},scopeName:"source.kotlin",aliases:["kt","kts"]});var t=[e];export{t as default}; diff --git a/assets/chunks/kusto.DIr-ordK.js b/assets/chunks/kusto.DIr-ordK.js new file mode 100644 index 000000000..a55b98fdb --- /dev/null +++ b/assets/chunks/kusto.DIr-ordK.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Kusto",fileTypes:["csl","kusto","kql"],name:"kusto",patterns:[{comment:"Tabular operators: common helper operators",match:"\\b(by|from|of|to|step|with)\\b",name:"keyword.other.operator.kusto"},{comment:"Query statements: https://docs.microsoft.com/en-us/azure/kusto/query/statements",match:"\\b(let|set|alias|declare|pattern|query_parameters|restrict|access|set)\\b",name:"keyword.control.kusto"},{comment:"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatypes-string-operators",match:"\\b(and|or|has_all|has_any|matches|regex)\\b",name:"keyword.other.operator.kusto"},{captures:{1:{name:"support.function.kusto"},2:{patterns:[{include:"#Strings"}]}},comment:"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/clusterfunction",match:"\\b(cluster|database)(?:\\s*\\(\\s*(.+?)\\s*\\))?(?!\\w)",name:"meta.special.database.kusto"},{comment:"Special functions: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/tablefunction",match:"\\b(external_table|materialized_view|materialize|table|toscalar)\\b",name:"support.function.kusto"},{comment:"https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/betweenoperator",match:"(?]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",captures:{1:{name:"keyword.control.cite.latex"},2:{name:"punctuation.definition.keyword.latex"},3:{patterns:[{include:"#autocites-arg"}]},4:{name:"punctuation.definition.arguments.optional.begin.latex"},5:{name:"punctuation.definition.arguments.optional.end.latex"},6:{name:"punctuation.definition.arguments.optional.begin.latex"},7:{name:"punctuation.definition.arguments.optional.end.latex"},8:{name:"punctuation.definition.arguments.begin.latex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.latex"}},name:"meta.citation.latex",patterns:[{captures:{1:{name:"comment.line.percentage.tex"},2:{name:"punctuation.definition.comment.tex"}},match:"((%).*)$"},{match:"[\\p{Alphabetic}\\p{Number}:.-]+",name:"constant.other.reference.citation.latex"}]},{begin:"((\\\\)bibentry)(\\{)",captures:{1:{name:"keyword.control.cite.latex"},2:{name:"punctuation.definition.keyword.latex"},3:{name:"punctuation.definition.arguments.begin.latex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.latex"}},name:"meta.citation.latex",patterns:[{match:"[\\p{Alphabetic}\\p{Number}:.]+",name:"constant.other.reference.citation.latex"}]},{begin:"((\\\\)(?:\\w*[rR]ef\\*?))(\\{)",beginCaptures:{1:{name:"keyword.control.ref.latex"},2:{name:"punctuation.definition.keyword.latex"},3:{name:"punctuation.definition.arguments.begin.latex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.latex"}},name:"meta.reference.label.latex",patterns:[{match:"[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",name:"constant.other.reference.label.latex"}]},{include:"#definition-label"},{begin:"((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((\\\\)scantokens)(\\{)",beginCaptures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{name:"support.function.verb.latex"},4:{name:"punctuation.definition.verb.latex"},5:{name:"punctuation.definition.begin.latex"}},contentName:"markup.raw.verb.latex",end:"(\\})",endCaptures:{1:{name:"punctuation.definition.end.latex"}},name:"meta.function.verb.latex",patterns:[{include:"$self"}]},{captures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{name:"punctuation.definition.verb.latex"},4:{name:"markup.raw.verb.latex"},5:{name:"punctuation.definition.verb.latex"}},match:"((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",name:"meta.function.verb.latex"},{captures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{patterns:[{include:"#optional-arg"}]},4:{name:"punctuation.definition.arguments.begin.latex"},5:{name:"punctuation.definition.arguments.end.latex"},6:{name:"punctuation.definition.verb.latex"},7:{name:"markup.raw.verb.latex"},8:{name:"punctuation.definition.verb.latex"},9:{name:"punctuation.definition.verb.latex"},10:{name:"markup.raw.verb.latex"},11:{name:"punctuation.definition.verb.latex"}},match:"((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",name:"meta.function.verb.latex"},{captures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{patterns:[{include:"#optional-arg"}]},4:{name:"punctuation.definition.verb.latex"},5:{name:"markup.raw.verb.latex"},6:{name:"punctuation.definition.verb.latex"},7:{name:"punctuation.definition.verb.latex"},8:{name:"markup.raw.verb.latex"},9:{name:"punctuation.definition.verb.latex"}},match:"((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",name:"meta.function.verb.latex"},{captures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{patterns:[{include:"#optional-arg"}]},4:{name:"punctuation.definition.verb.latex"},5:{name:"source.python",patterns:[{include:"source.python"}]},6:{name:"punctuation.definition.verb.latex"},7:{name:"punctuation.definition.verb.latex"},8:{name:"source.python",patterns:[{include:"source.python"}]},9:{name:"punctuation.definition.verb.latex"}},match:"((\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",name:"meta.function.verb.latex"},{captures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{patterns:[{include:"#optional-arg"}]},4:{name:"punctuation.definition.verb.latex"},5:{name:"source.julia",patterns:[{include:"source.julia"}]},6:{name:"punctuation.definition.verb.latex"},7:{name:"punctuation.definition.verb.latex"},8:{name:"source.julia",patterns:[{include:"source.julia"}]},9:{name:"punctuation.definition.verb.latex"}},match:"((\\\\)(?:jl|julia)[cv]?)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",name:"meta.function.verb.latex"},{begin:"((\\\\)(?:directlua|luadirect))(\\{)",beginCaptures:{1:{name:"support.function.verb.latex"},2:{name:"punctuation.definition.function.latex"},3:{name:"punctuation.definition.arguments.begin.latex"}},contentName:"source.lua",end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.latex"}},patterns:[{include:"source.lua"}]},{match:"\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\b)",name:"keyword.control.layout.latex"},{begin:"\\\\\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.latex"}},end:"\\\\\\)",endCaptures:{0:{name:"punctuation.definition.string.end.latex"}},name:"meta.math.block.latex support.class.math.block.environment.latex",patterns:[{include:"text.tex#math"},{include:"$self"}]},{begin:"\\$\\$",beginCaptures:{0:{name:"punctuation.definition.string.begin.latex"}},end:"\\$\\$",endCaptures:{0:{name:"punctuation.definition.string.end.latex"}},name:"meta.math.block.latex support.class.math.block.environment.latex",patterns:[{match:"\\\\\\$",name:"constant.character.escape.latex"},{include:"text.tex#math"},{include:"$self"}]},{begin:"\\$",beginCaptures:{0:{name:"punctuation.definition.string.begin.tex"}},end:"\\$",endCaptures:{0:{name:"punctuation.definition.string.end.tex"}},name:"meta.math.block.tex support.class.math.block.tex",patterns:[{match:"\\\\\\$",name:"constant.character.escape.latex"},{include:"text.tex#math"},{include:"$self"}]},{begin:"\\\\\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.latex"}},end:"\\\\\\]",endCaptures:{0:{name:"punctuation.definition.string.end.latex"}},name:"meta.math.block.latex support.class.math.block.environment.latex",patterns:[{include:"text.tex#math"},{include:"$self"}]},{captures:{1:{name:"punctuation.definition.constant.latex"}},match:"(\\\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\\b",name:"constant.character.latex"},{captures:{1:{name:"punctuation.definition.variable.latex"}},match:"(\\\\)[cgl](?:[_\\p{Alphabetic}@]+)+_(?:bitset|clist|dim|fp|int|muskip|str|tl|bool|box|coffin|flag|fparray|intarray|ior|iow|prop|regex|seq)",name:"variable.other.latex3.latex"},{captures:{1:{name:"punctuation.definition.column-specials.begin.latex"},2:{name:"punctuation.definition.column-specials.end.latex"}},match:"(?:<|>)(\\{)\\$(\\})",name:"meta.column-specials.latex"},{include:"text.tex"}],repository:{"autocites-arg":{patterns:[{captures:{1:{name:"punctuation.definition.arguments.optional.begin.latex"},2:{name:"punctuation.definition.arguments.optional.end.latex"},3:{name:"punctuation.definition.arguments.optional.begin.latex"},4:{name:"punctuation.definition.arguments.optional.end.latex"},5:{name:"punctuation.definition.arguments.begin.latex"},6:{name:"constant.other.reference.citation.latex"},7:{name:"punctuation.definition.arguments.end.latex"},8:{patterns:[{include:"#autocites-arg"}]}},match:"(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\p{Alphabetic}\\p{Number}:.]+)(\\})(.*)"}]},"begin-env-tokenizer":{captures:{1:{name:"support.function.be.latex"},2:{name:"punctuation.definition.function.latex"},3:{name:"punctuation.definition.arguments.begin.latex"},4:{name:"variable.parameter.function.latex"},5:{name:"punctuation.definition.arguments.end.latex"},6:{name:"punctuation.definition.arguments.optional.begin.latex"},7:{patterns:[{include:"$self"}]},8:{name:"punctuation.definition.arguments.optional.end.latex"},9:{name:"punctuation.definition.arguments.begin.latex"},10:{name:"variable.parameter.function.latex"},11:{name:"punctuation.definition.arguments.end.latex"}},match:"\\s*((\\\\)(?:begin|end))(\\{)([a-zA-Z]*\\*?)(\\})(?:(\\[)([^\\]]*)(\\])){,2}(?:(\\{)([^{}]*)(\\}))?"},"definition-label":{begin:"((\\\\)label)((?:\\[[^\\[]*?\\])*)(\\{)",beginCaptures:{1:{name:"keyword.control.label.latex"},2:{name:"punctuation.definition.keyword.latex"},3:{patterns:[{include:"#optional-arg"}]},4:{name:"punctuation.definition.arguments.begin.latex"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.latex"}},name:"meta.definition.label.latex",patterns:[{match:"[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",name:"variable.parameter.definition.label.latex"}]},"multiline-optional-arg":{begin:"\\G\\[",beginCaptures:{0:{name:"punctuation.definition.arguments.optional.begin.latex"}},contentName:"variable.parameter.function.latex",end:"\\]",endCaptures:{0:{name:"punctuation.definition.arguments.optional.end.latex"}},name:"meta.parameter.optional.latex",patterns:[{include:"$self"}]},"multiline-optional-arg-no-highlight":{begin:"\\G\\[",beginCaptures:{0:{name:"punctuation.definition.arguments.optional.begin.latex"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.arguments.optional.end.latex"}},name:"meta.parameter.optional.latex",patterns:[{include:"$self"}]},"optional-arg":{patterns:[{captures:{1:{name:"punctuation.definition.arguments.optional.begin.latex"},2:{name:"variable.parameter.function.latex"},3:{name:"punctuation.definition.arguments.optional.end.latex"}},match:"(\\[)([^\\[]*?)(\\])",name:"meta.parameter.optional.latex"}]}},scopeName:"text.tex.latex",embeddedLangs:["tex","shellscript","css","gnuplot","haskell","html","java","julia","javascript","lua","python","ruby","rust","typescript","xml","yaml","scala"]});var T=[...e,...n,...t,...a,...i,...o,...l,...r,...u,...d,...c,...s,...m,...p,...g,...b,...x,f];export{T as default}; diff --git a/assets/chunks/less.Du6_OKDb.js b/assets/chunks/less.Du6_OKDb.js new file mode 100644 index 000000000..aa19b8a99 --- /dev/null +++ b/assets/chunks/less.Du6_OKDb.js @@ -0,0 +1,159 @@ +const e=Object.freeze({displayName:"Less",name:"less",patterns:[{include:"#comment-block"},{include:"#less-namespace-accessors"},{include:"#less-extend"},{include:"#at-rules"},{include:"#less-variable-assignment"},{include:"#property-list"},{include:"#selector"}],repository:{"angle-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(deg|grad|rad|turn))\\b",name:"constant.numeric.less"},"at-charset":{begin:"\\s*((@)charset\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.charset.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\s*((?=;|$))",name:"meta.at-rule.charset.less",patterns:[{include:"#literal-string"}]},"at-counter-style":{begin:"\\s*((@)counter-style\\b)\\s+(?:(?i:\\b(decimal|none)\\b)|(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*))\\s*(?=\\{|$)",captures:{1:{name:"keyword.control.at-rule.counter-style.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"invalid.illegal.counter-style-name.less"},4:{name:"entity.other.counter-style-name.css"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.begin.less"}},name:"meta.at-rule.counter-style.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-custom-media":{begin:"(?=\\s*@custom-media\\b)",end:"\\s*(?=;)",name:"meta.at-rule.custom-media.less",patterns:[{captures:{0:{name:"punctuation.section.property-list.less"}},match:"\\s*;"},{captures:{1:{name:"keyword.control.at-rule.custom-media.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.custom-media.less"}},match:"\\s*((@)custom-media)(?=.*?)"},{include:"#media-query-list"}]},"at-font-face":{begin:"\\s*((@)font-face)\\s*(?=\\{|$)",captures:{1:{name:"keyword.control.at-rule.font-face.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},name:"meta.at-rule.font-face.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-import":{begin:"\\s*((@)import\\b)\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.import.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.rule.less"}},name:"meta.at-rule.import.less",patterns:[{include:"#url-function"},{include:"#less-variables"},{begin:`(?<=(["'])|(["']\\)))\\s*`,end:"\\s*(?=\\;)",patterns:[{include:"#media-query"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{match:"reference|inline|less|css|once|multiple|optional",name:"constant.language.import-directive.less"},{include:"#comma-delimiter"}]},{include:"#literal-string"}]},"at-keyframes":{begin:"\\s*((@)(-webkit-|-moz-|-o-)?keyframes)(?=.*?\\{)",beginCaptures:{1:{name:"keyword.control.at-rule.keyframe.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.type.property-vendor.less"},4:{name:"support.constant.keyframe.less"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",patterns:[{captures:{1:{name:"keyword.other.keyframe-selector.less"},2:{name:"constant.numeric.less"},3:{name:"keyword.other.unit.less"}},match:"\\s*(?:(from|to)|((?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)(%)))\\s*,?\\s*"},{include:"$self"}]},{begin:"\\s*(?=[^{;])",end:"\\s*(?=\\{)",name:"meta.at-rule.keyframe.less",patterns:[{include:"#keyframe-name"}]}]},"at-media":{begin:"(?=\\s*@media\\b)",end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*((@)media)",beginCaptures:{1:{name:"keyword.control.at-rule.media.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.media.less"}},end:"\\s*(?=\\{)",name:"meta.at-rule.media.less",patterns:[{include:"#media-query-list"}]},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",patterns:[{include:"#rule-list-body"},{include:"$self"}]}]},"at-namespace":{begin:"\\s*((@)namespace)\\s+",beginCaptures:{1:{name:"keyword.control.at-rule.namespace.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.rule.less"}},name:"meta.at-rule.namespace.less",patterns:[{include:"#url-function"},{include:"#literal-string"},{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.name.constant.namespace-prefix.less"}]},"at-page":{captures:{1:{name:"keyword.control.at-rule.page.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"punctuation.definition.entity.less"},4:{name:"entity.other.attribute-name.pseudo-class.less"}},match:"\\s*((@)page)\\s*(?:(:)(first|left|right))?\\s*(?=\\{|$)",name:"meta.at-rule.page.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-rules":{patterns:[{include:"#at-charset"},{include:"#at-counter-style"},{include:"#at-custom-media"},{include:"#at-font-face"},{include:"#at-media"},{include:"#at-import"},{include:"#at-keyframes"},{include:"#at-namespace"},{include:"#at-page"},{include:"#at-supports"},{include:"#at-viewport"}]},"at-supports":{begin:"(?=\\s*@supports\\b)",end:"(?=\\s*)(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*((@)supports)",beginCaptures:{1:{name:"keyword.control.at-rule.supports.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.supports.less"}},end:"\\s*(?=\\{)",name:"meta.at-rule.supports.less",patterns:[{include:"#at-supports-operators"},{include:"#at-supports-parens"}]},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.section.property-list.begin.less"}},end:"(?=\\})",patterns:[{include:"#rule-list-body"},{include:"$self"}]}]},"at-supports-operators":{match:"\\b(?:and|or|not)\\b",name:"keyword.operator.logic.less"},"at-supports-parens":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#at-supports-operators"},{include:"#at-supports-parens"},{include:"#rule-list-body"}]},"at-viewport":{begin:"((@(-ms-)?)viewport)",beginCaptures:{1:{name:"keyword.control.at-rule.viewport.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.type.vendor-prefix.less"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.end.less"}},name:"meta.at-rule.viewport.less",patterns:[{begin:"\\{",captures:{0:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",name:"meta.block.less",patterns:[{include:"#rule-list-body"}]}]},"attr-function":{begin:"\\b(attr)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#qualified-name"},{include:"#literal-string"},{begin:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",end:"(?=\\))",name:"entity.other.attribute-name.less",patterns:[{match:"(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b",name:"keyword.other.unit.less"},{include:"#comma-delimiter"},{include:"#property-value-constants"},{include:"#numeric-values"}]},{include:"#color-values"}]}]},"builtin-functions":{patterns:[{include:"#attr-function"},{include:"#calc-function"},{include:"#color-functions"},{include:"#counter-functions"},{include:"#cross-fade-function"},{include:"#cubic-bezier-function"},{include:"#filter-function"},{include:"#format-function"},{include:"#gradient-functions"},{include:"#grid-repeat-function"},{include:"#image-function"},{include:"#less-functions"},{include:"#local-function"},{include:"#minmax-function"},{include:"#regexp-function"},{include:"#shape-functions"},{include:"#steps-function"},{include:"#symbols-function"},{include:"#transform-functions"},{include:"#url-function"},{include:"#var-function"}]},"calc-function":{begin:"\\b(calc)(?=\\()",beginCaptures:{1:{name:"support.function.calc.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#var-function"},{include:"#calc-function"},{include:"#attr-function"},{include:"#less-math"}]}]},"color-adjuster-operators":{match:"[\\-\\+*](?=\\s+)",name:"keyword.operator.less"},"color-functions":{patterns:[{begin:"\\b(rgba?)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#number-type"}]}]},{begin:"\\b(hs(l|v)a?|hwb)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#percentage-type"},{include:"#number-type"}]}]},{include:"#less-color-functions"}]},"color-values":{patterns:[{include:"#color-functions"},{include:"#less-functions"},{include:"#less-variables"},{match:"\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",name:"support.constant.color.w3c-standard-color-name.less"},{match:"\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",name:"support.constant.color.w3c-extended-color-keywords.less"},{match:"\\b((?i)currentColor|transparent)\\b",name:"support.constant.color.w3c-special-color-keyword.less"},{captures:{1:{name:"punctuation.definition.constant.less"}},match:"(#)(\\h{3}|\\h{4}|\\h{6}|\\h{8})\\b",name:"constant.other.color.rgb-value.less"}]},"comma-delimiter":{captures:{1:{name:"punctuation.separator.less"}},match:"\\s*(,)\\s*"},"comment-block":{patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.less"}},end:"\\*/",name:"comment.block.less"},{include:"#comment-line"}]},"comment-line":{captures:{1:{name:"punctuation.definition.comment.less"}},match:"(//).*$\\n?",name:"comment.line.double-slash.less"},"counter-functions":{patterns:[{begin:"\\b(counter)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{match:"(?:--(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+|-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.counter-name.less"},{begin:"(?=,)",end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{match:"\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b",name:"support.constant.property-value.counter-style.less"}]}]}]},{begin:"\\b(counters)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.counter-name.less string.unquoted.less"},{begin:"(?=,)",end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#literal-string"},{include:"#comma-delimiter"},{match:"\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b",name:"support.constant.property-value.counter-style.less"}]}]}]}]},"cross-fade-function":{patterns:[{begin:"\\b(cross-fade)(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#color-values"},{include:"#image-type"},{include:"#literal-string"},{include:"#unquoted-string"}]}]}]},"cubic-bezier-function":{begin:"\\b(cubic-bezier)(?=\\()",beginCaptures:{0:{name:"support.function.timing.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"}]}]},"custom-property-name":{captures:{1:{name:"punctuation.definition.custom-property.less"},2:{name:"support.type.custom-property.name.less"}},match:"\\s*(--)((?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+)",name:"support.type.custom-property.less"},dimensions:{patterns:[{include:"#angle-type"},{include:"#frequency-type"},{include:"#length-type"},{include:"#resolution-type"},{include:"#time-type"}]},"filter-function":{begin:"\\b(filter)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{include:"#comma-delimiter"},{include:"#image-type"},{include:"#literal-string"},{include:"#filter-functions"}]}]},"filter-functions":{patterns:[{include:"#less-functions"},{begin:"\\b(blur)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"}]}]},{begin:"\\b(brightness|contrast|grayscale|invert|opacity|saturate|sepia)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#percentage-type"},{include:"#number-type"},{include:"#less-functions"}]}]},{begin:"\\b(drop-shadow)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"},{include:"#color-values"}]}]},{begin:"\\b(hue-rotate)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"}]}]}]},"format-function":{patterns:[{begin:"\\b(format)(?=\\()",beginCaptures:{0:{name:"support.function.format.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"}]}]}]},"frequency-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(Hz|kHz))\\b",name:"constant.numeric.less"},"gradient-functions":{patterns:[{begin:"\\b((?:repeating-)?linear-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#angle-type"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\bto\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left)\\b",name:"support.constant.property-value.less"}]}]},{begin:"\\b((?:repeating-)?radial-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\b(at|circle|ellipse)\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center|(farthest|closest)-(corner|side))\\b",name:"support.constant.property-value.less"}]}]}]},"grid-repeat-function":{begin:"\\b(repeat)(?=\\()",beginCaptures:{1:{name:"support.function.grid.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#var-function"},{include:"#length-type"},{include:"#percentage-type"},{include:"#minmax-function"},{include:"#integer-type"},{match:"\\b(auto-(fill|fit))\\b",name:"support.keyword.repetitions.less"},{match:"\\b(((max|min)-content)|auto)\\b",name:"support.constant.property-value.less"}]}]},"image-function":{begin:"\\b(image)(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#image-type"},{include:"#literal-string"},{include:"#color-values"},{include:"#comma-delimiter"},{include:"#unquoted-string"}]}]},"image-type":{patterns:[{include:"#cross-fade-function"},{include:"#gradient-functions"},{include:"#image-function"},{include:"#url-function"}]},"integer-type":{match:"(?:[-+]?\\d+)",name:"constant.numeric.less"},"keyframe-name":{begin:"\\s*(-?(?:[_a-z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[_a-z0-9-]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*)?",beginCaptures:{1:{name:"variable.other.constant.animation-name.less"}},end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}}},"length-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"0|(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(em|ex|ch|rem|vw|vh|vmin|vmax|(c|m)?m|q|in|pt|pc|px|fr))\\b",name:"constant.numeric.less"},"less-boolean-function":{begin:"\\b(boolean)(?=\\()",beginCaptures:{1:{name:"support.function.boolean.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-logical-comparisons"}]}]},"less-color-blend-functions":{patterns:[{begin:"\\b(multiply|screen|overlay|(soft|hard)light|difference|exclusion|negation|average)(?=\\()",beginCaptures:{1:{name:"support.function.color-blend.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#color-values"}]}]}]},"less-color-channel-functions":{patterns:[{begin:"\\b(hue|saturation|lightness|hsv(hue|saturation|value)|red|green|blue|alpha|luma|luminance)(?=\\()",beginCaptures:{1:{name:"support.function.color-definition.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"}]}]}]},"less-color-definition-functions":{patterns:[{begin:"\\b(argb)(?=\\()",beginCaptures:{1:{name:"support.function.color-definition.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#color-values"}]}]}]},"less-color-functions":{patterns:[{include:"#less-color-blend-functions"},{include:"#less-color-channel-functions"},{include:"#less-color-definition-functions"},{include:"#less-color-operation-functions"}]},"less-color-operation-functions":{patterns:[{begin:"\\b(fade|shade|tint)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"}]}]},{begin:"\\b(spin)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#number-type"}]}]},{begin:"\\b(((de)?saturate)|((light|dark)en)|(fade(in|out)))(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"},{match:"\\brelative\\b",name:"constant.language.relative.less"}]}]},{begin:"\\b(contrast)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"}]}]},{begin:"\\b(greyscale)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"}]}]},{begin:"\\b(mix)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#less-math"},{include:"#percentage-type"}]}]}]},"less-extend":{begin:"(:)(extend)(?=\\()",beginCaptures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.extend.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\ball\\b",name:"constant.language.all.less"},{include:"#selectors"}]}]},"less-functions":{patterns:[{include:"#less-boolean-function"},{include:"#less-color-functions"},{include:"#less-if-function"},{include:"#less-list-functions"},{include:"#less-math-functions"},{include:"#less-misc-functions"},{include:"#less-string-functions"},{include:"#less-type-functions"}]},"less-if-function":{begin:"\\b(if)(?=\\()",beginCaptures:{1:{name:"support.function.if.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-mixin-guards"},{include:"#comma-delimiter"},{include:"#property-values"}]}]},"less-list-functions":{patterns:[{begin:"\\b(length)(?=\\()\\b",beginCaptures:{1:{name:"support.function.length.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"}]}]},{begin:"\\b(extract)(?=\\()\\b",beginCaptures:{1:{name:"support.function.extract.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{include:"#integer-type"}]}]},{begin:"\\b(range)(?=\\()\\b",beginCaptures:{1:{name:"support.function.range.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{include:"#integer-type"}]}]}]},"less-logical-comparisons":{patterns:[{captures:{1:{name:"keyword.operator.logical.less"}},match:"\\s*(=|((<|>)=?))\\s*"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#less-logical-comparisons"}]},{match:"\\btrue|false\\b",name:"constant.language.less"},{match:",",name:"punctuation.separator.less"},{include:"#property-values"},{include:"#selectors"},{include:"#unquoted-string"}]},"less-math":{patterns:[{match:"[-\\+\\*\\/]",name:"keyword.operator.arithmetic.less"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#less-math"}]},{include:"#numeric-values"},{include:"#less-variables"}]},"less-math-functions":{patterns:[{begin:"\\b(ceil|floor|percentage|round|sqrt|abs|a?(sin|cos|tan))(?=\\()",beginCaptures:{1:{name:"support.function.math.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#numeric-values"}]}]},{captures:{2:{name:"support.function.math.less"},3:{name:"punctuation.definition.group.begin.less"},4:{name:"punctuation.definition.group.end.less"}},match:"((pi)(\\()(\\)))",name:"meta.function-call.less"},{begin:"\\b(pow|m(od|in|ax))(?=\\()",beginCaptures:{1:{name:"support.function.math.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#numeric-values"},{include:"#comma-delimiter"}]}]}]},"less-misc-functions":{patterns:[{begin:"\\b(color)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"}]}]},{begin:"\\b(image-(size|width|height))(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"},{include:"#unquoted-string"}]}]},{begin:"\\b(convert|unit)(?=\\()",beginCaptures:{1:{name:"support.function.convert.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#dimensions"},{include:"#numeric-values"},{include:"#literal-string"},{include:"#comma-delimiter"},{match:"((c|m)?m|in|p(t|c|x)|m?s|g?rad|deg|turn|%|r?em|ex|ch)",name:"keyword.other.unit.less"}]}]},{begin:"\\b(data-uri)(?=\\()",beginCaptures:{1:{name:"support.function.data-uri.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#literal-string"},{captures:{1:{name:"punctuation.separator.less"}},match:"\\s*(?:(,))"}]}]},{captures:{2:{name:"punctuation.definition.group.begin.less"},3:{name:"punctuation.definition.group.end.less"}},match:"\\b(default(\\()(\\)))\\b",name:"support.function.default.less"},{begin:"\\b(get-unit)(?=\\()",beginCaptures:{1:{name:"support.function.get-unit.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#dimensions"}]}]},{begin:"\\b(svg-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.svg-gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"},{include:"#comma-delimiter"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{match:"\\bto\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center)\\b",name:"support.constant.property-value.less"},{match:"\\b(at|circle|ellipse)\\b",name:"keyword.other.less"}]}]}]},"less-mixin-guards":{patterns:[{begin:"\\s*(and|not|or)?\\s*(?=\\()",beginCaptures:{1:{name:"keyword.operator.logical.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{include:"#less-variable-comparison"},{captures:{1:{name:"meta.group.less"},2:{name:"punctuation.definition.group.begin.less"},3:{name:"punctuation.definition.group.end.less"}},match:"default((\\()(\\)))",name:"support.function.default.less"},{include:"#property-values"},{include:"#less-logical-comparisons"},{include:"$self"}]}]}]},"less-namespace-accessors":{patterns:[{begin:"(?=\\s*when\\b)",end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},name:"meta.conditional.guarded-namespace.less",patterns:[{captures:{1:{name:"keyword.control.conditional.less"},2:{name:"punctuation.definition.keyword.less"}},match:"\\s*(when)(?=.*?)"},{include:"#less-mixin-guards"},{include:"#comma-delimiter"},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.section.property-list.begin.less"}},end:"(?=\\})",name:"meta.block.less",patterns:[{include:"#rule-list-body"}]},{include:"#selectors"}]},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.group.begin.less"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.end.less"},2:{name:"punctuation.terminator.rule.less"}},name:"meta.group.less",patterns:[{include:"#less-variable-assignment"},{include:"#comma-delimiter"},{captures:{1:{name:"punctuation.terminator.rule.less"}},match:"\\s*(;)|(?=[})])"},{include:"#property-values"},{include:"#rule-list-body"}]}]},"less-number-units":{patterns:[{match:"\\b((c|m)?m|in|p(t|c)|m?s|g?rad|deg|turn)\\b",name:"keyword.other.unit.less"},{match:"\\b(r?em|ex|ch|vw|vh|vmin|vmax|cm|mm|q|in|pt|pc|px|fr|s|ms|Hz|kHz|dpi|dpcm|dppx|deg|grad|rad|turn)\\b"}]},"less-string-functions":{patterns:[{begin:"\\b(e(scape)?)(?=\\()\\b",beginCaptures:{1:{name:"support.function.escape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#unquoted-string"}]}]},{begin:"\\s*(%)(?=\\()\\s*",beginCaptures:{1:{name:"support.function.format.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#property-values"}]}]},{begin:"\\b(replace)(?=\\()\\b",beginCaptures:{1:{name:"support.function.replace.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#property-values"}]}]}]},"less-strings":{patterns:[{begin:`(~)('|")`,beginCaptures:{1:{name:"constant.character.escape.less"},2:{name:"punctuation.definition.string.begin.less"}},contentName:"markup.raw.inline.less",end:`('|")|(\\n)`,endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.other.less",patterns:[{include:"#string-content"}]}]},"less-type-functions":{patterns:[{begin:"\\b(is(number|string|color|keyword|url|pixel|em|percentage|ruleset))(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"}]}]},{begin:"\\b(isunit)(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{match:"(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b",name:"keyword.other.unit.less"}]}]},{begin:"\\b(isdefined)(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"}]}]}]},"less-variable-assignment":{patterns:[{begin:"(@)(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",beginCaptures:{0:{name:"variable.other.readwrite.less"},1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},end:"\\s*(;|(\\.{3})|(?=\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.less"},2:{name:"keyword.operator.spread.less"}},name:"meta.property-value.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#property-values"},{include:"#comma-delimiter"},{include:"#property-list"},{include:"#unquoted-string"}]}]},"less-variable-comparison":{patterns:[{begin:"(@{1,2})([-]?([_a-z]|[^\\x{00}-\\x{7F}]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",beginCaptures:{0:{name:"variable.other.readwrite.less"},1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},end:"\\s*(?=\\))",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{captures:{1:{name:"keyword.operator.logical.less"}},match:"\\s*(=|((<|>)=?))\\s*"},{match:"\\btrue\\b",name:"constant.language.less"},{include:"#property-values"},{include:"#selectors"},{include:"#unquoted-string"},{match:",",name:"punctuation.separator.less"}]}]},"less-variable-interpolation":{captures:{1:{name:"punctuation.definition.variable.less"},2:{name:"punctuation.definition.expression.less"},3:{name:"support.other.variable.less"},4:{name:"punctuation.definition.expression.less"}},match:"(@)(\\{)([-\\w]+)(\\})",name:"variable.other.readwrite.less"},"less-variables":{captures:{1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},match:"\\s*(@@?)([-\\w]+)",name:"variable.other.readwrite.less"},"literal-string":{patterns:[{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.less"}},end:"(')|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.single.less",patterns:[{include:"#string-content"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.less"}},end:'(")|(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.double.less",patterns:[{include:"#string-content"}]},{include:"#less-strings"}]},"local-function":{begin:"\\b(local)(?=\\()",beginCaptures:{0:{name:"support.function.font-face.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#unquoted-string"}]}]},"media-query":{begin:"\\s*(only|not)?\\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?",beginCaptures:{1:{name:"keyword.operator.logic.media.less"},2:{name:"support.constant.media.less"}},end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},patterns:[{include:"#less-variables"},{include:"#custom-property-name"},{begin:"\\s*(and)?\\s*(\\()\\s*",beginCaptures:{1:{name:"keyword.operator.logic.media.less"},2:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{begin:"((-webkit-|-o-)?((min|max)-)?(-moz-)?(((device-)?(height|width|aspect-ratio|pixel-ratio))|(color(-index)?)|monochrome|resolution))|grid|scan|orientation\\s*(?=[:)])",beginCaptures:{0:{name:"support.type.property-name.media.less"},2:{name:"support.type.vendor-prefix.less"},5:{name:"support.type.vendor-prefix.less"}},end:"(((\\+_?)?):)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.key-value.less"}}},{match:"\\b(portrait|landscape|progressive|interlace)",name:"support.constant.property-value.less"},{captures:{1:{name:"constant.numeric.less"},2:{name:"keyword.operator.arithmetic.less"},3:{name:"constant.numeric.less"}},match:"\\s*(\\d+)(/)(\\d+)"},{include:"#less-math"}]}]},"media-query-list":{begin:"\\s*(?=[^{;])",end:"\\s*(?=[{;])",patterns:[{include:"#media-query"}]},"minmax-function":{begin:"\\b(minmax)(?=\\()",beginCaptures:{1:{name:"support.function.grid.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\b(max-content|min-content)\\b",name:"support.constant.property-value.less"}]}]},"number-type":{match:"[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))",name:"constant.numeric.less"},"numeric-values":{patterns:[{include:"#dimensions"},{include:"#percentage-type"},{include:"#number-type"}]},"percentage-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(%)",name:"constant.numeric.less"},"property-list":{patterns:[{begin:"(?=(?=[^;]*)\\{)",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.end.less"}},patterns:[{include:"#rule-list"}]}]},"property-value-constants":{patterns:[{match:`(?x)\\b( +absolute|active|add +|all(-(petite|small)-caps|-scroll)? +|alpha(betic)? +|alternate(-reverse)? +|always|annotation|antialiased|at +|auto(hiding-scrollbar)? +|avoid(-column|-page|-region)? +|background(-color|-image|-position|-size)? +|backwards|balance|baseline|below|bevel|bicubic|bidi-override|blink +|block(-line-height)? +|blur +|bold(er)? +|border(-bottom|-left|-right|-top)?-(color|radius|width|style) +|border-(bottom|top)-(left|right)-radius +|border-image(-outset|-repeat|-slice|-source|-width)? +|border(-bottom|-left|-right|-top|-collapse|-spacing|-box)? +|both|bottom +|box(-shadow)? +|break-(all|word) +|brightness +|butt(on)? +|capitalize +|cent(er|ral) +|char(acter-variant)? +|cjk-ideographic|clip|clone|close-quote +|closest-(corner|side) +|col-resize|collapse +|color(-stop|-burn|-dodge)? +|column((-count|-gap|-reverse|-rule(-color|-width)?|-width)|s)? +|common-ligatures|condensed|consider-shifts|contain +|content(-box|s)? +|contextual|contrast|cover +|crisp(-e|E)dges +|crop +|cross(hair)? +|da(rken|shed) +|default|dense|diagonal-fractions|difference|disabled +|discretionary-ligatures|disregard-shifts +|distribute(-all-lines|-letter|-space)? +|dotted|double|drop-shadow +|(nwse|nesw|ns|ew|sw|se|nw|ne|w|s|e|n)-resize +|ease(-in-out|-in|-out)? +|element|ellipsis|embed|end|EndColorStr|evenodd +|exclu(de(-ruby)?|sion) +|expanded +|(extra|semi|ultra)-(condensed|expanded) +|farthest-(corner|side)? +|fill(-box|-opacity)? +|filter|fixed|flat +|flex((-basis|-end|-grow|-shrink|-start)|box)? +|flip|flood-color +|font(-size(-adjust)?|-stretch|-weight)? +|forwards +|from(-image)? +|full-width|geometricPrecision|glyphs|gradient|grayscale +|grid(-height)? +|groove|hand|hanging|hard-light|height|help|hidden|hide +|historical-(forms|ligatures) +|horizontal(-tb)? +|hue +|ideograph(-alpha|-numeric|-parenthesis|-space|ic) +|inactive|include-ruby|infinite|inherit|initial +|inline(-block|-box|-flex(box)?|-line-height|-table)? +|inset|inside +|inter(-ideograph|-word|sect) +|invert|isolat(e|ion)|italic +|jis(04|78|83|90) +|justify(-all)? +|keep-all +|large[r]? +|last|layout|left|letter-spacing +|light(e[nr]|ing-color) +|line(-edge|-height|-through)? +|linear(-gradient|RGB)? +|lining-nums|list-item|local|loose|lowercase|lr-tb|ltr +|lumin(osity|ance)|manual +|manipulation +|margin(-bottom|-box|-left|-right|-top)? +|marker(-offset|s)? +|mathematical +|max-(content|height|lines|size|width) +|medium|middle +|min-(content|height|width) +|miter|mixed|move|multiply|newspaper +|no-(change|clip|(close|open)-quote|(common|discretionary|historical)-ligatures|contextual|drop|repeat) +|none|nonzero|normal|not-allowed|nowrap|oblique +|offset(-after|-before|-end|-start)? +|oldstyle-nums|opacity|open-quote +|optimize(Legibility|Precision|Quality|Speed) +|order|ordinal|ornaments +|outline(-color|-offset|-width)? +|outset|outside|over(line|-edge|lay) +|padding(-bottom|-box|-left|-right|-top|-box)? +|page|painted|paused +|pan-(x|left|right|y|up|down) +|perspective-origin +|petite-caps|pixelated|pointer +|pinch-zoom +|pre(-line|-wrap)? +|preserve-3d +|progid:DXImageTransform.Microsoft.(Alpha|Blur|dropshadow|gradient|Shadow) +|progress +|proportional-(nums|width) +|radial-gradient|recto|region|relative +|repeat(-[xy])? +|repeating-(linear|radial)-gradient +|replaced|reset-size|reverse|ridge|right +|round +|row(-resize|-reverse)? +|rtl|ruby|running|saturat(e|ion)|screen +|scroll(-position|bar)? +|separate|sepia +|scale-down +|shape-(image-threshold|margin|outside) +|show +|sideways(-lr|-rl)? +|simplified +|size +|slashed-zero|slice +|small(-caps|er)? +|smooth|snap|solid|soft-light +|space(-around|-between)? +|span|sRGB +|stack(ed-fractions)? +|start(ColorStr)? +|static +|step-(end|start) +|sticky +|stop-(color|opacity) +|stretch|strict +|stroke(-box|-dash(array|offset)|-miterlimit|-opacity|-width)? +|style(set)? +|stylistic +|sub(grid|pixel-antialiased|tract)? +|super|swash +|table(-caption|-cell|(-column|-footer|-header|-row)-group|-column|-row)? +|tabular-nums|tb-rl +|text((-bottom|-(decoration|emphasis)-color|-indent|-(over|under)-edge|-shadow|-size(-adjust)?|-top)|field)? +|thi(ck|n) +|titling-ca(ps|se) +|to[p]? +|touch|traditional +|transform(-origin)? +|under(-edge|line)? +|unicase|unset|uppercase|upright +|use-(glyph-orientation|script) +|verso +|vertical(-align|-ideographic|-lr|-rl|-text)? +|view-box +|viewport-fill(-opacity)? +|visibility +|visible(Fill|Painted|Stroke)? +|wait|wavy|weight|whitespace|(device-)?width|word-spacing +|wrap(-reverse)? +|x{1,2}-(large|small) +|z-index|zero +|zoom(-in|-out)? +|((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)))\\b`,name:"support.constant.property-value.less"},{match:"\\b(?i:sans-serif|serif|monospace|fantasy|cursive)\\b(?=\\s*[;,\\n}])",name:"support.constant.font-name.less"}]},"property-values":{patterns:[{include:"#comment-block"},{include:"#vendor-prefix"},{include:"#builtin-functions"},{include:"#color-functions"},{include:"#less-math"},{include:"#less-functions"},{include:"#less-variables"},{include:"#unicode-range"},{include:"#numeric-values"},{include:"#color-values"},{include:"#property-value-constants"},{include:"#literal-string"},{captures:{1:{name:"punctuation.separator.less"}},match:"(\\!)\\s*important",name:"keyword.other.important.less"}]},"pseudo-classes":{patterns:[{begin:"(:)(dir|lang)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#unquoted-string"}]}]},{begin:"(:)(not)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{begin:"(:)(nth(-last)?-(child|of-type))(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{match:"\\b(even|odd)\\b",name:"keyword.other.pseudo-class.less"},{captures:{1:{name:"keyword.other.unit.less"}},match:"(?:[-+]?(?:\\d+)?(n)(\\s*[-+]\\s*\\d+)?|[-+]?\\s*\\d+)",name:"constant.numeric.less"},{include:"#less-math"},{include:"#less-strings"},{include:"#less-variable-interpolation"}]}]},{begin:"(:)(host-context)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.less"}},match:"(:)(active|any|checked|default|disabled|empty|enabled|first(-(child|of-type))?|fullscreen|focus|host|hover|indeterminate|in-range|invalid|last-(child|of-type)|left|link|only-(child|of-type)|optional|out-of-range|read-(only|write)|required|right|root|scope|target|valid|visited)",name:"meta.function-call.less"}]},"pseudo-elements":{patterns:[{begin:"(::)(slotted)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"punctuation.definition.entity.less"},3:{name:"support.type.vendor-prefix.less"}},match:"(?:(:{1,2})(?:before|after|first-line|first-letter)|(::)(-(?:moz|ms|webkit)-)?(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)))\\b",name:"entity.other.attribute-name.pseudo-element.less"}]},"qualified-name":{captures:{1:{name:"entity.name.constant.less"},2:{name:"entity.name.namespace.wildcard.less"},3:{name:"punctuation.separator.namespace.less"}},match:"(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)|(\\*))?([|])(?!=)"},"regexp-function":{begin:"\\b(regexp)(?=\\()",end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"support.function.regexp.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.function-call.less",patterns:[{include:"#literal-string"}]}]},"resolution-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(dpi|dpcm|dppx))\\b",name:"constant.numeric.less"},"rule-list":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\s*\\})",name:"meta.property-list.less",patterns:[{captures:{1:{name:"punctuation.terminator.rule.less"}},match:"\\s*(;)|(?=[})])"},{include:"#rule-list-body"},{include:"#less-extend"}]}]},"rule-list-body":{patterns:[{include:"#comment-block"},{include:"#comment-line"},{include:"#at-rules"},{include:"#less-variable-assignment"},{include:"#less-variable-interpolation"},{begin:"(?=[-a-z])",end:"$|(?![-a-z])",patterns:[{include:"#vendor-prefix"},{include:"#custom-property-name"},{include:"#filter-function"},{captures:{1:{name:"keyword.other.custom-property.prefix.less"},2:{name:"support.type.custom-property.name.less"}},match:"\\b(var-)(-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)(?=\\s)",name:"invalid.deprecated.custom-property.less"},{begin:"\\bfont(-family)?(?!-)\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#property-values"},{match:"-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*(\\s+-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)*",name:"string.unquoted.less"},{match:",",name:"punctuation.separator.less"}]},{begin:"\\banimation(-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function))?\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{begin:"(((\\+_?)?):)(?=[\\s\\t]*)",beginCaptures:{1:{name:"punctuation.separator.key-value.less"}},captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},contentName:"meta.property-value.less",end:"(?=\\s*(;)|(?=[})]))",patterns:[{match:"\\b(linear|ease(-in)?(-out)?|step-(start|end)|none|forwards|backwards|both|normal|alternate(-reverse)?|reverse|running|paused)\\b",name:"support.constant.property-value.less"},{include:"#cubic-bezier-function"},{include:"#steps-function"},{include:"#time-type"},{include:"#number-type"},{match:"-?(?:[_a-zA-Z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[-_a-zA-Z0-9]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*",name:"variable.other.constant.animation-name.less"},{include:"#literal-string"},{include:"#property-values"},{match:"\\s*(?:(,))"}]}]},{begin:"\\b(transition(-(property|duration|delay|timing-function))?)\\b",beginCaptures:{0:{name:"meta.property-name.less"},1:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#time-type"},{include:"#property-values"},{include:"#cubic-bezier-function"},{include:"#steps-function"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"}]},{begin:"\\b(?:backdrop-)?filter\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"\\b(inherit|initial|unset|none)\\b",name:"meta.property-value.less"},{include:"#filter-functions"}]},{begin:"\\bwill-change\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"unset|initial|inherit|will-change|auto|scroll-position|contents",name:"invalid.illegal.property-value.less"},{match:"-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*",name:"support.constant.property-value.less"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"}]},{begin:"\\bcounter-(increment|(re)?set)\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*",name:"entity.name.constant.counter-name.less"},{include:"#integer-type"},{match:"unset|initial|inherit|auto",name:"invalid.illegal.property-value.less"}]},{match:"(?x)\\b( accent-height | align-content | align-items | align-self | alignment-baseline | all | animation-timing-function | animation-play-state | animation-name | animation-iteration-count | animation-fill-mode | animation-duration | animation-direction | animation-delay | animation | appearance | ascent | azimuth | backface-visibility | background-size | background-repeat-y | background-repeat-x | background-repeat | background-position-y | background-position-x | background-position | background-origin | background-image | background-color | background-clip | background-blend-mode | background-attachment | background | baseline-shift | begin | bias | blend-mode | border-((top|right|bottom|left)-)?(width|style|color) | border-(top|bottom)-(right|left)-radius | border-image-(width|source|slice|repeat|outset) | border-(top|right|bottom|left|collapse|image|radius|spacing) | border | bottom | box-(align|decoration-break|direction|flex|ordinal-group|orient|pack|shadow|sizing) | break-(after|before|inside) | caption-side | clear | clip-path | clip-rule | clip | color(-(interpolation(-filters)?|profile|rendering))? | columns | column-(break-before|count|fill|gap|(rule(-(color|style|width))?)|span|width) | contain | content | counter-(increment|reset) | cursor | (c|d|f)(x|y) | direction | display | divisor | dominant-baseline | dur | elevation | empty-cells | enable-background | end | fallback | fill(-(opacity|rule))? | filter | flex(-(align|basis|direction|flow|grow|item-align|line-pack|negative|order|pack|positive|preferred-size|shrink|wrap))? | float | flood-(color|opacity) | font-display | font-family | font-feature-settings | font-kerning | font-language-override | font-size(-adjust)? | font-smoothing | font-stretch | font-style | font-synthesis | font-variant(-(alternates|caps|east-asian|ligatures|numeric|position))? | font-weight | font | fr | glyph-orientation-(horizontal|vertical) | grid-(area|gap) | grid-auto-(columns|flow|rows) | grid-(column|row)(-(end|gap|start))? | grid-template(-(areas|columns|rows))? | height | hyphens | image-(orientation|rendering|resolution) | isolation | justify-content | kerning | left | letter-spacing | lighting-color | line-(box-contain|break|clamp|height) | list-style(-(image|position|type))? | margin(-(bottom|left|right|top))? | marker(-(end|mid|start))? | mask(-(clip||composite|image|origin|position|repeat|size|type))? | (max|min)-(height|width) | mix-blend-mode | nbsp-mode | negative | object-(fit|position) | opacity | operator | order | orphans | outline(-(color|offset|style|width))? | overflow(-(scrolling|wrap|x|y))? | pad(ding(-(bottom|left|right|top))?)? | page(-break-(after|before|inside))? | paint-order | pause(-(after|before))? | perspective(-origin(-(x|y))?)? | pitch(-range)? | pointer-events | position | prefix | quotes | range | resize | right | rotate | scale | scroll-behavior | shape-(image-threshold|margin|outside|rendering) | size | speak(-as)? | src | stop-(color|opacity) | stroke(-(dash(array|offset)|line(cap|join)|miterlimit|opacity|width))? | suffix | symbols | system | tab-size | table-layout | tap-highlight-color | text-align(-last)? | text-decoration(-(color|line|style))? | text-emphasis(-(color|position|style))? | text-(anchor|fill-color|height|indent|justify|orientation|overflow|rendering|shadow|transform|underline-position) | top | touch-action | transform(-origin(-(x|y))?) | transform(-style)? | transition(-(delay|duration|property|timing-function))? | translate | unicode-(bidi|range) | user-(drag|select) | vertical-align | visibility | white-space | widows | width | will-change | word-(break|spacing|wrap) | writing-mode | z-index | zoom )\\b",name:"support.type.property-name.less"},{include:"$self"}]},{begin:"\\b(((\\+_?)?):)([\\s\\t]*)",captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},contentName:"meta.property-value.less",end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{include:"#property-values"}]},{include:"$self"}]},selector:{patterns:[{begin:"(?=[>~+/\\.*#a-zA-Z\\[&]|(\\:{1,2}[^\\s])|@\\{)",contentName:"meta.selector.less",end:"(?=@(?!\\{)|[{;])",patterns:[{include:"#comment-line"},{include:"#selectors"},{include:"#less-namespace-accessors"},{include:"#less-variable-interpolation"},{captures:{1:{name:"punctuation.separator.less"}},match:"(\\!)\\s*important",name:"keyword.other.important.less"}]}]},selectors:{patterns:[{match:"\\b([a-z](?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\x{037D}][\\x{037F}-\\x{1FFF}][\\x{200C}-\\x{200D}][\\x{203F}-\\x{2040}][\\x{2070}-\\x{218F}][\\x{2C00}-\\x{2FEF}][\\x{3001}-\\x{D7FF}][\\x{F900}-\\x{FDCF}][\\x{FDF0}-\\x{FFFD}][\\x{10000}-\\x{EFFFF}]]))*-(?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\x{037D}][\\x{037F}-\\x{1FFF}][\\x{200C}-\\x{200D}][\\x{203F}-\\x{2040}][\\x{2070}-\\x{218F}][\\x{2C00}-\\x{2FEF}][\\x{3001}-\\x{D7FF}][\\x{F900}-\\x{FDCF}][\\x{FDF0}-\\x{FFFD}][\\x{10000}-\\x{EFFFF}]]))*)\\b",name:"entity.name.tag.custom.less"},{match:"(?x)\\b( a | abbr | acronym | address | applet | area | article | aside | audio | b | base | basefont | bdi | bdo | big | blockquote | body | br | button | canvas | caption | circle | cite | clipPath | code | col | colgroup | content | data | dataList | dd | defs | del | details | dfn | dialog | dir | div | dl | dt | element | ellipse | em | embed | eventsource | fieldset | figcaption | figure | filter | footer | foreignObject | form | frame | frameset | g | glyph | glyphRef | h1 | h2 | h3 | h4 | h5 | h6 | head | header | hgroup | hr | html | i | iframe | image | img | input | ins | isindex | kbd | keygen | label | legend | li | line | linearGradient | link | main | map | mark | marker | mask | menu | meta | meter | nav | noframes | noscript | object | ol | optgroup | option | output | p | param | path | pattern | picture | polygon | polyline | pre | progress | q | radialGradient | rect | rp | ruby | rt | rtc | s | samp | script | section | select | shadow | small | source | span | stop | strike | strong | style | sub | summary | sup | svg | switch | symbol | table | tbody | td | template | textarea | textPath | tfoot | th | thead | time | title | tr | track | tref | tspan | tt | u | ul | use | var | video | wbr | xmp )\\b",name:"entity.name.tag.less"},{begin:"(\\.)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.class.less",patterns:[{include:"#less-variable-interpolation"}]},{begin:"(#)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.id.less",patterns:[{include:"#less-variable-interpolation"}]},{begin:"(&)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},contentName:"entity.other.attribute-name.parent.less",end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.parent.less",patterns:[{include:"#less-variable-interpolation"},{include:"#selectors"}]},{include:"#pseudo-elements"},{include:"#pseudo-classes"},{include:"#less-extend"},{match:"(?!\\+_?:)(?:>{1,3}|[~+])(?![>~+;}])",name:"punctuation.separator.combinator.less"},{match:"((?:>{1,3}|[~+])){2,}",name:"invalid.illegal.combinator.less"},{match:"\\/deep\\/",name:"invalid.illegal.combinator.less"},{begin:"\\[",captures:{0:{name:"punctuation.definition.entity.less"}},end:"\\]",name:"meta.attribute-selector.less",patterns:[{include:"#less-variable-interpolation"},{include:"#qualified-name"},{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.attribute-name.less"},{begin:"\\s*([~*|^$]?=)\\s*",captures:{1:{name:"keyword.operator.attribute-selector.less"}},end:"(?=(\\s|\\]))",patterns:[{include:"#less-variable-interpolation"},{match:`[^\\s\\]\\['"]`,name:"string.unquoted.less"},{include:"#literal-string"},{captures:{1:{name:"keyword.other.less"}},match:"(?:\\s+([iI]))?"},{match:"\\]",name:"punctuation.definition.entity.less"}]}]},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"},{match:"\\*",name:"entity.name.tag.wildcard.less"}]},"shape-functions":{patterns:[{begin:"\\b(rect)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bauto\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#comma-delimiter"}]}]},{begin:"\\b(inset)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bround\\b",name:"keyword.other.less"},{include:"#length-type"},{include:"#percentage-type"}]}]},{begin:"\\b(circle|ellipse)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bat\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center|closest-side|farthest-side)\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#percentage-type"}]}]},{begin:"\\b(polygon)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\b(nonzero|evenodd)\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#percentage-type"}]}]}]},"steps-function":{begin:"\\b(steps)(?=\\()",beginCaptures:{0:{name:"support.function.timing.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#integer-type"},{match:"(end|middle|start)",name:"support.keyword.timing-direction.less"}]}]},"string-content":{patterns:[{include:"#less-variable-interpolation"},{match:"\\\\\\s*\\n",name:"constant.character.escape.newline.less"},{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.less"}]},"symbols-function":{begin:"\\b(symbols)(?=\\()",beginCaptures:{1:{name:"support.function.counter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\b(cyclic|numeric|alphabetic|symbolic|fixed)\\b",name:"support.constant.symbol-type.less"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#image-type"}]}]},"time-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(s|ms))\\b",name:"constant.numeric.less"},"transform-functions":{patterns:[{begin:"\\b(matrix3d|scale3d|matrix|scale)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(translate(3d)?)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#length-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(translate[XY])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#percentage-type"},{include:"#length-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(rotate[XYZ]?|skew[XY])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(skew)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(translateZ|perspective)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(rotate3d)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(scale[XYZ])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]}]},"unicode-range":{captures:{1:{name:"support.constant.unicode-range.prefix.less"},2:{name:"constant.codepoint-range.less"},3:{name:"punctuation.section.range.less"}},match:"(?i)(u\\+)([0-9a-f?]{1,6}(?:(-)[0-9a-f]{1,6})?)",name:"support.unicode-range.less"},"unquoted-string":{match:`[^\\s'"]`,name:"string.unquoted.less"},"url-function":{begin:"\\b(url)(?=\\()",beginCaptures:{1:{name:"support.function.url.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#literal-string"},{include:"#unquoted-string"},{include:"#var-function"}]}]},"var-function":{patterns:[{begin:"\\b(var)(?=\\()",beginCaptures:{1:{name:"support.function.var.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#custom-property-name"},{include:"#less-variables"}]}]}]},"vendor-prefix":{match:"-(?:webkit|moz(-osx)?|ms|o)-",name:"support.type.vendor-prefix.less"}},scopeName:"source.css.less"});var n=[e];export{n as default}; diff --git a/assets/chunks/light-plus.BsvsQ1iS.js b/assets/chunks/light-plus.BsvsQ1iS.js new file mode 100644 index 000000000..6324a65ad --- /dev/null +++ b/assets/chunks/light-plus.BsvsQ1iS.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"actionBar.toggledBackground":"#dddddd","activityBarBadge.background":"#007ACC","checkbox.border":"#919191","editor.background":"#FFFFFF","editor.foreground":"#000000","editor.inactiveSelectionBackground":"#E5EBF1","editor.selectionHighlightBackground":"#ADD6FF80","editorIndentGuide.activeBackground":"#939393","editorIndentGuide.background":"#D3D3D3","editorSuggestWidget.background":"#F3F3F3","input.placeholderForeground":"#767676","list.activeSelectionIconForeground":"#FFF","list.focusAndSelectionOutline":"#90C2F9","list.hoverBackground":"#E8E8E8","menu.border":"#D4D4D4","notebook.cellBorderColor":"#E8E8E8","notebook.selectedCellBackground":"#c8ddf150","ports.iconRunningProcessForeground":"#369432","searchEditor.textInputBorder":"#CECECE","settings.numberInputBorder":"#CECECE","settings.textInputBorder":"#CECECE","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#61616130","sideBarTitle.foreground":"#6F6F6F","statusBarItem.errorBackground":"#c72e0f","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#61616130","terminal.inactiveSelectionBackground":"#E5EBF1","widget.border":"#d4d4d4"},displayName:"Light Plus",name:"light-plus",semanticHighlighting:!0,semanticTokenColors:{customLiteral:"#795E26",newOperator:"#AF00DB",numberLiteral:"#098658",stringLiteral:"#a31515"},tokenColors:[{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#000000ff"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"meta.diff.header",settings:{foreground:"#000080"}},{scope:"comment",settings:{foreground:"#008000"}},{scope:"constant.language",settings:{foreground:"#0000ff"}},{scope:["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],settings:{foreground:"#098658"}},{scope:"constant.regexp",settings:{foreground:"#811f3f"}},{scope:"entity.name.tag",settings:{foreground:"#800000"}},{scope:"entity.name.selector",settings:{foreground:"#800000"}},{scope:"entity.other.attribute-name",settings:{foreground:"#e50000"}},{scope:["entity.other.attribute-name.class.css","entity.other.attribute-name.class.mixin.css","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.pseudo-class.css","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],settings:{foreground:"#800000"}},{scope:"invalid",settings:{foreground:"#cd3131"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#000080"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#800000"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inserted",settings:{foreground:"#098658"}},{scope:"markup.deleted",settings:{foreground:"#a31515"}},{scope:"markup.changed",settings:{foreground:"#0451a5"}},{scope:["punctuation.definition.quote.begin.markdown","punctuation.definition.list.begin.markdown"],settings:{foreground:"#0451a5"}},{scope:"markup.inline.raw",settings:{foreground:"#800000"}},{scope:"punctuation.definition.tag",settings:{foreground:"#800000"}},{scope:["meta.preprocessor","entity.name.function.preprocessor"],settings:{foreground:"#0000ff"}},{scope:"meta.preprocessor.string",settings:{foreground:"#a31515"}},{scope:"meta.preprocessor.numeric",settings:{foreground:"#098658"}},{scope:"meta.structure.dictionary.key.python",settings:{foreground:"#0451a5"}},{scope:"storage",settings:{foreground:"#0000ff"}},{scope:"storage.type",settings:{foreground:"#0000ff"}},{scope:["storage.modifier","keyword.operator.noexcept"],settings:{foreground:"#0000ff"}},{scope:["string","meta.embedded.assembly"],settings:{foreground:"#a31515"}},{scope:["string.comment.buffered.block.pug","string.quoted.pug","string.interpolated.pug","string.unquoted.plain.in.yaml","string.unquoted.plain.out.yaml","string.unquoted.block.yaml","string.quoted.single.yaml","string.quoted.double.xml","string.quoted.single.xml","string.unquoted.cdata.xml","string.quoted.double.html","string.quoted.single.html","string.unquoted.html","string.quoted.single.handlebars","string.quoted.double.handlebars"],settings:{foreground:"#0000ff"}},{scope:"string.regexp",settings:{foreground:"#811f3f"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#0000ff"}},{scope:["meta.template.expression"],settings:{foreground:"#000000"}},{scope:["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],settings:{foreground:"#0451a5"}},{scope:["support.type.vendored.property-name","support.type.property-name","variable.css","variable.scss","variable.other.less","source.coffee.embedded"],settings:{foreground:"#e50000"}},{scope:["support.type.property-name.json"],settings:{foreground:"#0451a5"}},{scope:"keyword",settings:{foreground:"#0000ff"}},{scope:"keyword.control",settings:{foreground:"#0000ff"}},{scope:"keyword.operator",settings:{foreground:"#000000"}},{scope:["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],settings:{foreground:"#0000ff"}},{scope:"keyword.other.unit",settings:{foreground:"#098658"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#800000"}},{scope:"support.function.git-rebase",settings:{foreground:"#0451a5"}},{scope:"constant.sha.git-rebase",settings:{foreground:"#098658"}},{scope:["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],settings:{foreground:"#000000"}},{scope:"variable.language",settings:{foreground:"#0000ff"}},{scope:["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],settings:{foreground:"#795E26"}},{scope:["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],settings:{foreground:"#267f99"}},{scope:["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class"],settings:{foreground:"#267f99"}},{scope:["keyword.control","source.cpp keyword.operator.new","source.cpp keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],settings:{foreground:"#AF00DB"}},{scope:["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],settings:{foreground:"#001080"}},{scope:["variable.other.constant","variable.other.enummember"],settings:{foreground:"#0070C1"}},{scope:["meta.object-literal.key"],settings:{foreground:"#001080"}},{scope:["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],settings:{foreground:"#0451a5"}},{scope:["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],settings:{foreground:"#d16969"}},{scope:["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],settings:{foreground:"#811f3f"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#000000"}},{scope:["keyword.operator.or.regexp","keyword.control.anchor.regexp"],settings:{foreground:"#EE0000"}},{scope:["constant.character","constant.other.option"],settings:{foreground:"#0000ff"}},{scope:"constant.character.escape",settings:{foreground:"#EE0000"}},{scope:"entity.name.label",settings:{foreground:"#000000"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/liquid.Cp8214eI.js b/assets/chunks/liquid.Cp8214eI.js new file mode 100644 index 000000000..ece628b64 --- /dev/null +++ b/assets/chunks/liquid.Cp8214eI.js @@ -0,0 +1,14 @@ +import e from"./html.CuK0VrWf.js";import n from"./css.CbYhyuC0.js";import t from"./json.CupVZNk8.js";import i from"./javascript.Dch3xQiY.js";const a=Object.freeze({displayName:"Liquid",fileTypes:["liquid"],foldingStartMarker:`(?x) +{% + -? + \\s* + (capture|case|comment|for|form|if|javascript|paginate|schema|style) + [^(%})]+ +%} +`,foldingStopMarker:`(?x) +{% + \\s* + (endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle) + [^(%})]+ +%} +`,injections:{"L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted":{patterns:[{include:"#injection"}]}},name:"liquid",patterns:[{include:"#core"}],repository:{attribute:{begin:"\\w+:",beginCaptures:{0:{name:"entity.other.attribute-name.liquid"}},end:"(?=,|%}|}}|\\|)",patterns:[{include:"#value_expression"}]},attribute_liquid:{begin:"\\w+:",beginCaptures:{0:{name:"entity.other.attribute-name.liquid"}},end:"(?=,|\\|)|$",patterns:[{include:"#value_expression"}]},comment_block:{begin:"{%-?\\s*comment\\s*-?%}",end:"{%-?\\s*endcomment\\s*-?%}",name:"comment.block.liquid",patterns:[{include:"#comment_block"},{match:"(.(?!{%-?\\s*(comment|endcomment)\\s*-?%}))*."}]},core:{patterns:[{include:"#raw_tag"},{include:"#comment_block"},{include:"#style_codefence"},{include:"#stylesheet_codefence"},{include:"#json_codefence"},{include:"#javascript_codefence"},{include:"#object"},{include:"#tag"},{include:"text.html.basic"}]},filter:{captures:{1:{name:"support.function.liquid"}},match:"\\|\\s*((?![\\.0-9])[a-zA-Z0-9_-]+\\:?)\\s*"},injection:{patterns:[{include:"#raw_tag"},{include:"#comment_block"},{include:"#object"},{include:"#tag_injection"}]},invalid_range:{match:"\\((.(?!\\.\\.))+\\)",name:"invalid.illegal.range.liquid"},javascript_codefence:{begin:"({%-?)\\s*(javascript)\\s*(-?%})",beginCaptures:{0:{name:"meta.tag.metadata.javascript.start.liquid"},1:{name:"punctuation.definition.tag.begin.liquid"},2:{name:"entity.name.tag.javascript.liquid"},3:{name:"punctuation.definition.tag.begin.liquid"}},contentName:"meta.embedded.block.js",end:"({%-?)\\s*(endjavascript)\\s*(-?%})",endCaptures:{0:{name:"meta.tag.metadata.javascript.end.liquid"},1:{name:"punctuation.definition.tag.end.liquid"},2:{name:"entity.name.tag.javascript.liquid"},3:{name:"punctuation.definition.tag.end.liquid"}},name:"meta.block.javascript.liquid",patterns:[{include:"source.js"}]},json_codefence:{begin:"({%-?)\\s*(schema)\\s*(-?%})",beginCaptures:{0:{name:"meta.tag.metadata.schema.start.liquid"},1:{name:"punctuation.definition.tag.begin.liquid"},2:{name:"entity.name.tag.schema.liquid"},3:{name:"punctuation.definition.tag.begin.liquid"}},contentName:"meta.embedded.block.json",end:"({%-?)\\s*(endschema)\\s*(-?%})",endCaptures:{0:{name:"meta.tag.metadata.schema.end.liquid"},1:{name:"punctuation.definition.tag.end.liquid"},2:{name:"entity.name.tag.schema.liquid"},3:{name:"punctuation.definition.tag.end.liquid"}},name:"meta.block.schema.liquid",patterns:[{include:"source.json"}]},language_constant:{match:"\\b(false|true|nil|blank)\\b|empty(?!\\?)",name:"constant.language.liquid"},number:{match:"((-|\\+)\\s*)?[0-9]+(\\.[0-9]+)?",name:"constant.numeric.liquid"},object:{begin:"(?|\\<|\\>\\=|\\<\\=|or|and|contains)(?:(?=\\s)|\\b)"},range:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.liquid"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.liquid"}},name:"meta.range.liquid",patterns:[{match:"\\.\\.",name:"punctuation.range.liquid"},{include:"#variable_lookup"},{include:"#number"}]},raw_tag:{begin:"{%-?\\s*(raw)\\s*-?%}",beginCaptures:{1:{name:"entity.name.tag.liquid"}},contentName:"string.unquoted.liquid",end:"{%-?\\s*(endraw)\\s*-?%}",endCaptures:{1:{name:"entity.name.tag.liquid"}},name:"meta.entity.tag.raw.liquid",patterns:[{match:"(.(?!{%-?\\s*endraw\\s*-?%}))*."}]},string:{patterns:[{include:"#string_single"},{include:"#string_double"}]},string_double:{begin:'"',end:'"',name:"string.quoted.double.liquid"},string_single:{begin:"'",end:"'",name:"string.quoted.single.liquid"},style_codefence:{begin:"({%-?)\\s*(style)\\s*(-?%})",beginCaptures:{0:{name:"meta.tag.metadata.style.start.liquid"},1:{name:"punctuation.definition.tag.begin.liquid"},2:{name:"entity.name.tag.style.liquid"},3:{name:"punctuation.definition.tag.begin.liquid"}},contentName:"meta.embedded.block.css",end:"({%-?)\\s*(endstyle)\\s*(-?%})",endCaptures:{0:{name:"meta.tag.metadata.style.end.liquid"},1:{name:"punctuation.definition.tag.end.liquid"},2:{name:"entity.name.tag.style.liquid"},3:{name:"punctuation.definition.tag.end.liquid"}},name:"meta.block.style.liquid",patterns:[{include:"source.css"}]},stylesheet_codefence:{begin:"({%-?)\\s*(stylesheet)\\s*(-?%})",beginCaptures:{0:{name:"meta.tag.metadata.style.start.liquid"},1:{name:"punctuation.definition.tag.begin.liquid"},2:{name:"entity.name.tag.style.liquid"},3:{name:"punctuation.definition.tag.begin.liquid"}},contentName:"meta.embedded.block.css",end:"({%-?)\\s*(endstylesheet)\\s*(-?%})",endCaptures:{0:{name:"meta.tag.metadata.style.end.liquid"},1:{name:"punctuation.definition.tag.end.liquid"},2:{name:"entity.name.tag.style.liquid"},3:{name:"punctuation.definition.tag.end.liquid"}},name:"meta.block.style.liquid",patterns:[{include:"source.css"}]},tag:{begin:"(?"},{match:"\\<[a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*\\>",name:"storage.type.generic.lua"},{match:"\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\b",name:"keyword.control.lua"},{match:"\\b(local)\\b",name:"keyword.local.lua"},{match:"\\b(function)\\b(?![,:])",name:"keyword.control.lua"},{match:"(?=?|(?|\\<",name:"keyword.operator.lua"}]},{begin:"(?<=---)[ \\t]*@see",beginCaptures:{0:{name:"storage.type.annotation.lua"}},end:"(?=[\\n@#])",patterns:[{match:"\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",name:"support.class.lua"},{match:"#",name:"keyword.operator.lua"}]},{begin:"(?<=---)[ \\t]*@diagnostic",beginCaptures:{0:{name:"storage.type.annotation.lua"}},end:"(?=[\\n@#])",patterns:[{begin:"([a-zA-Z_\\-0-9]+)[ \\t]*(:)?",beginCaptures:{1:{name:"keyword.other.unit"},2:{name:"keyword.operator.unit"}},end:"(?=\\n)",patterns:[{match:"\\b([a-zA-Z_\\*][a-zA-Z0-9_\\-]*)",name:"support.class.lua"},{match:",",name:"keyword.operator.lua"}]}]},{begin:"(?<=---)[ \\t]*@module",beginCaptures:{0:{name:"storage.type.annotation.lua"}},end:"(?=[\\n@#])",patterns:[{include:"#string"}]},{match:"(?<=---)[ \\t]*@(async|nodiscard)",name:"storage.type.annotation.lua"},{begin:"(?<=---)\\|\\s*[\\>\\+]?",beginCaptures:{0:{name:"storage.type.annotation.lua"}},end:"(?=[\\n@#])",patterns:[{include:"#string"}]}]},"emmydoc.type":{patterns:[{begin:"\\bfun\\b",beginCaptures:{0:{name:"keyword.control.lua"}},end:"(?=[\\s#])",patterns:[{match:"[\\(\\),:\\?][ \\t]*",name:"keyword.operator.lua"},{match:"([a-zA-Z_][a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]*)(?",name:"storage.type.generic.lua"},{match:"\\basync\\b",name:"entity.name.tag.lua"},{match:"[\\{\\}\\:\\,\\?\\|\\`][ \\t]*",name:"keyword.operator.lua"},{begin:`(?=[a-zA-Z_\\.\\*"'\\[])`,end:"(?=[\\s\\)\\,\\?\\:\\}\\|#])",patterns:[{match:"([a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]+)(?) ?",captures:{2:{name:"punctuation.definition.quote.begin.markdown"}},name:"markup.quote.markdown",patterns:[{include:"#block"}],while:"(^|\\G)\\s*(>) ?"},bold:{begin:`(?x) (?(\\*\\*(?=\\w)|(?]*+> +| (?\`+)([^\`]|(?!(?(?!\`))\`)*+\\k + +| \\\\[\\\\\`*_{}\\[\\]()#.!+\\->]?+ +| \\[ +( +(? +[^\\[\\]\\\\] +| \\\\. +| \\[ \\g*+ \\] +)*+ +\\] +( +( +[ ]? +\\[[^\\]]*+\\] +) +| ( +\\( +[ \\t]*+ +? +[ \\t]*+ +( +(?['"]) +(.*?) +\\k<title> +)? +\\) +) +) +) +| (?!(?<=\\S)\\k<open>). + +)++ +(?<=\\S)(?=__\\b|\\*\\*)\\k<open> +) +`,captures:{1:{name:"punctuation.definition.bold.markdown"}},end:"(?<=\\S)(\\1)",name:"markup.bold.markdown",patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"},{include:"#strikethrough"}]},bracket:{comment:"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.",match:"<(?![a-zA-Z/?\\$!])",name:"meta.other.valid-bracket.markdown"},escape:{match:"\\\\[-`*_#+.!(){}\\[\\]\\\\>]",name:"constant.character.escape.markdown"},fenced_code_block:{patterns:[{include:"#fenced_code_block_css"},{include:"#fenced_code_block_basic"},{include:"#fenced_code_block_ini"},{include:"#fenced_code_block_java"},{include:"#fenced_code_block_lua"},{include:"#fenced_code_block_makefile"},{include:"#fenced_code_block_perl"},{include:"#fenced_code_block_r"},{include:"#fenced_code_block_ruby"},{include:"#fenced_code_block_php"},{include:"#fenced_code_block_sql"},{include:"#fenced_code_block_vs_net"},{include:"#fenced_code_block_xml"},{include:"#fenced_code_block_xsl"},{include:"#fenced_code_block_yaml"},{include:"#fenced_code_block_dosbatch"},{include:"#fenced_code_block_clojure"},{include:"#fenced_code_block_coffee"},{include:"#fenced_code_block_c"},{include:"#fenced_code_block_cpp"},{include:"#fenced_code_block_diff"},{include:"#fenced_code_block_dockerfile"},{include:"#fenced_code_block_git_commit"},{include:"#fenced_code_block_git_rebase"},{include:"#fenced_code_block_go"},{include:"#fenced_code_block_groovy"},{include:"#fenced_code_block_pug"},{include:"#fenced_code_block_js"},{include:"#fenced_code_block_js_regexp"},{include:"#fenced_code_block_json"},{include:"#fenced_code_block_jsonc"},{include:"#fenced_code_block_less"},{include:"#fenced_code_block_objc"},{include:"#fenced_code_block_swift"},{include:"#fenced_code_block_scss"},{include:"#fenced_code_block_perl6"},{include:"#fenced_code_block_powershell"},{include:"#fenced_code_block_python"},{include:"#fenced_code_block_julia"},{include:"#fenced_code_block_regexp_python"},{include:"#fenced_code_block_rust"},{include:"#fenced_code_block_scala"},{include:"#fenced_code_block_shell"},{include:"#fenced_code_block_ts"},{include:"#fenced_code_block_tsx"},{include:"#fenced_code_block_csharp"},{include:"#fenced_code_block_fsharp"},{include:"#fenced_code_block_dart"},{include:"#fenced_code_block_handlebars"},{include:"#fenced_code_block_markdown"},{include:"#fenced_code_block_log"},{include:"#fenced_code_block_erlang"},{include:"#fenced_code_block_elixir"},{include:"#fenced_code_block_latex"},{include:"#fenced_code_block_bibtex"},{include:"#fenced_code_block_twig"},{include:"#fenced_code_block_unknown"}]},fenced_code_block_basic:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.html",patterns:[{include:"text.html.basic"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_bibtex:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.bibtex",patterns:[{include:"text.bibtex"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_c:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.c",patterns:[{include:"source.c"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_clojure:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(clj|cljs|clojure)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.clojure",patterns:[{include:"source.clojure"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_coffee:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.coffee",patterns:[{include:"source.coffee"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_cpp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cpp|c\\+\\+|cxx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.cpp source.cpp",patterns:[{include:"source.cpp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_csharp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cs|csharp|c#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.csharp",patterns:[{include:"source.cs"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_css:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(css|css.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.css",patterns:[{include:"source.css"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dart:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dart",patterns:[{include:"source.dart"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_diff:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.diff",patterns:[{include:"source.diff"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dockerfile:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dockerfile|Dockerfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dockerfile",patterns:[{include:"source.dockerfile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dosbatch:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat|batch)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dosbatch",patterns:[{include:"source.batchfile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_elixir:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(elixir)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.elixir",patterns:[{include:"source.elixir"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_erlang:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(erlang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.erlang",patterns:[{include:"source.erlang"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_fsharp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(fs|fsharp|f#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.fsharp",patterns:[{include:"source.fsharp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_git_commit:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.git_commit",patterns:[{include:"text.git-commit"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_git_rebase:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.git_rebase",patterns:[{include:"text.git-rebase"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_go:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(go|golang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.go",patterns:[{include:"source.go"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_groovy:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(groovy|gvy)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.groovy",patterns:[{include:"source.groovy"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_handlebars:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(handlebars|hbs)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.handlebars",patterns:[{include:"text.html.handlebars"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ini:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.ini",patterns:[{include:"source.ini"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_java:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.java",patterns:[{include:"source.java"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_js:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\{\\.js.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.javascript",patterns:[{include:"source.js"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_js_regexp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.js_regexp",patterns:[{include:"source.js.regexp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_json:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.json",patterns:[{include:"source.json"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_jsonc:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.jsonc",patterns:[{include:"source.json.comments"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_julia:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.julia",patterns:[{include:"source.julia"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_latex:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(latex|tex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.latex",patterns:[{include:"text.tex.latex"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_less:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.less",patterns:[{include:"source.css.less"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_log:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.log",patterns:[{include:"text.log"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_lua:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.lua",patterns:[{include:"source.lua"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_makefile:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.makefile",patterns:[{include:"source.makefile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_markdown:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(markdown|md)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.markdown",patterns:[{include:"text.html.markdown"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_objc:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.objc",patterns:[{include:"source.objc"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_perl:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.perl",patterns:[{include:"source.perl"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_perl6:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.perl6",patterns:[{include:"source.perl.6"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_php:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.php",patterns:[{include:"text.html.basic"},{include:"source.php"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_powershell:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(powershell|ps1|psm1|psd1|pwsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.powershell",patterns:[{include:"source.powershell"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_pug:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.pug",patterns:[{include:"text.pug"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_python:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\{\\.python.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.python",patterns:[{include:"source.python"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_r:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(R|r|s|S|Rprofile|\\{\\.r.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.r",patterns:[{include:"source.r"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_regexp_python:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.regexp_python",patterns:[{include:"source.regexp.python"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ruby:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.ruby",patterns:[{include:"source.ruby"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_rust:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.rust",patterns:[{include:"source.rust"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_scala:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scala|sbt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.scala",patterns:[{include:"source.scala"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_scss:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.scss",patterns:[{include:"source.css.scss"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_shell:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.shellscript",patterns:[{include:"source.shell"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_sql:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.sql",patterns:[{include:"source.sql"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_swift:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.swift",patterns:[{include:"source.swift"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ts:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(typescript|ts)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.typescript",patterns:[{include:"source.ts"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_tsx:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.typescriptreact",patterns:[{include:"source.tsx"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_twig:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.twig",patterns:[{include:"source.twig"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_unknown:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown"},fenced_code_block_vs_net:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.vs_net",patterns:[{include:"source.asp.vb.net"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_xml:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.xml",patterns:[{include:"text.xml"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_xsl:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xsl|xslt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.xsl",patterns:[{include:"text.xml.xsl"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_yaml:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(yaml|yml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.yaml",patterns:[{include:"source.yaml"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},frontMatter:{begin:"\\A-{3}\\s*$",contentName:"meta.embedded.block.frontmatter",end:"(^|\\G)-{3}|\\.{3}\\s*$",patterns:[{include:"source.yaml"}]},heading:{captures:{1:{patterns:[{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.6.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.5.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.4.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.3.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.2.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.1.markdown"}]}},match:"(?:^|\\G)[ ]{0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$",name:"markup.heading.markdown"},"heading-setext":{patterns:[{match:"^(={3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.1.markdown"},{match:"^(-{3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.2.markdown"}]},html:{patterns:[{begin:"(^|\\G)\\s*(<!--)",captures:{1:{name:"punctuation.definition.comment.html"},2:{name:"punctuation.definition.comment.html"}},end:"(-->)",name:"comment.block.html"},{begin:"(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|$|>)(?!.*?</(script|style|pre)>))",end:"(?i)(.*)((</)(script|style|pre)(>))",endCaptures:{1:{patterns:[{include:"text.html.derivative"}]},2:{name:"meta.tag.structure.$4.end.html"},3:{name:"punctuation.definition.tag.begin.html"},4:{name:"entity.name.tag.html"},5:{name:"punctuation.definition.tag.end.html"}},patterns:[{begin:"(\\s*|$)",patterns:[{include:"text.html.derivative"}],while:"(?i)^(?!.*</(script|style|pre)>)"}]},{begin:"(?i)(^|\\G)\\s*(?=</?[a-zA-Z]+[^\\s/>]*(\\s|$|/?>))",patterns:[{include:"text.html.derivative"}],while:"^(?!\\s*$)"},{begin:"(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|</[a-zA-Z0-9\\-]>)\\s*$)",patterns:[{include:"text.html.derivative"}],while:"^(?!\\s*$)"}]},"image-inline":{captures:{1:{name:"punctuation.definition.link.description.begin.markdown"},2:{name:"string.other.link.description.markdown"},4:{name:"punctuation.definition.link.description.end.markdown"},5:{name:"punctuation.definition.metadata.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.image.markdown"},9:{name:"punctuation.definition.link.markdown"},10:{name:"markup.underline.link.image.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"},18:{name:"string.other.link.description.title.markdown"},19:{name:"punctuation.definition.string.begin.markdown"},20:{name:"punctuation.definition.string.end.markdown"},21:{name:"punctuation.definition.metadata.markdown"}},match:`(?x) +(\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) + +(\\() + +[ \\t]* +( +(<)((?:\\\\[<>]|[^<>\\n])*)(>) +| ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*) +) +[ \\t]* +(?: +((\\().+?(\\))) +| ((").+?(")) +| ((').+?(')) +)? +\\s* +(\\)) +`,name:"meta.image.inline.markdown"},"image-ref":{captures:{1:{name:"punctuation.definition.link.description.begin.markdown"},2:{name:"string.other.link.description.markdown"},4:{name:"punctuation.definition.link.description.end.markdown"},5:{name:"punctuation.definition.constant.markdown"},6:{name:"constant.other.reference.link.markdown"},7:{name:"punctuation.definition.constant.markdown"}},match:"(\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(.*?)(\\])",name:"meta.image.reference.markdown"},inline:{patterns:[{include:"#ampersand"},{include:"#bracket"},{include:"#bold"},{include:"#italic"},{include:"#raw"},{include:"#strikethrough"},{include:"#escape"},{include:"#image-inline"},{include:"#image-ref"},{include:"#link-email"},{include:"#link-inet"},{include:"#link-inline"},{include:"#link-ref"},{include:"#link-ref-literal"},{include:"#link-ref-shortcut"}]},italic:{begin:`(?x) (?<open>(\\*(?=\\w)|(?<!\\w)\\*|(?<!\\w)\\b_))(?=\\S) +(?= +( +<[^>]*+> +| (?<raw>\`+)([^\`]|(?!(?<!\`)\\k<raw>(?!\`))\`)*+\\k<raw> + +| \\\\[\\\\\`*_{}\\[\\]()#.!+\\->]?+ +| \\[ +( +(?<square> +[^\\[\\]\\\\] +| \\\\. +| \\[ \\g<square>*+ \\] +)*+ +\\] +( +( +[ ]? +\\[[^\\]]*+\\] +) +| ( +\\( +[ \\t]*+ +<?(.*?)>? +[ \\t]*+ +( +(?<title>['"]) +(.*?) +\\k<title> +)? +\\) +) +) +) +| \\k<open>\\k<open> +| (?!(?<=\\S)\\k<open>). + +)++ +(?<=\\S)(?=_\\b|\\*)\\k<open> +) +`,captures:{1:{name:"punctuation.definition.italic.markdown"}},end:"(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))",name:"markup.italic.markdown",patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"},{include:"#strikethrough"}]},"link-def":{captures:{1:{name:"punctuation.definition.constant.markdown"},2:{name:"constant.other.reference.link.markdown"},3:{name:"punctuation.definition.constant.markdown"},4:{name:"punctuation.separator.key-value.markdown"},5:{name:"punctuation.definition.link.markdown"},6:{name:"markup.underline.link.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.markdown"},9:{name:"string.other.link.description.title.markdown"},10:{name:"punctuation.definition.string.begin.markdown"},11:{name:"punctuation.definition.string.end.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"}},match:`(?x) +\\s* +(\\[)([^]]+?)(\\])(:) +[ \\t]* +(?:(<)((?:\\\\[<>]|[^<>\\n])*)(>)|(\\S+?)) +[ \\t]* +(?: +((\\().+?(\\))) +| ((").+?(")) +| ((').+?(')) +)? +\\s* +$ +`,name:"meta.link.reference.def.markdown"},"link-email":{captures:{1:{name:"punctuation.definition.link.markdown"},2:{name:"markup.underline.link.markdown"},4:{name:"punctuation.definition.link.markdown"}},match:"(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)(>)",name:"meta.link.email.lt-gt.markdown"},"link-inet":{captures:{1:{name:"punctuation.definition.link.markdown"},2:{name:"markup.underline.link.markdown"},3:{name:"punctuation.definition.link.markdown"}},match:"(<)((?:https?|ftp)://.*?)(>)",name:"meta.link.inet.markdown"},"link-inline":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown",patterns:[{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#strikethrough"},{include:"#image-inline"}]},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.metadata.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.markdown"},9:{name:"punctuation.definition.link.markdown"},10:{name:"markup.underline.link.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"},18:{name:"string.other.link.description.title.markdown"},19:{name:"punctuation.definition.string.begin.markdown"},20:{name:"punctuation.definition.string.end.markdown"},21:{name:"punctuation.definition.metadata.markdown"}},match:`(?x) +(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) + +(\\() + +[ \\t]* +( +(<)((?:\\\\[<>]|[^<>\\n])*)(>) +| ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*) +) +[ \\t]* + +(?: +((\\()[^()]*(\\))) +| ((")[^"]*(")) +| ((')[^']*(')) +)? +\\s* +(\\)) +`,name:"meta.link.inline.markdown"},"link-ref":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown",patterns:[{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#strikethrough"},{include:"#image-inline"}]},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.constant.begin.markdown"},6:{name:"constant.other.reference.link.markdown"},7:{name:"punctuation.definition.constant.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])(\\[)([^\\]]*+)(\\])",name:"meta.link.reference.markdown"},"link-ref-literal":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown"},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.constant.begin.markdown"},6:{name:"punctuation.definition.constant.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(\\])",name:"meta.link.reference.literal.markdown"},"link-ref-shortcut":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown"},3:{name:"punctuation.definition.link.title.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?:[^\\s\\[\\]\\\\]|\\\\[\\[\\]])+?)((?<!\\\\)\\])",name:"meta.link.reference.markdown"},list_paragraph:{begin:"(^|\\G)(?=\\S)(?![*+->]\\s|[0-9]+\\.\\s)",name:"meta.paragraph.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"},{include:"#heading-setext"}],while:"(^|\\G)(?!\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\t]*$\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\.)"},lists:{patterns:[{begin:"(^|\\G)([ ]{0,3})([*+-])([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},comment:"Currently does not support un-indented second lines.",name:"markup.list.unnumbered.markdown",patterns:[{include:"#block"},{include:"#list_paragraph"}],while:"((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"},{begin:"(^|\\G)([ ]{0,3})([0-9]+[\\.\\)])([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},name:"markup.list.numbered.markdown",patterns:[{include:"#block"},{include:"#list_paragraph"}],while:"((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"}]},paragraph:{begin:"(^|\\G)[ ]{0,3}(?=[^ \\t\\n])",name:"meta.paragraph.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"},{include:"#heading-setext"}],while:"(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=[^ \\t\\n]))"},raw:{captures:{1:{name:"punctuation.definition.raw.markdown"},3:{name:"punctuation.definition.raw.markdown"}},match:"(`+)((?:[^`]|(?!(?<!`)\\1(?!`))`)*+)(\\1)",name:"markup.inline.raw.string.markdown"},raw_block:{begin:"(^|\\G)([ ]{4}|\\t)",name:"markup.raw.block.markdown",while:"(^|\\G)([ ]{4}|\\t)"},separator:{match:"(^|\\G)[ ]{0,3}([\\*\\-\\_])([ ]{0,2}\\2){2,}[ \\t]*$\\n?",name:"meta.separator.markdown"},strikethrough:{captures:{1:{name:"punctuation.definition.strikethrough.markdown"},2:{patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"}]},3:{name:"punctuation.definition.strikethrough.markdown"}},match:"(?<!\\\\)(~{2,})((?:[^~]|(?!(?<![~\\\\])\\1(?!~))~)*+)(\\1)",name:"markup.strikethrough.markdown"},table:{begin:"(^|\\G)(\\|)(?=[^|].+\\|\\s*$)",beginCaptures:{2:{name:"punctuation.definition.table.markdown"}},name:"markup.table.markdown",patterns:[{match:"\\|",name:"punctuation.definition.table.markdown"},{captures:{1:{name:"punctuation.separator.table.markdown"}},match:"(?<=\\|)\\s*(:?-+:?)\\s*(?=\\|)"},{captures:{1:{patterns:[{include:"#inline"}]}},match:"(?<=\\|)\\s*(?=\\S)((\\\\\\||[^|])+)(?<=\\S)\\s*(?=\\|)"}],while:"(^|\\G)(?=\\|)"}},scopeName:"text.html.markdown",embeddedLangs:[],aliases:["md"],embeddedLangsLazy:["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","less","objective-c","swift","scss","raku","powershell","python","julia","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","log","erlang","elixir","latex","bibtex","html-derivative"]});var n=[e];export{n as default}; diff --git a/assets/chunks/marko.DXVuwHdi.js b/assets/chunks/marko.DXVuwHdi.js new file mode 100644 index 000000000..8d945176f --- /dev/null +++ b/assets/chunks/marko.DXVuwHdi.js @@ -0,0 +1,8 @@ +import e from"./css.CbYhyuC0.js";import n from"./less.Du6_OKDb.js";import t from"./scss.Dr-_CcBd.js";import s from"./javascript.Dch3xQiY.js";const a=Object.freeze({displayName:"Marko",fileTypes:["marko"],name:"marko",patterns:[{begin:"^\\s*(style)\\s+(\\{)",beginCaptures:{1:{name:"storage.type.marko.css"},2:{name:"punctuation.section.scope.begin.marko.css"}},comment:"CSS style block, eg: style { color: green }",contentName:"source.css",end:"\\}",endCaptures:{0:{name:"punctuation.section.scope.end.marko.css"}},name:"meta.embedded.css",patterns:[{include:"source.css"}]},{begin:"^\\s*(style)\\.(less)\\s+(\\{)",beginCaptures:{1:{name:"storage.type.marko.css"},2:{name:"storage.modifier.marko.css"},3:{name:"punctuation.section.scope.begin.marko.css"}},comment:"Less style block, eg: style.less { color: green }",contentName:"source.less",end:"\\}",endCaptures:{0:{name:"punctuation.section.scope.end.marko.css"}},name:"meta.embedded.less",patterns:[{include:"source.css.less"}]},{begin:"^\\s*(style)\\.(scss)\\s+(\\{)",beginCaptures:{1:{name:"storage.type.marko.css"},2:{name:"storage.modifier.marko.css"},3:{name:"punctuation.section.scope.begin.marko.css"}},comment:"SCSS style block, eg: style.scss { color: green }",contentName:"source.scss",end:"\\}",endCaptures:{0:{name:"punctuation.section.scope.end.marko.css"}},name:"meta.embedded.scss",patterns:[{include:"source.css.scss"}]},{begin:"^\\s*(?:(static )|(?=(?:class|import|export) ))",beginCaptures:{1:{name:"keyword.control.static.marko"}},comment:"Top level blocks parsed as JavaScript",contentName:"source.js",end:"(?=\\n|$)",name:"meta.embedded.js",patterns:[{include:"#javascript-statement"}]},{include:"#content-concise-mode"}],repository:{attrs:{patterns:[{applyEndPatternLast:1,begin:"(?:\\s+|,)(?:(key|on[a-zA-Z0-9_$-]+|[a-zA-Z0-9_$]+Change|no-update(?:-body)?(?:-if)?)|([a-zA-Z0-9_$][a-zA-Z0-9_$-]*))(:[a-zA-Z0-9_$][a-zA-Z0-9_$-]*)?",beginCaptures:{1:{name:"support.type.attribute-name.marko"},2:{name:"entity.other.attribute-name.marko"},3:{name:"support.function.attribute-name.marko"}},comment:"Attribute with optional value",end:"(?=.|$)",name:"meta.marko-attribute",patterns:[{include:"#html-args-or-method"},{applyEndPatternLast:1,begin:"\\s*(:?=)\\s*",beginCaptures:{1:{patterns:[{include:"source.js"}]}},comment:"Attribute value",contentName:"source.js",end:"(?=.|$)",name:"meta.embedded.js",patterns:[{include:"#javascript-expression"}]}]},{applyEndPatternLast:1,begin:"(?:\\s+|,)\\.\\.\\.",beginCaptures:{1:{name:"keyword.operator.spread.marko"}},comment:"A ...spread attribute",contentName:"source.js",end:"(?=.|$)",name:"meta.marko-spread-attribute",patterns:[{include:"#javascript-expression"}]},{begin:"\\s*(,(?!,))",captures:{1:{patterns:[{include:"source.js"}]}},comment:"Consume any whitespace after a comma",end:"(?!\\S)"},{include:"#javascript-comment-multiline"},{include:"#invalid"}]},"concise-html-block":{begin:"\\s*(--+)\\s*$",beginCaptures:{2:{name:"punctuation.section.scope.begin.marko"}},comment:"--- HTML block within concise mode content. ---",end:"\\1",endCaptures:{1:{name:"punctuation.section.scope.end.marko"}},name:"meta.section.marko-html-block",patterns:[{include:"#content-html-mode"}]},"concise-html-line":{captures:{1:{name:"punctuation.section.scope.begin.marko"},2:{patterns:[{include:"#html-comments"},{include:"#tag-html"},{match:"\\\\.",name:"string"},{include:"#placeholder"},{match:".+?",name:"string"}]}},comment:"-- HTML line within concise mode content. (content-html-mode w/o scriptlet)",match:"\\s*(--+)(?=\\s+\\S)(.*$)",name:"meta.section.marko-html-line"},"concise-open-tag-content":{patterns:[{include:"#tag-before-attrs"},{begin:"\\s*\\[",beginCaptures:{0:{name:"punctuation.section.scope.begin.marko"}},end:"]",endCaptures:{0:{name:"punctuation.section.scope.end.marko"}},patterns:[{include:"#attrs"},{include:"#invalid"}]},{begin:"(?!^)(?= )",end:"(?=--)|(?<!,)(?=\\n)",patterns:[{include:"#attrs"},{include:"#invalid"}]}]},"concise-script-block":{begin:"(\\s+)(--+)\\s*$",beginCaptures:{2:{name:"punctuation.section.scope.begin.marko"}},comment:"--- Embedded concise script content block. ---",end:"(\\2)|(?=^(?!\\1)\\s*\\S)",endCaptures:{1:{name:"punctuation.section.scope.end.marko"}},name:"meta.section.marko-script-block",patterns:[{include:"#content-embedded-script"}]},"concise-script-line":{applyEndPatternLast:1,begin:"\\s*(--+)",beginCaptures:{1:{name:"punctuation.section.scope.begin.marko"}},comment:"-- Embedded concise script content line.",end:"$",name:"meta.section.marko-script-line",patterns:[{include:"#content-embedded-script"}]},"concise-style-block":{begin:"(\\s+)(--+)\\s*$",beginCaptures:{2:{name:"punctuation.section.scope.begin.marko"}},comment:"--- Embedded concise style content block. ---",contentName:"source.css",end:"(\\2)|(?=^(?!\\1)\\s*\\S)",endCaptures:{1:{name:"punctuation.section.scope.end.marko"}},name:"meta.section.marko-style-block",patterns:[{include:"#content-embedded-style"}]},"concise-style-block-less":{begin:"(\\s+)(--+)\\s*$",beginCaptures:{2:{name:"punctuation.section.scope.begin.marko"}},comment:"--- Embedded concise style content block. ---",contentName:"source.less",end:"(\\2)|(?=^(?!\\1)\\s*\\S)",endCaptures:{1:{name:"punctuation.section.scope.end.marko"}},name:"meta.section.marko-style-block",patterns:[{include:"#content-embedded-style-less"}]},"concise-style-block-scss":{begin:"(\\s+)(--+)\\s*$",beginCaptures:{2:{name:"punctuation.section.scope.begin.marko"}},comment:"--- Embedded concise style content block. ---",contentName:"source.scss",end:"(\\2)|(?=^(?!\\1)\\s*\\S)",endCaptures:{1:{name:"punctuation.section.scope.end.marko"}},name:"meta.section.marko-style-block",patterns:[{include:"#content-embedded-style-scss"}]},"concise-style-line":{applyEndPatternLast:1,begin:"\\s*(--+)",beginCaptures:{1:{name:"punctuation.section.scope.begin.marko"}},comment:"-- Embedded concise style content line.",contentName:"source.css",end:"$",name:"meta.section.marko-style-line",patterns:[{include:"#content-embedded-style"}]},"concise-style-line-less":{applyEndPatternLast:1,begin:"\\s*(--+)",beginCaptures:{1:{name:"punctuation.section.scope.begin.marko"}},comment:"-- Embedded concise style content line.",contentName:"source.less",end:"$",name:"meta.section.marko-style-line",patterns:[{include:"#content-embedded-style-less"}]},"concise-style-line-scss":{applyEndPatternLast:1,begin:"\\s*(--+)",beginCaptures:{1:{name:"punctuation.section.scope.begin.marko"}},comment:"-- Embedded concise style content line.",contentName:"source.scss",end:"$",name:"meta.section.marko-style-line",patterns:[{include:"#content-embedded-style-scss"}]},"content-concise-mode":{comment:"Concise mode content block.",name:"meta.marko-concise-content",patterns:[{include:"#scriptlet"},{include:"#javascript-comments"},{include:"#html-comments"},{include:"#concise-html-block"},{include:"#concise-html-line"},{include:"#tag-html"},{comment:"A concise html tag.",patterns:[{begin:"^(\\s*)(?=style\\.less\\b)",comment:"Concise style tag less",patterns:[{include:"#concise-open-tag-content"},{include:"#concise-style-block-less"},{include:"#concise-style-line-less"}],while:"(?=^\\1\\s+(\\S|$))"},{begin:"^(\\s*)(?=style\\.scss\\b)",comment:"Concise style tag scss",patterns:[{include:"#concise-open-tag-content"},{include:"#concise-style-block-scss"},{include:"#concise-style-line-scss"}],while:"(?=^\\1\\s+(\\S|$))"},{begin:"^(\\s*)(?=style\\b)",comment:"Concise style tag",patterns:[{include:"#concise-open-tag-content"},{include:"#concise-style-block"},{include:"#concise-style-line"}],while:"(?=^\\1\\s+(\\S|$))"},{begin:"^(\\s*)(?=script\\b)",comment:"Concise script tag",patterns:[{include:"#concise-open-tag-content"},{include:"#concise-script-block"},{include:"#concise-script-line"}],while:"(?=^\\1\\s+(\\S|$))"},{begin:"^(\\s*)(?=[a-zA-Z0-9_$@])",comment:"Normal concise tag",patterns:[{include:"#concise-open-tag-content"},{include:"#content-concise-mode"}],while:"(?=^\\1\\s+(\\S|$))"}]},{include:"#invalid"}]},"content-embedded-script":{name:"meta.embedded.js",patterns:[{include:"#placeholder"},{include:"source.js"}]},"content-embedded-style":{name:"meta.embedded.css",patterns:[{include:"#placeholder"},{include:"source.css"}]},"content-embedded-style-less":{name:"meta.embedded.css.less",patterns:[{include:"#placeholder"},{include:"source.css.less"}]},"content-embedded-style-scss":{name:"meta.embedded.css.scss",patterns:[{include:"#placeholder"},{include:"source.css.scss"}]},"content-html-mode":{comment:"HTML mode content block.",patterns:[{include:"#scriptlet"},{include:"#html-comments"},{include:"#tag-html"},{match:"\\\\.",name:"string"},{include:"#placeholder"},{match:".+?",name:"string"}]},"html-args-or-method":{patterns:[{include:"#javascript-args"},{begin:"(?<=\\))\\s*(?=\\{)",comment:"Attribute method shorthand following parens",contentName:"source.js",end:"(?<=\\})",name:"meta.embedded.js",patterns:[{include:"source.js"}]}]},"html-comments":{patterns:[{begin:"\\s*(<!(--)?)",beginCaptures:{1:{name:"punctuation.definition.comment.marko"}},comment:"HTML comments, doctypes & cdata",end:"\\2>",endCaptures:{0:{name:"punctuation.definition.comment.marko"}},name:"comment.block.marko"},{begin:"\\s*(<html-comment>)",beginCaptures:{1:{name:"punctuation.definition.comment.marko"}},comment:"Preserved HTML comment tag",end:"</html-comment>",endCaptures:{0:{name:"punctuation.definition.comment.marko"}},name:"comment.block.marko"}]},invalid:{match:"[^\\s]",name:"invalid.illegal.character-not-allowed-here.marko"},"javascript-args":{begin:"(?=\\()",comment:"Javascript style arguments",contentName:"source.js",end:"(?<=\\))",name:"meta.embedded.js",patterns:[{include:"source.js"}]},"javascript-comment-line":{captures:{0:{patterns:[{include:"source.js"}]}},comment:"JavaScript // single line comment",contentName:"source.js",match:"\\s*//.*$"},"javascript-comment-multiline":{begin:"\\s*(?=/\\*)",comment:"JavaScript /* block comment */",contentName:"source.js",end:"(?<=\\*/)",patterns:[{include:"source.js"}]},"javascript-comments":{patterns:[{include:"#javascript-comment-multiline"},{include:"#javascript-comment-line"}]},"javascript-enclosed":{comment:"Matches JavaScript content and ensures enclosed blocks are matched.",patterns:[{include:"#javascript-comments"},{include:"#javascript-args"},{begin:"(?={)",end:"(?<=})",patterns:[{include:"source.js"}]},{begin:"(?=\\[)",end:"(?<=])",patterns:[{include:"source.js"}]},{begin:'(?=")',end:'(?<=")',patterns:[{include:"source.js"}]},{begin:"(?=')",end:"(?<=')",patterns:[{include:"source.js"}]},{begin:"(?=`)",end:"(?<=`)",patterns:[{include:"source.js"}]},{begin:"/(?!<[\\]})A-Z0-9.<%]\\s*/)(?!/?>|$)",captures:{0:{name:"string.regexp.js"}},contentName:"source.js",end:"/[gimsuy]*",patterns:[{include:"source.js#regexp"},{include:"source.js"}]},{begin:`(?x)\\s*(?: +(?:\\b(?:new|typeof|instanceof|in)\\b)| +\\&\\&|\\|\\|| +[\\^|&]| +[!=]=|[!=]==|<|<[=<]|=>| +[?:]| +[-+*%](?!-) +)`,captures:{0:{patterns:[{include:"source.js"}]}},end:"(?=\\S)"}]},"javascript-expression":{patterns:[{include:"#javascript-enclosed"},{captures:{0:{patterns:[{include:"source.js"}]}},comment:"Match identifiers and member expressions",match:"[0-9a-zA-Z$_.]+"}]},"javascript-statement":{patterns:[{include:"#javascript-enclosed"},{include:"source.js"}]},"open-tag-content":{patterns:[{include:"#tag-before-attrs"},{begin:"(?= )",comment:"Attributes begin after the first space within the tag name",end:"(?=/?>)",patterns:[{include:"#attrs"}]}]},placeholder:{begin:"\\$!?{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},comment:"${ } placeholder",contentName:"source.js",end:"}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},patterns:[{include:"source.js"}]},scriptlet:{begin:"^\\s*(\\$)\\s+",beginCaptures:{1:{name:"keyword.control.scriptlet.marko"}},comment:"An inline JavaScript scriptlet.",contentName:"source.js",end:"$",name:"meta.embedded.js",patterns:[{include:"#javascript-statement"}]},"tag-before-attrs":{comment:"Everything in a tag before the attributes content",patterns:[{include:"#tag-name"},{comment:"Shorthand class or ID attribute",match:"[#.][a-zA-Z0-9_$][a-zA-Z0-9_$-]*",name:"entity.other.attribute-name.marko"},{begin:"/(?!/)",beginCaptures:{0:{name:"punctuation.separator.key-value.marko"}},comment:"Variable for a tag",contentName:"source.js",end:"(?=:?\\=|\\s|>|$|\\||\\(|/)",name:"meta.embedded.js",patterns:[{comment:"Match identifiers",match:"[a-zA-Z$_][0-9a-zA-Z$_]*",name:"variable.other.constant.object.js"},{include:"source.js#object-binding-pattern"},{include:"source.js#array-binding-pattern"},{include:"source.js#var-single-variable"},{include:"#javascript-expression"}]},{applyEndPatternLast:1,begin:"\\s*(:?=)\\s*",beginCaptures:{1:{patterns:[{include:"source.js"}]}},comment:"Default attribute value",contentName:"source.js",end:"(?=.|$)",name:"meta.embedded.js",patterns:[{include:"#javascript-expression"}]},{begin:"\\|",beginCaptures:{0:{name:"punctuation.section.scope.begin.marko"}},comment:"Parameters for a tag",end:"\\|",endCaptures:{0:{name:"punctuation.section.scope.end.marko"}},patterns:[{include:"source.js#function-parameters-body"},{include:"source.js"}]},{include:"#html-args-or-method"}]},"tag-html":{comment:"Matches an HTML tag and its contents",patterns:[{begin:"\\s*(<)(?=(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.end.marko"}},comment:"HTML void elements",end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"}]},{begin:"\\s*(<)(?=style\\.less\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.marko"}},comment:"HTML style tag with less",end:"/>|(?<=\\>)",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},comment:"Style body content",contentName:"source.less",end:"\\s*(</)(style)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.marko"},2:{patterns:[{include:"#tag-name"}]},3:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#content-embedded-style-less"}]}]},{begin:"\\s*(<)(?=style\\.scss\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.marko"}},comment:"HTML style tag with scss",end:"/>|(?<=\\>)",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},comment:"Style body content",contentName:"source.less",end:"\\s*(</)(style)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.marko"},2:{patterns:[{include:"#tag-name"}]},3:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#content-embedded-style-scss"}]}]},{begin:"\\s*(<)(?=style\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.marko"}},comment:"HTML style tag",end:"/>|(?<=\\>)",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},comment:"Style body content",contentName:"source.css",end:"\\s*(</)(style)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.marko"},2:{patterns:[{include:"#tag-name"}]},3:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#content-embedded-style"}]}]},{begin:"\\s*(<)(?=script\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.marko"}},comment:"HTML script tag",end:"/>|(?<=\\>)",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},comment:"Script body content",contentName:"source.js",end:"\\s*(</)(script)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.marko"},2:{patterns:[{include:"#tag-name"}]},3:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#content-embedded-script"}]}]},{begin:"\\s*(<)(?=[a-zA-Z0-9_$@])",beginCaptures:{1:{name:"punctuation.definition.tag.begin.marko"}},comment:"HTML normal tag",end:"/>|(?<=\\>)",endCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#open-tag-content"},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.marko"}},comment:"Body content",end:"\\s*(</)([a-zA-Z0-9_$:@-]+)?(.*?)(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.marko"},2:{patterns:[{include:"#tag-name"}]},3:{patterns:[{include:"#invalid"}]},4:{name:"punctuation.definition.tag.end.marko"}},patterns:[{include:"#content-html-mode"}]}]}]},"tag-name":{patterns:[{begin:"\\${",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},comment:"Dynamic tag.",end:"}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},patterns:[{include:"source.js"}]},{captures:{1:{name:"entity.name.tag.marko"},2:{name:"storage.type.marko.css"},3:{patterns:[{comment:"Core tag.",match:"(attrs|return|import)(?=\\b)",name:"support.type.builtin.marko"},{comment:"Core tag.",match:"(for|if|while|else-if|else|macro|tag|await|let|const|effect|set|get|id|lifecycle)(?=\\b)",name:"support.function.marko"},{comment:"Attribute tag.",match:"@.+",name:"entity.other.attribute-name.marko"},{comment:"Native or userland tag.",match:".+",name:"entity.name.tag.marko"}]}},match:"(style)\\.([a-zA-Z0-9$_-]+(?:\\.[a-zA-Z0-9$_-]+)*)|([a-zA-Z0-9_$@][a-zA-Z0-9_$@:-]*)"}]}},scopeName:"text.marko",embeddedLangs:["css","less","scss","javascript"]});var r=[...e,...n,...t,...s,a];export{r as default}; diff --git a/assets/chunks/material-theme-darker.BrGg7AAd.js b/assets/chunks/material-theme-darker.BrGg7AAd.js new file mode 100644 index 000000000..8f6a56793 --- /dev/null +++ b/assets/chunks/material-theme-darker.BrGg7AAd.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#80CBC4","activityBar.background":"#212121","activityBar.border":"#21212160","activityBar.dropBackground":"#f0717880","activityBar.foreground":"#EEFFFF","activityBarBadge.background":"#80CBC4","activityBarBadge.foreground":"#000000","badge.background":"#00000030","badge.foreground":"#545454","breadcrumb.activeSelectionForeground":"#80CBC4","breadcrumb.background":"#212121","breadcrumb.focusForeground":"#EEFFFF","breadcrumb.foreground":"#676767","breadcrumbPicker.background":"#212121","button.background":"#61616150","button.foreground":"#ffffff","debugConsole.errorForeground":"#f07178","debugConsole.infoForeground":"#89DDFF","debugConsole.warningForeground":"#FFCB6B","debugToolBar.background":"#212121","diffEditor.insertedTextBackground":"#89DDFF20","diffEditor.removedTextBackground":"#ff9cac20","dropdown.background":"#212121","dropdown.border":"#FFFFFF10","editor.background":"#212121","editor.findMatchBackground":"#000000","editor.findMatchBorder":"#80CBC4","editor.findMatchHighlight":"#EEFFFF","editor.findMatchHighlightBackground":"#00000050","editor.findMatchHighlightBorder":"#ffffff30","editor.findRangeHighlightBackground":"#FFCB6B30","editor.foreground":"#EEFFFF","editor.lineHighlightBackground":"#00000050","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#FFFFFF0d","editor.selectionBackground":"#61616150","editor.selectionHighlightBackground":"#FFCC0020","editor.wordHighlightBackground":"#ff9cac30","editor.wordHighlightStrongBackground":"#C3E88D30","editorBracketMatch.background":"#212121","editorBracketMatch.border":"#FFCC0050","editorCursor.foreground":"#FFCC00","editorError.foreground":"#f0717870","editorGroup.border":"#00000030","editorGroup.dropBackground":"#f0717880","editorGroup.focusedEmptyBorder":"#f07178","editorGroupHeader.tabsBackground":"#212121","editorGutter.addedBackground":"#C3E88D60","editorGutter.deletedBackground":"#f0717860","editorGutter.modifiedBackground":"#82AAFF60","editorHoverWidget.background":"#212121","editorHoverWidget.border":"#FFFFFF10","editorIndentGuide.activeBackground":"#424242","editorIndentGuide.background":"#42424270","editorInfo.foreground":"#82AAFF70","editorLineNumber.activeForeground":"#676767","editorLineNumber.foreground":"#424242","editorLink.activeForeground":"#EEFFFF","editorMarkerNavigation.background":"#EEFFFF05","editorOverviewRuler.border":"#212121","editorOverviewRuler.errorForeground":"#f0717840","editorOverviewRuler.findMatchForeground":"#80CBC4","editorOverviewRuler.infoForeground":"#82AAFF40","editorOverviewRuler.warningForeground":"#FFCB6B40","editorRuler.foreground":"#424242","editorSuggestWidget.background":"#212121","editorSuggestWidget.border":"#FFFFFF10","editorSuggestWidget.foreground":"#EEFFFF","editorSuggestWidget.highlightForeground":"#80CBC4","editorSuggestWidget.selectedBackground":"#00000050","editorWarning.foreground":"#FFCB6B70","editorWhitespace.foreground":"#EEFFFF40","editorWidget.background":"#212121","editorWidget.border":"#80CBC4","editorWidget.resizeBorder":"#80CBC4","extensionBadge.remoteForeground":"#EEFFFF","extensionButton.prominentBackground":"#C3E88D90","extensionButton.prominentForeground":"#EEFFFF","extensionButton.prominentHoverBackground":"#C3E88D",focusBorder:"#FFFFFF00",foreground:"#EEFFFF","gitDecoration.conflictingResourceForeground":"#FFCB6B90","gitDecoration.deletedResourceForeground":"#f0717890","gitDecoration.ignoredResourceForeground":"#67676790","gitDecoration.modifiedResourceForeground":"#82AAFF90","gitDecoration.untrackedResourceForeground":"#C3E88D90","input.background":"#2B2B2B","input.border":"#FFFFFF10","input.foreground":"#EEFFFF","input.placeholderForeground":"#EEFFFF60","inputOption.activeBackground":"#EEFFFF30","inputOption.activeBorder":"#EEFFFF30","inputValidation.errorBorder":"#f07178","inputValidation.infoBorder":"#82AAFF","inputValidation.warningBorder":"#FFCB6B","list.activeSelectionBackground":"#212121","list.activeSelectionForeground":"#80CBC4","list.dropBackground":"#f0717880","list.focusBackground":"#EEFFFF20","list.focusForeground":"#EEFFFF","list.highlightForeground":"#80CBC4","list.hoverBackground":"#212121","list.hoverForeground":"#FFFFFF","list.inactiveSelectionBackground":"#00000030","list.inactiveSelectionForeground":"#80CBC4","listFilterWidget.background":"#00000030","listFilterWidget.noMatchesOutline":"#00000030","listFilterWidget.outline":"#00000030","menu.background":"#212121","menu.foreground":"#EEFFFF","menu.selectionBackground":"#00000050","menu.selectionBorder":"#00000030","menu.selectionForeground":"#80CBC4","menu.separatorBackground":"#EEFFFF","menubar.selectionBackground":"#00000030","menubar.selectionBorder":"#00000030","menubar.selectionForeground":"#80CBC4","notebook.focusedCellBorder":"#80CBC4","notebook.inactiveFocusedCellBorder":"#80CBC450","notificationLink.foreground":"#80CBC4","notifications.background":"#212121","notifications.foreground":"#EEFFFF","panel.background":"#212121","panel.border":"#21212160","panel.dropBackground":"#EEFFFF","panelTitle.activeBorder":"#80CBC4","panelTitle.activeForeground":"#FFFFFF","panelTitle.inactiveForeground":"#EEFFFF","peekView.border":"#00000030","peekViewEditor.background":"#EEFFFF05","peekViewEditor.matchHighlightBackground":"#61616150","peekViewEditorGutter.background":"#EEFFFF05","peekViewResult.background":"#EEFFFF05","peekViewResult.matchHighlightBackground":"#61616150","peekViewResult.selectionBackground":"#67676770","peekViewTitle.background":"#EEFFFF05","peekViewTitleDescription.foreground":"#EEFFFF60","pickerGroup.border":"#FFFFFF1a","pickerGroup.foreground":"#80CBC4","progressBar.background":"#80CBC4","quickInput.background":"#212121","quickInput.foreground":"#676767","quickInput.list.focusBackground":"#EEFFFF20","sash.hoverBorder":"#80CBC450","scrollbar.shadow":"#00000030","scrollbarSlider.activeBackground":"#80CBC4","scrollbarSlider.background":"#EEFFFF20","scrollbarSlider.hoverBackground":"#EEFFFF10","selection.background":"#00000080","settings.checkboxBackground":"#212121","settings.checkboxForeground":"#EEFFFF","settings.dropdownBackground":"#212121","settings.dropdownForeground":"#EEFFFF","settings.headerForeground":"#80CBC4","settings.modifiedItemIndicator":"#80CBC4","settings.numberInputBackground":"#212121","settings.numberInputForeground":"#EEFFFF","settings.textInputBackground":"#212121","settings.textInputForeground":"#EEFFFF","sideBar.background":"#212121","sideBar.border":"#21212160","sideBar.foreground":"#676767","sideBarSectionHeader.background":"#212121","sideBarSectionHeader.border":"#21212160","sideBarTitle.foreground":"#EEFFFF","statusBar.background":"#212121","statusBar.border":"#21212160","statusBar.debuggingBackground":"#C792EA","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#616161","statusBar.noFolderBackground":"#212121","statusBarItem.activeBackground":"#f0717880","statusBarItem.hoverBackground":"#54545420","statusBarItem.remoteBackground":"#80CBC4","statusBarItem.remoteForeground":"#000000","tab.activeBackground":"#212121","tab.activeBorder":"#80CBC4","tab.activeForeground":"#FFFFFF","tab.activeModifiedBorder":"#676767","tab.border":"#212121","tab.inactiveBackground":"#212121","tab.inactiveForeground":"#676767","tab.inactiveModifiedBorder":"#904348","tab.unfocusedActiveBorder":"#545454","tab.unfocusedActiveForeground":"#EEFFFF","tab.unfocusedActiveModifiedBorder":"#c05a60","tab.unfocusedInactiveModifiedBorder":"#904348","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#545454","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#89DDFF","terminal.ansiBrightGreen":"#C3E88D","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#f07178","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#FFCB6B","terminal.ansiCyan":"#89DDFF","terminal.ansiGreen":"#C3E88D","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#f07178","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#FFCB6B","terminalCursor.background":"#000000","terminalCursor.foreground":"#FFCB6B","textLink.activeForeground":"#EEFFFF","textLink.foreground":"#80CBC4","titleBar.activeBackground":"#212121","titleBar.activeForeground":"#EEFFFF","titleBar.border":"#21212160","titleBar.inactiveBackground":"#212121","titleBar.inactiveForeground":"#676767","tree.indentGuidesStroke":"#424242","widget.shadow":"#00000030"},displayName:"Material Theme Darker",name:"material-theme-darker",semanticHighlighting:!0,tokenColors:[{settings:{background:"#212121",foreground:"#EEFFFF"}},{scope:"string",settings:{foreground:"#C3E88D"}},{scope:"punctuation, constant.other.symbol",settings:{foreground:"#89DDFF"}},{scope:"constant.character.escape, text.html constant.character.entity.named",settings:{foreground:"#EEFFFF"}},{scope:"constant.language.boolean",settings:{foreground:"#ff9cac"}},{scope:"constant.numeric",settings:{foreground:"#F78C6C"}},{scope:"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",settings:{foreground:"#EEFFFF"}},{scope:"keyword.other",settings:{foreground:"#F78C6C"}},{scope:"keyword, modifier, variable.language.this, support.type.object, constant.language",settings:{foreground:"#89DDFF"}},{scope:"entity.name.function, support.function",settings:{foreground:"#82AAFF"}},{scope:"storage.type, storage.modifier, storage.control",settings:{foreground:"#C792EA"}},{scope:"support.module, support.node",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"support.type, constant.other.key",settings:{foreground:"#FFCB6B"}},{scope:"entity.name.type, entity.other.inherited-class, entity.other",settings:{foreground:"#FFCB6B"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#545454"}},{scope:"comment punctuation.definition.comment, string.quoted.docstring",settings:{fontStyle:"italic",foreground:"#545454"}},{scope:"punctuation",settings:{foreground:"#89DDFF"}},{scope:"entity.name, entity.name.type.class, support.type, support.class, meta.use",settings:{foreground:"#FFCB6B"}},{scope:"variable.object.property, meta.field.declaration entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.definition.method entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.function entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",settings:{foreground:"#89DDFF"}},{scope:"meta.embedded, source.groovy.embedded, meta.template.expression",settings:{foreground:"#EEFFFF"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#f07178"}},{scope:"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",settings:{foreground:"#f07178"}},{scope:"constant.language.json",settings:{foreground:"#89DDFF"}},{scope:"entity.other.attribute-name.class",settings:{foreground:"#FFCB6B"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#F78C6C"}},{scope:"source.css entity.name.tag",settings:{foreground:"#FFCB6B"}},{scope:"support.type.property-name.css",settings:{foreground:"#B2CCD6"}},{scope:"meta.tag, punctuation.definition.tag",settings:{foreground:"#89DDFF"}},{scope:"entity.name.tag",settings:{foreground:"#f07178"}},{scope:"entity.other.attribute-name",settings:{foreground:"#C792EA"}},{scope:"punctuation.definition.entity.html",settings:{foreground:"#EEFFFF"}},{scope:"markup.heading",settings:{foreground:"#89DDFF"}},{scope:"text.html.markdown meta.link.inline, meta.link.reference",settings:{foreground:"#f07178"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#89DDFF"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:"markup.bold markup.italic, markup.italic markup.bold",settings:{fontStyle:"italic bold",foreground:"#f07178"}},{scope:"markup.fenced_code.block.markdown punctuation.definition.markdown",settings:{foreground:"#C3E88D"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#C3E88D"}},{scope:"keyword.other.definition.ini",settings:{foreground:"#f07178"}},{scope:"entity.name.section.group-title.ini",settings:{foreground:"#89DDFF"}},{scope:"source.cs meta.class.identifier storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.identifier entity.name.function",settings:{foreground:"#f07178"}},{scope:"source.cs meta.method-call meta.method, source.cs entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"source.cs storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.return-type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.preprocessor",settings:{foreground:"#545454"}},{scope:"source.cs entity.name.type.namespace",settings:{foreground:"#EEFFFF"}},{scope:"meta.jsx.children, SXNested",settings:{foreground:"#EEFFFF"}},{scope:"support.class.component",settings:{foreground:"#FFCB6B"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#EEFFFF"}},{scope:"source.python meta.member.access.python",settings:{foreground:"#f07178"}},{scope:"source.python meta.function-call.python, meta.function-call.arguments",settings:{foreground:"#82AAFF"}},{scope:"meta.block",settings:{foreground:"#f07178"}},{scope:"entity.name.function.call",settings:{foreground:"#82AAFF"}},{scope:"source.php support.other.namespace, source.php meta.use support.class",settings:{foreground:"#EEFFFF"}},{scope:"constant.keyword",settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:"entity.name.function",settings:{foreground:"#82AAFF"}},{settings:{background:"#212121",foreground:"#EEFFFF"}},{scope:["constant.other.placeholder"],settings:{foreground:"#f07178"}},{scope:["markup.deleted"],settings:{foreground:"#f07178"}},{scope:["markup.inserted"],settings:{foreground:"#C3E88D"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["keyword.control"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["variable.parameter"],settings:{fontStyle:"italic"}},{scope:["variable.parameter.function.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["constant.character.format.placeholder.other.python"],settings:{foreground:"#F78C6C"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["markup.fenced_code.block"],settings:{foreground:"#EEFFFF90"}},{scope:["punctuation.definition.quote"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFCB6B"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F78C6C"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f07178"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#916b53"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#82AAFF"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C3E88D"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/material-theme-lighter.DDRuGeQH.js b/assets/chunks/material-theme-lighter.DDRuGeQH.js new file mode 100644 index 000000000..a179b712b --- /dev/null +++ b/assets/chunks/material-theme-lighter.DDRuGeQH.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#80CBC4","activityBar.background":"#FAFAFA","activityBar.border":"#FAFAFA60","activityBar.dropBackground":"#E5393580","activityBar.foreground":"#90A4AE","activityBarBadge.background":"#80CBC4","activityBarBadge.foreground":"#000000","badge.background":"#CCD7DA30","badge.foreground":"#90A4AE","breadcrumb.activeSelectionForeground":"#80CBC4","breadcrumb.background":"#FAFAFA","breadcrumb.focusForeground":"#90A4AE","breadcrumb.foreground":"#758a95","breadcrumbPicker.background":"#FAFAFA","button.background":"#80CBC440","button.foreground":"#ffffff","debugConsole.errorForeground":"#E53935","debugConsole.infoForeground":"#39ADB5","debugConsole.warningForeground":"#E2931D","debugToolBar.background":"#FAFAFA","diffEditor.insertedTextBackground":"#39ADB520","diffEditor.removedTextBackground":"#FF537020","dropdown.background":"#FAFAFA","dropdown.border":"#00000010","editor.background":"#FAFAFA","editor.findMatchBackground":"#00000020","editor.findMatchBorder":"#80CBC4","editor.findMatchHighlight":"#90A4AE","editor.findMatchHighlightBackground":"#00000010","editor.findMatchHighlightBorder":"#00000030","editor.findRangeHighlightBackground":"#E2931D30","editor.foreground":"#90A4AE","editor.lineHighlightBackground":"#CCD7DA50","editor.lineHighlightBorder":"#CCD7DA00","editor.rangeHighlightBackground":"#FFFFFF0d","editor.selectionBackground":"#80CBC440","editor.selectionHighlightBackground":"#27272720","editor.wordHighlightBackground":"#FF537030","editor.wordHighlightStrongBackground":"#91B85930","editorBracketMatch.background":"#FAFAFA","editorBracketMatch.border":"#27272750","editorCursor.foreground":"#272727","editorError.foreground":"#E5393570","editorGroup.border":"#00000020","editorGroup.dropBackground":"#E5393580","editorGroup.focusedEmptyBorder":"#E53935","editorGroupHeader.tabsBackground":"#FAFAFA","editorGutter.addedBackground":"#91B85960","editorGutter.deletedBackground":"#E5393560","editorGutter.modifiedBackground":"#6182B860","editorHoverWidget.background":"#FAFAFA","editorHoverWidget.border":"#00000010","editorIndentGuide.activeBackground":"#B0BEC5","editorIndentGuide.background":"#B0BEC570","editorInfo.foreground":"#6182B870","editorLineNumber.activeForeground":"#758a95","editorLineNumber.foreground":"#CFD8DC","editorLink.activeForeground":"#90A4AE","editorMarkerNavigation.background":"#90A4AE05","editorOverviewRuler.border":"#FAFAFA","editorOverviewRuler.errorForeground":"#E5393540","editorOverviewRuler.findMatchForeground":"#80CBC4","editorOverviewRuler.infoForeground":"#6182B840","editorOverviewRuler.warningForeground":"#E2931D40","editorRuler.foreground":"#B0BEC5","editorSuggestWidget.background":"#FAFAFA","editorSuggestWidget.border":"#00000010","editorSuggestWidget.foreground":"#90A4AE","editorSuggestWidget.highlightForeground":"#80CBC4","editorSuggestWidget.selectedBackground":"#CCD7DA50","editorWarning.foreground":"#E2931D70","editorWhitespace.foreground":"#90A4AE40","editorWidget.background":"#FAFAFA","editorWidget.border":"#80CBC4","editorWidget.resizeBorder":"#80CBC4","extensionBadge.remoteForeground":"#90A4AE","extensionButton.prominentBackground":"#91B85990","extensionButton.prominentForeground":"#90A4AE","extensionButton.prominentHoverBackground":"#91B859",focusBorder:"#FFFFFF00",foreground:"#90A4AE","gitDecoration.conflictingResourceForeground":"#E2931D90","gitDecoration.deletedResourceForeground":"#E5393590","gitDecoration.ignoredResourceForeground":"#758a9590","gitDecoration.modifiedResourceForeground":"#6182B890","gitDecoration.untrackedResourceForeground":"#91B85990","input.background":"#EEEEEE","input.border":"#00000010","input.foreground":"#90A4AE","input.placeholderForeground":"#90A4AE60","inputOption.activeBackground":"#90A4AE30","inputOption.activeBorder":"#90A4AE30","inputValidation.errorBorder":"#E53935","inputValidation.infoBorder":"#6182B8","inputValidation.warningBorder":"#E2931D","list.activeSelectionBackground":"#FAFAFA","list.activeSelectionForeground":"#80CBC4","list.dropBackground":"#E5393580","list.focusBackground":"#90A4AE20","list.focusForeground":"#90A4AE","list.highlightForeground":"#80CBC4","list.hoverBackground":"#FAFAFA","list.hoverForeground":"#B1C7D3","list.inactiveSelectionBackground":"#CCD7DA50","list.inactiveSelectionForeground":"#80CBC4","listFilterWidget.background":"#CCD7DA50","listFilterWidget.noMatchesOutline":"#CCD7DA50","listFilterWidget.outline":"#CCD7DA50","menu.background":"#FAFAFA","menu.foreground":"#90A4AE","menu.selectionBackground":"#CCD7DA50","menu.selectionBorder":"#CCD7DA50","menu.selectionForeground":"#80CBC4","menu.separatorBackground":"#90A4AE","menubar.selectionBackground":"#CCD7DA50","menubar.selectionBorder":"#CCD7DA50","menubar.selectionForeground":"#80CBC4","notebook.focusedCellBorder":"#80CBC4","notebook.inactiveFocusedCellBorder":"#80CBC450","notificationLink.foreground":"#80CBC4","notifications.background":"#FAFAFA","notifications.foreground":"#90A4AE","panel.background":"#FAFAFA","panel.border":"#FAFAFA60","panel.dropBackground":"#90A4AE","panelTitle.activeBorder":"#80CBC4","panelTitle.activeForeground":"#000000","panelTitle.inactiveForeground":"#90A4AE","peekView.border":"#00000020","peekViewEditor.background":"#90A4AE05","peekViewEditor.matchHighlightBackground":"#80CBC440","peekViewEditorGutter.background":"#90A4AE05","peekViewResult.background":"#90A4AE05","peekViewResult.matchHighlightBackground":"#80CBC440","peekViewResult.selectionBackground":"#758a9570","peekViewTitle.background":"#90A4AE05","peekViewTitleDescription.foreground":"#90A4AE60","pickerGroup.border":"#FFFFFF1a","pickerGroup.foreground":"#80CBC4","progressBar.background":"#80CBC4","quickInput.background":"#FAFAFA","quickInput.foreground":"#758a95","quickInput.list.focusBackground":"#90A4AE20","sash.hoverBorder":"#80CBC450","scrollbar.shadow":"#00000020","scrollbarSlider.activeBackground":"#80CBC4","scrollbarSlider.background":"#90A4AE20","scrollbarSlider.hoverBackground":"#90A4AE10","selection.background":"#CCD7DA80","settings.checkboxBackground":"#FAFAFA","settings.checkboxForeground":"#90A4AE","settings.dropdownBackground":"#FAFAFA","settings.dropdownForeground":"#90A4AE","settings.headerForeground":"#80CBC4","settings.modifiedItemIndicator":"#80CBC4","settings.numberInputBackground":"#FAFAFA","settings.numberInputForeground":"#90A4AE","settings.textInputBackground":"#FAFAFA","settings.textInputForeground":"#90A4AE","sideBar.background":"#FAFAFA","sideBar.border":"#FAFAFA60","sideBar.foreground":"#758a95","sideBarSectionHeader.background":"#FAFAFA","sideBarSectionHeader.border":"#FAFAFA60","sideBarTitle.foreground":"#90A4AE","statusBar.background":"#FAFAFA","statusBar.border":"#FAFAFA60","statusBar.debuggingBackground":"#9C3EDA","statusBar.debuggingForeground":"#FFFFFF","statusBar.foreground":"#7E939E","statusBar.noFolderBackground":"#FAFAFA","statusBarItem.activeBackground":"#E5393580","statusBarItem.hoverBackground":"#90A4AE20","statusBarItem.remoteBackground":"#80CBC4","statusBarItem.remoteForeground":"#000000","tab.activeBackground":"#FAFAFA","tab.activeBorder":"#80CBC4","tab.activeForeground":"#000000","tab.activeModifiedBorder":"#758a95","tab.border":"#FAFAFA","tab.inactiveBackground":"#FAFAFA","tab.inactiveForeground":"#758a95","tab.inactiveModifiedBorder":"#89221f","tab.unfocusedActiveBorder":"#90A4AE","tab.unfocusedActiveForeground":"#90A4AE","tab.unfocusedActiveModifiedBorder":"#b72d2a","tab.unfocusedInactiveModifiedBorder":"#89221f","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#6182B8","terminal.ansiBrightBlack":"#90A4AE","terminal.ansiBrightBlue":"#6182B8","terminal.ansiBrightCyan":"#39ADB5","terminal.ansiBrightGreen":"#91B859","terminal.ansiBrightMagenta":"#9C3EDA","terminal.ansiBrightRed":"#E53935","terminal.ansiBrightWhite":"#FFFFFF","terminal.ansiBrightYellow":"#E2931D","terminal.ansiCyan":"#39ADB5","terminal.ansiGreen":"#91B859","terminal.ansiMagenta":"#9C3EDA","terminal.ansiRed":"#E53935","terminal.ansiWhite":"#FFFFFF","terminal.ansiYellow":"#E2931D","terminalCursor.background":"#000000","terminalCursor.foreground":"#E2931D","textLink.activeForeground":"#90A4AE","textLink.foreground":"#80CBC4","titleBar.activeBackground":"#FAFAFA","titleBar.activeForeground":"#90A4AE","titleBar.border":"#FAFAFA60","titleBar.inactiveBackground":"#FAFAFA","titleBar.inactiveForeground":"#758a95","tree.indentGuidesStroke":"#B0BEC5","widget.shadow":"#00000020"},displayName:"Material Theme Lighter",name:"material-theme-lighter",semanticHighlighting:!0,tokenColors:[{settings:{background:"#FAFAFA",foreground:"#90A4AE"}},{scope:"string",settings:{foreground:"#91B859"}},{scope:"punctuation, constant.other.symbol",settings:{foreground:"#39ADB5"}},{scope:"constant.character.escape, text.html constant.character.entity.named",settings:{foreground:"#90A4AE"}},{scope:"constant.language.boolean",settings:{foreground:"#FF5370"}},{scope:"constant.numeric",settings:{foreground:"#F76D47"}},{scope:"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",settings:{foreground:"#90A4AE"}},{scope:"keyword.other",settings:{foreground:"#F76D47"}},{scope:"keyword, modifier, variable.language.this, support.type.object, constant.language",settings:{foreground:"#39ADB5"}},{scope:"entity.name.function, support.function",settings:{foreground:"#6182B8"}},{scope:"storage.type, storage.modifier, storage.control",settings:{foreground:"#9C3EDA"}},{scope:"support.module, support.node",settings:{fontStyle:"italic",foreground:"#E53935"}},{scope:"support.type, constant.other.key",settings:{foreground:"#E2931D"}},{scope:"entity.name.type, entity.other.inherited-class, entity.other",settings:{foreground:"#E2931D"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#90A4AE"}},{scope:"comment punctuation.definition.comment, string.quoted.docstring",settings:{fontStyle:"italic",foreground:"#90A4AE"}},{scope:"punctuation",settings:{foreground:"#39ADB5"}},{scope:"entity.name, entity.name.type.class, support.type, support.class, meta.use",settings:{foreground:"#E2931D"}},{scope:"variable.object.property, meta.field.declaration entity.name.function",settings:{foreground:"#E53935"}},{scope:"meta.definition.method entity.name.function",settings:{foreground:"#E53935"}},{scope:"meta.function entity.name.function",settings:{foreground:"#6182B8"}},{scope:"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",settings:{foreground:"#39ADB5"}},{scope:"meta.embedded, source.groovy.embedded, meta.template.expression",settings:{foreground:"#90A4AE"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#E53935"}},{scope:"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",settings:{foreground:"#E53935"}},{scope:"constant.language.json",settings:{foreground:"#39ADB5"}},{scope:"entity.other.attribute-name.class",settings:{foreground:"#E2931D"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#F76D47"}},{scope:"source.css entity.name.tag",settings:{foreground:"#E2931D"}},{scope:"support.type.property-name.css",settings:{foreground:"#8796B0"}},{scope:"meta.tag, punctuation.definition.tag",settings:{foreground:"#39ADB5"}},{scope:"entity.name.tag",settings:{foreground:"#E53935"}},{scope:"entity.other.attribute-name",settings:{foreground:"#9C3EDA"}},{scope:"punctuation.definition.entity.html",settings:{foreground:"#90A4AE"}},{scope:"markup.heading",settings:{foreground:"#39ADB5"}},{scope:"text.html.markdown meta.link.inline, meta.link.reference",settings:{foreground:"#E53935"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#39ADB5"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#E53935"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#E53935"}},{scope:"markup.bold markup.italic, markup.italic markup.bold",settings:{fontStyle:"italic bold",foreground:"#E53935"}},{scope:"markup.fenced_code.block.markdown punctuation.definition.markdown",settings:{foreground:"#91B859"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#91B859"}},{scope:"keyword.other.definition.ini",settings:{foreground:"#E53935"}},{scope:"entity.name.section.group-title.ini",settings:{foreground:"#39ADB5"}},{scope:"source.cs meta.class.identifier storage.type",settings:{foreground:"#E2931D"}},{scope:"source.cs meta.method.identifier entity.name.function",settings:{foreground:"#E53935"}},{scope:"source.cs meta.method-call meta.method, source.cs entity.name.function",settings:{foreground:"#6182B8"}},{scope:"source.cs storage.type",settings:{foreground:"#E2931D"}},{scope:"source.cs meta.method.return-type",settings:{foreground:"#E2931D"}},{scope:"source.cs meta.preprocessor",settings:{foreground:"#90A4AE"}},{scope:"source.cs entity.name.type.namespace",settings:{foreground:"#90A4AE"}},{scope:"meta.jsx.children, SXNested",settings:{foreground:"#90A4AE"}},{scope:"support.class.component",settings:{foreground:"#E2931D"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#90A4AE"}},{scope:"source.python meta.member.access.python",settings:{foreground:"#E53935"}},{scope:"source.python meta.function-call.python, meta.function-call.arguments",settings:{foreground:"#6182B8"}},{scope:"meta.block",settings:{foreground:"#E53935"}},{scope:"entity.name.function.call",settings:{foreground:"#6182B8"}},{scope:"source.php support.other.namespace, source.php meta.use support.class",settings:{foreground:"#90A4AE"}},{scope:"constant.keyword",settings:{fontStyle:"italic",foreground:"#39ADB5"}},{scope:"entity.name.function",settings:{foreground:"#6182B8"}},{settings:{background:"#FAFAFA",foreground:"#90A4AE"}},{scope:["constant.other.placeholder"],settings:{foreground:"#E53935"}},{scope:["markup.deleted"],settings:{foreground:"#E53935"}},{scope:["markup.inserted"],settings:{foreground:"#91B859"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["keyword.control"],settings:{fontStyle:"italic",foreground:"#39ADB5"}},{scope:["variable.parameter"],settings:{fontStyle:"italic"}},{scope:["variable.parameter.function.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#E53935"}},{scope:["constant.character.format.placeholder.other.python"],settings:{foreground:"#F76D47"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#39ADB5"}},{scope:["markup.fenced_code.block"],settings:{foreground:"#90A4AE90"}},{scope:["punctuation.definition.quote"],settings:{foreground:"#FF5370"}},{scope:["meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#9C3EDA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#E2931D"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F76D47"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#E53935"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#916b53"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#6182B8"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FF5370"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#9C3EDA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#91B859"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/material-theme-ocean.CBL0qBdF.js b/assets/chunks/material-theme-ocean.CBL0qBdF.js new file mode 100644 index 000000000..fd49b7e06 --- /dev/null +++ b/assets/chunks/material-theme-ocean.CBL0qBdF.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#80CBC4","activityBar.background":"#0F111A","activityBar.border":"#0F111A60","activityBar.dropBackground":"#f0717880","activityBar.foreground":"#babed8","activityBarBadge.background":"#80CBC4","activityBarBadge.foreground":"#000000","badge.background":"#00000030","badge.foreground":"#464B5D","breadcrumb.activeSelectionForeground":"#80CBC4","breadcrumb.background":"#0F111A","breadcrumb.focusForeground":"#babed8","breadcrumb.foreground":"#525975","breadcrumbPicker.background":"#0F111A","button.background":"#717CB450","button.foreground":"#ffffff","debugConsole.errorForeground":"#f07178","debugConsole.infoForeground":"#89DDFF","debugConsole.warningForeground":"#FFCB6B","debugToolBar.background":"#0F111A","diffEditor.insertedTextBackground":"#89DDFF20","diffEditor.removedTextBackground":"#ff9cac20","dropdown.background":"#0F111A","dropdown.border":"#FFFFFF10","editor.background":"#0F111A","editor.findMatchBackground":"#000000","editor.findMatchBorder":"#80CBC4","editor.findMatchHighlight":"#babed8","editor.findMatchHighlightBackground":"#00000050","editor.findMatchHighlightBorder":"#ffffff30","editor.findRangeHighlightBackground":"#FFCB6B30","editor.foreground":"#babed8","editor.lineHighlightBackground":"#00000050","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#FFFFFF0d","editor.selectionBackground":"#717CB450","editor.selectionHighlightBackground":"#FFCC0020","editor.wordHighlightBackground":"#ff9cac30","editor.wordHighlightStrongBackground":"#C3E88D30","editorBracketMatch.background":"#0F111A","editorBracketMatch.border":"#FFCC0050","editorCursor.foreground":"#FFCC00","editorError.foreground":"#f0717870","editorGroup.border":"#00000030","editorGroup.dropBackground":"#f0717880","editorGroup.focusedEmptyBorder":"#f07178","editorGroupHeader.tabsBackground":"#0F111A","editorGutter.addedBackground":"#C3E88D60","editorGutter.deletedBackground":"#f0717860","editorGutter.modifiedBackground":"#82AAFF60","editorHoverWidget.background":"#0F111A","editorHoverWidget.border":"#FFFFFF10","editorIndentGuide.activeBackground":"#3B3F51","editorIndentGuide.background":"#3B3F5170","editorInfo.foreground":"#82AAFF70","editorLineNumber.activeForeground":"#525975","editorLineNumber.foreground":"#3B3F5180","editorLink.activeForeground":"#babed8","editorMarkerNavigation.background":"#babed805","editorOverviewRuler.border":"#0F111A","editorOverviewRuler.errorForeground":"#f0717840","editorOverviewRuler.findMatchForeground":"#80CBC4","editorOverviewRuler.infoForeground":"#82AAFF40","editorOverviewRuler.warningForeground":"#FFCB6B40","editorRuler.foreground":"#3B3F51","editorSuggestWidget.background":"#0F111A","editorSuggestWidget.border":"#FFFFFF10","editorSuggestWidget.foreground":"#babed8","editorSuggestWidget.highlightForeground":"#80CBC4","editorSuggestWidget.selectedBackground":"#00000050","editorWarning.foreground":"#FFCB6B70","editorWhitespace.foreground":"#babed840","editorWidget.background":"#0F111A","editorWidget.border":"#80CBC4","editorWidget.resizeBorder":"#80CBC4","extensionBadge.remoteForeground":"#babed8","extensionButton.prominentBackground":"#C3E88D90","extensionButton.prominentForeground":"#babed8","extensionButton.prominentHoverBackground":"#C3E88D",focusBorder:"#FFFFFF00",foreground:"#babed8","gitDecoration.conflictingResourceForeground":"#FFCB6B90","gitDecoration.deletedResourceForeground":"#f0717890","gitDecoration.ignoredResourceForeground":"#52597590","gitDecoration.modifiedResourceForeground":"#82AAFF90","gitDecoration.untrackedResourceForeground":"#C3E88D90","input.background":"#1A1C25","input.border":"#FFFFFF10","input.foreground":"#babed8","input.placeholderForeground":"#babed860","inputOption.activeBackground":"#babed830","inputOption.activeBorder":"#babed830","inputValidation.errorBorder":"#f07178","inputValidation.infoBorder":"#82AAFF","inputValidation.warningBorder":"#FFCB6B","list.activeSelectionBackground":"#0F111A","list.activeSelectionForeground":"#80CBC4","list.dropBackground":"#f0717880","list.focusBackground":"#babed820","list.focusForeground":"#babed8","list.highlightForeground":"#80CBC4","list.hoverBackground":"#0F111A","list.hoverForeground":"#FFFFFF","list.inactiveSelectionBackground":"#00000030","list.inactiveSelectionForeground":"#80CBC4","listFilterWidget.background":"#00000030","listFilterWidget.noMatchesOutline":"#00000030","listFilterWidget.outline":"#00000030","menu.background":"#0F111A","menu.foreground":"#babed8","menu.selectionBackground":"#00000050","menu.selectionBorder":"#00000030","menu.selectionForeground":"#80CBC4","menu.separatorBackground":"#babed8","menubar.selectionBackground":"#00000030","menubar.selectionBorder":"#00000030","menubar.selectionForeground":"#80CBC4","notebook.focusedCellBorder":"#80CBC4","notebook.inactiveFocusedCellBorder":"#80CBC450","notificationLink.foreground":"#80CBC4","notifications.background":"#0F111A","notifications.foreground":"#babed8","panel.background":"#0F111A","panel.border":"#0F111A60","panel.dropBackground":"#babed8","panelTitle.activeBorder":"#80CBC4","panelTitle.activeForeground":"#FFFFFF","panelTitle.inactiveForeground":"#babed8","peekView.border":"#00000030","peekViewEditor.background":"#babed805","peekViewEditor.matchHighlightBackground":"#717CB450","peekViewEditorGutter.background":"#babed805","peekViewResult.background":"#babed805","peekViewResult.matchHighlightBackground":"#717CB450","peekViewResult.selectionBackground":"#52597570","peekViewTitle.background":"#babed805","peekViewTitleDescription.foreground":"#babed860","pickerGroup.border":"#FFFFFF1a","pickerGroup.foreground":"#80CBC4","progressBar.background":"#80CBC4","quickInput.background":"#0F111A","quickInput.foreground":"#525975","quickInput.list.focusBackground":"#babed820","sash.hoverBorder":"#80CBC450","scrollbar.shadow":"#00000030","scrollbarSlider.activeBackground":"#80CBC4","scrollbarSlider.background":"#8F93A220","scrollbarSlider.hoverBackground":"#8F93A210","selection.background":"#00000080","settings.checkboxBackground":"#0F111A","settings.checkboxForeground":"#babed8","settings.dropdownBackground":"#0F111A","settings.dropdownForeground":"#babed8","settings.headerForeground":"#80CBC4","settings.modifiedItemIndicator":"#80CBC4","settings.numberInputBackground":"#0F111A","settings.numberInputForeground":"#babed8","settings.textInputBackground":"#0F111A","settings.textInputForeground":"#babed8","sideBar.background":"#0F111A","sideBar.border":"#0F111A60","sideBar.foreground":"#525975","sideBarSectionHeader.background":"#0F111A","sideBarSectionHeader.border":"#0F111A60","sideBarTitle.foreground":"#babed8","statusBar.background":"#0F111A","statusBar.border":"#0F111A60","statusBar.debuggingBackground":"#C792EA","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#4B526D","statusBar.noFolderBackground":"#0F111A","statusBarItem.activeBackground":"#f0717880","statusBarItem.hoverBackground":"#464B5D20","statusBarItem.remoteBackground":"#80CBC4","statusBarItem.remoteForeground":"#000000","tab.activeBackground":"#0F111A","tab.activeBorder":"#80CBC4","tab.activeForeground":"#FFFFFF","tab.activeModifiedBorder":"#525975","tab.border":"#0F111A","tab.inactiveBackground":"#0F111A","tab.inactiveForeground":"#525975","tab.inactiveModifiedBorder":"#904348","tab.unfocusedActiveBorder":"#464B5D","tab.unfocusedActiveForeground":"#babed8","tab.unfocusedActiveModifiedBorder":"#c05a60","tab.unfocusedInactiveModifiedBorder":"#904348","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#464B5D","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#89DDFF","terminal.ansiBrightGreen":"#C3E88D","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#f07178","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#FFCB6B","terminal.ansiCyan":"#89DDFF","terminal.ansiGreen":"#C3E88D","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#f07178","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#FFCB6B","terminalCursor.background":"#000000","terminalCursor.foreground":"#FFCB6B","textLink.activeForeground":"#babed8","textLink.foreground":"#80CBC4","titleBar.activeBackground":"#0F111A","titleBar.activeForeground":"#babed8","titleBar.border":"#0F111A60","titleBar.inactiveBackground":"#0F111A","titleBar.inactiveForeground":"#525975","tree.indentGuidesStroke":"#3B3F51","widget.shadow":"#00000030"},displayName:"Material Theme Ocean",name:"material-theme-ocean",semanticHighlighting:!0,tokenColors:[{settings:{background:"#0F111A",foreground:"#babed8"}},{scope:"string",settings:{foreground:"#C3E88D"}},{scope:"punctuation, constant.other.symbol",settings:{foreground:"#89DDFF"}},{scope:"constant.character.escape, text.html constant.character.entity.named",settings:{foreground:"#babed8"}},{scope:"constant.language.boolean",settings:{foreground:"#ff9cac"}},{scope:"constant.numeric",settings:{foreground:"#F78C6C"}},{scope:"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",settings:{foreground:"#babed8"}},{scope:"keyword.other",settings:{foreground:"#F78C6C"}},{scope:"keyword, modifier, variable.language.this, support.type.object, constant.language",settings:{foreground:"#89DDFF"}},{scope:"entity.name.function, support.function",settings:{foreground:"#82AAFF"}},{scope:"storage.type, storage.modifier, storage.control",settings:{foreground:"#C792EA"}},{scope:"support.module, support.node",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"support.type, constant.other.key",settings:{foreground:"#FFCB6B"}},{scope:"entity.name.type, entity.other.inherited-class, entity.other",settings:{foreground:"#FFCB6B"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#464B5D"}},{scope:"comment punctuation.definition.comment, string.quoted.docstring",settings:{fontStyle:"italic",foreground:"#464B5D"}},{scope:"punctuation",settings:{foreground:"#89DDFF"}},{scope:"entity.name, entity.name.type.class, support.type, support.class, meta.use",settings:{foreground:"#FFCB6B"}},{scope:"variable.object.property, meta.field.declaration entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.definition.method entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.function entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",settings:{foreground:"#89DDFF"}},{scope:"meta.embedded, source.groovy.embedded, meta.template.expression",settings:{foreground:"#babed8"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#f07178"}},{scope:"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",settings:{foreground:"#f07178"}},{scope:"constant.language.json",settings:{foreground:"#89DDFF"}},{scope:"entity.other.attribute-name.class",settings:{foreground:"#FFCB6B"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#F78C6C"}},{scope:"source.css entity.name.tag",settings:{foreground:"#FFCB6B"}},{scope:"support.type.property-name.css",settings:{foreground:"#B2CCD6"}},{scope:"meta.tag, punctuation.definition.tag",settings:{foreground:"#89DDFF"}},{scope:"entity.name.tag",settings:{foreground:"#f07178"}},{scope:"entity.other.attribute-name",settings:{foreground:"#C792EA"}},{scope:"punctuation.definition.entity.html",settings:{foreground:"#babed8"}},{scope:"markup.heading",settings:{foreground:"#89DDFF"}},{scope:"text.html.markdown meta.link.inline, meta.link.reference",settings:{foreground:"#f07178"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#89DDFF"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:"markup.bold markup.italic, markup.italic markup.bold",settings:{fontStyle:"italic bold",foreground:"#f07178"}},{scope:"markup.fenced_code.block.markdown punctuation.definition.markdown",settings:{foreground:"#C3E88D"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#C3E88D"}},{scope:"keyword.other.definition.ini",settings:{foreground:"#f07178"}},{scope:"entity.name.section.group-title.ini",settings:{foreground:"#89DDFF"}},{scope:"source.cs meta.class.identifier storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.identifier entity.name.function",settings:{foreground:"#f07178"}},{scope:"source.cs meta.method-call meta.method, source.cs entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"source.cs storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.return-type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.preprocessor",settings:{foreground:"#464B5D"}},{scope:"source.cs entity.name.type.namespace",settings:{foreground:"#babed8"}},{scope:"meta.jsx.children, SXNested",settings:{foreground:"#babed8"}},{scope:"support.class.component",settings:{foreground:"#FFCB6B"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#babed8"}},{scope:"source.python meta.member.access.python",settings:{foreground:"#f07178"}},{scope:"source.python meta.function-call.python, meta.function-call.arguments",settings:{foreground:"#82AAFF"}},{scope:"meta.block",settings:{foreground:"#f07178"}},{scope:"entity.name.function.call",settings:{foreground:"#82AAFF"}},{scope:"source.php support.other.namespace, source.php meta.use support.class",settings:{foreground:"#babed8"}},{scope:"constant.keyword",settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:"entity.name.function",settings:{foreground:"#82AAFF"}},{settings:{background:"#0F111A",foreground:"#babed8"}},{scope:["constant.other.placeholder"],settings:{foreground:"#f07178"}},{scope:["markup.deleted"],settings:{foreground:"#f07178"}},{scope:["markup.inserted"],settings:{foreground:"#C3E88D"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["keyword.control"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["variable.parameter"],settings:{fontStyle:"italic"}},{scope:["variable.parameter.function.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["constant.character.format.placeholder.other.python"],settings:{foreground:"#F78C6C"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["markup.fenced_code.block"],settings:{foreground:"#babed890"}},{scope:["punctuation.definition.quote"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFCB6B"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F78C6C"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f07178"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#916b53"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#82AAFF"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C3E88D"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/material-theme-palenight.D7gg1Usp.js b/assets/chunks/material-theme-palenight.D7gg1Usp.js new file mode 100644 index 000000000..320102506 --- /dev/null +++ b/assets/chunks/material-theme-palenight.D7gg1Usp.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#80CBC4","activityBar.background":"#292D3E","activityBar.border":"#292D3E60","activityBar.dropBackground":"#f0717880","activityBar.foreground":"#babed8","activityBarBadge.background":"#80CBC4","activityBarBadge.foreground":"#000000","badge.background":"#00000030","badge.foreground":"#676E95","breadcrumb.activeSelectionForeground":"#80CBC4","breadcrumb.background":"#292D3E","breadcrumb.focusForeground":"#babed8","breadcrumb.foreground":"#676E95","breadcrumbPicker.background":"#292D3E","button.background":"#717CB450","button.foreground":"#ffffff","debugConsole.errorForeground":"#f07178","debugConsole.infoForeground":"#89DDFF","debugConsole.warningForeground":"#FFCB6B","debugToolBar.background":"#292D3E","diffEditor.insertedTextBackground":"#89DDFF20","diffEditor.removedTextBackground":"#ff9cac20","dropdown.background":"#292D3E","dropdown.border":"#FFFFFF10","editor.background":"#292D3E","editor.findMatchBackground":"#000000","editor.findMatchBorder":"#80CBC4","editor.findMatchHighlight":"#babed8","editor.findMatchHighlightBackground":"#00000050","editor.findMatchHighlightBorder":"#ffffff30","editor.findRangeHighlightBackground":"#FFCB6B30","editor.foreground":"#babed8","editor.lineHighlightBackground":"#00000050","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#FFFFFF0d","editor.selectionBackground":"#717CB450","editor.selectionHighlightBackground":"#FFCC0020","editor.wordHighlightBackground":"#ff9cac30","editor.wordHighlightStrongBackground":"#C3E88D30","editorBracketMatch.background":"#292D3E","editorBracketMatch.border":"#FFCC0050","editorCursor.foreground":"#FFCC00","editorError.foreground":"#f0717870","editorGroup.border":"#00000030","editorGroup.dropBackground":"#f0717880","editorGroup.focusedEmptyBorder":"#f07178","editorGroupHeader.tabsBackground":"#292D3E","editorGutter.addedBackground":"#C3E88D60","editorGutter.deletedBackground":"#f0717860","editorGutter.modifiedBackground":"#82AAFF60","editorHoverWidget.background":"#292D3E","editorHoverWidget.border":"#FFFFFF10","editorIndentGuide.activeBackground":"#4E5579","editorIndentGuide.background":"#4E557970","editorInfo.foreground":"#82AAFF70","editorLineNumber.activeForeground":"#676E95","editorLineNumber.foreground":"#3A3F58","editorLink.activeForeground":"#babed8","editorMarkerNavigation.background":"#babed805","editorOverviewRuler.border":"#292D3E","editorOverviewRuler.errorForeground":"#f0717840","editorOverviewRuler.findMatchForeground":"#80CBC4","editorOverviewRuler.infoForeground":"#82AAFF40","editorOverviewRuler.warningForeground":"#FFCB6B40","editorRuler.foreground":"#4E5579","editorSuggestWidget.background":"#292D3E","editorSuggestWidget.border":"#FFFFFF10","editorSuggestWidget.foreground":"#babed8","editorSuggestWidget.highlightForeground":"#80CBC4","editorSuggestWidget.selectedBackground":"#00000050","editorWarning.foreground":"#FFCB6B70","editorWhitespace.foreground":"#babed840","editorWidget.background":"#292D3E","editorWidget.border":"#80CBC4","editorWidget.resizeBorder":"#80CBC4","extensionBadge.remoteForeground":"#babed8","extensionButton.prominentBackground":"#C3E88D90","extensionButton.prominentForeground":"#babed8","extensionButton.prominentHoverBackground":"#C3E88D",focusBorder:"#FFFFFF00",foreground:"#babed8","gitDecoration.conflictingResourceForeground":"#FFCB6B90","gitDecoration.deletedResourceForeground":"#f0717890","gitDecoration.ignoredResourceForeground":"#676E9590","gitDecoration.modifiedResourceForeground":"#82AAFF90","gitDecoration.untrackedResourceForeground":"#C3E88D90","input.background":"#333747","input.border":"#FFFFFF10","input.foreground":"#babed8","input.placeholderForeground":"#babed860","inputOption.activeBackground":"#babed830","inputOption.activeBorder":"#babed830","inputValidation.errorBorder":"#f07178","inputValidation.infoBorder":"#82AAFF","inputValidation.warningBorder":"#FFCB6B","list.activeSelectionBackground":"#292D3E","list.activeSelectionForeground":"#80CBC4","list.dropBackground":"#f0717880","list.focusBackground":"#babed820","list.focusForeground":"#babed8","list.highlightForeground":"#80CBC4","list.hoverBackground":"#292D3E","list.hoverForeground":"#FFFFFF","list.inactiveSelectionBackground":"#00000030","list.inactiveSelectionForeground":"#80CBC4","listFilterWidget.background":"#00000030","listFilterWidget.noMatchesOutline":"#00000030","listFilterWidget.outline":"#00000030","menu.background":"#292D3E","menu.foreground":"#babed8","menu.selectionBackground":"#00000050","menu.selectionBorder":"#00000030","menu.selectionForeground":"#80CBC4","menu.separatorBackground":"#babed8","menubar.selectionBackground":"#00000030","menubar.selectionBorder":"#00000030","menubar.selectionForeground":"#80CBC4","notebook.focusedCellBorder":"#80CBC4","notebook.inactiveFocusedCellBorder":"#80CBC450","notificationLink.foreground":"#80CBC4","notifications.background":"#292D3E","notifications.foreground":"#babed8","panel.background":"#292D3E","panel.border":"#292D3E60","panel.dropBackground":"#babed8","panelTitle.activeBorder":"#80CBC4","panelTitle.activeForeground":"#FFFFFF","panelTitle.inactiveForeground":"#babed8","peekView.border":"#00000030","peekViewEditor.background":"#babed805","peekViewEditor.matchHighlightBackground":"#717CB450","peekViewEditorGutter.background":"#babed805","peekViewResult.background":"#babed805","peekViewResult.matchHighlightBackground":"#717CB450","peekViewResult.selectionBackground":"#676E9570","peekViewTitle.background":"#babed805","peekViewTitleDescription.foreground":"#babed860","pickerGroup.border":"#FFFFFF1a","pickerGroup.foreground":"#80CBC4","progressBar.background":"#80CBC4","quickInput.background":"#292D3E","quickInput.foreground":"#676E95","quickInput.list.focusBackground":"#babed820","sash.hoverBorder":"#80CBC450","scrollbar.shadow":"#00000030","scrollbarSlider.activeBackground":"#80CBC4","scrollbarSlider.background":"#A6ACCD20","scrollbarSlider.hoverBackground":"#A6ACCD10","selection.background":"#00000080","settings.checkboxBackground":"#292D3E","settings.checkboxForeground":"#babed8","settings.dropdownBackground":"#292D3E","settings.dropdownForeground":"#babed8","settings.headerForeground":"#80CBC4","settings.modifiedItemIndicator":"#80CBC4","settings.numberInputBackground":"#292D3E","settings.numberInputForeground":"#babed8","settings.textInputBackground":"#292D3E","settings.textInputForeground":"#babed8","sideBar.background":"#292D3E","sideBar.border":"#292D3E60","sideBar.foreground":"#676E95","sideBarSectionHeader.background":"#292D3E","sideBarSectionHeader.border":"#292D3E60","sideBarTitle.foreground":"#babed8","statusBar.background":"#292D3E","statusBar.border":"#292D3E60","statusBar.debuggingBackground":"#C792EA","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#676E95","statusBar.noFolderBackground":"#292D3E","statusBarItem.activeBackground":"#f0717880","statusBarItem.hoverBackground":"#676E9520","statusBarItem.remoteBackground":"#80CBC4","statusBarItem.remoteForeground":"#000000","tab.activeBackground":"#292D3E","tab.activeBorder":"#80CBC4","tab.activeForeground":"#FFFFFF","tab.activeModifiedBorder":"#676E95","tab.border":"#292D3E","tab.inactiveBackground":"#292D3E","tab.inactiveForeground":"#676E95","tab.inactiveModifiedBorder":"#904348","tab.unfocusedActiveBorder":"#676E95","tab.unfocusedActiveForeground":"#babed8","tab.unfocusedActiveModifiedBorder":"#c05a60","tab.unfocusedInactiveModifiedBorder":"#904348","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#676E95","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#89DDFF","terminal.ansiBrightGreen":"#C3E88D","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#f07178","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#FFCB6B","terminal.ansiCyan":"#89DDFF","terminal.ansiGreen":"#C3E88D","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#f07178","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#FFCB6B","terminalCursor.background":"#000000","terminalCursor.foreground":"#FFCB6B","textLink.activeForeground":"#babed8","textLink.foreground":"#80CBC4","titleBar.activeBackground":"#292D3E","titleBar.activeForeground":"#babed8","titleBar.border":"#292D3E60","titleBar.inactiveBackground":"#292D3E","titleBar.inactiveForeground":"#676E95","tree.indentGuidesStroke":"#4E5579","widget.shadow":"#00000030"},displayName:"Material Theme Palenight",name:"material-theme-palenight",semanticHighlighting:!0,tokenColors:[{settings:{background:"#292D3E",foreground:"#babed8"}},{scope:"string",settings:{foreground:"#C3E88D"}},{scope:"punctuation, constant.other.symbol",settings:{foreground:"#89DDFF"}},{scope:"constant.character.escape, text.html constant.character.entity.named",settings:{foreground:"#babed8"}},{scope:"constant.language.boolean",settings:{foreground:"#ff9cac"}},{scope:"constant.numeric",settings:{foreground:"#F78C6C"}},{scope:"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",settings:{foreground:"#babed8"}},{scope:"keyword.other",settings:{foreground:"#F78C6C"}},{scope:"keyword, modifier, variable.language.this, support.type.object, constant.language",settings:{foreground:"#89DDFF"}},{scope:"entity.name.function, support.function",settings:{foreground:"#82AAFF"}},{scope:"storage.type, storage.modifier, storage.control",settings:{foreground:"#C792EA"}},{scope:"support.module, support.node",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"support.type, constant.other.key",settings:{foreground:"#FFCB6B"}},{scope:"entity.name.type, entity.other.inherited-class, entity.other",settings:{foreground:"#FFCB6B"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#676E95"}},{scope:"comment punctuation.definition.comment, string.quoted.docstring",settings:{fontStyle:"italic",foreground:"#676E95"}},{scope:"punctuation",settings:{foreground:"#89DDFF"}},{scope:"entity.name, entity.name.type.class, support.type, support.class, meta.use",settings:{foreground:"#FFCB6B"}},{scope:"variable.object.property, meta.field.declaration entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.definition.method entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.function entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",settings:{foreground:"#89DDFF"}},{scope:"meta.embedded, source.groovy.embedded, meta.template.expression",settings:{foreground:"#babed8"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#f07178"}},{scope:"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",settings:{foreground:"#f07178"}},{scope:"constant.language.json",settings:{foreground:"#89DDFF"}},{scope:"entity.other.attribute-name.class",settings:{foreground:"#FFCB6B"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#F78C6C"}},{scope:"source.css entity.name.tag",settings:{foreground:"#FFCB6B"}},{scope:"support.type.property-name.css",settings:{foreground:"#B2CCD6"}},{scope:"meta.tag, punctuation.definition.tag",settings:{foreground:"#89DDFF"}},{scope:"entity.name.tag",settings:{foreground:"#f07178"}},{scope:"entity.other.attribute-name",settings:{foreground:"#C792EA"}},{scope:"punctuation.definition.entity.html",settings:{foreground:"#babed8"}},{scope:"markup.heading",settings:{foreground:"#89DDFF"}},{scope:"text.html.markdown meta.link.inline, meta.link.reference",settings:{foreground:"#f07178"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#89DDFF"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:"markup.bold markup.italic, markup.italic markup.bold",settings:{fontStyle:"italic bold",foreground:"#f07178"}},{scope:"markup.fenced_code.block.markdown punctuation.definition.markdown",settings:{foreground:"#C3E88D"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#C3E88D"}},{scope:"keyword.other.definition.ini",settings:{foreground:"#f07178"}},{scope:"entity.name.section.group-title.ini",settings:{foreground:"#89DDFF"}},{scope:"source.cs meta.class.identifier storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.identifier entity.name.function",settings:{foreground:"#f07178"}},{scope:"source.cs meta.method-call meta.method, source.cs entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"source.cs storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.return-type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.preprocessor",settings:{foreground:"#676E95"}},{scope:"source.cs entity.name.type.namespace",settings:{foreground:"#babed8"}},{scope:"meta.jsx.children, SXNested",settings:{foreground:"#babed8"}},{scope:"support.class.component",settings:{foreground:"#FFCB6B"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#babed8"}},{scope:"source.python meta.member.access.python",settings:{foreground:"#f07178"}},{scope:"source.python meta.function-call.python, meta.function-call.arguments",settings:{foreground:"#82AAFF"}},{scope:"meta.block",settings:{foreground:"#f07178"}},{scope:"entity.name.function.call",settings:{foreground:"#82AAFF"}},{scope:"source.php support.other.namespace, source.php meta.use support.class",settings:{foreground:"#babed8"}},{scope:"constant.keyword",settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:"entity.name.function",settings:{foreground:"#82AAFF"}},{settings:{background:"#292D3E",foreground:"#babed8"}},{scope:["constant.other.placeholder"],settings:{foreground:"#f07178"}},{scope:["markup.deleted"],settings:{foreground:"#f07178"}},{scope:["markup.inserted"],settings:{foreground:"#C3E88D"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["keyword.control"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["variable.parameter"],settings:{fontStyle:"italic"}},{scope:["variable.parameter.function.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["constant.character.format.placeholder.other.python"],settings:{foreground:"#F78C6C"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["markup.fenced_code.block"],settings:{foreground:"#babed890"}},{scope:["punctuation.definition.quote"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFCB6B"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F78C6C"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f07178"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#916b53"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#82AAFF"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C3E88D"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/material-theme.B2BuIiKK.js b/assets/chunks/material-theme.B2BuIiKK.js new file mode 100644 index 000000000..c82da8332 --- /dev/null +++ b/assets/chunks/material-theme.B2BuIiKK.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#80CBC4","activityBar.background":"#263238","activityBar.border":"#26323860","activityBar.dropBackground":"#f0717880","activityBar.foreground":"#EEFFFF","activityBarBadge.background":"#80CBC4","activityBarBadge.foreground":"#000000","badge.background":"#00000030","badge.foreground":"#546E7A","breadcrumb.activeSelectionForeground":"#80CBC4","breadcrumb.background":"#263238","breadcrumb.focusForeground":"#EEFFFF","breadcrumb.foreground":"#6c8692","breadcrumbPicker.background":"#263238","button.background":"#80CBC420","button.foreground":"#ffffff","debugConsole.errorForeground":"#f07178","debugConsole.infoForeground":"#89DDFF","debugConsole.warningForeground":"#FFCB6B","debugToolBar.background":"#263238","diffEditor.insertedTextBackground":"#89DDFF20","diffEditor.removedTextBackground":"#ff9cac20","dropdown.background":"#263238","dropdown.border":"#FFFFFF10","editor.background":"#263238","editor.findMatchBackground":"#000000","editor.findMatchBorder":"#80CBC4","editor.findMatchHighlight":"#EEFFFF","editor.findMatchHighlightBackground":"#00000050","editor.findMatchHighlightBorder":"#ffffff30","editor.findRangeHighlightBackground":"#FFCB6B30","editor.foreground":"#EEFFFF","editor.lineHighlightBackground":"#00000050","editor.lineHighlightBorder":"#00000000","editor.rangeHighlightBackground":"#FFFFFF0d","editor.selectionBackground":"#80CBC420","editor.selectionHighlightBackground":"#FFCC0020","editor.wordHighlightBackground":"#ff9cac30","editor.wordHighlightStrongBackground":"#C3E88D30","editorBracketMatch.background":"#263238","editorBracketMatch.border":"#FFCC0050","editorCursor.foreground":"#FFCC00","editorError.foreground":"#f0717870","editorGroup.border":"#00000030","editorGroup.dropBackground":"#f0717880","editorGroup.focusedEmptyBorder":"#f07178","editorGroupHeader.tabsBackground":"#263238","editorGutter.addedBackground":"#C3E88D60","editorGutter.deletedBackground":"#f0717860","editorGutter.modifiedBackground":"#82AAFF60","editorHoverWidget.background":"#263238","editorHoverWidget.border":"#FFFFFF10","editorIndentGuide.activeBackground":"#37474F","editorIndentGuide.background":"#37474F70","editorInfo.foreground":"#82AAFF70","editorLineNumber.activeForeground":"#6c8692","editorLineNumber.foreground":"#465A64","editorLink.activeForeground":"#EEFFFF","editorMarkerNavigation.background":"#EEFFFF05","editorOverviewRuler.border":"#263238","editorOverviewRuler.errorForeground":"#f0717840","editorOverviewRuler.findMatchForeground":"#80CBC4","editorOverviewRuler.infoForeground":"#82AAFF40","editorOverviewRuler.warningForeground":"#FFCB6B40","editorRuler.foreground":"#37474F","editorSuggestWidget.background":"#263238","editorSuggestWidget.border":"#FFFFFF10","editorSuggestWidget.foreground":"#EEFFFF","editorSuggestWidget.highlightForeground":"#80CBC4","editorSuggestWidget.selectedBackground":"#00000050","editorWarning.foreground":"#FFCB6B70","editorWhitespace.foreground":"#EEFFFF40","editorWidget.background":"#263238","editorWidget.border":"#80CBC4","editorWidget.resizeBorder":"#80CBC4","extensionBadge.remoteForeground":"#EEFFFF","extensionButton.prominentBackground":"#C3E88D90","extensionButton.prominentForeground":"#EEFFFF","extensionButton.prominentHoverBackground":"#C3E88D",focusBorder:"#FFFFFF00",foreground:"#EEFFFF","gitDecoration.conflictingResourceForeground":"#FFCB6B90","gitDecoration.deletedResourceForeground":"#f0717890","gitDecoration.ignoredResourceForeground":"#6c869290","gitDecoration.modifiedResourceForeground":"#82AAFF90","gitDecoration.untrackedResourceForeground":"#C3E88D90","input.background":"#303C41","input.border":"#FFFFFF10","input.foreground":"#EEFFFF","input.placeholderForeground":"#EEFFFF60","inputOption.activeBackground":"#EEFFFF30","inputOption.activeBorder":"#EEFFFF30","inputValidation.errorBorder":"#f07178","inputValidation.infoBorder":"#82AAFF","inputValidation.warningBorder":"#FFCB6B","list.activeSelectionBackground":"#263238","list.activeSelectionForeground":"#80CBC4","list.dropBackground":"#f0717880","list.focusBackground":"#EEFFFF20","list.focusForeground":"#EEFFFF","list.highlightForeground":"#80CBC4","list.hoverBackground":"#263238","list.hoverForeground":"#FFFFFF","list.inactiveSelectionBackground":"#00000030","list.inactiveSelectionForeground":"#80CBC4","listFilterWidget.background":"#00000030","listFilterWidget.noMatchesOutline":"#00000030","listFilterWidget.outline":"#00000030","menu.background":"#263238","menu.foreground":"#EEFFFF","menu.selectionBackground":"#00000050","menu.selectionBorder":"#00000030","menu.selectionForeground":"#80CBC4","menu.separatorBackground":"#EEFFFF","menubar.selectionBackground":"#00000030","menubar.selectionBorder":"#00000030","menubar.selectionForeground":"#80CBC4","notebook.focusedCellBorder":"#80CBC4","notebook.inactiveFocusedCellBorder":"#80CBC450","notificationLink.foreground":"#80CBC4","notifications.background":"#263238","notifications.foreground":"#EEFFFF","panel.background":"#263238","panel.border":"#26323860","panel.dropBackground":"#EEFFFF","panelTitle.activeBorder":"#80CBC4","panelTitle.activeForeground":"#FFFFFF","panelTitle.inactiveForeground":"#EEFFFF","peekView.border":"#00000030","peekViewEditor.background":"#EEFFFF05","peekViewEditor.matchHighlightBackground":"#80CBC420","peekViewEditorGutter.background":"#EEFFFF05","peekViewResult.background":"#EEFFFF05","peekViewResult.matchHighlightBackground":"#80CBC420","peekViewResult.selectionBackground":"#6c869270","peekViewTitle.background":"#EEFFFF05","peekViewTitleDescription.foreground":"#EEFFFF60","pickerGroup.border":"#FFFFFF1a","pickerGroup.foreground":"#80CBC4","progressBar.background":"#80CBC4","quickInput.background":"#263238","quickInput.foreground":"#6c8692","quickInput.list.focusBackground":"#EEFFFF20","sash.hoverBorder":"#80CBC450","scrollbar.shadow":"#00000030","scrollbarSlider.activeBackground":"#80CBC4","scrollbarSlider.background":"#EEFFFF20","scrollbarSlider.hoverBackground":"#EEFFFF10","selection.background":"#00000080","settings.checkboxBackground":"#263238","settings.checkboxForeground":"#EEFFFF","settings.dropdownBackground":"#263238","settings.dropdownForeground":"#EEFFFF","settings.headerForeground":"#80CBC4","settings.modifiedItemIndicator":"#80CBC4","settings.numberInputBackground":"#263238","settings.numberInputForeground":"#EEFFFF","settings.textInputBackground":"#263238","settings.textInputForeground":"#EEFFFF","sideBar.background":"#263238","sideBar.border":"#26323860","sideBar.foreground":"#6c8692","sideBarSectionHeader.background":"#263238","sideBarSectionHeader.border":"#26323860","sideBarTitle.foreground":"#EEFFFF","statusBar.background":"#263238","statusBar.border":"#26323860","statusBar.debuggingBackground":"#C792EA","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#546E7A","statusBar.noFolderBackground":"#263238","statusBarItem.activeBackground":"#f0717880","statusBarItem.hoverBackground":"#546E7A20","statusBarItem.remoteBackground":"#80CBC4","statusBarItem.remoteForeground":"#000000","tab.activeBackground":"#263238","tab.activeBorder":"#80CBC4","tab.activeForeground":"#FFFFFF","tab.activeModifiedBorder":"#6c8692","tab.border":"#263238","tab.inactiveBackground":"#263238","tab.inactiveForeground":"#6c8692","tab.inactiveModifiedBorder":"#904348","tab.unfocusedActiveBorder":"#546E7A","tab.unfocusedActiveForeground":"#EEFFFF","tab.unfocusedActiveModifiedBorder":"#c05a60","tab.unfocusedInactiveModifiedBorder":"#904348","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#546E7A","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#89DDFF","terminal.ansiBrightGreen":"#C3E88D","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#f07178","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#FFCB6B","terminal.ansiCyan":"#89DDFF","terminal.ansiGreen":"#C3E88D","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#f07178","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#FFCB6B","terminalCursor.background":"#000000","terminalCursor.foreground":"#FFCB6B","textLink.activeForeground":"#EEFFFF","textLink.foreground":"#80CBC4","titleBar.activeBackground":"#263238","titleBar.activeForeground":"#EEFFFF","titleBar.border":"#26323860","titleBar.inactiveBackground":"#263238","titleBar.inactiveForeground":"#6c8692","tree.indentGuidesStroke":"#37474F","widget.shadow":"#00000030"},displayName:"Material Theme",name:"material-theme",semanticHighlighting:!0,tokenColors:[{settings:{background:"#263238",foreground:"#EEFFFF"}},{scope:"string",settings:{foreground:"#C3E88D"}},{scope:"punctuation, constant.other.symbol",settings:{foreground:"#89DDFF"}},{scope:"constant.character.escape, text.html constant.character.entity.named",settings:{foreground:"#EEFFFF"}},{scope:"constant.language.boolean",settings:{foreground:"#ff9cac"}},{scope:"constant.numeric",settings:{foreground:"#F78C6C"}},{scope:"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",settings:{foreground:"#EEFFFF"}},{scope:"keyword.other",settings:{foreground:"#F78C6C"}},{scope:"keyword, modifier, variable.language.this, support.type.object, constant.language",settings:{foreground:"#89DDFF"}},{scope:"entity.name.function, support.function",settings:{foreground:"#82AAFF"}},{scope:"storage.type, storage.modifier, storage.control",settings:{foreground:"#C792EA"}},{scope:"support.module, support.node",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"support.type, constant.other.key",settings:{foreground:"#FFCB6B"}},{scope:"entity.name.type, entity.other.inherited-class, entity.other",settings:{foreground:"#FFCB6B"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#546E7A"}},{scope:"comment punctuation.definition.comment, string.quoted.docstring",settings:{fontStyle:"italic",foreground:"#546E7A"}},{scope:"punctuation",settings:{foreground:"#89DDFF"}},{scope:"entity.name, entity.name.type.class, support.type, support.class, meta.use",settings:{foreground:"#FFCB6B"}},{scope:"variable.object.property, meta.field.declaration entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.definition.method entity.name.function",settings:{foreground:"#f07178"}},{scope:"meta.function entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",settings:{foreground:"#89DDFF"}},{scope:"meta.embedded, source.groovy.embedded, meta.template.expression",settings:{foreground:"#EEFFFF"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#f07178"}},{scope:"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",settings:{foreground:"#f07178"}},{scope:"constant.language.json",settings:{foreground:"#89DDFF"}},{scope:"entity.other.attribute-name.class",settings:{foreground:"#FFCB6B"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#F78C6C"}},{scope:"source.css entity.name.tag",settings:{foreground:"#FFCB6B"}},{scope:"support.type.property-name.css",settings:{foreground:"#B2CCD6"}},{scope:"meta.tag, punctuation.definition.tag",settings:{foreground:"#89DDFF"}},{scope:"entity.name.tag",settings:{foreground:"#f07178"}},{scope:"entity.other.attribute-name",settings:{foreground:"#C792EA"}},{scope:"punctuation.definition.entity.html",settings:{foreground:"#EEFFFF"}},{scope:"markup.heading",settings:{foreground:"#89DDFF"}},{scope:"text.html.markdown meta.link.inline, meta.link.reference",settings:{foreground:"#f07178"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#89DDFF"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#f07178"}},{scope:"markup.bold markup.italic, markup.italic markup.bold",settings:{fontStyle:"italic bold",foreground:"#f07178"}},{scope:"markup.fenced_code.block.markdown punctuation.definition.markdown",settings:{foreground:"#C3E88D"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#C3E88D"}},{scope:"keyword.other.definition.ini",settings:{foreground:"#f07178"}},{scope:"entity.name.section.group-title.ini",settings:{foreground:"#89DDFF"}},{scope:"source.cs meta.class.identifier storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.identifier entity.name.function",settings:{foreground:"#f07178"}},{scope:"source.cs meta.method-call meta.method, source.cs entity.name.function",settings:{foreground:"#82AAFF"}},{scope:"source.cs storage.type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.method.return-type",settings:{foreground:"#FFCB6B"}},{scope:"source.cs meta.preprocessor",settings:{foreground:"#546E7A"}},{scope:"source.cs entity.name.type.namespace",settings:{foreground:"#EEFFFF"}},{scope:"meta.jsx.children, SXNested",settings:{foreground:"#EEFFFF"}},{scope:"support.class.component",settings:{foreground:"#FFCB6B"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#EEFFFF"}},{scope:"source.python meta.member.access.python",settings:{foreground:"#f07178"}},{scope:"source.python meta.function-call.python, meta.function-call.arguments",settings:{foreground:"#82AAFF"}},{scope:"meta.block",settings:{foreground:"#f07178"}},{scope:"entity.name.function.call",settings:{foreground:"#82AAFF"}},{scope:"source.php support.other.namespace, source.php meta.use support.class",settings:{foreground:"#EEFFFF"}},{scope:"constant.keyword",settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:"entity.name.function",settings:{foreground:"#82AAFF"}},{settings:{background:"#263238",foreground:"#EEFFFF"}},{scope:["constant.other.placeholder"],settings:{foreground:"#f07178"}},{scope:["markup.deleted"],settings:{foreground:"#f07178"}},{scope:["markup.inserted"],settings:{foreground:"#C3E88D"}},{scope:["markup.underline"],settings:{fontStyle:"underline"}},{scope:["keyword.control"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["variable.parameter"],settings:{fontStyle:"italic"}},{scope:["variable.parameter.function.language.special.self.python"],settings:{fontStyle:"italic",foreground:"#f07178"}},{scope:["constant.character.format.placeholder.other.python"],settings:{foreground:"#F78C6C"}},{scope:["markup.quote"],settings:{fontStyle:"italic",foreground:"#89DDFF"}},{scope:["markup.fenced_code.block"],settings:{foreground:"#EEFFFF90"}},{scope:["punctuation.definition.quote"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFCB6B"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#F78C6C"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f07178"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#916b53"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#82AAFF"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ff9cac"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C792EA"}},{scope:["meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#C3E88D"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/matlab.Btshr8M_.js b/assets/chunks/matlab.Btshr8M_.js new file mode 100644 index 000000000..2058bdf48 --- /dev/null +++ b/assets/chunks/matlab.Btshr8M_.js @@ -0,0 +1,70 @@ +const e=Object.freeze({displayName:"MATLAB",fileTypes:["m"],name:"matlab",patterns:[{comment:"This and #all_after_command_dual are split out so #command_dual can be excluded in things like (), {}, []",include:"#all_before_command_dual"},{include:"#command_dual"},{include:"#all_after_command_dual"}],repository:{all_after_command_dual:{patterns:[{include:"#string"},{include:"#line_continuation"},{include:"#comments"},{include:"#conjugate_transpose"},{include:"#transpose"},{include:"#constants"},{include:"#variables"},{include:"#numbers"},{include:"#operators"}]},all_before_command_dual:{patterns:[{include:"#classdef"},{include:"#function"},{include:"#blocks"},{include:"#control_statements"},{include:"#global_persistent"},{include:"#parens"},{include:"#square_brackets"},{include:"#indexing_curly_brackets"},{include:"#curly_brackets"}]},blocks:{patterns:[{begin:"\\s*(?:^|[\\s,;])(for)\\b",beginCaptures:{1:{name:"keyword.control.for.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.for.matlab"}},name:"meta.for.matlab",patterns:[{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(if)\\b",beginCaptures:{1:{name:"keyword.control.if.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.if.matlab"},2:{patterns:[{include:"$self"}]}},name:"meta.if.matlab",patterns:[{captures:{2:{name:"keyword.control.elseif.matlab"},3:{patterns:[{include:"$self"}]}},end:"^",match:"(\\s*)(?:^|[\\s,;])(elseif)\\b(.*)$\\n?",name:"meta.elseif.matlab"},{captures:{2:{name:"keyword.control.else.matlab"},3:{patterns:[{include:"$self"}]}},end:"^",match:"(\\s*)(?:^|[\\s,;])(else)\\b(.*)?$\\n?",name:"meta.else.matlab"},{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(parfor)\\b",beginCaptures:{1:{name:"keyword.control.for.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.for.matlab"}},name:"meta.parfor.matlab",patterns:[{begin:"\\G(?!$)",end:"$\\n?",name:"meta.parfor-quantity.matlab",patterns:[{include:"$self"}]},{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(spmd)\\b",beginCaptures:{1:{name:"keyword.control.spmd.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.spmd.matlab"}},name:"meta.spmd.matlab",patterns:[{begin:"\\G(?!$)",end:"$\\n?",name:"meta.spmd-statement.matlab",patterns:[{include:"$self"}]},{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(switch)\\b",beginCaptures:{1:{name:"keyword.control.switch.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.switch.matlab"}},name:"meta.switch.matlab",patterns:[{captures:{2:{name:"keyword.control.case.matlab"},3:{patterns:[{include:"$self"}]}},end:"^",match:"(\\s*)(?:^|[\\s,;])(case)\\b(.*)$\\n?",name:"meta.case.matlab"},{captures:{2:{name:"keyword.control.otherwise.matlab"},3:{patterns:[{include:"$self"}]}},end:"^",match:"(\\s*)(?:^|[\\s,;])(otherwise)\\b(.*)?$\\n?",name:"meta.otherwise.matlab"},{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(try)\\b",beginCaptures:{1:{name:"keyword.control.try.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.try.matlab"}},name:"meta.try.matlab",patterns:[{captures:{2:{name:"keyword.control.catch.matlab"},3:{patterns:[{include:"$self"}]}},end:"^",match:"(\\s*)(?:^|[\\s,;])(catch)\\b(.*)?$\\n?",name:"meta.catch.matlab"},{include:"$self"}]},{begin:"\\s*(?:^|[\\s,;])(while)\\b",beginCaptures:{1:{name:"keyword.control.while.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.while.matlab"}},name:"meta.while.matlab",patterns:[{include:"$self"}]}]},braced_validator_list:{begin:"\\s*({)\\s*",beginCaptures:{1:{name:"storage.type.matlab"}},comment:"Validator functions. Treated as a recursive group to permit nested brackets, quotes, etc.",end:"(})",endCaptures:{1:{name:"storage.type.matlab"}},patterns:[{include:"#braced_validator_list"},{include:"#validator_strings"},{include:"#line_continuation"},{captures:{1:{name:"storage.type.matlab"}},match:`([^{}}'"\\.]+)`},{match:"\\.",name:"storage.type.matlab"}]},classdef:{patterns:[{begin:`(?x) +(^\\s*) +(classdef) +\\b\\s* +(.*) +`,beginCaptures:{2:{name:"storage.type.class.matlab"},3:{patterns:[{captures:{1:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"variable.parameter.class.matlab"},{begin:"=\\s*",end:",|(?=\\))",patterns:[{match:"true|false",name:"constant.language.boolean.matlab"},{include:"#string"}]}]},2:{name:"meta.class-declaration.matlab"},3:{name:"entity.name.section.class.matlab"},4:{name:"keyword.operator.other.matlab"},5:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*",name:"entity.other.inherited-class.matlab"},{match:"&",name:"keyword.operator.other.matlab"}]},6:{patterns:[{include:"$self"}]}},match:`(?x) + ( # Optional attributes + \\( [^)]* \\) + )? + \\s* + ( + ([a-zA-Z][a-zA-Z0-9_]*) # Class name + (?: # Optional inheritance + \\s* + (<) + \\s* + ([^%]*) + )? + ) + \\s*($|(?=(%|...)).*) + `}]}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.class.matlab"}},name:"meta.class.matlab",patterns:[{begin:`(?x) +(^\\s*) +(properties)\\b([^%]*) +\\s* +( +\\( [^)]* \\) +)? +\\s*($|(?=%)) +`,beginCaptures:{2:{name:"keyword.control.properties.matlab"},3:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"variable.parameter.properties.matlab"},{begin:"=\\s*",end:",|(?=\\))",patterns:[{match:"true|false",name:"constant.language.boolean.matlab"},{match:"public|protected|private",name:"constant.language.access.matlab"}]}]}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.properties.matlab"}},name:"meta.properties.matlab",patterns:[{include:"#validators"},{include:"$self"}]},{begin:`(?x) +(^\\s*) +(methods)\\b([^%]*) +\\s* +( +\\( [^)]* \\) +)? +\\s*($|(?=%)) +`,beginCaptures:{2:{name:"keyword.control.methods.matlab"},3:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"variable.parameter.methods.matlab"},{begin:"=\\s*",end:",|(?=\\))",patterns:[{match:"true|false",name:"constant.language.boolean.matlab"},{match:"public|protected|private",name:"constant.language.access.matlab"}]}]}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.methods.matlab"}},name:"meta.methods.matlab",patterns:[{include:"$self"}]},{begin:`(?x) +(^\\s*) +(events)\\b([^%]*) +\\s* +( +\\( [^)]* \\) +)? +\\s*($|(?=%)) +`,beginCaptures:{2:{name:"keyword.control.events.matlab"},3:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"variable.parameter.events.matlab"},{begin:"=\\s*",end:",|(?=\\))",patterns:[{match:"true|false",name:"constant.language.boolean.matlab"},{match:"public|protected|private",name:"constant.language.access.matlab"}]}]}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.events.matlab"}},name:"meta.events.matlab",patterns:[{include:"$self"}]},{begin:`(?x) +(^\\s*) +(enumeration)\\b([^%]*) +\\s*($|(?=%)) +`,beginCaptures:{2:{name:"keyword.control.enumeration.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.enumeration.matlab"}},name:"meta.enumeration.matlab",patterns:[{include:"$self"}]},{include:"$self"}]}]},command_dual:{captures:{1:{name:"string.interpolated.matlab"},2:{name:"variable.other.command.matlab"},28:{name:"comment.line.percentage.matlab"}},comment:" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 25 26 27 28",match:`^\\s*((?# A> )([b-df-hk-moq-zA-HJ-MO-Z]\\w*|a|an|a([A-Za-mo-z0-9_]\\w*|n[A-Za-rt-z0-9_]\\w*|ns\\w+)|e|ep|e([A-Za-oq-z0-9_]\\w*|p[A-Za-rt-z0-9_]\\w*|ps\\w+)|in|i([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|I|In|I([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|j\\w+|N|Na|N([A-Zb-z0-9_]\\w*|a[A-MO-Za-z0-9_]\\w*|aN\\w+)|n|na|nar|narg|nargi|nargo|nargou|n([A-Zb-z0-9_]\\w*|a([A-Za-mo-qs-z0-9_]\\w*|n\\w+|r([A-Za-fh-z0-9_]\\w*|g([A-Za-hj-nq-z0-9_]\\w*|i([A-Za-mo-z0-9_]\\w*|n\\w+)|o([A-Za-tv-z0-9_]\\w*|u([A-Za-su-z]\\w*|t\\w+))))))|p|p[A-Za-hj-z0-9_]\\w*|pi\\w+)(?# <A )\\s+(((?# B> )([^\\s;,%()=.{&|~<>:+\\-*/\\\\@^'"]|(?=')|(?="))(?# <B )|(?# C> )(\\.\\^|\\.\\*|\\./|\\.\\\\|\\.'|\\.\\(|&&|==|\\|\\||&(?=[^&])|\\|(?=[^\\|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|:|\\+|-|\\*|/|\\\\|@|\\^)(?# <C )(?# D> )([^\\s]|\\s*(?=%)|\\s+$|\\s+(,|;|\\)|}|\\]|&|\\||<|>|=|:|\\*|/|\\\\|\\^|@|(\\.[^\\d.]|\\.\\.[^.])))(?# <D )|(?# E> )(\\.[^^*/\\\\'(\\sA-Za-z])(?# <E ))(?# F> )([^%]|'[^']*'|"[^"]*")*(?# <F )|(?# X> )(\\.(?=\\s)|\\.[A-Za-z]|(?={))(?# <X )(?# Y> )([^(=\\'"%]|==|'[^']*'|"[^"]*"|\\(|\\([^)%]*\\)|\\[|\\[[^\\]%]*\\]|{|{[^}%]*})*(\\.\\.\\.[^%]*)?((?=%)|$)(?# <Y )))(%.*)?$`},comment_block:{begin:"(^[\\s]*)%\\{[^\\n\\S]*+\\n",beginCaptures:{1:{name:"punctuation.definition.comment.matlab"}},end:"^[\\s]*%\\}[^\\n\\S]*+(?:\\n|$)",name:"comment.block.percentage.matlab",patterns:[{include:"#comment_block"},{match:"^[^\\n]*\\n"}]},comments:{patterns:[{begin:"(^[ \\t]+)?(?=%%\\s)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.matlab"}},end:"(?!\\G)",patterns:[{begin:"%%",beginCaptures:{0:{name:"punctuation.definition.comment.matlab"}},end:"\\n",name:"comment.line.double-percentage.matlab",patterns:[{begin:"\\G[^\\S\\n]*(?![\\n\\s])",contentName:"meta.cell.matlab",end:"(?=\\n)"}]}]},{include:"#comment_block"},{begin:"(^[ \\t]+)?(?=%)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.matlab"}},end:"(?!\\G)",patterns:[{begin:"%",beginCaptures:{0:{name:"punctuation.definition.comment.matlab"}},end:"\\n",name:"comment.line.percentage.matlab"}]}]},conjugate_transpose:{match:"((?<=[^\\s])|(?<=\\])|(?<=\\))|(?<=\\}))'",name:"keyword.operator.transpose.matlab"},constants:{comment:"MATLAB Constants",match:"(?<!\\.)\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\b",name:"constant.language.matlab"},control_statements:{captures:{1:{name:"keyword.control.matlab"}},match:"\\s*(?:^|[\\s,;])(break|continue|return)\\b",name:"meta.control.matlab"},curly_brackets:{begin:"\\{",comment:"We don't include $self here to avoid matching command syntax inside (), [], {}",end:"\\}",patterns:[{include:"#end_in_parens"},{include:"#all_before_command_dual"},{include:"#all_after_command_dual"},{include:"#end_in_parens"},{comment:"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",include:"#block_keywords"}]},end_in_parens:{comment:"end as operator symbol",match:"\\bend\\b",name:"keyword.operator.symbols.matlab"},function:{patterns:[{begin:`(?x) +(^\\s*) +(function) +\\s+ +(?: +(?: +(\\[) ([^\\]]*) (\\]) +| ([a-zA-Z][a-zA-Z0-9_]*) +) +\\s* = \\s* +)? +([a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*) +\\s* +`,beginCaptures:{2:{name:"storage.type.function.matlab"},3:{name:"punctuation.definition.arguments.begin.matlab"},4:{patterns:[{match:"\\w+",name:"variable.parameter.output.matlab"}]},5:{name:"punctuation.definition.arguments.end.matlab"},6:{name:"variable.parameter.output.function.matlab"},7:{name:"entity.name.function.matlab"}},end:"\\s*(?:^|[\\s,;])(end)\\b(\\s*\\n)?",endCaptures:{1:{name:"keyword.control.end.function.matlab"}},name:"meta.function.matlab",patterns:[{begin:"\\G\\(",end:"\\)",name:"meta.arguments.function.matlab",patterns:[{include:"#line_continuation"},{match:"\\w+",name:"variable.parameter.input.matlab"}]},{begin:`(?x) +(^\\s*) +(arguments)\\b([^%]*) +\\s* +( +\\( [^)]* \\) +)? +\\s*($|(?=%)) +`,beginCaptures:{2:{name:"keyword.control.arguments.matlab"},3:{patterns:[{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"variable.parameter.arguments.matlab"}]}},end:"\\s*(?:^|[\\s,;])(end)\\b",endCaptures:{1:{name:"keyword.control.end.arguments.matlab"}},name:"meta.arguments.matlab",patterns:[{include:"#validators"},{include:"$self"}]},{include:"$self"}]}]},global_persistent:{captures:{1:{name:"keyword.control.globalpersistent.matlab"}},match:"^\\s*(global|persistent)\\b",name:"meta.globalpersistent.matlab"},indexing_curly_brackets:{Comment:"Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx ",begin:"([a-zA-Z][a-zA-Z0-9_\\.]*\\s*)\\{",beginCaptures:{1:{patterns:[{include:"$self"}]}},comment:"We don't include $self here to avoid matching command syntax inside (), [], {}",end:"(\\}|(?<!\\.\\.\\.).\\n)",patterns:[{include:"#end_in_parens"},{include:"#all_before_command_dual"},{include:"#all_after_command_dual"},{include:"#end_in_parens"},{comment:"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",include:"#block_keywords"}]},line_continuation:{captures:{1:{name:"keyword.operator.symbols.matlab"},2:{name:"comment.line.continuation.matlab"}},comment:"Line continuations",match:"(\\.\\.\\.)(.*)$",name:"meta.linecontinuation.matlab"},numbers:{comment:"Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j",match:"(?<=[\\s\\-\\+\\*\\/\\\\=:\\[\\(\\{,]|^)\\d*\\.?\\d+([eE][+-]?\\d)?([0-9&&[^\\.]])*(i|j)?\\b",name:"constant.numeric.matlab"},operators:{comment:"Operator symbols",match:"(?<=\\s)(==|~=|>|>=|<|<=|&|&&|:|\\||\\|\\||\\+|-|\\*|\\.\\*|/|\\./|\\\\|\\.\\\\|\\^|\\.\\^)(?=\\s)",name:"keyword.operator.symbols.matlab"},parens:{begin:"\\(",comment:"We don't include $self here to avoid matching command syntax inside (), [], {}",end:"(\\)|(?<!\\.\\.\\.).\\n)",patterns:[{include:"#end_in_parens"},{include:"#all_before_command_dual"},{include:"#all_after_command_dual"},{comment:"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",include:"#block_keywords"}]},square_brackets:{begin:"\\[",comment:"We don't include $self here to avoid matching command syntax inside (), [], {}",end:"\\]",patterns:[{include:"#all_before_command_dual"},{include:"#all_after_command_dual"},{comment:"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",include:"#block_keywords"}]},string:{patterns:[{captures:{1:{name:"string.interpolated.matlab"},2:{name:"punctuation.definition.string.begin.matlab"}},comment:"Shell command",match:"^\\s*((!).*$\\n?)"},{begin:"((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",beginCaptures:{0:{name:"punctuation.definition.string.begin.matlab"}},comment:"Character vector literal (single-quoted)",end:"'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",endCaptures:{0:{name:"punctuation.definition.string.end.matlab"}},name:"string.quoted.single.matlab",patterns:[{match:"''",name:"constant.character.escape.matlab"},{match:"'(?=.)",name:"invalid.illegal.unescaped-quote.matlab"},{comment:"Operator symbols",match:"((\\%([\\+\\-0]?\\d{0,3}(\\.\\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\\%\\%|\\\\(b|f|n|r|t|\\\\))",name:"constant.character.escape.matlab"}]},{begin:'((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)"',beginCaptures:{0:{name:"punctuation.definition.string.begin.matlab"}},comment:"String literal (double-quoted)",end:'"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))',endCaptures:{0:{name:"punctuation.definition.string.end.matlab"}},name:"string.quoted.double.matlab",patterns:[{match:'""',name:"constant.character.escape.matlab"},{match:'"(?=.)',name:"invalid.illegal.unescaped-quote.matlab"}]}]},transpose:{match:"\\.'",name:"keyword.operator.transpose.matlab"},validator_strings:{comment:"Simplified string patterns nested inside validator functions which don't change scopes of matches.",patterns:[{patterns:[{begin:"((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",comment:"Character vector literal (single-quoted)",end:"'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",name:"storage.type.matlab",patterns:[{match:"''"},{match:"'(?=.)"},{match:"([^']+)"}]},{begin:'((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)"',comment:"String literal (double-quoted)",end:'"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))',name:"storage.type.matlab",patterns:[{match:'""'},{match:'"(?=.)'},{match:'[^"]+'}]}]}]},validators:{begin:"\\s*[;]?\\s*([a-zA-Z][a-zA-Z0-9_\\.\\?]*)",comment:"Property and argument validation. Match an identifier allowing . and ?.",end:"([;\\n%=].*)",endCaptures:{1:{patterns:[{captures:{1:{patterns:[{include:"$self"}]}},comment:"Match comments",match:"([%].*)"},{captures:{1:{patterns:[{include:"$self"}]}},comment:"Handle things like arg = val; nextArg",match:"(=[^;]*)"},{captures:{1:{patterns:[{include:"#validators"}]}},comment:"End of property/argument patterns which start a new property/argument. Look for beginning of identifier after semicolon. Otherwise treat as regular code.",match:"([\\n;]\\s*[a-zA-Z].*)"},{include:"$self"}]}},patterns:[{include:"#line_continuation"},{comment:"Size declaration",match:"\\s*(\\([^\\)]*\\))",name:"storage.type.matlab"},{comment:"Type declaration",match:"([a-zA-Z][a-zA-Z0-9_\\.]*)",name:"storage.type.matlab"},{include:"#braced_validator_list"}]},variables:{comment:"MATLAB variables",match:"(?<!\\.)\\b(nargin|nargout|varargin|varargout)\\b",name:"variable.other.function.matlab"}},scopeName:"source.matlab"});var a=[e];export{a as default}; diff --git a/assets/chunks/mdc.BtXAnNXs.js b/assets/chunks/mdc.BtXAnNXs.js new file mode 100644 index 000000000..3f598f861 --- /dev/null +++ b/assets/chunks/mdc.BtXAnNXs.js @@ -0,0 +1,76 @@ +import e from"./markdown.BdfWgkoX.js";import r from"./yaml.C5gCGmDW.js";import t from"./html-derivative.fiapQfxX.js";import"./html.CuK0VrWf.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";const a=Object.freeze({displayName:"MDC",injectionSelector:"L:text.html.markdown",name:"mdc",patterns:[{include:"#component_block"},{include:"#inline"}],repository:{attribute:{patterns:[{captures:{2:{name:"entity.other.attribute-name.html"},3:{patterns:[{include:"#attribute-interior"}]}},match:`(?x) +( +([^=><\\s]*) +( +=["]([^"]*)(["])|[']([^']*)([']) +| =[^\\s'"}]* +)? +\\s* +)`}]},"attribute-interior":{patterns:[{begin:"=",beginCaptures:{0:{name:"punctuation.separator.key-value.html"}},end:"(?<=[^\\s=])(?!\\s*=)|(?=/?>)",patterns:[{match:"([^\\s\"'=<>`/]|/(?!>))+",name:"string.unquoted.html"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.double.html",patterns:[{include:"#entities"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.single.html",patterns:[{include:"#entities"}]},{match:"=",name:"invalid.illegal.unexpected-equals-sign.html"}]}]},attributes:{captures:{1:{name:"punctuation.definition.tag.start.component"},3:{patterns:[{include:"#attribute"}]},4:{name:"punctuation.definition.tag.end.component"}},match:`(?x)( +({) +([^{]*) +(}) +)`,name:"attributes.mdc"},block:{patterns:[{include:"#component_block"},{include:"text.html.markdown#separator"},{include:"#heading"},{include:"#blockquote"},{include:"#lists"},{include:"text.html.markdown#fenced_code_block"},{include:"text.html.markdown#link-def"},{include:"text.html.markdown#html"},{include:"#paragraph"}]},blockquote:{begin:"(^|\\G)[ ]*(>) ?",captures:{2:{name:"punctuation.definition.quote.begin.markdown"}},name:"markup.quote.markdown",patterns:[{include:"#block"}],while:"(^|\\G)\\s*(>) ?"},component_block:{begin:`(?x) +(^|\\G)(\\s*) +(:{2,}) +(?i: +(\\w[\\w\\d-]+) +( +\\s* +| \\s*({[^{]*}) +) +$ +)`,beginCaptures:{3:{name:"punctuation.definition.tag.start.mdc"},4:{name:"entity.name.tag.mdc"},5:{patterns:[{include:"#attributes"}]}},end:"(^|\\G)(\\2)(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.tag.end.mdc"}},name:"block.component.mdc",patterns:[{captures:{2:{name:"punctuation.definition.tag.end.mdc"}},match:"(^|\\G)\\s*([:]{2,})$"},{include:"#content"}]},component_inline:{captures:{2:{name:"punctuation.definition.tag.start.component"},3:{name:"entity.name.tag.component"},5:{patterns:[{include:"#attributes"}]},6:{patterns:[{include:"#span"}]},7:{patterns:[{include:"#span"}]},8:{patterns:[{include:"#attributes"}]}},match:`(?x) +(^|\\G|\\s+) +(:) +(?i: +(\\w[\\w\\d-]*) +) +( +({[^}]*}) +(\\[[^\\]]*\\])? + +| (\\[[^\\]]*\\]) +({[^}]*})? +)? +\\s`,name:"inline.component.mdc"},content:{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.mdc",patterns:[{begin:"(^|\\G)(\\s*)(-{3})(\\s*)$",end:"(^|\\G)(\\s*(-{3})(\\s*)$)",patterns:[{include:"source.yaml"}]},{captures:{2:{name:"entity.other.attribute-name.html"},3:{name:"comment.block.html"}},match:"^(\\s*)(#[\\w\\-\\_]*)\\s*(<!--(.*)-->)?$"},{include:"#block"}],while:"(^|\\G)(?!\\s*([:]{2,})\\s*$)"},entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.html"},912:{name:"punctuation.definition.entity.html"}},match:`(?x) +(&) (?=[a-zA-Z]) +( +(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve)) +| (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?)) +| (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross)) +| (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger))) +| (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr))) +| (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr)) +| (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve)) +| (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy)) +| (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?)) +| (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr)) +| (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa)) +| (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot)) +| (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker))) +| (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute)) +| (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr))) +| (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?)) +| (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr)) +| (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))) +| (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle)) +| (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot)) +| (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve))) +| (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar)) +| (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr)) +| (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map)) +| (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy)) +| (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)) +) +(;) +`,name:"constant.character.entity.named.$2.html"},{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)#[0-9]+(;)",name:"constant.character.entity.numeric.decimal.html"},{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)#[xX][0-9a-fA-F]+(;)",name:"constant.character.entity.numeric.hexadecimal.html"},{match:"&(?=[a-zA-Z0-9]+;)",name:"invalid.illegal.ambiguous-ampersand.html"}]},heading:{captures:{1:{patterns:[{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.6.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.5.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.4.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.3.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.2.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.1.markdown"}]}},match:"(?:^|\\G)[ ]*(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$",name:"markup.heading.markdown",patterns:[{include:"text.html.markdown#inline"}]},"heading-setext":{patterns:[{match:"^(={3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.1.markdown"},{match:"^(-{3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.2.markdown"}]},inline:{patterns:[{include:"#component_inline"},{include:"#span"},{include:"#attributes"}]},lists:{patterns:[{begin:"(^|\\G)([ ]*)([*+-])([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},name:"markup.list.unnumbered.markdown",patterns:[{include:"#block"},{include:"text.html.markdown#list_paragraph"}],while:"((^|\\G)([ ]*|\\t))|(^[ \\t]*$)"},{begin:"(^|\\G)([ ]*)([0-9]+\\.)([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},name:"markup.list.numbered.markdown",patterns:[{include:"#block"},{include:"text.html.markdown#list_paragraph"}],while:"((^|\\G)([ ]*|\\t))|(^[ \\t]*$)"}]},paragraph:{begin:"(^|\\G)[ ]*(?=\\S)",name:"meta.paragraph.markdown",patterns:[{include:"text.html.markdown#inline"},{include:"text.html.derivative"},{include:"#heading-setext"}],while:"(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=\\S))"},span:{captures:{1:{name:"punctuation.definition.tag.start.component"},2:{name:"string.other.link.description.title.markdown"},3:{name:"punctuation.definition.tag.end.component"},4:{patterns:[{include:"#attributes"}]}},match:`(?x) +(\\[) +([^]]*) +(\\]) +( +({) +([^{]*) +(}) +)? +\\s`,name:"span.component.mdc"}},scopeName:"text.markdown.mdc",embeddedLangs:["markdown","yaml","html-derivative"]});var u=[...e,...r,...t,a];export{u as default}; diff --git a/assets/chunks/mdx.CBPJd_fO.js b/assets/chunks/mdx.CBPJd_fO.js new file mode 100644 index 000000000..45e169027 --- /dev/null +++ b/assets/chunks/mdx.CBPJd_fO.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"MDX",fileTypes:["mdx"],name:"mdx",patterns:[{include:"#markdown-frontmatter"},{include:"#markdown-sections"}],repository:{"commonmark-attention":{patterns:[{match:"(?<=\\S)\\*{3,}|\\*{3,}(?=\\S)",name:"string.other.strong.emphasis.asterisk.mdx"},{match:"(?<=[\\p{L}\\p{N}])_{3,}(?![\\p{L}\\p{N}])|(?<=\\p{P})_{3,}|(?<![\\p{L}\\p{N}]|\\p{P})_{3,}(?!\\s)",name:"string.other.strong.emphasis.underscore.mdx"},{match:"(?<=\\S)\\*{2}|\\*{2}(?=\\S)",name:"string.other.strong.asterisk.mdx"},{match:"(?<=[\\p{L}\\p{N}])_{2}(?![\\p{L}\\p{N}])|(?<=\\p{P})_{2}|(?<![\\p{L}\\p{N}]|\\p{P})_{2}(?!\\s)",name:"string.other.strong.underscore.mdx"},{match:"(?<=\\S)\\*|\\*(?=\\S)",name:"string.other.emphasis.asterisk.mdx"},{match:"(?<=[\\p{L}\\p{N}])_(?![\\p{L}\\p{N}])|(?<=\\p{P})_|(?<![\\p{L}\\p{N}]|\\p{P})_(?!\\s)",name:"string.other.emphasis.underscore.mdx"}]},"commonmark-block-quote":{begin:"(?:^|\\G)[\\t ]*(>)[ ]?",beginCaptures:{0:{name:"markup.quote.mdx"},1:{name:"punctuation.definition.quote.begin.mdx"}},name:"markup.quote.mdx",patterns:[{include:"#markdown-sections"}],while:"(>)[ ]?",whileCaptures:{0:{name:"markup.quote.mdx"},1:{name:"punctuation.definition.quote.begin.mdx"}}},"commonmark-character-escape":{match:"\\\\(?:[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])",name:"constant.language.character-escape.mdx"},"commonmark-character-reference":{patterns:[{include:"#whatwg-html-data-character-reference-named-terminated"},{captures:{1:{name:"punctuation.definition.character-reference.begin.html"},2:{name:"punctuation.definition.character-reference.numeric.html"},3:{name:"punctuation.definition.character-reference.numeric.hexadecimal.html"},4:{name:"constant.numeric.integer.hexadecimal.html"},5:{name:"punctuation.definition.character-reference.end.html"}},match:"(&)(#)([Xx])([0-9A-Fa-f]{1,6})(;)",name:"constant.language.character-reference.numeric.hexadecimal.html"},{captures:{1:{name:"punctuation.definition.character-reference.begin.html"},2:{name:"punctuation.definition.character-reference.numeric.html"},3:{name:"constant.numeric.integer.decimal.html"},4:{name:"punctuation.definition.character-reference.end.html"}},match:"(&)(#)([0-9]{1,7})(;)",name:"constant.language.character-reference.numeric.decimal.html"}]},"commonmark-code-fenced":{patterns:[{include:"#commonmark-code-fenced-apib"},{include:"#commonmark-code-fenced-asciidoc"},{include:"#commonmark-code-fenced-c"},{include:"#commonmark-code-fenced-clojure"},{include:"#commonmark-code-fenced-coffee"},{include:"#commonmark-code-fenced-console"},{include:"#commonmark-code-fenced-cpp"},{include:"#commonmark-code-fenced-cs"},{include:"#commonmark-code-fenced-css"},{include:"#commonmark-code-fenced-diff"},{include:"#commonmark-code-fenced-dockerfile"},{include:"#commonmark-code-fenced-elixir"},{include:"#commonmark-code-fenced-elm"},{include:"#commonmark-code-fenced-erlang"},{include:"#commonmark-code-fenced-gitconfig"},{include:"#commonmark-code-fenced-go"},{include:"#commonmark-code-fenced-graphql"},{include:"#commonmark-code-fenced-haskell"},{include:"#commonmark-code-fenced-html"},{include:"#commonmark-code-fenced-ini"},{include:"#commonmark-code-fenced-java"},{include:"#commonmark-code-fenced-js"},{include:"#commonmark-code-fenced-json"},{include:"#commonmark-code-fenced-julia"},{include:"#commonmark-code-fenced-kotlin"},{include:"#commonmark-code-fenced-less"},{include:"#commonmark-code-fenced-less"},{include:"#commonmark-code-fenced-lua"},{include:"#commonmark-code-fenced-makefile"},{include:"#commonmark-code-fenced-md"},{include:"#commonmark-code-fenced-mdx"},{include:"#commonmark-code-fenced-objc"},{include:"#commonmark-code-fenced-perl"},{include:"#commonmark-code-fenced-php"},{include:"#commonmark-code-fenced-php"},{include:"#commonmark-code-fenced-python"},{include:"#commonmark-code-fenced-r"},{include:"#commonmark-code-fenced-raku"},{include:"#commonmark-code-fenced-ruby"},{include:"#commonmark-code-fenced-rust"},{include:"#commonmark-code-fenced-scala"},{include:"#commonmark-code-fenced-scss"},{include:"#commonmark-code-fenced-shell"},{include:"#commonmark-code-fenced-shell-session"},{include:"#commonmark-code-fenced-sql"},{include:"#commonmark-code-fenced-svg"},{include:"#commonmark-code-fenced-swift"},{include:"#commonmark-code-fenced-toml"},{include:"#commonmark-code-fenced-ts"},{include:"#commonmark-code-fenced-tsx"},{include:"#commonmark-code-fenced-vbnet"},{include:"#commonmark-code-fenced-xml"},{include:"#commonmark-code-fenced-yaml"},{include:"#commonmark-code-fenced-unknown"}]},"commonmark-code-fenced-apib":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:api\\x2dblueprint|(?:.*\\.)?apib))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.apib",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.apib.mdx",patterns:[{include:"text.html.markdown.source.gfm.apib"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:api\\x2dblueprint|(?:.*\\.)?apib))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.apib",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.apib.mdx",patterns:[{include:"text.html.markdown.source.gfm.apib"}]}]},"commonmark-code-fenced-asciidoc":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:adoc|asciidoc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.asciidoc",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.asciidoc.mdx",patterns:[{include:"text.html.asciidoc"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:adoc|asciidoc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.asciidoc",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.asciidoc.mdx",patterns:[{include:"text.html.asciidoc"}]}]},"commonmark-code-fenced-c":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:dtrace|dtrace\\x2dscript|oncrpc|rpc|rpcgen|unified\\x2dparallel\\x2dc|x\\x2dbitmap|x\\x2dpixmap|xdr|(?:.*\\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.c",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.c.mdx",patterns:[{include:"source.c"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:dtrace|dtrace\\x2dscript|oncrpc|rpc|rpcgen|unified\\x2dparallel\\x2dc|x\\x2dbitmap|x\\x2dpixmap|xdr|(?:.*\\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.c",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.c.mdx",patterns:[{include:"source.c"}]}]},"commonmark-code-fenced-clojure":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:clojure|rouge|(?:.*\\.)?(?:boot|cl2|clj|cljc|cljs|cljs\\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.clojure",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.clojure.mdx",patterns:[{include:"source.clojure"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:clojure|rouge|(?:.*\\.)?(?:boot|cl2|clj|cljc|cljs|cljs\\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.clojure",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.clojure.mdx",patterns:[{include:"source.clojure"}]}]},"commonmark-code-fenced-coffee":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:coffee\\x2dscript|coffeescript|(?:.*\\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.coffee",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.coffee.mdx",patterns:[{include:"source.coffee"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:coffee\\x2dscript|coffeescript|(?:.*\\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.coffee",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.coffee.mdx",patterns:[{include:"source.coffee"}]}]},"commonmark-code-fenced-console":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:pycon|python\\x2dconsole))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.console",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.console.mdx",patterns:[{include:"text.python.console"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:pycon|python\\x2dconsole))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.console",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.console.mdx",patterns:[{include:"text.python.console"}]}]},"commonmark-code-fenced-cpp":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:ags|ags\\x2dscript|asymptote|c\\+\\+|edje\\x2ddata\\x2dcollection|game\\x2dmaker\\x2dlanguage|swig|(?:.*\\.)?(?:asc|ash|asy|c\\+\\+|cc|cp|cpp|cppm|cxx|edc|gml|h\\+\\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.cpp",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.cpp.mdx",patterns:[{include:"source.c++"},{include:"source.cpp"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:ags|ags\\x2dscript|asymptote|c\\+\\+|edje\\x2ddata\\x2dcollection|game\\x2dmaker\\x2dlanguage|swig|(?:.*\\.)?(?:asc|ash|asy|c\\+\\+|cc|cp|cpp|cppm|cxx|edc|gml|h\\+\\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.cpp",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.cpp.mdx",patterns:[{include:"source.c++"},{include:"source.cpp"}]}]},"commonmark-code-fenced-cs":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\\.)?(?:bf|cake|cs|csx|eq|linq|uno)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.cs",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.cs.mdx",patterns:[{include:"source.cs"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\\.)?(?:bf|cake|cs|csx|eq|linq|uno)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.cs",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.cs.mdx",patterns:[{include:"source.cs"}]}]},"commonmark-code-fenced-css":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?css))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.css",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.css.mdx",patterns:[{include:"source.css"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?css))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.css",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.css.mdx",patterns:[{include:"source.css"}]}]},"commonmark-code-fenced-diff":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:udiff|(?:.*\\.)?(?:diff|patch)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.diff",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.diff.mdx",patterns:[{include:"source.diff"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:udiff|(?:.*\\.)?(?:diff|patch)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.diff",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.diff.mdx",patterns:[{include:"source.diff"}]}]},"commonmark-code-fenced-dockerfile":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:containerfile|(?:.*\\.)?dockerfile))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.dockerfile",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.dockerfile.mdx",patterns:[{include:"source.dockerfile"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:containerfile|(?:.*\\.)?dockerfile))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.dockerfile",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.dockerfile.mdx",patterns:[{include:"source.dockerfile"}]}]},"commonmark-code-fenced-elixir":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:elixir|(?:.*\\.)?(?:ex|exs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.elixir",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.elixir.mdx",patterns:[{include:"source.elixir"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:elixir|(?:.*\\.)?(?:ex|exs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.elixir",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.elixir.mdx",patterns:[{include:"source.elixir"}]}]},"commonmark-code-fenced-elm":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?elm))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.elm",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.elm.mdx",patterns:[{include:"source.elm"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?elm))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.elm",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.elm.mdx",patterns:[{include:"source.elm"}]}]},"commonmark-code-fenced-erlang":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:erlang|(?:.*\\.)?(?:app|app\\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.erlang",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.erlang.mdx",patterns:[{include:"source.erlang"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:erlang|(?:.*\\.)?(?:app|app\\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.erlang",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.erlang.mdx",patterns:[{include:"source.erlang"}]}]},"commonmark-code-fenced-gitconfig":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:git\\x2dconfig|gitmodules|(?:.*\\.)?gitconfig))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.gitconfig",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.gitconfig.mdx",patterns:[{include:"source.gitconfig"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:git\\x2dconfig|gitmodules|(?:.*\\.)?gitconfig))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.gitconfig",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.gitconfig.mdx",patterns:[{include:"source.gitconfig"}]}]},"commonmark-code-fenced-go":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:golang|(?:.*\\.)?go))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.go",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.go.mdx",patterns:[{include:"source.go"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:golang|(?:.*\\.)?go))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.go",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.go.mdx",patterns:[{include:"source.go"}]}]},"commonmark-code-fenced-graphql":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:gql|graphql|graphqls)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.graphql",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.graphql.mdx",patterns:[{include:"source.graphql"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:gql|graphql|graphqls)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.graphql",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.graphql.mdx",patterns:[{include:"source.graphql"}]}]},"commonmark-code-fenced-haskell":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bh|bluespec\\x2dbh|bluespec\\x2dclassic|c2hs|c2hs\\x2dhaskell|frege|haskell|(?:.*\\.)?(?:chs|dhall|hs|hs\\x2dboot|hsc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.haskell",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.haskell.mdx",patterns:[{include:"source.haskell"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bh|bluespec\\x2dbh|bluespec\\x2dclassic|c2hs|c2hs\\x2dhaskell|frege|haskell|(?:.*\\.)?(?:chs|dhall|hs|hs\\x2dboot|hsc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.haskell",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.haskell.mdx",patterns:[{include:"source.haskell"}]}]},"commonmark-code-fenced-html":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:html|(?:.*\\.)?(?:hta|htm|html\\.hl|kit|mtml|xht|xhtml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.html",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.html.mdx",patterns:[{include:"text.html.basic"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:html|(?:.*\\.)?(?:hta|htm|html\\.hl|kit|mtml|xht|xhtml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.html",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.html.mdx",patterns:[{include:"text.html.basic"}]}]},"commonmark-code-fenced-ini":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:altium|altium\\x2ddesigner|dosini|(?:.*\\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ini",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ini.mdx",patterns:[{include:"source.ini"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:altium|altium\\x2ddesigner|dosini|(?:.*\\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ini",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ini.mdx",patterns:[{include:"source.ini"}]}]},"commonmark-code-fenced-java":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:chuck|unrealscript|(?:.*\\.)?(?:ck|jav|java|jsh|uc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.java",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.java.mdx",patterns:[{include:"source.java"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:chuck|unrealscript|(?:.*\\.)?(?:ck|jav|java|jsh|uc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.java",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.java.mdx",patterns:[{include:"source.java"}]}]},"commonmark-code-fenced-js":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:cycript|javascript\\+erb|json\\x2dwith\\x2dcomments|node|qt\\x2dscript|(?:.*\\.)?(?:_js|bones|cjs|code\\x2dsnippets|code\\x2dworkspace|cy|es6|jake|javascript|js|js\\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\\x2dbuild|sublime\\x2dcommands|sublime\\x2dcompletions|sublime\\x2dkeymap|sublime\\x2dmacro|sublime\\x2dmenu|sublime\\x2dmousemap|sublime\\x2dproject|sublime\\x2dsettings|sublime\\x2dtheme|sublime\\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.js",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.js.mdx",patterns:[{include:"source.js"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:cycript|javascript\\+erb|json\\x2dwith\\x2dcomments|node|qt\\x2dscript|(?:.*\\.)?(?:_js|bones|cjs|code\\x2dsnippets|code\\x2dworkspace|cy|es6|jake|javascript|js|js\\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\\x2dbuild|sublime\\x2dcommands|sublime\\x2dcompletions|sublime\\x2dkeymap|sublime\\x2dmacro|sublime\\x2dmenu|sublime\\x2dmousemap|sublime\\x2dproject|sublime\\x2dsettings|sublime\\x2dtheme|sublime\\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.js",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.js.mdx",patterns:[{include:"source.js"}]}]},"commonmark-code-fenced-json":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:ecere\\x2dprojects|ipython\\x2dnotebook|jupyter\\x2dnotebook|max|max/msp|maxmsp|oasv2\\x2djson|oasv3\\x2djson|(?:.*\\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|tfstate|tfstate\\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.json",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.json.mdx",patterns:[{include:"source.json"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:ecere\\x2dprojects|ipython\\x2dnotebook|jupyter\\x2dnotebook|max|max/msp|maxmsp|oasv2\\x2djson|oasv3\\x2djson|(?:.*\\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|tfstate|tfstate\\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.json",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.json.mdx",patterns:[{include:"source.json"}]}]},"commonmark-code-fenced-julia":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:julia|(?:.*\\.)?jl))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.julia",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.julia.mdx",patterns:[{include:"source.julia"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:julia|(?:.*\\.)?jl))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.julia",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.julia.mdx",patterns:[{include:"source.julia"}]}]},"commonmark-code-fenced-kotlin":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:gradle\\x2dkotlin\\x2ddsl|kotlin|(?:.*\\.)?(?:gradle\\.kts|kt|ktm|kts)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.kotlin",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.kotlin.mdx",patterns:[{include:"source.kotlin"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:gradle\\x2dkotlin\\x2ddsl|kotlin|(?:.*\\.)?(?:gradle\\.kts|kt|ktm|kts)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.kotlin",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.kotlin.mdx",patterns:[{include:"source.kotlin"}]}]},"commonmark-code-fenced-less":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:less\\x2dcss|(?:.*\\.)?less))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.less",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.less.mdx",patterns:[{include:"source.css.less"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:less\\x2dcss|(?:.*\\.)?less))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.less",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.less.mdx",patterns:[{include:"source.css.less"}]}]},"commonmark-code-fenced-lua":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.lua",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.lua.mdx",patterns:[{include:"source.lua"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.lua",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.lua.mdx",patterns:[{include:"source.lua"}]}]},"commonmark-code-fenced-makefile":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bsdmake|mf|(?:.*\\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.makefile",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.makefile.mdx",patterns:[{include:"source.makefile"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bsdmake|mf|(?:.*\\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.makefile",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.makefile.mdx",patterns:[{include:"source.makefile"}]}]},"commonmark-code-fenced-md":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:md|pandoc|rmarkdown|(?:.*\\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.md",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.md.mdx",patterns:[{include:"text.md"},{include:"source.gfm"},{include:"text.html.markdown"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:md|pandoc|rmarkdown|(?:.*\\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.md",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.md.mdx",patterns:[{include:"text.md"},{include:"source.gfm"},{include:"text.html.markdown"}]}]},"commonmark-code-fenced-mdx":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?mdx))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.mdx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.mdx.mdx",patterns:[{include:"source.mdx"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?mdx))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.mdx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.mdx.mdx",patterns:[{include:"source.mdx"}]}]},"commonmark-code-fenced-objc":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:obj\\x2dc|objc|objective\\x2dc|objectivec))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.objc",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.objc.mdx",patterns:[{include:"source.objc"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:obj\\x2dc|objc|objective\\x2dc|objectivec))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.objc",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.objc.mdx",patterns:[{include:"source.objc"}]}]},"commonmark-code-fenced-perl":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:cperl|(?:.*\\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.perl",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.perl.mdx",patterns:[{include:"source.perl"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:cperl|(?:.*\\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.perl",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.perl.mdx",patterns:[{include:"source.perl"}]}]},"commonmark-code-fenced-php":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:html\\+php|inc|php|(?:.*\\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.php",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.php.mdx",patterns:[{include:"text.html.php"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:html\\+php|inc|php|(?:.*\\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.php",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.php.mdx",patterns:[{include:"text.html.php"}]}]},"commonmark-code-fenced-python":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.python",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.python.mdx",patterns:[{include:"source.python"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.python",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.python.mdx",patterns:[{include:"source.python"}]}]},"commonmark-code-fenced-r":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:rscript|splus|(?:.*\\.)?(?:r|rd|rsx)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.r",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.r.mdx",patterns:[{include:"source.r"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:rscript|splus|(?:.*\\.)?(?:r|rd|rsx)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.r",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.r.mdx",patterns:[{include:"source.r"}]}]},"commonmark-code-fenced-raku":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:perl\\x2d6|perl6|pod\\x2d6|(?:.*\\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.raku",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.raku.mdx",patterns:[{include:"source.raku"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:perl\\x2d6|perl6|pod\\x2d6|(?:.*\\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.raku",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.raku.mdx",patterns:[{include:"source.raku"}]}]},"commonmark-code-fenced-ruby":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:jruby|macruby|(?:.*\\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ruby",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ruby.mdx",patterns:[{include:"source.ruby"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:jruby|macruby|(?:.*\\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ruby",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ruby.mdx",patterns:[{include:"source.ruby"}]}]},"commonmark-code-fenced-rust":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:rust|(?:.*\\.)?(?:rs|rs\\.in)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.rust",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.rust.mdx",patterns:[{include:"source.rust"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:rust|(?:.*\\.)?(?:rs|rs\\.in)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.rust",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.rust.mdx",patterns:[{include:"source.rust"}]}]},"commonmark-code-fenced-scala":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:kojo|sbt|sc|scala)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.scala",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.scala.mdx",patterns:[{include:"source.scala"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:kojo|sbt|sc|scala)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.scala",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.scala.mdx",patterns:[{include:"source.scala"}]}]},"commonmark-code-fenced-scss":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?scss))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.scss",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.scss.mdx",patterns:[{include:"source.css.scss"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?scss))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.scss",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.scss.mdx",patterns:[{include:"source.css.scss"}]}]},"commonmark-code-fenced-shell":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:abuild|alpine\\x2dabuild|apkbuild|gentoo\\x2debuild|gentoo\\x2declass|openrc|openrc\\x2drunscript|shell|shell\\x2dscript|(?:.*\\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\\.in|tcsh|tmux|tool|zsh|zsh\\x2dtheme)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.shell",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.shell.mdx",patterns:[{include:"source.shell"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:abuild|alpine\\x2dabuild|apkbuild|gentoo\\x2debuild|gentoo\\x2declass|openrc|openrc\\x2drunscript|shell|shell\\x2dscript|(?:.*\\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\\.in|tcsh|tmux|tool|zsh|zsh\\x2dtheme)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.shell",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.shell.mdx",patterns:[{include:"source.shell"}]}]},"commonmark-code-fenced-shell-session":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bash\\x2dsession|console|shellsession|(?:.*\\.)?sh\\x2dsession))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.shell-session",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.shell-session.mdx",patterns:[{include:"text.shell-session"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bash\\x2dsession|console|shellsession|(?:.*\\.)?sh\\x2dsession))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.shell-session",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.shell-session.mdx",patterns:[{include:"text.shell-session"}]}]},"commonmark-code-fenced-sql":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:plpgsql|sqlpl|(?:.*\\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.sql",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.sql.mdx",patterns:[{include:"source.sql"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:plpgsql|sqlpl|(?:.*\\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.sql",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.sql.mdx",patterns:[{include:"source.sql"}]}]},"commonmark-code-fenced-svg":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?svg))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.svg",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.svg.mdx",patterns:[{include:"text.xml.svg"},{include:"text.xml"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?svg))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.svg",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.svg.mdx",patterns:[{include:"text.xml.svg"},{include:"text.xml"}]}]},"commonmark-code-fenced-swift":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?swift))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.swift",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.swift.mdx",patterns:[{include:"source.swift"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?swift))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.swift",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.swift.mdx",patterns:[{include:"source.swift"}]}]},"commonmark-code-fenced-toml":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?toml))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.toml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.toml.mdx",patterns:[{include:"source.toml"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?toml))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.toml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.toml.mdx",patterns:[{include:"source.toml"}]}]},"commonmark-code-fenced-ts":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:typescript|(?:.*\\.)?(?:cts|mts|ts)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ts",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ts.mdx",patterns:[{include:"source.ts"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:typescript|(?:.*\\.)?(?:cts|mts|ts)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.ts",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.ts.mdx",patterns:[{include:"source.ts"}]}]},"commonmark-code-fenced-tsx":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?tsx))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.tsx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.tsx.mdx",patterns:[{include:"source.tsx"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?tsx))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.tsx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.tsx.mdx",patterns:[{include:"source.tsx"}]}]},"commonmark-code-fenced-unknown":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?:[^\\t\\n\\r` ])+)(?:[\\t ]+((?:[^\\n\\r`])+))?)?(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"markup.raw.code.fenced.mdx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.other.mdx"},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?:[^\\t\\n\\r ])+)(?:[\\t ]+((?:[^\\n\\r])+))?)?(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"markup.raw.code.fenced.mdx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.other.mdx"}]},"commonmark-code-fenced-vbnet":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:classic\\x2dvisual\\x2dbasic|fb|freebasic|realbasic|vb\\x2d\\.net|vb\\x2d6|vb\\.net|vb6|vbnet|vbscript|visual\\x2dbasic|visual\\x2dbasic\\x2d\\.net|visual\\x2dbasic\\x2d6|visual\\x2dbasic\\x2d6\\.0|visual\\x2dbasic\\x2dclassic|(?:.*\\.)?(?:bi|ctl|dsr|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.vbnet",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.vbnet.mdx",patterns:[{include:"source.vbnet"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:classic\\x2dvisual\\x2dbasic|fb|freebasic|realbasic|vb\\x2d\\.net|vb\\x2d6|vb\\.net|vb6|vbnet|vbscript|visual\\x2dbasic|visual\\x2dbasic\\x2d\\.net|visual\\x2dbasic\\x2d6|visual\\x2dbasic\\x2d6\\.0|visual\\x2dbasic\\x2dclassic|(?:.*\\.)?(?:bi|ctl|dsr|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.vbnet",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.vbnet.mdx",patterns:[{include:"source.vbnet"}]}]},"commonmark-code-fenced-xml":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:collada|eagle|labview|web\\x2dontology\\x2dlanguage|xpages|(?:.*\\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\\.dist|xmp|xpl|xproc|xproj|xsd|xsp\\x2dconfig|xsp\\.metadata|xspec|xul|zcml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.xml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.xml.mdx",patterns:[{include:"text.xml"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:collada|eagle|labview|web\\x2dontology\\x2dlanguage|xpages|(?:.*\\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\\.dist|xmp|xpl|xproc|xproj|xsd|xsp\\x2dconfig|xsp\\.metadata|xspec|xul|zcml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.xml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.xml.mdx",patterns:[{include:"text.xml"}]}]},"commonmark-code-fenced-yaml":{patterns:[{begin:"(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:jar\\x2dmanifest|kaitai\\x2dstruct|oasv2\\x2dyaml|oasv3\\x2dyaml|unity3d\\x2dasset|yaml|yml|(?:.*\\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\\x2dsyntax|syntax|unity|yaml\\x2dtmlanguage|yaml\\.sed|yml\\.mysql)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.yaml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.yaml.mdx",patterns:[{include:"source.yaml"}]},{begin:"(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:jar\\x2dmanifest|kaitai\\x2dstruct|oasv2\\x2dyaml|oasv3\\x2dyaml|unity3d\\x2dasset|yaml|yml|(?:.*\\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\\x2dsyntax|syntax|unity|yaml\\x2dtmlanguage|yaml\\.sed|yml\\.mysql)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",beginCaptures:{1:{name:"string.other.begin.code.fenced.mdx"},2:{name:"entity.name.function.mdx",patterns:[{include:"#markdown-string"}]},3:{patterns:[{include:"#markdown-string"}]}},contentName:"meta.embedded.yaml",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.code.fenced.mdx"}},name:"markup.code.yaml.mdx",patterns:[{include:"source.yaml"}]}]},"commonmark-code-text":{captures:{1:{name:"string.other.begin.code.mdx"},2:{name:"markup.raw.code.mdx markup.inline.raw.code.mdx"},3:{name:"string.other.end.code.mdx"}},match:"(?<!`)(`+)(?!`)(.+?)(?<!`)(\\1)(?!`)",name:"markup.code.other.mdx"},"commonmark-definition":{captures:{1:{name:"string.other.begin.mdx"},2:{name:"entity.name.identifier.mdx",patterns:[{include:"#markdown-string"}]},3:{name:"string.other.end.mdx"},4:{name:"punctuation.separator.key-value.mdx"},5:{name:"string.other.begin.destination.mdx"},6:{name:"string.other.link.destination.mdx",patterns:[{include:"#markdown-string"}]},7:{name:"string.other.end.destination.mdx"},8:{name:"string.other.link.destination.mdx",patterns:[{include:"#markdown-string"}]},9:{name:"string.other.begin.mdx"},10:{name:"string.quoted.double.mdx",patterns:[{include:"#markdown-string"}]},11:{name:"string.other.end.mdx"},12:{name:"string.other.begin.mdx"},13:{name:"string.quoted.single.mdx",patterns:[{include:"#markdown-string"}]},14:{name:"string.other.end.mdx"},15:{name:"string.other.begin.mdx"},16:{name:"string.quoted.paren.mdx",patterns:[{include:"#markdown-string"}]},17:{name:"string.other.end.mdx"}},match:`(?:^|\\G)[\\t ]*(\\[)((?:[^\\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+?)(\\])(:)[ \\t]*(?:(<)((?:[^\\n<\\\\>]|\\\\[<\\\\>]?)*)(>)|(\\g<destination_raw>))(?:[\\t ]+(?:(")((?:[^"\\\\]|\\\\["\\\\]?)*)(")|(')((?:[^'\\\\]|\\\\['\\\\]?)*)(')|(\\()((?:[^\\)\\\\]|\\\\[\\)\\\\]?)*)(\\))))?$(?<destination_raw>(?!\\<)(?:(?:[^\\p{Cc}\\ \\\\\\(\\)]|\\\\[\\(\\)\\\\]?)|\\(\\g<destination_raw>*\\))+){0}`,name:"meta.link.reference.def.mdx"},"commonmark-hard-break-escape":{match:"\\\\$",name:"constant.language.character-escape.line-ending.mdx"},"commonmark-hard-break-trailing":{match:"( ){2,}$",name:"carriage-return constant.language.character-escape.line-ending.mdx"},"commonmark-heading-atx":{patterns:[{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{1}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.1.mdx"},{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{2}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.2.mdx"},{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{3}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.2.mdx"},{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{4}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.2.mdx"},{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{5}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.2.mdx"},{captures:{1:{name:"punctuation.definition.heading.mdx"},2:{name:"entity.name.section.mdx",patterns:[{include:"#markdown-text"}]},3:{name:"punctuation.definition.heading.mdx"}},match:"(?:^|\\G)[\\t ]*(#{6}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",name:"markup.heading.atx.2.mdx"}]},"commonmark-heading-setext":{patterns:[{match:"(?:^|\\G)[\\t ]*(={1,})[ \\t]*$",name:"markup.heading.setext.1.mdx"},{match:"(?:^|\\G)[\\t ]*(-{1,})[ \\t]*$",name:"markup.heading.setext.2.mdx"}]},"commonmark-label-end":{patterns:[{captures:{1:{name:"string.other.end.mdx"},2:{name:"string.other.begin.mdx"},3:{name:"string.other.begin.destination.mdx"},4:{name:"string.other.link.destination.mdx",patterns:[{include:"#markdown-string"}]},5:{name:"string.other.end.destination.mdx"},6:{name:"string.other.link.destination.mdx",patterns:[{include:"#markdown-string"}]},7:{name:"string.other.begin.mdx"},8:{name:"string.quoted.double.mdx",patterns:[{include:"#markdown-string"}]},9:{name:"string.other.end.mdx"},10:{name:"string.other.begin.mdx"},11:{name:"string.quoted.single.mdx",patterns:[{include:"#markdown-string"}]},12:{name:"string.other.end.mdx"},13:{name:"string.other.begin.mdx"},14:{name:"string.quoted.paren.mdx",patterns:[{include:"#markdown-string"}]},15:{name:"string.other.end.mdx"},16:{name:"string.other.end.mdx"}},match:`(\\])(\\()[\\t ]*(?:(?:(<)((?:[^\\n<\\\\>]|\\\\[<\\\\>]?)*)(>)|(\\g<destination_raw>))(?:[\\t ]+(?:(")((?:[^"\\\\]|\\\\["\\\\]?)*)(")|(')((?:[^'\\\\]|\\\\['\\\\]?)*)(')|(\\()((?:[^\\)\\\\]|\\\\[\\)\\\\]?)*)(\\))))?)?[\\t ]*(\\))(?<destination_raw>(?!\\<)(?:(?:[^\\p{Cc}\\ \\\\\\(\\)]|\\\\[\\(\\)\\\\]?)|\\(\\g<destination_raw>*\\))+){0}`},{captures:{1:{name:"string.other.end.mdx"},2:{name:"string.other.begin.mdx"},3:{name:"entity.name.identifier.mdx",patterns:[{include:"#markdown-string"}]},4:{name:"string.other.end.mdx"}},match:"(\\])(\\[)((?:[^\\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+?)(\\])"},{captures:{1:{name:"string.other.end.mdx"}},match:"(\\])"}]},"commonmark-label-start":{patterns:[{match:"\\!\\[(?!\\^)",name:"string.other.begin.image.mdx"},{match:"\\[",name:"string.other.begin.link.mdx"}]},"commonmark-list-item":{patterns:[{begin:"(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{4}(?![ ])|\\t)(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"variable.unordered.list.mdx"},2:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{1}"},{begin:"(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{3}(?![ ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"variable.unordered.list.mdx"},2:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"},{begin:"(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{2}(?![ ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"variable.unordered.list.mdx"},2:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)[ ]{3}"},{begin:"(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{1}|(?=\\n))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"variable.unordered.list.mdx"},2:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)[ ]{2}"},{begin:"(?:^|\\G)[\\t ]*([0-9]{9})((?:\\.|\\)))(?:[ ]{4}(?![ ])|\\t(?![\\t ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}[ ]{2}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{8})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}[ ]{1}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{8})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{7})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{8})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{7})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{6})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{3}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{8})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{7})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{6})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{5})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{2}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{7})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{6})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{5})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{4})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{1}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{6})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{5})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{4})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{3})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{5})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{4})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{3})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{2})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{3}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{4})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{3})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{2})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{1})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"string.other.number.mdx"},8:{name:"variable.ordered.list.mdx"},9:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{2}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{3})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{2})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{1})((?:\\.|\\)))(?:[ ]{3}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"string.other.number.mdx"},6:{name:"variable.ordered.list.mdx"},7:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{1}"},{begin:"(?:^|\\G)[\\t ]*(?:([0-9]{2})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9])((?:\\.|\\)))(?:[ ]{2}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"string.other.number.mdx"},4:{name:"variable.ordered.list.mdx"},5:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"},{begin:"(?:^|\\G)[\\t ]*([0-9])((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",beginCaptures:{1:{name:"string.other.number.mdx"},2:{name:"variable.ordered.list.mdx"},3:{name:"keyword.other.tasklist.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)[ ]{3}"}]},"commonmark-paragraph":{begin:"(?![\\t ]*$)",name:"meta.paragraph.mdx",patterns:[{include:"#markdown-text"}],while:"(?:^|\\G)(?:[ ]{4}|\\t)"},"commonmark-thematic-break":{match:"(?:^|\\G)[\\t ]*([-*_])[ \\t]*(?:\\1[ \\t]*){2,}$",name:"meta.separator.mdx"},"extension-gfm-autolink-literal":{patterns:[{match:`(?<=^|[\\t\\n\\r \\(\\*\\_\\[\\]~])(?=(?i:www)\\.[^\\n\\r])(?:(?:[\\p{L}\\p{N}]|-|[\\._](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+\\g<path>?)?(?<path>(?:(?:[^\\t\\n\\r !"&'\\(\\)\\*,\\.:;<\\?\\]_~]|&(?![A-Za-z]*;(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))|[!"'\\)\\*,\\.:;\\?_~](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))|\\(\\g<path>*\\))+){0}`,name:"string.other.link.autolink.literal.www.mdx"},{match:`(?<=^|[^A-Za-z])(?i:https?://)(?=[\\p{L}\\p{N}])(?:(?:[\\p{L}\\p{N}]|-|[\\._](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+\\g<path>?)?(?<path>(?:(?:[^\\t\\n\\r !"&'\\(\\)\\*,\\.:;<\\?\\]_~]|&(?![A-Za-z]*;(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))|[!"'\\)\\*,\\.:;\\?_~](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))|\\(\\g<path>*\\))+){0}`,name:"string.other.link.autolink.literal.http.mdx"},{match:`(?<=^|[^A-Za-z/])(?i:mailto:|xmpp:)?(?:[0-9A-Za-z+\\-\\._])+@(?:(?:[0-9A-Za-z]|[-_](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+(?:\\.(?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))))+(?:[A-Za-z]|[-_](?!(?:[!"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+`,name:"string.other.link.autolink.literal.email.mdx"}]},"extension-gfm-footnote-call":{captures:{1:{name:"string.other.begin.link.mdx"},2:{name:"string.other.begin.footnote.mdx"},3:{name:"entity.name.identifier.mdx",patterns:[{include:"#markdown-string"}]},4:{name:"string.other.end.footnote.mdx"}},match:"(\\[)(\\^)((?:[^\\t\\n\\r \\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+)(\\])"},"extension-gfm-footnote-definition":{begin:"(?:^|\\G)[\\t ]*(\\[)(\\^)((?:[^\\t\\n\\r \\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+)(\\])(:)[\\t ]*",beginCaptures:{1:{name:"string.other.begin.link.mdx"},2:{name:"string.other.begin.footnote.mdx"},3:{name:"entity.name.identifier.mdx",patterns:[{include:"#markdown-string"}]},4:{name:"string.other.end.footnote.mdx"}},patterns:[{include:"#markdown-sections"}],while:"^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"},"extension-gfm-strikethrough":{match:"(?<=\\S)(?<!~)~{1,2}(?!~)|(?<!~)~{1,2}(?=\\S)(?!~)",name:"string.other.strikethrough.mdx"},"extension-gfm-table":{begin:"(?:^|\\G)[\\t ]*(?=\\|[^\\n\\r]+\\|[ \\t]*$)",end:"^(?=[\\t ]*$)|$",patterns:[{captures:{1:{patterns:[{include:"#markdown-text"}]}},match:"(?<=\\||(?:^|\\G))[\\t ]*((?:[^\\n\\r\\\\\\|]|\\\\[\\\\\\|]?)+?)[\\t ]*(?=\\||$)"},{match:"(?:\\|)",name:"markup.list.table-delimiter.mdx"}]},"extension-github-gemoji":{captures:{1:{name:"punctuation.definition.gemoji.begin.mdx"},2:{name:"keyword.control.gemoji.mdx"},3:{name:"punctuation.definition.gemoji.end.mdx"}},match:"(:)((?:(?:(?:hand_with_index_finger_and_thumb_cros|mailbox_clo|fist_rai|confu)s|r(?:aised_hand_with_fingers_splay|e(?:gister|l(?:iev|ax)))|disappointed_reliev|confound|(?:a(?:ston|ngu)i|flu)sh|unamus|hush)e|(?:chart_with_(?:down|up)wards_tre|large_orange_diamo|small_(?:orang|blu)e_diamo|large_blue_diamo|parasol_on_grou|loud_sou|rewi)n|(?:rightwards_pushing_h|hourglass_flowing_s|leftwards_(?:pushing_)?h|(?:raised_back_of|palm_(?:down|up)|call_me)_h|(?:(?:(?:clippert|ascensi)on|norfolk)_is|christmas_is|desert_is|bouvet_is|new_zea|thai|eng|fin|ire)l|rightwards_h|pinching_h|writing_h|s(?:w(?:itzer|azi)|cot)l|magic_w|ok_h|icel)an|s(?:un_behind_(?:large|small|rain)_clou|hallow_pan_of_foo|tar_of_davi|leeping_be|kateboar|a(?:tisfie|uropo)|hiel|oun|qui)|(?:ear_with_hearing_a|pouring_liqu)i|(?:identification_c|(?:arrow_(?:back|for)|fast_for)w|credit_c|woman_be|biohaz|man_be|l(?:eop|iz))ar|m(?:usical_key|ortar_)boar|(?:drop_of_bl|canned_f)oo|c(?:apital_abc|upi)|person_bal|(?:black_bi|(?:cust|plac)a)r|(?:clip|key)boar|mermai|pea_po|worrie|po(?:la|u)n|threa|dv)d|(?:(?:(?:face_with_open_eyes_and_hand_over|face_with_diagonal|open|no)_mou|h(?:and_over_mou|yacin)|mammo)t|running_shirt_with_sas|(?:(?:fishing_pole_and_|blow)fi|(?:tropical_f|petri_d)i|(?:paint|tooth)bru|banglade|jellyfi)s|(?:camera_fl|wavy_d)as|triump|menora|pouc|blus|watc|das|has)h|(?:s(?:o(?:(?:uth_georgia_south_sandwich|lomon)_island|ck)|miling_face_with_three_heart|t_kitts_nevi|weat_drop|agittariu|c(?:orpiu|issor)|ymbol|hort)|twisted_rightwards_arrow|(?:northern_mariana|heard_mcdonald|(?:british_virgi|us_virgi|pitcair|cayma)n|turks_caicos|us_outlying|(?:falk|a)land|marshall|c(?:anary|ocos)|faroe)_island|(?:face_holding_back_tea|(?:c(?:ard_index_divid|rossed_fing)|pinched_fing)e|night_with_sta)r|(?:two_(?:wo)?men_holding|people_holding|heart|open)_hand|(?:sunrise_over_mountai|(?:congratul|united_n)atio|jea)n|(?:caribbean_)?netherland|(?:f(?:lower_playing_car|ace_in_clou)|crossed_swor|prayer_bea)d|(?:money_with_win|nest_with_eg|crossed_fla|hotsprin)g|revolving_heart|(?:high_brightne|(?:expression|wire)le|(?:tumbler|wine)_gla|milk_gla|compa|dre)s|performing_art|earth_america|orthodox_cros|l(?:ow_brightnes|a(?:tin_cros|o)|ung)|no_pedestrian|c(?:ontrol_kno|lu)b|b(?:ookmark_tab|rick|ean)|nesting_doll|cook_island|(?:fleur_de_l|tenn)i|(?:o(?:ncoming_b|phiuch|ctop)|hi(?:ppopotam|bisc)|trolleyb|m(?:(?:rs|x)_cla|auriti|inib)|belar|cact|abac|(?:cyp|tau)r)u|medal_sport|(?:chopstic|firewor)k|rhinocero|(?:p(?:aw_prin|eanu)|footprin)t|two_heart|princes|(?:hondur|baham)a|barbado|aquariu|c(?:ustom|hain)|maraca|comoro|flag|wale|hug|vh)s|(?:(?:diamond_shape_with_a_dot_ins|playground_sl)id|(?:(?:first_quarter|last_quarter|full|new)_moon_with|(?:zipper|money)_mouth|dotted_line|upside_down|c(?:rying_c|owboy_h)at|(?:disguis|nauseat)ed|neutral|monocle|panda|tired|woozy|clown|nerd|zany|fox)_fac|s(?:t(?:uck_out_tongue_winking_ey|eam_locomotiv)|(?:lightly_(?:frown|smil)|neez|h(?:ush|ak))ing_fac|(?:tudio_micropho|(?:hinto_shr|lot_mach)i|ierra_leo|axopho)n|mall_airplan|un_with_fac|a(?:luting_fac|tellit|k)|haved_ic|y(?:nagogu|ring)|n(?:owfl)?ak|urinam|pong)|(?:black_(?:medium_)?small|white_(?:(?:medium_)?small|large)|(?:black|white)_medium|black_large|orange|purple|yellow|b(?:rown|lue)|red)_squar|(?:(?:perso|woma)n_with_|man_with_)?probing_can|(?:p(?:ut_litter_in_its_pl|outing_f)|frowning_f|cold_f|wind_f|hot_f)ac|(?:arrows_c(?:ounterc)?lockwi|computer_mou|derelict_hou|carousel_hor|c(?:ity_sunri|hee)|heartpul|briefca|racehor|pig_no|lacros)s|(?:(?:face_with_head_band|ideograph_advant|adhesive_band|under|pack)a|currency_exchan|l(?:eft_l)?ugga|woman_jud|name_bad|man_jud|jud)g|face_with_peeking_ey|(?:(?:e(?:uropean_post_off|ar_of_r)|post_off)i|information_sour|ambulan)c|artificial_satellit|(?:busts?_in_silhouet|(?:vulcan_sal|parach)u|m(?:usical_no|ayot)|ro(?:ller_ska|set)|timor_les|ice_ska)t|(?:(?:incoming|red)_envelo|s(?:ao_tome_princi|tethosco)|(?:micro|tele)sco|citysca)p|(?:(?:(?:convenience|department)_st|musical_sc)o|f(?:light_depar|ramed_pic)tu|love_you_gestu|heart_on_fi|japanese_og|cote_divoi|perseve|singapo)r|b(?:ullettrain_sid|eliz|on)|(?:(?:female_|male_)?dete|radioa)ctiv|(?:christmas|deciduous|evergreen|tanabata|palm)_tre|(?:vibration_mo|cape_ver)d|(?:fortune_cook|neckt|self)i|(?:fork_and_)?knif|athletic_sho|(?:p(?:lead|arty)|drool|curs|melt|yawn|ly)ing_fac|vomiting_fac|(?:(?:c(?:urling_st|ycl)|meat_on_b|repeat_|headst)o|(?:fire_eng|tanger|ukra)i|rice_sce|(?:micro|i)pho|champag|pho)n|(?:cricket|video)_gam|(?:boxing_glo|oli)v|(?:d(?:ragon|izzy)|monkey)_fac|(?:m(?:artin|ozamb)iq|fond)u|wind_chim|test_tub|flat_sho|m(?:a(?:ns_sho|t)|icrob|oos|ut)|(?:handsh|fish_c|moon_c|cupc)ak|nail_car|zimbabw|ho(?:neybe|l)|ice_cub|airplan|pensiv|c(?:a(?:n(?:dl|o)|k)|o(?:ffe|oki))|tongu|purs|f(?:lut|iv)|d(?:at|ov)|n(?:iu|os)|kit|rag|ax)e|(?:(?:british_indian_ocean_territo|(?:plate_with_cutl|batt)e|medal_milita|low_batte|hunga|wea)r|family_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy))_bo|person_feeding_bab|woman_feeding_bab|s(?:u(?:spension_railwa|nn)|t(?:atue_of_libert|_barthelem|rawberr))|(?:m(?:ountain_cable|ilky_)|aerial_tram)wa|articulated_lorr|man_feeding_bab|mountain_railwa|partly_sunn|(?:vatican_c|infin)it|(?:outbox_tr|inbox_tr|birthd|motorw|paragu|urugu|norw|x_r)a|butterfl|ring_buo|t(?:urke|roph)|angr|fogg)y|(?:(?:perso|woma)n_in_motorized_wheelchai|(?:(?:notebook_with_decorative_c|four_leaf_cl)ov|(?:index_pointing_at_the_vie|white_flo)w|(?:face_with_thermome|non\\-potable_wa|woman_firefigh|desktop_compu|m(?:an_firefigh|otor_scoo)|(?:ro(?:ller_coa|o)|oy)s|potable_wa|kick_scoo|thermome|firefigh|helicop|ot)t|(?:woman_factory_wor|(?:woman_office|woman_health|health)_wor|man_(?:factory|office|health)_wor|(?:factory|office)_wor|rice_crac|black_jo|firecrac)k|telephone_receiv|(?:palms_up_toget|f(?:ire_extinguis|eat)|teac)h|(?:(?:open_)?file_fol|level_sli)d|police_offic|f(?:lying_sauc|arm)|woman_teach|roll_of_pap|(?:m(?:iddle_f|an_s)in|woman_sin|hambur|plun|dag)g|do_not_litt|wilted_flow|woman_farm|man_(?:teach|farm)|(?:bell_pe|hot_pe|fli)pp|l(?:o(?:udspeak|ve_lett|bst)|edg|add)|tokyo_tow|c(?:ucumb|lapp|anc)|b(?:e(?:ginn|av)|adg)|print|hamst)e|(?:perso|woma)n_in_manual_wheelchai|m(?:an(?:_in_motorized|(?:_in_man)?ual)|otorized)_wheelchai|(?:person_(?:white|curly|red)_|wheelc)hai|triangular_rule|(?:film_project|e(?:l_salv|cu)ad|elevat|tract|anch)o|s(?:traight_rul|pace_invad|crewdriv|nowboard|unflow|peak|wimm|ing|occ|how|urf|ki)e|r(?:ed_ca|unne|azo)|d(?:o(?:lla|o)|ee)|barbe)r|(?:(?:cloud_with_(?:lightning_and_)?ra|japanese_gobl|round_pushp|liechtenste|mandar|pengu|dolph|bahra|pushp|viol)i|(?:couple(?:_with_heart_wo|kiss_)man|construction_worker|(?:mountain_bik|bow|row)ing|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|white_haired|curly_haired|raising_hand|super(?:villain|hero)|red_haired|basketball|s(?:(?:wimm|urf)ing|assy)|haircut|no_good|(?:vampir|massag)e|b(?:iking|ald)|zombie|fairy|mage|elf|ng)_(?:wo)?ma|(?:(?:couple_with_heart_man|isle_of)_m|(?:couplekiss_woman_|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_|frowning_|s(?:tanding|auna)_|po(?:uting_|lice)|running_|blonde_|o(?:lder|k)_)wom|(?:perso|woma)n_with_turb|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_m|f(?:olding_hand_f|rowning_m)|man_with_turb|(?:turkmen|afghan|pak)ist|s(?:tanding_m|(?:outh_s)?ud|auna_m)|po(?:uting_|lice)m|running_m|azerbaij|k(?:yrgyz|azakh)st|tajikist|uzbekist|o(?:lder_m|k_m|ce)|(?:orang|bh)ut|taiw|jord)a|s(?:mall_red_triangle_dow|(?:valbard_jan_may|int_maart|ev)e|afety_pi|top_sig|t_marti|(?:corpi|po|o)o|wede)|(?:heavy_(?:d(?:ivision|ollar)|equals|minus|plus)|no_entry|female|male)_sig|(?:arrow_(?:heading|double)_d|p(?:erson_with_cr|oint_d)|arrow_up_d|thumbsd)ow|(?:house_with_gard|l(?:ock_with_ink_p|eafy_gre)|dancing_(?:wo)?m|fountain_p|keycap_t|chick|ali|yem|od)e|(?:izakaya|jack_o)_lanter|(?:funeral_u|(?:po(?:stal_h|pc)|capric)o|unico)r|chess_paw|b(?:a(?:llo|c)o|eni|rai)|l(?:anter|io)|c(?:o(?:ff)?i|row)|melo|rame|oma|yar)n|(?:s(?:t(?:uck_out_tongue_closed_ey|_vincent_grenadin)|kull_and_crossbon|unglass|pad)|(?:french_souther|palestinia)n_territori|(?:face_with_spiral|kissing_smiling)_ey|united_arab_emirat|kissing_closed_ey|(?:clinking_|dark_sun|eye)glass|(?:no_mobile_|head)phon|womans_cloth|b(?:allet_sho|lueberri)|philippin|(?:no_bicyc|seychel)l|roll_ey|(?:cher|a)ri|p(?:ancak|isc)|maldiv|leav)es|(?:f(?:amily_(?:woman_(?:woman_)?|man_(?:woman_|man_)?)girl_gir|earfu)|(?:woman_playing_hand|m(?:an_playing_hand|irror_)|c(?:onfetti|rystal)_|volley|track|base|8)bal|(?:(?:m(?:ailbox_with_(?:no_)?m|onor)|cockt|e\\-m)a|(?:person|bride|woman)_with_ve|man_with_ve|light_ra|braz|ema)i|(?:transgender|baby)_symbo|passport_contro|(?:arrow_(?:down|up)_sm|rice_b|footb)al|(?:dromedary_cam|ferris_whe|love_hot|high_he|pretz|falaf|isra)e|page_with_cur|me(?:dical_symbo|ta)|(?:n(?:ewspaper_ro|o_be)|bellhop_be)l|rugby_footbal|s(?:chool_satche|(?:peak|ee)_no_evi|oftbal|crol|anda|nai|hel)|(?:peace|atom)_symbo|hear_no_evi|cora|hote|bage|labe|rof|ow)l|(?:(?:negative_squared_cross|heavy_exclamation|part_alternation)_mar|(?:eight_spoked_)?asteris|(?:ballot_box_with_che|(?:(?:mantelpiece|alarm|timer)_c|un)lo|(?:ha(?:(?:mmer_and|ir)_p|tch(?:ing|ed)_ch)|baby_ch|joyst)i|railway_tra|lipsti|peaco)c|heavy_check_mar|white_check_mar|tr(?:opical_drin|uc)|national_par|pickup_truc|diving_mas|floppy_dis|s(?:tar_struc|hamroc|kun|har)|chipmun|denmar|duc|hoo|lin)k|(?:leftwards_arrow_with_h|arrow_right_h|(?:o(?:range|pen)|closed|blue)_b)ook|(?:woman_playing_water_pol|m(?:an(?:_(?:playing_water_pol|with_gua_pi_ma|in_tuxed)|g)|ontenegr|o(?:roc|na)c|e(?:xic|tr|m))|(?:perso|woma)n_in_tuxed|(?:trinidad_toba|vir)g|water_buffal|b(?:urkina_fas|a(?:mbo|nj)|ent)|puerto_ric|water_pol|flaming|kangaro|(?:mosqu|burr)it|(?:avoc|torn)ad|curaca|lesoth|potat|ko(?:sov|k)|tomat|d(?:ang|od)|yo_y|hoch|t(?:ac|og)|zer)o|(?:c(?:entral_african|zech)|dominican)_republic|(?:eight_pointed_black_s|six_pointed_s|qa)tar|(?:business_suit_levitat|(?:classical_buil|breast_fee)d|(?:woman_cartwhee|m(?:an_(?:cartwhee|jugg)|en_wrest)|women_wrest|woman_jugg|face_exha|cartwhee|wrest|dump)l|c(?:hildren_cross|amp)|woman_facepalm|woman_shrugg|man_(?:facepalm|shrugg)|people_hugg|(?:person_fe|woman_da|man_da)nc|fist_oncom|horse_rac|(?:no_smo|thin)k|laugh|s(?:eedl|mok)|park|w(?:arn|edd))ing|f(?:a(?:mily(?:_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy)))?|ctory)|o(?:u(?:ntain|r)|ot|g)|r(?:owning)?|i(?:re|s[ht])|ly|u)|(?:(?:(?:information_desk|handball|bearded)_|(?:frowning|ok)_|juggling_|mer)pers|(?:previous_track|p(?:lay_or_p)?ause|black_square|white_square|next_track|r(?:ecord|adio)|eject)_butt|(?:wa[nx]ing_(?:crescent|gibbous)_m|bowl_with_sp|crescent_m|racc)o|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_pers|s(?:t(?:_pierre_miquel|op_butt|ati)|tanding_pers|peech_ballo|auna_pers)|r(?:eminder_r)?ibb|thought_ballo|watermel|badmint|c(?:amero|ray)|le(?:ban|m)|oni|bis)on|(?:heavy_heart_exclama|building_construc|heart_decora|exclama)tion|(?:(?:triangular_flag_on_po|(?:(?:woman_)?technolog|m(?:ountain_bicycl|an_technolog)|bicycl)i|(?:wo)?man_scienti|(?:wo)?man_arti|s(?:afety_ve|cienti)|empty_ne)s|(?:vertical_)?traffic_ligh|(?:rescue_worker_helm|military_helm|nazar_amul|city_suns|wastebask|dropl|t(?:rump|oil)|bouqu|buck|magn|secr)e|one_piece_swimsui|(?:(?:arrow_(?:low|upp)er|point)_r|bridge_at_n|copyr|mag_r)igh|(?:bullettrain_fro|(?:potted_pl|croiss|e(?:ggpl|leph))a)n|s(?:t(?:ar_and_cresc|ud)en|cream_ca|mi(?:ley?|rk)_ca|(?:peed|ail)boa|hir)|(?:arrow_(?:low|upp)er|point)_lef|woman_astronau|r(?:o(?:tating_ligh|cke)|eceip)|heart_eyes_ca|man_astronau|(?:woman_stud|circus_t|man_stud|trid)en|(?:ringed_pla|file_cabi)ne|nut_and_bol|(?:older_)?adul|k(?:i(?:ssing_ca|wi_frui)|uwai|no)|(?:pouting_c|c(?:ut_of_m|old_sw)e|womans_h|montserr|(?:(?:motor_|row)b|lab_c)o|heartbe|toph)a|(?:woman_pil|honey_p|man_pil|[cp]arr|teap|rob)o|hiking_boo|arrow_lef|fist_righ|flashligh|f(?:ist_lef|ee)|black_ca|astronau|(?:c(?:hest|oco)|dough)nu|innocen|joy_ca|artis|(?:acce|egy)p|co(?:me|a)|pilo)t|(?:heavy_multiplication_|t\\-re)x|(?:s(?:miling_face_with_te|piral_calend)|oncoming_police_c|chocolate_b|ra(?:ilway|cing)_c|police_c|polar_be|teddy_be|madagasc|blue_c|calend|myanm)ar|c(?:l(?:o(?:ud(?:_with_lightning)?|ck(?:1[0-2]?|[2-9]))|ap)?|o(?:uple(?:_with_heart|kiss)?|nstruction|mputer|ok|p|w)|a(?:r(?:d_index)?|mera)|r(?:icket|y)|h(?:art|ild))|(?:m(?:artial_arts_unifo|echanical_a)r|(?:cherry_)?blosso|b(?:aggage_clai|roo)|ice_?crea|facepal|mushroo|restroo|vietna|dru|yu)m|(?:woman_with_headscar|m(?:obile_phone_of|aple_lea)|fallen_lea|wol)f|(?:(?:closed_lock_with|old)_|field_hoc|ice_hoc|han|don)key|g(?:lobe_with_meridians|r(?:e(?:y_(?:exclama|ques)tion|e(?:n(?:_(?:square|circle|salad|apple|heart|book)|land)|ce)|y_heart|nada)|i(?:mac|nn)ing|apes)|u(?:inea_bissau|ernsey|am|n)|(?:(?:olfing|enie)_(?:wo)?|uards(?:wo)?)man|(?:inger_roo|oal_ne|hos)t|(?:uadeloup|ame_di|iraff|oos)e|ift_heart|i(?:braltar|rl)|(?:uatemal|(?:eorg|amb)i|orill|uyan|han)a|uide_dog|(?:oggl|lov)es|arlic|emini|uitar|abon|oat|ear|b)|construction_worker|(?:(?:envelope_with|bow_and)_ar|left_right_ar|raised_eyeb)row|(?:(?:oncoming_automob|crocod)i|right_anger_bubb|l(?:eft_speech_bubb|otion_bott|ady_beet)|congo_brazzavil|eye_speech_bubb|(?:large_blue|orange|purple|yellow|brown)_circ|(?:(?:european|japanese)_cas|baby_bot)t|b(?:alance_sca|eet)|s(?:ewing_need|weat_smi)|(?:black|white|red)_circ|(?:motor|re)cyc|pood|turt|tama|waff|musc|eag)le|first_quarter_moon|s(?:m(?:all_red_triangle|i(?:ley?|rk))|t(?:uck_out_tongue|ar)|hopping|leeping|p(?:arkle|ider)|unrise|nowman|chool|cream|k(?:ull|i)|weat|ix|a)|(?:(?:b(?:osnia_herzegovi|ana)|wallis_futu|(?:french_gui|botsw)a|argenti|st_hele)n|(?:(?:equatorial|papua_new)_guin|north_kor|eritr)e|t(?:ristan_da_cunh|ad)|(?:(?:(?:french_poly|indo)ne|tuni)s|(?:new_caledo|ma(?:urita|cedo)|lithua|(?:tanz|alb|rom)a|arme|esto)n|diego_garc|s(?:audi_arab|t_luc|lov(?:ak|en)|omal|erb)|e(?:arth_as|thiop)|m(?:icrone|alay)s|(?:austra|mongo)l|c(?:ambod|roat)|(?:bulga|alge)r|(?:colom|nami|zam)b|boliv|l(?:iber|atv))i|(?:wheel_of_dhar|cine|pana)m|(?:(?:(?:closed|beach|open)_)?umbrel|ceuta_melil|venezue|ang(?:uil|o)|koa)l|c(?:ongo_kinshas|anad|ub)|(?:western_saha|a(?:mpho|ndor)|zeb)r|american_samo|video_camer|m(?:o(?:vie_camer|ldov)|alt|eg)|(?:earth_af|costa_)ric|s(?:outh_afric|ri_lank|a(?:mo|nt))|bubble_te|(?:antarct|jama)ic|ni(?:caragu|geri|nj)|austri|pi(?:nat|zz)|arub|k(?:eny|aab)|indi|u7a7|l(?:lam|ib[ry])|dn)a|l(?:ast_quarter_moon|o(?:tus|ck)|ips|eo)|(?:hammer_and_wren|c(?:ockroa|hur)|facepun|wren|crut|pun)ch|s(?:nowman_with_snow|ignal_strength|weet_potato|miling_imp|p(?:ider_web|arkle[rs])|w(?:im_brief|an)|a(?:n(?:_marino|dwich)|lt)|topwatch|t(?:a(?:dium|r[2s])|ew)|l(?:e(?:epy|d)|oth)|hrimp|yria|carf|(?:hee|oa)p|ea[lt]|h(?:oe|i[pt])|o[bs])|(?:s(?:tuffed_flatbre|p(?:iral_notep|eaking_he))|(?:exploding_h|baguette_br|flatbr)e)ad|(?:arrow_(?:heading|double)_u|(?:p(?:lace_of_wor|assenger_)sh|film_str|tul)i|page_facing_u|biting_li|(?:billed_c|world_m)a|mouse_tra|(?:curly_lo|busst)o|thumbsu|lo(?:llip)?o|clam|im)p|(?:anatomical|light_blue|sparkling|kissing|mending|orange|purple|yellow|broken|b(?:rown|l(?:ack|ue))|pink)_heart|(?:(?:transgender|black)_fla|mechanical_le|(?:checkered|pirate)_fla|electric_plu|rainbow_fla|poultry_le|service_do|white_fla|luxembour|fried_eg|moneyba|h(?:edgeh|otd)o|shru)g|(?:cloud_with|mountain)_snow|(?:(?:antigua_barb|berm)u|(?:kh|ug)an|rwan)da|(?:3r|2n)d_place_medal|1(?:st_place_medal|234|00)|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|(?:(?:cup_with_str|auto_ricksh)a|carpentry_sa|windo|jigsa)w|(?:(?:couch_and|diya)_la|f(?:ried_shri|uelpu))mp|(?:woman_mechan|man_mechan|alemb)ic|(?:european_un|accord|collis|reun)ion|(?:flight_arriv|hospit|portug|seneg|nep)al|card_file_box|(?:(?:oncoming_)?tax|m(?:o(?:unt_fuj|ya)|alaw)|s(?:paghett|ush|ar)|b(?:r(?:occol|une)|urund)|(?:djibou|kiriba)t|hait|fij)i|(?:shopping_c|white_he|bar_ch)art|d(?:isappointed|ominica|e(?:sert)?)|raising_hand|super(?:villain|hero)|b(?:e(?:verage_box|ers|d)|u(?:bbles|lb|g)|i(?:k(?:ini|e)|rd)|o(?:o(?:ks|t)|a[rt]|y)|read|a[cn]k)|ra(?:ised_hands|bbit2|t)|(?:hindu_tem|ap)ple|thong_sandal|a(?:r(?:row_(?:right|down|up)|t)|bc?|nt)?|r(?:a(?:i(?:sed_hand|nbow)|bbit|dio|m)|u(?:nning)?|epeat|i(?:ng|ce)|o(?:ck|se))|takeout_box|(?:flying_|mini)disc|(?:(?:interrob|yin_y)a|b(?:o(?:omera|wli)|angba)|(?:ping_p|hong_k)o|calli|mahjo)ng|b(?:a(?:llot_box|sket|th?|by)|o(?:o(?:k(?:mark)?|m)|w)|u(?:tter|s)|e(?:ll|er?|ar))?|heart_eyes|basketball|(?:paperclip|dancer|ticket)s|point_up_2|(?:wo)?man_cook|n(?:ew(?:spaper)?|o(?:tebook|_entry)|iger)|t(?:e(?:lephone|a)|o(?:oth|p)|r(?:oll)?|wo)|h(?:o(?:u(?:rglass|se)|rse)|a(?:mmer|nd)|eart)|paperclip|full_moon|(?:b(?:lack_ni|athtu|om)|her)b|(?:long|oil)_drum|pineapple|(?:clock(?:1[0-2]?|[2-9])3|u6e8)0|p(?:o(?:int_up|ut)|r(?:ince|ay)|i(?:ck|g)|en)|e(?:nvelope|ight|u(?:ro)?|gg|ar|ye|s)|m(?:o(?:u(?:ntain|se)|nkey|on)|echanic|a(?:ilbox|g|n)|irror)?|new_moon|d(?:iamonds|olls|art)|question|k(?:iss(?:ing)?|ey)|haircut|no_good|(?:vampir|massag)e|g(?:olf(?:ing)?|u(?:inea|ard)|e(?:nie|m)|ift|rin)|h(?:a(?:ndbag|msa)|ouses|earts|ut)|postbox|toolbox|(?:pencil|t(?:rain|iger)|whale|cat|dog)2|belgium|(?:volca|kimo)no|(?:vanuat|tuval|pala|naur|maca)u|tokelau|o(?:range|ne?|m|k)?|office|dancer|ticket|dragon|pencil|zombie|w(?:o(?:mens|rm|od)|ave|in[gk]|c)|m(?:o(?:sque|use2)|e(?:rman|ns)|a(?:li|sk))|jersey|tshirt|w(?:heel|oman)|dizzy|j(?:apan|oy)|t(?:rain|iger)|whale|fairy|a(?:nge[lr]|bcd|tm)|c(?:h(?:a(?:ir|d)|ile)|a(?:ndy|mel)|urry|rab|o(?:rn|ol|w2)|[dn])|p(?:ager|e(?:a(?:ch|r)|ru)|i(?:g2|ll|e)|oop)|n(?:otes|ine)|t(?:onga|hree|ent|ram|[mv])|f(?:erry|r(?:ies|ee|og)|ax)|u(?:7(?:533|981|121)|5(?:5b6|408|272)|6(?:307|70[89]))|mage|e(?:yes|nd)|i(?:ra[nq]|t)|cat|dog|elf|z(?:zz|ap)|yen|j(?:ar|p)|leg|id|u[kps]|ng|o[2x]|vs|kr|[\\+\\x2D]1|x|v)(:)",name:"string.emoji.mdx"},"extension-github-mention":{captures:{1:{name:"punctuation.definition.mention.begin.mdx"},2:{name:"string.other.link.mention.mdx"}},match:"(?<![0-9A-Za-z_`])(@)((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\\/(?:[0-9A-Za-z][0-9A-Za-z-]{0,38}))?)(?![0-9A-Za-z_`])",name:"string.mention.mdx"},"extension-github-reference":{patterns:[{captures:{1:{name:"punctuation.definition.reference.begin.mdx"},2:{name:"string.other.link.reference.security-advisory.mdx"},3:{name:"punctuation.definition.reference.begin.mdx"},4:{name:"string.other.link.reference.issue-or-pr.mdx"}},match:"(?<![0-9A-Za-z_])(?:((?i:ghsa-|cve-))([A-Za-z0-9]+)|((?i:gh-|#))([0-9]+))(?![0-9A-Za-z_])",name:"string.reference.mdx"},{captures:{1:{name:"string.other.link.reference.user.mdx"},2:{name:"punctuation.definition.reference.begin.mdx"},3:{name:"string.other.link.reference.issue-or-pr.mdx"}},match:"(?<![^\\t\\n\\r \\(@\\[\\{])((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\\/(?:(?:\\.git[0-9A-Za-z_-]|\\.(?!git)|[0-9A-Za-z_-])+))?)(#)([0-9]+)(?![0-9A-Za-z_])",name:"string.reference.mdx"}]},"extension-math-flow":{begin:"(?:^|\\G)[\\t ]*(\\${2,})([^\\n\\r\\$]*)$",beginCaptures:{1:{name:"string.other.begin.math.flow.mdx"},2:{patterns:[{include:"#markdown-string"}]}},contentName:"markup.raw.math.flow.mdx",end:"(\\1)(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.end.math.flow.mdx"}},name:"markup.code.other.mdx"},"extension-math-text":{captures:{1:{name:"string.other.begin.math.mdx"},2:{name:"markup.raw.math.mdx markup.inline.raw.math.mdx"},3:{name:"string.other.end.math.mdx"}},match:"(?<!\\$)(\\${2,})(?!\\$)(.+?)(?<!\\$)(\\1)(?!\\$)"},"extension-mdx-esm":{begin:"(?:^|\\G)(?=(?i:export|import)[ ])",end:"^(?=[\\t ]*$)|$",name:"meta.embedded.tsx",patterns:[{include:"source.tsx#statements"}]},"extension-mdx-expression-flow":{begin:"(?:^|\\G)[\\t ]*(\\{)",beginCaptures:{1:{name:"string.other.begin.expression.mdx.js"}},contentName:"meta.embedded.tsx",end:"(\\})(?:[\\t ]*$)",endCaptures:{1:{name:"string.other.begin.expression.mdx.js"}},patterns:[{include:"source.tsx#expression"}]},"extension-mdx-expression-text":{begin:"\\{",beginCaptures:{0:{name:"string.other.begin.expression.mdx.js"}},contentName:"meta.embedded.tsx",end:"\\}",endCaptures:{0:{name:"string.other.begin.expression.mdx.js"}},patterns:[{include:"source.tsx#expression"}]},"extension-mdx-jsx-flow":{begin:"(?<=^|\\G|\\>)[\\t ]*(<)(?=(?![\\t\\n\\r ]))(?:\\s*(/))?(?:\\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\\s*(:)\\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\\s*\\.\\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\\s\\/\\>\\{]))?",beginCaptures:{1:{name:"punctuation.definition.tag.end.jsx"},2:{name:"punctuation.definition.tag.closing.jsx"},3:{name:"entity.name.tag.namespace.jsx"},4:{name:"punctuation.separator.namespace.jsx"},5:{name:"entity.name.tag.local.jsx"},6:{name:"support.class.component.jsx"},7:{name:"support.class.component.jsx"},8:{name:"entity.name.tag.jsx"}},end:"(?:(\\/)\\s*)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.self-closing.jsx"},2:{name:"punctuation.definition.tag.end.jsx"}},patterns:[{include:"source.tsx#jsx-tag-attribute-name"},{include:"source.tsx#jsx-tag-attribute-assignment"},{include:"source.tsx#jsx-string-double-quoted"},{include:"source.tsx#jsx-string-single-quoted"},{include:"source.tsx#jsx-evaluated-code"},{include:"source.tsx#jsx-tag-attributes-illegal"}]},"extension-mdx-jsx-text":{begin:"(<)(?=(?![\\t\\n\\r ]))(?:\\s*(/))?(?:\\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\\s*(:)\\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\\s*\\.\\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\\s\\/\\>\\{]))?",beginCaptures:{1:{name:"punctuation.definition.tag.end.jsx"},2:{name:"punctuation.definition.tag.closing.jsx"},3:{name:"entity.name.tag.namespace.jsx"},4:{name:"punctuation.separator.namespace.jsx"},5:{name:"entity.name.tag.local.jsx"},6:{name:"support.class.component.jsx"},7:{name:"support.class.component.jsx"},8:{name:"entity.name.tag.jsx"}},end:"(?:(\\/)\\s*)?(>)",endCaptures:{1:{name:"punctuation.definition.tag.self-closing.jsx"},2:{name:"punctuation.definition.tag.end.jsx"}},patterns:[{include:"source.tsx#jsx-tag-attribute-name"},{include:"source.tsx#jsx-tag-attribute-assignment"},{include:"source.tsx#jsx-string-double-quoted"},{include:"source.tsx#jsx-string-single-quoted"},{include:"source.tsx#jsx-evaluated-code"},{include:"source.tsx#jsx-tag-attributes-illegal"}]},"extension-toml":{begin:"\\A\\+{3}$",beginCaptures:{0:{name:"string.other.begin.toml"}},contentName:"meta.embedded.toml",end:"^\\+{3}$",endCaptures:{0:{name:"string.other.end.toml"}},patterns:[{include:"source.toml"}]},"extension-yaml":{begin:"\\A-{3}$",beginCaptures:{0:{name:"string.other.begin.yaml"}},contentName:"meta.embedded.yaml",end:"^-{3}$",endCaptures:{0:{name:"string.other.end.yaml"}},patterns:[{include:"source.yaml"}]},"markdown-frontmatter":{patterns:[{include:"#extension-toml"},{include:"#extension-yaml"}]},"markdown-sections":{patterns:[{include:"#commonmark-block-quote"},{include:"#commonmark-code-fenced"},{include:"#extension-gfm-footnote-definition"},{include:"#commonmark-definition"},{include:"#commonmark-heading-atx"},{include:"#commonmark-thematic-break"},{include:"#commonmark-heading-setext"},{include:"#commonmark-list-item"},{include:"#extension-gfm-table"},{include:"#extension-math-flow"},{include:"#extension-mdx-esm"},{include:"#extension-mdx-expression-flow"},{include:"#extension-mdx-jsx-flow"},{include:"#commonmark-paragraph"}]},"markdown-string":{patterns:[{include:"#commonmark-character-escape"},{include:"#commonmark-character-reference"}]},"markdown-text":{patterns:[{include:"#commonmark-attention"},{include:"#commonmark-character-escape"},{include:"#commonmark-character-reference"},{include:"#commonmark-code-text"},{include:"#commonmark-hard-break-trailing"},{include:"#commonmark-hard-break-escape"},{include:"#commonmark-label-end"},{include:"#extension-gfm-footnote-call"},{include:"#commonmark-label-start"},{include:"#extension-gfm-autolink-literal"},{include:"#extension-gfm-strikethrough"},{include:"#extension-github-gemoji"},{include:"#extension-github-mention"},{include:"#extension-github-reference"},{include:"#extension-math-text"},{include:"#extension-mdx-expression-text"},{include:"#extension-mdx-jsx-text"}]},"whatwg-html-data-character-reference-named-terminated":{captures:{1:{name:"punctuation.definition.character-reference.begin.html"},2:{name:"keyword.control.character-reference.html"},3:{name:"punctuation.definition.character-reference.end.html"}},match:"(&)((?:C(?:(?:o(?:unterClockwiseCo)?|lockwiseCo)ntourIntegra|cedi)|(?:(?:Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)|Not(?:Righ|Lef)tTriangle|(?:Not(?:(?:Succeed|Precede|Les)s|Greater)|(?:Precede|Succeed)s|Less)Slant|SquareSu(?:per|b)set|(?:Not(?:Greater|Tilde)|Tilde|Less)Full|RightTriangle|LeftTriangle|Greater(?:Slant|Full)|Precedes|Succeeds|Superset|NotHump|Subset|Tilde|Hump)Equ|int(?:er)?c|DotEqu)a|DoubleContourIntegra|(?:n(?:short)?parall|shortparall|p(?:arall|rur))e|(?:rightarrowta|l(?:eftarrowta|ced|ata|Ata)|sced|rata|perm|rced|rAta|ced)i|Proportiona|smepars|e(?:qvpars|pars|xc|um)|Integra|suphso|rarr[pt]|n(?:pars|tg)|l(?:arr[pt]|cei)|Rarrt|(?:hybu|fora)l|ForAl|[GKLNR-Tcknt]cedi|rcei|iexc|gime|fras|[uy]um|oso|dso|ium|Ium)l|D(?:o(?:uble(?:(?:L(?:ong(?:Left)?R|eftR)ight|L(?:ongL)?eft|UpDown|Right|Up)Arrow|Do(?:wnArrow|t))|wn(?:ArrowUpA|TeeA|a)rrow)|iacriticalDot|strok|ashv|cy)|(?:(?:(?:N(?:(?:otN)?estedGreater|ot(?:Greater|Less))|Less(?:Equal)?)Great|GreaterGreat|l[lr]corn|mark|east)e|Not(?:Double)?VerticalBa|(?:Not(?:Righ|Lef)tTriangleB|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)VectorB|RightTriangleB|Left(?:Triangle|Arrow)B|RightArrowB|V(?:er(?:ticalB|b)|b)|UpArrowB|l(?:ur(?:ds|u)h|dr(?:us|d)h|trP|owb|H)|profal|r(?:ulu|dld)h|b(?:igst|rvb)|(?:wed|ve[er])b|s(?:wn|es)w|n(?:wne|ese|sp|hp)|gtlP|d(?:oll|uh|H)|(?:hor|ov)b|u(?:dh|H)|r(?:lh|H)|ohb|hb|St)a|D(?:o(?:wn(?:(?:Left(?:Right|Tee)|RightTee)Vecto|(?:(?:Righ|Lef)tVector|Arrow)Ba)|ubleVerticalBa)|a(?:gge|r)|sc|f)|(?:(?:(?:Righ|Lef)tDown|(?:Righ|Lef)tUp)Tee|(?:Righ|Lef)tUpDown)Vecto|VerticalSeparato|(?:Left(?:Right|Tee)|RightTee)Vecto|less(?:eqq?)?gt|e(?:qslantgt|sc)|(?:RightF|LeftF|[lr]f)loo|u(?:[lr]corne|ar)|timesba|(?:plusa|cirs|apa)ci|U(?:arroci|f)|(?:dzigr|s(?:u(?:pl|br)|imr|[lr])|zigr|angz|nvH|l(?:tl|B)|r[Br])ar|UnderBa|(?:plus|harr|top|mid|of)ci|O(?:verBa|sc|f)|dd?agge|s(?:olba|sc)|g(?:t(?:rar|ci)|sc|f)|c(?:opys|u(?:po|ep)|sc|f)|(?:n(?:(?:v[lr]|w|r)A|l[Aa]|h[Aa]|eA)|x[hlr][Aa]|u(?:ua|da|A)|s[ew]A|rla|o[lr]a|rba|rAa|l[Ablr]a|h(?:oa|A)|era|d(?:ua|A)|cra|vA)r|o(?:lci|sc|ro|pa)|ropa|roar|l(?:o(?:pa|ar)|sc|Ar)|i(?:ma|s)c|ltci|dd?ar|a(?:ma|s)c|R(?:Bar|sc|f)|I(?:mac|f)|(?:u(?:ma|s)|oma|ema|Oma|Ema|[wyz]s|qs|ks|fs|Zs|Ys|Xs|Ws|Vs|Us|Ss|Qs|Ns|Ms|Ks|Is|Gs|Fs|Cs|Bs)c|Umac|x(?:sc|f)|v(?:sc|f)|rsc|n(?:ld|f)|m(?:sc|ld|ac|f)|rAr|h(?:sc|f)|b(?:sc|f)|psc|P(?:sc|f)|L(?:sc|ar|f)|jsc|J(?:sc|f)|E(?:sc|f)|[HT]sc|[yz]f|wf|tf|qf|pf|kf|jf|Zf|Yf|Xf|Wf|Vf|Tf|Sf|Qf|Nf|Mf|Kf|Hf|Gf|Ff|Cf|Bf)r|(?:Diacritical(?:Double)?A|[EINOSYZaisz]a)cute|(?:(?:N(?:egative(?:VeryThin|Thi(?:ck|n))|onBreaking)|NegativeMedium|ZeroWidth|VeryThin|Medium|Thi(?:ck|n))Spac|Filled(?:Very)?SmallSquar|Empty(?:Very)?SmallSquar|(?:N(?:ot(?:Succeeds|Greater|Tilde|Less)T|t)|DiacriticalT|VerticalT|PrecedesT|SucceedsT|NotEqualT|GreaterT|TildeT|EqualT|LessT|at|Ut|It)ild|(?:(?:DiacriticalG|[EIOUaiu]g)ra|(?:u|U)?bre|(?:o|e)?gra)v|(?:doublebar|curly|big|x)wedg|H(?:orizontalLin|ilbertSpac)|Double(?:Righ|Lef)tTe|(?:(?:measured|uw)ang|exponentia|dwang|ssmi|fema)l|(?:Poincarepla|reali|pho|oli)n|(?:black)?lozeng|(?:VerticalL|(?:prof|imag)l)in|SmallCircl|(?:black|dot)squar|rmoustach|l(?:moustach|angl)|(?:b(?:ack)?pr|(?:tri|xo)t|[qt]pr)im|[Tt]herefor|(?:DownB|[Gag]b)rev|(?:infint|nv[lr]tr)i|b(?:arwedg|owti)|an(?:dslop|gl)|(?:cu(?:rly)?v|rthr|lthr|b(?:ig|ar)v|xv)e|n(?:s(?:qsu[bp]|ccu)|prcu)|orslop|NewLin|maltes|Becaus|rangl|incar|(?:otil|Otil|t(?:ra|il))d|[inu]tild|s(?:mil|imn)|(?:sc|pr)cu|Wedg|Prim|Brev)e|(?:CloseCurly(?:Double)?Quo|OpenCurly(?:Double)?Quo|[ry]?acu)te|(?:Reverse(?:Up)?|Up)Equilibrium|C(?:apitalDifferentialD|(?:oproduc|(?:ircleD|enterD|d)o)t|on(?:grue|i)nt|conint|upCap|o(?:lone|pf)|OPY|hi)|(?:(?:(?:left)?rightsquig|(?:longleftr|twoheadr|nleftr|nLeftr|longr|hookr|nR|Rr)ight|(?:twohead|hook)left|longleft|updown|Updown|nright|Right|nleft|nLeft|down|up|Up)a|L(?:(?:ong(?:left)?righ|(?:ong)?lef)ta|eft(?:(?:right)?a|RightA|TeeA))|RightTeeA|LongLeftA|UpTeeA)rrow|(?:(?:RightArrow|Short|Upper|Lower)Left|(?:L(?:eftArrow|o(?:wer|ng))|LongLeft|Short|Upper)Right|ShortUp)Arrow|(?:b(?:lacktriangle(?:righ|lef)|ulle|no)|RightDoubleBracke|RightAngleBracke|Left(?:Doub|Ang)leBracke|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow)righ|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow|mapsto)lef|(?:UnderBrack|OverBrack|emptys|targ|Sups)e|diamondsui|c(?:ircledas|lubsui|are)|(?:spade|heart)sui|(?:(?:c(?:enter|t)|lmi|ino)d|(?:Triple|mD)D|n(?:otin|e)d|(?:ncong|doteq|su[bp]e|e[gl]s)d|l(?:ess|t)d|isind|c(?:ong|up|ap)?d|b(?:igod|N)|t(?:(?:ri)?d|opb)|s(?:ub|im)d|midd|g(?:tr?)?d|Lmid|DotD|(?:xo|ut|z)d|e(?:s?d|rD|fD|DD)|dtd|Zd|Id|Gd|Ed)o|realpar|i(?:magpar|iin)|S(?:uchTha|qr)|su[bp]mul|(?:(?:lt|i)que|gtque|(?:mid|low)a|e(?:que|xi))s|Produc|s(?:updo|e[cx])|r(?:parg|ec)|lparl|vangr|hamil|(?:homt|[lr]fis|ufis|dfis)h|phmma|t(?:wix|in)|quo|o(?:do|as)|fla|eDo)t|(?:(?:Square)?Intersecti|(?:straight|back|var)epsil|SquareUni|expectati|upsil|epsil|Upsil|eq?col|Epsil|(?:omic|Omic|rca|lca|eca|Sca|[NRTt]ca|Lca|Eca|[Zdz]ca|Dca)r|scar|ncar|herc|ccar|Ccar|iog|Iog)on|Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)?|(?:(?:(?:Not(?:Reverse)?|Reverse)E|comp|E)leme|NotCongrue|(?:n[gl]|l)eqsla|geqsla|q(?:uat)?i|perc|iiii|coni|cwi|awi|oi)nt|(?:(?:rightleftharpo|leftrightharpo|quaterni)on|(?:(?:N(?:ot(?:NestedLess|Greater|Less)|estedLess)L|(?:eqslant|gtr(?:eqq?)?)l|LessL)e|Greater(?:Equal)?Le|cro)s|(?:rightright|leftleft|upup)arrow|rightleftarrow|(?:(?:(?:righ|lef)tthree|divideon|b(?:igo|ox)|[lr]o)t|InvisibleT)ime|downdownarrow|(?:(?:smallset|tri|dot|box)m|PlusM)inu|(?:RoundImpli|complex|Impli|Otim)e|C(?:ircle(?:Time|Minu|Plu)|ayley|ros)|(?:rationa|mode)l|NotExist|(?:(?:UnionP|MinusP|(?:b(?:ig[ou]|ox)|tri|s(?:u[bp]|im)|dot|xu|mn)p)l|(?:xo|u)pl|o(?:min|pl)|ropl|lopl|epl)u|otimesa|integer|e(?:linter|qual)|setminu|rarrbf|larrb?f|olcros|rarrf|mstpo|lesge|gesle|Exist|[lr]time|strn|napo|fltn|ccap|apo)s|(?:b(?:(?:lack|ig)triangledow|etwee)|(?:righ|lef)tharpoondow|(?:triangle|mapsto)dow|(?:nv|i)infi|ssetm|plusm|lagra|d(?:[lr]cor|isi)|c(?:ompf|aro)|s?frow|(?:hyph|curr)e|kgree|thor|ogo|ye)n|Not(?:Righ|Lef)tTriangle|(?:Up(?:Arrow)?|Short)DownArrow|(?:(?:n(?:triangle(?:righ|lef)t|succ|prec)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|backsim)e|lvertneq|gvertneq|(?:suc|pre)cneq|a(?:pprox|symp)e|(?:succ|prec|vee)e|circe)q|(?:UnderParenthes|OverParenthes|xn)is|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)Vector|D(?:o(?:wn(?:RightVector|LeftVector|Arrow|Tee)|t)|el|D)|l(?:eftrightarrows|br(?:k(?:sl[du]|e)|ac[ek])|tri[ef]|s(?:im[eg]|qb|h)|hard|a(?:tes|ngd|p)|o[pz]f|rm|gE|fr|eg|cy)|(?:NotHumpDownHum|(?:righ|lef)tharpoonu|big(?:(?:triangle|sqc)u|c[au])|HumpDownHum|m(?:apstou|lc)|(?:capbr|xsq)cu|smash|rarr[al]|(?:weie|sha)r|larrl|velli|(?:thin|punc)s|h(?:elli|airs)|(?:u[lr]c|vp)ro|d[lr]cro|c(?:upc[au]|apc[au])|thka|scna|prn?a|oper|n(?:ums|va|cu|bs)|ens|xc[au]|Ma)p|l(?:eftrightarrow|e(?:ftarrow|s(?:dot)?)?|moust|a(?:rrb?|te?|ng)|t(?:ri)?|sim|par|oz|l|g)|n(?:triangle(?:righ|lef)t|succ|prec)|SquareSu(?:per|b)set|(?:I(?:nvisibleComm|ot)|(?:varthe|iio)t|varkapp|(?:vars|S)igm|(?:diga|mco)mm|Cedill|lambd|Lambd|delt|Thet|omeg|Omeg|Kapp|Delt|nabl|zet|to[es]|rdc|ldc|iot|Zet|Bet|Et)a|b(?:lacktriangle|arwed|u(?:mpe?|ll)|sol|o(?:x[HVhv]|t)|brk|ne)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|RightT(?:riangl|e)e|(?:(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|nsu[bp]seteq|colone|(?:wedg|sim)e|nsime|lneq|gneq)q|DifferentialD|(?:(?:fall|ris)ingdots|(?:suc|pre)ccurly|ddots)eq|A(?:pplyFunction|ssign|(?:tild|grav|brev)e|acute|o(?:gon|pf)|lpha|(?:mac|sc|f)r|c(?:irc|y)|ring|Elig|uml|nd|MP)|(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|L(?:eft(?:T(?:riangl|e)e|Arrow)|l)|G(?:reaterEqual|amma)|E(?:xponentialE|quilibrium|sim|cy|TH|NG)|(?:(?:RightCeil|LeftCeil|varnoth|ar|Ur)in|(?:b(?:ack)?co|uri)n|vzigza|roan|loan|ffli|amal|sun|rin|n(?:tl|an)|Ran|Lan)g|(?:thick|succn?|precn?|less|g(?:tr|n)|ln|n)approx|(?:s(?:traightph|em)|(?:rtril|xu|u[lr]|xd|v[lr])tr|varph|l[lr]tr|b(?:sem|eps)|Ph)i|(?:circledd|osl|n(?:v[Dd]|V[Dd]|d)|hsl|V(?:vd|D)|Osl|v[Dd]|md)ash|(?:(?:RuleDelay|imp|cuw)e|(?:n(?:s(?:hort)?)?|short|rn)mi|D(?:Dotrah|iamon)|(?:i(?:nt)?pr|peri)o|odsol|llhar|c(?:opro|irmi)|(?:capa|anda|pou)n|Barwe|napi|api)d|(?:cu(?:rlyeq(?:suc|pre)|es)|telre|[ou]dbla|Udbla|Odbla|radi|lesc|gesc|dbla)c|(?:circled|big|eq|[is]|c|x|a|S|[hw]|W|H|G|E|C)circ|rightarrow|R(?:ightArrow|arr|e)|Pr(?:oportion)?|(?:longmapst|varpropt|p(?:lustw|ropt)|varrh|numer|(?:rsa|lsa|sb)qu|m(?:icr|h)|[lr]aqu|bdqu|eur)o|UnderBrace|ImaginaryI|B(?:ernoullis|a(?:ckslash|rv)|umpeq|cy)|(?:(?:Laplace|Mellin|zee)tr|Fo(?:uriertr|p)|(?:profsu|ssta)r|ordero|origo|[ps]op|nop|mop|i(?:op|mo)|h(?:op|al)|f(?:op|no)|dop|bop|Rop|Pop|Nop|Lop|Iop|Hop|Dop|[GJKMOQSTV-Zgjkoqvwyz]op|Bop)f|nsu[bp]seteq|t(?:ri(?:angleq|e)|imesd|he(?:tav|re4)|au)|O(?:verBrace|r)|(?:(?:pitchfo|checkma|t(?:opfo|b)|rob|rbb|l[bo]b)r|intlarh|b(?:brktbr|l(?:oc|an))|perten|NoBrea|rarrh|s[ew]arh|n[ew]arh|l(?:arrh|hbl)|uhbl|Hace)k|(?:NotCupC|(?:mu(?:lti)?|x)m|cupbrc)ap|t(?:riangle|imes|heta|opf?)|Precedes|Succeeds|Superset|NotEqual|(?:n(?:atural|exist|les)|s(?:qc[au]p|mte)|prime)s|c(?:ir(?:cled[RS]|[Ee])|u(?:rarrm|larrp|darr[lr]|ps)|o(?:mmat|pf)|aps|hi)|b(?:sol(?:hsu)?b|ump(?:eq|E)|ox(?:box|[Vv][HLRhlr]|[Hh][DUdu]|[DUdu][LRlr])|e(?:rnou|t[ah])|lk(?:34|1[24])|cy)|(?:l(?:esdot|squ|dqu)o|rsquo|rdquo|ngt)r|a(?:n(?:g(?:msda[a-h]|st|e)|d[dv])|st|p[Ee]|mp|fr|c[Edy])|(?:g(?:esdoto|E)|[lr]haru)l|(?:angrtvb|lrhar|nis)d|(?:(?:th(?:ic)?k|succn?|p(?:r(?:ecn?|n)?|lus)|rarr|l(?:ess|arr)|su[bp]|par|scn|g(?:tr|n)|ne|sc|n[glv]|ln|eq?)si|thetasy|ccupss|alefsy|botto)m|trpezium|(?:hks[ew]|dr?bk|bk)arow|(?:(?:[lr]a|d|c)empty|b(?:nequi|empty)|plank|nequi|odi)v|(?:(?:sc|rp|n)pol|point|fpart)int|(?:c(?:irf|wco)|awco)nint|PartialD|n(?:s(?:u[bp](?:set)?|c)|rarr|ot(?:ni|in)?|warr|e(?:arr)?|a(?:tur|p)|vlt|p(?:re?|ar)|um?|l[et]|ge|i)|n(?:atural|exist|les)|d(?:i(?:am(?:ond)?|v(?:ide)?)|tri|ash|ot|d)|backsim|l(?:esdot|squ|dqu)o|g(?:esdoto|E)|U(?:p(?:Arrow|si)|nion|arr)|angrtvb|p(?:l(?:anckh|us(?:d[ou]|[be]))|ar(?:sl|t)|r(?:od|nE|E)|erp|iv|m)|n(?:ot(?:niv[a-c]|in(?:v[a-c]|E))|rarr[cw]|s(?:u[bp][Ee]|c[er])|part|v(?:le|g[et])|g(?:es|E)|c(?:ap|y)|apE|lE|iv|Ll|Gg)|m(?:inus(?:du|b)|ale|cy|p)|rbr(?:k(?:sl[du]|e)|ac[ek])|(?:suphsu|tris|rcu|lcu)b|supdsub|(?:s[ew]a|n[ew]a)rrow|(?:b(?:ecaus|sim)|n(?:[lr]tri|bump)|csu[bp])e|equivDD|u(?:rcorn|lcorn|psi)|timesb|s(?:u(?:p(?:set)?|b(?:set)?)|q(?:su[bp]|u)|i(?:gma|m)|olb?|dot|mt|fr|ce?)|p(?:l(?:anck|us)|r(?:op|ec?)?|ara?|i)|o(?:times|r(?:d(?:er)?)?)|m(?:i(?:nusd?|d)|a(?:p(?:sto)?|lt)|u)|rmoust|g(?:e(?:s(?:dot|l)?|q)?|sim|n(?:ap|e)|t|l|g)|(?:spade|heart)s|c(?:u(?:rarr|larr|p)|o(?:m(?:ma|p)|lon|py|ng)|lubs|heck|cups|irc?|ent|ap)|colone|a(?:p(?:prox)?|n(?:g(?:msd|rt)?|d)|symp|f|c)|S(?:quare|u[bp]|c)|Subset|b(?:ecaus|sim)|vsu[bp]n[Ee]|s(?:u(?:psu[bp]|b(?:su[bp]|n[Ee]|E)|pn[Ee]|p[1-3E]|m)|q(?:u(?:ar[ef]|f)|su[bp]e)|igma[fv]|etmn|dot[be]|par|mid|hc?y|c[Ey])|f(?:rac(?:78|5[68]|45|3[458]|2[35]|1[2-68])|fr)|e(?:m(?:sp1[34]|ptyv)|psiv|c(?:irc|y)|t[ah]|ng|ll|fr|e)|(?:kappa|isins|vBar|fork|rho|phi|n[GL]t)v|divonx|V(?:dashl|ee)|gammad|G(?:ammad|cy|[Tgt])|[Ldhlt]strok|[HT]strok|(?:c(?:ylct|hc)|(?:s(?:oft|hch)|hard|S(?:OFT|HCH)|jser|J(?:ser|uk)|HARD|tsh|TSH|juk|iuk|I(?:uk|[EO])|zh|yi|nj|lj|k[hj]|gj|dj|ZH|Y[AIU]|NJ|LJ|K[HJ]|GJ|D[JSZ])c|ubrc|Ubrc|(?:yu|i[eo]|dz|v|p|f)c|TSc|SHc|CHc|Vc|Pc|Mc|Fc)y|(?:(?:wre|jm)at|dalet|a(?:ngs|le)p|imat|[lr]ds)h|[CLRUceglnou]acute|ff?llig|(?:f(?:fi|[ij])|sz|oe|ij|ae|OE|IJ)lig|r(?:a(?:tio|rr|ng)|tri|par|eal)|s[ew]arr|s(?:qc[au]p|mte)|prime|rarrb|i(?:n(?:fin|t)?|sin|t|i|c)|e(?:quiv|m(?:pty|sp)|p(?:si|ar)|cir|l|g)|kappa|isins|ncong|doteq|(?:wedg|sim)e|nsime|rsquo|rdquo|[lr]haru|V(?:dash|ert)|Tilde|lrhar|gamma|Equal|UpTee|n(?:[lr]tri|bump)|C(?:olon|up|ap)|v(?:arpi|ert)|u(?:psih|ml)|vnsu[bp]|r(?:tri[ef]|e(?:als|g)|a(?:rr[cw]|ng[de]|ce)|sh|lm|x)|rhard|sim[gl]E|i(?:sin[Ev]|mage|f[fr]|cy)|harrw|(?:n[gl]|l)eqq|g(?:sim[el]|tcc|e(?:qq|l)|nE|l[Eaj]|gg|ap)|ocirc|starf|utrif|d(?:trif|i(?:ams|e)|ashv|sc[ry]|fr|eg)|[du]har[lr]|T(?:HORN|a[bu])|(?:TRAD|[gl]vn)E|odash|[EUaeu]o(?:gon|pf)|alpha|[IJOUYgjuy]c(?:irc|y)|v(?:arr|ee)|succ|sim[gl]|harr|ln(?:ap|e)|lesg|(?:n[gl]|l)eq|ocir|star|utri|vBar|fork|su[bp]e|nsim|lneq|gneq|csu[bp]|zwn?j|yacy|x(?:opf|i)|scnE|o(?:r(?:d[fm]|v)|mid|lt|hm|gt|fr|cy|S)|scap|rsqb|ropf|ltcc|tsc[ry]|QUOT|[EOUYao]uml|rho|phi|n[GL]t|e[gl]s|ngt|I(?:nt|m)|nis|rfr|rcy|lnE|lEg|ufr|S(?:um|cy)|R(?:sh|ho)|psi|Ps?i|[NRTt]cy|L(?:sh|cy|[Tt])|kcy|Kcy|Hat|REG|[Zdz]cy|wr|lE|wp|Xi|Nu|Mu)(;)",name:"constant.language.character-reference.named.html"}},scopeName:"source.mdx",embeddedLangs:[],embeddedLangsLazy:["tsx","toml","yaml","c","clojure","coffee","cpp","csharp","css","diff","docker","elixir","elm","erlang","go","graphql","haskell","html","ini","java","javascript","json","julia","kotlin","less","lua","make","markdown","objective-c","perl","python","r","ruby","rust","scala","scss","shellscript","shellsession","sql","xml","swift","typescript"]});var n=[e];export{n as default}; diff --git a/assets/chunks/mermaid.Dkb1Nx48.js b/assets/chunks/mermaid.Dkb1Nx48.js new file mode 100644 index 000000000..399eeb205 --- /dev/null +++ b/assets/chunks/mermaid.Dkb1Nx48.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Mermaid",fileTypes:[],injectionSelector:"L:text.html.markdown",name:"mermaid",patterns:[{include:"#mermaid-code-block"},{include:"#mermaid-code-block-with-attributes"},{include:"#mermaid-ado-code-block"}],repository:{mermaid:{patterns:[{begin:"^\\s*(classDiagram)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Class Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"entity.name.type.class.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"keyword.control.mermaid"},5:{name:"entity.name.type.class.mermaid"},6:{name:"keyword.control.mermaid"},7:{name:"string"}},comment:'(class name) ("multiplicity relationship")? (relationship) ("multiplicity relationship")? (class name) :? (labelText)?',match:'([\\w-]+)\\s("(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)")?\\s?(--o|--\\*|\\<--|--\\>|<\\.\\.|\\.\\.\\>|\\<\\|\\.\\.|\\.\\.\\|\\>|\\<\\|--|--\\|>|--\\*|--|\\.\\.|\\*--|o--)\\s("(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)")?\\s?([\\w-]+)\\s?(:)?\\s(.*)$'},{captures:{1:{name:"entity.name.type.class.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"entity.name.function.mermaid"},5:{name:"punctuation.parenthesis.open.mermaid"},6:{name:"storage.type.mermaid"},7:{name:"punctuation.definition.typeparameters.begin.mermaid"},8:{name:"storage.type.mermaid"},9:{name:"punctuation.definition.typeparameters.end.mermaid"},10:{name:"entity.name.variable.parameter.mermaid"},11:{name:"punctuation.parenthesis.closed.mermaid"},12:{name:"keyword.control.mermaid"},13:{name:"storage.type.mermaid"},14:{name:"punctuation.definition.typeparameters.begin.mermaid"},15:{name:"storage.type.mermaid"},16:{name:"punctuation.definition.typeparameters.end.mermaid"}},comment:"(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",match:"([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(\\()([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?(\\))([*\\$]{0,2})\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$"},{captures:{1:{name:"entity.name.type.class.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"storage.type.mermaid"},5:{name:"punctuation.definition.typeparameters.begin.mermaid"},6:{name:"storage.type.mermaid"},7:{name:"punctuation.definition.typeparameters.end.mermaid"},8:{name:"entity.name.variable.field.mermaid"}},comment:"(class name) : (visibility)?(datatype/generic data type) (attribute name)$",match:"([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$"},{captures:{1:{name:"punctuation.definition.typeparameters.begin.mermaid"},2:{name:"storage.type.mermaid"},3:{name:"punctuation.definition.typeparameters.end.mermaid"},4:{name:"entity.name.type.class.mermaid"}},comment:"<<(Annotation)>> (class name)",match:"(<<)([\\w-]+)(>>)\\s?([\\w-]+)?"},{begin:"(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?\\s?({)",beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.type.class.mermaid"},3:{name:"punctuation.definition.typeparameters.begin.mermaid"},4:{name:"storage.type.mermaid"},5:{name:"punctuation.definition.typeparameters.end.mermaid"},6:{name:"keyword.control.mermaid"}},comment:"class (class name) ~?(generic type)?~? ({)",end:"(})",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{match:"\\%%.*",name:"comment"},{begin:"\\s([\\+~#-])?([\\w-]+)(\\()",beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"},3:{name:"punctuation.parenthesis.open.mermaid"}},comment:"(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",end:"(\\))([*\\$]{0,2})\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",endCaptures:{1:{name:"punctuation.parenthesis.closed.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"storage.type.mermaid"},4:{name:"punctuation.definition.typeparameters.begin.mermaid"},5:{name:"storage.type.mermaid"},6:{name:"punctuation.definition.typeparameters.end.mermaid"}},patterns:[{captures:{1:{name:"storage.type.mermaid"},2:{name:"punctuation.definition.typeparameters.begin.mermaid"},3:{name:"storage.type.mermaid"},4:{name:"punctuation.definition.typeparameters.end.mermaid"},5:{name:"entity.name.variable.parameter.mermaid"}},comment:"(TBD)",match:"\\s*,?\\s*([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?"}]},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"storage.type.mermaid"},3:{name:"punctuation.definition.typeparameters.begin.mermaid"},4:{name:"storage.type.mermaid"},5:{name:"punctuation.definition.typeparameters.end.mermaid"},6:{name:"entity.name.variable.field.mermaid"}},comment:"(visibility)?(datatype/generic data type) (attribute name)$",match:"\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$"},{captures:{1:{name:"punctuation.definition.typeparameters.begin.mermaid"},2:{name:"storage.type.mermaid"},3:{name:"punctuation.definition.typeparameters.end.mermaid"},4:{name:"entity.name.type.class.mermaid"}},comment:"<<(Annotation)>> (class name)",match:"(<<)([\\w-]+)(>>)\\s?([\\w-]+)?"}]},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.type.class.mermaid"},3:{name:"punctuation.definition.typeparameters.begin.mermaid"},4:{name:"storage.type.mermaid"},5:{name:"punctuation.definition.typeparameters.end.mermaid"}},comment:"class (class name) ~?(generic type)?~?",match:"(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?"}]},{begin:"^\\s*(erDiagram)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Entity Relationship Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{comment:"(entity)",match:"^\\s*([\\w-]+)$",name:"variable"},{begin:"\\s+([\\w-]+)\\s*({)",beginCaptures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"}},comment:"(entity) {",end:"(})",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{captures:{1:{name:"storage.type.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"string"}},comment:'(type) (name) (PK|FK)? ("comment")?',match:`\\s*([\\w-]+)\\s+([\\w-]+)\\s+(PK|FK)?\\s*("["\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*")?\\s*`},{match:"\\%%.*",name:"comment"}]},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"variable"},4:{name:"keyword.control.mermaid"},5:{name:"string"}},comment:"(entity) (relationship) (entity) : (label)",match:'\\s*([\\w-]+)\\s*((?:\\|o|\\|\\||}o|}\\||one or (?:zero|more|many)|zero or (?:one|more|many)|many\\((?:0|1)\\)|only one|0\\+|1\\+?)(?:..|--)(?:o\\||\\|\\||o{|\\|{|one or (?:zero|more|many)|zero or (?:one|more|many)|many\\((?:0|1)\\)|only one|0\\+|1\\+?))\\s*([\\w-]+)\\s*(:)\\s*((?:"[\\w\\s]*")|(?:[\\w-]+))'}]},{begin:"^\\s*(gantt)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Gantt Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},match:"(dateFormat)\\s+([\\w\\-\\.]+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},match:"(axisFormat)\\s+([\\w\\%\\/\\\\\\-\\.]+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:"(tickInterval)\\s+(([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month))"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:`(title)\\s+(\\s*["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:"(excludes)\\s+((?:[\\d\\-,\\s]+|monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekends)+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:"^\\s+(todayMarker)\\s+(.*)$"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:`(section)\\s+(\\s*["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)`},{begin:"^\\s(.*)(:)",beginCaptures:{1:{name:"string"},2:{name:"keyword.control.mermaid"}},end:"$",patterns:[{match:"(crit|done|active|after)",name:"entity.name.function.mermaid"},{match:"\\%%.*",name:"comment"}]}]},{begin:"^\\s*(gitGraph)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Git Graph",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{begin:"\\s*(commit)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"commit",end:"$",patterns:[{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:'(id)(:) ("id")',match:'\\s*(id)(:)\\s?("[^"\\n]*")'},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"entity.name.function.mermaid"}},comment:"(type)(:) (COMMIT_TYPE)",match:"\\s*(type)(:)\\s?(NORMAL|REVERSE|HIGHLIGHT)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:'(tag)(:) ("tag")',match:`\\s*(tag)(:)\\s?("[\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*")`}]},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"(checkout) (branch-name)",match:'\\s*(checkout)\\s*([^\\s"]*)'},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"keyword.control.mermaid"},5:{name:"constant.numeric.decimal.mermaid"}},comment:"(branch) (branch-name) (order)?(:) (number)",match:'\\s*(branch)\\s*([^\\s"]*)\\s*(?:(order)(:)\\s?(\\d+))?'},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"keyword.control.mermaid"},5:{name:"string"}},comment:'(merge) (branch-name) (tag: "tag-name")?',match:'\\s*(merge)\\s*([^\\s"]*)\\s*(?:(tag)(:)\\s?("[^"\\n]*"))?'},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"string"}},comment:'(cherry-pick) (id)(:)("commit-id")',match:'\\s*(cherry-pick)\\s+(id)(:)\\s*("[^"\\n]*")'}]},{begin:"^\\s*(graph|flowchart)\\s+([\\p{Letter}\\ 0-9]+)",beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},comment:"Graph",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"string"},5:{name:"keyword.control.mermaid"}},comment:"",match:'\\b(subgraph)\\s+(\\w+)(\\[)("?[\\w\\s*+%=\\\\/:\\.\\-\'`,&^#$!?<>]*"?)(\\])'},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},match:"\\b(subgraph)\\s+([\\p{Letter}\\ 0-9<>]+)",name:"meta.function.mermaid"},{match:"\\b(end|RB|BT|RL|TD|LR)\\b",name:"keyword.control.mermaid"},{begin:"(\\b(?:(?!--|==)[-\\w])+\\b\\s*)(\\(\\[|\\[\\[|\\[\\(|\\[|\\(+|\\>|\\{|\\(\\()",beginCaptures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:"(Entity)(Edge/Shape)(Text)(Edge/Shape)",end:"(\\]\\)|\\]\\]|\\)\\]|\\]|\\)+|\\}|\\)\\))",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{begin:'\\s*(")',beginCaptures:{1:{name:"string"}},comment:'("multi-line text")',end:'(")',endCaptures:{1:{name:"string"}},patterns:[{begin:'([^"]*)',beginCaptures:{1:{name:"string"}},comment:"capture inner text between quotes",end:'(?=")',patterns:[{captures:{1:{name:"comment"}},match:'([^"]*)'}]}]},{captures:{1:{name:"string"}},comment:"(single line text)",match:"\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)"}]},{begin:"\\s*((?:-{2,5}|={2,5})[xo>]?\\|)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:'(Graph Link)("Multiline text")(Graph Link)',end:"(\\|)",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{begin:'\\s*(")',beginCaptures:{1:{name:"string"}},comment:'("multi-line text")',end:'(")',endCaptures:{1:{name:"string"}},patterns:[{begin:'([^"]*)',beginCaptures:{1:{name:"string"}},comment:"capture inner text between quotes",end:'(?=")',patterns:[{captures:{1:{name:"comment"}},match:'([^"]*)'}]}]},{captures:{1:{name:"string"}},comment:"(single line text)",match:"\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)"}]},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"},3:{name:"keyword.control.mermaid"}},comment:"(Graph Link Start Arrow)(Text)(Graph Link End Arrow)",match:"\\s*([xo<]?(?:-{2,5}|={2,5}|-\\.{1,3}|-\\.))((?:(?!--|==)[\\w\\s*+%=\\\\/:\\.\\-'`,\"&^#$!?<>\\[\\]])*)((?:-{2,5}|={2,5}|\\.{1,3}-|\\.-)[xo>]?)"},{captures:{1:{name:"keyword.control.mermaid"}},comment:"(Graph Link)",match:"\\s*([ox<]?(?:-.{1,3}-|-{1,3}|={1,3})[ox>]?)"},{comment:"Entity",match:"(\\b(?:(?!--|==)[-\\w])+\\b\\s*)",name:"variable"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"string"}},comment:"(Class)(Node(s))(ClassName)",match:"\\s*(class)\\s+(\\b[-,\\w]+)\\s+(\\b\\w+\\b)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"string"}},comment:"(ClassDef)(ClassName)(Styles)",match:"\\s*(classDef)\\s+(\\b\\w+\\b)\\s+(\\b[-,:;#\\w]+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"variable"},4:{name:"string"}},comment:"(Click)(Entity)(Link)?(Tooltip)",match:'\\s*(click)\\s+(\\b[-\\w]+\\b\\s*)(\\b\\w+\\b)?\\s("*.*")'}]},{begin:"^\\s*(pie)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Pie Chart",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:`(title)\\s+(\\s*["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)`},{begin:"\\s(.*)(:)",beginCaptures:{1:{name:"string"},2:{name:"keyword.control.mermaid"}},end:"$",patterns:[{match:"\\%%.*",name:"comment"}]}]},{begin:"^\\s*(requirementDiagram)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Requirement Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{begin:`^\\s*((?i)(?:functional|interface|performance|physical)?requirement|designConstraint)\\s*(["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)\\s*({)`,beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"}},comment:"(requirement) (name) ({)",end:"\\s*(})",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"(id:) (variable id)",match:"\\s*(id:)\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},comment:"(text:) (text string)",match:"\\s*(text:)\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},comment:"(risk:) (risk option)",match:"\\s*(risk:)\\s*(low|medium|high)\\s*$"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"}},comment:"(verifyMethod)(:) (method)",match:"\\s*(verifymethod:)\\s*(analysis|inspection|test|demonstration)\\s*$"}]},{begin:`^\\s*(element)\\s*(["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)\\s*({)`,beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"}},comment:"(element) (name) ({)",end:"\\s*(})",endCaptures:{1:{name:"keyword.control.mermaid"}},patterns:[{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"(type:) (user type)",match:`\\s*(type:)\\s*(["$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"(docref:) (user ref)",match:"\\s*(?i)(docref:)\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)"}]},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"keyword.control.mermaid"},5:{name:"variable"}},comment:"(source) (-) (type) (->) (destination)",match:"^\\s*([\\w]+)\\s*(-)\\s*((?i)contains|copies|derives|satisfies|verifies|refines|traces)\\s*(->)\\s*([\\w]+)\\s*$"},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"keyword.control.mermaid"},4:{name:"keyword.control.mermaid"},5:{name:"variable"}},comment:"(destination) (<-) (type) (-) (source)",match:"^\\s*([\\w]+)\\s*(<-)\\s*((?i)contains|copies|derives|satisfies|verifies|refines|traces)\\s*(-)\\s*([\\w]+)\\s*$"}]},{begin:"^\\s*(sequenceDiagram)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"Sequence Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"(\\%%|#).*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:"(title)(title text)",match:`(title)\\s*(:)?\\s+(\\s*["\\(\\)$&%\\^/#.,?!:*+=<>\\'\\\\\\-\\w\\s]*)`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"string"}},comment:"(participant)(Actor)(as)?(Label)?",match:`\\s*(participant|actor)\\s+((?:(?! as )["\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s])+)\\s*(as)?\\s(["\\(\\)$&%\\^/#.,?!*=<>\\'\\\\\\w\\s]+)?`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"(activate/deactivate)(Actor)",match:`\\s*((?:de)?activate)\\s+(\\b["()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"},3:{name:"variable"},4:{name:"keyword.control.mermaid"},5:{name:"variable"},6:{name:"keyword.control.mermaid"},7:{name:"string"}},comment:"(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)",match:`\\s*(Note)\\s+((?:left|right)\\sof|over)\\s+(\\b["()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)(,)?(\\b["()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?\\s*)?(:)(?:\\s+([^;#]*))?`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},comment:"(loop)(loop text)",match:"\\s*(loop)(?:\\s+([^;#]*))?"},{captures:{1:{name:"keyword.control.mermaid"}},comment:"(end)",match:"\\s*(end)"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},comment:"(alt/else/option/par/and/autonumber/critical/opt)(text)",match:"\\s*(alt|else|option|par|and|rect|autonumber|critical|opt)(?:\\s+([^#;]*))?"},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"variable"},4:{name:"keyword.control.mermaid"},5:{name:"string"}},comment:"(Actor)(Arrow)(Actor)(:)(Message)",match:`\\s*(\\b["()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?)\\s*(-?-(?:\\>|x|\\))\\>?[+-]?)\\s*(["()$&%^/#.?!*=<>'\\\\\\w\\s]+\\b\\)?)\\s*(:)\\s*([^;#]*)`},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"entity.name.function.mermaid"},3:{name:"string"}},comment:"(box transparent text)",match:"\\s*(box)\\s+(transparent)(?:\\s+([^;#]*))?"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},comment:"(box text)",match:"\\s*(box)(?:\\s+([^;#]*))?"}]},{begin:"^\\s*(stateDiagram(?:-v2)?)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"State Diagram",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"}},comment:"}",match:"\\s+(})\\s+"},{captures:{1:{name:"keyword.control.mermaid"}},comment:"--",match:"\\s+(--)\\s+"},{comment:"(state)",match:"^\\s*([\\w-]+)$",name:"variable"},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:"(state) : (description)",match:"([\\w-]+)\\s+(:)\\s+(\\s*[-\\w\\s]+\\b)"},{begin:"(state)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"state",end:"$",patterns:[{captures:{1:{name:"string"},2:{name:"keyword.control.mermaid"},3:{name:"variable"}},comment:'"(description)" as (state)',match:'\\s+("[-\\w\\s]+\\b")\\s+(as)\\s+([\\w-]+)'},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"}},comment:"(state name) {",match:"\\s+([\\w-]+)\\s+({)"},{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"}},comment:"(state name) <<fork|join>>",match:"\\s+([\\w-]+)\\s+(<<(?:fork|join)>>)"}]},{begin:"([\\w-]+)\\s+(-->)",beginCaptures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"}},comment:"(state) -->",end:"$",patterns:[{captures:{1:{name:"variable"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:"(state) (:)? (transition text)?",match:"\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"string"}},comment:"[*] (:)? (transition text)?",match:"(\\[\\*\\])\\s*(:)?\\s*([^\\n:]+)?"}]},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"keyword.control.mermaid"},3:{name:"variable"},4:{name:"keyword.control.mermaid"},5:{name:"string"}},comment:"[*] --> (state) (:)? (transition text)?",match:"(\\[\\*\\])\\s+(-->)\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"},3:{name:"keyword.control.mermaid"},4:{name:"string"}},comment:"note left|right of (state name)",match:"(note (?:left|right) of)\\s+([\\w-]+)\\s+(:)\\s*([^\\n:]+)"},{begin:"(note (?:left|right) of)\\s+([\\w-]+)(.|\\n)",beginCaptures:{1:{name:"keyword.control.mermaid"},2:{name:"variable"}},comment:"note left|right of (state name) (note text) end note",contentName:"string",end:"(end note)",endCaptures:{1:{name:"keyword.control.mermaid"}}}]},{begin:"^\\s*(journey)",beginCaptures:{1:{name:"keyword.control.mermaid"}},comment:"User Journey",end:"(^|\\G)(?=\\s*[`:~]{3,}\\s*$)",patterns:[{match:"\\%%.*",name:"comment"},{captures:{1:{name:"keyword.control.mermaid"},2:{name:"string"}},match:`(title|section)\\s+(\\s*["\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)`},{begin:`\\s*(["\\(\\)$&%\\^/.,?!*+=<>\\'\\\\\\-\\w\\s]*)\\s*(:)\\s*(\\d+)\\s*(:)`,beginCaptures:{1:{name:"string"},2:{name:"keyword.control.mermaid"},3:{name:"constant.numeric.decimal.mermaid"},4:{name:"keyword.control.mermaid"}},end:"$",patterns:[{captures:{1:{name:"variable"}},comment:"(taskName)",match:"\\s*,?\\s*([^,#\\n]+)"}]}]}]},"mermaid-ado-code-block":{begin:"(?i)\\s*:::\\s*mermaid\\s*$",contentName:"meta.embedded.block.mermaid",end:"\\s*:::\\s*",patterns:[{include:"#mermaid"}]},"mermaid-code-block":{begin:"(?i)(?<=[`~])mermaid(\\s+[^`~]*)?$",contentName:"meta.embedded.block.mermaid",end:"(^|\\G)(?=\\s*[`~]{3,}\\s*$)",patterns:[{include:"#mermaid"}]},"mermaid-code-block-with-attributes":{begin:"(?i)(?<=[`~])\\{\\s*\\.?mermaid(\\s+[^`~]*)?$",contentName:"meta.embedded.block.mermaid",end:"(^|\\G)(?=\\s*[`~]{3,}\\s*$)",patterns:[{include:"#mermaid"}]}},scopeName:"markdown.mermaid.codeblock"});var a=[e];export{a as default}; diff --git a/assets/chunks/min-dark.iSbrOpM4.js b/assets/chunks/min-dark.iSbrOpM4.js new file mode 100644 index 000000000..a57d17d66 --- /dev/null +++ b/assets/chunks/min-dark.iSbrOpM4.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#1A1A1A","activityBar.foreground":"#7D7D7D","activityBarBadge.background":"#383838","badge.background":"#383838","badge.foreground":"#C1C1C1","button.background":"#333","debugIcon.breakpointCurrentStackframeForeground":"#79b8ff","debugIcon.breakpointDisabledForeground":"#848484","debugIcon.breakpointForeground":"#FF7A84","debugIcon.breakpointStackframeForeground":"#79b8ff","debugIcon.breakpointUnverifiedForeground":"#848484","debugIcon.continueForeground":"#FF7A84","debugIcon.disconnectForeground":"#FF7A84","debugIcon.pauseForeground":"#FF7A84","debugIcon.restartForeground":"#79b8ff","debugIcon.startForeground":"#79b8ff","debugIcon.stepBackForeground":"#FF7A84","debugIcon.stepIntoForeground":"#FF7A84","debugIcon.stepOutForeground":"#FF7A84","debugIcon.stepOverForeground":"#FF7A84","debugIcon.stopForeground":"#79b8ff","diffEditor.insertedTextBackground":"#3a632a4b","diffEditor.removedTextBackground":"#88063852","editor.background":"#1f1f1f","editor.lineHighlightBorder":"#303030","editorGroupHeader.tabsBackground":"#1A1A1A","editorGroupHeader.tabsBorder":"#1A1A1A","editorIndentGuide.activeBackground":"#383838","editorIndentGuide.background":"#2A2A2A","editorLineNumber.foreground":"#727272","editorRuler.foreground":"#2A2A2A","editorSuggestWidget.background":"#1A1A1A",focusBorder:"#444",foreground:"#888888","gitDecoration.ignoredResourceForeground":"#444444","input.background":"#2A2A2A","input.foreground":"#E0E0E0","inputOption.activeBackground":"#3a3a3a","list.activeSelectionBackground":"#212121","list.activeSelectionForeground":"#F5F5F5","list.focusBackground":"#292929","list.highlightForeground":"#EAEAEA","list.hoverBackground":"#262626","list.hoverForeground":"#9E9E9E","list.inactiveSelectionBackground":"#212121","list.inactiveSelectionForeground":"#F5F5F5","panelTitle.activeBorder":"#1f1f1f","panelTitle.activeForeground":"#FAFAFA","panelTitle.inactiveForeground":"#484848","peekView.border":"#444","peekViewEditor.background":"#242424","pickerGroup.border":"#363636","pickerGroup.foreground":"#EAEAEA","progressBar.background":"#FAFAFA","scrollbar.shadow":"#1f1f1f","sideBar.background":"#1A1A1A","sideBarSectionHeader.background":"#202020","statusBar.background":"#1A1A1A","statusBar.debuggingBackground":"#1A1A1A","statusBar.foreground":"#7E7E7E","statusBar.noFolderBackground":"#1A1A1A","statusBarItem.prominentBackground":"#fafafa1a","statusBarItem.remoteBackground":"#1a1a1a00","statusBarItem.remoteForeground":"#7E7E7E","symbolIcon.classForeground":"#FF9800","symbolIcon.constructorForeground":"#b392f0","symbolIcon.enumeratorForeground":"#FF9800","symbolIcon.enumeratorMemberForeground":"#79b8ff","symbolIcon.eventForeground":"#FF9800","symbolIcon.fieldForeground":"#79b8ff","symbolIcon.functionForeground":"#b392f0","symbolIcon.interfaceForeground":"#79b8ff","symbolIcon.methodForeground":"#b392f0","symbolIcon.variableForeground":"#79b8ff","tab.activeBorder":"#1e1e1e","tab.activeForeground":"#FAFAFA","tab.border":"#1A1A1A","tab.inactiveBackground":"#1A1A1A","tab.inactiveForeground":"#727272","terminal.ansiBrightBlack":"#5c5c5c","textLink.activeForeground":"#fafafa","textLink.foreground":"#CCC","titleBar.activeBackground":"#1A1A1A","titleBar.border":"#00000000"},displayName:"Min Dark",name:"min-dark",semanticHighlighting:!0,tokenColors:[{settings:{foreground:"#b392f0"}},{scope:["support.function","keyword.operator.accessor","meta.group.braces.round.function.arguments","meta.template.expression","markup.fenced_code meta.embedded.block"],settings:{foreground:"#b392f0"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:["strong","markup.heading.markdown","markup.bold.markdown"],settings:{fontStyle:"bold",foreground:"#FF7A84"}},{scope:["markup.italic.markdown"],settings:{fontStyle:"italic"}},{scope:"meta.link.inline.markdown",settings:{fontStyle:"underline",foreground:"#1976D2"}},{scope:["string","markup.fenced_code","markup.inline"],settings:{foreground:"#9db1c5"}},{scope:["comment","string.quoted.docstring.multi"],settings:{foreground:"#6b737c"}},{scope:["constant.language","variable.language.this","variable.other.object","variable.other.class","variable.other.constant","meta.property-name","support","string.other.link.title.markdown"],settings:{foreground:"#79b8ff"}},{scope:["constant.numeric","constant.other.placeholder","constant.character.format.placeholder","meta.property-value","keyword.other.unit","keyword.other.template","entity.name.tag.yaml","entity.other.attribute-name","support.type.property-name.json"],settings:{foreground:"#f8f8f8"}},{scope:["keyword","storage.modifier","storage.type","storage.control.clojure","entity.name.function.clojure","support.function.node","punctuation.separator.key-value","punctuation.definition.template-expression"],settings:{foreground:"#f97583"}},{scope:"variable.parameter.function",settings:{foreground:"#FF9800"}},{scope:["entity.name.type","entity.other.inherited-class","meta.function-call","meta.instance.constructor","entity.other.attribute-name","entity.name.function","constant.keyword.clojure"],settings:{foreground:"#b392f0"}},{scope:["entity.name.tag","string.quoted","string.regexp","string.interpolated","string.template","string.unquoted.plain.out.yaml","keyword.other.template"],settings:{foreground:"#ffab70"}},{scope:"token.info-token",settings:{foreground:"#316bcd"}},{scope:"token.warn-token",settings:{foreground:"#cd9731"}},{scope:"token.error-token",settings:{foreground:"#cd3131"}},{scope:"token.debug-token",settings:{foreground:"#800080"}},{scope:["punctuation.definition.arguments","punctuation.definition.dict","punctuation.separator","meta.function-call.arguments"],settings:{foreground:"#bbbbbb"}},{scope:"markup.underline.link",settings:{foreground:"#ffab70"}},{scope:["beginning.punctuation.definition.list.markdown"],settings:{foreground:"#FF7A84"}},{scope:"punctuation.definition.metadata.markdown",settings:{foreground:"#ffab70"}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown"],settings:{foreground:"#79b8ff"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/min-light.BITGhEdf.js b/assets/chunks/min-light.BITGhEdf.js new file mode 100644 index 000000000..97d1db7fa --- /dev/null +++ b/assets/chunks/min-light.BITGhEdf.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#f6f6f6","activityBar.foreground":"#9E9E9E","activityBarBadge.background":"#616161","badge.background":"#E0E0E0","badge.foreground":"#616161","button.background":"#757575","button.hoverBackground":"#616161","debugIcon.breakpointCurrentStackframeForeground":"#1976D2","debugIcon.breakpointDisabledForeground":"#848484","debugIcon.breakpointForeground":"#D32F2F","debugIcon.breakpointStackframeForeground":"#1976D2","debugIcon.continueForeground":"#6f42c1","debugIcon.disconnectForeground":"#6f42c1","debugIcon.pauseForeground":"#6f42c1","debugIcon.restartForeground":"#1976D2","debugIcon.startForeground":"#1976D2","debugIcon.stepBackForeground":"#6f42c1","debugIcon.stepIntoForeground":"#6f42c1","debugIcon.stepOutForeground":"#6f42c1","debugIcon.stepOverForeground":"#6f42c1","debugIcon.stopForeground":"#1976D2","diffEditor.insertedTextBackground":"#b7e7a44b","diffEditor.removedTextBackground":"#e597af52","editor.background":"#ffffff","editor.foreground":"#212121","editor.lineHighlightBorder":"#f2f2f2","editorBracketMatch.background":"#E7F3FF","editorBracketMatch.border":"#c8e1ff","editorGroupHeader.tabsBackground":"#f6f6f6","editorGroupHeader.tabsBorder":"#fff","editorIndentGuide.background":"#EEE","editorLineNumber.activeForeground":"#757575","editorLineNumber.foreground":"#CCC","editorSuggestWidget.background":"#F3F3F3","extensionButton.prominentBackground":"#000000AA","extensionButton.prominentHoverBackground":"#000000BB",focusBorder:"#D0D0D0",foreground:"#757575","gitDecoration.ignoredResourceForeground":"#AAAAAA","input.border":"#E9E9E9","inputOption.activeBackground":"#EDEDED","list.activeSelectionBackground":"#EEE","list.activeSelectionForeground":"#212121","list.focusBackground":"#ddd","list.focusForeground":"#212121","list.highlightForeground":"#212121","list.inactiveSelectionBackground":"#E0E0E0","list.inactiveSelectionForeground":"#212121","panel.background":"#fff","panel.border":"#f4f4f4","panelTitle.activeBorder":"#fff","panelTitle.inactiveForeground":"#BDBDBD","peekView.border":"#E0E0E0","peekViewEditor.background":"#f8f8f8","pickerGroup.foreground":"#000","progressBar.background":"#000","scrollbar.shadow":"#FFF","sideBar.background":"#f6f6f6","sideBar.border":"#f6f6f6","sideBarSectionHeader.background":"#EEE","sideBarTitle.foreground":"#999","statusBar.background":"#f6f6f6","statusBar.border":"#f6f6f6","statusBar.debuggingBackground":"#f6f6f6","statusBar.foreground":"#7E7E7E","statusBar.noFolderBackground":"#f6f6f6","statusBarItem.prominentBackground":"#0000001a","statusBarItem.remoteBackground":"#f6f6f600","statusBarItem.remoteForeground":"#7E7E7E","symbolIcon.classForeground":"#dd8500","symbolIcon.constructorForeground":"#6f42c1","symbolIcon.enumeratorForeground":"#dd8500","symbolIcon.enumeratorMemberForeground":"#1976D2","symbolIcon.eventForeground":"#dd8500","symbolIcon.fieldForeground":"#1976D2","symbolIcon.functionForeground":"#6f42c1","symbolIcon.interfaceForeground":"#1976D2","symbolIcon.methodForeground":"#6f42c1","symbolIcon.variableForeground":"#1976D2","tab.activeBorder":"#FFF","tab.activeForeground":"#424242","tab.border":"#f6f6f6","tab.inactiveBackground":"#f6f6f6","tab.inactiveForeground":"#BDBDBD","tab.unfocusedActiveBorder":"#fff","terminal.ansiBlack":"#333","terminal.ansiBlue":"#e0e0e0","terminal.ansiBrightBlack":"#a1a1a1","terminal.ansiBrightBlue":"#6871ff","terminal.ansiBrightCyan":"#57d9ad","terminal.ansiBrightGreen":"#a3d900","terminal.ansiBrightMagenta":"#a37acc","terminal.ansiBrightRed":"#d6656a","terminal.ansiBrightWhite":"#7E7E7E","terminal.ansiBrightYellow":"#e7c547","terminal.ansiCyan":"#4dbf99","terminal.ansiGreen":"#77cc00","terminal.ansiMagenta":"#9966cc","terminal.ansiRed":"#D32F2F","terminal.ansiWhite":"#c7c7c7","terminal.ansiYellow":"#f29718","terminal.background":"#fff","textLink.activeForeground":"#000","textLink.foreground":"#000","titleBar.activeBackground":"#f6f6f6","titleBar.border":"#FFFFFF00","titleBar.inactiveBackground":"#f6f6f6"},displayName:"Min Light",name:"min-light",tokenColors:[{settings:{foreground:"#24292eff"}},{scope:["keyword.operator.accessor","meta.group.braces.round.function.arguments","meta.template.expression","markup.fenced_code meta.embedded.block"],settings:{foreground:"#24292eff"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:["strong","markup.heading.markdown","markup.bold.markdown"],settings:{fontStyle:"bold"}},{scope:["markup.italic.markdown"],settings:{fontStyle:"italic"}},{scope:"meta.link.inline.markdown",settings:{fontStyle:"underline",foreground:"#1976D2"}},{scope:["string","markup.fenced_code","markup.inline"],settings:{foreground:"#2b5581"}},{scope:["comment","string.quoted.docstring.multi"],settings:{foreground:"#c2c3c5"}},{scope:["constant.numeric","constant.language","constant.other.placeholder","constant.character.format.placeholder","variable.language.this","variable.other.object","variable.other.class","variable.other.constant","meta.property-name","meta.property-value","support"],settings:{foreground:"#1976D2"}},{scope:["keyword","storage.modifier","storage.type","storage.control.clojure","entity.name.function.clojure","entity.name.tag.yaml","support.function.node","support.type.property-name.json","punctuation.separator.key-value","punctuation.definition.template-expression"],settings:{foreground:"#D32F2F"}},{scope:"variable.parameter.function",settings:{foreground:"#FF9800"}},{scope:["support.function","entity.name.type","entity.other.inherited-class","meta.function-call","meta.instance.constructor","entity.other.attribute-name","entity.name.function","constant.keyword.clojure"],settings:{foreground:"#6f42c1"}},{scope:["entity.name.tag","string.quoted","string.regexp","string.interpolated","string.template","string.unquoted.plain.out.yaml","keyword.other.template"],settings:{foreground:"#22863a"}},{scope:"token.info-token",settings:{foreground:"#316bcd"}},{scope:"token.warn-token",settings:{foreground:"#cd9731"}},{scope:"token.error-token",settings:{foreground:"#cd3131"}},{scope:"token.debug-token",settings:{foreground:"#800080"}},{scope:["strong","markup.heading.markdown","markup.bold.markdown"],settings:{foreground:"#6f42c1"}},{scope:["punctuation.definition.arguments","punctuation.definition.dict","punctuation.separator","meta.function-call.arguments"],settings:{foreground:"#212121"}},{scope:["markup.underline.link","punctuation.definition.metadata.markdown"],settings:{foreground:"#22863a"}},{scope:["beginning.punctuation.definition.list.markdown"],settings:{foreground:"#6f42c1"}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","string.other.link.title.markdown","string.other.link.description.markdown"],settings:{foreground:"#d32f2f"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/mojo.-7WWnkdy.js b/assets/chunks/mojo.-7WWnkdy.js new file mode 100644 index 000000000..2c07f9807 --- /dev/null +++ b/assets/chunks/mojo.-7WWnkdy.js @@ -0,0 +1,517 @@ +const e=Object.freeze({displayName:"Mojo",name:"mojo",patterns:[{include:"#statement"},{include:"#expression"}],repository:{"annotated-parameter":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (:) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.annotation.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"},{match:"=(?!=)",name:"keyword.operator.assignment.python"}]},"assignment-operator":{match:`(?x) +<<= | >>= | //= | \\*\\*= +| \\+= | -= | /= | @= +| \\*= | %= | ~= | \\^= | &= | \\|= +| =(?!=) +`,name:"keyword.operator.assignment.python"},backticks:{begin:"\\`",end:"(?:\\`|(?<!\\\\)(\\n))",name:"string.quoted.single.python"},"builtin-callables":{patterns:[{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#builtin-exceptions"},{include:"#builtin-functions"},{include:"#builtin-types"}]},"builtin-exceptions":{match:`(?x) (?<!\\.) \\b( +( +Arithmetic | Assertion | Attribute | Buffer | BlockingIO +| BrokenPipe | ChildProcess +| (Connection (Aborted | Refused | Reset)?) +| EOF | Environment | FileExists | FileNotFound +| FloatingPoint | IO | Import | Indentation | Index | Interrupted +| IsADirectory | NotADirectory | Permission | ProcessLookup +| Timeout +| Key | Lookup | Memory | Name | NotImplemented | OS | Overflow +| Reference | Runtime | Recursion | Syntax | System +| Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)? +| Value | Windows | ZeroDivision | ModuleNotFound +) Error +| +((Pending)?Deprecation | Runtime | Syntax | User | Future | Import +| Unicode | Bytes | Resource +)? Warning +| +SystemExit | Stop(Async)?Iteration +| KeyboardInterrupt +| GeneratorExit | (Base)?Exception +)\\b +`,name:"support.type.exception.python"},"builtin-functions":{patterns:[{match:`(?x) +(?<!\\.) \\b( +__import__ | abs | aiter | all | any | anext | ascii | bin +| breakpoint | callable | chr | compile | copyright | credits +| delattr | dir | divmod | enumerate | eval | exec | exit +| filter | format | getattr | globals | hasattr | hash | help +| hex | id | input | isinstance | issubclass | iter | len +| license | locals | map | max | memoryview | min | next +| oct | open | ord | pow | print | quit | range | reload | repr +| reversed | round | setattr | sorted | sum | vars | zip +)\\b +`,name:"support.function.builtin.python"},{match:`(?x) +(?<!\\.) \\b( +file | reduce | intern | raw_input | unicode | cmp | basestring +| execfile | long | xrange +)\\b +`,name:"variable.legacy.builtin.python"}]},"builtin-possible-callables":{patterns:[{include:"#builtin-callables"},{include:"#magic-names"}]},"builtin-types":{match:`(?x) +(?<!\\.) \\b( +__mlir_attr | __mlir_op | __mlir_type | bool | bytearray | bytes | classmethod | complex | dict +| float | frozenset | int | list | object | property +| set | slice | staticmethod | str | tuple | type + +(?# Although 'super' is not a type, it's related to types, +and is special enough to be highlighted differently from +other built-ins) +| super +)\\b +`,name:"support.type.python"},"call-wrapper-inheritance":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:"same as a function call, but in inheritance context",end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#inheritance-name"},{include:"#function-arguments"}]},"class-declaration":{patterns:[{begin:`(?x) +\\s*(class|struct|trait)\\s+ +(?= +[[:alpha:]_]\\w* \\s* (:|\\() +) +`,beginCaptures:{1:{name:"storage.type.class.python"}},end:"(:)",endCaptures:{1:{name:"punctuation.section.class.begin.python"}},name:"meta.class.python",patterns:[{include:"#class-name"},{include:"#class-inheritance"}]}]},"class-inheritance":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.inheritance.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.inheritance.end.python"}},name:"meta.class.inheritance.python",patterns:[{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.arguments.python"},{match:",",name:"punctuation.separator.inheritance.python"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{match:"\\bmetaclass\\b",name:"support.type.metaclass.python"},{include:"#illegal-names"},{include:"#class-kwarg"},{include:"#call-wrapper-inheritance"},{include:"#expression-base"},{include:"#member-access-class"},{include:"#inheritance-identifier"}]},"class-kwarg":{captures:{1:{name:"entity.other.inherited-class.python variable.parameter.class.python"},2:{name:"keyword.operator.assignment.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\s*(=)(?!=) +`},"class-name":{patterns:[{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.type.class.python"}]},codetags:{captures:{1:{name:"keyword.codetag.notation.python"}},match:"(?:\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b)"},comments:{patterns:[{begin:`(?x) +(?: +\\# \\s* (type:) +\\s*+ (?# we want \`\\s*+\` which is possessive quantifier since +we do not actually want to backtrack when matching +whitespace here) +(?! $ | \\#) +) +`,beginCaptures:{0:{name:"meta.typehint.comment.python"},1:{name:"comment.typehint.directive.notation.python"}},contentName:"meta.typehint.comment.python",end:"(?:$|(?=\\#))",name:"comment.line.number-sign.python",patterns:[{match:`(?x) +\\G ignore +(?= \\s* (?: $ | \\#)) +`,name:"comment.typehint.ignore.notation.python"},{match:`(?x) +(?<!\\.)\\b( +bool | bytes | float | int | object | str +| List | Dict | Iterable | Sequence | Set +| FrozenSet | Callable | Union | Tuple +| Any | None +)\\b +`,name:"comment.typehint.type.notation.python"},{match:"([\\[\\]\\(\\),\\.\\=\\*]|(->))",name:"comment.typehint.punctuation.notation.python"},{match:"([[:alpha:]_]\\w*)",name:"comment.typehint.variable.notation.python"}]},{include:"#comments-base"}]},"comments-base":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($)",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-double-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:'($|(?="""))',name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-single-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($|(?='''))",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"curly-braces":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dict.begin.python"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dict.end.python"}},patterns:[{match:":",name:"punctuation.separator.dict.python"},{include:"#expression"}]},decorator:{begin:`(?x) +^\\s* +((@)) \\s* (?=[[:alpha:]_]\\w*) +`,beginCaptures:{1:{name:"entity.name.function.decorator.python"},2:{name:"punctuation.definition.decorator.python"}},end:`(?x) +( \\) ) + +(?: (.*?) (?=\\s*(?:\\#|$)) ) +| (?=\\n|\\#) +`,endCaptures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"invalid.illegal.decorator.python"}},name:"meta.function.decorator.python",patterns:[{include:"#decorator-name"},{include:"#function-arguments"}]},"decorator-name":{patterns:[{include:"#builtin-callables"},{include:"#illegal-object-name"},{captures:{2:{name:"punctuation.separator.period.python"}},match:`(?x) +([[:alpha:]_]\\w*) | (\\.) +`,name:"entity.name.function.decorator.python"},{include:"#line-continuation"},{captures:{1:{name:"invalid.illegal.decorator.python"}},match:`(?x) +\\s* ([^([:alpha:]\\s_\\.#\\\\] .*?) (?=\\#|$) +`,name:"invalid.illegal.decorator.python"}]},"double-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-one-regexp-character-set"},{include:"#double-one-regexp-comments"},{include:"#regexp-flags"},{include:"#double-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-one-regexp-lookahead"},{include:"#double-one-regexp-lookahead-negative"},{include:"#double-one-regexp-lookbehind"},{include:"#double-one-regexp-lookbehind-negative"},{include:"#double-one-regexp-conditional"},{include:"#double-one-regexp-parentheses-non-capturing"},{include:"#double-one-regexp-parentheses"}]},"double-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="""))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-three-regexp-character-set"},{include:"#double-three-regexp-comments"},{include:"#regexp-flags"},{include:"#double-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-three-regexp-lookahead"},{include:"#double-three-regexp-lookahead-negative"},{include:"#double-three-regexp-lookbehind"},{include:"#double-three-regexp-lookbehind-negative"},{include:"#double-three-regexp-conditional"},{include:"#double-three-regexp-parentheses-non-capturing"},{include:"#double-three-regexp-parentheses"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},ellipsis:{match:"\\.\\.\\.",name:"constant.other.ellipsis.python"},"escape-sequence":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| [0-7]{1,3} +| [\\\\"'abfnrtv] +) +`,name:"constant.character.escape.python"},"escape-sequence-unicode":{patterns:[{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +| N\\{[\\w\\s]+?\\} +) +`,name:"constant.character.escape.python"}]},expression:{comment:"All valid Python expressions",patterns:[{include:"#expression-base"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"expression-bare":{comment:"valid Python expressions w/o comments and line continuation",patterns:[{include:"#backticks"},{include:"#literal"},{include:"#regexp"},{include:"#string"},{include:"#lambda"},{include:"#generator"},{include:"#illegal-operator"},{include:"#operator"},{include:"#curly-braces"},{include:"#item-access"},{include:"#list"},{include:"#odd-function-call"},{include:"#round-braces"},{include:"#function-call"},{include:"#builtin-functions"},{include:"#builtin-types"},{include:"#builtin-exceptions"},{include:"#magic-names"},{include:"#special-names"},{include:"#illegal-names"},{include:"#special-variables"},{include:"#ellipsis"},{include:"#punctuation"},{include:"#line-continuation"}]},"expression-base":{comment:"valid Python expressions with comments and line continuation",patterns:[{include:"#comments"},{include:"#expression-bare"},{include:"#line-continuation"}]},"f-expression":{comment:"All valid Python expressions, except comments and line continuation",patterns:[{include:"#expression-bare"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"fregexp-base-expression":{patterns:[{include:"#fregexp-quantifier"},{include:"#fstring-formatting-braces"},{match:"\\{.*?\\}"},{include:"#regexp-base-common"}]},"fregexp-quantifier":{match:`(?x) +\\{\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\}\\} +`,name:"keyword.operator.quantifier.regexp"},"fstring-fnorm-quoted-multi-line":{begin:`(\\b[fF])([bBuU])?('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-fnorm-quoted-single-line":{begin:`(\\b[fF])([bBuU])?((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-formatting":{patterns:[{include:"#fstring-formatting-braces"},{include:"#fstring-formatting-singe-brace"}]},"fstring-formatting-braces":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},2:{name:"invalid.illegal.brace.python"},3:{name:"constant.character.format.placeholder.other.python"}},comment:"empty braces are illegal",match:"({)(\\s*?)(})"},{match:"({{|}})",name:"constant.character.escape.python"}]},"fstring-formatting-singe-brace":{match:"(}(?!}))",name:"invalid.illegal.brace.python"},"fstring-guts":{patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#fstring-formatting"}]},"fstring-illegal-multi-brace":{patterns:[{include:"#impossible"}]},"fstring-illegal-single-brace":{begin:"(\\{)(?=[^\\n}]*$\\n?)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"it is illegal to have a multiline brace inside a single-line string",end:"(\\})|(?=\\n)",endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-multi-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\}) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-multi"},{include:"#f-expression"}]},"fstring-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.multi.python"},"fstring-normf-quoted-multi-line":{begin:`(\\b[bBuU])([fF])('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-normf-quoted-single-line":{begin:`(\\b[bBuU])([fF])((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#fstring-formatting"}]},"fstring-raw-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.multi.python"},"fstring-raw-quoted-multi-line":{begin:`(\\b(?:[rR][fF]|[fF][rR]))('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.multi.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-raw-multi-core"}]},"fstring-raw-quoted-single-line":{begin:`(\\b(?:[rR][fF]|[fF][rR]))((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.single.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.single.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-raw-single-core"}]},"fstring-raw-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.single.python"},"fstring-single-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\})|(?=\\n) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.single.python"},"fstring-terminator-multi":{patterns:[{match:"(=(![rsa])?)(?=})",name:"storage.type.format.python"},{match:"(=?![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +( (?: =?) (?: ![rsa])? ) +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-multi-tail"}]},"fstring-terminator-multi-tail":{begin:"((?:=?)(?:![rsa])?)(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})",patterns:[{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"fstring-terminator-single":{patterns:[{match:"(=(![rsa])?)(?=})",name:"storage.type.format.python"},{match:"(=?![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +( (?: =?) (?: ![rsa])? ) +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-single-tail"}]},"fstring-terminator-single-tail":{begin:"((?:=?)(?:![rsa])?)(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})|(?=\\n)",patterns:[{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"function-arguments":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.function-call.arguments.python",end:"(?=\\))(?!\\)\\s*\\()",patterns:[{match:"(,)",name:"punctuation.separator.arguments.python"},{captures:{1:{name:"keyword.operator.unpacking.arguments.python"}},match:`(?x) +(?:(?<=[,(])|^) \\s* (\\*{1,2}) +`},{include:"#lambda-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function-call.python"},2:{name:"keyword.operator.assignment.python"}},match:"\\b([[:alpha:]_]\\w*)\\s*(=)(?!=)"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{include:"#expression"},{captures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"punctuation.definition.arguments.begin.python"}},match:"\\s*(\\))\\s*(\\()"}]},"function-call":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:'Regular function call of the type "name(args)"',end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#special-variables"},{include:"#function-name"},{include:"#function-arguments"}]},"function-declaration":{begin:`(?x) +\\s* +(?:\\b(async) \\s+)? \\b(def|fn)\\s+ +(?= +[[:alpha:]_][[:word:]]* \\s* [\\(\\[] +) +`,beginCaptures:{1:{name:"storage.type.function.async.python"},2:{name:"storage.type.function.python"}},end:`(:|(?=[#'"\\n]))`,endCaptures:{1:{name:"punctuation.section.function.begin.python"}},name:"meta.function.python",patterns:[{include:"#function-modifier"},{include:"#function-def-name"},{include:"#parameters"},{include:"#meta_parameters"},{include:"#line-continuation"},{include:"#return-annotation"}]},"function-def-name":{patterns:[{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.function.python"}]},"function-modifier":{match:"(raises|capturing)",name:"storage.modifier"},"function-name":{patterns:[{include:"#builtin-possible-callables"},{comment:"Some color schemas support meta.function-call.generic scope",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.function-call.generic.python"}]},generator:{begin:"\\bfor\\b",beginCaptures:{0:{name:"keyword.control.flow.python"}},comment:`Match "for ... in" construct used in generators and for loops to +correctly identify the "in" as a control flow keyword. +`,end:"\\bin\\b",endCaptures:{0:{name:"keyword.control.flow.python"}},patterns:[{include:"#expression"}]},"illegal-names":{captures:{1:{name:"keyword.control.flow.python"},2:{name:"storage.type.function.python"},3:{name:"keyword.control.import.python"}},match:`(?x) +\\b(?: +( +and | assert | async | await | break | class | struct | trait | continue | del | elif | else | except | finally | for | from | global +| if | in | is | (?<=\\.)lambda | lambda(?=\\s*[\\.=]) +| nonlocal | not | or | pass | raise | return | try | while | with +| yield +) | (def | fn | capturing | raises) | ( +as | import +) +)\\b +`},"illegal-object-name":{comment:`It's illegal to name class or function "True"`,match:"\\b(True|False|None)\\b",name:"keyword.illegal.name.python"},"illegal-operator":{patterns:[{match:"&&|\\|\\||--|\\+\\+",name:"invalid.illegal.operator.python"},{match:"[?$]",name:"invalid.illegal.operator.python"},{comment:"We don't want `!` to flash when we're typing `!=`",match:"!\\b",name:"invalid.illegal.operator.python"}]},import:{comment:"Import statements used to correctly mark `from`, `import`, and `as`\n",patterns:[{begin:"\\b(?<!\\.)(from)\\b(?=.+import)",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$|(?=import)",patterns:[{match:"\\.+",name:"punctuation.separator.period.python"},{include:"#expression"}]},{begin:"\\b(?<!\\.)(import)\\b",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$",patterns:[{match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{include:"#expression"}]}]},impossible:{comment:"This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.",match:"$.^"},"inheritance-identifier":{captures:{1:{name:"entity.other.inherited-class.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`},"inheritance-name":{patterns:[{include:"#lambda-incomplete"},{include:"#builtin-possible-callables"},{include:"#inheritance-identifier"}]},"item-access":{patterns:[{begin:`(?x) +\\b(?= +[[:alpha:]_]\\w* \\s* \\[ +) +`,end:"(\\])",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.item-access.python",patterns:[{include:"#item-name"},{include:"#item-index"},{include:"#expression"}]}]},"item-index":{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.item-access.arguments.python",end:"(?=\\])",patterns:[{match:":",name:"punctuation.separator.slice.python"},{include:"#expression"}]},"item-name":{patterns:[{include:"#special-variables"},{include:"#builtin-functions"},{include:"#special-names"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.indexed-name.python"}]},lambda:{patterns:[{captures:{1:{name:"keyword.control.flow.python"}},match:"((?<=\\.)lambda|lambda(?=\\s*[\\.=]))"},{captures:{1:{name:"storage.type.function.lambda.python"}},match:"\\b(lambda)\\s*?(?=[,\\n]|$)"},{begin:`(?x) +\\b (lambda) \\b +`,beginCaptures:{1:{name:"storage.type.function.lambda.python"}},contentName:"meta.function.lambda.parameters.python",end:"(:)|(\\n)",endCaptures:{1:{name:"punctuation.section.function.lambda.begin.python"}},name:"meta.lambda-function.python",patterns:[{match:"\\b(owned|borrowed|inout)\\b",name:"storage.modifier"},{match:"/",name:"keyword.operator.positional.parameter.python"},{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-nested-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:"([[:alpha:]_]\\w*)\\s*(?:(,)|(?=:|$))"},{include:"#comments"},{include:"#backticks"},{include:"#lambda-parameter-with-default"},{include:"#line-continuation"},{include:"#illegal-operator"}]}]},"lambda-incomplete":{match:"\\blambda(?=\\s*[,)])",name:"storage.type.function.lambda.python"},"lambda-nested-incomplete":{match:"\\blambda(?=\\s*[:,)])",name:"storage.type.function.lambda.python"},"lambda-parameter-with-default":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (=) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"keyword.operator.python"}},end:"(,)|(?=:|$)",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"line-continuation":{patterns:[{captures:{1:{name:"punctuation.separator.continuation.line.python"},2:{name:"invalid.illegal.line.continuation.python"}},match:"(\\\\)\\s*(\\S.*$\\n?)"},{begin:"(\\\\)\\s*$\\n?",beginCaptures:{1:{name:"punctuation.separator.continuation.line.python"}},end:`(?x) +(?=^\\s*$) +| +(?! (\\s* [rR]? (\\'\\'\\'|\\"\\"\\"|\\'|\\")) +| +(\\G $) (?# '\\G' is necessary for ST) +) +`,patterns:[{include:"#regexp"},{include:"#string"}]}]},list:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.list.begin.python"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.list.end.python"}},patterns:[{include:"#expression"}]},literal:{patterns:[{match:"\\b(True|False|None|NotImplemented|Ellipsis)\\b",name:"constant.language.python"},{include:"#number"}]},"loose-default":{begin:"(=)",beginCaptures:{1:{name:"keyword.operator.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"magic-function-names":{captures:{1:{name:"support.function.magic.python"}},comment:`these methods have magic interpretation by python and are generally called +indirectly through syntactic constructs +`,match:`(?x) +\\b( +__(?: +abs | add | aenter | aexit | aiter | and | anext +| await | bool | call | ceil | class_getitem +| cmp | coerce | complex | contains | copy +| deepcopy | del | delattr | delete | delitem +| delslice | dir | div | divmod | enter | eq +| exit | float | floor | floordiv | format | ge +| get | getattr | getattribute | getinitargs +| getitem | getnewargs | getslice | getstate | gt +| hash | hex | iadd | iand | idiv | ifloordiv | +| ilshift | imod | imul | index | init +| instancecheck | int | invert | ior | ipow +| irshift | isub | iter | itruediv | ixor | le +| len | long | lshift | lt | missing | mod | mul +| ne | neg | new | next | nonzero | oct | or | pos +| pow | radd | rand | rdiv | rdivmod | reduce +| reduce_ex | repr | reversed | rfloordiv | +| rlshift | rmod | rmul | ror | round | rpow +| rrshift | rshift | rsub | rtruediv | rxor | set +| setattr | setitem | set_name | setslice +| setstate | sizeof | str | sub | subclasscheck +| truediv | trunc | unicode | xor | matmul +| rmatmul | imatmul | init_subclass | set_name +| fspath | bytes | prepare | length_hint +)__ +)\\b +`},"magic-names":{patterns:[{include:"#magic-function-names"},{include:"#magic-variable-names"}]},"magic-variable-names":{captures:{1:{name:"support.variable.magic.python"}},comment:"magic variables which a class/module may have.",match:`(?x) +\\b( +__(?: +all | annotations | bases | builtins | class +| struct +| trait +| closure | code | debug | defaults | dict | doc | file | func +| globals | kwdefaults | match_args | members | metaclass | methods +| module | mro | mro_entries | name | qualname | post_init | self +| signature | slots | subclasses | version | weakref | wrapped +| classcell | spec | path | package | future | traceback +)__ +)\\b +`},"member-access":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:`(?x) + + +(?<=\\S)(?=\\W) | + + +(^|(?<=\\s))(?=[^\\\\\\w\\s]) | +$ +`,name:"meta.member.access.python",patterns:[{include:"#function-call"},{include:"#member-access-base"},{include:"#member-access-attribute"}]},"member-access-attribute":{comment:"Highlight attribute access in otherwise non-specialized cases.",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.attribute.python"},"member-access-base":{patterns:[{include:"#magic-names"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#special-names"},{include:"#line-continuation"},{include:"#item-access"}]},"member-access-class":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:"(?<=\\S)(?=\\W)|$",name:"meta.member.access.python",patterns:[{include:"#call-wrapper-inheritance"},{include:"#member-access-base"},{include:"#inheritance-identifier"}]},meta_parameters:{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.python"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.parameters.end.python"}},name:"meta.function.parameters.python",patterns:[{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (:) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.annotation.python"}},end:"(,)|(?=\\])",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},{include:"#comments"}]},number:{name:"constant.numeric.python",patterns:[{include:"#number-float"},{include:"#number-dec"},{include:"#number-hex"},{include:"#number-oct"},{include:"#number-bin"},{include:"#number-long"},{match:"\\b[0-9]+\\w+",name:"invalid.illegal.name.python"}]},"number-bin":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[bB]) (_?[01])+ +\\b +`,name:"constant.numeric.bin.python"},"number-dec":{captures:{1:{name:"storage.type.imaginary.number.python"},2:{name:"invalid.illegal.dec.python"}},match:`(?x) +(?<![\\w\\.])(?: +[1-9](?: _?[0-9] )* +| +0+ +| +[0-9](?: _?[0-9] )* ([jJ]) +| +0 ([0-9]+)(?![eE\\.]) +)\\b +`,name:"constant.numeric.dec.python"},"number-float":{captures:{1:{name:"storage.type.imaginary.number.python"}},match:`(?x) +(?<! \\w)(?: +(?: +\\.[0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. +) (?: [eE][+-]?[0-9](?: _?[0-9] )* )? +| +[0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* ) +)([jJ])?\\b +`,name:"constant.numeric.float.python"},"number-hex":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[xX]) (_?[0-9a-fA-F])+ +\\b +`,name:"constant.numeric.hex.python"},"number-long":{captures:{2:{name:"storage.type.number.python"}},comment:"this is to support python2 syntax for long ints",match:`(?x) +(?<![\\w\\.]) +([1-9][0-9]* | 0) ([lL]) +\\b +`,name:"constant.numeric.bin.python"},"number-oct":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[oO]) (_?[0-7])+ +\\b +`,name:"constant.numeric.oct.python"},"odd-function-call":{begin:`(?x) +(?<= \\] | \\) ) \\s* +(?=\\() +`,comment:`A bit obscured function call where there may have been an +arbitrary number of other operations to get the function. +E.g. "arr[idx](args)" +`,end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},patterns:[{include:"#function-arguments"}]},operator:{captures:{1:{name:"keyword.operator.logical.python"},2:{name:"keyword.control.flow.python"},3:{name:"keyword.operator.bitwise.python"},4:{name:"keyword.operator.arithmetic.python"},5:{name:"keyword.operator.comparison.python"},6:{name:"keyword.operator.assignment.python"}},match:`(?x) +\\b(?<!\\.) +(?: +(and | or | not | in | is) (?# 1) +| +(for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2) +) +(?!\\s*:)\\b + +| (<< | >> | & | \\| | \\^ | ~) (?# 3) + +| (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4) + +| (!= | == | >= | <= | < | >) (?# 5) + +| (:=) (?# 6) +`},"parameter-special":{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"variable.parameter.function.language.special.self.python"},3:{name:"variable.parameter.function.language.special.cls.python"},4:{name:"punctuation.separator.parameters.python"}},match:`(?x) +\\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\))) +`},parameters:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.python"}},name:"meta.function.parameters.python",patterns:[{match:"\\b(owned|borrowed|inout)\\b",name:"storage.modifier"},{match:"/",name:"keyword.operator.positional.parameter.python"},{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-incomplete"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#parameter-special"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:`(?x) +([[:alpha:]_]\\w*) +\\s* (?: (,) | (?=[)#\\n=])) +`},{include:"#comments"},{include:"#loose-default"},{include:"#annotated-parameter"}]},punctuation:{patterns:[{match:":",name:"punctuation.separator.colon.python"},{match:",",name:"punctuation.separator.element.python"}]},regexp:{patterns:[{include:"#regexp-single-three-line"},{include:"#regexp-double-three-line"},{include:"#regexp-single-one-line"},{include:"#regexp-double-one-line"}]},"regexp-backreference":{captures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"},2:{name:"entity.name.tag.named.backreference.regexp"},3:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"}},match:`(?x) +(\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\)) +`,name:"meta.backreference.named.regexp"},"regexp-backreference-number":{captures:{1:{name:"entity.name.tag.backreference.regexp"}},match:"(\\\\[1-9]\\d?)",name:"meta.backreference.regexp"},"regexp-base-common":{patterns:[{match:"\\.",name:"support.other.match.any.regexp"},{match:"\\^",name:"support.other.match.begin.regexp"},{match:"\\$",name:"support.other.match.end.regexp"},{match:"[+*?]\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.disjunction.regexp"},{include:"#regexp-escape-sequence"}]},"regexp-base-expression":{patterns:[{include:"#regexp-quantifier"},{include:"#regexp-base-common"}]},"regexp-charecter-set-escapes":{patterns:[{match:"\\\\[abfnrtv\\\\]",name:"constant.character.escape.regexp"},{include:"#regexp-escape-special"},{match:"\\\\([0-7]{1,3})",name:"constant.character.escape.regexp"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-escape-catchall"}]},"regexp-double-one-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(")|(?<!\\\\)(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#double-one-regexp-expression"}]},"regexp-double-three-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(""")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#double-three-regexp-expression"}]},"regexp-escape-catchall":{match:"\\\\(.|\\n)",name:"constant.character.escape.regexp"},"regexp-escape-character":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| 0[0-7]{1,2} +| [0-7]{3} +) +`,name:"constant.character.escape.regexp"},"regexp-escape-sequence":{patterns:[{include:"#regexp-escape-special"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-backreference-number"},{include:"#regexp-escape-catchall"}]},"regexp-escape-special":{match:"\\\\([AbBdDsSwWZ])",name:"support.other.escape.special.regexp"},"regexp-escape-unicode":{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +) +`,name:"constant.character.unicode.regexp"},"regexp-flags":{match:"\\(\\?[aiLmsux]+\\)",name:"storage.modifier.flag.regexp"},"regexp-quantifier":{match:`(?x) +\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\} +`,name:"keyword.operator.quantifier.regexp"},"regexp-single-one-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\')|(?<!\\\\)(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#single-one-regexp-expression"}]},"regexp-single-three-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\'\\'\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\'\\'\\')",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#single-three-regexp-expression"}]},"return-annotation":{begin:"(->)",beginCaptures:{1:{name:"punctuation.separator.annotation.result.python"}},end:"(?=:)",patterns:[{include:"#expression"}]},"round-braces":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.begin.python"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.end.python"}},patterns:[{include:"#expression"}]},semicolon:{patterns:[{match:"\\;$",name:"invalid.deprecated.semicolon.python"}]},"single-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-one-regexp-character-set"},{include:"#single-one-regexp-comments"},{include:"#regexp-flags"},{include:"#single-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-one-regexp-lookahead"},{include:"#single-one-regexp-lookahead-negative"},{include:"#single-one-regexp-lookbehind"},{include:"#single-one-regexp-lookbehind-negative"},{include:"#single-one-regexp-conditional"},{include:"#single-one-regexp-parentheses-non-capturing"},{include:"#single-one-regexp-parentheses"}]},"single-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-three-regexp-character-set"},{include:"#single-three-regexp-comments"},{include:"#regexp-flags"},{include:"#single-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-three-regexp-lookahead"},{include:"#single-three-regexp-lookahead-negative"},{include:"#single-three-regexp-lookbehind"},{include:"#single-three-regexp-lookbehind-negative"},{include:"#single-three-regexp-conditional"},{include:"#single-three-regexp-parentheses-non-capturing"},{include:"#single-three-regexp-parentheses"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"special-names":{match:`(?x) +\\b + + + + + +( +_* [[:upper:]] [_\\d]* [[:upper:]] +) +[[:upper:]\\d]* (_\\w*)? +\\b +`,name:"constant.other.caps.python"},"special-variables":{captures:{1:{name:"variable.language.special.self.python"},2:{name:"variable.language.special.cls.python"}},match:`(?x) +\\b (?<!\\.) (?: +(self) | (cls) +)\\b +`},statement:{patterns:[{include:"#import"},{include:"#class-declaration"},{include:"#function-declaration"},{include:"#generator"},{include:"#statement-keyword"},{include:"#assignment-operator"},{include:"#decorator"},{include:"#semicolon"}]},"statement-keyword":{patterns:[{match:"\\b((async\\s+)?\\s*(def|fn))\\b",name:"storage.type.function.python"},{comment:`if \`as\` is eventually followed by \`:\` or line continuation +it's probably control flow like: + with foo as bar, \\ + Foo as Bar: + try: + do_stuff() + except Exception as e: + pass +`,match:"\\b(?<!\\.)as\\b(?=.*[:\\\\])",name:"keyword.control.flow.python"},{comment:"other legal use of `as` is in an import",match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{match:`(?x) +\\b(?<!\\.)( +async | continue | del | assert | break | finally | for +| from | elif | else | if | except | pass | raise +| return | try | while | with +)\\b +`,name:"keyword.control.flow.python"},{match:`(?x) +\\b(?<!\\.)( +global | nonlocal +)\\b +`,name:"storage.modifier.declaration.python"},{match:"\\b(?<!\\.)(class|struct|trait)\\b",name:"storage.type.class.python"},{captures:{1:{name:"keyword.control.flow.python"}},match:`(?x) +^\\s*( +case | match +)(?=\\s*([-+\\w\\d(\\[{'":#]|$))\\b +`},{captures:{1:{name:"storage.modifier.declaration.python"},2:{name:"variable.other.python"}},match:"\\b(var|let|alias) \\s*([[:alpha:]_]\\w*)\\b"}]},string:{patterns:[{include:"#string-quoted-multi-line"},{include:"#string-quoted-single-line"},{include:"#string-bin-quoted-multi-line"},{include:"#string-bin-quoted-single-line"},{include:"#string-raw-quoted-multi-line"},{include:"#string-raw-quoted-single-line"},{include:"#string-raw-bin-quoted-multi-line"},{include:"#string-raw-bin-quoted-single-line"},{include:"#fstring-fnorm-quoted-multi-line"},{include:"#fstring-fnorm-quoted-single-line"},{include:"#fstring-normf-quoted-multi-line"},{include:"#fstring-normf-quoted-single-line"},{include:"#fstring-raw-quoted-multi-line"},{include:"#fstring-raw-quoted-single-line"}]},"string-bin-quoted-multi-line":{begin:`(\\b[bB])('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.multi.python",patterns:[{include:"#string-entity"}]},"string-bin-quoted-single-line":{begin:`(\\b[bB])((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.single.python",patterns:[{include:"#string-entity"}]},"string-brace-formatting":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{{ | }} +| (?: +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )? +}) +) +`,name:"meta.format.brace.python"},{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +(:) +[^'"{}\\n]* (?: +\\{ [^'"}\\n]*? \\} [^'"{}\\n]* +)* +} +) +`,name:"meta.format.brace.python"}]},"string-consume-escape":{match:`\\\\['"\\n\\\\]`},"string-entity":{patterns:[{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#string-formatting"}]},"string-formatting":{captures:{1:{name:"constant.character.format.placeholder.other.python"}},match:`(?x) +( +% (\\([\\w\\s]*\\))? +[-+#0 ]* +(\\d+|\\*)? (\\.(\\d+|\\*))? +([hlL])? +[diouxXeEfFgGcrsab%] +) +`,name:"meta.format.percent.python"},"string-line-continuation":{match:"\\\\$",name:"constant.language.python"},"string-mojo-code-block":{begin:"^(\\s*\\`{3,})(mojo)$",beginCaptures:{1:{name:"string.quoted.single.python"},2:{name:"string.quoted.single.python"}},contentName:"source.mojo",end:"^(\\1)$",endCaptures:{1:{name:"string.quoted.single.python"}},name:"meta.embedded.block.mojo",patterns:[{include:"source.mojo"}]},"string-multi-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"}]},"string-multi-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-multi-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-multi-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-quoted-multi-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-unicode"},{include:"#string-multi-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-quoted-single-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-unicode"},{include:"#string-single-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-raw-bin-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-raw-bin-quoted-multi-line":{begin:`(\\b(?:R[bB]|[bB]R))('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.multi.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-bin-quoted-single-line":{begin:`(\\b(?:R[bB]|[bB]R))((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.single.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"},{include:"#string-brace-formatting"}]},"string-raw-quoted-multi-line":{begin:`\\b(([uU]R)|(R))('''|""")`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-raw"},{include:"#string-multi-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-raw-quoted-single-line":{begin:`\\b(([uU]R)|(R))((['"]))`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-raw"},{include:"#string-single-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-single-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"}]},"string-single-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-single-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-single-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-unicode-guts":{patterns:[{include:"#string-mojo-code-block"},{include:"#escape-sequence-unicode"},{include:"#string-entity"},{include:"#string-brace-formatting"}]}},scopeName:"source.mojo"});var n=[e];export{n as default}; diff --git a/assets/chunks/monokai.sMI-pExk.js b/assets/chunks/monokai.sMI-pExk.js new file mode 100644 index 000000000..660a95466 --- /dev/null +++ b/assets/chunks/monokai.sMI-pExk.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#272822","activityBar.foreground":"#f8f8f2","badge.background":"#75715E","badge.foreground":"#f8f8f2","button.background":"#75715E","debugToolBar.background":"#1e1f1c","diffEditor.insertedTextBackground":"#4b661680","diffEditor.removedTextBackground":"#90274A70","dropdown.background":"#414339","dropdown.listBackground":"#1e1f1c","editor.background":"#272822","editor.foreground":"#f8f8f2","editor.lineHighlightBackground":"#3e3d32","editor.selectionBackground":"#878b9180","editor.selectionHighlightBackground":"#575b6180","editor.wordHighlightBackground":"#4a4a7680","editor.wordHighlightStrongBackground":"#6a6a9680","editorCursor.foreground":"#f8f8f0","editorGroup.border":"#34352f","editorGroup.dropBackground":"#41433980","editorGroupHeader.tabsBackground":"#1e1f1c","editorHoverWidget.background":"#414339","editorHoverWidget.border":"#75715E","editorIndentGuide.activeBackground":"#767771","editorIndentGuide.background":"#464741","editorLineNumber.activeForeground":"#c2c2bf","editorLineNumber.foreground":"#90908a","editorSuggestWidget.background":"#272822","editorSuggestWidget.border":"#75715E","editorWhitespace.foreground":"#464741","editorWidget.background":"#1e1f1c",focusBorder:"#99947c","input.background":"#414339","inputOption.activeBorder":"#75715E","inputValidation.errorBackground":"#90274A","inputValidation.errorBorder":"#f92672","inputValidation.infoBackground":"#546190","inputValidation.infoBorder":"#819aff","inputValidation.warningBackground":"#848528","inputValidation.warningBorder":"#e2e22e","list.activeSelectionBackground":"#75715E","list.dropBackground":"#414339","list.highlightForeground":"#f8f8f2","list.hoverBackground":"#3e3d32","list.inactiveSelectionBackground":"#414339","menu.background":"#1e1f1c","menu.foreground":"#cccccc","minimap.selectionHighlight":"#878b9180","panel.border":"#414339","panelTitle.activeBorder":"#75715E","panelTitle.activeForeground":"#f8f8f2","panelTitle.inactiveForeground":"#75715E","peekView.border":"#75715E","peekViewEditor.background":"#272822","peekViewEditor.matchHighlightBackground":"#75715E","peekViewResult.background":"#1e1f1c","peekViewResult.matchHighlightBackground":"#75715E","peekViewResult.selectionBackground":"#414339","peekViewTitle.background":"#1e1f1c","pickerGroup.foreground":"#75715E","ports.iconRunningProcessForeground":"#ccccc7","progressBar.background":"#75715E","quickInputList.focusBackground":"#414339","selection.background":"#878b9180","settings.focusedRowBackground":"#4143395A","sideBar.background":"#1e1f1c","sideBarSectionHeader.background":"#272822","statusBar.background":"#414339","statusBar.debuggingBackground":"#75715E","statusBar.noFolderBackground":"#414339","statusBarItem.remoteBackground":"#AC6218","tab.border":"#1e1f1c","tab.inactiveBackground":"#34352f","tab.inactiveForeground":"#ccccc7","tab.lastPinnedBorder":"#414339","terminal.ansiBlack":"#333333","terminal.ansiBlue":"#6A7EC8","terminal.ansiBrightBlack":"#666666","terminal.ansiBrightBlue":"#819aff","terminal.ansiBrightCyan":"#66D9EF","terminal.ansiBrightGreen":"#A6E22E","terminal.ansiBrightMagenta":"#AE81FF","terminal.ansiBrightRed":"#f92672","terminal.ansiBrightWhite":"#f8f8f2","terminal.ansiBrightYellow":"#e2e22e","terminal.ansiCyan":"#56ADBC","terminal.ansiGreen":"#86B42B","terminal.ansiMagenta":"#8C6BC8","terminal.ansiRed":"#C4265E","terminal.ansiWhite":"#e3e3dd","terminal.ansiYellow":"#B3B42B","titleBar.activeBackground":"#1e1f1c","widget.shadow":"#00000098"},displayName:"Monokai",name:"monokai",semanticHighlighting:!0,tokenColors:[{settings:{foreground:"#F8F8F2"}},{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#F8F8F2"}},{scope:"comment",settings:{foreground:"#88846f"}},{scope:"string",settings:{foreground:"#E6DB74"}},{scope:["punctuation.definition.template-expression","punctuation.section.embedded"],settings:{foreground:"#F92672"}},{scope:["meta.template.expression"],settings:{foreground:"#F8F8F2"}},{scope:"constant.numeric",settings:{foreground:"#AE81FF"}},{scope:"constant.language",settings:{foreground:"#AE81FF"}},{scope:"constant.character, constant.other",settings:{foreground:"#AE81FF"}},{scope:"variable",settings:{fontStyle:"",foreground:"#F8F8F2"}},{scope:"keyword",settings:{foreground:"#F92672"}},{scope:"storage",settings:{fontStyle:"",foreground:"#F92672"}},{scope:"storage.type",settings:{fontStyle:"italic",foreground:"#66D9EF"}},{scope:"entity.name.type, entity.name.class, entity.name.namespace, entity.name.scope-resolution",settings:{fontStyle:"underline",foreground:"#A6E22E"}},{scope:"entity.other.inherited-class",settings:{fontStyle:"italic underline",foreground:"#A6E22E"}},{scope:"entity.name.function",settings:{fontStyle:"",foreground:"#A6E22E"}},{scope:"variable.parameter",settings:{fontStyle:"italic",foreground:"#FD971F"}},{scope:"entity.name.tag",settings:{fontStyle:"",foreground:"#F92672"}},{scope:"entity.other.attribute-name",settings:{fontStyle:"",foreground:"#A6E22E"}},{scope:"support.function",settings:{fontStyle:"",foreground:"#66D9EF"}},{scope:"support.constant",settings:{fontStyle:"",foreground:"#66D9EF"}},{scope:"support.type, support.class",settings:{fontStyle:"italic",foreground:"#66D9EF"}},{scope:"support.other.variable",settings:{fontStyle:""}},{scope:"invalid",settings:{fontStyle:"",foreground:"#F44747"}},{scope:"invalid.deprecated",settings:{foreground:"#F44747"}},{scope:"meta.structure.dictionary.json string.quoted.double.json",settings:{foreground:"#CFCFC2"}},{scope:"meta.diff, meta.diff.header",settings:{foreground:"#75715E"}},{scope:"markup.deleted",settings:{foreground:"#F92672"}},{scope:"markup.inserted",settings:{foreground:"#A6E22E"}},{scope:"markup.changed",settings:{foreground:"#E6DB74"}},{scope:"constant.numeric.line-number.find-in-files - match",settings:{foreground:"#AE81FFA0"}},{scope:"entity.name.filename.find-in-files",settings:{foreground:"#E6DB74"}},{scope:"markup.quote",settings:{foreground:"#F92672"}},{scope:"markup.list",settings:{foreground:"#E6DB74"}},{scope:"markup.bold, markup.italic",settings:{foreground:"#66D9EF"}},{scope:"markup.inline.raw",settings:{fontStyle:"",foreground:"#FD971F"}},{scope:"markup.heading",settings:{foreground:"#A6E22E"}},{scope:"markup.heading.setext",settings:{fontStyle:"bold",foreground:"#A6E22E"}},{scope:"markup.heading.markdown",settings:{fontStyle:"bold"}},{scope:"markup.quote.markdown",settings:{fontStyle:"italic",foreground:"#75715E"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold"}},{scope:"string.other.link.title.markdown,string.other.link.description.markdown",settings:{foreground:"#AE81FF"}},{scope:"markup.underline.link.markdown,markup.underline.link.image.markdown",settings:{foreground:"#E6DB74"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.list.unnumbered.markdown, markup.list.numbered.markdown",settings:{foreground:"#f8f8f2"}},{scope:["punctuation.definition.list.begin.markdown"],settings:{foreground:"#A6E22E"}},{scope:"token.info-token",settings:{foreground:"#6796e6"}},{scope:"token.warn-token",settings:{foreground:"#cd9731"}},{scope:"token.error-token",settings:{foreground:"#f44747"}},{scope:"token.debug-token",settings:{foreground:"#b267e6"}},{scope:"variable.language",settings:{foreground:"#FD971F"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/move.C9UBdavN.js b/assets/chunks/move.C9UBdavN.js new file mode 100644 index 000000000..26ec1c0c6 --- /dev/null +++ b/assets/chunks/move.C9UBdavN.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Move",name:"move",patterns:[{include:"#address"},{include:"#comments"},{include:"#module"},{include:"#script"},{include:"#attributes"},{begin:"\\b(while)\\b",comment:"While experiment",name:"keyword.control.while.whaaat.move",while:"[a-z]"}],repository:{"=== DEPRECATED_BELOW ===":{},abilities:{comment:"Ability",match:"\\b(store|key|drop|copy)\\b",name:"support.type.ability.move"},address:{begin:"\\b(address)\\b",beginCaptures:{1:{name:"storage.modifier.type.address.keyword.move"}},comment:"Address block",end:"(?<=})",name:"meta.address_block.move",patterns:[{include:"#comments"},{begin:"(?<=address)",comment:"Address value/const",end:"(?=[{])",name:"meta.address.definition.move",patterns:[{include:"#comments"},{include:"#address_literal"},{comment:"Named Address",match:"\\b(\\w+)\\b",name:"entity.name.type.move"}]},{include:"#module"}]},as:{comment:"Keyword as (highlighted)",match:"\\b(as)\\b",name:"keyword.control.as.move"},"as-import":{comment:"Keyword as in import statement; not highlighted",match:"\\b(as)\\b",name:"meta.import.as.move"},attributes:{match:'#\\[(?:[\\w0-9=,_\\(\\)\\s"\\:=]+)\\]',name:"support.constant.attribute.move"},block:{begin:"{",comment:"Block expression or definition",end:"}",name:"meta.block.move",patterns:[{include:"#expr"}]},"block-comments":{comment:"Supported since https://github.com/diem/diem/pull/3714",patterns:[{begin:"/\\*[\\*!](?![\\*/])",comment:"Block documentation comment",end:"\\*/",name:"comment.block.documentation.move"},{begin:"/\\*",comment:"Block comment",end:"\\*/",name:"comment.block.move"}]},capitalized:{comment:"MyType - capitalized type name",match:"\\b([A-Z][a-zA-Z_0-9]*)\\b",name:"entity.name.type.use.move"},comments:{name:"meta.comments.move",patterns:[{include:"#line-comments"},{include:"#block-comments"}]},const:{begin:"\\b(const)\\b",beginCaptures:{1:{name:"storage.modifier.const.move"}},end:";",name:"meta.const.move",patterns:[{include:"#comments"},{include:"#primitives"},{include:"#literals"},{match:"\\b([\\w_]+)\\b",name:"constant.other.move"}]},control:{comment:"Control flow",match:"\\b(return|while|loop|if|else|break|continue|abort)\\b",name:"keyword.control.move"},entry:{comment:"entry",match:"\\b(entry)\\b",name:"storage.modifier.visibility.entry.move"},enum:{begin:"\\b(enum)\\b",beginCaptures:{1:{name:"keyword.control.enum.move"}},comment:"Enum syntax",end:"(?<=})",name:"meta.enum.move",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{include:"#type_param"},{comment:"Enum name (ident)",match:"\\b[A-Z][a-zA-Z_0-9]*\\b",name:"entity.name.type.enum.move"},{include:"#has"},{include:"#abilities"},{begin:"{",end:"}",name:"meta.enum.definition.move",patterns:[{include:"#comments"},{begin:"\\(",end:"\\)",name:"meta.enum.tuple.move",patterns:[{include:"#comments"},{include:"#types"}]},{begin:"{",end:"}",name:"meta.enum.struct.move",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{include:"#types"}]}]}]},error_const:{match:"\\b(E[A-Z][A-Za-z_]*)\\b",name:"variable.language.error.move"},escaped_identifier:{begin:"`",comment:"Escaped variable",end:"`",name:"variable.language.escaped.move"},expr:{comment:"Aggregate Expression",name:"meta.expression.move",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{include:"#expr_generic"},{include:"#error_const"},{include:"#packed_field"},{include:"#import"},{include:"#as"},{include:"#mut"},{include:"#let"},{include:"#types"},{include:"#literals"},{include:"#control"},{include:"#move_copy"},{include:"#resource_methods"},{include:"#self_access"},{include:"#module_access"},{include:"#label"},{include:"#macro_call"},{include:"#local_call"},{include:"#method_call"},{include:"#path_access"},{match:"\\$(?=[a-z])",name:"keyword.operator.macro.dollar.move"},{match:"(?<=[$])[a-z][A-Z_0-9a-z]*",name:"variable.other.meta.move"},{comment:"ALL_CONST_CAPS",match:"\\b([A-Z][A-Z_]+)\\b",name:"constant.other.move"},{comment:"CustomType",match:"\\b([A-Z][a-zA-Z_0-9]*)\\b",name:"entity.name.type.move"},{include:"#paren"},{include:"#block"}]},expr_generic:{begin:"<(?=([\\sa-z_,0-9A-Z<>]+>))",comment:"< angle brackets >",end:">",name:"meta.expression.generic.type.move",patterns:[{include:"#comments"},{include:"#types"},{include:"#capitalized"},{include:"#expr_generic"}]},friend:{begin:"\\b(friend)\\b",beginCaptures:{1:{name:"storage.modifier.type.move"}},end:";",name:"meta.friend.move",patterns:[{include:"#comments"},{include:"#address_literal"},{comment:"Name of the imported module",match:"\\b([a-zA-Z][A-Za-z_0-9]*)\\b",name:"entity.name.type.module.move"}]},fun:{patterns:[{include:"#fun_signature"},{include:"#block"}]},fun_body:{begin:"{",comment:"Function body",end:"(?<=})",name:"meta.fun_body.move",patterns:[{include:"#expr"}]},fun_call:{begin:"\\b(\\w+)\\s*(?:<[\\w\\s,]+>)?\\s*[(]",beginCaptures:{1:{name:"entity.name.function.call.move"}},comment:"Function call",end:"[)]",name:"meta.fun_call.move",patterns:[{include:"#comments"},{include:"#resource_methods"},{include:"#self_access"},{include:"#module_access"},{include:"#move_copy"},{include:"#literals"},{include:"#fun_call"},{include:"#block"},{include:"#mut"},{include:"#as"}]},fun_signature:{begin:"\\b(fun)\\b",beginCaptures:{1:{name:"storage.modifier.fun.move"}},comment:"Function signature",end:"(?=[;{])",name:"meta.fun_signature.move",patterns:[{include:"#comments"},{include:"#module_access"},{include:"#capitalized"},{include:"#types"},{include:"#mut"},{begin:"(?<=\\bfun)",comment:"Function name",end:"(?=[<(])",name:"meta.function_name.move",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{match:"\\b(\\w+)\\b",name:"entity.name.function.move"}]},{include:"#type_param"},{begin:"[(]",comment:"Parentheses",end:"[)]",name:"meta.parentheses.move",patterns:[{include:"#comments"},{include:"#self_access"},{include:"#expr_generic"},{include:"#escaped_identifier"},{include:"#module_access"},{include:"#capitalized"},{include:"#types"},{include:"#mut"}]},{comment:"Keyword acquires",match:"\\b(acquires)\\b",name:"storage.modifier"}]},has:{comment:"Has Abilities",match:"\\b(has)\\b",name:"keyword.control.ability.has.move"},has_ability:{begin:"(?<=[})])\\s+(has)\\b",beginCaptures:{1:{name:"storage.modifier.type.move"}},end:";",name:"meta.has.ability.move",patterns:[{include:"#comments"},{include:"#abilities"}]},ident:{match:"\\b([a-zA-Z][A-Z_a-z0-9]*)\\b",name:"meta.identifier.move"},import:{begin:"\\b(use)\\b",beginCaptures:{1:{name:"storage.modifier.type.move"}},end:";",name:"meta.import.move",patterns:[{include:"#comments"},{include:"#use_fun"},{include:"#address_literal"},{include:"#as-import"},{comment:"Uppercase entities",match:"\\b([A-Z]\\w*)\\b",name:"entity.name.type.move"},{begin:"{",comment:"Module members",end:"}",patterns:[{include:"#comments"},{include:"#as-import"},{comment:"Uppercase entities",match:"\\b([A-Z]\\w*)\\b",name:"entity.name.type.move"}]},{comment:"Name of the imported module",match:"\\b(\\w+)\\b",name:"meta.entity.name.type.module.move"}]},label:{comment:"Label",match:"'[a-z][a-z_0-9]*",name:"string.quoted.single.label.move"},let:{comment:"Keyword let",match:"\\b(let)\\b",name:"keyword.control.move"},"line-comments":{begin:"//",comment:"Single-line comment",end:"$",name:"comment.line.double-slash.move"},literals:{comment:"Literals supported in Move",name:"meta.literal.move",patterns:[{comment:"base16 address literal",match:"@0x[A-F0-9a-f]+",name:"support.constant.address.base16.move"},{comment:"named address literal @[ident]",match:"@[a-zA-Z][a-zA-Z_0-9]*",name:"support.constant.address.name.move"},{comment:"Hex literal",match:"0x[_a-fA-F0-9]+(?:u(?:8|16|32|64|128|256))?",name:"constant.numeric.hex.move"},{comment:"Numeric literal",match:"(?<!(?:\\w|(?:(?<!\\.)\\.)))[0-9][_0-9]*(?:\\.(?!\\.)(?:[0-9][_0-9]*)?)?(?:[eE][+\\-]?[_0-9]+)?(?:[u](?:8|16|32|64|128|256))?",name:"constant.numeric.move"},{begin:'\\bb"',comment:"vector ascii bytestring literal",end:'"',name:"meta.vector.literal.ascii.move",patterns:[{comment:"Special symbol escape",match:'\\\\[nrt\\0"]',name:"constant.character.escape.move"},{comment:"HEX Escape",match:"\\\\x[a-fA-F0-9][A-Fa-f0-9]",name:"constant.character.escape.hex.move"},{comment:"ASCII Character",match:"[\\x00-\\x7F]",name:"string.quoted.double.raw.move"}]},{begin:'x"',comment:"vector hex literal",end:'"',name:"meta.vector.literal.hex.move",patterns:[{comment:"vector hex literal",match:"[A-Fa-f0-9]+",name:"constant.character.move"}]},{comment:"bool literal",match:"\\b(?:true|false)\\b",name:"constant.language.boolean.move"},{begin:"vector\\[",comment:"vector literal (macro?)",end:"\\]",name:"meta.vector.literal.macro.move",patterns:[{include:"#expr"}]}]},local_call:{comment:"call to a local / imported fun",match:"\\b([a-z][_a-z0-9]*)(?=[<\\(])",name:"entity.name.function.call.local.move"},macro:{begin:"\\b(macro)\\b",beginCaptures:{1:{name:"keyword.control.macro.move"}},comment:"macro fun [ident] {}",end:"(?<=})",name:"meta.macro.move",patterns:[{include:"#comments"},{include:"#fun"}]},macro_call:{captures:{2:{name:"support.function.macro.move"}},comment:"Macro fun call",match:"(\\b|\\.)([a-z][A-Za-z0-9_]*)!",name:"meta.macro.call"},method_call:{captures:{1:{name:"entity.name.function.call.path.move"}},comment:"<expr>.[ident]<>?() call",match:"\\.([a-z][_a-z0-9]*)(?=[<\\(])",name:"meta.path.call.move"},module:{begin:"\\b(module|spec)\\b",beginCaptures:{1:{name:"storage.modifier.type.move"}},comment:"Module definition",end:"(?<=})",name:"meta.module.move",patterns:[{include:"#comments"},{begin:"(?<=(module|spec))",comment:"Module name",end:"(?={)",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{begin:"(?<=\\b(module|spec))",comment:"Module namespace / address",end:"(?=[(::){])",name:"constant.other.move"},{begin:"(?<=::)",comment:"Module name",end:"(?=[\\s{])",name:"entity.name.type.move"}]},{begin:"{",comment:"Module scope",end:"}",name:"meta.module_scope.move",patterns:[{include:"#comments"},{include:"#attributes"},{include:"#entry"},{include:"#public-scope"},{include:"#public"},{include:"#native"},{include:"#import"},{include:"#friend"},{include:"#const"},{include:"#struct"},{include:"#has_ability"},{include:"#enum"},{include:"#macro"},{include:"#fun"},{include:"#spec"}]}]},module_access:{captures:{1:{name:"meta.entity.name.type.accessed.module.move"},2:{name:"entity.name.function.call.move"}},comment:"Use of module type or method",match:"\\b(\\w+)::(\\w+)\\b",name:"meta.module_access.move"},move_copy:{comment:"Keywords move and copy",match:"\\b(move|copy)\\b",name:"variable.language.move"},mut:{comment:"Mutable reference and let mut",match:"\\b(mut)\\b",name:"storage.modifier.mut.move"},native:{comment:"native",match:"\\b(native)\\b",name:"storage.modifier.visibility.native.move"},packed_field:{comment:"[ident]: ",match:"[a-z][a-z0-9_]+\\s*:\\s*(?=\\s)",name:"meta.struct.field.move"},paren:{begin:"\\(",end:"\\)",name:"meta.paren.move",patterns:[{include:"#expr"}]},path_access:{comment:"<expr>.[ident] access",match:"\\.[a-z][_a-z0-9]*\\b",name:"meta.path.access.move"},phantom:{comment:"Keyword phantom inside type parameters",match:"\\b(phantom)\\b",name:"keyword.control.phantom.move"},primitives:{comment:"Primitive types",match:"\\b(u8|u16|u32|u64|u128|u256|address|bool|signer)\\b",name:"support.type.primitives.move"},public:{comment:"public",match:"\\b(public)\\b",name:"storage.modifier.visibility.public.move"},"public-scope":{begin:"(?<=\\b(public))\\s*\\(",comment:"public (friend/script/package)",end:"\\)",name:"meta.public.scoped.move",patterns:[{include:"#comments"},{match:"\\b(friend|script|package)\\b",name:"keyword.control.public.scope.move"}]},resource_methods:{comment:"Methods to work with resource",match:"\\b(borrow_global|borrow_global_mut|exists|move_from|move_to_sender|move_to)\\b",name:"support.function.typed.move"},script:{begin:"\\b(script)\\b",beginCaptures:{1:{name:"storage.modifier.script.move"}},end:"(?<=})",name:"meta.script.move",patterns:[{include:"#comments"},{begin:"{",comment:"Script scope",end:"}",name:"meta.script_scope.move",patterns:[{include:"#const"},{include:"#comments"},{include:"#import"},{include:"#fun"}]}]},self_access:{captures:{1:{name:"variable.language.self.move"},2:{name:"entity.name.function.call.move"}},comment:"Use of Self",match:"\\b(Self)::(\\w+)\\b",name:"meta.self_access.move"},spec:{begin:"\\b(spec)\\b",beginCaptures:{1:{name:"storage.modifier.spec.move"}},end:"(?<=[;}])",name:"meta.spec.move",patterns:[{comment:"Spec target",match:"\\b(module|schema|struct|fun)",name:"storage.modifier.spec.target.move"},{comment:"Spec define inline",match:"\\b(define)",name:"storage.modifier.spec.define.move"},{comment:"Target name",match:"\\b(\\w+)\\b",name:"entity.name.function.move"},{begin:"{",comment:"Spec block",end:"}",patterns:[{include:"#comments"},{include:"#spec_block"},{include:"#spec_types"},{include:"#spec_define"},{include:"#spec_keywords"},{include:"#control"},{include:"#fun_call"},{include:"#literals"},{include:"#types"},{include:"#let"}]}]},spec_block:{begin:"{",comment:"Spec block",end:"}",name:"meta.spec_block.move",patterns:[{include:"#comments"},{include:"#spec_block"},{include:"#spec_types"},{include:"#fun_call"},{include:"#literals"},{include:"#control"},{include:"#types"},{include:"#let"}]},spec_define:{begin:"\\b(define)\\b",beginCaptures:{1:{name:"keyword.control.move.spec"}},comment:"Spec define keyword",end:"(?=[;{])",name:"meta.spec_define.move",patterns:[{include:"#comments"},{include:"#spec_types"},{include:"#types"},{begin:"(?<=\\bdefine)",comment:"Function name",end:"(?=[(])",patterns:[{include:"#comments"},{match:"\\b(\\w+)\\b",name:"entity.name.function.move"}]}]},spec_keywords:{match:"\\b(global|pack|unpack|pragma|native|include|ensures|requires|invariant|apply|aborts_if|modifies)\\b",name:"keyword.control.move.spec"},spec_types:{comment:"Spec-only types",match:"\\b(range|num|vector|bool|u8|u16|u32|u64|u128|u256|address)\\b",name:"support.type.vector.move"},struct:{begin:"\\b(struct)\\b",beginCaptures:{1:{name:"storage.modifier.type.move"}},end:"(?<=[};\\)])",name:"meta.struct.move",patterns:[{include:"#comments"},{include:"#escaped_identifier"},{include:"#has"},{include:"#abilities"},{comment:"Struct name (ident)",match:"\\b[A-Z][a-zA-Z_0-9]*\\b",name:"entity.name.type.struct.move"},{begin:"\\(",comment:"Positional fields",end:"\\)",name:"meta.struct.paren.move",patterns:[{include:"#comments"},{include:"#capitalized"},{include:"#types"}]},{include:"#type_param"},{begin:"\\(",comment:"Simple struct",end:"(?<=[)])",name:"meta.struct.paren.move",patterns:[{include:"#comments"},{include:"#types"}]},{begin:"{",comment:"Struct body",end:"}",name:"meta.struct.body.move",patterns:[{include:"#comments"},{include:"#self_access"},{include:"#escaped_identifier"},{include:"#module_access"},{include:"#expr_generic"},{include:"#capitalized"},{include:"#types"}]},{include:"#has_ability"}]},struct_pack:{begin:"(?<=[A-Za-z0-9_>])\\s*{",comment:"Struct { field: value... }; identified as generic / ident followed by curly's",end:"}",name:"meta.struct.pack.move",patterns:[{include:"#comments"}]},type_param:{begin:"<",comment:"Generic type param",end:">",name:"meta.generic_param.move",patterns:[{include:"#comments"},{include:"#phantom"},{include:"#capitalized"},{include:"#module_access"},{include:"#abilities"}]},types:{comment:"Built-in types + vector",name:"meta.types.move",patterns:[{include:"#primitives"},{include:"#vector"}]},use_fun:{begin:"\\b(fun)\\b",beginCaptures:{1:{name:"storage.modifier.fun.move"}},comment:"use { fun } internals",end:"(?=;)",name:"meta.import.fun.move",patterns:[{include:"#comments"},{comment:"as keyword",match:"\\b(as)\\b",name:"keyword.control.as.move"},{comment:"Self keyword",match:"\\b(Self)\\b",name:"variable.language.self.use.fun.move"},{comment:"Function name",match:"\\b(_______[a-z][a-z_0-9]+)\\b",name:"entity.name.function.use.move"},{include:"#types"},{include:"#escaped_identifier"},{include:"#capitalized"}]},vector:{comment:"vector type",match:"\\b(vector)\\b",name:"support.type.vector.move"}},scopeName:"source.move"});var n=[e];export{n as default}; diff --git a/assets/chunks/narrat.B9CT-1u6.js b/assets/chunks/narrat.B9CT-1u6.js new file mode 100644 index 000000000..96b674694 --- /dev/null +++ b/assets/chunks/narrat.B9CT-1u6.js @@ -0,0 +1,7 @@ +const a=Object.freeze({displayName:"Narrat Language",name:"narrat",patterns:[{include:"#comments"},{include:"#expression"}],repository:{commands:{patterns:[{match:"\\b(set|var)\\b",name:"keyword.commands.variables.narrat"},{match:"\\b(talk|think)\\b",name:"keyword.commands.text.narrat"},{match:"\\b(jump|run|wait|return|save|save_prompt)",name:"keyword.commands.flow.narrat"},{match:"\\b(log|clear_dialog)\\b",name:"keyword.commands.helpers.narrat"},{match:"\\b(set_screen|empty_layer|set_button)",name:"keyword.commands.screens.narrat"},{match:"\\b(play|pause|stop)\\b",name:"keyword.commands.audio.narrat"},{match:"\\b(notify|enable_notifications|disable_notifications)\\b",name:"keyword.commands.notifications.narrat"},{match:"\\b(set_stat|get_stat_value|add_stat)",name:"keyword.commands.stats.narrat"},{match:"\\b(neg|abs|random|random_float|random_from_args|min|max|clamp|floor|round|ceil|sqrt|^)\\b",name:"keyword.commands.math.narrat"},{match:"\\b(concat|join)\\b",name:"keyword.commands.string.narrat"},{match:"\\b(text_field)\\b",name:"keyword.commands.text_field.narrat"},{match:"\\b(add_level|set_level|add_xp|roll|get_level|get_xp)\\b",name:"keyword.commands.skills.narrat"},{match:"\\b(add_item|remove_item|enable_interaction|disable_interaction|has_item?|item_amount?)",name:"keyword.commands.inventory.narrat"},{match:"\\b(start_quest|start_objective|complete_objective|complete_quest|quest_started?|objective_started?|quest_completed?|objective_completed?)",name:"keyword.commands.quests.narrat"}]},comments:{patterns:[{match:"\\/\\/.*$",name:"comment.line.narrat"}]},expression:{patterns:[{include:"#keywords"},{include:"#commands"},{include:"#operators"},{include:"#primitives"},{include:"#strings"},{include:"#paren-expression"}]},interpolation:{patterns:[{match:"(\\w|\\.)+",name:"variable.interpolation.narrat"}]},keywords:{patterns:[{match:"\\b(if|else|choice)\\b",name:"keyword.control.narrat"},{match:"\\$[\\w|\\.]+\\b",name:"variable.value.narrat"},{match:`(?x) +^\\w+ +(?=(\\s|\\w)*:) +`,name:"entity.name.function.narrat"},{match:`(?x) +^\\w+ +(?!(\\s|\\w)*:) +`,name:"invalid.label.narrat"},{match:"(?<=\\w)[^^](\\b\\w+\\b)(?=(\\s|\\w)*:)",name:"entity.other.attribute-name"}]},operators:{patterns:[{match:"(&&|\\|\\||!=|==|>=|<=|<|>|!|\\?)\\s",name:"keyword.operator.logic.narrat"},{match:"(\\+|-|\\*|\\/)\\s",name:"keyword.operator.arithmetic.narrat"}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"punctuation.paren.open"}},end:"\\)",endCaptures:{0:{name:"punctuation.paren.close"}},name:"expression.group",patterns:[{include:"#expression"}]},primitives:{patterns:[{match:"\\b\\d+\\b",name:"constant.numeric.narrat"},{match:"\\btrue\\b",name:"constant.language.true.narrat"},{match:"\\bfalse\\b",name:"constant.language.false.narrat"},{match:"\\bnull\\b",name:"constant.language.null.narrat"},{match:"\\bundefined\\b",name:"constant.language.undefined.narrat"}]},strings:{begin:'"',end:'"',name:"string.quoted.double.narrat",patterns:[{match:"\\\\.",name:"constant.character.escape.narrat"},{begin:"%{",beginCaptures:{0:{name:"punctuation.template.open"}},end:"}",endCaptures:{0:{name:"punctuation.template.close.narrat"}},name:"expression.template",patterns:[{include:"#expression"},{include:"#interpolation"}]}]}},scopeName:"source.narrat",aliases:["nar"]});var e=[a];export{e as default}; diff --git a/assets/chunks/nextflow.DBxHOdLe.js b/assets/chunks/nextflow.DBxHOdLe.js new file mode 100644 index 000000000..f970eab8b --- /dev/null +++ b/assets/chunks/nextflow.DBxHOdLe.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Nextflow",name:"nextflow",patterns:[{include:"#nfl-rules"}],repository:{"implicit-variables":{patterns:[{match:"(?<=[^\\.\\w]|^)(params|nextflow|workflow|launchDir|moduleDir|projectDir|workDir)\\b",name:"variable.language.nextflow"}]},"include-statement":{patterns:[{match:"^\\b(include)\\b",name:"keyword.nextflow"},{match:"\\b(from)\\b",name:"keyword.nextflow"}]},"nfl-rules":{patterns:[{include:"#process-def"},{include:"#workflow-def"},{include:"#code-block"},{include:"#include-statement"},{include:"#implicit-variables"},{begin:"(\\w*\\()",beginCaptures:{1:{patterns:[{include:"source.nextflow-groovy"}]}},comment:"method call and parens",end:"\\)",patterns:[{include:"#nfl-rules"}]},{begin:"{",comment:"braces",end:"}",patterns:[{include:"#nfl-rules"}]},{include:"source.nextflow-groovy"}]},"process-body":{patterns:[{match:"(?:accelerator|afterScript|beforeScript|cache|cpus|conda|container|containerOptions|clusterOptions|debug|disk|echo|errorStrategy|executor|ext|label|machineType|maxErrors|maxForks|maxRetries|memory|module|penv|pod|publishDir|queue|resourceLabels|scratch|stageInMode|stageOutMode|storeDir|tag|time)\\b",name:"entity.name.function.nextflow"},{match:"(?:input|output|when|script|shell|exec):",name:"constant.block.nextflow"},{match:"\\b(tuple|set|path|file|val|stdout)(\\(|\\s)",name:"entity.name.function.nextflow"},{include:"#implicit-variables"},{begin:"(\\w*\\()",beginCaptures:{1:{patterns:[{include:"source.nextflow-groovy"}]}},comment:"method call and parens",end:"\\)",patterns:[{include:"#process-body"}]},{begin:"{",comment:"braces",end:"}",patterns:[{include:"#process-body"}]},{include:"source.nextflow-groovy#comments"},{include:"source.nextflow-groovy#support-functions"},{include:"source.nextflow-groovy#keyword"},{include:"source.nextflow-groovy#values"},{include:"source.nextflow-groovy#anonymous-classes-and-new"},{include:"source.nextflow-groovy#types"},{include:"source.nextflow-groovy#parens"},{include:"source.nextflow-groovy#closures"},{include:"source.nextflow-groovy#braces"}]},"process-def":{begin:`^\\s*(process)\\s+(\\w+|"[^"]+"|'[^']+')\\s*{`,beginCaptures:{1:{name:"keyword.nextflow"},2:{name:"function.nextflow"}},end:"}",name:"process.nextflow",patterns:[{include:"#process-body"}]},"workflow-body":{patterns:[{include:"#implicit-variables"},{match:"(?:take|main|emit):",name:"constant.block.nextflow"},{match:"(?<=[\\s\\.])(branch|buffer|close|collate|collect|collectFile|combine|concat|count|countBy|cross|distinct|dump|filter|first|flatMap|flatten|groupTuple|ifEmpty|join|last|map|max|merge|min|mix|multiMap|randomSample|reduce|set|splitCsv|splitFasta|splitFastq|splitText|sum|take|tap|toInteger|toList|toSortedList|transpose|unique|until|view)(?=[{\\(\\s])",name:"entity.name.function.nextflow"},{captures:{1:{name:"keyword.nextflow"},2:{name:"entity.name.function.nextflow"}},comment:"Channel factory single line",match:"\\b((?:C|c)hannel\\.)((fromList|fromPath|fromFilePairs|fromSRA|from|of|empty|value|watchPath)\\W)?"},{begin:"\\b((?:C|c)hannel)\\s*$",beginCaptures:{1:{name:"keyword.nextflow"}},comment:"Channel factory multi-line",end:"(^\\s*)(?:(\\.)(fromList|fromPath|fromFilePairs|fromSRA|from|of|empty|value|watchPath)\\W)?",endCaptures:{1:{name:"keyword.nextflow"},2:{name:"keyword.nextflow"},3:{name:"entity.name.function.nextflow"}}},{begin:"(\\w*\\()",beginCaptures:{1:{patterns:[{include:"source.nextflow-groovy"}]}},comment:"method call and parens",end:"\\)",patterns:[{include:"#workflow-body"}]},{begin:"{",comment:"braces",end:"}",patterns:[{include:"#workflow-body"}]},{include:"source.nextflow-groovy#comments"},{include:"source.nextflow-groovy#support-functions"},{include:"source.nextflow-groovy#keyword"},{include:"source.nextflow-groovy#values"},{include:"source.nextflow-groovy#anonymous-classes-and-new"},{include:"source.nextflow-groovy#types"},{include:"source.nextflow-groovy#parens"},{include:"source.nextflow-groovy#closures"},{include:"source.nextflow-groovy#braces"}]},"workflow-def":{begin:`^\\s*(workflow)(?:\\s+(\\w+|"[^"]+"|'[^']+'))?\\s*{`,beginCaptures:{1:{name:"keyword.nextflow"},2:{name:"constant.nextflow"}},end:"}",name:"workflow.nextflow",patterns:[{include:"#workflow-body"}]}},scopeName:"source.nextflow",aliases:["nf"]});var n=[e];export{n as default}; diff --git a/assets/chunks/nginx.CFCDRImM.js b/assets/chunks/nginx.CFCDRImM.js new file mode 100644 index 000000000..c067edfc6 --- /dev/null +++ b/assets/chunks/nginx.CFCDRImM.js @@ -0,0 +1 @@ +import e from"./lua.CHJYZA-p.js";import"./c.RCJZWN-0.js";const n=Object.freeze({displayName:"Nginx",fileTypes:["conf.erb","conf","ngx","nginx.conf","mime.types","fastcgi_params","scgi_params","uwsgi_params"],foldingStartMarker:"\\{\\s*$",foldingStopMarker:"^\\s*\\}",name:"nginx",patterns:[{match:"\\#.*",name:"comment.line.number-sign"},{begin:"\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua(?:_block)?)\\s*\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},contentName:"meta.embedded.block.lua",end:"\\}",name:"meta.context.lua.nginx",patterns:[{include:"source.lua"}]},{begin:"\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua)\\s*'",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},contentName:"meta.embedded.block.lua",end:"'",name:"meta.context.lua.nginx",patterns:[{include:"source.lua"}]},{begin:"\\b(events) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.events.nginx",patterns:[{include:"$self"}]},{begin:"\\b(http) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.http.nginx",patterns:[{include:"$self"}]},{begin:"\\b(mail) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.mail.nginx",patterns:[{include:"$self"}]},{begin:"\\b(stream) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.stream.nginx",patterns:[{include:"$self"}]},{begin:"\\b(server) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.server.nginx",patterns:[{include:"$self"}]},{begin:"\\b(location) +([\\^]?~[\\*]?|=) +(.*?)\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"},2:{name:"keyword.operator.nginx"},3:{name:"string.regexp.nginx"}},end:"\\}",name:"meta.context.location.nginx",patterns:[{include:"$self"}]},{begin:"\\b(location) +(.*?)\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"},2:{name:"entity.name.context.location.nginx"}},end:"\\}",name:"meta.context.location.nginx",patterns:[{include:"$self"}]},{begin:"\\b(limit_except) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.limit_except.nginx",patterns:[{include:"$self"}]},{begin:"\\b(if) +\\(",beginCaptures:{1:{name:"keyword.control.nginx"}},end:"\\)",name:"meta.context.if.nginx",patterns:[{include:"#if_condition"}]},{begin:"\\b(upstream) +(.*?)\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"},2:{name:"entity.name.context.location.nginx"}},end:"\\}",name:"meta.context.upstream.nginx",patterns:[{include:"$self"}]},{begin:"\\b(types) +\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"}},end:"\\}",name:"meta.context.types.nginx",patterns:[{include:"$self"}]},{begin:"\\b(map) +(\\$)([A-Za-z0-9\\_]+) +(\\$)([A-Za-z0-9\\_]+) *\\{",beginCaptures:{1:{name:"storage.type.directive.context.nginx"},2:{name:"punctuation.definition.variable.nginx"},3:{name:"variable.parameter.nginx"},4:{name:"punctuation.definition.variable.nginx"},5:{name:"variable.other.nginx"}},end:"\\}",name:"meta.context.map.nginx",patterns:[{include:"#values"},{match:";",name:"punctuation.terminator.nginx"},{match:"\\#.*",name:"comment.line.number-sign"}]},{begin:"\\{",end:"\\}",name:"meta.block.nginx",patterns:[{include:"$self"}]},{begin:"\\b(return)\\b",beginCaptures:{1:{name:"keyword.control.nginx"}},end:";",patterns:[{include:"#values"}]},{begin:"\\b(rewrite)\\s+",beginCaptures:{1:{name:"keyword.directive.nginx"}},end:"(last|break|redirect|permanent)?(;)",endCaptures:{1:{name:"keyword.other.nginx"},2:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:"\\b(server)\\s+",beginCaptures:{1:{name:"keyword.directive.nginx"}},end:";",endCaptures:{1:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#server_parameters"}]},{begin:"\\b(internal|empty_gif|f4f|flv|hls|mp4|break|status|stub_status|ip_hash|ntlm|least_conn|upstream_conf|least_conn|zone_sync)\\b",beginCaptures:{1:{name:"keyword.directive.nginx"}},end:"(;|$)",endCaptures:{1:{name:"punctuation.terminator.nginx"}}},{begin:`(["'\\s]|^)(accept_)(mutex|mutex_delay)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(debug_)(connection|points)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(error_)(log|page)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(ssl_)(engine|buffer_size|certificate|certificate_key|ciphers|client_certificate|conf_command|crl|dhparam|early_data|ecdh_curve|ocsp|ocsp_cache|ocsp_responder|password_file|prefer_server_ciphers|protocols|reject_handshake|session_cache|session_ticket_key|session_tickets|session_timeout|stapling|stapling_file|stapling_responder|stapling_verify|trusted_certificate|verify_client|verify_depth|alpn|handshake_timeout|preread)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(worker_)(aio_requests|connections|cpu_affinity|priority|processes|rlimit_core|rlimit_nofile|shutdown_timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(auth_)(delay|basic|basic_user_file|jwt|jwt_claim_set|jwt_header_set|jwt_key_cache|jwt_key_file|jwt_key_request|jwt_leeway|jwt_type|jwt_require|request|request_set|http|http_header|http_pass_client_cert|http_timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(client_)(body_buffer_size|body_in_file_only|body_in_single_buffer|body_temp_path|body_timeout|header_buffer_size|header_timeout|max_body_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(keepalive_)(disable|requests|time|timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(limit_)(rate|rate_after|conn|conn_dry_run|conn_log_level|conn_status|conn_zone|zone|req|req_dry_run|req_log_level|req_status|req_zone)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(lingering_)(close|time|timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(log_)(not_found|subrequest|format)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(max_)(ranges|errors)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(msie_)(padding|refresh)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(open_)(file_cache|file_cache_errors|file_cache_min_uses|file_cache_valid|log_file_cache)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(send_)(lowat|timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(server_)(name|name_in_redirect|names_hash_bucket_size|names_hash_max_size|tokens)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(tcp_)(nodelay|nopush)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(types_)(hash_bucket_size|hash_max_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(variables_)(hash_bucket_size|hash_max_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(add_)(before_body|after_body|header|trailer)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(status_)(zone|format)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(autoindex_)(exact_size|format|localtime)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(ancient_)(browser|browser_value)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(modern_)(browser|browser_value)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(charset_)(map|types)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(dav_)(access|methods)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(fastcgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|catch_stderr|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|index|intercept_errors|keep_conn|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_lowat|send_timeout|socket_keepalive|split_path_info|store|store_access|temp_file_write_size|temp_path)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(geoip_)(country|city|org|proxy|proxy_recursive)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(grpc_)(bind|buffer_size|connect_timeout|hide_header|ignore_headers|intercept_errors|next_upstream|next_upstream_timeout|next_upstream_tries|pass|pass_header|read_timeout|send_timeout|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(gzip_)(buffers|comp_level|disable|http_version|min_length|proxied|types|vary|static)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(hls_)(buffers|forward_args|fragment|mp4_buffer_size|mp4_max_buffer_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(image_)(filter|filter_buffer|filter_interlace|filter_jpeg_quality|filter_sharpen|filter_transparency|filter_webp_quality)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(map_)(hash_bucket_size|hash_max_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(memcached_)(bind|buffer_size|connect_timeout|gzip_flag|next_upstream|next_upstream_timeout|next_upstream_tries|pass|read_timeout|send_timeout|socket_keepalive)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(mp4_)(buffer_size|max_buffer_size|limit_rate|limit_rate_after|start_key_frame)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(perl_)(modules|require|set)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(proxy_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_convert_head|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|cookie_domain|cookie_flags|cookie_path|force_ranges|headers_hash_bucket_size|headers_hash_max_size|hide_header|http_version|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|method|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|redirect|request_buffering|send_lowat|send_timeout|set_body|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path|buffer|pass_error_message|protocol|smtp_auth|timeout|protocol_timeout|download_rate|half_close|requests|responses|session_drop|ssl|upload_rate)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(real_)(ip_header|ip_recursive)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(referer_)(hash_bucket_size|hash_max_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(scgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|store|store_access|temp_file_write_size|temp_path)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(secure_)(link|link_md5|link_secret)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(session_)(log|log_format|log_zone)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(ssi_)(last_modified|min_file_chunk|silent_errors|types|value_length)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(sub_)(filter|filter_last_modified|filter_once|filter_types)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(health_)(check|check_timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(userid_)(domain|expires|flags|mark|name|p3p|path|service)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(uwsgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|modifier1|modifier2|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(http2_)(body_preread_size|chunk_size|idle_timeout|max_concurrent_pushes|max_concurrent_streams|max_field_size|max_header_size|max_requests|push|push_preload|recv_buffer_size|recv_timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(http3_)(hq|max_concurrent_streams|stream_buffer_size)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(quic_)(active_connection_id_limit|bpf|gso|host_key|retry)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(xslt_)(last_modified|param|string_param|stylesheet|types)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(imap_)(auth|capabilities|client_buffer)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(pop3_)(auth|capabilities)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(smtp_)(auth|capabilities|client_buffer|greeting_delay)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(preread_)(buffer_size|timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(mqtt_)(preread|buffers|rewrite_buffer_size|set_connect)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(zone_)(sync_buffers|sync_connect_retry_interval|sync_connect_timeout|sync_interval|sync_recv_buffer_size|sync_server|sync_ssl|sync_ssl_certificate|sync_ssl_certificate_key|sync_ssl_ciphers|sync_ssl_conf_command|sync_ssl_crl|sync_ssl_name|sync_ssl_password_file|sync_ssl_protocols|sync_ssl_server_name|sync_ssl_trusted_certificate|sync_ssl_verify|sync_ssl_verify_depth|sync_timeout)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(otel_)(exporter|service_name|trace|trace_context|span_name|span_attr)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(js_)(body_filter|content|fetch_buffer_size|fetch_ciphers|fetch_max_response_buffer_size|fetch_protocols|fetch_timeout|fetch_trusted_certificate|fetch_verify|fetch_verify_depth|header_filter|import|include|path|periodic|preload_object|set|shared_dict_zone|var|access|filter|preread)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"},4:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:`(["'\\s]|^)(daemon|env|include|pid|use|user|aio|alias|directio|etag|listen|resolver|root|satisfy|sendfile|allow|deny|api|autoindex|charset|geo|gunzip|gzip|expires|index|keyval|mirror|perl|set|slice|ssi|ssl|zone|state|hash|keepalive|queue|random|sticky|match|userid|http2|http3|protocol|timeout|xclient|starttls|mqtt|load_module|lock_file|master_process|multi_accept|pcre_jit|thread_pool|timer_resolution|working_directory|absolute_redirect|aio_write|chunked_transfer_encoding|connection_pool_size|default_type|directio_alignment|disable_symlinks|if_modified_since|ignore_invalid_headers|large_client_header_buffers|merge_slashes|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver_timeout|sendfile_max_chunk|subrequest_output_buffer_size|try_files|underscores_in_headers|addition_types|override_charset|source_charset|create_full_put_path|min_delete_depth|f4f_buffer_size|gunzip_buffers|internal_redirect|keyval_zone|access_log|mirror_request_body|random_index|set_real_ip_from|valid_referers|rewrite_log|uninitialized_variable_warn|split_clients|least_time|sticky_cookie_insert|xml_entities|google_perftools_profiles)(["'\\s]|$)`,beginCaptures:{1:{name:"keyword.directive.nginx"},2:{name:"keyword.directive.nginx"},3:{name:"keyword.directive.nginx"}},end:";",endCaptures:{0:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:"\\b([a-zA-Z0-9\\_]+)\\s+",beginCaptures:{1:{name:"keyword.directive.unknown.nginx"}},end:"(;|$)",endCaptures:{1:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]},{begin:"\\b([a-z]+\\/[A-Za-z0-9\\-\\.\\+]+)\\b",beginCaptures:{1:{name:"constant.other.mediatype.nginx"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.nginx"}},patterns:[{include:"#values"}]}],repository:{if_condition:{patterns:[{include:"#variables"},{match:"\\!?\\~\\*?\\s",name:"keyword.operator.nginx"},{match:"\\!?\\-[fdex]\\s",name:"keyword.operator.nginx"},{match:"\\!?=[^=]",name:"keyword.operator.nginx"},{include:"#regexp_and_string"}]},regexp_and_string:{patterns:[{match:"\\^.*?\\$",name:"string.regexp.nginx"},{begin:'"',end:'"',name:"string.quoted.double.nginx",patterns:[{match:`\\\\["'nt\\\\]`,name:"constant.character.escape.nginx"},{include:"#variables"}]},{begin:"'",end:"'",name:"string.quoted.single.nginx",patterns:[{match:`\\\\["'nt\\\\]`,name:"constant.character.escape.nginx"},{include:"#variables"}]}]},server_parameters:{patterns:[{captures:{1:{name:"variable.parameter.nginx"},2:{name:"keyword.operator.nginx"},3:{name:"constant.numeric.nginx"}},match:"(?:^|\\s)(weight|max_conn|max_fails|fail_timeout|slow_start)(=)(\\d[\\d\\.]*[bBkKmMgGtTsShHdD]?)(?:\\s|;|$)"},{include:"#values"}]},values:{patterns:[{include:"#variables"},{match:"\\#.*",name:"comment.line.number-sign"},{captures:{1:{name:"constant.numeric.nginx"}},match:"(?<=\\G|\\s)(=?[0-9][0-9\\.]*[bBkKmMgGtTsShHdD]?)(?=[\\t ;])"},{match:"(?<=\\G|\\s)(on|off|true|false)(?=[\\t ;])",name:"constant.language.nginx"},{match:"(?<=\\G|\\s)(kqueue|rtsig|epoll|\\/dev\\/poll|select|poll|eventport|max|all|default_server|default|main|crit|error|debug|warn|notice|last)(?=[\\t ;])",name:"constant.language.nginx"},{match:"\\\\.*\\ |\\~\\*|\\~|\\!\\~\\*|\\!\\~",name:"keyword.operator.nginx"},{include:"#regexp_and_string"}]},variables:{patterns:[{captures:{1:{name:"punctuation.definition.variable.nginx"},2:{name:"variable.other.nginx"}},match:"(\\$)([A-Za-z0-9\\_]+)\\b"},{captures:{1:{name:"punctuation.definition.variable.nginx"},2:{name:"variable.other.nginx"},3:{name:"punctuation.definition.variable.nginx"}},match:"(\\$\\{)([A-Za-z0-9\\_]+)(\\})"}]}},scopeName:"source.nginx",embeddedLangs:["lua"]});var r=[...e,n];export{r as default}; diff --git a/assets/chunks/night-owl.BeocmOPF.js b/assets/chunks/night-owl.BeocmOPF.js new file mode 100644 index 000000000..f059fe636 --- /dev/null +++ b/assets/chunks/night-owl.BeocmOPF.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#011627","activityBar.border":"#011627","activityBar.dropBackground":"#5f7e97","activityBar.foreground":"#5f7e97","activityBarBadge.background":"#44596b","activityBarBadge.foreground":"#ffffff","badge.background":"#5f7e97","badge.foreground":"#ffffff","breadcrumb.activeSelectionForeground":"#FFFFFF","breadcrumb.focusForeground":"#ffffff","breadcrumb.foreground":"#A599E9","breadcrumbPicker.background":"#001122","button.background":"#7e57c2cc","button.foreground":"#ffffffcc","button.hoverBackground":"#7e57c2",contrastBorder:"#122d42","debugExceptionWidget.background":"#011627","debugExceptionWidget.border":"#5f7e97","debugToolBar.background":"#011627","diffEditor.insertedTextBackground":"#99b76d23","diffEditor.insertedTextBorder":"#c5e47833","diffEditor.removedTextBackground":"#ef535033","diffEditor.removedTextBorder":"#ef53504d","dropdown.background":"#011627","dropdown.border":"#5f7e97","dropdown.foreground":"#ffffffcc","editor.background":"#011627","editor.findMatchBackground":"#5f7e9779","editor.findMatchHighlightBackground":"#1085bb5d","editor.findRangeHighlightBackground":null,"editor.foreground":"#d6deeb","editor.hoverHighlightBackground":"#7e57c25a","editor.inactiveSelectionBackground":"#7e57c25a","editor.lineHighlightBackground":"#0003","editor.lineHighlightBorder":null,"editor.rangeHighlightBackground":"#7e57c25a","editor.selectionBackground":"#1d3b53","editor.selectionHighlightBackground":"#5f7e9779","editor.wordHighlightBackground":"#f6bbe533","editor.wordHighlightStrongBackground":"#e2a2f433","editorBracketMatch.background":"#5f7e974d","editorBracketMatch.border":null,"editorCodeLens.foreground":"#5e82ceb4","editorCursor.foreground":"#80a4c2","editorError.border":null,"editorError.foreground":"#EF5350","editorGroup.border":"#011627","editorGroup.dropBackground":"#7e57c273","editorGroup.emptyBackground":"#011627","editorGroupHeader.noTabsBackground":"#011627","editorGroupHeader.tabsBackground":"#011627","editorGroupHeader.tabsBorder":"#262A39","editorGutter.addedBackground":"#9CCC65","editorGutter.background":"#011627","editorGutter.deletedBackground":"#EF5350","editorGutter.modifiedBackground":"#e2b93d","editorHoverWidget.background":"#011627","editorHoverWidget.border":"#5f7e97","editorIndentGuide.activeBackground":"#7E97AC","editorIndentGuide.background":"#5e81ce52","editorLineNumber.activeForeground":"#C5E4FD","editorLineNumber.foreground":"#4b6479","editorLink.activeForeground":null,"editorMarkerNavigation.background":"#0b2942","editorMarkerNavigationError.background":"#EF5350","editorMarkerNavigationWarning.background":"#FFCA28","editorOverviewRuler.commonContentForeground":"#7e57c2","editorOverviewRuler.currentContentForeground":"#7e57c2","editorOverviewRuler.incomingContentForeground":"#7e57c2","editorRuler.foreground":"#5e81ce52","editorSuggestWidget.background":"#2C3043","editorSuggestWidget.border":"#2B2F40","editorSuggestWidget.foreground":"#d6deeb","editorSuggestWidget.highlightForeground":"#ffffff","editorSuggestWidget.selectedBackground":"#5f7e97","editorWarning.border":null,"editorWarning.foreground":"#b39554","editorWhitespace.foreground":null,"editorWidget.background":"#021320","editorWidget.border":"#5f7e97",errorForeground:"#EF5350","extensionButton.prominentBackground":"#7e57c2cc","extensionButton.prominentForeground":"#ffffffcc","extensionButton.prominentHoverBackground":"#7e57c2",focusBorder:"#122d42",foreground:"#d6deeb","gitDecoration.conflictingResourceForeground":"#ffeb95cc","gitDecoration.deletedResourceForeground":"#EF535090","gitDecoration.ignoredResourceForeground":"#395a75","gitDecoration.modifiedResourceForeground":"#a2bffc","gitDecoration.untrackedResourceForeground":"#c5e478ff","input.background":"#0b253a","input.border":"#5f7e97","input.foreground":"#ffffffcc","input.placeholderForeground":"#5f7e97","inputOption.activeBorder":"#ffffffcc","inputValidation.errorBackground":"#AB0300F2","inputValidation.errorBorder":"#EF5350","inputValidation.infoBackground":"#00589EF2","inputValidation.infoBorder":"#64B5F6","inputValidation.warningBackground":"#675700F2","inputValidation.warningBorder":"#FFCA28","list.activeSelectionBackground":"#234d708c","list.activeSelectionForeground":"#ffffff","list.dropBackground":"#011627","list.focusBackground":"#010d18","list.focusForeground":"#ffffff","list.highlightForeground":"#ffffff","list.hoverBackground":"#011627","list.hoverForeground":"#ffffff","list.inactiveSelectionBackground":"#0e293f","list.inactiveSelectionForeground":"#5f7e97","list.invalidItemForeground":"#975f94","merge.border":null,"merge.currentContentBackground":null,"merge.currentHeaderBackground":"#5f7e97","merge.incomingContentBackground":null,"merge.incomingHeaderBackground":"#7e57c25a","meta.objectliteral.js":"#82AAFF","notificationCenter.border":"#262a39","notificationLink.foreground":"#80CBC4","notificationToast.border":"#262a39","notifications.background":"#01111d","notifications.border":"#262a39","notifications.foreground":"#ffffffcc","panel.background":"#011627","panel.border":"#5f7e97","panelTitle.activeBorder":"#5f7e97","panelTitle.activeForeground":"#ffffffcc","panelTitle.inactiveForeground":"#d6deeb80","peekView.border":"#5f7e97","peekViewEditor.background":"#011627","peekViewEditor.matchHighlightBackground":"#7e57c25a","peekViewResult.background":"#011627","peekViewResult.fileForeground":"#5f7e97","peekViewResult.lineForeground":"#5f7e97","peekViewResult.matchHighlightBackground":"#ffffffcc","peekViewResult.selectionBackground":"#2E3250","peekViewResult.selectionForeground":"#5f7e97","peekViewTitle.background":"#011627","peekViewTitleDescription.foreground":"#697098","peekViewTitleLabel.foreground":"#5f7e97","pickerGroup.border":"#011627","pickerGroup.foreground":"#d1aaff","progress.background":"#7e57c2","punctuation.definition.generic.begin.html":"#ef5350f2","scrollbar.shadow":"#010b14","scrollbarSlider.activeBackground":"#084d8180","scrollbarSlider.background":"#084d8180","scrollbarSlider.hoverBackground":"#084d8180","selection.background":"#4373c2","sideBar.background":"#011627","sideBar.border":"#011627","sideBar.foreground":"#89a4bb","sideBarSectionHeader.background":"#011627","sideBarSectionHeader.foreground":"#5f7e97","sideBarTitle.foreground":"#5f7e97","source.elm":"#5f7e97","statusBar.background":"#011627","statusBar.border":"#262A39","statusBar.debuggingBackground":"#202431","statusBar.debuggingBorder":"#1F2330","statusBar.debuggingForeground":null,"statusBar.foreground":"#5f7e97","statusBar.noFolderBackground":"#011627","statusBar.noFolderBorder":"#25293A","statusBar.noFolderForeground":null,"statusBarItem.activeBackground":"#202431","statusBarItem.hoverBackground":"#202431","statusBarItem.prominentBackground":"#202431","statusBarItem.prominentHoverBackground":"#202431","string.quoted.single.js":"#ffffff","tab.activeBackground":"#0b2942","tab.activeBorder":"#262A39","tab.activeForeground":"#d2dee7","tab.border":"#272B3B","tab.inactiveBackground":"#01111d","tab.inactiveForeground":"#5f7e97","tab.unfocusedActiveBorder":"#262A39","tab.unfocusedActiveForeground":"#5f7e97","tab.unfocusedInactiveForeground":"#5f7e97","terminal.ansiBlack":"#011627","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#575656","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#7fdbca","terminal.ansiBrightGreen":"#22da6e","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#EF5350","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#ffeb95","terminal.ansiCyan":"#21c7a8","terminal.ansiGreen":"#22da6e","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#EF5350","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#c5e478","terminal.selectionBackground":"#1b90dd4d","terminalCursor.background":"#234d70","textCodeBlock.background":"#4f4f4f","titleBar.activeBackground":"#011627","titleBar.activeForeground":"#eeefff","titleBar.inactiveBackground":"#010e1a","titleBar.inactiveForeground":null,"walkThrough.embeddedEditorBackground":"#011627","welcomePage.buttonBackground":"#011627","welcomePage.buttonHoverBackground":"#011627","widget.shadow":"#011627"},displayName:"Night Owl",name:"night-owl",semanticHighlighting:!1,tokenColors:[{scope:["markup.changed","meta.diff.header.git","meta.diff.header.from-file","meta.diff.header.to-file"],settings:{fontStyle:"italic",foreground:"#a2bffc"}},{scope:"markup.deleted.diff",settings:{fontStyle:"italic",foreground:"#EF535090"}},{scope:"markup.inserted.diff",settings:{fontStyle:"italic",foreground:"#c5e478ff"}},{settings:{background:"#011627",foreground:"#d6deeb"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#637777"}},{scope:"string",settings:{foreground:"#ecc48d"}},{scope:["string.quoted","variable.other.readwrite.js"],settings:{foreground:"#ecc48d"}},{scope:"support.constant.math",settings:{foreground:"#c5e478"}},{scope:["constant.numeric","constant.character.numeric"],settings:{fontStyle:"",foreground:"#F78C6C"}},{scope:["constant.language","punctuation.definition.constant","variable.other.constant"],settings:{foreground:"#82AAFF"}},{scope:["constant.character","constant.other"],settings:{foreground:"#82AAFF"}},{scope:"constant.character.escape",settings:{foreground:"#F78C6C"}},{scope:["string.regexp","string.regexp keyword.other"],settings:{foreground:"#5ca7e4"}},{scope:"meta.function punctuation.separator.comma",settings:{foreground:"#5f7e97"}},{scope:"variable",settings:{foreground:"#c5e478"}},{scope:["punctuation.accessor","keyword"],settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:["storage","meta.var.expr","meta.class meta.method.declaration meta.var.expr storage.type.js","storage.type.property.js","storage.type.property.ts","storage.type.property.tsx"],settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"storage.type",settings:{foreground:"#c792ea"}},{scope:"storage.type.function.arrow.js",settings:{fontStyle:""}},{scope:["entity.name.class","meta.class entity.name.type.class"],settings:{foreground:"#ffcb8b"}},{scope:"entity.other.inherited-class",settings:{foreground:"#c5e478"}},{scope:"entity.name.function",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:["punctuation.definition.tag","meta.tag"],settings:{foreground:"#7fdbca"}},{scope:["entity.name.tag","meta.tag.other.html","meta.tag.other.js","meta.tag.other.tsx","entity.name.tag.tsx","entity.name.tag.js","entity.name.tag","meta.tag.js","meta.tag.tsx","meta.tag.html"],settings:{fontStyle:"",foreground:"#caece6"}},{scope:"entity.other.attribute-name",settings:{fontStyle:"italic",foreground:"#c5e478"}},{scope:"entity.name.tag.custom",settings:{foreground:"#f78c6c"}},{scope:["support.function","support.constant"],settings:{foreground:"#82AAFF"}},{scope:"support.constant.meta.property-value",settings:{foreground:"#7fdbca"}},{scope:["support.type","support.class"],settings:{foreground:"#c5e478"}},{scope:"support.variable.dom",settings:{foreground:"#c5e478"}},{scope:"invalid",settings:{background:"#ff2c83",foreground:"#ffffff"}},{scope:"invalid.deprecated",settings:{background:"#d3423e",foreground:"#ffffff"}},{scope:"keyword.operator",settings:{fontStyle:"",foreground:"#7fdbca"}},{scope:"keyword.operator.relational",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"keyword.operator.assignment",settings:{foreground:"#c792ea"}},{scope:"keyword.operator.arithmetic",settings:{foreground:"#c792ea"}},{scope:"keyword.operator.bitwise",settings:{foreground:"#c792ea"}},{scope:"keyword.operator.increment",settings:{foreground:"#c792ea"}},{scope:"keyword.operator.ternary",settings:{foreground:"#c792ea"}},{scope:"comment.line.double-slash",settings:{foreground:"#637777"}},{scope:"object",settings:{foreground:"#cdebf7"}},{scope:"constant.language.null",settings:{foreground:"#ff5874"}},{scope:"meta.brace",settings:{foreground:"#d6deeb"}},{scope:"meta.delimiter.period",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"punctuation.definition.string",settings:{foreground:"#d9f5dd"}},{scope:"punctuation.definition.string.begin.markdown",settings:{foreground:"#ff5874"}},{scope:"constant.language.boolean",settings:{foreground:"#ff5874"}},{scope:"object.comma",settings:{foreground:"#ffffff"}},{scope:"variable.parameter.function",settings:{fontStyle:"",foreground:"#7fdbca"}},{scope:["support.type.vendor.property-name","support.constant.vendor.property-value","support.type.property-name","meta.property-list entity.name.tag"],settings:{fontStyle:"",foreground:"#80CBC4"}},{scope:"meta.property-list entity.name.tag.reference",settings:{foreground:"#57eaf1"}},{scope:"constant.other.color.rgb-value punctuation.definition.constant",settings:{foreground:"#F78C6C"}},{scope:"constant.other.color",settings:{foreground:"#FFEB95"}},{scope:"keyword.other.unit",settings:{foreground:"#FFEB95"}},{scope:"meta.selector",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#FAD430"}},{scope:"meta.property-name",settings:{foreground:"#80CBC4"}},{scope:["entity.name.tag.doctype","meta.tag.sgml.doctype"],settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"punctuation.definition.parameters",settings:{foreground:"#d9f5dd"}},{scope:"keyword.control.operator",settings:{foreground:"#7fdbca"}},{scope:"keyword.operator.logical",settings:{fontStyle:"",foreground:"#c792ea"}},{scope:["variable.instance","variable.other.instance","variable.readwrite.instance","variable.other.readwrite.instance","variable.other.property"],settings:{foreground:"#baebe2"}},{scope:["variable.other.object.property"],settings:{fontStyle:"italic",foreground:"#faf39f"}},{scope:["variable.other.object.js"],settings:{fontStyle:""}},{scope:["entity.name.function"],settings:{fontStyle:"italic",foreground:"#82AAFF"}},{scope:["keyword.operator.comparison","keyword.control.flow.js","keyword.control.flow.ts","keyword.control.flow.tsx","keyword.control.ruby","keyword.control.module.ruby","keyword.control.class.ruby","keyword.control.def.ruby","keyword.control.loop.js","keyword.control.loop.ts","keyword.control.import.js","keyword.control.import.ts","keyword.control.import.tsx","keyword.control.from.js","keyword.control.from.ts","keyword.control.from.tsx","keyword.operator.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.instanceof.tsx"],settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:["keyword.control.conditional.js","keyword.control.conditional.ts","keyword.control.switch.js","keyword.control.switch.ts"],settings:{fontStyle:"",foreground:"#c792ea"}},{scope:["support.constant","keyword.other.special-method","keyword.other.new","keyword.other.debugger","keyword.control"],settings:{foreground:"#7fdbca"}},{scope:"support.function",settings:{foreground:"#c5e478"}},{scope:"invalid.broken",settings:{background:"#F78C6C",foreground:"#020e14"}},{scope:"invalid.unimplemented",settings:{background:"#8BD649",foreground:"#ffffff"}},{scope:"invalid.illegal",settings:{background:"#ec5f67",foreground:"#ffffff"}},{scope:"variable.language",settings:{foreground:"#7fdbca"}},{scope:"support.variable.property",settings:{foreground:"#7fdbca"}},{scope:"variable.function",settings:{foreground:"#82AAFF"}},{scope:"variable.interpolation",settings:{foreground:"#ec5f67"}},{scope:"meta.function-call",settings:{foreground:"#82AAFF"}},{scope:"punctuation.section.embedded",settings:{foreground:"#d3423e"}},{scope:["punctuation.terminator.expression","punctuation.definition.arguments","punctuation.definition.array","punctuation.section.array","meta.array"],settings:{foreground:"#d6deeb"}},{scope:["punctuation.definition.list.begin","punctuation.definition.list.end","punctuation.separator.arguments","punctuation.definition.list"],settings:{foreground:"#d9f5dd"}},{scope:"string.template meta.template.expression",settings:{foreground:"#d3423e"}},{scope:"string.template punctuation.definition.string",settings:{foreground:"#d6deeb"}},{scope:"italic",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"bold",settings:{fontStyle:"bold",foreground:"#c5e478"}},{scope:"quote",settings:{fontStyle:"italic",foreground:"#697098"}},{scope:"raw",settings:{foreground:"#80CBC4"}},{scope:"variable.assignment.coffee",settings:{foreground:"#31e1eb"}},{scope:"variable.parameter.function.coffee",settings:{foreground:"#d6deeb"}},{scope:"variable.assignment.coffee",settings:{foreground:"#7fdbca"}},{scope:"variable.other.readwrite.cs",settings:{foreground:"#d6deeb"}},{scope:["entity.name.type.class.cs","storage.type.cs"],settings:{foreground:"#ffcb8b"}},{scope:"entity.name.type.namespace.cs",settings:{foreground:"#B2CCD6"}},{scope:"string.unquoted.preprocessor.message.cs",settings:{foreground:"#d6deeb"}},{scope:["punctuation.separator.hash.cs","keyword.preprocessor.region.cs","keyword.preprocessor.endregion.cs"],settings:{fontStyle:"bold",foreground:"#ffcb8b"}},{scope:"variable.other.object.cs",settings:{foreground:"#B2CCD6"}},{scope:"entity.name.type.enum.cs",settings:{foreground:"#c5e478"}},{scope:["string.interpolated.single.dart","string.interpolated.double.dart"],settings:{foreground:"#FFCB8B"}},{scope:"support.class.dart",settings:{foreground:"#FFCB8B"}},{scope:["entity.name.tag.css","entity.name.tag.less","entity.name.tag.custom.css","support.constant.property-value.css"],settings:{fontStyle:"",foreground:"#ff6363"}},{scope:["entity.name.tag.wildcard.css","entity.name.tag.wildcard.less","entity.name.tag.wildcard.scss","entity.name.tag.wildcard.sass"],settings:{foreground:"#7fdbca"}},{scope:"keyword.other.unit.css",settings:{foreground:"#FFEB95"}},{scope:["meta.attribute-selector.css entity.other.attribute-name.attribute","variable.other.readwrite.js"],settings:{foreground:"#F78C6C"}},{scope:["source.elixir support.type.elixir","source.elixir meta.module.elixir entity.name.class.elixir"],settings:{foreground:"#82AAFF"}},{scope:"source.elixir entity.name.function",settings:{foreground:"#c5e478"}},{scope:["source.elixir constant.other.symbol.elixir","source.elixir constant.other.keywords.elixir"],settings:{foreground:"#82AAFF"}},{scope:"source.elixir punctuation.definition.string",settings:{foreground:"#c5e478"}},{scope:["source.elixir variable.other.readwrite.module.elixir","source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"],settings:{foreground:"#c5e478"}},{scope:"source.elixir .punctuation.binary.elixir",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"constant.keyword.clojure",settings:{foreground:"#7fdbca"}},{scope:"source.go meta.function-call.go",settings:{foreground:"#DDDDDD"}},{scope:["source.go keyword.package.go","source.go keyword.import.go","source.go keyword.function.go","source.go keyword.type.go","source.go keyword.struct.go","source.go keyword.interface.go","source.go keyword.const.go","source.go keyword.var.go","source.go keyword.map.go","source.go keyword.channel.go","source.go keyword.control.go"],settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:["source.go constant.language.go","source.go constant.other.placeholder.go"],settings:{foreground:"#ff5874"}},{scope:["entity.name.function.preprocessor.cpp","entity.scope.name.cpp"],settings:{foreground:"#7fdbcaff"}},{scope:["meta.namespace-block.cpp"],settings:{foreground:"#e0dec6"}},{scope:["storage.type.language.primitive.cpp"],settings:{foreground:"#ff5874"}},{scope:["meta.preprocessor.macro.cpp"],settings:{foreground:"#d6deeb"}},{scope:["variable.parameter"],settings:{foreground:"#ffcb8b"}},{scope:["variable.other.readwrite.powershell"],settings:{foreground:"#82AAFF"}},{scope:["support.function.powershell"],settings:{foreground:"#7fdbcaff"}},{scope:"entity.other.attribute-name.id.html",settings:{foreground:"#c5e478"}},{scope:"punctuation.definition.tag.html",settings:{foreground:"#6ae9f0"}},{scope:"meta.tag.sgml.doctype.html",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"meta.class entity.name.type.class.js",settings:{foreground:"#ffcb8b"}},{scope:"meta.method.declaration storage.type.js",settings:{foreground:"#82AAFF"}},{scope:"terminator.js",settings:{foreground:"#d6deeb"}},{scope:"meta.js punctuation.definition.js",settings:{foreground:"#d6deeb"}},{scope:["entity.name.type.instance.jsdoc","entity.name.type.instance.phpdoc"],settings:{foreground:"#5f7e97"}},{scope:["variable.other.jsdoc","variable.other.phpdoc"],settings:{foreground:"#78ccf0"}},{scope:["variable.other.meta.import.js","meta.import.js variable.other","variable.other.meta.export.js","meta.export.js variable.other"],settings:{foreground:"#d6deeb"}},{scope:"variable.parameter.function.js",settings:{foreground:"#7986E7"}},{scope:["variable.other.object.js","variable.other.object.jsx","variable.object.property.js","variable.object.property.jsx"],settings:{foreground:"#d6deeb"}},{scope:["variable.js","variable.other.js"],settings:{foreground:"#d6deeb"}},{scope:["entity.name.type.js","entity.name.type.module.js"],settings:{fontStyle:"",foreground:"#ffcb8b"}},{scope:"support.class.js",settings:{foreground:"#d6deeb"}},{scope:"support.type.property-name.json",settings:{foreground:"#7fdbca"}},{scope:"support.constant.json",settings:{foreground:"#c5e478"}},{scope:"meta.structure.dictionary.value.json string.quoted.double",settings:{foreground:"#c789d6"}},{scope:"string.quoted.double.json punctuation.definition.string.json",settings:{foreground:"#80CBC4"}},{scope:"meta.structure.dictionary.json meta.structure.dictionary.value constant.language",settings:{foreground:"#ff5874"}},{scope:"variable.other.object.js",settings:{fontStyle:"italic",foreground:"#7fdbca"}},{scope:["variable.other.ruby"],settings:{foreground:"#d6deeb"}},{scope:["entity.name.type.class.ruby"],settings:{foreground:"#ecc48d"}},{scope:"constant.language.symbol.hashkey.ruby",settings:{foreground:"#7fdbca"}},{scope:"constant.language.symbol.ruby",settings:{foreground:"#7fdbca"}},{scope:"entity.name.tag.less",settings:{foreground:"#7fdbca"}},{scope:"keyword.other.unit.css",settings:{foreground:"#FFEB95"}},{scope:"meta.attribute-selector.less entity.other.attribute-name.attribute",settings:{foreground:"#F78C6C"}},{scope:["markup.heading.markdown","markup.heading.setext.1.markdown","markup.heading.setext.2.markdown"],settings:{foreground:"#82b1ff"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold",foreground:"#c5e478"}},{scope:"markup.quote.markdown",settings:{fontStyle:"italic",foreground:"#697098"}},{scope:"markup.inline.raw.markdown",settings:{foreground:"#80CBC4"}},{scope:["markup.underline.link.markdown","markup.underline.link.image.markdown"],settings:{foreground:"#ff869a"}},{scope:["string.other.link.title.markdown","string.other.link.description.markdown"],settings:{foreground:"#d6deeb"}},{scope:["punctuation.definition.string.markdown","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","meta.link.inline.markdown punctuation.definition.string"],settings:{foreground:"#82b1ff"}},{scope:["punctuation.definition.metadata.markdown"],settings:{foreground:"#7fdbca"}},{scope:["beginning.punctuation.definition.list.markdown"],settings:{foreground:"#82b1ff"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#c5e478"}},{scope:["variable.other.php","variable.other.property.php"],settings:{foreground:"#bec5d4"}},{scope:"support.class.php",settings:{foreground:"#ffcb8b"}},{scope:"meta.function-call.php punctuation",settings:{foreground:"#d6deeb"}},{scope:"variable.other.global.php",settings:{foreground:"#c5e478"}},{scope:"variable.other.global.php punctuation.definition.variable",settings:{foreground:"#c5e478"}},{scope:"constant.language.python",settings:{foreground:"#ff5874"}},{scope:["variable.parameter.function.python","meta.function-call.arguments.python"],settings:{foreground:"#82AAFF"}},{scope:["meta.function-call.python","meta.function-call.generic.python"],settings:{foreground:"#B2CCD6"}},{scope:"punctuation.python",settings:{foreground:"#d6deeb"}},{scope:"entity.name.function.decorator.python",settings:{foreground:"#c5e478"}},{scope:"source.python variable.language.special",settings:{foreground:"#8EACE3"}},{scope:"keyword.control",settings:{fontStyle:"italic",foreground:"#c792ea"}},{scope:["variable.scss","variable.sass","variable.parameter.url.scss","variable.parameter.url.sass"],settings:{foreground:"#c5e478"}},{scope:["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],settings:{foreground:"#82AAFF"}},{scope:["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],settings:{foreground:"#bec5d4"}},{scope:["meta.attribute-selector.scss entity.other.attribute-name.attribute","meta.attribute-selector.sass entity.other.attribute-name.attribute"],settings:{foreground:"#F78C6C"}},{scope:["entity.name.tag.scss","entity.name.tag.sass"],settings:{foreground:"#7fdbca"}},{scope:["keyword.other.unit.scss","keyword.other.unit.sass"],settings:{foreground:"#FFEB95"}},{scope:["variable.other.readwrite.alias.ts","variable.other.readwrite.alias.tsx","variable.other.readwrite.ts","variable.other.readwrite.tsx","variable.other.object.ts","variable.other.object.tsx","variable.object.property.ts","variable.object.property.tsx","variable.other.ts","variable.other.tsx","variable.tsx","variable.ts"],settings:{foreground:"#d6deeb"}},{scope:["entity.name.type.ts","entity.name.type.tsx"],settings:{foreground:"#ffcb8b"}},{scope:["support.class.node.ts","support.class.node.tsx"],settings:{foreground:"#82AAFF"}},{scope:["meta.type.parameters.ts entity.name.type","meta.type.parameters.tsx entity.name.type"],settings:{foreground:"#5f7e97"}},{scope:["meta.import.ts punctuation.definition.block","meta.import.tsx punctuation.definition.block","meta.export.ts punctuation.definition.block","meta.export.tsx punctuation.definition.block"],settings:{foreground:"#d6deeb"}},{scope:["meta.decorator punctuation.decorator.ts","meta.decorator punctuation.decorator.tsx"],settings:{foreground:"#82AAFF"}},{scope:"meta.tag.js meta.jsx.children.tsx",settings:{foreground:"#82AAFF"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#7fdbca"}},{scope:["variable.other.readwrite.js","variable.parameter"],settings:{foreground:"#d7dbe0"}},{scope:["support.class.component.js","support.class.component.tsx"],settings:{fontStyle:"",foreground:"#f78c6c"}},{scope:["meta.jsx.children","meta.jsx.children.js","meta.jsx.children.tsx"],settings:{foreground:"#d6deeb"}},{scope:"meta.class entity.name.type.class.tsx",settings:{foreground:"#ffcb8b"}},{scope:["entity.name.type.tsx","entity.name.type.module.tsx"],settings:{foreground:"#ffcb8b"}},{scope:["meta.class.ts meta.var.expr.ts storage.type.ts","meta.class.tsx meta.var.expr.tsx storage.type.tsx"],settings:{foreground:"#C792EA"}},{scope:["meta.method.declaration storage.type.ts","meta.method.declaration storage.type.tsx"],settings:{foreground:"#82AAFF"}},{scope:["meta.property-list.css meta.property-value.css variable.other.less","meta.property-list.scss variable.scss","meta.property-list.sass variable.sass","meta.brace","keyword.operator.operator","keyword.operator.or.regexp","keyword.operator.expression.in","keyword.operator.relational","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.type","keyword.operator","keyword","punctuation.definintion.string","punctuation","variable.other.readwrite.js","storage.type","source.css","string.quoted"],settings:{fontStyle:""}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/nim.whBoXTHG.js b/assets/chunks/nim.whBoXTHG.js new file mode 100644 index 000000000..fcf8382e8 --- /dev/null +++ b/assets/chunks/nim.whBoXTHG.js @@ -0,0 +1 @@ +import e from"./c.RCJZWN-0.js";import n from"./html.CuK0VrWf.js";import t from"./xml.BzTcx3OS.js";import a from"./javascript.Dch3xQiY.js";import i from"./css.CbYhyuC0.js";import m from"./glsl.-GlVTnW0.js";import r from"./markdown.BdfWgkoX.js";import"./java.ClXEvkw9.js";const o=Object.freeze({displayName:"Nim",fileTypes:["nim"],name:"nim",patterns:[{begin:"[ \\t]*##\\[",contentName:"comment.block.doc-comment.content.nim",end:"\\]##",name:"comment.block.doc-comment.nim",patterns:[{include:"#multilinedoccomment",name:"comment.block.doc-comment.nested.nim"}]},{begin:"[ \\t]*#\\[",contentName:"comment.block.content.nim",end:"\\]#",name:"comment.block.nim",patterns:[{include:"#multilinecomment",name:"comment.block.nested.nim"}]},{begin:"(^[ \\t]+)?(?=##)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.nim"}},end:"(?!\\G)",patterns:[{begin:"##",beginCaptures:{0:{name:"punctuation.definition.comment.nim"}},end:"\\n",name:"comment.line.number-sign.doc-comment.nim"}]},{begin:"(^[ \\t]+)?(?=#[^\\[])",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.nim"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.nim"}},end:"\\n",name:"comment.line.number-sign.nim"}]},{comment:"A nim procedure or method",name:"meta.proc.nim",patterns:[{begin:"\\b(proc|method|template|macro|iterator|converter|func)\\s+\\`?([^\\:\\{\\s\\`\\*\\(]*)\\`?(\\s*\\*)?\\s*(?=\\(|\\=|:|\\[|\\n|\\{)",captures:{1:{name:"keyword.other"},2:{name:"entity.name.function.nim"},3:{name:"keyword.control.export"}},end:"\\)",patterns:[{include:"source.nim"}]}]},{begin:'discard """',comment:"A discarded triple string literal comment",end:'"""(?!")',name:"comment.line.discarded.nim"},{include:"#float_literal"},{include:"#integer_literal"},{comment:"Operator as function name",match:"(?<=\\`)[^\\` ]+(?=\\`)",name:"entity.name.function.nim"},{captures:{1:{name:"keyword.control.export"}},comment:"Export qualifier.",match:"\\b\\s*(\\*)(?:\\s*(?=[,:])|\\s+(?=[=]))"},{captures:{1:{name:"support.type.nim"},2:{name:"keyword.control.export"}},comment:"Export qualifier following a type def.",match:"\\b([A-Z]\\w+)(\\*)"},{include:"#string_literal"},{comment:"Language Constants.",match:"\\b(true|false|Inf|NegInf|NaN|nil)\\b",name:"constant.language.nim"},{comment:"Keywords that affect program control flow or scope.",match:"\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b",name:"keyword.control.nim"},{comment:"Keyword boolean operators for expressions.",match:"(\\b(and|in|is|isnot|not|notin|or|xor)\\b)",name:"keyword.boolean.nim"},{comment:"Generic operators for expressions.",match:"(=|\\+|-|\\*|/|<|>|@|\\$|~|&|%|!|\\?|\\^|\\.|:|\\\\)+",name:"keyword.operator.nim"},{comment:"Other keywords.",match:"(\\b(addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template)\\b)",name:"keyword.other.nim"},{comment:"Invalid and unused keywords.",match:"(\\b(generic|interface|lambda|out|shared)\\b)",name:"invalid.illegal.invalid-keyword.nim"},{comment:"Common functions",match:"\\b(new|await|assert|echo|defined|declared|newException|countup|countdown|high|low)\\b",name:"keyword.other.common.function.nim"},{comment:"Built-in, concrete types.",match:"\\b(((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)\\b",name:"storage.type.concrete.nim"},{comment:"Built-in, generic types.",match:"\\b(range|array|seq|set|pointer)\\b",name:"storage.type.generic.nim"},{comment:"Special types.",match:"\\b(openarray|varargs|void)\\b",name:"storage.type.generic.nim"},{comment:"Other constants.",match:"\\b[A-Z][A-Z0-9_]+\\b",name:"support.constant.nim"},{comment:"Other types.",match:"\\b[A-Z]\\w+\\b",name:"support.type.nim"},{comment:"Function call.",match:"\\b\\w+\\b(?=(\\[([a-zA-Z0-9_,]|\\s)+\\])?\\()",name:"support.function.any-method.nim"},{comment:"Function call (no parenthesis).",match:"(?!(openarray|varargs|void|range|array|seq|set|pointer|new|await|assert|echo|defined|declared|newException|countup|countdown|high|low|((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed|addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template|and|in|is|isnot|not|notin|or|xor|proc|method|template|macro|iterator|converter|func|true|false|Inf|NegInf|NaN|nil|block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b)\\w+\\s+(?!(and|in|is|isnot|not|notin|or|xor|[^a-zA-Z0-9_\"'`(-+]+)\\b)(?=[a-zA-Z0-9_\"'`(-+])",name:"support.function.any-method.nim"},{begin:'(^\\s*)?(?=\\{\\.emit: ?""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'\\{\\.(emit:) ?(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.c",end:'(")""(?!")(\\.{0,1}\\})?',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"source.c"}},name:"meta.embedded.block.c",patterns:[{begin:"\\`",end:"\\`",name:"keyword.operator.nim"},{include:"source.c"}]}]},{begin:"\\{\\.",beginCaptures:{0:{name:"punctuation.pragma.start.nim"}},end:"\\.?\\}",endCaptures:{0:{name:"punctuation.pragma.end.nim"}},patterns:[{begin:"\\b([[:alpha:]]\\w*)(?:\\s|\\s*:)",beginCaptures:{1:{name:"meta.preprocessor.pragma.nim"}},end:"(?=\\.?\\}|,)",patterns:[{include:"source.nim"}]},{begin:"\\b([[:alpha:]]\\w*)\\(",beginCaptures:{1:{name:"meta.preprocessor.pragma.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{captures:{1:{name:"meta.preprocessor.pragma.nim"}},match:"\\b([[:alpha:]]\\w*)(?=\\.?\\}|,)"},{begin:'\\b([[:alpha:]]\\w*)(""")',beginCaptures:{1:{name:"meta.preprocessor.pragma.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"""(?!")',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim"},{begin:'\\b([[:alpha:]]\\w*)(")',beginCaptures:{1:{name:"meta.preprocessor.pragma.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.raw.nim"},{begin:"\\b(hint\\[\\w+\\]):",beginCaptures:{1:{name:"meta.preprocessor.pragma.nim"}},end:"(?=\\.?\\}|,)",patterns:[{include:"source.nim"}]},{match:",",name:"punctuation.separator.comma.nim"}]},{begin:'(^\\s*)?(?=asm """)',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(asm) (""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.asm",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"source.asm"}},name:"meta.embedded.block.asm",patterns:[{begin:"\\`",end:"\\`",name:"keyword.operator.nim"},{include:"source.asm"}]}]},{captures:{1:{name:"storage.type.function.nim"},2:{name:"keyword.operator.nim"}},comment:"tmpl specifier",match:'(tmpl(i)?)(?=( (html|xml|js|css|glsl|md))?""")'},{begin:'(^\\s*)?(?=html""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(html)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"text.html",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"text.html"}},name:"meta.embedded.block.html",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"text.html.basic"}]}]},{begin:'(^\\s*)?(?=xml""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(xml)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"text.xml",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"text.xml"}},name:"meta.embedded.block.xml",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"text.xml"}]}]},{begin:'(^\\s*)?(?=js""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(js)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.js",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"source.js"}},name:"meta.embedded.block.js",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"source.js"}]}]},{begin:'(^\\s*)?(?=css""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(css)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.css",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"source.css"}},name:"meta.embedded.block.css",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"source.css"}]}]},{begin:'(^\\s*)?(?=glsl""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(glsl)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.glsl",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"source.glsl"}},name:"meta.embedded.block.glsl",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"source.glsl"}]}]},{begin:'(^\\s*)?(?=md""")',beginCaptures:{0:{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{0:{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:'(md)(""")',captures:{1:{name:"keyword.other.nim"},2:{name:"punctuation.section.embedded.begin.nim"}},contentName:"text.html.markdown",end:'(")""(?!")',endCaptures:{0:{name:"punctuation.section.embedded.end.nim"},1:{name:"text.html.markdown"}},name:"meta.embedded.block.html.markdown",patterns:[{begin:"(?<!\\$)(\\$)\\(",captures:{1:{name:"keyword.operator.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)\\{",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"\\}",patterns:[{include:"source.nim"}]},{begin:"(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",captures:{1:{name:"keyword.operator.nim"},2:{name:"keyword.operator.nim"}},end:"(\\{|\\n)",endCaptures:{1:{name:"plain"}},patterns:[{include:"source.nim"}]},{match:"(?<!\\$)(\\$\\w+)",name:"keyword.operator.nim"},{include:"text.html.markdown"}]}]}],repository:{char_escapes:{patterns:[{match:"\\\\[cC]|\\\\[rR]",name:"constant.character.escape.carriagereturn.nim"},{match:"\\\\[lL]|\\\\[nN]",name:"constant.character.escape.linefeed.nim"},{match:"\\\\[fF]",name:"constant.character.escape.formfeed.nim"},{match:"\\\\[tT]",name:"constant.character.escape.tabulator.nim"},{match:"\\\\[vV]",name:"constant.character.escape.verticaltabulator.nim"},{match:'\\\\\\"',name:"constant.character.escape.double-quote.nim"},{match:"\\\\'",name:"constant.character.escape.single-quote.nim"},{match:"\\\\[0-9]+",name:"constant.character.escape.chardecimalvalue.nim"},{match:"\\\\[aA]",name:"constant.character.escape.alert.nim"},{match:"\\\\[bB]",name:"constant.character.escape.backspace.nim"},{match:"\\\\[eE]",name:"constant.character.escape.escape.nim"},{match:"\\\\[xX]\\h\\h",name:"constant.character.escape.hex.nim"},{match:"\\\\\\\\",name:"constant.character.escape.backslash.nim"}]},extended_string_quoted_double_raw:{begin:'\\b(\\w+)(")',beginCaptures:{1:{name:"support.function.any-method.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.raw.nim",patterns:[{include:"#raw_string_escapes"}]},extended_string_quoted_triple_raw:{begin:'\\b(\\w+)(""")',beginCaptures:{1:{name:"support.function.any-method.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim"},float_literal:{patterns:[{match:"\\b\\d[_\\d]*((\\.\\d[_\\d]*([eE][\\+\\-]?\\d[_\\d]*)?)|([eE][\\+\\-]?\\d[_\\d]*))('([fF](32|64|128)|[fFdD]))?",name:"constant.numeric.float.decimal.nim"},{match:"\\b0[xX]\\h[_\\h]*'([fF](32|64|128)|[fFdD])",name:"constant.numeric.float.hexadecimal.nim"},{match:"\\b0o[0-7][_0-7]*'([fF](32|64|128)|[fFdD])",name:"constant.numeric.float.octal.nim"},{match:"\\b0(b|B)[01][_01]*'([fF](32|64|128)|[fFdD])",name:"constant.numeric.float.binary.nim"},{match:"\\b(\\d[_\\d]*)'([fF](32|64|128)|[fFdD])",name:"constant.numeric.float.decimal.nim"}]},fmt_interpolation:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.nim"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.nim"}},name:"meta.template.expression.nim",patterns:[{begin:":",end:"(?=\\})",name:"meta.template.format-specifier.nim"},{include:"source.nim"}]},fmt_string:{begin:'\\b(fmt)(")',beginCaptures:{1:{name:"support.function.any-method.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.raw.nim",patterns:[{match:'(?<!")"(?!")',name:"invalid.illegal.nim"},{include:"#raw_string_escapes"},{include:"#fmt_interpolation"}]},fmt_string_call:{begin:'(fmt)\\((?=")',beginCaptures:{1:{name:"support.function.any-method.nim"}},end:"\\)",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},end:'"(?=\\))',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.nim",patterns:[{match:'"',name:"invalid.illegal.nim"},{include:"#string_escapes"},{include:"#fmt_interpolation"}]}]},fmt_string_operator:{begin:'(&)(")',beginCaptures:{1:{name:"keyword.operator.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.nim",patterns:[{match:'"',name:"invalid.illegal.nim"},{include:"#string_escapes"},{include:"#fmt_interpolation"}]},fmt_string_triple:{begin:'\\b(fmt)(""")',beginCaptures:{1:{name:"support.function.any-method.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim",patterns:[{include:"#fmt_interpolation"}]},fmt_string_triple_operator:{begin:'(&)(""")',beginCaptures:{1:{name:"keyword.operator.nim"},2:{name:"punctuation.definition.string.begin.nim"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim",patterns:[{include:"#fmt_interpolation"}]},integer_literal:{patterns:[{match:"\\b(0[xX]\\h[_\\h]*)('(([iIuU](8|16|32|64))|[uU]))?",name:"constant.numeric.integer.hexadecimal.nim"},{match:"\\b(0o[0-7][_0-7]*)('(([iIuU](8|16|32|64))|[uU]))?",name:"constant.numeric.integer.octal.nim"},{match:"\\b(0(b|B)[01][_01]*)('(([iIuU](8|16|32|64))|[uU]))?",name:"constant.numeric.integer.binary.nim"},{match:"\\b(\\d[_\\d]*)('(([iIuU](8|16|32|64))|[uU]))?",name:"constant.numeric.integer.decimal.nim"}]},multilinecomment:{begin:"#\\[",end:"\\]#",patterns:[{include:"#multilinecomment"}]},multilinedoccomment:{begin:"##\\[",end:"\\]##",patterns:[{include:"#multilinedoccomment"}]},raw_string_escapes:{captures:{1:{name:"constant.character.escape.double-quote.nim"}},match:'[^"]("")'},string_escapes:{patterns:[{match:"\\\\[pP]",name:"constant.character.escape.newline.nim"},{match:"\\\\[uU]\\h\\h\\h\\h",name:"constant.character.escape.hex.nim"},{match:"\\\\[uU]\\{\\h+\\}",name:"constant.character.escape.hex.nim"},{include:"#char_escapes"}]},string_literal:{patterns:[{include:"#fmt_string_triple"},{include:"#fmt_string_triple_operator"},{include:"#extended_string_quoted_triple_raw"},{include:"#string_quoted_triple_raw"},{include:"#fmt_string_operator"},{include:"#fmt_string"},{include:"#fmt_string_call"},{include:"#string_quoted_double_raw"},{include:"#extended_string_quoted_double_raw"},{include:"#string_quoted_single"},{include:"#string_quoted_triple"},{include:"#string_quoted_double"}]},string_quoted_double:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},comment:"Double Quoted String",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.nim",patterns:[{include:"#string_escapes"}]},string_quoted_double_raw:{begin:'\\br"',beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.raw.nim",patterns:[{include:"#raw_string_escapes"}]},string_quoted_single:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},comment:"Single quoted character literal",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.single.nim",patterns:[{include:"#char_escapes"},{match:"([^']{2,}?)",name:"invalid.illegal.character.nim"}]},string_quoted_triple:{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},comment:"Triple Quoted String",end:'"""(?!")',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.nim"},string_quoted_triple_raw:{begin:'r"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.nim"}},comment:"Raw Triple Quoted String",end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim"}},scopeName:"source.nim",embeddedLangs:["c","html","xml","javascript","css","glsl","markdown"]});var h=[...e,...n,...t,...a,...i,...m,...r,o];export{h as default}; diff --git a/assets/chunks/nix.Dszwcx0o.js b/assets/chunks/nix.Dszwcx0o.js new file mode 100644 index 000000000..ad8648236 --- /dev/null +++ b/assets/chunks/nix.Dszwcx0o.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Nix",fileTypes:["nix"],name:"nix",patterns:[{include:"#expression"}],repository:{"attribute-bind":{patterns:[{include:"#attribute-name"},{include:"#attribute-bind-from-equals"}]},"attribute-bind-from-equals":{begin:"\\=",beginCaptures:{0:{name:"keyword.operator.bind.nix"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.bind.nix"}},patterns:[{include:"#expression"}]},"attribute-inherit":{begin:"\\binherit\\b",beginCaptures:{0:{name:"keyword.other.inherit.nix"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.inherit.nix"}},patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.function.arguments.nix"}},end:"(?=\\;)",patterns:[{begin:"\\)",beginCaptures:{0:{name:"punctuation.section.function.arguments.nix"}},end:"(?=\\;)",patterns:[{include:"#bad-reserved"},{include:"#attribute-name-single"},{include:"#others"}]},{include:"#expression"}]},{begin:"(?=[a-zA-Z\\_])",end:"(?=\\;)",patterns:[{include:"#bad-reserved"},{include:"#attribute-name-single"},{include:"#others"}]},{include:"#others"}]},"attribute-name":{patterns:[{match:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",name:"entity.other.attribute-name.multipart.nix"},{match:"\\."},{include:"#string-quoted"},{include:"#interpolation"}]},"attribute-name-single":{match:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",name:"entity.other.attribute-name.single.nix"},"attrset-contents":{patterns:[{include:"#attribute-inherit"},{include:"#bad-reserved"},{include:"#attribute-bind"},{include:"#others"}]},"attrset-definition":{begin:"(?=\\{)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"(\\{)",beginCaptures:{0:{name:"punctuation.definition.attrset.nix"}},end:"(\\})",endCaptures:{0:{name:"punctuation.definition.attrset.nix"}},patterns:[{include:"#attrset-contents"}]},{begin:"(?<=\\})",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]}]},"attrset-definition-brace-opened":{patterns:[{begin:"(?<=\\})",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{begin:"(?=.?)",end:"\\}",endCaptures:{0:{name:"punctuation.definition.attrset.nix"}},patterns:[{include:"#attrset-contents"}]}]},"attrset-for-sure":{patterns:[{begin:"(?=\\brec\\b)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"\\brec\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"(?=\\{)",patterns:[{include:"#others"}]},{include:"#attrset-definition"},{include:"#others"}]},{begin:"(?=\\{\\s*(\\}|[^,?]*(=|;)))",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#attrset-definition"},{include:"#others"}]}]},"attrset-or-function":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.attrset-or-function.nix"}},end:"(?=([\\])};]|\\b(else|then)\\b))",patterns:[{begin:`(?=(\\s*\\}|\\"|\\binherit\\b|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*(\\s*\\.|\\s*=[^=])))`,end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#attrset-definition-brace-opened"}]},{begin:"(?=(\\.\\.\\.|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[,?]))",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-definition-brace-opened"}]},{include:"#bad-reserved"},{begin:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",beginCaptures:{0:{name:"variable.parameter.function.maybe.nix"}},end:"(?=([\\])};]|\\b(else|then)\\b))",patterns:[{begin:"(?=\\.)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#attrset-definition-brace-opened"}]},{begin:"\\s*(\\,)",beginCaptures:{1:{name:"keyword.operator.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-definition-brace-opened"}]},{begin:"(?=\\=)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#attribute-bind-from-equals"},{include:"#attrset-definition-brace-opened"}]},{begin:"(?=\\?)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-parameter-default"},{begin:"\\,",beginCaptures:{0:{name:"keyword.operator.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-definition-brace-opened"}]}]},{include:"#others"}]},{include:"#others"}]},"bad-reserved":{match:"\\b(if|then|else|assert|with|let|in|rec|inherit)\\b",name:"invalid.illegal.reserved.nix"},comment:{patterns:[{begin:"/\\*([^*]|\\*[^\\/])*",end:"\\*\\/",name:"comment.block.nix",patterns:[{include:"#comment-remark"}]},{begin:"\\#",end:"$",name:"comment.line.number-sign.nix",patterns:[{include:"#comment-remark"}]}]},"comment-remark":{captures:{1:{name:"markup.bold.comment.nix"}},match:"(TODO|FIXME|BUG|\\!\\!\\!):?"},constants:{patterns:[{begin:"\\b(builtins|true|false|null)\\b",beginCaptures:{0:{name:"constant.language.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{begin:"\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\b",beginCaptures:{0:{name:"support.function.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{begin:"\\b[0-9]+\\b",beginCaptures:{0:{name:"constant.numeric.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]}]},expression:{patterns:[{include:"#parens-and-cont"},{include:"#list-and-cont"},{include:"#string"},{include:"#interpolation"},{include:"#with-assert"},{include:"#function-for-sure"},{include:"#attrset-for-sure"},{include:"#attrset-or-function"},{include:"#let"},{include:"#if"},{include:"#operator-unary"},{include:"#constants"},{include:"#bad-reserved"},{include:"#parameter-name-and-cont"},{include:"#others"}]},"expression-cont":{begin:"(?=.?)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#parens"},{include:"#list"},{include:"#string"},{include:"#interpolation"},{include:"#function-for-sure"},{include:"#attrset-for-sure"},{include:"#attrset-or-function"},{match:"(\\bor\\b|\\.|==|!=|!|\\<\\=|\\<|\\>\\=|\\>|&&|\\|\\||-\\>|//|\\?|\\+\\+|-|\\*|/(?=([^*]|$))|\\+)",name:"keyword.operator.nix"},{include:"#constants"},{include:"#bad-reserved"},{include:"#parameter-name"},{include:"#others"}]},"function-body":{begin:"(@\\s*([a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)\\s*)?(\\:)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression"}]},"function-body-from-colon":{begin:"(\\:)",beginCaptures:{0:{name:"punctuation.definition.function.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression"}]},"function-contents":{patterns:[{include:"#bad-reserved"},{include:"#function-parameter"},{include:"#others"}]},"function-definition":{begin:"(?=.?)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-body-from-colon"},{begin:"(?=.?)",end:"(?=\\:)",patterns:[{begin:"(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",beginCaptures:{0:{name:"variable.parameter.function.4.nix"}},end:"(?=\\:)",patterns:[{begin:"\\@",end:"(?=\\:)",patterns:[{include:"#function-header-until-colon-no-arg"},{include:"#others"}]},{include:"#others"}]},{begin:"(?=\\{)",end:"(?=\\:)",patterns:[{include:"#function-header-until-colon-with-arg"}]}]},{include:"#others"}]},"function-definition-brace-opened":{begin:"(?=.?)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-body-from-colon"},{begin:"(?=.?)",end:"(?=\\:)",patterns:[{include:"#function-header-close-brace-with-arg"},{begin:"(?=.?)",end:"(?=\\})",patterns:[{include:"#function-contents"}]}]},{include:"#others"}]},"function-for-sure":{patterns:[{begin:`(?=(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[:@]|\\{[^}]*\\}\\s*:|\\{[^#}"'/=]*[,\\?]))`,end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#function-definition"}]}]},"function-header-close-brace-no-arg":{begin:"\\}",beginCaptures:{0:{name:"punctuation.definition.entity.function.nix"}},end:"(?=\\:)",patterns:[{include:"#others"}]},"function-header-close-brace-with-arg":{begin:"\\}",beginCaptures:{0:{name:"punctuation.definition.entity.function.nix"}},end:"(?=\\:)",patterns:[{include:"#function-header-terminal-arg"},{include:"#others"}]},"function-header-open-brace":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.entity.function.2.nix"}},end:"(?=\\})",patterns:[{include:"#function-contents"}]},"function-header-terminal-arg":{begin:"(?=@)",end:"(?=\\:)",patterns:[{begin:"\\@",end:"(?=\\:)",patterns:[{begin:"(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",end:"(?=\\:)",name:"variable.parameter.function.3.nix"},{include:"#others"}]},{include:"#others"}]},"function-header-until-colon-no-arg":{begin:"(?=\\{)",end:"(?=\\:)",patterns:[{include:"#function-header-open-brace"},{include:"#function-header-close-brace-no-arg"}]},"function-header-until-colon-with-arg":{begin:"(?=\\{)",end:"(?=\\:)",patterns:[{include:"#function-header-open-brace"},{include:"#function-header-close-brace-with-arg"}]},"function-parameter":{patterns:[{begin:"(\\.\\.\\.)",end:"(,|(?=\\}))",name:"keyword.operator.nix",patterns:[{include:"#others"}]},{begin:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",beginCaptures:{0:{name:"variable.parameter.function.1.nix"}},end:"(,|(?=\\}))",endCaptures:{0:{name:"keyword.operator.nix"}},patterns:[{include:"#whitespace"},{include:"#comment"},{include:"#function-parameter-default"},{include:"#expression"}]},{include:"#others"}]},"function-parameter-default":{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.nix"}},end:"(?=[,}])",patterns:[{include:"#expression"}]},if:{begin:"(?=\\bif\\b)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"\\bif\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"\\bth(?=en\\b)",endCaptures:{0:{name:"keyword.other.nix"}},patterns:[{include:"#expression"}]},{begin:"(?<=th)en\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"\\bel(?=se\\b)",endCaptures:{0:{name:"keyword.other.nix"}},patterns:[{include:"#expression"}]},{begin:"(?<=el)se\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",endCaptures:{0:{name:"keyword.other.nix"}},patterns:[{include:"#expression"}]}]},illegal:{match:".",name:"invalid.illegal"},interpolation:{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.nix"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.nix"}},name:"markup.italic",patterns:[{include:"#expression"}]},let:{begin:"(?=\\blet\\b)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"\\blet\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"(?=([\\])};,]|\\b(in|else|then)\\b))",patterns:[{begin:"(?=\\{)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"\\{",end:"\\}",patterns:[{include:"#attrset-contents"}]},{begin:"(^|(?<=\\}))",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{include:"#others"}]},{include:"#attrset-contents"},{include:"#others"}]},{begin:"\\bin\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression"}]}]},list:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.list.nix"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.list.nix"}},patterns:[{include:"#expression"}]},"list-and-cont":{begin:"(?=\\[)",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#list"},{include:"#expression-cont"}]},"operator-unary":{match:"(!|-)",name:"keyword.operator.unary.nix"},others:{patterns:[{include:"#whitespace"},{include:"#comment"},{include:"#illegal"}]},"parameter-name":{captures:{0:{name:"variable.parameter.name.nix"}},match:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*"},"parameter-name-and-cont":{begin:"\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",beginCaptures:{0:{name:"variable.parameter.name.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.expression.nix"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.expression.nix"}},patterns:[{include:"#expression"}]},"parens-and-cont":{begin:"(?=\\()",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#parens"},{include:"#expression-cont"}]},string:{patterns:[{begin:"(?=\\'\\')",end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{begin:"\\'\\'",beginCaptures:{0:{name:"punctuation.definition.string.other.start.nix"}},end:"\\'\\'(?!\\$|\\'|\\\\.)",endCaptures:{0:{name:"punctuation.definition.string.other.end.nix"}},name:"string.quoted.other.nix",patterns:[{match:"\\'\\'(\\$|\\'|\\\\.)",name:"constant.character.escape.nix"},{include:"#interpolation"}]},{include:"#expression-cont"}]},{begin:'(?=\\")',end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#string-quoted"},{include:"#expression-cont"}]},{begin:"([a-zA-Z0-9\\.\\_\\-\\+]*(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)+)",beginCaptures:{0:{name:"string.unquoted.path.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{begin:"(\\<[a-zA-Z0-9\\.\\_\\-\\+]+(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)*\\>)",beginCaptures:{0:{name:"string.unquoted.spath.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]},{begin:"([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*\\:[a-zA-Z0-9\\%\\/\\?\\:\\@\\&\\=\\+\\$\\,\\-\\_\\.\\!\\~\\*\\']+)",beginCaptures:{0:{name:"string.unquoted.url.nix"}},end:"(?=([\\])};,]|\\b(else|then)\\b))",patterns:[{include:"#expression-cont"}]}]},"string-quoted":{begin:'\\"',beginCaptures:{0:{name:"punctuation.definition.string.double.start.nix"}},end:'\\"',endCaptures:{0:{name:"punctuation.definition.string.double.end.nix"}},name:"string.quoted.double.nix",patterns:[{match:"\\\\.",name:"constant.character.escape.nix"},{include:"#interpolation"}]},whitespace:{match:"\\s+"},"with-assert":{begin:"\\b(with|assert)\\b",beginCaptures:{0:{name:"keyword.other.nix"}},end:"\\;",patterns:[{include:"#expression"}]}},scopeName:"source.nix"});var n=[e];export{n as default}; diff --git a/assets/chunks/nord.CsyjKwr8.js b/assets/chunks/nord.CsyjKwr8.js new file mode 100644 index 000000000..bf5fb68c5 --- /dev/null +++ b/assets/chunks/nord.CsyjKwr8.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBackground":"#3b4252","activityBar.activeBorder":"#88c0d0","activityBar.background":"#2e3440","activityBar.dropBackground":"#3b4252","activityBar.foreground":"#d8dee9","activityBarBadge.background":"#88c0d0","activityBarBadge.foreground":"#2e3440","badge.background":"#88c0d0","badge.foreground":"#2e3440","button.background":"#88c0d0ee","button.foreground":"#2e3440","button.hoverBackground":"#88c0d0","button.secondaryBackground":"#434c5e","button.secondaryForeground":"#d8dee9","button.secondaryHoverBackground":"#4c566a","charts.blue":"#81a1c1","charts.foreground":"#d8dee9","charts.green":"#a3be8c","charts.lines":"#88c0d0","charts.orange":"#d08770","charts.purple":"#b48ead","charts.red":"#bf616a","charts.yellow":"#ebcb8b","debugConsole.errorForeground":"#bf616a","debugConsole.infoForeground":"#88c0d0","debugConsole.sourceForeground":"#616e88","debugConsole.warningForeground":"#ebcb8b","debugConsoleInputIcon.foreground":"#81a1c1","debugExceptionWidget.background":"#4c566a","debugExceptionWidget.border":"#2e3440","debugToolBar.background":"#3b4252",descriptionForeground:"#d8dee9e6","diffEditor.insertedTextBackground":"#81a1c133","diffEditor.removedTextBackground":"#bf616a4d","dropdown.background":"#3b4252","dropdown.border":"#3b4252","dropdown.foreground":"#d8dee9","editor.background":"#2e3440","editor.findMatchBackground":"#88c0d066","editor.findMatchHighlightBackground":"#88c0d033","editor.findRangeHighlightBackground":"#88c0d033","editor.focusedStackFrameHighlightBackground":"#5e81ac","editor.foreground":"#d8dee9","editor.hoverHighlightBackground":"#3b4252","editor.inactiveSelectionBackground":"#434c5ecc","editor.inlineValuesBackground":"#4c566a","editor.inlineValuesForeground":"#eceff4","editor.lineHighlightBackground":"#3b4252","editor.lineHighlightBorder":"#3b4252","editor.rangeHighlightBackground":"#434c5e52","editor.selectionBackground":"#434c5ecc","editor.selectionHighlightBackground":"#434c5ecc","editor.stackFrameHighlightBackground":"#5e81ac","editor.wordHighlightBackground":"#81a1c166","editor.wordHighlightStrongBackground":"#81a1c199","editorActiveLineNumber.foreground":"#d8dee9cc","editorBracketHighlight.foreground1":"#8fbcbb","editorBracketHighlight.foreground2":"#88c0d0","editorBracketHighlight.foreground3":"#81a1c1","editorBracketHighlight.foreground4":"#5e81ac","editorBracketHighlight.foreground5":"#8fbcbb","editorBracketHighlight.foreground6":"#88c0d0","editorBracketHighlight.unexpectedBracket.foreground":"#bf616a","editorBracketMatch.background":"#2e344000","editorBracketMatch.border":"#88c0d0","editorCodeLens.foreground":"#4c566a","editorCursor.foreground":"#d8dee9","editorError.border":"#bf616a00","editorError.foreground":"#bf616a","editorGroup.background":"#2e3440","editorGroup.border":"#3b425201","editorGroup.dropBackground":"#3b425299","editorGroupHeader.border":"#3b425200","editorGroupHeader.noTabsBackground":"#2e3440","editorGroupHeader.tabsBackground":"#2e3440","editorGroupHeader.tabsBorder":"#3b425200","editorGutter.addedBackground":"#a3be8c","editorGutter.background":"#2e3440","editorGutter.deletedBackground":"#bf616a","editorGutter.modifiedBackground":"#ebcb8b","editorHint.border":"#ebcb8b00","editorHint.foreground":"#ebcb8b","editorHoverWidget.background":"#3b4252","editorHoverWidget.border":"#3b4252","editorIndentGuide.activeBackground":"#4c566a","editorIndentGuide.background":"#434c5eb3","editorInlayHint.background":"#434c5e","editorInlayHint.foreground":"#d8dee9","editorLineNumber.activeForeground":"#d8dee9","editorLineNumber.foreground":"#4c566a","editorLink.activeForeground":"#88c0d0","editorMarkerNavigation.background":"#5e81acc0","editorMarkerNavigationError.background":"#bf616ac0","editorMarkerNavigationWarning.background":"#ebcb8bc0","editorOverviewRuler.addedForeground":"#a3be8c","editorOverviewRuler.border":"#3b4252","editorOverviewRuler.currentContentForeground":"#3b4252","editorOverviewRuler.deletedForeground":"#bf616a","editorOverviewRuler.errorForeground":"#bf616a","editorOverviewRuler.findMatchForeground":"#88c0d066","editorOverviewRuler.incomingContentForeground":"#3b4252","editorOverviewRuler.infoForeground":"#81a1c1","editorOverviewRuler.modifiedForeground":"#ebcb8b","editorOverviewRuler.rangeHighlightForeground":"#88c0d066","editorOverviewRuler.selectionHighlightForeground":"#88c0d066","editorOverviewRuler.warningForeground":"#ebcb8b","editorOverviewRuler.wordHighlightForeground":"#88c0d066","editorOverviewRuler.wordHighlightStrongForeground":"#88c0d066","editorRuler.foreground":"#434c5e","editorSuggestWidget.background":"#2e3440","editorSuggestWidget.border":"#3b4252","editorSuggestWidget.focusHighlightForeground":"#88c0d0","editorSuggestWidget.foreground":"#d8dee9","editorSuggestWidget.highlightForeground":"#88c0d0","editorSuggestWidget.selectedBackground":"#434c5e","editorSuggestWidget.selectedForeground":"#d8dee9","editorWarning.border":"#ebcb8b00","editorWarning.foreground":"#ebcb8b","editorWhitespace.foreground":"#4c566ab3","editorWidget.background":"#2e3440","editorWidget.border":"#3b4252",errorForeground:"#bf616a","extensionButton.prominentBackground":"#434c5e","extensionButton.prominentForeground":"#d8dee9","extensionButton.prominentHoverBackground":"#4c566a",focusBorder:"#3b4252",foreground:"#d8dee9","gitDecoration.conflictingResourceForeground":"#5e81ac","gitDecoration.deletedResourceForeground":"#bf616a","gitDecoration.ignoredResourceForeground":"#d8dee966","gitDecoration.modifiedResourceForeground":"#ebcb8b","gitDecoration.stageDeletedResourceForeground":"#bf616a","gitDecoration.stageModifiedResourceForeground":"#ebcb8b","gitDecoration.submoduleResourceForeground":"#8fbcbb","gitDecoration.untrackedResourceForeground":"#a3be8c","input.background":"#3b4252","input.border":"#3b4252","input.foreground":"#d8dee9","input.placeholderForeground":"#d8dee999","inputOption.activeBackground":"#5e81ac","inputOption.activeBorder":"#5e81ac","inputOption.activeForeground":"#eceff4","inputValidation.errorBackground":"#bf616a","inputValidation.errorBorder":"#bf616a","inputValidation.infoBackground":"#81a1c1","inputValidation.infoBorder":"#81a1c1","inputValidation.warningBackground":"#d08770","inputValidation.warningBorder":"#d08770","keybindingLabel.background":"#4c566a","keybindingLabel.border":"#4c566a","keybindingLabel.bottomBorder":"#4c566a","keybindingLabel.foreground":"#d8dee9","list.activeSelectionBackground":"#88c0d0","list.activeSelectionForeground":"#2e3440","list.dropBackground":"#88c0d099","list.errorForeground":"#bf616a","list.focusBackground":"#88c0d099","list.focusForeground":"#d8dee9","list.focusHighlightForeground":"#eceff4","list.highlightForeground":"#88c0d0","list.hoverBackground":"#3b4252","list.hoverForeground":"#eceff4","list.inactiveFocusBackground":"#434c5ecc","list.inactiveSelectionBackground":"#434c5e","list.inactiveSelectionForeground":"#d8dee9","list.warningForeground":"#ebcb8b","merge.border":"#3b425200","merge.currentContentBackground":"#81a1c14d","merge.currentHeaderBackground":"#81a1c166","merge.incomingContentBackground":"#8fbcbb4d","merge.incomingHeaderBackground":"#8fbcbb66","minimap.background":"#2e3440","minimap.errorHighlight":"#bf616acc","minimap.findMatchHighlight":"#88c0d0","minimap.selectionHighlight":"#88c0d0cc","minimap.warningHighlight":"#ebcb8bcc","minimapGutter.addedBackground":"#a3be8c","minimapGutter.deletedBackground":"#bf616a","minimapGutter.modifiedBackground":"#ebcb8b","minimapSlider.activeBackground":"#434c5eaa","minimapSlider.background":"#434c5e99","minimapSlider.hoverBackground":"#434c5eaa","notification.background":"#3b4252","notification.buttonBackground":"#434c5e","notification.buttonForeground":"#d8dee9","notification.buttonHoverBackground":"#4c566a","notification.errorBackground":"#bf616a","notification.errorForeground":"#2e3440","notification.foreground":"#d8dee9","notification.infoBackground":"#88c0d0","notification.infoForeground":"#2e3440","notification.warningBackground":"#ebcb8b","notification.warningForeground":"#2e3440","notificationCenter.border":"#3b425200","notificationCenterHeader.background":"#2e3440","notificationCenterHeader.foreground":"#88c0d0","notificationLink.foreground":"#88c0d0","notificationToast.border":"#3b425200","notifications.background":"#3b4252","notifications.border":"#2e3440","notifications.foreground":"#d8dee9","panel.background":"#2e3440","panel.border":"#3b4252","panelTitle.activeBorder":"#88c0d000","panelTitle.activeForeground":"#88c0d0","panelTitle.inactiveForeground":"#d8dee9","peekView.border":"#4c566a","peekViewEditor.background":"#2e3440","peekViewEditor.matchHighlightBackground":"#88c0d04d","peekViewEditorGutter.background":"#2e3440","peekViewResult.background":"#2e3440","peekViewResult.fileForeground":"#88c0d0","peekViewResult.lineForeground":"#d8dee966","peekViewResult.matchHighlightBackground":"#88c0d0cc","peekViewResult.selectionBackground":"#434c5e","peekViewResult.selectionForeground":"#d8dee9","peekViewTitle.background":"#3b4252","peekViewTitleDescription.foreground":"#d8dee9","peekViewTitleLabel.foreground":"#88c0d0","pickerGroup.border":"#3b4252","pickerGroup.foreground":"#88c0d0","progressBar.background":"#88c0d0","quickInputList.focusBackground":"#88c0d0","quickInputList.focusForeground":"#2e3440","sash.hoverBorder":"#88c0d0","scrollbar.shadow":"#00000066","scrollbarSlider.activeBackground":"#434c5eaa","scrollbarSlider.background":"#434c5e99","scrollbarSlider.hoverBackground":"#434c5eaa","selection.background":"#88c0d099","sideBar.background":"#2e3440","sideBar.border":"#3b4252","sideBar.foreground":"#d8dee9","sideBarSectionHeader.background":"#3b4252","sideBarSectionHeader.foreground":"#d8dee9","sideBarTitle.foreground":"#d8dee9","statusBar.background":"#3b4252","statusBar.border":"#3b425200","statusBar.debuggingBackground":"#5e81ac","statusBar.debuggingForeground":"#d8dee9","statusBar.foreground":"#d8dee9","statusBar.noFolderBackground":"#3b4252","statusBar.noFolderForeground":"#d8dee9","statusBarItem.activeBackground":"#4c566a","statusBarItem.errorBackground":"#3b4252","statusBarItem.errorForeground":"#bf616a","statusBarItem.hoverBackground":"#434c5e","statusBarItem.prominentBackground":"#3b4252","statusBarItem.prominentHoverBackground":"#434c5e","statusBarItem.warningBackground":"#ebcb8b","statusBarItem.warningForeground":"#2e3440","tab.activeBackground":"#3b4252","tab.activeBorder":"#88c0d000","tab.activeBorderTop":"#88c0d000","tab.activeForeground":"#d8dee9","tab.border":"#3b425200","tab.hoverBackground":"#3b4252cc","tab.hoverBorder":"#88c0d000","tab.inactiveBackground":"#2e3440","tab.inactiveForeground":"#d8dee966","tab.lastPinnedBorder":"#4c566a","tab.unfocusedActiveBorder":"#88c0d000","tab.unfocusedActiveBorderTop":"#88c0d000","tab.unfocusedActiveForeground":"#d8dee999","tab.unfocusedHoverBackground":"#3b4252b3","tab.unfocusedHoverBorder":"#88c0d000","tab.unfocusedInactiveForeground":"#d8dee966","terminal.ansiBlack":"#3b4252","terminal.ansiBlue":"#81a1c1","terminal.ansiBrightBlack":"#4c566a","terminal.ansiBrightBlue":"#81a1c1","terminal.ansiBrightCyan":"#8fbcbb","terminal.ansiBrightGreen":"#a3be8c","terminal.ansiBrightMagenta":"#b48ead","terminal.ansiBrightRed":"#bf616a","terminal.ansiBrightWhite":"#eceff4","terminal.ansiBrightYellow":"#ebcb8b","terminal.ansiCyan":"#88c0d0","terminal.ansiGreen":"#a3be8c","terminal.ansiMagenta":"#b48ead","terminal.ansiRed":"#bf616a","terminal.ansiWhite":"#e5e9f0","terminal.ansiYellow":"#ebcb8b","terminal.background":"#2e3440","terminal.foreground":"#d8dee9","terminal.tab.activeBorder":"#88c0d0","textBlockQuote.background":"#3b4252","textBlockQuote.border":"#81a1c1","textCodeBlock.background":"#4c566a","textLink.activeForeground":"#88c0d0","textLink.foreground":"#88c0d0","textPreformat.foreground":"#8fbcbb","textSeparator.foreground":"#eceff4","titleBar.activeBackground":"#2e3440","titleBar.activeForeground":"#d8dee9","titleBar.border":"#2e344000","titleBar.inactiveBackground":"#2e3440","titleBar.inactiveForeground":"#d8dee966","tree.indentGuidesStroke":"#616e88","walkThrough.embeddedEditorBackground":"#2e3440","welcomePage.buttonBackground":"#434c5e","welcomePage.buttonHoverBackground":"#4c566a","widget.shadow":"#00000066"},displayName:"Nord",name:"nord",semanticHighlighting:!0,tokenColors:[{settings:{background:"#2e3440ff",foreground:"#d8dee9ff"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"comment",settings:{foreground:"#616E88"}},{scope:"constant.character",settings:{foreground:"#EBCB8B"}},{scope:"constant.character.escape",settings:{foreground:"#EBCB8B"}},{scope:"constant.language",settings:{foreground:"#81A1C1"}},{scope:"constant.numeric",settings:{foreground:"#B48EAD"}},{scope:"constant.regexp",settings:{foreground:"#EBCB8B"}},{scope:["entity.name.class","entity.name.type.class"],settings:{foreground:"#8FBCBB"}},{scope:"entity.name.function",settings:{foreground:"#88C0D0"}},{scope:"entity.name.tag",settings:{foreground:"#81A1C1"}},{scope:"entity.other.attribute-name",settings:{foreground:"#8FBCBB"}},{scope:"entity.other.inherited-class",settings:{fontStyle:"bold",foreground:"#8FBCBB"}},{scope:"invalid.deprecated",settings:{background:"#EBCB8B",foreground:"#D8DEE9"}},{scope:"invalid.illegal",settings:{background:"#BF616A",foreground:"#D8DEE9"}},{scope:"keyword",settings:{foreground:"#81A1C1"}},{scope:"keyword.operator",settings:{foreground:"#81A1C1"}},{scope:"keyword.other.new",settings:{foreground:"#81A1C1"}},{scope:"markup.bold",settings:{fontStyle:"bold"}},{scope:"markup.changed",settings:{foreground:"#EBCB8B"}},{scope:"markup.deleted",settings:{foreground:"#BF616A"}},{scope:"markup.inserted",settings:{foreground:"#A3BE8C"}},{scope:"meta.preprocessor",settings:{foreground:"#5E81AC"}},{scope:"punctuation",settings:{foreground:"#ECEFF4"}},{scope:["punctuation.definition.method-parameters","punctuation.definition.function-parameters","punctuation.definition.parameters"],settings:{foreground:"#ECEFF4"}},{scope:"punctuation.definition.tag",settings:{foreground:"#81A1C1"}},{scope:["punctuation.definition.comment","punctuation.end.definition.comment","punctuation.start.definition.comment"],settings:{foreground:"#616E88"}},{scope:"punctuation.section",settings:{foreground:"#ECEFF4"}},{scope:["punctuation.section.embedded.begin","punctuation.section.embedded.end"],settings:{foreground:"#81A1C1"}},{scope:"punctuation.terminator",settings:{foreground:"#81A1C1"}},{scope:"punctuation.definition.variable",settings:{foreground:"#81A1C1"}},{scope:"storage",settings:{foreground:"#81A1C1"}},{scope:"string",settings:{foreground:"#A3BE8C"}},{scope:"string.regexp",settings:{foreground:"#EBCB8B"}},{scope:"support.class",settings:{foreground:"#8FBCBB"}},{scope:"support.constant",settings:{foreground:"#81A1C1"}},{scope:"support.function",settings:{foreground:"#88C0D0"}},{scope:"support.function.construct",settings:{foreground:"#81A1C1"}},{scope:"support.type",settings:{foreground:"#8FBCBB"}},{scope:"support.type.exception",settings:{foreground:"#8FBCBB"}},{scope:"token.debug-token",settings:{foreground:"#b48ead"}},{scope:"token.error-token",settings:{foreground:"#bf616a"}},{scope:"token.info-token",settings:{foreground:"#88c0d0"}},{scope:"token.warn-token",settings:{foreground:"#ebcb8b"}},{scope:"variable.other",settings:{foreground:"#D8DEE9"}},{scope:"variable.language",settings:{foreground:"#81A1C1"}},{scope:"variable.parameter",settings:{foreground:"#D8DEE9"}},{scope:"punctuation.separator.pointer-access.c",settings:{foreground:"#81A1C1"}},{scope:["source.c meta.preprocessor.include","source.c string.quoted.other.lt-gt.include"],settings:{foreground:"#8FBCBB"}},{scope:["source.cpp keyword.control.directive.conditional","source.cpp punctuation.definition.directive","source.c keyword.control.directive.conditional","source.c punctuation.definition.directive"],settings:{fontStyle:"bold",foreground:"#5E81AC"}},{scope:"source.css constant.other.color.rgb-value",settings:{foreground:"#B48EAD"}},{scope:"source.css meta.property-value",settings:{foreground:"#88C0D0"}},{scope:["source.css keyword.control.at-rule.media","source.css keyword.control.at-rule.media punctuation.definition.keyword"],settings:{foreground:"#D08770"}},{scope:"source.css punctuation.definition.keyword",settings:{foreground:"#81A1C1"}},{scope:"source.css support.type.property-name",settings:{foreground:"#D8DEE9"}},{scope:"source.diff meta.diff.range.context",settings:{foreground:"#8FBCBB"}},{scope:"source.diff meta.diff.header.from-file",settings:{foreground:"#8FBCBB"}},{scope:"source.diff punctuation.definition.from-file",settings:{foreground:"#8FBCBB"}},{scope:"source.diff punctuation.definition.range",settings:{foreground:"#8FBCBB"}},{scope:"source.diff punctuation.definition.separator",settings:{foreground:"#81A1C1"}},{scope:"entity.name.type.module.elixir",settings:{foreground:"#8FBCBB"}},{scope:"variable.other.readwrite.module.elixir",settings:{fontStyle:"bold",foreground:"#D8DEE9"}},{scope:"constant.other.symbol.elixir",settings:{fontStyle:"bold",foreground:"#D8DEE9"}},{scope:"variable.other.constant.elixir",settings:{foreground:"#8FBCBB"}},{scope:"source.go constant.other.placeholder.go",settings:{foreground:"#EBCB8B"}},{scope:"source.java comment.block.documentation.javadoc punctuation.definition.entity.html",settings:{foreground:"#81A1C1"}},{scope:"source.java constant.other",settings:{foreground:"#D8DEE9"}},{scope:"source.java keyword.other.documentation",settings:{foreground:"#8FBCBB"}},{scope:"source.java keyword.other.documentation.author.javadoc",settings:{foreground:"#8FBCBB"}},{scope:["source.java keyword.other.documentation.directive","source.java keyword.other.documentation.custom"],settings:{foreground:"#8FBCBB"}},{scope:"source.java keyword.other.documentation.see.javadoc",settings:{foreground:"#8FBCBB"}},{scope:"source.java meta.method-call meta.method",settings:{foreground:"#88C0D0"}},{scope:["source.java meta.tag.template.link.javadoc","source.java string.other.link.title.javadoc"],settings:{foreground:"#8FBCBB"}},{scope:"source.java meta.tag.template.value.javadoc",settings:{foreground:"#88C0D0"}},{scope:"source.java punctuation.definition.keyword.javadoc",settings:{foreground:"#8FBCBB"}},{scope:["source.java punctuation.definition.tag.begin.javadoc","source.java punctuation.definition.tag.end.javadoc"],settings:{foreground:"#616E88"}},{scope:"source.java storage.modifier.import",settings:{foreground:"#8FBCBB"}},{scope:"source.java storage.modifier.package",settings:{foreground:"#8FBCBB"}},{scope:"source.java storage.type",settings:{foreground:"#8FBCBB"}},{scope:"source.java storage.type.annotation",settings:{foreground:"#D08770"}},{scope:"source.java storage.type.generic",settings:{foreground:"#8FBCBB"}},{scope:"source.java storage.type.primitive",settings:{foreground:"#81A1C1"}},{scope:["source.js punctuation.decorator","source.js meta.decorator variable.other.readwrite","source.js meta.decorator entity.name.function"],settings:{foreground:"#D08770"}},{scope:"source.js meta.object-literal.key",settings:{foreground:"#88C0D0"}},{scope:"source.js storage.type.class.jsdoc",settings:{foreground:"#8FBCBB"}},{scope:["source.js string.quoted.template punctuation.quasi.element.begin","source.js string.quoted.template punctuation.quasi.element.end","source.js string.template punctuation.definition.template-expression"],settings:{foreground:"#81A1C1"}},{scope:"source.js string.quoted.template meta.method-call.with-arguments",settings:{foreground:"#ECEFF4"}},{scope:["source.js string.template meta.template.expression support.variable.property","source.js string.template meta.template.expression variable.other.object"],settings:{foreground:"#D8DEE9"}},{scope:"source.js support.type.primitive",settings:{foreground:"#81A1C1"}},{scope:"source.js variable.other.object",settings:{foreground:"#D8DEE9"}},{scope:"source.js variable.other.readwrite.alias",settings:{foreground:"#8FBCBB"}},{scope:["source.js meta.embedded.line meta.brace.square","source.js meta.embedded.line meta.brace.round","source.js string.quoted.template meta.brace.square","source.js string.quoted.template meta.brace.round"],settings:{foreground:"#ECEFF4"}},{scope:"text.html.basic constant.character.entity.html",settings:{foreground:"#EBCB8B"}},{scope:"text.html.basic constant.other.inline-data",settings:{fontStyle:"italic",foreground:"#D08770"}},{scope:"text.html.basic meta.tag.sgml.doctype",settings:{foreground:"#5E81AC"}},{scope:"text.html.basic punctuation.definition.entity",settings:{foreground:"#81A1C1"}},{scope:"source.properties entity.name.section.group-title.ini",settings:{foreground:"#88C0D0"}},{scope:"source.properties punctuation.separator.key-value.ini",settings:{foreground:"#81A1C1"}},{scope:["text.html.markdown markup.fenced_code.block","text.html.markdown markup.fenced_code.block punctuation.definition"],settings:{foreground:"#8FBCBB"}},{scope:"markup.heading",settings:{foreground:"#88C0D0"}},{scope:["text.html.markdown markup.inline.raw","text.html.markdown markup.inline.raw punctuation.definition.raw"],settings:{foreground:"#8FBCBB"}},{scope:"text.html.markdown markup.italic",settings:{fontStyle:"italic"}},{scope:"text.html.markdown markup.underline.link",settings:{fontStyle:"underline"}},{scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#81A1C1"}},{scope:"text.html.markdown beginning.punctuation.definition.quote",settings:{foreground:"#8FBCBB"}},{scope:"text.html.markdown markup.quote",settings:{foreground:"#616E88"}},{scope:"text.html.markdown constant.character.math.tex",settings:{foreground:"#81A1C1"}},{scope:["text.html.markdown punctuation.definition.math.begin","text.html.markdown punctuation.definition.math.end"],settings:{foreground:"#5E81AC"}},{scope:"text.html.markdown punctuation.definition.function.math.tex",settings:{foreground:"#88C0D0"}},{scope:"text.html.markdown punctuation.math.operator.latex",settings:{foreground:"#81A1C1"}},{scope:"text.html.markdown punctuation.definition.heading",settings:{foreground:"#81A1C1"}},{scope:["text.html.markdown punctuation.definition.constant","text.html.markdown punctuation.definition.string"],settings:{foreground:"#81A1C1"}},{scope:["text.html.markdown constant.other.reference.link","text.html.markdown string.other.link.description","text.html.markdown string.other.link.title"],settings:{foreground:"#88C0D0"}},{scope:"source.perl punctuation.definition.variable",settings:{foreground:"#D8DEE9"}},{scope:["source.php meta.function-call","source.php meta.function-call.object"],settings:{foreground:"#88C0D0"}},{scope:["source.python entity.name.function.decorator","source.python meta.function.decorator support.type"],settings:{foreground:"#D08770"}},{scope:"source.python meta.function-call.generic",settings:{foreground:"#88C0D0"}},{scope:"source.python support.type",settings:{foreground:"#88C0D0"}},{scope:["source.python variable.parameter.function.language"],settings:{foreground:"#D8DEE9"}},{scope:["source.python meta.function.parameters variable.parameter.function.language.special.self"],settings:{foreground:"#81A1C1"}},{scope:"source.rust entity.name.type",settings:{foreground:"#8FBCBB"}},{scope:"source.rust meta.macro entity.name.function",settings:{fontStyle:"bold",foreground:"#88C0D0"}},{scope:["source.rust meta.attribute","source.rust meta.attribute punctuation","source.rust meta.attribute keyword.operator"],settings:{foreground:"#5E81AC"}},{scope:"source.rust entity.name.type.trait",settings:{fontStyle:"bold"}},{scope:"source.rust punctuation.definition.interpolation",settings:{foreground:"#EBCB8B"}},{scope:["source.css.scss punctuation.definition.interpolation.begin.bracket.curly","source.css.scss punctuation.definition.interpolation.end.bracket.curly"],settings:{foreground:"#81A1C1"}},{scope:"source.css.scss variable.interpolation",settings:{fontStyle:"italic",foreground:"#D8DEE9"}},{scope:["source.ts punctuation.decorator","source.ts meta.decorator variable.other.readwrite","source.ts meta.decorator entity.name.function","source.tsx punctuation.decorator","source.tsx meta.decorator variable.other.readwrite","source.tsx meta.decorator entity.name.function"],settings:{foreground:"#D08770"}},{scope:["source.ts meta.object-literal.key","source.tsx meta.object-literal.key"],settings:{foreground:"#D8DEE9"}},{scope:["source.ts meta.object-literal.key entity.name.function","source.tsx meta.object-literal.key entity.name.function"],settings:{foreground:"#88C0D0"}},{scope:["source.ts support.class","source.ts support.type","source.ts entity.name.type","source.ts entity.name.class","source.tsx support.class","source.tsx support.type","source.tsx entity.name.type","source.tsx entity.name.class"],settings:{foreground:"#8FBCBB"}},{scope:["source.ts support.constant.math","source.ts support.constant.dom","source.ts support.constant.json","source.tsx support.constant.math","source.tsx support.constant.dom","source.tsx support.constant.json"],settings:{foreground:"#8FBCBB"}},{scope:["source.ts support.variable","source.tsx support.variable"],settings:{foreground:"#D8DEE9"}},{scope:["source.ts meta.embedded.line meta.brace.square","source.ts meta.embedded.line meta.brace.round","source.tsx meta.embedded.line meta.brace.square","source.tsx meta.embedded.line meta.brace.round"],settings:{foreground:"#ECEFF4"}},{scope:"text.xml entity.name.tag.namespace",settings:{foreground:"#8FBCBB"}},{scope:"text.xml keyword.other.doctype",settings:{foreground:"#5E81AC"}},{scope:"text.xml meta.tag.preprocessor entity.name.tag",settings:{foreground:"#5E81AC"}},{scope:["text.xml string.unquoted.cdata","text.xml string.unquoted.cdata punctuation.definition.string"],settings:{fontStyle:"italic",foreground:"#D08770"}},{scope:"source.yaml entity.name.tag",settings:{foreground:"#8FBCBB"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/nushell.CrgTADc5.js b/assets/chunks/nushell.CrgTADc5.js new file mode 100644 index 000000000..d1024c727 --- /dev/null +++ b/assets/chunks/nushell.CrgTADc5.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"nushell",name:"nushell",patterns:[{include:"#define-variable"},{include:"#define-alias"},{include:"#function"},{include:"#extern"},{include:"#module"},{include:"#use-module"},{include:"#expression"},{include:"#comment"}],repository:{binary:{begin:"\\b(0x)(\\[)",beginCaptures:{1:{name:"constant.numeric.nushell"},2:{name:"meta.brace.square.begin.nushell"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.begin.nushell"}},name:"constant.binary.nushell",patterns:[{match:"[0-9a-fA-F]{2}",name:"constant.numeric.nushell"}]},"braced-expression":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.nushell"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.nushell"}},name:"meta.expression.braced.nushell",patterns:[{begin:"(?<=\\{)\\s*\\|",end:"\\|",name:"meta.closure.parameters.nushell",patterns:[{include:"#function-parameter"}]},{captures:{1:{name:"variable.other.nushell"},2:{name:"keyword.control.nushell"}},match:"(\\w+)\\s*(:)\\s*"},{captures:{1:{name:"variable.other.nushell"},2:{name:"variable.other.nushell",patterns:[{include:"#paren-expression"}]},3:{name:"keyword.control.nushell"}},match:'(\\$"((?:[^"\\\\]|\\\\.)*)")\\s*(:)\\s*',name:"meta.record-entry.nushell"},{captures:{1:{name:"variable.other.nushell"},2:{name:"keyword.control.nushell"}},match:'("(?:[^"\\\\]|\\\\.)*")\\s*(:)\\s*',name:"meta.record-entry.nushell"},{captures:{1:{name:"variable.other.nushell"},2:{name:"variable.other.nushell",patterns:[{include:"#paren-expression"}]},3:{name:"keyword.control.nushell"}},match:"(\\$'([^']*)')\\s*(:)\\s*",name:"meta.record-entry.nushell"},{captures:{1:{name:"variable.other.nushell"},2:{name:"keyword.control.nushell"}},match:"('[^']*')\\s*(:)\\s*",name:"meta.record-entry.nushell"},{include:"#spread"},{include:"source.nushell"}]},command:{begin:`(?<!\\w)(?:(\\^)|(?![0-9]|\\$))([\\w.!]+(?:(?: (?!-)[\\w\\-.!]+(?:(?= |\\))|$)|[\\w\\-.!]+))*|(?<=\\^)\\$?(?:"[^"]+"|'[^']+'))`,beginCaptures:{1:{name:"keyword.operator.nushell"},2:{patterns:[{include:"#control-keywords"},{captures:{0:{name:"keyword.other.builtin.nushell"}},match:"(?:ansi|char) \\w+"},{captures:{1:{name:"keyword.other.builtin.nushell"},2:{patterns:[{include:"#value"}]}},comment:"Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)",match:"(a(?:l(?:ias|l)|n(?:si(?: (?:gradient|link|strip))?|y)|ppend|st)|b(?:g|its(?: (?:and|not|or|ro(?:l|r)|sh(?:l|r)|xor))?|reak|ytes(?: (?:a(?:dd|t)|build|collect|ends-with|index-of|length|re(?:move|place|verse)|starts-with))?)|c(?:al|d|har|l(?:ear|ipboard (?:copy|paste))|o(?:l(?:lect|umns)|m(?:mandline(?: (?:edit|get-cursor|set-cursor))?|p(?:act|lete))|n(?:fig(?: (?:env|nu|reset))?|st|tinue))|p|ustom-value (?:generate(?:2)?|update(?:-arg)?))|d(?:ate(?: (?:format|humanize|list-timezone|now|to-(?:record|t(?:able|imezone))))?|e(?:bug(?: info)?|code(?: (?:base64|hex))?|f(?:ault)?|scribe|tect columns)|fr(?: (?:a(?:gg(?:-groups)?|ll-(?:false|true)|ppend|rg-(?:m(?:ax|in)|sort|true|unique|where)|s(?:-date(?:time)?)?)|c(?:a(?:che|st)|o(?:l(?:lect|umns)?|n(?:cat(?:-str|enate)|tains)|unt(?:-null)?)|umulative)|d(?:atepart|rop(?:-(?:duplicates|nulls))?|types|ummies)|exp(?:lode|r-not)|f(?:etch|i(?:l(?:l-n(?:an|ull)|ter(?:-with)?)|rst)|latten)|g(?:et(?:-(?:day|hour|m(?:inute|onth)|nanosecond|ordinal|second|week(?:day)?|year))?|roup-by)|i(?:mplode|nto-(?:df|lazy|nu)|s-(?:duplicated|in|n(?:ot-null|ull)|unique))|join|l(?:ast|it|owercase|s)|m(?:ax|e(?:an|dian|lt)|in)|n(?:-unique|ot)|o(?:pen|therwise)|qu(?:antile|ery)|r(?:e(?:name|place(?:-all)?|verse)|olling)|s(?:ample|chema|e(?:lect|t(?:-with-idx)?)|h(?:ape|ift)|lice|ort-by|t(?:d|r(?:-(?:lengths|slice)|ftime))|um(?:mary)?)|t(?:ake|o-(?:a(?:rrow|vro)|csv|jsonl|parquet))|u(?:nique|ppercase)|va(?:lue-counts|r)|w(?:hen|ith-column)))?|o|rop(?: (?:column|nth))?|u)|e(?:ach(?: while)?|cho|moji|n(?:code(?: (?:base64|hex))?|umerate)|rror make|very|x(?:ec|it|p(?:l(?:ain|ore)|ort(?: (?:alias|const|def|extern|module|use)|-env)?)|tern))|f(?:i(?:l(?:e|l|ter)|nd|rst)|latten|mt|or(?:mat(?: (?:d(?:ate|uration)|filesize|pattern))?)?|rom(?: (?:csv|eml|i(?:cs|ni)|json|nuon|ods|p(?:arquet|ng)|ssv|t(?:oml|sv)|url|vcf|x(?:lsx|ml)|y(?:aml|ml)))?)|g(?:e(?:nerate|t)|lob|r(?:id|oup(?:-by)?)|stat)|h(?:ash(?: (?:md5|sha256))?|e(?:aders|lp(?: (?:aliases|commands|e(?:scapes|xterns)|modules|operators))?)|i(?:de(?:-env)?|ghlight|st(?:o(?:gram|ry(?: session)?))?)|ttp(?: (?:delete|get|head|options|p(?:atch|ost|ut)))?)|i(?:f|gnore|n(?:c|put(?: list(?:en)?)?|s(?:ert|pect)|t(?:erleave|o(?: (?:b(?:i(?:nary|ts)|ool)|cell-path|d(?:atetime|uration)|f(?:ilesize|loat)|glob|int|record|s(?:qlite|tring)|value))?))|s-(?:admin|empty|not-empty|terminal)|tems)|j(?:oin|son path|walk)|k(?:eybindings(?: (?:default|list(?:en)?))?|ill)|l(?:a(?:st|zy make)|e(?:ngth|t(?:-env)?)|ines|o(?:ad-env|op)|s)|m(?:at(?:ch|h(?: (?:a(?:bs|rc(?:cos(?:h)?|sin(?:h)?|tan(?:h)?)|vg)|c(?:eil|os(?:h)?)|exp|floor|l(?:n|og)|m(?:ax|edian|in|ode)|product|round|s(?:in(?:h)?|qrt|tddev|um)|tan(?:h)?|variance))?)|e(?:rge|tadata)|k(?:dir|temp)|o(?:dule|ve)|ut|v)|nu-(?:check|example-(?:1|2|3|config)|highlight)|o(?:pen|verlay(?: (?:hide|list|new|use))?)|p(?:a(?:nic|r(?:-each|se)|th(?: (?:basename|dirname|ex(?:ists|pand)|join|parse|relative-to|split|type))?)|eriodic-table|lot|net|ort(?: (?:list|scan))?|r(?:epend|int)|s)|query(?: (?:db|git|json|web|xml))?|r(?:an(?:dom(?: (?:bool|chars|dice|float|int|uuid))?|ge)|e(?:duce|g(?:ex|ist(?:er|ry query))|ject|name|turn|verse)|m|o(?:ll(?: (?:down|left|right|up))?|tate)|un-external)|s(?:ave|c(?:hema|ope(?: (?:aliases|commands|e(?:ngine-stats|xterns)|modules|variables))?)|e(?:lect|q(?: (?:char|date))?)|huffle|kip(?: (?:until|while))?|leep|o(?:rt(?:-by)?|urce(?:-env)?)|plit(?: (?:c(?:hars|olumn)|list|row|words)|-by)?|t(?:art|or(?: (?:create|delete|export|i(?:mport|nsert)|open|reset|update))?|r(?: (?:c(?:a(?:mel-case|pitalize)|ontains)|d(?:istance|owncase)|e(?:nds-with|scape-glob|xpand)|index-of|join|kebab-case|length|pascal-case|re(?:place|verse)|s(?:creaming-snake-case|imilarity|nake-case|ta(?:rts-with|ts)|ubstring)|t(?:itle-case|rim)|upcase)|eam_example(?: (?:collect-external|s(?:eq|um)))?)?)|ys)|t(?:a(?:ble|ke(?: (?:until|while))?)|e(?:e|rm size)|imeit|o(?: (?:csv|html|json|md|nuon|png|qr|t(?:ext|oml|sv)|xml|yaml)|uch)?|r(?:anspose|y)|utor)|u(?:limit|ni(?:q(?:-by)?|ts)|p(?:date(?: cells)?|sert)|rl(?: (?:build-query|decode|encode|join|parse))?|se)|v(?:alues|ersion|iew(?: (?:files|s(?:ource|pan)))?)|w(?:atch|h(?:ere|i(?:ch|le)|oami)|i(?:ndow|th-env)|rap)|xyplot|zip)(?![\\w-])( (.*))?"},{captures:{1:{patterns:[{include:"#paren-expression"}]}},match:`(?<=\\^)(?:\\$("[^"]+"|'[^']+')|"[^"]+"|'[^']+')`,name:"entity.name.type.external.nushell"},{captures:{1:{name:"entity.name.type.external.nushell"},2:{patterns:[{include:"#value"}]}},match:"([\\w.]+(?:-[\\w.!]+)*)(?: (.*))?"},{include:"#value"}]}},end:"(?=\\||\\)|\\}|;)|$",name:"meta.command.nushell",patterns:[{include:"#parameters"},{include:"#spread"},{include:"#value"}]},comment:{match:"(#.*)$",name:"comment.nushell"},"constant-keywords":{match:"\\b(?:true|false|null)\\b",name:"constant.language.nushell"},"constant-value":{patterns:[{include:"#constant-keywords"},{include:"#datetime"},{include:"#numbers"},{include:"#numbers-hexa"},{include:"#binary"}]},"control-keywords":{comment:"Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)",match:"(?<![0-9a-zA-Z_\\-.\\/:\\\\])(?:break|continue|else(?: if)?|for|if|loop|mut|return|try|while)(?![0-9a-zA-Z_\\-.\\/:\\\\])",name:"keyword.control.nushell"},datetime:{match:"\\b\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:\\+\\d{2}:?\\d{2}|Z)?)?\\b",name:"constant.numeric.nushell"},"define-alias":{captures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.type.nushell"},3:{patterns:[{include:"#operators"}]}},match:"((?:export )?alias)\\s+([\\w\\-!]+)\\s*(=)"},"define-variable":{captures:{1:{name:"keyword.other.nushell"},2:{name:"variable.other.nushell"},3:{patterns:[{include:"#operators"}]}},match:"(let|mut|(?:export\\s+)?const)\\s+(\\w+)\\s+(=)"},expression:{patterns:[{include:"#pre-command"},{include:"#for-loop"},{include:"#operators"},{match:"\\|",name:"keyword.control.nushell"},{include:"#control-keywords"},{include:"#constant-value"},{include:"#command"},{include:"#value"}]},extern:{begin:'((?:export\\s+)?extern)\\s+([\\w\\-]+|"[\\w\\- ]+")',beginCaptures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.type.nushell"}},end:"(?<=\\])",endCaptures:{0:{name:"punctuation.definition.function.end.nushell"}},patterns:[{include:"#function-parameters"}]},"for-loop":{begin:"(for)\\s+(\\$?\\w+)\\s+(in)\\s+(.+)\\s*(\\{)",beginCaptures:{1:{name:"keyword.other.nushell"},2:{name:"variable.other.nushell"},3:{name:"keyword.other.nushell"},4:{patterns:[{include:"#value"}]},5:{name:"punctuation.section.block.begin.bracket.curly.nushell"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.nushell"}},name:"meta.for-loop.nushell",patterns:[{include:"source.nushell"}]},function:{begin:"((?:export\\s+)?def(?:\\s+--\\w+)*)\\s+([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+'|`[\\w\\- ]+`)(\\s+--\\w+)*",beginCaptures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.type.nushell"},3:{name:"entity.name.function.nushell"}},end:"(?<=\\})",patterns:[{include:"#function-parameters"},{include:"#function-body"},{include:"#function-inout"}]},"function-body":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.function.begin.nushell"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.function.end.nushell"}},name:"meta.function.body.nushell",patterns:[{include:"source.nushell"}]},"function-inout":{patterns:[{include:"#types"},{match:"->",name:"keyword.operator.nushell"},{include:"#function-multiple-inout"}]},"function-multiple-inout":{begin:"(?<=]\\s*)(:)\\s+(\\[)",beginCaptures:{1:{name:"punctuation.definition.in-out.nushell"},2:{name:"meta.brace.square.begin.nushell"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.end.nushell"}},patterns:[{include:"#types"},{captures:{1:{name:"punctuation.separator.nushell"}},match:"\\s*(,)\\s*"},{captures:{1:{name:"keyword.operator.nushell"}},match:"\\s+(->)\\s+"}]},"function-parameter":{patterns:[{captures:{1:{name:"keyword.control.nushell"}},match:"(-{0,2}|\\.{3})[\\w-]+(?:\\((-[\\w?])\\))?",name:"variable.parameter.nushell"},{begin:"\\??:\\s*",end:"(?=(?:\\s+(?:-{0,2}|\\.{3})[\\w-]+)|(?:\\s*(?:,|\\]|\\||@|=|#|$)))",patterns:[{include:"#types"}]},{begin:`@(?="|')`,end:`(?<="|')`,patterns:[{include:"#string"}]},{begin:"=\\s*",end:"(?=(?:\\s+-{0,2}[\\w-]+)|(?:\\s*(?:,|\\]|\\||#|$)))",name:"default.value.nushell",patterns:[{include:"#value"}]}]},"function-parameters":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.begin.nushell"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.end.nushell"}},name:"meta.function.parameters.nushell",patterns:[{include:"#function-parameter"},{include:"#comment"}]},"internal-variables":{match:"\\$(?:nu|env)\\b",name:"variable.language.nushell"},keyword:{match:"(?:def(?:-env)?)",name:"keyword.other.nushell"},module:{begin:"((?:export\\s+)?module)\\s+([\\w\\-]+)\\s*\\{",beginCaptures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.namespace.nushell"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.module.end.nushell"}},name:"meta.module.nushell",patterns:[{include:"source.nushell"}]},numbers:{match:"(?<![\\w-])[-+]?(?:\\d+|\\d{1,3}(?:_\\d{3})*)(?:\\.\\d*)?(?i:ns|us|ms|sec|min|hr|day|wk|b|kb|mb|gb|tb|pt|eb|zb|kib|mib|gib|tib|pit|eib|zib)?(?:(?![\\w.])|(?=\\.\\.))",name:"constant.numeric.nushell"},"numbers-hexa":{match:"(?<![\\w-])0x[0-9a-fA-F]+(?![\\w.])",name:"constant.numeric.nushell"},operators:{patterns:[{include:"#operators-word"},{include:"#operators-symbols"},{include:"#ranges"}]},"operators-symbols":{match:"(?<= )(?:(?:\\+|\\-|\\*|\\/)=?|\\/\\/|\\*\\*|!=|[<>=]=?|[!=]~|\\+\\+=?)(?= |$)",name:"keyword.control.nushell"},"operators-word":{match:"(?<= |\\()(?:mod|in|not-in|not|and|or|xor|bit-or|bit-and|bit-xor|bit-shl|bit-shr|starts-with|ends-with)(?= |\\)|$)",name:"keyword.control.nushell"},parameters:{captures:{1:{name:"keyword.control.nushell"}},match:"(?<=\\s)(-{1,2})[\\w-]+",name:"variable.parameter.nushell"},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.begin.nushell"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.end.nushell"}},name:"meta.expression.parenthesis.nushell",patterns:[{include:"#expression"}]},"pre-command":{begin:"(\\w+)(=)",beginCaptures:{1:{name:"variable.other.nushell"},2:{patterns:[{include:"#operators"}]}},end:"(?=\\s+)",patterns:[{include:"#value"}]},ranges:{match:"\\.\\.<?",name:"keyword.control.nushell"},spread:{match:"\\.\\.\\.(?=[^\\s\\]}])",name:"keyword.control.nushell"},string:{patterns:[{include:"#string-single-quote"},{include:"#string-backtick"},{include:"#string-double-quote"},{include:"#string-interpolated-double"},{include:"#string-interpolated-single"},{include:"#string-bare"}]},"string-backtick":{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.nushell"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.nushell"}},name:"string.quoted.single.nushell"},"string-bare":{match:`[^$\\[{("',|#\\s|][^\\[\\]{}()"'\\s#,|]*`,name:"string.bare.nushell"},"string-double-quote":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.nushell"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nushell"}},name:"string.quoted.double.nushell",patterns:[{match:"\\w+"},{include:"#string-escape"}]},"string-escape":{match:`\\\\(?:[bfrnt\\\\'"/]|u[0-9a-fA-F]{4})`,name:"constant.character.escape.nushell"},"string-interpolated-double":{begin:'\\$"',beginCaptures:{0:{name:"punctuation.definition.string.begin.nushell"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.nushell"}},name:"string.interpolated.double.nushell",patterns:[{match:"\\\\[()]",name:"constant.character.escape.nushell"},{include:"#string-escape"},{include:"#paren-expression"}]},"string-interpolated-single":{begin:"\\$'",beginCaptures:{0:{name:"punctuation.definition.string.begin.nushell"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.nushell"}},name:"string.interpolated.single.nushell",patterns:[{include:"#paren-expression"}]},"string-single-quote":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.nushell"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.nushell"}},name:"string.quoted.single.nushell"},table:{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.begin.nushell"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.end.nushell"}},name:"meta.table.nushell",patterns:[{include:"#spread"},{include:"#value"},{match:",",name:"punctuation.separator.nushell"}]},types:{patterns:[{begin:"\\b(list)\\s*<",beginCaptures:{1:{name:"entity.name.type.nushell"}},end:">",name:"meta.list.nushell",patterns:[{include:"#types"}]},{begin:"\\b(record)\\s*<",beginCaptures:{1:{name:"entity.name.type.nushell"}},end:">",name:"meta.record.nushell",patterns:[{captures:{1:{name:"variable.parameter.nushell"}},match:`([\\w\\-]+|"[\\w\\- ]+"|'[^']+')\\s*:\\s*`},{include:"#types"}]},{match:"\\b(\\w+)\\b",name:"entity.name.type.nushell"}]},"use-module":{patterns:[{captures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.namespace.nushell"},3:{name:"keyword.other.nushell"}},match:`^\\s*((?:export )?use)\\s+([\\w\\-]+|"[\\w\\- ]+"|'[\\w\\- ]+')(?:\\s+([\\w\\-]+|"[\\w\\- ]+"|'[\\w\\- ]+'|\\*))?\\s*;?$`},{begin:`^\\s*((?:export )?use)\\s+([\\w\\-]+|"[\\w\\- ]+"|'[\\w\\- ]+')\\s*\\[`,beginCaptures:{1:{name:"entity.name.function.nushell"},2:{name:"entity.name.namespace.nushell"}},end:"(\\])\\s*;?\\s*$",endCaptures:{1:{name:"meta.brace.square.end.nushell"}},patterns:[{captures:{1:{name:"keyword.other.nushell"}},match:`([\\w\\-]+|"[\\w\\- ]+"|'[\\w\\- ]+'|\\*),?`},{include:"#comment"}]},{captures:{2:{name:"entity.name.function.nushell"},3:{name:"string.bare.nushell",patterns:[{captures:{1:{name:"entity.name.namespace.nushell"}},match:`([\\w\\- ]+)(?:\\.nu)?(?=$|"|')`}]},4:{name:"keyword.other.nushell"}},match:`(?<path>(?:/|\\\\|~[\\/\\\\]|\\.\\.?[\\/\\\\])?(?:[^\\/\\\\]+[\\/\\\\])*[\\w\\- ]+(?:\\.nu)?){0}^\\s*((?:export )?use)\\s+("\\g<path>"|'\\g<path>\\'|(?!["'])\\g<path>)(?:\\s+([\\w\\-]+|"[\\w\\- ]+"|'[^']+'|\\*))?\\s*;?$`},{begin:`(?<path>(?:/|\\\\|~[\\/\\\\]|\\.\\.?[\\/\\\\])?(?:[^\\/\\\\]+[\\/\\\\])*[\\w\\- ]+(?:\\.nu)?){0}^\\s*((?:export )?use)\\s+("\\g<path>"|'\\g<path>\\'|(?!["'])\\g<path>)\\s+\\[`,beginCaptures:{2:{name:"entity.name.function.nushell"},3:{name:"string.bare.nushell",patterns:[{captures:{1:{name:"entity.name.namespace.nushell"}},match:`([\\w\\- ]+)(?:\\.nu)?(?=$|"|')`}]}},end:"(\\])\\s*;?\\s*$",endCaptures:{1:{name:"meta.brace.square.end.nushell"}},patterns:[{captures:{0:{name:"keyword.other.nushell"}},match:`([\\w\\-]+|"[\\w\\- ]+"|'[\\w\\- ]+'|\\*),?`},{include:"#comment"}]},{captures:{0:{name:"entity.name.function.nushell"}},match:"^\\s*(?:export )?use\\b"}]},value:{patterns:[{include:"#variables"},{include:"#variable-fields"},{include:"#control-keywords"},{include:"#constant-value"},{include:"#table"},{include:"#operators"},{include:"#paren-expression"},{include:"#braced-expression"},{include:"#string"},{include:"#comment"}]},"variable-fields":{match:'(?<=\\)|\\}|\\])(?:\\.(?:[\\w-]+|"[\\w\\- ]+"))+',name:"variable.other.nushell"},variables:{captures:{1:{patterns:[{include:"#internal-variables"},{match:"\\$.+",name:"variable.other.nushell"}]},2:{name:"variable.other.nushell"}},match:'(\\$[a-zA-Z0-9_]+)((?:\\.(?:[\\w-]+|"[\\w\\- ]+"))*)'}},scopeName:"source.nushell",aliases:["nu"]});var n=[e];export{n as default}; diff --git a/assets/chunks/objective-c.DHmGyzbM.js b/assets/chunks/objective-c.DHmGyzbM.js new file mode 100644 index 000000000..b3c6ce552 --- /dev/null +++ b/assets/chunks/objective-c.DHmGyzbM.js @@ -0,0 +1,109 @@ +const e=Object.freeze({displayName:"Objective-C",name:"objective-c",patterns:[{include:"#anonymous_pattern_1"},{include:"#anonymous_pattern_2"},{include:"#anonymous_pattern_3"},{include:"#anonymous_pattern_4"},{include:"#anonymous_pattern_5"},{include:"#apple_foundation_functional_macros"},{include:"#anonymous_pattern_7"},{include:"#anonymous_pattern_8"},{include:"#anonymous_pattern_9"},{include:"#anonymous_pattern_10"},{include:"#anonymous_pattern_11"},{include:"#anonymous_pattern_12"},{include:"#anonymous_pattern_13"},{include:"#anonymous_pattern_14"},{include:"#anonymous_pattern_15"},{include:"#anonymous_pattern_16"},{include:"#anonymous_pattern_17"},{include:"#anonymous_pattern_18"},{include:"#anonymous_pattern_19"},{include:"#anonymous_pattern_20"},{include:"#anonymous_pattern_21"},{include:"#anonymous_pattern_22"},{include:"#anonymous_pattern_23"},{include:"#anonymous_pattern_24"},{include:"#anonymous_pattern_25"},{include:"#anonymous_pattern_26"},{include:"#anonymous_pattern_27"},{include:"#anonymous_pattern_28"},{include:"#anonymous_pattern_29"},{include:"#anonymous_pattern_30"},{include:"#bracketed_content"},{include:"#c_lang"}],repository:{anonymous_pattern_1:{begin:"((@)(interface|protocol))(?!.+;)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*((:)(?:\\s*)([A-Za-z][A-Za-z0-9]*))?(\\s|\\n)?",captures:{1:{name:"storage.type.objc"},2:{name:"punctuation.definition.storage.type.objc"},4:{name:"entity.name.type.objc"},6:{name:"punctuation.definition.entity.other.inherited-class.objc"},7:{name:"entity.other.inherited-class.objc"},8:{name:"meta.divider.objc"},9:{name:"meta.inherited-class.objc"}},contentName:"meta.scope.interface.objc",end:"((@)end)\\b",name:"meta.interface-or-protocol.objc",patterns:[{include:"#interface_innards"}]},anonymous_pattern_10:{captures:{1:{name:"punctuation.definition.keyword.objc"}},match:"(@)(defs|encode)\\b",name:"keyword.other.objc"},anonymous_pattern_11:{match:"\\bid\\b",name:"storage.type.id.objc"},anonymous_pattern_12:{match:"\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\b",name:"storage.type.objc"},anonymous_pattern_13:{captures:{1:{name:"punctuation.definition.storage.type.objc"}},match:"(@)(class|protocol)\\b",name:"storage.type.objc"},anonymous_pattern_14:{begin:"((@)selector)\\s*(\\()",beginCaptures:{1:{name:"storage.type.objc"},2:{name:"punctuation.definition.storage.type.objc"},3:{name:"punctuation.definition.storage.type.objc"}},contentName:"meta.selector.method-name.objc",end:"(\\))",endCaptures:{1:{name:"punctuation.definition.storage.type.objc"}},name:"meta.selector.objc",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objc"}},match:"\\b(?:[a-zA-Z_:][\\w]*)+",name:"support.function.any-method.name-of-parameter.objc"}]},anonymous_pattern_15:{captures:{1:{name:"punctuation.definition.storage.modifier.objc"}},match:"(@)(synchronized|public|package|private|protected)\\b",name:"storage.modifier.objc"},anonymous_pattern_16:{match:"\\b(YES|NO|Nil|nil)\\b",name:"constant.language.objc"},anonymous_pattern_17:{match:"\\bNSApp\\b",name:"support.variable.foundation.objc"},anonymous_pattern_18:{captures:{1:{name:"punctuation.whitespace.support.function.cocoa.leopard.objc"},2:{name:"support.function.cocoa.leopard.objc"}},match:"(\\s*)\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\b"},anonymous_pattern_19:{captures:{1:{name:"punctuation.whitespace.support.function.leading.cocoa.objc"},2:{name:"support.function.cocoa.objc"}},match:"(\\s*)\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\b"},anonymous_pattern_2:{begin:"((@)(implementation))\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?::\\s*([A-Za-z][A-Za-z0-9]*))?",captures:{1:{name:"storage.type.objc"},2:{name:"punctuation.definition.storage.type.objc"},4:{name:"entity.name.type.objc"},5:{name:"entity.other.inherited-class.objc"}},contentName:"meta.scope.implementation.objc",end:"((@)end)\\b",name:"meta.implementation.objc",patterns:[{include:"#implementation_innards"}]},anonymous_pattern_20:{match:"\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\b",name:"support.class.cocoa.leopard.objc"},anonymous_pattern_21:{match:"\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\b",name:"support.class.cocoa.objc"},anonymous_pattern_22:{match:"\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\b",name:"support.type.cocoa.leopard.objc"},anonymous_pattern_23:{match:"\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\b",name:"support.class.quartz.objc"},anonymous_pattern_24:{match:"\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\b",name:"support.type.quartz.objc"},anonymous_pattern_25:{match:"\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\b",name:"support.type.cocoa.objc"},anonymous_pattern_26:{match:"\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\b",name:"support.constant.cocoa.objc"},anonymous_pattern_27:{match:"\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\b",name:"support.constant.notification.cocoa.leopard.objc"},anonymous_pattern_28:{match:"\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\b",name:"support.constant.notification.cocoa.objc"},anonymous_pattern_29:{match:"\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\b",name:"support.constant.cocoa.leopard.objc"},anonymous_pattern_3:{begin:'@"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.objc",patterns:[{include:"#string_escaped_char"},{match:`(?x)% +(\\d+\\$)? +[#0\\- +']* +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +[@] +`,name:"constant.other.placeholder.objc"},{include:"#string_placeholder"}]},anonymous_pattern_30:{match:"\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\b",name:"support.constant.cocoa.objc"},anonymous_pattern_4:{begin:"\\b(id)\\s*(?=<)",beginCaptures:{1:{name:"storage.type.objc"}},end:"(?<=>)",name:"meta.id-with-protocol.objc",patterns:[{include:"#protocol_list"}]},anonymous_pattern_5:{match:"\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\b",name:"keyword.control.macro.objc"},anonymous_pattern_7:{captures:{1:{name:"punctuation.definition.keyword.objc"}},match:"(@)(try|catch|finally|throw)\\b",name:"keyword.control.exception.objc"},anonymous_pattern_8:{captures:{1:{name:"punctuation.definition.keyword.objc"}},match:"(@)(synchronized)\\b",name:"keyword.control.synchronize.objc"},anonymous_pattern_9:{captures:{1:{name:"punctuation.definition.keyword.objc"}},match:"(@)(required|optional)\\b",name:"keyword.control.protocol-specification.objc"},apple_foundation_functional_macros:{begin:"(\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\s)+)?(\\()",beginCaptures:{1:{name:"entity.name.function.preprocessor.apple-foundation.objc"},2:{name:"punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objc"}},name:"meta.preprocessor.macro.callable.apple-foundation.objc",patterns:[{include:"#c_lang"}]},bracketed_content:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.scope.begin.objc"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.scope.end.objc"}},name:"meta.bracketed.objc",patterns:[{begin:"(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)",beginCaptures:{1:{name:"support.function.any-method.objc"},2:{name:"punctuation.separator.arguments.objc"}},end:"(?=\\])",name:"meta.function-call.predicate.objc",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objc"}},match:"\\bargument(Array|s)(:)",name:"support.function.any-method.name-of-parameter.objc"},{captures:{1:{name:"punctuation.separator.arguments.objc"}},match:"\\b\\w+(:)",name:"invalid.illegal.unknown-method.objc"},{begin:'@"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.objc",patterns:[{match:"\\b(AND|OR|NOT|IN)\\b",name:"keyword.operator.logical.predicate.cocoa.objc"},{match:"\\b(ALL|ANY|SOME|NONE)\\b",name:"constant.language.predicate.cocoa.objc"},{match:"\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",name:"constant.language.predicate.cocoa.objc"},{match:"\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",name:"keyword.operator.comparison.predicate.cocoa.objc"},{match:"\\bC(ASEINSENSITIVE|I)\\b",name:"keyword.other.modifier.predicate.cocoa.objc"},{match:"\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",name:"keyword.other.predicate.cocoa.objc"},{match:`\\\\(\\\\|[abefnrtv'"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)`,name:"constant.character.escape.objc"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objc"}]},{include:"#special_variables"},{include:"#c_functions"},{include:"$base"}]},{begin:'(?=\\w)(?<=[\\w\\])"] )(\\w+(?:(:)|(?=\\])))',beginCaptures:{1:{name:"support.function.any-method.objc"},2:{name:"punctuation.separator.arguments.objc"}},end:"(?=\\])",name:"meta.function-call.objc",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objc"}},match:"\\b\\w+(:)",name:"support.function.any-method.name-of-parameter.objc"},{include:"#special_variables"},{include:"#c_functions"},{include:"$base"}]},{include:"#special_variables"},{include:"#c_functions"},{include:"$self"}]},c_functions:{patterns:[{captures:{1:{name:"punctuation.whitespace.support.function.leading.objc"},2:{name:"support.function.C99.objc"}},match:"(\\s*)\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\b"},{captures:{1:{name:"punctuation.whitespace.function-call.leading.objc"},2:{name:"support.function.any-method.objc"},3:{name:"punctuation.definition.parameters.objc"}},match:`(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))? +(\\b +(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ +) +\\s*(\\()`,name:"meta.function-call.objc"}]},c_lang:{patterns:[{include:"#preprocessor-rule-enabled"},{include:"#preprocessor-rule-disabled"},{include:"#preprocessor-rule-conditional"},{include:"#comments"},{include:"#switch_statement"},{match:"\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",name:"keyword.control.objc"},{include:"#storage_types"},{match:"typedef",name:"keyword.other.typedef.objc"},{match:"\\bin\\b",name:"keyword.other.in.objc"},{match:"\\b(const|extern|register|restrict|static|volatile|inline|__block)\\b",name:"storage.modifier.objc"},{match:"\\bk[A-Z]\\w*\\b",name:"constant.other.variable.mac-classic.objc"},{match:"\\bg[A-Z]\\w*\\b",name:"variable.other.readwrite.global.mac-classic.objc"},{match:"\\bs[A-Z]\\w*\\b",name:"variable.other.readwrite.static.mac-classic.objc"},{match:"\\b(NULL|true|false|TRUE|FALSE)\\b",name:"constant.language.objc"},{include:"#operators"},{include:"#numbers"},{include:"#strings"},{include:"#special_variables"},{begin:`(?x) +^\\s* ((\\#)\\s*define) \\s+ +((?<id>[a-zA-Z_$][\\w$]*)) +(?: +(\\() +( +\\s* \\g<id> \\s* +((,) \\s* \\g<id> \\s*)* +(?:\\.\\.\\.)? +) +(\\)) +)?`,beginCaptures:{1:{name:"keyword.control.directive.define.objc"},2:{name:"punctuation.definition.directive.objc"},3:{name:"entity.name.function.preprocessor.objc"},5:{name:"punctuation.definition.parameters.begin.objc"},6:{name:"variable.parameter.preprocessor.objc"},8:{name:"punctuation.separator.parameters.objc"},9:{name:"punctuation.definition.parameters.end.objc"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.macro.objc",patterns:[{include:"#preprocessor-rule-define-line-contents"}]},{begin:"^\\s*((#)\\s*(error|warning))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.diagnostic.$3.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?<!\\\\)(?=\\n)",name:"meta.preprocessor.diagnostic.objc",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.objc",patterns:[{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.single.objc",patterns:[{include:"#line_continuation_character"}]},{begin:`[^'"]`,end:"(?<!\\\\)(?=\\s*\\n)",name:"string.unquoted.single.objc",patterns:[{include:"#line_continuation_character"},{include:"#comments"}]}]},{begin:"^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.$3.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.include.objc",patterns:[{include:"#line_continuation_character"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.include.objc"},{begin:"<",beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.other.lt-gt.include.objc"}]},{include:"#pragma-mark"},{begin:"^\\s*((#)\\s*line)\\b",beginCaptures:{1:{name:"keyword.control.directive.line.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#strings"},{include:"#numbers"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*undef))\\b",beginCaptures:{1:{name:"keyword.control.directive.undef.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objc"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*pragma))\\b",beginCaptures:{1:{name:"keyword.control.directive.pragma.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.pragma.objc",patterns:[{include:"#strings"},{match:"[a-zA-Z_$][\\w\\-$]*",name:"entity.other.attribute-name.pragma.preprocessor.objc"},{include:"#numbers"},{include:"#line_continuation_character"}]},{match:"\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",name:"support.type.sys-types.objc"},{match:"\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",name:"support.type.pthread.objc"},{match:`(?x) \\b +(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t +|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t +|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t +|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t +|uintmax_t|uintmax_t) +\\b`,name:"support.type.stdint.objc"},{match:"\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",name:"support.constant.mac-classic.objc"},{match:`(?x) \\b +(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam +|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr +|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber +|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64 +|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32 +|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr +|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char) +\\b`,name:"support.type.mac-classic.objc"},{match:"\\b([A-Za-z0-9_]+_t)\\b",name:"support.type.posix-reserved.objc"},{include:"#block"},{include:"#parens"},{begin:"(?<!\\w)(?!\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",end:"(?<=\\))",name:"meta.function.objc",patterns:[{include:"#function-innards"}]},{include:"#line_continuation_character"},{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",beginCaptures:{1:{name:"variable.object.objc"},2:{name:"punctuation.definition.begin.bracket.square.objc"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.end.bracket.square.objc"}},name:"meta.bracket.square.access.objc",patterns:[{include:"#function-call-innards"}]},{match:"\\[\\s*\\]",name:"storage.modifier.array.bracket.square.objc"},{match:";",name:"punctuation.terminator.statement.objc"},{match:",",name:"punctuation.separator.delimiter.objc"}],repository:{"access-method":{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",beginCaptures:{1:{name:"variable.object.objc"},2:{name:"punctuation.separator.dot-access.objc"},3:{name:"punctuation.separator.pointer-access.objc"},4:{patterns:[{match:"\\.",name:"punctuation.separator.dot-access.objc"},{match:"->",name:"punctuation.separator.pointer-access.objc"},{match:"[a-zA-Z_][a-zA-Z_0-9]*",name:"variable.object.objc"},{match:".+",name:"everything.else.objc"}]},5:{name:"entity.name.function.member.objc"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.member.objc"}},name:"meta.function-call.member.objc",patterns:[{include:"#function-call-innards"}]},block:{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objc"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objc"}},name:"meta.block.objc",patterns:[{include:"#block_innards"}]}]},block_innards:{patterns:[{include:"#preprocessor-rule-enabled-block"},{include:"#preprocessor-rule-disabled-block"},{include:"#preprocessor-rule-conditional-block"},{include:"#method_access"},{include:"#member_access"},{include:"#c_function_call"},{begin:`(?x) +(?: + (?: + (?=\\s)(?<!else|new|return) + (?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name + ) +) +( + (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name + | + (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\])) +) +\\s*(\\() # opening bracket`,beginCaptures:{1:{name:"variable.other.objc"},2:{name:"punctuation.section.parens.begin.bracket.round.initialization.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.initialization.objc"}},name:"meta.initialization.objc",patterns:[{include:"#function-call-innards"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objc"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objc"}},patterns:[{include:"#block_innards"}]},{include:"#parens-block"},{include:"$base"}]},c_function_call:{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +(?= +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)",name:"meta.function-call.objc",patterns:[{include:"#function-call-innards"}]},case_statement:{begin:"((?<!\\w)case(?!\\w))",beginCaptures:{1:{name:"keyword.control.case.objc"}},end:"(:)",endCaptures:{1:{name:"punctuation.separator.case.objc"}},name:"meta.conditional.case.objc",patterns:[{include:"#conditional_context"}]},comments:{patterns:[{captures:{1:{name:"meta.toc-list.banner.block.objc"}},match:"^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",name:"comment.block.objc"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.objc"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.objc"}},name:"comment.block.objc"},{captures:{1:{name:"meta.toc-list.banner.line.objc"}},match:"^// =(\\s*.*?)\\s*=\\s*$\\n?",name:"comment.line.banner.objc"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.objc"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.objc"}},end:"(?=\\n)",name:"comment.line.double-slash.objc",patterns:[{include:"#line_continuation_character"}]}]}]},conditional_context:{patterns:[{include:"$base"},{include:"#block_innards"}]},default_statement:{begin:"((?<!\\w)default(?!\\w))",beginCaptures:{1:{name:"keyword.control.default.objc"}},end:"(:)",endCaptures:{1:{name:"punctuation.separator.case.default.objc"}},name:"meta.conditional.case.objc",patterns:[{include:"#conditional_context"}]},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",end:"^\\s*#\\s*endif\\b",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},"function-call-innards":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#method_access"},{include:"#member_access"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objc"},2:{name:"punctuation.section.arguments.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.objc"}},patterns:[{include:"#function-call-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objc"}},patterns:[{include:"#function-call-innards"}]},{include:"#block_innards"}]},"function-innards":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#operators"},{include:"#vararg_ellipses"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objc"},2:{name:"punctuation.section.parameters.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.objc"}},name:"meta.function.definition.parameters.objc",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objc"}},patterns:[{include:"#function-innards"}]},{include:"$base"}]},line_continuation_character:{patterns:[{captures:{1:{name:"constant.character.escape.line-continuation.objc"}},match:"(\\\\)\\n"}]},member_access:{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objc"}]},2:{name:"punctuation.separator.dot-access.objc"},3:{name:"punctuation.separator.pointer-access.objc"},4:{patterns:[{include:"#member_access"},{include:"#method_access"},{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objc"}]},2:{name:"punctuation.separator.dot-access.objc"},3:{name:"punctuation.separator.pointer-access.objc"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))"}]},5:{name:"variable.other.member.objc"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\w*\\b(?!\\())"},method_access:{begin:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",beginCaptures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objc"}]},2:{name:"punctuation.separator.dot-access.objc"},3:{name:"punctuation.separator.pointer-access.objc"},4:{patterns:[{include:"#member_access"},{include:"#method_access"},{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objc"}]},2:{name:"punctuation.separator.dot-access.objc"},3:{name:"punctuation.separator.pointer-access.objc"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))"}]},5:{name:"entity.name.function.member.objc"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.objc"}},contentName:"meta.function-call.member.objc",end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.function.member.objc"}},patterns:[{include:"#function-call-innards"}]},numbers:{begin:"(?<!\\w)(?=\\d|\\.\\d)",end:"(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",patterns:[{captures:{1:{name:"keyword.other.unit.hexadecimal.objc"},2:{name:"constant.numeric.hexadecimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},4:{name:"constant.numeric.hexadecimal.objc"},5:{name:"constant.numeric.hexadecimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},6:{name:"punctuation.separator.constant.numeric.objc"},8:{name:"keyword.other.unit.exponent.hexadecimal.objc"},9:{name:"keyword.operator.plus.exponent.hexadecimal.objc"},10:{name:"keyword.operator.minus.exponent.hexadecimal.objc"},11:{name:"constant.numeric.exponent.hexadecimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},12:{name:"keyword.other.unit.suffix.floating-point.objc"}},match:"(\\G0[xX])(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{2:{name:"constant.numeric.decimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},4:{name:"constant.numeric.decimal.point.objc"},5:{name:"constant.numeric.decimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},6:{name:"punctuation.separator.constant.numeric.objc"},8:{name:"keyword.other.unit.exponent.decimal.objc"},9:{name:"keyword.operator.plus.exponent.decimal.objc"},10:{name:"keyword.operator.minus.exponent.decimal.objc"},11:{name:"constant.numeric.exponent.decimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},12:{name:"keyword.other.unit.suffix.floating-point.objc"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9])\\.|\\.(?=[0-9])))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.binary.objc"},2:{name:"constant.numeric.binary.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},4:{name:"keyword.other.unit.suffix.integer.objc"}},match:"(\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.octal.objc"},2:{name:"constant.numeric.octal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},4:{name:"keyword.other.unit.suffix.integer.objc"}},match:"(\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.hexadecimal.objc"},2:{name:"constant.numeric.hexadecimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},5:{name:"keyword.other.unit.exponent.hexadecimal.objc"},6:{name:"keyword.operator.plus.exponent.hexadecimal.objc"},7:{name:"keyword.operator.minus.exponent.hexadecimal.objc"},8:{name:"constant.numeric.exponent.hexadecimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},9:{name:"keyword.other.unit.suffix.integer.objc"}},match:"(\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{2:{name:"constant.numeric.decimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},3:{name:"punctuation.separator.constant.numeric.objc"},5:{name:"keyword.other.unit.exponent.decimal.objc"},6:{name:"keyword.operator.plus.exponent.decimal.objc"},7:{name:"keyword.operator.minus.exponent.decimal.objc"},8:{name:"constant.numeric.exponent.decimal.objc",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objc"}]},9:{name:"keyword.other.unit.suffix.integer.objc"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{match:"(?:(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))+",name:"invalid.illegal.constant.numeric.objc"}]},operators:{patterns:[{match:"(?<![\\w$])(sizeof)(?![\\w$])",name:"keyword.operator.sizeof.objc"},{match:"--",name:"keyword.operator.decrement.objc"},{match:"\\+\\+",name:"keyword.operator.increment.objc"},{match:"%=|\\+=|-=|\\*=|(?<!\\()/=",name:"keyword.operator.assignment.compound.objc"},{match:"&=|\\^=|<<=|>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.objc"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.objc"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.objc"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.objc"},{match:"&|\\||\\^|~",name:"keyword.operator.objc"},{match:"=",name:"keyword.operator.assignment.objc"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.objc"},{begin:"(\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.objc"}},end:"(:)",endCaptures:{1:{name:"keyword.operator.ternary.objc"}},patterns:[{include:"#function-call-innards"},{include:"$base"}]}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objc"}},name:"meta.parens.objc",patterns:[{include:"$base"}]},"parens-block":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objc"}},name:"meta.parens.block.objc",patterns:[{include:"#block_innards"},{match:"(?-mix:(?<!:):(?!:))",name:"punctuation.range-based.objc"}]},"pragma-mark":{captures:{1:{name:"meta.preprocessor.pragma.objc"},2:{name:"keyword.control.directive.pragma.pragma-mark.objc"},3:{name:"punctuation.definition.directive.objc"},4:{name:"entity.name.tag.pragma-mark.objc"}},match:"^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",name:"meta.section.objc"},"preprocessor-rule-conditional":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objc"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-block":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objc"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-line":{patterns:[{match:"(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",name:"keyword.control.directive.conditional.objc"},{match:"\\bdefined\\b",name:"invalid.illegal.macro-name.objc"},{include:"#comments"},{include:"#strings"},{include:"#numbers"},{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.objc"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.objc"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#operators"},{match:"\\b(NULL|true|false|TRUE|FALSE)\\b",name:"constant.language.objc"},{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objc"},{include:"#line_continuation_character"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objc"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]}]},"preprocessor-rule-define-line-blocks":{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objc"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objc"}},patterns:[{include:"#preprocessor-rule-define-line-blocks"},{include:"#preprocessor-rule-define-line-contents"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-define-line-contents":{patterns:[{include:"#vararg_ellipses"},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objc"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objc"}},name:"meta.block.objc",patterns:[{include:"#preprocessor-rule-define-line-blocks"}]},{match:"\\(",name:"punctuation.section.parens.begin.bracket.round.objc"},{match:"\\)",name:"punctuation.section.parens.end.bracket.round.objc"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\() +(?= + (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name + | + (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",name:"meta.function.objc",patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.objc",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.single.objc",patterns:[{include:"#string_escaped_char"},{include:"#line_continuation_character"}]},{include:"#method_access"},{include:"#member_access"},{include:"$base"}]},"preprocessor-rule-define-line-functions":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#vararg_ellipses"},{include:"#method_access"},{include:"#member_access"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objc"},2:{name:"punctuation.section.arguments.begin.bracket.round.objc"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.objc"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objc"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.objc"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-disabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.in-block.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",contentName:"comment.block.preprocessor.elif-branch.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-enabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"},3:{name:"constant.numeric.preprocessor.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.else-branch.objc",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.if-branch.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"$base"}]}]}]},"preprocessor-rule-enabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.else-branch.in-block.objc",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.if-branch.in-block.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#block_innards"}]}]}]},"preprocessor-rule-enabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.elif-branch.objc",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.elif-branch.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"$base"}]}]},"preprocessor-rule-enabled-elif-block":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objc",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.elif-branch.in-block.objc",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},contentName:"comment.block.preprocessor.elif-branch.objc",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"#block_innards"}]}]},"preprocessor-rule-enabled-else":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"$base"}]},"preprocessor-rule-enabled-else-block":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objc"},1:{name:"keyword.control.directive.conditional.objc"},2:{name:"punctuation.definition.directive.objc"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#block_innards"}]},probably_a_parameter:{captures:{1:{name:"variable.parameter.probably.objc"}},match:"(?<=(?:[a-zA-Z_0-9] |[&*>\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))"},static_assert:{begin:"(static_assert|_Static_assert)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.static_assert.objc"},2:{name:"punctuation.section.arguments.begin.bracket.round.objc"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.objc"}},patterns:[{begin:'(,)\\s*(?=(?:L|u8|u|U\\s*\\")?)',beginCaptures:{1:{name:"punctuation.separator.delimiter.objc"}},end:"(?=\\))",name:"meta.static_assert.message.objc",patterns:[{include:"#string_context"},{include:"#string_context_c"}]},{include:"#function_call_context"}]},storage_types:{patterns:[{match:"(?-mix:(?<!\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\w))",name:"storage.type.built-in.primitive.objc"},{match:"(?-mix:(?<!\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\w))",name:"storage.type.built-in.objc"},{match:"(?-mix:\\b(asm|__asm__|enum|struct|union)\\b)",name:"storage.type.$1.objc"}]},string_escaped_char:{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.objc"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objc"}]},string_placeholder:{patterns:[{match:`(?x) % +(\\d+\\$)? # field (argument #) +[#0\\- +']* # flags +[,;:_]? # separator character (AltiVec) +((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier +[diouxXDOUeEfFgGaACcSspn%] # conversion type`,name:"constant.other.placeholder.objc"},{captures:{1:{name:"invalid.illegal.placeholder.objc"}},match:'(%)(?!"\\s*(PRI|SCN))'}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.double.objc",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objc"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.objc"}},name:"string.quoted.single.objc",patterns:[{include:"#string_escaped_char"},{include:"#line_continuation_character"}]}]},switch_conditional_parentheses:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.parens.begin.bracket.round.conditional.switch.objc"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.conditional.switch.objc"}},name:"meta.conditional.switch.objc",patterns:[{include:"#conditional_context"}]},switch_statement:{begin:"(((?<!\\w)switch(?!\\w)))",beginCaptures:{1:{name:"meta.head.switch.objc"},2:{name:"keyword.control.switch.objc"}},end:"(?:(?<=\\})|(?=[;>\\[\\]=]))",name:"meta.block.switch.objc",patterns:[{begin:"\\G ?",end:"((?:\\{|(?=;)))",endCaptures:{1:{name:"punctuation.section.block.begin.bracket.curly.switch.objc"}},name:"meta.head.switch.objc",patterns:[{include:"#switch_conditional_parentheses"},{include:"$base"}]},{begin:"(?<=\\{)",end:"(\\})",endCaptures:{1:{name:"punctuation.section.block.end.bracket.curly.switch.objc"}},name:"meta.body.switch.objc",patterns:[{include:"#default_statement"},{include:"#case_statement"},{include:"$base"},{include:"#block_innards"}]},{begin:"(?<=})[\\s\\n]*",end:"[\\s\\n]*(?=;)",name:"meta.tail.switch.objc",patterns:[{include:"$base"}]}]},vararg_ellipses:{match:"(?<!\\.)\\.\\.\\.(?!\\.)",name:"punctuation.vararg-ellipses.objc"}}},comment:{patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.objc"}},end:"\\*/",name:"comment.block.objc"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.objc"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.objc"}},end:"\\n",name:"comment.line.double-slash.objc",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.objc"}]}]}]},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",comment:"eat nested preprocessor if(def)s",end:"^\\s*#\\s*endif\\b.*$",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},implementation_innards:{patterns:[{include:"#preprocessor-rule-enabled-implementation"},{include:"#preprocessor-rule-disabled-implementation"},{include:"#preprocessor-rule-other-implementation"},{include:"#property_directive"},{include:"#method_super"},{include:"$base"}]},interface_innards:{patterns:[{include:"#preprocessor-rule-enabled-interface"},{include:"#preprocessor-rule-disabled-interface"},{include:"#preprocessor-rule-other-interface"},{include:"#properties"},{include:"#protocol_list"},{include:"#method"},{include:"$base"}]},method:{begin:"^(-|\\+)\\s*",end:"(?=\\{|#)|;",name:"meta.function.objc",patterns:[{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.type.begin.objc"}},end:"(\\))\\s*(\\w+\\b)",endCaptures:{1:{name:"punctuation.definition.type.end.objc"},2:{name:"entity.name.function.objc"}},name:"meta.return-type.objc",patterns:[{include:"#protocol_list"},{include:"#protocol_type_qualifier"},{include:"$base"}]},{match:"\\b\\w+(?=:)",name:"entity.name.function.name-of-parameter.objc"},{begin:"((:))\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.name-of-parameter.objc"},2:{name:"punctuation.separator.arguments.objc"},3:{name:"punctuation.definition.type.begin.objc"}},end:"(\\))\\s*(\\w+\\b)?",endCaptures:{1:{name:"punctuation.definition.type.end.objc"},2:{name:"variable.parameter.function.objc"}},name:"meta.argument-type.objc",patterns:[{include:"#protocol_list"},{include:"#protocol_type_qualifier"},{include:"$base"}]},{include:"#comment"}]},method_super:{begin:"^(?=-|\\+)",end:"(?<=\\})|(?=#)",name:"meta.function-with-body.objc",patterns:[{include:"#method"},{include:"$base"}]},"pragma-mark":{captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.pragma.objc"},3:{name:"meta.toc-list.pragma-mark.objc"}},match:"^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))",name:"meta.section.objc"},"preprocessor-rule-disabled-implementation":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.if.objc"},3:{name:"constant.numeric.preprocessor.objc"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.else.objc"}},end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",name:"comment.block.preprocessor.if-branch.objc",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-disabled-interface":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.if.objc"},3:{name:"constant.numeric.preprocessor.objc"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.else.objc"}},end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",name:"comment.block.preprocessor.if-branch.objc",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-enabled-implementation":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.if.objc"},3:{name:"constant.numeric.preprocessor.objc"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.else.objc"}},contentName:"comment.block.preprocessor.else-branch.objc",end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#implementation_innards"}]}]},"preprocessor-rule-enabled-interface":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.if.objc"},3:{name:"constant.numeric.preprocessor.objc"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.else.objc"}},contentName:"comment.block.preprocessor.else-branch.objc",end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]}]},"preprocessor-rule-other-implementation":{begin:"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.objc"}},end:"^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",patterns:[{include:"#implementation_innards"}]},"preprocessor-rule-other-interface":{begin:"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.objc"},2:{name:"keyword.control.import.objc"}},end:"^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",patterns:[{include:"#interface_innards"}]},properties:{patterns:[{begin:"((@)property)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.property.objc"},2:{name:"punctuation.definition.keyword.objc"},3:{name:"punctuation.section.scope.begin.objc"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.scope.end.objc"}},name:"meta.property-with-attributes.objc",patterns:[{match:"\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\b",name:"keyword.other.property.attribute.objc"}]},{captures:{1:{name:"keyword.other.property.objc"},2:{name:"punctuation.definition.keyword.objc"}},match:"((@)property)\\b",name:"meta.property.objc"}]},property_directive:{captures:{1:{name:"punctuation.definition.keyword.objc"}},match:"(@)(dynamic|synthesize)\\b",name:"keyword.other.property.directive.objc"},protocol_list:{begin:"(<)",beginCaptures:{1:{name:"punctuation.section.scope.begin.objc"}},end:"(>)",endCaptures:{1:{name:"punctuation.section.scope.end.objc"}},name:"meta.protocol-list.objc",patterns:[{match:"\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\b",name:"support.other.protocol.objc"}]},protocol_type_qualifier:{match:"\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\b",name:"storage.modifier.protocol.objc"},special_variables:{patterns:[{match:"\\b_cmd\\b",name:"variable.other.selector.objc"},{match:"\\b(self|super)\\b",name:"variable.language.objc"}]},string_escaped_char:{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.objc"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objc"}]},string_placeholder:{patterns:[{match:`(?x) % +(\\d+\\$)? +[#0\\- +']* +[,;:_]? +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? +[diouxXDOUeEfFgGaACcSspn%]`,name:"constant.other.placeholder.objc"},{captures:{1:{name:"invalid.illegal.placeholder.objc"}},match:'(%)(?!"\\s*(PRI|SCN))'}]}},scopeName:"source.objc",aliases:["objc"]});var n=[e];export{n as default}; diff --git a/assets/chunks/objective-cpp.BWKJ1FCf.js b/assets/chunks/objective-cpp.BWKJ1FCf.js new file mode 100644 index 000000000..4bfff86c1 --- /dev/null +++ b/assets/chunks/objective-cpp.BWKJ1FCf.js @@ -0,0 +1,239 @@ +const e=Object.freeze({displayName:"Objective-C++",name:"objective-cpp",patterns:[{include:"#cpp_lang"},{include:"#anonymous_pattern_1"},{include:"#anonymous_pattern_2"},{include:"#anonymous_pattern_3"},{include:"#anonymous_pattern_4"},{include:"#anonymous_pattern_5"},{include:"#apple_foundation_functional_macros"},{include:"#anonymous_pattern_7"},{include:"#anonymous_pattern_8"},{include:"#anonymous_pattern_9"},{include:"#anonymous_pattern_10"},{include:"#anonymous_pattern_11"},{include:"#anonymous_pattern_12"},{include:"#anonymous_pattern_13"},{include:"#anonymous_pattern_14"},{include:"#anonymous_pattern_15"},{include:"#anonymous_pattern_16"},{include:"#anonymous_pattern_17"},{include:"#anonymous_pattern_18"},{include:"#anonymous_pattern_19"},{include:"#anonymous_pattern_20"},{include:"#anonymous_pattern_21"},{include:"#anonymous_pattern_22"},{include:"#anonymous_pattern_23"},{include:"#anonymous_pattern_24"},{include:"#anonymous_pattern_25"},{include:"#anonymous_pattern_26"},{include:"#anonymous_pattern_27"},{include:"#anonymous_pattern_28"},{include:"#anonymous_pattern_29"},{include:"#anonymous_pattern_30"},{include:"#bracketed_content"},{include:"#c_lang"}],repository:{anonymous_pattern_1:{begin:"((@)(interface|protocol))(?!.+;)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*((:)(?:\\s*)([A-Za-z][A-Za-z0-9]*))?(\\s|\\n)?",captures:{1:{name:"storage.type.objcpp"},2:{name:"punctuation.definition.storage.type.objcpp"},4:{name:"entity.name.type.objcpp"},6:{name:"punctuation.definition.entity.other.inherited-class.objcpp"},7:{name:"entity.other.inherited-class.objcpp"},8:{name:"meta.divider.objcpp"},9:{name:"meta.inherited-class.objcpp"}},contentName:"meta.scope.interface.objcpp",end:"((@)end)\\b",name:"meta.interface-or-protocol.objcpp",patterns:[{include:"#interface_innards"}]},anonymous_pattern_10:{captures:{1:{name:"punctuation.definition.keyword.objcpp"}},match:"(@)(defs|encode)\\b",name:"keyword.other.objcpp"},anonymous_pattern_11:{match:"\\bid\\b",name:"storage.type.id.objcpp"},anonymous_pattern_12:{match:"\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\b",name:"storage.type.objcpp"},anonymous_pattern_13:{captures:{1:{name:"punctuation.definition.storage.type.objcpp"}},match:"(@)(class|protocol)\\b",name:"storage.type.objcpp"},anonymous_pattern_14:{begin:"((@)selector)\\s*(\\()",beginCaptures:{1:{name:"storage.type.objcpp"},2:{name:"punctuation.definition.storage.type.objcpp"},3:{name:"punctuation.definition.storage.type.objcpp"}},contentName:"meta.selector.method-name.objcpp",end:"(\\))",endCaptures:{1:{name:"punctuation.definition.storage.type.objcpp"}},name:"meta.selector.objcpp",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objcpp"}},match:"\\b(?:[a-zA-Z_:][\\w]*)+",name:"support.function.any-method.name-of-parameter.objcpp"}]},anonymous_pattern_15:{captures:{1:{name:"punctuation.definition.storage.modifier.objcpp"}},match:"(@)(synchronized|public|package|private|protected)\\b",name:"storage.modifier.objcpp"},anonymous_pattern_16:{match:"\\b(YES|NO|Nil|nil)\\b",name:"constant.language.objcpp"},anonymous_pattern_17:{match:"\\bNSApp\\b",name:"support.variable.foundation.objcpp"},anonymous_pattern_18:{captures:{1:{name:"punctuation.whitespace.support.function.cocoa.leopard.objcpp"},2:{name:"support.function.cocoa.leopard.objcpp"}},match:"(\\s*)\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\b"},anonymous_pattern_19:{captures:{1:{name:"punctuation.whitespace.support.function.leading.cocoa.objcpp"},2:{name:"support.function.cocoa.objcpp"}},match:"(\\s*)\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\b"},anonymous_pattern_2:{begin:"((@)(implementation))\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?::\\s*([A-Za-z][A-Za-z0-9]*))?",captures:{1:{name:"storage.type.objcpp"},2:{name:"punctuation.definition.storage.type.objcpp"},4:{name:"entity.name.type.objcpp"},5:{name:"entity.other.inherited-class.objcpp"}},contentName:"meta.scope.implementation.objcpp",end:"((@)end)\\b",name:"meta.implementation.objcpp",patterns:[{include:"#implementation_innards"}]},anonymous_pattern_20:{match:"\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\b",name:"support.class.cocoa.leopard.objcpp"},anonymous_pattern_21:{match:"\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\b",name:"support.class.cocoa.objcpp"},anonymous_pattern_22:{match:"\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\b",name:"support.type.cocoa.leopard.objcpp"},anonymous_pattern_23:{match:"\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\b",name:"support.class.quartz.objcpp"},anonymous_pattern_24:{match:"\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\b",name:"support.type.quartz.objcpp"},anonymous_pattern_25:{match:"\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\b",name:"support.type.cocoa.objcpp"},anonymous_pattern_26:{match:"\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\b",name:"support.constant.cocoa.objcpp"},anonymous_pattern_27:{match:"\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\b",name:"support.constant.notification.cocoa.leopard.objcpp"},anonymous_pattern_28:{match:"\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\b",name:"support.constant.notification.cocoa.objcpp"},anonymous_pattern_29:{match:"\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\b",name:"support.constant.cocoa.leopard.objcpp"},anonymous_pattern_3:{begin:'@"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#string_escaped_char"},{match:`(?x)% +(\\d+\\$)? +[#0\\- +']* +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +[@] +`,name:"constant.other.placeholder.objcpp"},{include:"#string_placeholder"}]},anonymous_pattern_30:{match:"\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\b",name:"support.constant.cocoa.objcpp"},anonymous_pattern_4:{begin:"\\b(id)\\s*(?=<)",beginCaptures:{1:{name:"storage.type.objcpp"}},end:"(?<=>)",name:"meta.id-with-protocol.objcpp",patterns:[{include:"#protocol_list"}]},anonymous_pattern_5:{match:"\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\b",name:"keyword.control.macro.objcpp"},anonymous_pattern_7:{captures:{1:{name:"punctuation.definition.keyword.objcpp"}},match:"(@)(try|catch|finally|throw)\\b",name:"keyword.control.exception.objcpp"},anonymous_pattern_8:{captures:{1:{name:"punctuation.definition.keyword.objcpp"}},match:"(@)(synchronized)\\b",name:"keyword.control.synchronize.objcpp"},anonymous_pattern_9:{captures:{1:{name:"punctuation.definition.keyword.objcpp"}},match:"(@)(required|optional)\\b",name:"keyword.control.protocol-specification.objcpp"},apple_foundation_functional_macros:{begin:"(\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\s)+)?(\\()",beginCaptures:{1:{name:"entity.name.function.preprocessor.apple-foundation.objcpp"},2:{name:"punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objcpp"}},name:"meta.preprocessor.macro.callable.apple-foundation.objcpp",patterns:[{include:"#c_lang"}]},bracketed_content:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.scope.begin.objcpp"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.scope.end.objcpp"}},name:"meta.bracketed.objcpp",patterns:[{begin:"(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)",beginCaptures:{1:{name:"support.function.any-method.objcpp"},2:{name:"punctuation.separator.arguments.objcpp"}},end:"(?=\\])",name:"meta.function-call.predicate.objcpp",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objcpp"}},match:"\\bargument(Array|s)(:)",name:"support.function.any-method.name-of-parameter.objcpp"},{captures:{1:{name:"punctuation.separator.arguments.objcpp"}},match:"\\b\\w+(:)",name:"invalid.illegal.unknown-method.objcpp"},{begin:'@"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{match:"\\b(AND|OR|NOT|IN)\\b",name:"keyword.operator.logical.predicate.cocoa.objcpp"},{match:"\\b(ALL|ANY|SOME|NONE)\\b",name:"constant.language.predicate.cocoa.objcpp"},{match:"\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",name:"constant.language.predicate.cocoa.objcpp"},{match:"\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",name:"keyword.operator.comparison.predicate.cocoa.objcpp"},{match:"\\bC(ASEINSENSITIVE|I)\\b",name:"keyword.other.modifier.predicate.cocoa.objcpp"},{match:"\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",name:"keyword.other.predicate.cocoa.objcpp"},{match:`\\\\(\\\\|[abefnrtv'"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)`,name:"constant.character.escape.objcpp"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objcpp"}]},{include:"#special_variables"},{include:"#c_functions"},{include:"$base"}]},{begin:'(?=\\w)(?<=[\\w\\])"] )(\\w+(?:(:)|(?=\\])))',beginCaptures:{1:{name:"support.function.any-method.objcpp"},2:{name:"punctuation.separator.arguments.objcpp"}},end:"(?=\\])",name:"meta.function-call.objcpp",patterns:[{captures:{1:{name:"punctuation.separator.arguments.objcpp"}},match:"\\b\\w+(:)",name:"support.function.any-method.name-of-parameter.objcpp"},{include:"#special_variables"},{include:"#c_functions"},{include:"$base"}]},{include:"#special_variables"},{include:"#c_functions"},{include:"$self"}]},c_functions:{patterns:[{captures:{1:{name:"punctuation.whitespace.support.function.leading.objcpp"},2:{name:"support.function.C99.objcpp"}},match:"(\\s*)\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\b"},{captures:{1:{name:"punctuation.whitespace.function-call.leading.objcpp"},2:{name:"support.function.any-method.objcpp"},3:{name:"punctuation.definition.parameters.objcpp"}},match:`(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))? +(\\b +(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ +) +\\s*(\\()`,name:"meta.function-call.objcpp"}]},c_lang:{patterns:[{include:"#preprocessor-rule-enabled"},{include:"#preprocessor-rule-disabled"},{include:"#preprocessor-rule-conditional"},{include:"#comments"},{include:"#switch_statement"},{match:"\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",name:"keyword.control.objcpp"},{include:"#storage_types"},{match:"typedef",name:"keyword.other.typedef.objcpp"},{match:"\\bin\\b",name:"keyword.other.in.objcpp"},{match:"\\b(const|extern|register|restrict|static|volatile|inline|__block)\\b",name:"storage.modifier.objcpp"},{match:"\\bk[A-Z]\\w*\\b",name:"constant.other.variable.mac-classic.objcpp"},{match:"\\bg[A-Z]\\w*\\b",name:"variable.other.readwrite.global.mac-classic.objcpp"},{match:"\\bs[A-Z]\\w*\\b",name:"variable.other.readwrite.static.mac-classic.objcpp"},{match:"\\b(NULL|true|false|TRUE|FALSE)\\b",name:"constant.language.objcpp"},{include:"#operators"},{include:"#numbers"},{include:"#strings"},{include:"#special_variables"},{begin:`(?x) +^\\s* ((\\#)\\s*define) \\s+ +((?<id>[a-zA-Z_$][\\w$]*)) +(?: +(\\() +( +\\s* \\g<id> \\s* +((,) \\s* \\g<id> \\s*)* +(?:\\.\\.\\.)? +) +(\\)) +)?`,beginCaptures:{1:{name:"keyword.control.directive.define.objcpp"},2:{name:"punctuation.definition.directive.objcpp"},3:{name:"entity.name.function.preprocessor.objcpp"},5:{name:"punctuation.definition.parameters.begin.objcpp"},6:{name:"variable.parameter.preprocessor.objcpp"},8:{name:"punctuation.separator.parameters.objcpp"},9:{name:"punctuation.definition.parameters.end.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.macro.objcpp",patterns:[{include:"#preprocessor-rule-define-line-contents"}]},{begin:"^\\s*((#)\\s*(error|warning))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.diagnostic.$3.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?<!\\\\)(?=\\n)",name:"meta.preprocessor.diagnostic.objcpp",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#line_continuation_character"}]},{begin:`[^'"]`,end:"(?<!\\\\)(?=\\s*\\n)",name:"string.unquoted.single.objcpp",patterns:[{include:"#line_continuation_character"},{include:"#comments"}]}]},{begin:"^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.$3.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.include.objcpp",patterns:[{include:"#line_continuation_character"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.include.objcpp"},{begin:"<",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.other.lt-gt.include.objcpp"}]},{include:"#pragma-mark"},{begin:"^\\s*((#)\\s*line)\\b",beginCaptures:{1:{name:"keyword.control.directive.line.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#strings"},{include:"#numbers"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*undef))\\b",beginCaptures:{1:{name:"keyword.control.directive.undef.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objcpp"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*pragma))\\b",beginCaptures:{1:{name:"keyword.control.directive.pragma.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.pragma.objcpp",patterns:[{include:"#strings"},{match:"[a-zA-Z_$][\\w\\-$]*",name:"entity.other.attribute-name.pragma.preprocessor.objcpp"},{include:"#numbers"},{include:"#line_continuation_character"}]},{match:"\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",name:"support.type.sys-types.objcpp"},{match:"\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",name:"support.type.pthread.objcpp"},{match:`(?x) \\b +(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t +|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t +|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t +|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t +|uintmax_t|uintmax_t) +\\b`,name:"support.type.stdint.objcpp"},{match:"\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",name:"support.constant.mac-classic.objcpp"},{match:`(?x) \\b +(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam +|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr +|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber +|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64 +|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32 +|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr +|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char) +\\b`,name:"support.type.mac-classic.objcpp"},{match:"\\b([A-Za-z0-9_]+_t)\\b",name:"support.type.posix-reserved.objcpp"},{include:"#block"},{include:"#parens"},{begin:"(?<!\\w)(?!\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",end:"(?<=\\))",name:"meta.function.objcpp",patterns:[{include:"#function-innards"}]},{include:"#line_continuation_character"},{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",beginCaptures:{1:{name:"variable.object.objcpp"},2:{name:"punctuation.definition.begin.bracket.square.objcpp"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.end.bracket.square.objcpp"}},name:"meta.bracket.square.access.objcpp",patterns:[{include:"#function-call-innards"}]},{match:"\\[\\s*\\]",name:"storage.modifier.array.bracket.square.objcpp"},{match:";",name:"punctuation.terminator.statement.objcpp"},{match:",",name:"punctuation.separator.delimiter.objcpp"}],repository:{"access-method":{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",beginCaptures:{1:{name:"variable.object.objcpp"},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"},4:{patterns:[{match:"\\.",name:"punctuation.separator.dot-access.objcpp"},{match:"->",name:"punctuation.separator.pointer-access.objcpp"},{match:"[a-zA-Z_][a-zA-Z_0-9]*",name:"variable.object.objcpp"},{match:".+",name:"everything.else.objcpp"}]},5:{name:"entity.name.function.member.objcpp"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.member.objcpp"}},name:"meta.function-call.member.objcpp",patterns:[{include:"#function-call-innards"}]},block:{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{include:"#block_innards"}]}]},block_innards:{patterns:[{include:"#preprocessor-rule-enabled-block"},{include:"#preprocessor-rule-disabled-block"},{include:"#preprocessor-rule-conditional-block"},{include:"#method_access"},{include:"#member_access"},{include:"#c_function_call"},{begin:`(?x) +(?: + (?: + (?=\\s)(?<!else|new|return) + (?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name + ) +) +( + (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name + | + (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\])) +) +\\s*(\\() # opening bracket`,beginCaptures:{1:{name:"variable.other.objcpp"},2:{name:"punctuation.section.parens.begin.bracket.round.initialization.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.initialization.objcpp"}},name:"meta.initialization.objcpp",patterns:[{include:"#function-call-innards"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#block_innards"}]},{include:"#parens-block"},{include:"$base"}]},c_function_call:{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +(?= +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)",name:"meta.function-call.objcpp",patterns:[{include:"#function-call-innards"}]},case_statement:{begin:"((?<!\\w)case(?!\\w))",beginCaptures:{1:{name:"keyword.control.case.objcpp"}},end:"(:)",endCaptures:{1:{name:"punctuation.separator.case.objcpp"}},name:"meta.conditional.case.objcpp",patterns:[{include:"#conditional_context"}]},comments:{patterns:[{captures:{1:{name:"meta.toc-list.banner.block.objcpp"}},match:"^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",name:"comment.block.objcpp"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.objcpp"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.objcpp"}},name:"comment.block.objcpp"},{captures:{1:{name:"meta.toc-list.banner.line.objcpp"}},match:"^// =(\\s*.*?)\\s*=\\s*$\\n?",name:"comment.line.banner.objcpp"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.objcpp"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.objcpp"}},end:"(?=\\n)",name:"comment.line.double-slash.objcpp",patterns:[{include:"#line_continuation_character"}]}]}]},conditional_context:{patterns:[{include:"$base"},{include:"#block_innards"}]},default_statement:{begin:"((?<!\\w)default(?!\\w))",beginCaptures:{1:{name:"keyword.control.default.objcpp"}},end:"(:)",endCaptures:{1:{name:"punctuation.separator.case.default.objcpp"}},name:"meta.conditional.case.objcpp",patterns:[{include:"#conditional_context"}]},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",end:"^\\s*#\\s*endif\\b",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},"function-call-innards":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#method_access"},{include:"#member_access"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{include:"#function-call-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#function-call-innards"}]},{include:"#block_innards"}]},"function-innards":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#operators"},{include:"#vararg_ellipses"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.section.parameters.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.objcpp"}},name:"meta.function.definition.parameters.objcpp",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#function-innards"}]},{include:"$base"}]},line_continuation_character:{patterns:[{captures:{1:{name:"constant.character.escape.line-continuation.objcpp"}},match:"(\\\\)\\n"}]},member_access:{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objcpp"}]},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"},4:{patterns:[{include:"#member_access"},{include:"#method_access"},{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objcpp"}]},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))"}]},5:{name:"variable.other.member.objcpp"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\w*\\b(?!\\())"},method_access:{begin:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",beginCaptures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objcpp"}]},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"},4:{patterns:[{include:"#member_access"},{include:"#method_access"},{captures:{1:{patterns:[{include:"#special_variables"},{match:"(.+)",name:"variable.other.object.access.objcpp"}]},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"}},match:"((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))"}]},5:{name:"entity.name.function.member.objcpp"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.objcpp"}},contentName:"meta.function-call.member.objcpp",end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.function.member.objcpp"}},patterns:[{include:"#function-call-innards"}]},numbers:{begin:"(?<!\\w)(?=\\d|\\.\\d)",end:"(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",patterns:[{captures:{1:{name:"keyword.other.unit.hexadecimal.objcpp"},2:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},4:{name:"constant.numeric.hexadecimal.objcpp"},5:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},6:{name:"punctuation.separator.constant.numeric.objcpp"},8:{name:"keyword.other.unit.exponent.hexadecimal.objcpp"},9:{name:"keyword.operator.plus.exponent.hexadecimal.objcpp"},10:{name:"keyword.operator.minus.exponent.hexadecimal.objcpp"},11:{name:"constant.numeric.exponent.hexadecimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},12:{name:"keyword.other.unit.suffix.floating-point.objcpp"}},match:"(\\G0[xX])(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{2:{name:"constant.numeric.decimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},4:{name:"constant.numeric.decimal.point.objcpp"},5:{name:"constant.numeric.decimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},6:{name:"punctuation.separator.constant.numeric.objcpp"},8:{name:"keyword.other.unit.exponent.decimal.objcpp"},9:{name:"keyword.operator.plus.exponent.decimal.objcpp"},10:{name:"keyword.operator.minus.exponent.decimal.objcpp"},11:{name:"constant.numeric.exponent.decimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},12:{name:"keyword.other.unit.suffix.floating-point.objcpp"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9])\\.|\\.(?=[0-9])))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.binary.objcpp"},2:{name:"constant.numeric.binary.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},4:{name:"keyword.other.unit.suffix.integer.objcpp"}},match:"(\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.octal.objcpp"},2:{name:"constant.numeric.octal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},4:{name:"keyword.other.unit.suffix.integer.objcpp"}},match:"(\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{1:{name:"keyword.other.unit.hexadecimal.objcpp"},2:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},5:{name:"keyword.other.unit.exponent.hexadecimal.objcpp"},6:{name:"keyword.operator.plus.exponent.hexadecimal.objcpp"},7:{name:"keyword.operator.minus.exponent.hexadecimal.objcpp"},8:{name:"constant.numeric.exponent.hexadecimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},9:{name:"keyword.other.unit.suffix.integer.objcpp"}},match:"(\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{captures:{2:{name:"constant.numeric.decimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},3:{name:"punctuation.separator.constant.numeric.objcpp"},5:{name:"keyword.other.unit.exponent.decimal.objcpp"},6:{name:"keyword.operator.plus.exponent.decimal.objcpp"},7:{name:"keyword.operator.minus.exponent.decimal.objcpp"},8:{name:"constant.numeric.exponent.decimal.objcpp",patterns:[{match:"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.objcpp"}]},9:{name:"keyword.other.unit.suffix.integer.objcpp"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))"},{match:"(?:(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))+",name:"invalid.illegal.constant.numeric.objcpp"}]},operators:{patterns:[{match:"(?<![\\w$])(sizeof)(?![\\w$])",name:"keyword.operator.sizeof.objcpp"},{match:"--",name:"keyword.operator.decrement.objcpp"},{match:"\\+\\+",name:"keyword.operator.increment.objcpp"},{match:"%=|\\+=|-=|\\*=|(?<!\\()/=",name:"keyword.operator.assignment.compound.objcpp"},{match:"&=|\\^=|<<=|>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.objcpp"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.objcpp"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.objcpp"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.objcpp"},{match:"&|\\||\\^|~",name:"keyword.operator.objcpp"},{match:"=",name:"keyword.operator.assignment.objcpp"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.objcpp"},{begin:"(\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.objcpp"}},end:"(:)",endCaptures:{1:{name:"keyword.operator.ternary.objcpp"}},patterns:[{include:"#function-call-innards"},{include:"$base"}]}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},name:"meta.parens.objcpp",patterns:[{include:"$base"}]},"parens-block":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},name:"meta.parens.block.objcpp",patterns:[{include:"#block_innards"},{match:"(?-mix:(?<!:):(?!:))",name:"punctuation.range-based.objcpp"}]},"pragma-mark":{captures:{1:{name:"meta.preprocessor.pragma.objcpp"},2:{name:"keyword.control.directive.pragma.pragma-mark.objcpp"},3:{name:"punctuation.definition.directive.objcpp"},4:{name:"entity.name.tag.pragma-mark.objcpp"}},match:"^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",name:"meta.section.objcpp"},"preprocessor-rule-conditional":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objcpp"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-block":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objcpp"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-line":{patterns:[{match:"(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",name:"keyword.control.directive.conditional.objcpp"},{match:"\\bdefined\\b",name:"invalid.illegal.macro-name.objcpp"},{include:"#comments"},{include:"#strings"},{include:"#numbers"},{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#operators"},{match:"\\b(NULL|true|false|TRUE|FALSE)\\b",name:"constant.language.objcpp"},{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objcpp"},{include:"#line_continuation_character"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]}]},"preprocessor-rule-define-line-blocks":{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-blocks"},{include:"#preprocessor-rule-define-line-contents"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-define-line-contents":{patterns:[{include:"#vararg_ellipses"},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{include:"#preprocessor-rule-define-line-blocks"}]},{match:"\\(",name:"punctuation.section.parens.begin.bracket.round.objcpp"},{match:"\\)",name:"punctuation.section.parens.end.bracket.round.objcpp"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\() +(?= + (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name + | + (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",name:"meta.function.objcpp",patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#string_escaped_char"},{include:"#line_continuation_character"}]},{include:"#method_access"},{include:"#member_access"},{include:"$base"}]},"preprocessor-rule-define-line-functions":{patterns:[{include:"#comments"},{include:"#storage_types"},{include:"#vararg_ellipses"},{include:"#method_access"},{include:"#member_access"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-disabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-enabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.else-branch.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.if-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"$base"}]}]}]},"preprocessor-rule-enabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.else-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.if-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#block_innards"}]}]}]},"preprocessor-rule-enabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"$base"}]}]},"preprocessor-rule-enabled-elif-block":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"#block_innards"}]}]},"preprocessor-rule-enabled-else":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"$base"}]},"preprocessor-rule-enabled-else-block":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#block_innards"}]},probably_a_parameter:{captures:{1:{name:"variable.parameter.probably.objcpp"}},match:"(?<=(?:[a-zA-Z_0-9] |[&*>\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))"},static_assert:{begin:"(static_assert|_Static_assert)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.static_assert.objcpp"},2:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{begin:'(,)\\s*(?=(?:L|u8|u|U\\s*\\")?)',beginCaptures:{1:{name:"punctuation.separator.delimiter.objcpp"}},end:"(?=\\))",name:"meta.static_assert.message.objcpp",patterns:[{include:"#string_context"},{include:"#string_context_c"}]},{include:"#function_call_context"}]},storage_types:{patterns:[{match:"(?-mix:(?<!\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\w))",name:"storage.type.built-in.primitive.objcpp"},{match:"(?-mix:(?<!\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\w))",name:"storage.type.built-in.objcpp"},{match:"(?-mix:\\b(asm|__asm__|enum|struct|union)\\b)",name:"storage.type.$1.objcpp"}]},string_escaped_char:{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.objcpp"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objcpp"}]},string_placeholder:{patterns:[{match:`(?x) % +(\\d+\\$)? # field (argument #) +[#0\\- +']* # flags +[,;:_]? # separator character (AltiVec) +((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier +[diouxXDOUeEfFgGaACcSspn%] # conversion type`,name:"constant.other.placeholder.objcpp"},{captures:{1:{name:"invalid.illegal.placeholder.objcpp"}},match:'(%)(?!"\\s*(PRI|SCN))'}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#string_escaped_char"},{include:"#line_continuation_character"}]}]},switch_conditional_parentheses:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.parens.begin.bracket.round.conditional.switch.objcpp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.conditional.switch.objcpp"}},name:"meta.conditional.switch.objcpp",patterns:[{include:"#conditional_context"}]},switch_statement:{begin:"(((?<!\\w)switch(?!\\w)))",beginCaptures:{1:{name:"meta.head.switch.objcpp"},2:{name:"keyword.control.switch.objcpp"}},end:"(?:(?<=\\})|(?=[;>\\[\\]=]))",name:"meta.block.switch.objcpp",patterns:[{begin:"\\G ?",end:"((?:\\{|(?=;)))",endCaptures:{1:{name:"punctuation.section.block.begin.bracket.curly.switch.objcpp"}},name:"meta.head.switch.objcpp",patterns:[{include:"#switch_conditional_parentheses"},{include:"$base"}]},{begin:"(?<=\\{)",end:"(\\})",endCaptures:{1:{name:"punctuation.section.block.end.bracket.curly.switch.objcpp"}},name:"meta.body.switch.objcpp",patterns:[{include:"#default_statement"},{include:"#case_statement"},{include:"$base"},{include:"#block_innards"}]},{begin:"(?<=})[\\s\\n]*",end:"[\\s\\n]*(?=;)",name:"meta.tail.switch.objcpp",patterns:[{include:"$base"}]}]},vararg_ellipses:{match:"(?<!\\.)\\.\\.\\.(?!\\.)",name:"punctuation.vararg-ellipses.objcpp"}}},comment:{patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.objcpp"}},end:"\\*/",name:"comment.block.objcpp"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.objcpp"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.objcpp"}},end:"\\n",name:"comment.line.double-slash.objcpp",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.objcpp"}]}]}]},cpp_lang:{patterns:[{include:"#special_block"},{include:"#strings"},{match:"\\b(friend|explicit|virtual|override|final|noexcept)\\b",name:"storage.modifier.objcpp"},{match:"\\b(private:|protected:|public:)",name:"storage.type.modifier.access.objcpp"},{match:"\\b(catch|try|throw|using)\\b",name:"keyword.control.objcpp"},{match:"\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])",name:"keyword.control.objcpp"},{match:"\\b(f|m)[A-Z]\\w*\\b",name:"variable.other.readwrite.member.objcpp"},{match:"\\bthis\\b",name:"variable.language.this.objcpp"},{match:"\\bnullptr\\b",name:"constant.language.objcpp"},{include:"#template_definition"},{match:"\\btemplate\\b\\s*",name:"storage.type.template.objcpp"},{match:"\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",name:"keyword.operator.cast.objcpp"},{captures:{1:{name:"entity.scope.objcpp"},2:{name:"entity.scope.name.objcpp"},3:{name:"punctuation.separator.namespace.access.objcpp"}},match:"((?:[a-zA-Z_][a-zA-Z_0-9]*::)*)([a-zA-Z_][a-zA-Z_0-9]*)(::)",name:"punctuation.separator.namespace.access.objcpp"},{match:"\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b",name:"keyword.operator.objcpp"},{match:"\\b(decltype|wchar_t|char16_t|char32_t)\\b",name:"storage.type.objcpp"},{match:"\\b(constexpr|export|mutable|typename|thread_local)\\b",name:"storage.modifier.objcpp"},{begin:`(?x) +(?: +^ | +(?:(?<!else|new|=)) +) +((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.definition.parameters.begin.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.objcpp"}},name:"meta.function.destructor.objcpp",patterns:[{include:"$base"}]},{begin:`(?x) +(?: +^ | +(?:(?<!else|new|=)) +) +((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.definition.parameters.begin.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.objcpp"}},name:"meta.function.destructor.prototype.objcpp",patterns:[{include:"$base"}]},{include:"#c_lang"}],repository:{angle_brackets:{begin:"<",end:">",name:"meta.angle-brackets.objcpp",patterns:[{include:"#angle_brackets"},{include:"$base"}]},block:{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{captures:{1:{name:"support.function.any-method.objcpp"},2:{name:"punctuation.definition.parameters.objcpp"}},match:`(?x) +( + (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate) + (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name +) +\\s*(\\() # opening bracket`,name:"meta.function-call.objcpp"},{include:"$base"}]},constructor:{patterns:[{begin:`(?x) +(?:^\\s*) # beginning of line +((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name +\\s*(\\() # opening bracket`,beginCaptures:{1:{name:"entity.name.function.constructor.objcpp"},2:{name:"punctuation.definition.parameters.begin.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.objcpp"}},name:"meta.function.constructor.objcpp",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards"}]},{begin:`(?x) +(:) +( + (?= + \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name + \\s* (\\() # opening bracket + ) +)`,beginCaptures:{1:{name:"punctuation.definition.parameters.objcpp"}},end:"(?=\\{)",name:"meta.function.constructor.initializer-list.objcpp",patterns:[{include:"$base"}]}]},special_block:{patterns:[{begin:"\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)",beginCaptures:{1:{name:"keyword.control.objcpp"},2:{name:"storage.type.namespace.objcpp"},3:{name:"entity.name.type.objcpp"}},end:";",endCaptures:{0:{name:"punctuation.terminator.statement.objcpp"}},name:"meta.using-namespace-declaration.objcpp"},{begin:"\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+",beginCaptures:{1:{name:"storage.type.namespace.objcpp"},2:{name:"entity.name.type.objcpp"}},captures:{1:{name:"keyword.control.namespace.$2.objcpp"}},end:"(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",name:"meta.namespace-block.objcpp",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.scope.objcpp"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.scope.objcpp"}},patterns:[{include:"#special_block"},{include:"#constructor"},{include:"$base"}]},{include:"$base"}]},{begin:"\\b(?:(class)|(struct))\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",beginCaptures:{1:{name:"storage.type.class.objcpp"},2:{name:"storage.type.struct.objcpp"},3:{name:"entity.name.type.objcpp"},5:{name:"storage.type.modifier.access.objcpp"},6:{name:"entity.name.type.inherited.objcpp"},7:{patterns:[{match:"(public|protected|private)",name:"storage.type.modifier.access.objcpp"},{match:"[_A-Za-z][_A-Za-z0-9]*",name:"entity.name.type.inherited.objcpp"}]}},end:"(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))",name:"meta.class-struct-block.objcpp",patterns:[{include:"#angle_brackets"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"(\\})(\\s*\\n)?",endCaptures:{1:{name:"punctuation.section.block.end.bracket.curly.objcpp"},2:{name:"invalid.illegal.you-forgot-semicolon.objcpp"}},patterns:[{include:"#special_block"},{include:"#constructor"},{include:"$base"}]},{include:"$base"}]},{begin:'\\b(extern)(?=\\s*")',beginCaptures:{1:{name:"storage.modifier.objcpp"}},end:"(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",name:"meta.extern-block.objcpp",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"\\}|(?=\\s*#\\s*endif\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#special_block"},{include:"$base"}]},{include:"$base"}]}]},strings:{patterns:[{begin:'(u|u8|U|L)?"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"},1:{name:"meta.encoding.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{match:"\\\\u\\h{4}|\\\\U\\h{8}",name:"constant.character.escape.objcpp"},{match:`\\\\['"?\\\\abfnrtv]`,name:"constant.character.escape.objcpp"},{match:"\\\\[0-7]{1,3}",name:"constant.character.escape.objcpp"},{match:"\\\\x\\h+",name:"constant.character.escape.objcpp"},{include:"#string_placeholder"}]},{begin:'(u|u8|U|L)?R"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"},1:{name:"meta.encoding.objcpp"},3:{name:"invalid.illegal.delimiter-too-long.objcpp"}},end:'\\)\\2(\\3)"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"},1:{name:"invalid.illegal.delimiter-too-long.objcpp"}},name:"string.quoted.double.raw.objcpp"}]},template_definition:{begin:"\\b(template)\\s*(<)\\s*",beginCaptures:{1:{name:"storage.type.template.objcpp"},2:{name:"meta.template.angle-brackets.start.objcpp"}},end:">",endCaptures:{0:{name:"meta.template.angle-brackets.end.objcpp"}},name:"template.definition.objcpp",patterns:[{include:"#template_definition_argument"}]},template_definition_argument:{captures:{1:{name:"storage.type.template.objcpp"},2:{name:"storage.type.template.objcpp"},3:{name:"entity.name.type.template.objcpp"},4:{name:"storage.type.template.objcpp"},5:{name:"meta.template.operator.ellipsis.objcpp"},6:{name:"entity.name.type.template.objcpp"},7:{name:"storage.type.template.objcpp"},8:{name:"entity.name.type.template.objcpp"},9:{name:"keyword.operator.assignment.objcpp"},10:{name:"constant.language.objcpp"},11:{name:"meta.template.operator.comma.objcpp"}},match:"\\s*(?:([a-zA-Z_][a-zA-Z_0-9]*\\s*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)|([a-zA-Z_][a-zA-Z_0-9]*)\\s*(\\.\\.\\.)\\s*([a-zA-Z_][a-zA-Z_0-9]*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)\\s*(=)\\s*(\\w+))(,|(?=>))"}}},cpp_lang_newish:{patterns:[{include:"#special_block"},{match:"(?-mix:##[a-zA-Z_]\\w*(?!\\w))",name:"variable.other.macro.argument.objcpp"},{include:"#strings"},{match:"(?<!\\w)((?:inline|constexpr|mutable|friend|explicit|virtual))(?!\\w)",name:"storage.modifier.specificer.functional.pre-parameters.$1.objcpp"},{match:"(?<!\\w)((?:final|override|volatile|const|noexcept))(?!\\w)(?=\\s*(?:(?:(?:(?:\\{|;))|[\\n\\r])))",name:"storage.modifier.specifier.functional.post-parameters.$1.objcpp"},{match:"(?<!\\w)((?:const|static|volatile|register|restrict|extern))(?!\\w)",name:"storage.modifier.specifier.$1.objcpp"},{match:"(?<!\\w)((?:private|protected|public)) *:",name:"storage.type.modifier.access.control.$1.objcpp"},{match:"(?<!\\w)(?:throw|try|catch)(?!\\w)",name:"keyword.control.exception.$1.objcpp"},{match:"(?<!\\w)(using|typedef)(?!\\w)",name:"keyword.other.$1.objcpp"},{include:"#memory_operators"},{match:"\\bthis\\b",name:"variable.language.this.objcpp"},{include:"#constants"},{include:"#template_definition"},{match:"\\btemplate\\b\\s*",name:"storage.type.template.objcpp"},{match:"\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",name:"keyword.operator.cast.$1.objcpp"},{include:"#scope_resolution"},{match:"\\b(decltype|wchar_t|char16_t|char32_t)\\b",name:"storage.type.objcpp"},{match:"\\b(constexpr|export|mutable|typename|thread_local)\\b",name:"storage.modifier.objcpp"},{begin:`(?x) +(?: +^ | +(?:(?<!else|new|=)) +) +((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.destructor.objcpp"},2:{name:"punctuation.definition.parameters.begin.destructor.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.destructor.objcpp"}},name:"meta.function.destructor.objcpp",patterns:[{include:"$base"}]},{begin:`(?x) +(?: +^ | +(?:(?<!else|new|=)) +) +((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.definition.parameters.begin.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.objcpp"}},name:"meta.function.destructor.prototype.objcpp",patterns:[{include:"$base"}]},{include:"#preprocessor-rule-enabled"},{include:"#preprocessor-rule-disabled"},{include:"#preprocessor-rule-conditional"},{include:"#comments-c"},{match:"\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b",name:"keyword.control.$1.objcpp"},{include:"#storage_types_c"},{match:"\\b(const|extern|register|restrict|static|volatile|inline)\\b",name:"storage.modifier.objcpp"},{include:"#operators"},{include:"#operator_overload"},{include:"#number_literal"},{include:"#strings-c"},{begin:`(?x) +^\\s* ((\\#)\\s*define) \\s+ +((?<id>[a-zA-Z_$][\\w$]*)) +(?: +(\\() +( +\\s* \\g<id> \\s* +((,) \\s* \\g<id> \\s*)* +(?:\\.\\.\\.)? +) +(\\)) +)?`,beginCaptures:{1:{name:"keyword.control.directive.define.objcpp"},2:{name:"punctuation.definition.directive.objcpp"},3:{name:"entity.name.function.preprocessor.objcpp"},5:{name:"punctuation.definition.parameters.begin.objcpp"},6:{name:"variable.parameter.preprocessor.objcpp"},8:{name:"punctuation.separator.parameters.objcpp"},9:{name:"punctuation.definition.parameters.end.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.macro.objcpp",patterns:[{include:"#preprocessor-rule-define-line-contents"}]},{begin:"^\\s*((#)\\s*(error|warning))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.diagnostic.$3.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?<!\\\\)(?=\\n)",name:"meta.preprocessor.diagnostic.objcpp",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#line_continuation_character"}]},{begin:`[^'"]`,end:"(?<!\\\\)(?=\\s*\\n)",name:"string.unquoted.single.objcpp",patterns:[{include:"#line_continuation_character"},{include:"#comments-c"}]}]},{begin:"^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",beginCaptures:{1:{name:"keyword.control.directive.$3.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.include.objcpp",patterns:[{include:"#line_continuation_character"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.include.objcpp"},{begin:"<",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.other.lt-gt.include.objcpp"}]},{include:"#pragma-mark"},{begin:"^\\s*((#)\\s*line)\\b",beginCaptures:{1:{name:"keyword.control.directive.line.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#strings-c"},{include:"#number_literal"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*undef))\\b",beginCaptures:{1:{name:"keyword.control.directive.undef.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objcpp"},{include:"#line_continuation_character"}]},{begin:"^\\s*(?:((#)\\s*pragma))\\b",beginCaptures:{1:{name:"keyword.control.directive.pragma.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.pragma.objcpp",patterns:[{include:"#strings-c"},{match:"[a-zA-Z_$][\\w\\-$]*",name:"entity.other.attribute-name.pragma.preprocessor.objcpp"},{include:"#number_literal"},{include:"#line_continuation_character"}]},{match:"\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",name:"support.type.sys-types.objcpp"},{match:"\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",name:"support.type.pthread.objcpp"},{match:`(?x) \\b +(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t +|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t +|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t +|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t +|uintmax_t|uintmax_t) +\\b`,name:"support.type.stdint.objcpp"},{match:"(?<!\\w)[a-zA-Z_](?:\\w)*_t(?!\\w)",name:"support.type.posix-reserved.objcpp"},{include:"#block-c"},{include:"#parens-c"},{begin:"(?<!\\w)(?!\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",end:"(?<=\\))",name:"meta.function.definition.objcpp",patterns:[{include:"#function-innards-c"}]},{include:"#line_continuation_character"},{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",beginCaptures:{1:{name:"variable.other.object.objcpp"},2:{name:"punctuation.definition.begin.bracket.square.objcpp"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.end.bracket.square.objcpp"}},name:"meta.bracket.square.access.objcpp",patterns:[{include:"#function-call-innards-c"}]},{match:"(?-mix:(?<!delete))\\\\[\\\\s*\\\\]",name:"storage.modifier.array.bracket.square.objcpp"},{match:";",name:"punctuation.terminator.statement.objcpp"},{match:",",name:"punctuation.separator.delimiter.objcpp"}],repository:{"access-member":{captures:{1:{name:"variable.other.object.objcpp"},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"},4:{patterns:[{match:"\\.",name:"punctuation.separator.dot-access.objcpp"},{match:"->",name:"punctuation.separator.pointer-access.objcpp"},{match:"[a-zA-Z_]\\w*",name:"variable.other.object.objcpp"},{match:".+",name:"everything.else.objcpp"}]},5:{name:"variable.other.member.objcpp"}},match:"(?:(?:([a-zA-Z_]\\w*)|(?<=\\]|\\))))\\s*(?:(?:((?:(?:\\.|\\.\\*)))|((?:(?:->|->\\*)))))\\s*((?:[a-zA-Z_]\\w*\\s*(?:(?:\\.|->))\\s*)*)\\b(?!(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t))([a-zA-Z_]\\w*)\\b(?!\\()",name:"variable.other.object.access.objcpp"},"access-method":{begin:"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",beginCaptures:{1:{name:"variable.other.object.objcpp"},2:{name:"punctuation.separator.dot-access.objcpp"},3:{name:"punctuation.separator.pointer-access.objcpp"},4:{patterns:[{match:"\\.",name:"punctuation.separator.dot-access.objcpp"},{match:"->",name:"punctuation.separator.pointer-access.objcpp"},{match:"[a-zA-Z_][a-zA-Z_0-9]*",name:"variable.other.object.objcpp"},{match:".+",name:"everything.else.objcpp"}]},5:{name:"entity.name.function.member.objcpp"},6:{name:"punctuation.section.arguments.begin.bracket.round.function.member.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.function.member.objcpp"}},name:"meta.function-call.member.objcpp",patterns:[{include:"#function-call-innards-c"}]},angle_brackets:{begin:"<",end:">",name:"meta.angle-brackets.objcpp",patterns:[{include:"#angle_brackets"},{include:"$base"}]},block:{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{captures:{1:{name:"support.function.any-method.objcpp"},2:{name:"punctuation.definition.parameters.objcpp"}},match:`(?x) +( + (?!while|for|do|if|else|switch|catch|return) + (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name +) +\\s*(\\() # opening bracket`,name:"meta.function-call.objcpp"},{include:"$base"}]},"block-c":{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{include:"#block_innards-c"}]}]},"block_innards-c":{patterns:[{include:"#preprocessor-rule-enabled-block"},{include:"#preprocessor-rule-disabled-block"},{include:"#preprocessor-rule-conditional-block"},{include:"#access-method"},{include:"#access-member"},{include:"#c_function_call"},{begin:`(?x) +(?: + (?: + (?=\\s)(?<!else|new|return) + (?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name + ) +) +( + (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name + | + (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\])) +) +\\s*(\\() # opening bracket`,beginCaptures:{1:{name:"variable.other.objcpp"},2:{name:"punctuation.section.parens.begin.bracket.round.initialization.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.initialization.objcpp"}},name:"meta.initialization.objcpp",patterns:[{include:"#function-call-innards-c"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#block_innards-c"}]},{include:"#parens-block-c"},{include:"$base"}]},c_function_call:{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +(?= +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?\\( # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)",name:"meta.function-call.objcpp",patterns:[{include:"#function-call-innards-c"}]},"comments-c":{patterns:[{captures:{1:{name:"meta.toc-list.banner.block.objcpp"}},match:"^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",name:"comment.block.objcpp"},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.objcpp"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.objcpp"}},name:"comment.block.objcpp"},{captures:{1:{name:"meta.toc-list.banner.line.objcpp"}},match:"^// =(\\s*.*?)\\s*=\\s*$\\n?",name:"comment.line.banner.objcpp"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.objcpp"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.objcpp"}},end:"(?=\\n)",name:"comment.line.double-slash.objcpp",patterns:[{include:"#line_continuation_character"}]}]}]},constants:{match:"(?<!\\w)(?:NULL|true|false|nullptr)(?!\\w)",name:"constant.language.objcpp"},constructor:{patterns:[{begin:`(?x) +(?:^\\s*) # beginning of line +((?!while|for|do|if|else|switch|catch)[A-Za-z_][A-Za-z0-9_:]*) # actual name +\\s*(\\() # opening bracket`,beginCaptures:{1:{name:"entity.name.function.constructor.objcpp"},2:{name:"punctuation.definition.parameters.begin.constructor.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.constructor.objcpp"}},name:"meta.function.constructor.objcpp",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards-c"}]},{begin:`(?x) +(:) +( + (?= + \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name + \\s* (\\() # opening bracket + ) +)`,beginCaptures:{1:{name:"punctuation.definition.initializer-list.parameters.objcpp"}},end:"(?=\\{)",name:"meta.function.constructor.initializer-list.objcpp",patterns:[{include:"$base"}]}]},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",end:"^\\s*#\\s*endif\\b",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},"function-call-innards-c":{patterns:[{include:"#comments-c"},{include:"#storage_types_c"},{include:"#access-method"},{include:"#access-member"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:new)\\s*((?:(?:<(?:[\\s<>,\\w])*>\\s*))?) # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"keyword.operator.memory.new.objcpp"},2:{patterns:[{include:"#template_call_innards"}]},3:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{include:"#function-call-innards-c"}]},{begin:"(?<!\\w)(?!\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\s*\\()((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*([a-zA-Z_]\\w*)\\s*(?:((?:<(?:[\\s<>,\\w])*>\\s*)))?(\\()",beginCaptures:{1:{patterns:[{include:"#scope_resolution"}]},2:{name:"entity.name.function.call.objcpp"},3:{patterns:[{include:"#template_call_innards"}]},4:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{include:"#function-call-innards-c"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#function-call-innards-c"}]},{include:"#block_innards-c"}]},"function-innards-c":{patterns:[{include:"#comments-c"},{include:"#storage_types_c"},{include:"#operators"},{include:"#vararg_ellipses-c"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.section.parameters.begin.bracket.round.objcpp"}},end:"\\)|:",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.objcpp"}},name:"meta.function.definition.parameters.objcpp",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards-c"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#function-innards-c"}]},{include:"$base"}]},line_continuation_character:{patterns:[{captures:{1:{name:"constant.character.escape.line-continuation.objcpp"}},match:"(\\\\)\\n"}]},literal_numeric_seperator:{match:"(?<!')'(?!')",name:"punctuation.separator.constant.numeric.objcpp"},memory_operators:{captures:{1:{name:"keyword.operator.memory.delete.array.objcpp"},2:{name:"keyword.operator.memory.delete.array.bracket.objcpp"},3:{name:"keyword.operator.memory.delete.objcpp"},4:{name:"keyword.operator.memory.new.objcpp"}},match:"(?<!\\w)(?:(?:(delete)\\s*(\\[\\])|(delete))|(new))(?!\\w)",name:"keyword.operator.memory.objcpp"},number_literal:{captures:{2:{name:"keyword.other.unit.hexadecimal.objcpp"},3:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},4:{name:"punctuation.separator.constant.numeric.objcpp"},5:{name:"constant.numeric.hexadecimal.objcpp"},6:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},7:{name:"punctuation.separator.constant.numeric.objcpp"},8:{name:"keyword.other.unit.exponent.hexadecimal.objcpp"},9:{name:"keyword.operator.plus.exponent.hexadecimal.objcpp"},10:{name:"keyword.operator.minus.exponent.hexadecimal.objcpp"},11:{name:"constant.numeric.exponent.hexadecimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},12:{name:"constant.numeric.decimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},13:{name:"punctuation.separator.constant.numeric.objcpp"},14:{name:"constant.numeric.decimal.point.objcpp"},15:{name:"constant.numeric.decimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},16:{name:"punctuation.separator.constant.numeric.objcpp"},17:{name:"keyword.other.unit.exponent.decimal.objcpp"},18:{name:"keyword.operator.plus.exponent.decimal.objcpp"},19:{name:"keyword.operator.minus.exponent.decimal.objcpp"},20:{name:"constant.numeric.exponent.decimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},21:{name:"keyword.other.unit.suffix.floating-point.objcpp"},22:{name:"keyword.other.unit.binary.objcpp"},23:{name:"constant.numeric.binary.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},24:{name:"punctuation.separator.constant.numeric.objcpp"},25:{name:"keyword.other.unit.octal.objcpp"},26:{name:"constant.numeric.octal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},27:{name:"punctuation.separator.constant.numeric.objcpp"},28:{name:"keyword.other.unit.hexadecimal.objcpp"},29:{name:"constant.numeric.hexadecimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},30:{name:"punctuation.separator.constant.numeric.objcpp"},31:{name:"keyword.other.unit.exponent.hexadecimal.objcpp"},32:{name:"keyword.operator.plus.exponent.hexadecimal.objcpp"},33:{name:"keyword.operator.minus.exponent.hexadecimal.objcpp"},34:{name:"constant.numeric.exponent.hexadecimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},35:{name:"constant.numeric.decimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},36:{name:"punctuation.separator.constant.numeric.objcpp"},37:{name:"keyword.other.unit.exponent.decimal.objcpp"},38:{name:"keyword.operator.plus.exponent.decimal.objcpp"},39:{name:"keyword.operator.minus.exponent.decimal.objcpp"},40:{name:"constant.numeric.exponent.decimal.objcpp",patterns:[{include:"#literal_numeric_seperator"}]},41:{name:"keyword.other.unit.suffix.integer.objcpp"},42:{name:"keyword.other.unit.user-defined.objcpp"}},match:"((?<!\\w)(?:(?:(?:(0[xX])(?:([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*))?((?:(?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F]))))(?:([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*))?(?:([pP])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?|(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?((?:(?:(?<=[0-9])\\.|\\.(?=[0-9]))))(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?(?:([eE])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:([lLfF](?!\\w)))?|(?:(?:(?:(?:(?:(0[bB])((?:(?:(?:[01]|((?<!')'(?!')))))+)|(0)((?:(?:(?:[0-7]|((?<!')'(?!')))))+)))|(0[xX])([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*)(?:([pP])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?))|([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*)(?:([eE])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:((?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:LL[uU]|ll[uU]))|[uU]LL))|[uU]ll))|ll))|LL))|[uUlL]))(?!\\w)))?))(\\w*))"},operator_overload:{begin:"((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*(operator)((?:(?:\\s*(?:\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|\\-\\-|\\+|\\-|!|~|\\*|&|\\->\\*|\\*|\\/|%|\\+|\\-|<<|>>|<=>|<|<=|>|>=|==|!=|&|\\^|\\||&&|\\|\\||=|\\+=|\\-=|\\*=|\\/=|%=|<<=|>>=|&=|\\^=|\\|=|,)|\\s+(?:(?:(?:new|new\\[\\]|delete|delete\\[\\])|(?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*[a-zA-Z_]\\w*\\s*(?:&)?)))))\\s*(\\()",beginCaptures:{1:{name:"entity.scope.objcpp"},2:{name:"keyword.other.operator.overload.objcpp"},3:{name:"entity.name.operator.overloadee.objcpp"},4:{name:"punctuation.section.parameters.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parameters.end.bracket.round.objcpp"}},name:"meta.function.definition.parameters.operator-overload.objcpp",patterns:[{include:"#probably_a_parameter"},{include:"#function-innards-c"}]},operators:{patterns:[{match:"(?-mix:(?<!\\w)((?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept))(?!\\w))",name:"keyword.operator.$1.objcpp"},{match:"--",name:"keyword.operator.decrement.objcpp"},{match:"\\+\\+",name:"keyword.operator.increment.objcpp"},{match:"%=|\\+=|-=|\\*=|(?<!\\()/=",name:"keyword.operator.assignment.compound.objcpp"},{match:"&=|\\^=|<<=|>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.objcpp"},{match:"<<|>>",name:"keyword.operator.bitwise.shift.objcpp"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.objcpp"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.objcpp"},{match:"&|\\||\\^|~",name:"keyword.operator.objcpp"},{match:"=",name:"keyword.operator.assignment.objcpp"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.objcpp"},{applyEndPatternLast:!0,begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},patterns:[{include:"#access-method"},{include:"#access-member"},{include:"#c_function_call"},{include:"$base"}]}]},"parens-block-c":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},name:"meta.block.parens.objcpp",patterns:[{include:"#block_innards-c"},{match:"(?<!:):(?!:)",name:"punctuation.range-based.objcpp"}]},"parens-c":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},name:"punctuation.section.parens-c\b.objcpp",patterns:[{include:"$base"}]},"pragma-mark":{captures:{1:{name:"meta.preprocessor.pragma.objcpp"},2:{name:"keyword.control.directive.pragma.pragma-mark.objcpp"},3:{name:"punctuation.definition.directive.objcpp"},4:{name:"entity.name.tag.pragma-mark.objcpp"}},match:"^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",name:"meta.section.objcpp"},"preprocessor-rule-conditional":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objcpp"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-block":{patterns:[{begin:"^\\s*((#)\\s*if(?:n?def)?\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards-c"}]},{captures:{0:{name:"invalid.illegal.stray-$1.objcpp"}},match:"^\\s*#\\s*(else|elif|endif)\\b"}]},"preprocessor-rule-conditional-line":{patterns:[{match:"(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",name:"keyword.control.directive.conditional.objcpp"},{match:"\\bdefined\\b",name:"invalid.illegal.macro-name.objcpp"},{include:"#comments-c"},{include:"#strings-c"},{include:"#number_literal"},{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.objcpp"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#operators"},{include:"#constants"},{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.preprocessor.objcpp"},{include:"#line_continuation_character"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",endCaptures:{0:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-conditional-line"}]}]},"preprocessor-rule-define-line-blocks":{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-blocks"},{include:"#preprocessor-rule-define-line-contents"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-define-line-contents":{patterns:[{include:"#vararg_ellipses-c"},{match:"(?-mix:##?[a-zA-Z_]\\w*(?!\\w))",name:"variable.other.macro.argument.objcpp"},{begin:"{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},name:"meta.block.objcpp",patterns:[{include:"#preprocessor-rule-define-line-blocks"}]},{match:"\\(",name:"punctuation.section.parens.begin.bracket.round.objcpp"},{match:"\\)",name:"punctuation.section.parens.end.bracket.round.objcpp"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\() +(?= + (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name + | + (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\( +)`,end:"(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",name:"meta.function.objcpp",patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"|(?<!\\\\)(?=\\s*\\n)',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#string_escaped_char-c"},{include:"#string_placeholder-c"},{include:"#line_continuation_character"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'|(?<!\\\\)(?=\\s*\\n)",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#string_escaped_char-c"},{include:"#line_continuation_character"}]},{include:"#access-method"},{include:"#access-member"},{include:"$base"}]},"preprocessor-rule-define-line-functions":{patterns:[{include:"#comments-c"},{include:"#storage_types_c"},{include:"#vararg_ellipses-c"},{include:"#access-method"},{include:"#access-member"},{include:"#operators"},{begin:`(?x) +(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\() +( +(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name +| +(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\])) +) +\\s*(\\()`,beginCaptures:{1:{name:"entity.name.function.objcpp"},2:{name:"punctuation.section.arguments.begin.bracket.round.objcpp"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.arguments.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.bracket.round.objcpp"}},end:"(\\))|(?<!\\\\)(?=\\s*\\n)",endCaptures:{1:{name:"punctuation.section.parens.end.bracket.round.objcpp"}},patterns:[{include:"#preprocessor-rule-define-line-functions"}]},{include:"#preprocessor-rule-define-line-contents"}]},"preprocessor-rule-disabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{include:"#preprocessor-rule-enabled-elif"},{include:"#preprocessor-rule-enabled-else"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"$base"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{include:"#preprocessor-rule-enabled-elif-block"},{include:"#preprocessor-rule-enabled-else-block"},{include:"#preprocessor-rule-disabled-elif"},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#block_innards-c"}]},{begin:"\\n",contentName:"comment.block.preprocessor.if-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]}]},"preprocessor-rule-disabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{begin:"\\n",contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-enabled":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.else-branch.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.if-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"$base"}]}]}]},"preprocessor-rule-enabled-block":{patterns:[{begin:"^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"^\\s*((#)\\s*endif\\b)",endCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.else-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*elif\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.if-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#block_innards-c"}]}]}]},"preprocessor-rule-enabled-elif":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"$base"}]}]},"preprocessor-rule-enabled-elif-block":{begin:"^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{begin:"\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",end:"(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",name:"meta.preprocessor.objcpp",patterns:[{include:"#preprocessor-rule-conditional-line"}]},{include:"#comments-c"},{begin:"\\n",end:"(?=^\\s*((#)\\s*(?:endif)\\b))",patterns:[{begin:"^\\s*((#)\\s*(else)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.in-block.objcpp",end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"^\\s*((#)\\s*(elif)\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},contentName:"comment.block.preprocessor.elif-branch.objcpp",end:"(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{include:"#block_innards-c"}]}]},"preprocessor-rule-enabled-else":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"$base"}]},"preprocessor-rule-enabled-else-block":{begin:"^\\s*((#)\\s*else\\b)",beginCaptures:{0:{name:"meta.preprocessor.objcpp"},1:{name:"keyword.control.directive.conditional.objcpp"},2:{name:"punctuation.definition.directive.objcpp"}},end:"(?=^\\s*((#)\\s*endif\\b))",patterns:[{include:"#block_innards-c"}]},probably_a_parameter:{captures:{1:{name:"variable.parameter.probably.defaulted.objcpp"},2:{name:"variable.parameter.probably.objcpp"}},match:"(?:(?:([a-zA-Z_]\\w*)\\s*(?==)|(?<=\\w\\s|\\*\\/|[&*>\\]\\)])\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:(?:,|\\))))))"},scope_resolution:{captures:{1:{patterns:[{include:"#scope_resolution"}]},2:{name:"entity.name.namespace.scope-resolution.objcpp"},3:{patterns:[{include:"#template_call_innards"}]},4:{name:"punctuation.separator.namespace.access.objcpp"}},match:"((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*\\s*)([a-zA-Z_]\\w*)\\s*((?:<(?:[\\s<>,\\w])*>\\s*))?(::)",name:"meta.scope-resolution.objcpp"},special_block:{patterns:[{begin:"\\b(using)\\s+(namespace)\\s+(?:((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*)?((?<!\\w)[a-zA-Z_]\\w*(?!\\w))(?=;|\\n)",beginCaptures:{1:{name:"keyword.other.using.directive.objcpp"},2:{name:"keyword.other.namespace.directive.objcpp storage.type.namespace.directive.objcpp"},3:{patterns:[{include:"#scope_resolution"}]},4:{name:"entity.name.namespace.objcpp"}},comment:"https://en.cppreference.com/w/cpp/language/namespace",end:";",endCaptures:{0:{name:"punctuation.terminator.statement.objcpp"}},name:"meta.using-namespace-declaration.objcpp"},{begin:"(?<!\\w)(namespace)\\s+(?:(?:((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*[a-zA-Z_]\\w*)|(?={)))",beginCaptures:{1:{name:"keyword.other.namespace.definition.objcpp storage.type.namespace.definition.objcpp"},2:{patterns:[{match:"(?-mix:(?<!\\w)[a-zA-Z_]\\w*(?!\\w))",name:"entity.name.type.objcpp"},{match:"::",name:"punctuation.separator.namespace.access.objcpp"}]}},end:"(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",name:"meta.namespace-block.objcpp",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.scope.objcpp"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.scope.objcpp"}},patterns:[{include:"#special_block"},{include:"#constructor"},{include:"$base"}]},{include:"$base"}]},{begin:"\\b(?:(class)|(struct))\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",beginCaptures:{1:{name:"storage.type.class.objcpp"},2:{name:"storage.type.struct.objcpp"},3:{name:"entity.name.type.objcpp"},5:{name:"storage.type.modifier.access.objcpp"},6:{name:"entity.name.type.inherited.objcpp"},7:{patterns:[{match:"(public|protected|private)",name:"storage.type.modifier.access.objcpp"},{match:"[_A-Za-z][_A-Za-z0-9]*",name:"entity.name.type.inherited.objcpp"}]}},end:"(?<=\\})|(;)|(?=(\\(|\\)|>|\\[|\\]|=))",endCaptures:{1:{name:"punctuation.terminator.statement.objcpp"}},name:"meta.class-struct-block.objcpp",patterns:[{include:"#angle_brackets"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"(\\})(\\s*\\n)?",endCaptures:{1:{name:"punctuation.section.block.end.bracket.curly.objcpp"},2:{name:"invalid.illegal.you-forgot-semicolon.objcpp"}},patterns:[{include:"#special_block"},{include:"#constructor"},{include:"$base"}]},{include:"$base"}]},{begin:'\\b(extern)(?=\\s*")',beginCaptures:{1:{name:"storage.modifier.objcpp"}},end:"(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",name:"meta.extern-block.objcpp",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.bracket.curly.objcpp"}},end:"\\}|(?=\\s*#\\s*endif\\b)",endCaptures:{0:{name:"punctuation.section.block.end.bracket.curly.objcpp"}},patterns:[{include:"#special_block"},{include:"$base"}]},{include:"$base"}]}]},storage_types_c:{patterns:[{match:"(?<!\\w)(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t)(?!\\w)",name:"storage.type.primitive.objcpp"},{match:"(?<!\\w)(?:u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)(?!\\w)",name:"storage.type.objcpp"},{match:"(?<!\\w)(asm|__asm__|enum|union|struct)(?!\\w)",name:"storage.type.$1.objcpp"}]},"string_escaped_char-c":{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.objcpp"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objcpp"}]},"string_placeholder-c":{patterns:[{match:`(?x) % +(\\d+\\$)? # field (argument #) +[#0\\- +']* # flags +[,;:_]? # separator character (AltiVec) +((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier +[diouxXDOUeEfFgGaACcSspn%] # conversion type`,name:"constant.other.placeholder.objcpp"}]},strings:{patterns:[{begin:'(u|u8|U|L)?"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"},1:{name:"meta.encoding.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{match:"\\\\u\\h{4}|\\\\U\\h{8}",name:"constant.character.escape.objcpp"},{match:`\\\\['"?\\\\abfnrtv]`,name:"constant.character.escape.objcpp"},{match:"\\\\[0-7]{1,3}",name:"constant.character.escape.objcpp"},{match:"\\\\x\\h+",name:"constant.character.escape.objcpp"},{include:"#string_placeholder-c"}]},{begin:'(u|u8|U|L)?R"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"},1:{name:"meta.encoding.objcpp"},3:{name:"invalid.illegal.delimiter-too-long.objcpp"}},end:'\\)\\2(\\3)"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"},1:{name:"invalid.illegal.delimiter-too-long.objcpp"}},name:"string.quoted.double.raw.objcpp"}]},"strings-c":{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.double.objcpp",patterns:[{include:"#string_escaped_char-c"},{include:"#string_placeholder-c"},{include:"#line_continuation_character"}]},{begin:"(?-mix:(?<![\\da-fA-F])')",beginCaptures:{0:{name:"punctuation.definition.string.begin.objcpp"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.objcpp"}},name:"string.quoted.single.objcpp",patterns:[{include:"#string_escaped_char-c"},{include:"#line_continuation_character"}]}]},template_call_innards:{captures:{0:{name:"meta.template.call.objcpp",patterns:[{include:"#storage_types_c"},{include:"#constants"},{include:"#scope_resolution"},{match:"(?<!\\w)[a-zA-Z_]\\w*(?!\\w)",name:"storage.type.user-defined.objcpp"},{include:"#operators"},{include:"#number_literal"},{include:"#strings"},{match:",",name:"punctuation.separator.comma.template.argument.objcpp"}]}},match:"<(?:[\\s<>,\\w])*>\\s*"},template_definition:{begin:"(?-mix:(?<!\\w)(template)\\s*(<))",beginCaptures:{1:{name:"storage.type.template.objcpp"},2:{name:"punctuation.section.angle-brackets.start.template.definition.objcpp"}},end:"(?-mix:(>))",endCaptures:{1:{name:"punctuation.section.angle-brackets.end.template.definition.objcpp"}},name:"meta.template.definition.objcpp",patterns:[{include:"#scope_resolution"},{include:"#template_definition_argument"},{include:"#template_call_innards"}]},template_definition_argument:{captures:{2:{name:"storage.type.template.argument.$1.objcpp"},3:{name:"storage.type.template.argument.$2.objcpp"},4:{name:"entity.name.type.template.objcpp"},5:{name:"storage.type.template.objcpp"},6:{name:"keyword.operator.ellipsis.template.definition.objcpp"},7:{name:"entity.name.type.template.objcpp"},8:{name:"storage.type.template.objcpp"},9:{name:"entity.name.type.template.objcpp"},10:{name:"keyword.operator.assignment.objcpp"},11:{name:"constant.other.objcpp"},12:{name:"punctuation.separator.comma.template.argument.objcpp"}},match:"((?:(?:(?:(?:(?:(?:\\s*([a-zA-Z_]\\w*)|((?:[a-zA-Z_]\\w*\\s+)+)([a-zA-Z_]\\w*)))|([a-zA-Z_]\\w*)\\s*(\\.\\.\\.)\\s*([a-zA-Z_]\\w*)))|((?:[a-zA-Z_]\\w*\\s+)*)([a-zA-Z_]\\w*)\\s*([=])\\s*(\\w+)))\\s*(?:(?:(,)|(?=>))))"},"vararg_ellipses-c":{match:"(?<!\\.)\\.\\.\\.(?!\\.)",name:"punctuation.vararg-ellipses.objcpp"}}},disabled:{begin:"^\\s*#\\s*if(n?def)?\\b.*$",comment:"eat nested preprocessor if(def)s",end:"^\\s*#\\s*endif\\b.*$",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},implementation_innards:{patterns:[{include:"#preprocessor-rule-enabled-implementation"},{include:"#preprocessor-rule-disabled-implementation"},{include:"#preprocessor-rule-other-implementation"},{include:"#property_directive"},{include:"#method_super"},{include:"$base"}]},interface_innards:{patterns:[{include:"#preprocessor-rule-enabled-interface"},{include:"#preprocessor-rule-disabled-interface"},{include:"#preprocessor-rule-other-interface"},{include:"#properties"},{include:"#protocol_list"},{include:"#method"},{include:"$base"}]},method:{begin:"^(-|\\+)\\s*",end:"(?=\\{|#)|;",name:"meta.function.objcpp",patterns:[{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.type.begin.objcpp"}},end:"(\\))\\s*(\\w+\\b)",endCaptures:{1:{name:"punctuation.definition.type.end.objcpp"},2:{name:"entity.name.function.objcpp"}},name:"meta.return-type.objcpp",patterns:[{include:"#protocol_list"},{include:"#protocol_type_qualifier"},{include:"$base"}]},{match:"\\b\\w+(?=:)",name:"entity.name.function.name-of-parameter.objcpp"},{begin:"((:))\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.name-of-parameter.objcpp"},2:{name:"punctuation.separator.arguments.objcpp"},3:{name:"punctuation.definition.type.begin.objcpp"}},end:"(\\))\\s*(\\w+\\b)?",endCaptures:{1:{name:"punctuation.definition.type.end.objcpp"},2:{name:"variable.parameter.function.objcpp"}},name:"meta.argument-type.objcpp",patterns:[{include:"#protocol_list"},{include:"#protocol_type_qualifier"},{include:"$base"}]},{include:"#comment"}]},method_super:{begin:"^(?=-|\\+)",end:"(?<=\\})|(?=#)",name:"meta.function-with-body.objcpp",patterns:[{include:"#method"},{include:"$base"}]},"pragma-mark":{captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.pragma.objcpp"},3:{name:"meta.toc-list.pragma-mark.objcpp"}},match:"^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))",name:"meta.section.objcpp"},"preprocessor-rule-disabled-implementation":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.if.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.else.objcpp"}},end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",name:"comment.block.preprocessor.if-branch.objcpp",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-disabled-interface":{begin:"^\\s*(#(if)\\s+(0)\\b).*",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.if.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b)",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.else.objcpp"}},end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",name:"comment.block.preprocessor.if-branch.objcpp",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]}]},"preprocessor-rule-enabled-implementation":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.if.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.else.objcpp"}},contentName:"comment.block.preprocessor.else-branch.objcpp",end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#implementation_innards"}]}]},"preprocessor-rule-enabled-interface":{begin:"^\\s*(#(if)\\s+(0*1)\\b)",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.if.objcpp"},3:{name:"constant.numeric.preprocessor.objcpp"}},end:"^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{begin:"^\\s*(#\\s*(else)\\b).*",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.else.objcpp"}},contentName:"comment.block.preprocessor.else-branch.objcpp",end:"(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#disabled"},{include:"#pragma-mark"}]},{begin:"",end:"(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",patterns:[{include:"#interface_innards"}]}]},"preprocessor-rule-other-implementation":{begin:"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.objcpp"}},end:"^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",patterns:[{include:"#implementation_innards"}]},"preprocessor-rule-other-interface":{begin:"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",captures:{1:{name:"meta.preprocessor.objcpp"},2:{name:"keyword.control.import.objcpp"}},end:"^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",patterns:[{include:"#interface_innards"}]},properties:{patterns:[{begin:"((@)property)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.property.objcpp"},2:{name:"punctuation.definition.keyword.objcpp"},3:{name:"punctuation.section.scope.begin.objcpp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.scope.end.objcpp"}},name:"meta.property-with-attributes.objcpp",patterns:[{match:"\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\b",name:"keyword.other.property.attribute.objcpp"}]},{captures:{1:{name:"keyword.other.property.objcpp"},2:{name:"punctuation.definition.keyword.objcpp"}},match:"((@)property)\\b",name:"meta.property.objcpp"}]},property_directive:{captures:{1:{name:"punctuation.definition.keyword.objcpp"}},match:"(@)(dynamic|synthesize)\\b",name:"keyword.other.property.directive.objcpp"},protocol_list:{begin:"(<)",beginCaptures:{1:{name:"punctuation.section.scope.begin.objcpp"}},end:"(>)",endCaptures:{1:{name:"punctuation.section.scope.end.objcpp"}},name:"meta.protocol-list.objcpp",patterns:[{match:"\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\b",name:"support.other.protocol.objcpp"}]},protocol_type_qualifier:{match:"\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\b",name:"storage.modifier.protocol.objcpp"},special_variables:{patterns:[{match:"\\b_cmd\\b",name:"variable.other.selector.objcpp"},{match:"\\b(self|super)\\b",name:"variable.language.objcpp"}]},string_escaped_char:{patterns:[{match:`(?x)\\\\ ( +\\\\ | +[abefnprtv'"?] | +[0-3]\\d{,2} | +[4-7]\\d? | +x[a-fA-F0-9]{,2} | +u[a-fA-F0-9]{,4} | +U[a-fA-F0-9]{,8} )`,name:"constant.character.escape.objcpp"},{match:"\\\\.",name:"invalid.illegal.unknown-escape.objcpp"}]},string_placeholder:{patterns:[{match:`(?x) % +(\\d+\\$)? +[#0\\- +']* +[,;:_]? +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? +[diouxXDOUeEfFgGaACcSspn%]`,name:"constant.other.placeholder.objcpp"},{captures:{1:{name:"invalid.illegal.placeholder.objcpp"}},match:'(%)(?!"\\s*(PRI|SCN))'}]}},scopeName:"source.objcpp"});var n=[e];export{n as default}; diff --git a/assets/chunks/ocaml.RqY_Nz63.js b/assets/chunks/ocaml.RqY_Nz63.js new file mode 100644 index 000000000..920ea97da --- /dev/null +++ b/assets/chunks/ocaml.RqY_Nz63.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"OCaml",fileTypes:[".ml",".mli"],name:"ocaml",patterns:[{include:"#comment"},{include:"#pragma"},{include:"#decl"}],repository:{attribute:{begin:"(\\[)[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$])@{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",beginCaptures:{1:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"\\]",endCaptures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},patterns:[{include:"#attributePayload"}]},attributeIdentifier:{captures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"punctuation.definition.tag"}},match:`((?<![#\\-:!?.@*/&%^+<=>|~$])%(?![#\\-:!?.@*/&%^+<=>|~$]))((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))`},attributePayload:{patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]%|^%))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"((?<![#\\-:!?.@*/&%^+<=>|~$])[:\\?](?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=[[:space:]])|(?=\\])",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#pathModuleExtended"},{include:"#pathRecord"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=\\])",patterns:[{include:"#signature"},{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=\\])",patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=\\])|\\bwhen\\b",endCaptures:{1:{}},patterns:[{include:"#pattern"}]},{begin:"(?:(?<=(?:[^[:word:]]when|^when))(?![[:word:]]))",end:"(?=\\])",patterns:[{include:"#term"}]}]},{include:"#term"}]},bindClassTerm:{patterns:[{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"}},patterns:[{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",end:`(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)`,endCaptures:{0:{name:"entity.name.function strong emphasis"}},patterns:[{include:"#attributeIdentifier"}]},{begin:"\\[",captures:{0:{name:"punctuation.definition.tag"}},end:"\\]",patterns:[{include:"#type"}]},{include:"#bindTermArgs"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#literalClassType"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#term"}]}]},bindClassType:{patterns:[{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"}},patterns:[{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",end:`(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)`,endCaptures:{0:{name:"entity.name.function strong emphasis"}},patterns:[{include:"#attributeIdentifier"}]},{begin:"\\[",captures:{0:{name:"punctuation.definition.tag"}},end:"\\]",patterns:[{include:"#type"}]},{include:"#bindTermArgs"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#literalClassType"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#literalClassType"}]}]},bindConstructor:{patterns:[{begin:"(?:(?<=(?:[^[:word:]]exception|^exception))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(:)|(\\bof\\b)|((?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"punctuation.definition.tag"},3:{name:"support.type strong"}},patterns:[{include:"#attributeIdentifier"},{match:"\\.\\.",name:"variable.other.class.js message.error variable.interpolation string.regexp"},{match:"\\b(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\\b(?![[:space:]]*(?:\\.|\\([^\\*]))",name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#type"}]}]},bindSignature:{patterns:[{include:"#comment"},{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#comment"},{include:"#pathModuleExtended"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#signature"}]}]},bindStructure:{patterns:[{include:"#comment"},{begin:"(?:(?<=(?:[^[:word:]]and|^and))(?![[:word:]]))|(?=[[:upper:]])",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])(:(?!=))|(:?=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"}},patterns:[{include:"#comment"},{match:"\\bmodule\\b",name:"markup.inserted constant.language support.constant.property-value entity.name.filename"},{match:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",name:"entity.name.function strong emphasis"},{begin:"\\((?!\\))",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{include:"#comment"},{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"}},end:"(?=\\))",patterns:[{include:"#signature"}]},{include:"#variableModule"}]},{include:"#literalUnit"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\b(and)\\b|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"},2:{name:"support.type strong"}},patterns:[{include:"#signature"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:=|^:=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\b(?:(and)|(with))\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#structure"}]}]},bindTerm:{patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",end:"(\\bmodule\\b)|(\\bopen\\b)|(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},4:{name:"support.type strong"}},patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",end:`(?=\\b(?:module|open)\\b)|(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(\\brec\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))`,endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"entity.name.function strong emphasis"}},patterns:[{include:"#attributeIdentifier"},{include:"#comment"}]},{begin:"(?:(?<=(?:[^[:word:]]rec|^rec))(?![[:word:]]))",end:`((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?=[^[:space:][:alpha:]])`,endCaptures:{0:{name:"entity.name.function strong emphasis"}},patterns:[{include:"#bindTermArgs"}]},{include:"#bindTermArgs"}]},{begin:"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#declModule"}]},{begin:"(?:(?<=(?:[^[:word:]]open|^open))(?![[:word:]]))",end:"(?=\\bin\\b)|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#pathModuleSimple"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"support.type strong"}},patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\btype\\b|(?=[^[:space:]])",endCaptures:{0:{name:"keyword.control"}}},{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#pattern"}]},{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#term"}]}]},bindTermArgs:{patterns:[{applyEndPatternLast:!0,begin:"~|\\?",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:":|(?=[^[:space:]])",endCaptures:{0:{name:"keyword"}},patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]~|^~|[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?<=\\))`,endCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}},patterns:[{include:"#comment"},{begin:"\\((?!\\*)",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{begin:"(?<=\\()",end:":|=",endCaptures:{0:{name:"keyword"}},patterns:[{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}]},{begin:"(?<=:)",end:"=|(?=\\))",endCaptures:{0:{name:"keyword"}},patterns:[{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=\\))",patterns:[{include:"#term"}]}]}]}]},{include:"#pattern"}]},bindType:{patterns:[{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]type|^type))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\+=|=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#attributeIdentifier"},{include:"#pathType"},{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"entity.name.function strong"},{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},patterns:[{include:"#bindConstructor"}]}]},comment:{patterns:[{include:"#attribute"},{include:"#extension"},{include:"#commentBlock"},{include:"#commentDoc"}]},commentBlock:{begin:"\\(\\*(?!\\*[^\\)])",contentName:"emphasis",end:"\\*\\)",name:"comment constant.regexp meta.separator.markdown",patterns:[{include:"#commentBlock"},{include:"#commentDoc"}]},commentDoc:{begin:"\\(\\*\\*",end:"\\*\\)",name:"comment constant.regexp meta.separator.markdown",patterns:[{match:"\\*"},{include:"#comment"}]},decl:{patterns:[{include:"#declClass"},{include:"#declException"},{include:"#declInclude"},{include:"#declModule"},{include:"#declOpen"},{include:"#declTerm"},{include:"#declType"}]},declClass:{begin:"\\bclass\\b",beginCaptures:{0:{name:"entity.name.class constant.numeric markup.underline"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#comment"},{include:"#pragma"},{begin:"(?:(?<=(?:[^[:word:]]class|^class))(?![[:word:]]))",beginCaptures:{0:{name:"entity.name.class constant.numeric markup.underline"}},end:"\\btype\\b|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",endCaptures:{0:{name:"keyword"}},patterns:[{include:"#bindClassTerm"}]},{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#bindClassType"}]}]},declException:{begin:"\\bexception\\b",beginCaptures:{0:{name:"keyword markup.underline"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#attributeIdentifier"},{include:"#comment"},{include:"#pragma"},{include:"#bindConstructor"}]},declInclude:{begin:"\\binclude\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#attributeIdentifier"},{include:"#comment"},{include:"#pragma"},{include:"#signature"}]},declModule:{begin:"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))|\\bmodule\\b",beginCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#comment"},{include:"#pragma"},{begin:"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",end:"(\\btype\\b)|(?=[[:upper:]])",endCaptures:{0:{name:"keyword"}},patterns:[{include:"#attributeIdentifier"},{include:"#comment"},{match:"\\brec\\b",name:"variable.other.class.js message.error variable.interpolation string.regexp"}]},{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#bindSignature"}]},{begin:"(?=[[:upper:]])",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#bindStructure"}]}]},declOpen:{begin:"\\bopen\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#attributeIdentifier"},{include:"#comment"},{include:"#pragma"},{include:"#pathModuleExtended"}]},declTerm:{begin:"\\b(?:(external|val)|(method)|(let))\\b(!?)",beginCaptures:{1:{name:"support.type markup.underline"},2:{name:"storage.type markup.underline"},3:{name:"keyword.control markup.underline"},4:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#comment"},{include:"#pragma"},{include:"#bindTerm"}]},declType:{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))|\\btype\\b",beginCaptures:{0:{name:"keyword markup.underline"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#comment"},{include:"#pragma"},{include:"#bindType"}]},extension:{begin:"(\\[)((?<![#\\-:!?.@*/&%^+<=>|~$])%{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",beginCaptures:{1:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"\\]",endCaptures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},patterns:[{include:"#attributePayload"}]},literal:{patterns:[{include:"#termConstructor"},{include:"#literalArray"},{include:"#literalBoolean"},{include:"#literalCharacter"},{include:"#literalList"},{include:"#literalNumber"},{include:"#literalObjectTerm"},{include:"#literalString"},{include:"#literalRecord"},{include:"#literalUnit"}]},literalArray:{begin:"\\[\\|",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},end:"\\|\\]",patterns:[{include:"#term"}]},literalBoolean:{match:"\\bfalse|true\\b",name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},literalCharacter:{begin:"(?<![[:word:]])'",end:"'",name:"markup.punctuation.quote.beginning",patterns:[{include:"#literalCharacterEscape"}]},literalCharacterEscape:{match:`\\\\(?:[\\\\"'ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])`},literalClassType:{patterns:[{include:"#comment"},{begin:"\\bobject\\b",captures:{0:{name:"punctuation.definition.tag emphasis"}},end:"\\bend\\b",patterns:[{begin:"\\binherit\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{begin:"\\bas\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#variablePattern"}]},{include:"#type"}]},{include:"#pattern"},{include:"#declTerm"}]},{begin:"\\[",end:"\\]"}]},literalList:{patterns:[{begin:"\\[",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},end:"\\]",patterns:[{include:"#term"}]}]},literalNumber:{match:"(?<![[:alpha:]])[[:digit:]][[:digit:]]*(\\.[[:digit:]][[:digit:]]*)?",name:"constant.numeric"},literalObjectTerm:{patterns:[{include:"#comment"},{begin:"\\bobject\\b",captures:{0:{name:"punctuation.definition.tag emphasis"}},end:"\\bend\\b",patterns:[{begin:"\\binherit\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{begin:"\\bas\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#variablePattern"}]},{include:"#term"}]},{include:"#pattern"},{include:"#declTerm"}]},{begin:"\\[",end:"\\]"}]},literalRecord:{begin:"\\{",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong strong"}},end:"\\}",patterns:[{begin:"(?<=\\{|;)",end:"(:)|(=)|(;)|(with)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},4:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixSimple"},{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",end:"(:)|(=)|(;)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(;)|(=)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"support.type strong"}},patterns:[{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:";|(?=\\})",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#term"}]}]},literalString:{patterns:[{begin:'"',end:'"',name:"string beginning.punctuation.definition.quote.markdown",patterns:[{include:"#literalStringEscape"}]},{begin:"(\\{)([_[:lower:]]*?)(\\|)",end:"(\\|)(\\2)(\\})",name:"string beginning.punctuation.definition.quote.markdown",patterns:[{include:"#literalStringEscape"}]}]},literalStringEscape:{match:'\\\\(?:[\\\\"ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])'},literalUnit:{match:"\\(\\)",name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},pathModuleExtended:{patterns:[{include:"#pathModulePrefixExtended"},{match:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",name:"entity.name.class constant.numeric"}]},pathModulePrefixExtended:{begin:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$|\\()",beginCaptures:{0:{name:"entity.name.class constant.numeric"}},end:"(?![[:space:]\\.]|$|\\()",patterns:[{include:"#comment"},{begin:"\\(",captures:{0:{name:"keyword.control"}},end:"\\)",patterns:[{match:"((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",name:"string.other.link variable.language variable.parameter emphasis"},{include:"#structure"}]},{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"keyword strong"}},end:"((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*(?:$|\\()))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))|(?![[:space:]\\.[:upper:]]|$|\\()",endCaptures:{1:{name:"entity.name.class constant.numeric"},2:{name:"entity.name.function strong"},3:{name:"string.other.link variable.language variable.parameter emphasis"}}}]},pathModulePrefixExtendedParens:{begin:"\\(",captures:{0:{name:"keyword.control"}},end:"\\)",patterns:[{match:"((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",name:"string.other.link variable.language variable.parameter emphasis"},{include:"#structure"}]},pathModulePrefixSimple:{begin:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.)",beginCaptures:{0:{name:"entity.name.class constant.numeric"}},end:"(?![[:space:]\\.])",patterns:[{include:"#comment"},{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"keyword strong"}},end:"((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*))|(?![[:space:]\\.[:upper:]])",endCaptures:{1:{name:"entity.name.class constant.numeric"},2:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}}}]},pathModuleSimple:{patterns:[{include:"#pathModulePrefixSimple"},{match:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",name:"entity.name.class constant.numeric"}]},pathRecord:{patterns:[{begin:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,end:"(?=[^[:space:]\\.])(?!\\(\\*)",patterns:[{include:"#comment"},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\.|^\\.))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"keyword strong"}},end:`((?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$]))|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|mutable|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=\\))|(?<=\\])`,endCaptures:{1:{name:"keyword strong"},2:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixSimple"},{begin:"\\((?!\\*)",captures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"\\)",patterns:[{include:"#term"}]},{begin:"\\[",captures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"\\]",patterns:[{include:"#pattern"}]}]}]}]},pattern:{patterns:[{include:"#comment"},{include:"#patternArray"},{include:"#patternLazy"},{include:"#patternList"},{include:"#patternMisc"},{include:"#patternModule"},{include:"#patternRecord"},{include:"#literal"},{include:"#patternParens"},{include:"#patternType"},{include:"#variablePattern"},{include:"#termOperator"}]},patternArray:{begin:"\\[\\|",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},end:"\\|\\]",patterns:[{include:"#pattern"}]},patternLazy:{match:"lazy",name:"variable.other.class.js message.error variable.interpolation string.regexp"},patternList:{begin:"\\[",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}},end:"\\]",patterns:[{include:"#pattern"}]},patternMisc:{captures:{1:{name:"string.regexp strong"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},match:"((?<![#\\-:!?.@*/&%^+<=>|~$]),(?![#\\-:!?.@*/&%^+<=>|~$]))|([#\\-:!?.@*/&%^+<=>|~$]+)|\\b(as)\\b"},patternModule:{begin:"\\bmodule\\b",beginCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}},end:"(?=\\))",patterns:[{include:"#declModule"}]},patternParens:{begin:"\\((?!\\))",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{include:"#comment"},{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"}},end:"(?=\\))",patterns:[{include:"#type"}]},{include:"#pattern"}]},patternRecord:{begin:"\\{",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong strong"}},end:"\\}",patterns:[{begin:"(?<=\\{|;)",end:"(:)|(=)|(;)|(with)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},4:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixSimple"},{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",end:"(:)|(=)|(;)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(;)|(=)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"support.type strong"}},patterns:[{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:";|(?=\\})",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#pattern"}]}]},patternType:{begin:"\\btype\\b",beginCaptures:{0:{name:"keyword"}},end:"(?=\\))",patterns:[{include:"#declType"}]},pragma:{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"punctuation.definition.tag"}},end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#comment"},{include:"#literalNumber"},{include:"#literalString"}]},signature:{patterns:[{include:"#comment"},{include:"#signatureLiteral"},{include:"#signatureFunctor"},{include:"#pathModuleExtended"},{include:"#signatureParens"},{include:"#signatureRecovered"},{include:"#signatureConstraints"}]},signatureConstraints:{begin:"\\bwith\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"}},end:"(?=\\))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{begin:"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",end:"\\b(?:(module)|(type))\\b",endCaptures:{1:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"},2:{name:"keyword"}}},{include:"#declModule"},{include:"#declType"}]},signatureFunctor:{patterns:[{begin:"\\bfunctor\\b",beginCaptures:{0:{name:"keyword"}},end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{begin:"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",end:"(\\(\\))|(\\((?!\\)))",endCaptures:{1:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},2:{name:"punctuation.definition.tag"}}},{begin:"(?<=\\()",end:"(:)|(\\))",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"punctuation.definition.tag"}},patterns:[{include:"#variableModule"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#signature"}]},{begin:"(?<=\\))",end:"(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",endCaptures:{1:{name:"punctuation.definition.tag"},2:{name:"support.type strong"}}},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#signature"}]}]},{match:"(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",name:"support.type strong"}]},signatureLiteral:{begin:"\\bsig\\b",captures:{0:{name:"punctuation.definition.tag emphasis"}},end:"\\bend\\b",patterns:[{include:"#comment"},{include:"#pragma"},{include:"#decl"}]},signatureParens:{begin:"\\((?!\\))",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{include:"#comment"},{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"}},end:"(?=\\))",patterns:[{include:"#signature"}]},{include:"#signature"}]},signatureRecovered:{patterns:[{begin:"\\(|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]include|^include|[^[:word:]]open|^open))(?![[:word:]]))",end:"\\bmodule\\b|(?!$|[[:space:]]|\\bmodule\\b)",endCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}}},{begin:"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{begin:"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",end:"\\btype\\b",endCaptures:{0:{name:"keyword"}}},{begin:"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",end:"\\bof\\b",endCaptures:{0:{name:"punctuation.definition.tag"}}},{begin:"(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#signature"}]}]}]},structure:{patterns:[{include:"#comment"},{include:"#structureLiteral"},{include:"#structureFunctor"},{include:"#pathModuleExtended"},{include:"#structureParens"}]},structureFunctor:{patterns:[{begin:"\\bfunctor\\b",beginCaptures:{0:{name:"keyword"}},end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{begin:"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",end:"(\\(\\))|(\\((?!\\)))",endCaptures:{1:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"},2:{name:"punctuation.definition.tag"}}},{begin:"(?<=\\()",end:"(:)|(\\))",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"punctuation.definition.tag"}},patterns:[{include:"#variableModule"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\)",endCaptures:{0:{name:"punctuation.definition.tag"}},patterns:[{include:"#signature"}]},{begin:"(?<=\\))",end:"(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",endCaptures:{1:{name:"punctuation.definition.tag"},2:{name:"support.type strong"}}},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",patterns:[{include:"#structure"}]}]},{match:"(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",name:"support.type strong"}]},structureLiteral:{begin:"\\bstruct\\b",captures:{0:{name:"punctuation.definition.tag emphasis"}},end:"\\bend\\b",patterns:[{include:"#comment"},{include:"#pragma"},{include:"#decl"}]},structureParens:{begin:"\\(",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{include:"#structureUnpack"},{include:"#structure"}]},structureUnpack:{begin:"\\bval\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"(?=\\))"},term:{patterns:[{include:"#termLet"},{include:"#termAtomic"}]},termAtomic:{patterns:[{include:"#comment"},{include:"#termConditional"},{include:"#termConstructor"},{include:"#termDelim"},{include:"#termFor"},{include:"#termFunction"},{include:"#literal"},{include:"#termMatch"},{include:"#termMatchRule"},{include:"#termPun"},{include:"#termOperator"},{include:"#termTry"},{include:"#termWhile"},{include:"#pathRecord"}]},termConditional:{match:"\\b(?:if|then|else)\\b",name:"keyword.control"},termConstructor:{patterns:[{include:"#pathModulePrefixSimple"},{match:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",name:"constant.language constant.numeric entity.other.attribute-name.id.css strong"}]},termDelim:{patterns:[{begin:"\\((?!\\))",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{include:"#term"}]},{begin:"\\bbegin\\b",captures:{0:{name:"punctuation.definition.tag"}},end:"\\bend\\b",patterns:[{include:"#attributeIdentifier"},{include:"#term"}]}]},termFor:{patterns:[{begin:"\\bfor\\b",beginCaptures:{0:{name:"keyword.control"}},end:"\\bdone\\b",endCaptures:{0:{name:"keyword.control"}},patterns:[{begin:"(?:(?<=(?:[^[:word:]]for|^for))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",endCaptures:{0:{name:"support.type strong"}},patterns:[{include:"#pattern"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"\\b(?:downto|to)\\b",endCaptures:{0:{name:"keyword.control"}},patterns:[{include:"#term"}]},{begin:"(?:(?<=(?:[^[:word:]]to|^to))(?![[:word:]]))",end:"\\bdo\\b",endCaptures:{0:{name:"keyword.control"}},patterns:[{include:"#term"}]},{begin:"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",end:"(?=\\bdone\\b)",patterns:[{include:"#term"}]}]}]},termFunction:{captures:{1:{name:"storage.type"},2:{name:"storage.type"}},match:"\\b(?:(fun)|(function))\\b"},termLet:{patterns:[{begin:"(?:(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=;|\\())(?=[[:space:]]|\\blet\\b)|(?:(?<=(?:[^[:word:]]begin|^begin|[^[:word:]]do|^do|[^[:word:]]else|^else|[^[:word:]]in|^in|[^[:word:]]struct|^struct|[^[:word:]]then|^then|[^[:word:]]try|^try))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]@@|^@@))(?![#\\-:!?.@*/&%^+<=>|~$]))[[:space:]]+",end:"\\b(?:(and)|(let))\\b|(?=[^[:space:]])(?!\\(\\*)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"},2:{name:"storage.type markup.underline"}},patterns:[{include:"#comment"}]},{begin:"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]let|^let))(?![[:word:]]))|(let)",beginCaptures:{1:{name:"storage.type markup.underline"}},end:"\\b(?:(and)|(in))\\b|(?=\\}|\\)|\\]|\\b(?:end|class|exception|external|include|inherit|initializer|let|method|module|open|type|val)\\b)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp markup.underline"},2:{name:"storage.type markup.underline"}},patterns:[{include:"#bindTerm"}]}]},termMatch:{begin:"\\bmatch\\b",captures:{0:{name:"keyword.control"}},end:"\\bwith\\b",patterns:[{include:"#term"}]},termMatchRule:{patterns:[{begin:"(?:(?<=(?:[^[:word:]]fun|^fun|[^[:word:]]function|^function|[^[:word:]]with|^with))(?![[:word:]]))",end:"(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",endCaptures:{1:{name:"support.type strong"},2:{name:"support.type strong"}},patterns:[{include:"#comment"},{include:"#attributeIdentifier"},{include:"#pattern"}]},{begin:"(?:(?<=(?:[^\\[#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"support.type strong"}},end:"(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",endCaptures:{1:{name:"support.type strong"},2:{name:"support.type strong"}},patterns:[{include:"#pattern"},{begin:"\\bwhen\\b",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:"(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",patterns:[{include:"#term"}]}]}]},termOperator:{patterns:[{begin:"(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"keyword"}},end:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,endCaptures:{0:{name:"entity.name.function"}}},{captures:{0:{name:"keyword.control strong"}},match:"<-"},{captures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},match:"(,|[#\\-:!?.@*/&%^+<=>|~$]+)|(;)"},{match:"\\b(?:and|assert|asr|land|lazy|lsr|lxor|mod|new|or)\\b",name:"variable.other.class.js message.error variable.interpolation string.regexp"}]},termPun:{applyEndPatternLast:!0,begin:"(?<![#\\-:!?.@*/&%^+<=>|~$])\\?|~(?![#\\-:!?.@*/&%^+<=>|~$])",beginCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},end:":|(?=[^[:space:]:])",endCaptures:{0:{name:"keyword"}},patterns:[{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?|[^#\\-:!?.@*/&%^+<=>|~$]~|^~))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,endCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}}}]},termTry:{begin:"\\btry\\b",captures:{0:{name:"keyword.control"}},end:"\\bwith\\b",patterns:[{include:"#term"}]},termWhile:{patterns:[{begin:"\\bwhile\\b",beginCaptures:{0:{name:"keyword.control"}},end:"\\bdone\\b",endCaptures:{0:{name:"keyword.control"}},patterns:[{begin:"(?:(?<=(?:[^[:word:]]while|^while))(?![[:word:]]))",end:"\\bdo\\b",endCaptures:{0:{name:"keyword.control"}},patterns:[{include:"#term"}]},{begin:"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",end:"(?=\\bdone\\b)",patterns:[{include:"#term"}]}]}]},type:{patterns:[{include:"#comment"},{match:"\\bnonrec\\b",name:"variable.other.class.js message.error variable.interpolation string.regexp"},{include:"#pathModulePrefixExtended"},{include:"#typeLabel"},{include:"#typeObject"},{include:"#typeOperator"},{include:"#typeParens"},{include:"#typePolymorphicVariant"},{include:"#typeRecord"},{include:"#typeConstructor"}]},typeConstructor:{patterns:[{begin:`(_)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(')((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=[^\\*]\\)|\\])`,beginCaptures:{1:{name:"comment constant.regexp meta.separator.markdown"},3:{name:"string.other.link variable.language variable.parameter emphasis strong emphasis"},4:{name:"keyword.control emphasis"}},end:`(?=\\((?!\\*)|\\*|:|,|=|\\.|>|-|\\{|\\[|\\+|\\}|\\)|\\]|;|\\|)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[:space:]*(?!\\(\\*|[[:word:]])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)`,endCaptures:{1:{name:"entity.name.function strong"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixExtended"}]}]},typeLabel:{patterns:[{begin:`(\\??)((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$]))`,captures:{1:{name:"keyword strong emphasis"},2:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"},3:{name:"keyword"}},end:"(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",patterns:[{include:"#type"}]}]},typeModule:{begin:"\\bmodule\\b",beginCaptures:{0:{name:"markup.inserted constant.language support.constant.property-value entity.name.filename"}},end:"(?=\\))",patterns:[{include:"#pathModuleExtended"},{include:"#signatureConstraints"}]},typeObject:{begin:"<",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong strong"}},end:">",patterns:[{begin:"(?<=<|;)",end:"(:)|(?=>)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},4:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixSimple"},{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(;)|(?=>)",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"support.type strong"}},patterns:[{include:"#type"}]}]},typeOperator:{patterns:[{match:",|;|[#\\-:!?.@*/&%^+<=>|~$]+",name:"variable.other.class.js message.error variable.interpolation string.regexp strong"}]},typeParens:{begin:"\\(",captures:{0:{name:"punctuation.definition.tag"}},end:"\\)",patterns:[{match:",",name:"variable.other.class.js message.error variable.interpolation string.regexp"},{include:"#typeModule"},{include:"#type"}]},typePolymorphicVariant:{begin:"\\[",end:"\\]",patterns:[]},typeRecord:{begin:"\\{",captures:{0:{name:"constant.language constant.numeric entity.other.attribute-name.id.css strong strong"}},end:"\\}",patterns:[{begin:"(?<=\\{|;)",end:"(:)|(=)|(;)|(with)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},4:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#comment"},{include:"#pathModulePrefixSimple"},{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",end:"(:)|(=)|(;)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp strong"},2:{name:"support.type strong"},3:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{match:`(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)`,name:"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:"(;)|(=)|(?=\\})",endCaptures:{1:{name:"variable.other.class.js message.error variable.interpolation string.regexp"},2:{name:"support.type strong"}},patterns:[{include:"#type"}]},{begin:"(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",end:";|(?=\\})",endCaptures:{0:{name:"variable.other.class.js message.error variable.interpolation string.regexp"}},patterns:[{include:"#type"}]}]},variableModule:{captures:{0:{name:"string.other.link variable.language variable.parameter emphasis"}},match:"(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)"},variablePattern:{captures:{1:{name:"comment constant.regexp meta.separator.markdown"},2:{name:"string.other.link variable.language variable.parameter emphasis"}},match:`(\\b_\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))`}},scopeName:"source.ocaml"});var n=[e];export{n as default}; diff --git a/assets/chunks/one-dark-pro.BTtaZsq5.js b/assets/chunks/one-dark-pro.BTtaZsq5.js new file mode 100644 index 000000000..89cf50939 --- /dev/null +++ b/assets/chunks/one-dark-pro.BTtaZsq5.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#282c34","activityBar.foreground":"#d7dae0","activityBarBadge.background":"#4d78cc","activityBarBadge.foreground":"#f8fafd","badge.background":"#282c34","button.background":"#404754","button.secondaryBackground":"#30333d","button.secondaryForeground":"#c0bdbd","checkbox.border":"#404754","debugToolBar.background":"#21252b",descriptionForeground:"#abb2bf","diffEditor.insertedTextBackground":"#00809b33","dropdown.background":"#21252b","dropdown.border":"#21252b","editor.background":"#282c34","editor.findMatchBackground":"#d19a6644","editor.findMatchBorder":"#ffffff5a","editor.findMatchHighlightBackground":"#ffffff22","editor.foreground":"#abb2bf","editor.lineHighlightBackground":"#2c313c","editor.selectionBackground":"#67769660","editor.selectionHighlightBackground":"#ffffff10","editor.selectionHighlightBorder":"#dddddd","editor.wordHighlightBackground":"#d2e0ff2f","editor.wordHighlightBorder":"#7f848e","editor.wordHighlightStrongBackground":"#abb2bf26","editor.wordHighlightStrongBorder":"#7f848e","editorBracketHighlight.foreground1":"#d19a66","editorBracketHighlight.foreground2":"#c678dd","editorBracketHighlight.foreground3":"#56b6c2","editorBracketMatch.background":"#515a6b","editorBracketMatch.border":"#515a6b","editorCursor.background":"#ffffffc9","editorCursor.foreground":"#528bff","editorError.foreground":"#c24038","editorGroup.background":"#181a1f","editorGroup.border":"#181a1f","editorGroupHeader.tabsBackground":"#21252b","editorGutter.addedBackground":"#109868","editorGutter.deletedBackground":"#9A353D","editorGutter.modifiedBackground":"#948B60","editorHoverWidget.background":"#21252b","editorHoverWidget.border":"#181a1f","editorHoverWidget.highlightForeground":"#61afef","editorIndentGuide.activeBackground":"#c8c8c859","editorIndentGuide.background":"#3b4048","editorInlayHint.background":"#2c313c","editorInlayHint.foreground":"#abb2bf","editorLineNumber.activeForeground":"#abb2bf","editorLineNumber.foreground":"#495162","editorMarkerNavigation.background":"#21252b","editorOverviewRuler.addedBackground":"#109868","editorOverviewRuler.deletedBackground":"#9A353D","editorOverviewRuler.modifiedBackground":"#948B60","editorRuler.foreground":"#abb2bf26","editorSuggestWidget.background":"#21252b","editorSuggestWidget.border":"#181a1f","editorSuggestWidget.selectedBackground":"#2c313a","editorWarning.foreground":"#d19a66","editorWhitespace.foreground":"#ffffff1d","editorWidget.background":"#21252b",focusBorder:"#3e4452","gitDecoration.ignoredResourceForeground":"#636b78","input.background":"#1d1f23","input.foreground":"#abb2bf","list.activeSelectionBackground":"#2c313a","list.activeSelectionForeground":"#d7dae0","list.focusBackground":"#323842","list.focusForeground":"#f0f0f0","list.highlightForeground":"#ecebeb","list.hoverBackground":"#2c313a","list.hoverForeground":"#abb2bf","list.inactiveSelectionBackground":"#323842","list.inactiveSelectionForeground":"#d7dae0","list.warningForeground":"#d19a66","menu.foreground":"#abb2bf","menu.separatorBackground":"#343a45","minimapGutter.addedBackground":"#109868","minimapGutter.deletedBackground":"#9A353D","minimapGutter.modifiedBackground":"#948B60","panel.border":"#3e4452","panelSectionHeader.background":"#21252b","peekViewEditor.background":"#1b1d23","peekViewEditor.matchHighlightBackground":"#29244b","peekViewResult.background":"#22262b","scrollbar.shadow":"#23252c","scrollbarSlider.activeBackground":"#747d9180","scrollbarSlider.background":"#4e566660","scrollbarSlider.hoverBackground":"#5a637580","settings.focusedRowBackground":"#282c34","settings.headerForeground":"#fff","sideBar.background":"#21252b","sideBar.foreground":"#abb2bf","sideBarSectionHeader.background":"#282c34","sideBarSectionHeader.foreground":"#abb2bf","statusBar.background":"#21252b","statusBar.debuggingBackground":"#cc6633","statusBar.debuggingBorder":"#ff000000","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#9da5b4","statusBar.noFolderBackground":"#21252b","statusBarItem.remoteBackground":"#4d78cc","statusBarItem.remoteForeground":"#f8fafd","tab.activeBackground":"#282c34","tab.activeBorder":"#b4b4b4","tab.activeForeground":"#dcdcdc","tab.border":"#181a1f","tab.hoverBackground":"#323842","tab.inactiveBackground":"#21252b","tab.unfocusedHoverBackground":"#323842","terminal.ansiBlack":"#3f4451","terminal.ansiBlue":"#4aa5f0","terminal.ansiBrightBlack":"#4f5666","terminal.ansiBrightBlue":"#4dc4ff","terminal.ansiBrightCyan":"#4cd1e0","terminal.ansiBrightGreen":"#a5e075","terminal.ansiBrightMagenta":"#de73ff","terminal.ansiBrightRed":"#ff616e","terminal.ansiBrightWhite":"#e6e6e6","terminal.ansiBrightYellow":"#f0a45d","terminal.ansiCyan":"#42b3c2","terminal.ansiGreen":"#8cc265","terminal.ansiMagenta":"#c162de","terminal.ansiRed":"#e05561","terminal.ansiWhite":"#d7dae0","terminal.ansiYellow":"#d18f52","terminal.background":"#282c34","terminal.border":"#3e4452","terminal.foreground":"#abb2bf","terminal.selectionBackground":"#abb2bf30","textBlockQuote.background":"#2e3440","textBlockQuote.border":"#4b5362","textLink.foreground":"#61afef","textPreformat.foreground":"#d19a66","titleBar.activeBackground":"#282c34","titleBar.activeForeground":"#9da5b4","titleBar.inactiveBackground":"#282c34","titleBar.inactiveForeground":"#6b717d","tree.indentGuidesStroke":"#ffffff1d","walkThrough.embeddedEditorBackground":"#2e3440","welcomePage.buttonHoverBackground":"#404754"},displayName:"One Dark Pro",name:"one-dark-pro",semanticHighlighting:!0,semanticTokenColors:{"annotation:dart":{foreground:"#d19a66"},enumMember:{foreground:"#56b6c2"},macro:{foreground:"#d19a66"},memberOperatorOverload:{foreground:"#c678dd"},"parameter.label:dart":{foreground:"#abb2bf"},"property:dart":{foreground:"#d19a66"},tomlArrayKey:{foreground:"#e5c07b"},"variable.constant":{foreground:"#d19a66"},"variable.defaultLibrary":{foreground:"#e5c07b"},"variable:dart":{foreground:"#d19a66"}},tokenColors:[{scope:"meta.embedded",settings:{foreground:"#abb2bf"}},{scope:"punctuation.definition.delayed.unison,punctuation.definition.list.begin.unison,punctuation.definition.list.end.unison,punctuation.definition.ability.begin.unison,punctuation.definition.ability.end.unison,punctuation.operator.assignment.as.unison,punctuation.separator.pipe.unison,punctuation.separator.delimiter.unison,punctuation.definition.hash.unison",settings:{foreground:"#e06c75"}},{scope:"variable.other.generic-type.haskell",settings:{foreground:"#c678dd"}},{scope:"storage.type.haskell",settings:{foreground:"#d19a66"}},{scope:"support.variable.magic.python",settings:{foreground:"#e06c75"}},{scope:"punctuation.separator.period.python,punctuation.separator.element.python,punctuation.parenthesis.begin.python,punctuation.parenthesis.end.python",settings:{foreground:"#abb2bf"}},{scope:"variable.parameter.function.language.special.self.python",settings:{foreground:"#e5c07b"}},{scope:"variable.parameter.function.language.special.cls.python",settings:{foreground:"#e5c07b"}},{scope:"storage.modifier.lifetime.rust",settings:{foreground:"#abb2bf"}},{scope:"support.function.std.rust",settings:{foreground:"#61afef"}},{scope:"entity.name.lifetime.rust",settings:{foreground:"#e5c07b"}},{scope:"variable.language.rust",settings:{foreground:"#e06c75"}},{scope:"support.constant.edge",settings:{foreground:"#c678dd"}},{scope:"constant.other.character-class.regexp",settings:{foreground:"#e06c75"}},{scope:["keyword.operator.word"],settings:{foreground:"#c678dd"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#d19a66"}},{scope:"variable.parameter.function",settings:{foreground:"#abb2bf"}},{scope:"comment markup.link",settings:{foreground:"#5c6370"}},{scope:"markup.changed.diff",settings:{foreground:"#e5c07b"}},{scope:"meta.diff.header.from-file,meta.diff.header.to-file,punctuation.definition.from-file.diff,punctuation.definition.to-file.diff",settings:{foreground:"#61afef"}},{scope:"markup.inserted.diff",settings:{foreground:"#98c379"}},{scope:"markup.deleted.diff",settings:{foreground:"#e06c75"}},{scope:"meta.function.c,meta.function.cpp",settings:{foreground:"#e06c75"}},{scope:"punctuation.section.block.begin.bracket.curly.cpp,punctuation.section.block.end.bracket.curly.cpp,punctuation.terminator.statement.c,punctuation.section.block.begin.bracket.curly.c,punctuation.section.block.end.bracket.curly.c,punctuation.section.parens.begin.bracket.round.c,punctuation.section.parens.end.bracket.round.c,punctuation.section.parameters.begin.bracket.round.c,punctuation.section.parameters.end.bracket.round.c",settings:{foreground:"#abb2bf"}},{scope:"punctuation.separator.key-value",settings:{foreground:"#abb2bf"}},{scope:"keyword.operator.expression.import",settings:{foreground:"#61afef"}},{scope:"support.constant.math",settings:{foreground:"#e5c07b"}},{scope:"support.constant.property.math",settings:{foreground:"#d19a66"}},{scope:"variable.other.constant",settings:{foreground:"#e5c07b"}},{scope:["storage.type.annotation.java","storage.type.object.array.java"],settings:{foreground:"#e5c07b"}},{scope:"source.java",settings:{foreground:"#e06c75"}},{scope:"punctuation.section.block.begin.java,punctuation.section.block.end.java,punctuation.definition.method-parameters.begin.java,punctuation.definition.method-parameters.end.java,meta.method.identifier.java,punctuation.section.method.begin.java,punctuation.section.method.end.java,punctuation.terminator.java,punctuation.section.class.begin.java,punctuation.section.class.end.java,punctuation.section.inner-class.begin.java,punctuation.section.inner-class.end.java,meta.method-call.java,punctuation.section.class.begin.bracket.curly.java,punctuation.section.class.end.bracket.curly.java,punctuation.section.method.begin.bracket.curly.java,punctuation.section.method.end.bracket.curly.java,punctuation.separator.period.java,punctuation.bracket.angle.java,punctuation.definition.annotation.java,meta.method.body.java",settings:{foreground:"#abb2bf"}},{scope:"meta.method.java",settings:{foreground:"#61afef"}},{scope:"storage.modifier.import.java,storage.type.java,storage.type.generic.java",settings:{foreground:"#e5c07b"}},{scope:"keyword.operator.instanceof.java",settings:{foreground:"#c678dd"}},{scope:"meta.definition.variable.name.java",settings:{foreground:"#e06c75"}},{scope:"keyword.operator.logical",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.bitwise",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.channel",settings:{foreground:"#56b6c2"}},{scope:"support.constant.property-value.scss,support.constant.property-value.css",settings:{foreground:"#d19a66"}},{scope:"keyword.operator.css,keyword.operator.scss,keyword.operator.less",settings:{foreground:"#56b6c2"}},{scope:"support.constant.color.w3c-standard-color-name.css,support.constant.color.w3c-standard-color-name.scss",settings:{foreground:"#d19a66"}},{scope:"punctuation.separator.list.comma.css",settings:{foreground:"#abb2bf"}},{scope:"support.constant.color.w3c-standard-color-name.css",settings:{foreground:"#d19a66"}},{scope:"support.type.vendored.property-name.css",settings:{foreground:"#56b6c2"}},{scope:"support.module.node,support.type.object.module,support.module.node",settings:{foreground:"#e5c07b"}},{scope:"entity.name.type.module",settings:{foreground:"#e5c07b"}},{scope:"variable.other.readwrite,meta.object-literal.key,support.variable.property,support.variable.object.process,support.variable.object.node",settings:{foreground:"#e06c75"}},{scope:"support.constant.json",settings:{foreground:"#d19a66"}},{scope:["keyword.operator.expression.instanceof","keyword.operator.new","keyword.operator.ternary","keyword.operator.optional","keyword.operator.expression.keyof"],settings:{foreground:"#c678dd"}},{scope:"support.type.object.console",settings:{foreground:"#e06c75"}},{scope:"support.variable.property.process",settings:{foreground:"#d19a66"}},{scope:"entity.name.function,support.function.console",settings:{foreground:"#61afef"}},{scope:"keyword.operator.misc.rust",settings:{foreground:"#abb2bf"}},{scope:"keyword.operator.sigil.rust",settings:{foreground:"#c678dd"}},{scope:"keyword.operator.delete",settings:{foreground:"#c678dd"}},{scope:"support.type.object.dom",settings:{foreground:"#56b6c2"}},{scope:"support.variable.dom,support.variable.property.dom",settings:{foreground:"#e06c75"}},{scope:"keyword.operator.arithmetic,keyword.operator.comparison,keyword.operator.decrement,keyword.operator.increment,keyword.operator.relational",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.assignment.c,keyword.operator.comparison.c,keyword.operator.c,keyword.operator.increment.c,keyword.operator.decrement.c,keyword.operator.bitwise.shift.c,keyword.operator.assignment.cpp,keyword.operator.comparison.cpp,keyword.operator.cpp,keyword.operator.increment.cpp,keyword.operator.decrement.cpp,keyword.operator.bitwise.shift.cpp",settings:{foreground:"#c678dd"}},{scope:"punctuation.separator.delimiter",settings:{foreground:"#abb2bf"}},{scope:"punctuation.separator.c,punctuation.separator.cpp",settings:{foreground:"#c678dd"}},{scope:"support.type.posix-reserved.c,support.type.posix-reserved.cpp",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.sizeof.c,keyword.operator.sizeof.cpp",settings:{foreground:"#c678dd"}},{scope:"variable.parameter.function.language.python",settings:{foreground:"#d19a66"}},{scope:"support.type.python",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.logical.python",settings:{foreground:"#c678dd"}},{scope:"variable.parameter.function.python",settings:{foreground:"#d19a66"}},{scope:"punctuation.definition.arguments.begin.python,punctuation.definition.arguments.end.python,punctuation.separator.arguments.python,punctuation.definition.list.begin.python,punctuation.definition.list.end.python",settings:{foreground:"#abb2bf"}},{scope:"meta.function-call.generic.python",settings:{foreground:"#61afef"}},{scope:"constant.character.format.placeholder.other.python",settings:{foreground:"#d19a66"}},{scope:"keyword.operator",settings:{foreground:"#abb2bf"}},{scope:"keyword.operator.assignment.compound",settings:{foreground:"#c678dd"}},{scope:"keyword.operator.assignment.compound.js,keyword.operator.assignment.compound.ts",settings:{foreground:"#56b6c2"}},{scope:"keyword",settings:{foreground:"#c678dd"}},{scope:"entity.name.namespace",settings:{foreground:"#e5c07b"}},{scope:"variable",settings:{foreground:"#e06c75"}},{scope:"variable.c",settings:{foreground:"#abb2bf"}},{scope:"variable.language",settings:{foreground:"#e5c07b"}},{scope:"token.variable.parameter.java",settings:{foreground:"#abb2bf"}},{scope:"import.storage.java",settings:{foreground:"#e5c07b"}},{scope:"token.package.keyword",settings:{foreground:"#c678dd"}},{scope:"token.package",settings:{foreground:"#abb2bf"}},{scope:["entity.name.function","meta.require","support.function.any-method","variable.function"],settings:{foreground:"#61afef"}},{scope:"entity.name.type.namespace",settings:{foreground:"#e5c07b"}},{scope:"support.class, entity.name.type.class",settings:{foreground:"#e5c07b"}},{scope:"entity.name.class.identifier.namespace.type",settings:{foreground:"#e5c07b"}},{scope:["entity.name.class","variable.other.class.js","variable.other.class.ts"],settings:{foreground:"#e5c07b"}},{scope:"variable.other.class.php",settings:{foreground:"#e06c75"}},{scope:"entity.name.type",settings:{foreground:"#e5c07b"}},{scope:"keyword.control",settings:{foreground:"#c678dd"}},{scope:"control.elements, keyword.operator.less",settings:{foreground:"#d19a66"}},{scope:"keyword.other.special-method",settings:{foreground:"#61afef"}},{scope:"storage",settings:{foreground:"#c678dd"}},{scope:"token.storage",settings:{foreground:"#c678dd"}},{scope:"keyword.operator.expression.delete,keyword.operator.expression.in,keyword.operator.expression.of,keyword.operator.expression.instanceof,keyword.operator.new,keyword.operator.expression.typeof,keyword.operator.expression.void",settings:{foreground:"#c678dd"}},{scope:"token.storage.type.java",settings:{foreground:"#e5c07b"}},{scope:"support.function",settings:{foreground:"#56b6c2"}},{scope:"support.type.property-name",settings:{foreground:"#abb2bf"}},{scope:"support.type.property-name.toml, support.type.property-name.table.toml, support.type.property-name.array.toml",settings:{foreground:"#e06c75"}},{scope:"support.constant.property-value",settings:{foreground:"#abb2bf"}},{scope:"support.constant.font-name",settings:{foreground:"#d19a66"}},{scope:"meta.tag",settings:{foreground:"#abb2bf"}},{scope:"string",settings:{foreground:"#98c379"}},{scope:"constant.other.symbol",settings:{foreground:"#56b6c2"}},{scope:"constant.numeric",settings:{foreground:"#d19a66"}},{scope:"constant",settings:{foreground:"#d19a66"}},{scope:"punctuation.definition.constant",settings:{foreground:"#d19a66"}},{scope:"entity.name.tag",settings:{foreground:"#e06c75"}},{scope:"entity.other.attribute-name",settings:{foreground:"#d19a66"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#61afef"}},{scope:"entity.other.attribute-name.class.css",settings:{foreground:"#d19a66"}},{scope:"meta.selector",settings:{foreground:"#c678dd"}},{scope:"markup.heading",settings:{foreground:"#e06c75"}},{scope:"markup.heading punctuation.definition.heading, entity.name.section",settings:{foreground:"#61afef"}},{scope:"keyword.other.unit",settings:{foreground:"#e06c75"}},{scope:"markup.bold,todo.bold",settings:{foreground:"#d19a66"}},{scope:"punctuation.definition.bold",settings:{foreground:"#e5c07b"}},{scope:"markup.italic, punctuation.definition.italic,todo.emphasis",settings:{foreground:"#c678dd"}},{scope:"emphasis md",settings:{foreground:"#c678dd"}},{scope:"entity.name.section.markdown",settings:{foreground:"#e06c75"}},{scope:"punctuation.definition.heading.markdown",settings:{foreground:"#e06c75"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#e5c07b"}},{scope:"markup.heading.setext",settings:{foreground:"#abb2bf"}},{scope:"punctuation.definition.bold.markdown",settings:{foreground:"#d19a66"}},{scope:"markup.inline.raw.markdown",settings:{foreground:"#98c379"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#98c379"}},{scope:"punctuation.definition.raw.markdown",settings:{foreground:"#e5c07b"}},{scope:"punctuation.definition.list.markdown",settings:{foreground:"#e5c07b"}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","punctuation.definition.metadata.markdown"],settings:{foreground:"#e06c75"}},{scope:["beginning.punctuation.definition.list.markdown"],settings:{foreground:"#e06c75"}},{scope:"punctuation.definition.metadata.markdown",settings:{foreground:"#e06c75"}},{scope:"markup.underline.link.markdown,markup.underline.link.image.markdown",settings:{foreground:"#c678dd"}},{scope:"string.other.link.title.markdown,string.other.link.description.markdown",settings:{foreground:"#61afef"}},{scope:"markup.raw.monospace.asciidoc",settings:{foreground:"#98c379"}},{scope:"punctuation.definition.asciidoc",settings:{foreground:"#e5c07b"}},{scope:"markup.list.asciidoc",settings:{foreground:"#e5c07b"}},{scope:"markup.link.asciidoc,markup.other.url.asciidoc",settings:{foreground:"#c678dd"}},{scope:"string.unquoted.asciidoc,markup.other.url.asciidoc",settings:{foreground:"#61afef"}},{scope:"string.regexp",settings:{foreground:"#56b6c2"}},{scope:"punctuation.section.embedded, variable.interpolation",settings:{foreground:"#e06c75"}},{scope:"punctuation.section.embedded.begin,punctuation.section.embedded.end",settings:{foreground:"#c678dd"}},{scope:"invalid.illegal",settings:{foreground:"#ffffff"}},{scope:"invalid.illegal.bad-ampersand.html",settings:{foreground:"#abb2bf"}},{scope:"invalid.illegal.unrecognized-tag.html",settings:{foreground:"#e06c75"}},{scope:"invalid.broken",settings:{foreground:"#ffffff"}},{scope:"invalid.deprecated",settings:{foreground:"#ffffff"}},{scope:"invalid.deprecated.entity.other.attribute-name.html",settings:{foreground:"#d19a66"}},{scope:"invalid.unimplemented",settings:{foreground:"#ffffff"}},{scope:"source.json meta.structure.dictionary.json > string.quoted.json",settings:{foreground:"#e06c75"}},{scope:"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string",settings:{foreground:"#e06c75"}},{scope:"source.json meta.structure.dictionary.json > value.json > string.quoted.json,source.json meta.structure.array.json > value.json > string.quoted.json,source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation,source.json meta.structure.array.json > value.json > string.quoted.json > punctuation",settings:{foreground:"#98c379"}},{scope:"source.json meta.structure.dictionary.json > constant.language.json,source.json meta.structure.array.json > constant.language.json",settings:{foreground:"#56b6c2"}},{scope:"support.type.property-name.json",settings:{foreground:"#e06c75"}},{scope:"support.type.property-name.json punctuation",settings:{foreground:"#e06c75"}},{scope:"text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade",settings:{foreground:"#c678dd"}},{scope:"text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade",settings:{foreground:"#c678dd"}},{scope:"support.other.namespace.use.php,support.other.namespace.use-as.php,entity.other.alias.php,meta.interface.php",settings:{foreground:"#e5c07b"}},{scope:"keyword.operator.error-control.php",settings:{foreground:"#c678dd"}},{scope:"keyword.operator.type.php",settings:{foreground:"#c678dd"}},{scope:"punctuation.section.array.begin.php",settings:{foreground:"#abb2bf"}},{scope:"punctuation.section.array.end.php",settings:{foreground:"#abb2bf"}},{scope:"invalid.illegal.non-null-typehinted.php",settings:{foreground:"#f44747"}},{scope:"storage.type.php,meta.other.type.phpdoc.php,keyword.other.type.php,keyword.other.array.phpdoc.php",settings:{foreground:"#e5c07b"}},{scope:"meta.function-call.php,meta.function-call.object.php,meta.function-call.static.php",settings:{foreground:"#61afef"}},{scope:"punctuation.definition.parameters.begin.bracket.round.php,punctuation.definition.parameters.end.bracket.round.php,punctuation.separator.delimiter.php,punctuation.section.scope.begin.php,punctuation.section.scope.end.php,punctuation.terminator.expression.php,punctuation.definition.arguments.begin.bracket.round.php,punctuation.definition.arguments.end.bracket.round.php,punctuation.definition.storage-type.begin.bracket.round.php,punctuation.definition.storage-type.end.bracket.round.php,punctuation.definition.array.begin.bracket.round.php,punctuation.definition.array.end.bracket.round.php,punctuation.definition.begin.bracket.round.php,punctuation.definition.end.bracket.round.php,punctuation.definition.begin.bracket.curly.php,punctuation.definition.end.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php,punctuation.definition.section.switch-block.start.bracket.curly.php,punctuation.definition.section.switch-block.begin.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php",settings:{foreground:"#abb2bf"}},{scope:"support.constant.core.rust",settings:{foreground:"#d19a66"}},{scope:"support.constant.ext.php,support.constant.std.php,support.constant.core.php,support.constant.parser-token.php",settings:{foreground:"#d19a66"}},{scope:"entity.name.goto-label.php,support.other.php",settings:{foreground:"#61afef"}},{scope:"keyword.operator.logical.php,keyword.operator.bitwise.php,keyword.operator.arithmetic.php",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.regexp.php",settings:{foreground:"#c678dd"}},{scope:"keyword.operator.comparison.php",settings:{foreground:"#56b6c2"}},{scope:"keyword.operator.heredoc.php,keyword.operator.nowdoc.php",settings:{foreground:"#c678dd"}},{scope:"meta.function.decorator.python",settings:{foreground:"#61afef"}},{scope:"support.token.decorator.python,meta.function.decorator.identifier.python",settings:{foreground:"#56b6c2"}},{scope:"function.parameter",settings:{foreground:"#abb2bf"}},{scope:"function.brace",settings:{foreground:"#abb2bf"}},{scope:"function.parameter.ruby, function.parameter.cs",settings:{foreground:"#abb2bf"}},{scope:"constant.language.symbol.ruby",settings:{foreground:"#56b6c2"}},{scope:"constant.language.symbol.hashkey.ruby",settings:{foreground:"#56b6c2"}},{scope:"rgb-value",settings:{foreground:"#56b6c2"}},{scope:"inline-color-decoration rgb-value",settings:{foreground:"#d19a66"}},{scope:"less rgb-value",settings:{foreground:"#d19a66"}},{scope:"selector.sass",settings:{foreground:"#e06c75"}},{scope:"support.type.primitive.ts,support.type.builtin.ts,support.type.primitive.tsx,support.type.builtin.tsx",settings:{foreground:"#e5c07b"}},{scope:"block.scope.end,block.scope.begin",settings:{foreground:"#abb2bf"}},{scope:"storage.type.cs",settings:{foreground:"#e5c07b"}},{scope:"entity.name.variable.local.cs",settings:{foreground:"#e06c75"}},{scope:"token.info-token",settings:{foreground:"#61afef"}},{scope:"token.warn-token",settings:{foreground:"#d19a66"}},{scope:"token.error-token",settings:{foreground:"#f44747"}},{scope:"token.debug-token",settings:{foreground:"#c678dd"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#c678dd"}},{scope:["meta.template.expression"],settings:{foreground:"#abb2bf"}},{scope:["keyword.operator.module"],settings:{foreground:"#c678dd"}},{scope:["support.type.type.flowtype"],settings:{foreground:"#61afef"}},{scope:["support.type.primitive"],settings:{foreground:"#e5c07b"}},{scope:["meta.property.object"],settings:{foreground:"#e06c75"}},{scope:["variable.parameter.function.js"],settings:{foreground:"#e06c75"}},{scope:["keyword.other.template.begin"],settings:{foreground:"#98c379"}},{scope:["keyword.other.template.end"],settings:{foreground:"#98c379"}},{scope:["keyword.other.substitution.begin"],settings:{foreground:"#98c379"}},{scope:["keyword.other.substitution.end"],settings:{foreground:"#98c379"}},{scope:["keyword.operator.assignment"],settings:{foreground:"#56b6c2"}},{scope:["keyword.operator.assignment.go"],settings:{foreground:"#e5c07b"}},{scope:["keyword.operator.arithmetic.go","keyword.operator.address.go"],settings:{foreground:"#c678dd"}},{scope:["entity.name.package.go"],settings:{foreground:"#e5c07b"}},{scope:["support.type.prelude.elm"],settings:{foreground:"#56b6c2"}},{scope:["support.constant.elm"],settings:{foreground:"#d19a66"}},{scope:["punctuation.quasi.element"],settings:{foreground:"#c678dd"}},{scope:["constant.character.entity"],settings:{foreground:"#e06c75"}},{scope:["entity.other.attribute-name.pseudo-element","entity.other.attribute-name.pseudo-class"],settings:{foreground:"#56b6c2"}},{scope:["entity.global.clojure"],settings:{foreground:"#e5c07b"}},{scope:["meta.symbol.clojure"],settings:{foreground:"#e06c75"}},{scope:["constant.keyword.clojure"],settings:{foreground:"#56b6c2"}},{scope:["meta.arguments.coffee","variable.parameter.function.coffee"],settings:{foreground:"#e06c75"}},{scope:["source.ini"],settings:{foreground:"#98c379"}},{scope:["meta.scope.prerequisites.makefile"],settings:{foreground:"#e06c75"}},{scope:["source.makefile"],settings:{foreground:"#e5c07b"}},{scope:["storage.modifier.import.groovy"],settings:{foreground:"#e5c07b"}},{scope:["meta.method.groovy"],settings:{foreground:"#61afef"}},{scope:["meta.definition.variable.name.groovy"],settings:{foreground:"#e06c75"}},{scope:["meta.definition.class.inherited.classes.groovy"],settings:{foreground:"#98c379"}},{scope:["support.variable.semantic.hlsl"],settings:{foreground:"#e5c07b"}},{scope:["support.type.texture.hlsl","support.type.sampler.hlsl","support.type.object.hlsl","support.type.object.rw.hlsl","support.type.fx.hlsl","support.type.object.hlsl"],settings:{foreground:"#c678dd"}},{scope:["text.variable","text.bracketed"],settings:{foreground:"#e06c75"}},{scope:["support.type.swift","support.type.vb.asp"],settings:{foreground:"#e5c07b"}},{scope:["entity.name.function.xi"],settings:{foreground:"#e5c07b"}},{scope:["entity.name.class.xi"],settings:{foreground:"#56b6c2"}},{scope:["constant.character.character-class.regexp.xi"],settings:{foreground:"#e06c75"}},{scope:["constant.regexp.xi"],settings:{foreground:"#c678dd"}},{scope:["keyword.control.xi"],settings:{foreground:"#56b6c2"}},{scope:["invalid.xi"],settings:{foreground:"#abb2bf"}},{scope:["beginning.punctuation.definition.quote.markdown.xi"],settings:{foreground:"#98c379"}},{scope:["beginning.punctuation.definition.list.markdown.xi"],settings:{foreground:"#7f848e"}},{scope:["constant.character.xi"],settings:{foreground:"#61afef"}},{scope:["accent.xi"],settings:{foreground:"#61afef"}},{scope:["wikiword.xi"],settings:{foreground:"#d19a66"}},{scope:["constant.other.color.rgb-value.xi"],settings:{foreground:"#ffffff"}},{scope:["punctuation.definition.tag.xi"],settings:{foreground:"#5c6370"}},{scope:["entity.name.label.cs","entity.name.scope-resolution.function.call","entity.name.scope-resolution.function.definition"],settings:{foreground:"#e5c07b"}},{scope:["entity.name.label.cs","markup.heading.setext.1.markdown","markup.heading.setext.2.markdown"],settings:{foreground:"#e06c75"}},{scope:[" meta.brace.square"],settings:{foreground:"#abb2bf"}},{scope:"comment, punctuation.definition.comment",settings:{fontStyle:"italic",foreground:"#7f848e"}},{scope:"markup.quote.markdown",settings:{foreground:"#5c6370"}},{scope:"punctuation.definition.block.sequence.item.yaml",settings:{foreground:"#abb2bf"}},{scope:["constant.language.symbol.elixir","constant.language.symbol.double-quoted.elixir"],settings:{foreground:"#56b6c2"}},{scope:["entity.name.variable.parameter.cs"],settings:{foreground:"#e5c07b"}},{scope:["entity.name.variable.field.cs"],settings:{foreground:"#e06c75"}},{scope:"markup.deleted",settings:{foreground:"#e06c75"}},{scope:"markup.inserted",settings:{foreground:"#98c379"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#BE5046"}},{scope:["support.other.namespace.php"],settings:{foreground:"#abb2bf"}},{scope:["variable.parameter.function.latex"],settings:{foreground:"#e06c75"}},{scope:["variable.other.object"],settings:{foreground:"#e5c07b"}},{scope:["variable.other.constant.property"],settings:{foreground:"#e06c75"}},{scope:["entity.other.inherited-class"],settings:{foreground:"#e5c07b"}},{scope:"variable.other.readwrite.c",settings:{foreground:"#e06c75"}},{scope:"entity.name.variable.parameter.php,punctuation.separator.colon.php,constant.other.php",settings:{foreground:"#abb2bf"}},{scope:["constant.numeric.decimal.asm.x86_64"],settings:{foreground:"#c678dd"}},{scope:["support.other.parenthesis.regexp"],settings:{foreground:"#d19a66"}},{scope:["constant.character.escape"],settings:{foreground:"#56b6c2"}},{scope:["string.regexp"],settings:{foreground:"#e06c75"}},{scope:["log.info"],settings:{foreground:"#98c379"}},{scope:["log.warning"],settings:{foreground:"#e5c07b"}},{scope:["log.error"],settings:{foreground:"#e06c75"}},{scope:"keyword.operator.expression.is",settings:{foreground:"#c678dd"}},{scope:"entity.name.label",settings:{foreground:"#e06c75"}},{scope:"entity.other.attribute-name.js,entity.other.attribute-name.ts,entity.other.attribute-name.jsx,entity.other.attribute-name.tsx,variable.parameter,variable.language.super",settings:{fontStyle:"italic"}},{scope:"comment.line.double-slash,comment.block.documentation",settings:{fontStyle:"italic"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/one-light.alpzPJ78.js b/assets/chunks/one-light.alpzPJ78.js new file mode 100644 index 000000000..75ecf6893 --- /dev/null +++ b/assets/chunks/one-light.alpzPJ78.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#FAFAFA","activityBar.foreground":"#121417","activityBarBadge.background":"#526FFF","activityBarBadge.foreground":"#FFFFFF","badge.background":"#526FFF","badge.foreground":"#FFFFFF","button.background":"#5871EF","button.foreground":"#FFFFFF","button.hoverBackground":"#6B83ED","diffEditor.insertedTextBackground":"#00809B33","dropdown.background":"#FFFFFF","dropdown.border":"#DBDBDC","editor.background":"#FAFAFA","editor.findMatchHighlightBackground":"#526FFF33","editor.foreground":"#383A42","editor.lineHighlightBackground":"#383A420C","editor.selectionBackground":"#E5E5E6","editorCursor.foreground":"#526FFF","editorGroup.background":"#EAEAEB","editorGroup.border":"#DBDBDC","editorGroupHeader.tabsBackground":"#EAEAEB","editorHoverWidget.background":"#EAEAEB","editorHoverWidget.border":"#DBDBDC","editorIndentGuide.activeBackground":"#626772","editorIndentGuide.background":"#383A4233","editorInlayHint.background":"#F5F5F5","editorInlayHint.foreground":"#AFB2BB","editorLineNumber.activeForeground":"#383A42","editorLineNumber.foreground":"#9D9D9F","editorRuler.foreground":"#383A4233","editorSuggestWidget.background":"#EAEAEB","editorSuggestWidget.border":"#DBDBDC","editorSuggestWidget.selectedBackground":"#FFFFFF","editorWhitespace.foreground":"#383A4233","editorWidget.background":"#EAEAEB","editorWidget.border":"#E5E5E6","extensionButton.prominentBackground":"#3BBA54","extensionButton.prominentHoverBackground":"#4CC263",focusBorder:"#526FFF","input.background":"#FFFFFF","input.border":"#DBDBDC","list.activeSelectionBackground":"#DBDBDC","list.activeSelectionForeground":"#232324","list.focusBackground":"#DBDBDC","list.highlightForeground":"#121417","list.hoverBackground":"#DBDBDC66","list.inactiveSelectionBackground":"#DBDBDC","list.inactiveSelectionForeground":"#232324","notebook.cellEditorBackground":"#F5F5F5","notification.background":"#333333","peekView.border":"#526FFF","peekViewEditor.background":"#FFFFFF","peekViewResult.background":"#EAEAEB","peekViewResult.selectionBackground":"#DBDBDC","peekViewTitle.background":"#FFFFFF","pickerGroup.border":"#526FFF","scrollbarSlider.activeBackground":"#747D9180","scrollbarSlider.background":"#4E566680","scrollbarSlider.hoverBackground":"#5A637580","sideBar.background":"#EAEAEB","sideBarSectionHeader.background":"#FAFAFA","statusBar.background":"#EAEAEB","statusBar.debuggingForeground":"#FFFFFF","statusBar.foreground":"#424243","statusBar.noFolderBackground":"#EAEAEB","statusBarItem.hoverBackground":"#DBDBDC","tab.activeBackground":"#FAFAFA","tab.activeForeground":"#121417","tab.border":"#DBDBDC","tab.inactiveBackground":"#EAEAEB","titleBar.activeBackground":"#EAEAEB","titleBar.activeForeground":"#424243","titleBar.inactiveBackground":"#EAEAEB","titleBar.inactiveForeground":"#424243"},displayName:"One Light",name:"one-light",tokenColors:[{scope:["comment"],settings:{fontStyle:"italic",foreground:"#A0A1A7"}},{scope:["comment markup.link"],settings:{foreground:"#A0A1A7"}},{scope:["entity.name.type"],settings:{foreground:"#C18401"}},{scope:["entity.other.inherited-class"],settings:{foreground:"#C18401"}},{scope:["keyword"],settings:{foreground:"#A626A4"}},{scope:["keyword.control"],settings:{foreground:"#A626A4"}},{scope:["keyword.operator"],settings:{foreground:"#383A42"}},{scope:["keyword.other.special-method"],settings:{foreground:"#4078F2"}},{scope:["keyword.other.unit"],settings:{foreground:"#986801"}},{scope:["storage"],settings:{foreground:"#A626A4"}},{scope:["storage.type.annotation","storage.type.primitive"],settings:{foreground:"#A626A4"}},{scope:["storage.modifier.package","storage.modifier.import"],settings:{foreground:"#383A42"}},{scope:["constant"],settings:{foreground:"#986801"}},{scope:["constant.variable"],settings:{foreground:"#986801"}},{scope:["constant.character.escape"],settings:{foreground:"#0184BC"}},{scope:["constant.numeric"],settings:{foreground:"#986801"}},{scope:["constant.other.color"],settings:{foreground:"#0184BC"}},{scope:["constant.other.symbol"],settings:{foreground:"#0184BC"}},{scope:["variable"],settings:{foreground:"#E45649"}},{scope:["variable.interpolation"],settings:{foreground:"#CA1243"}},{scope:["variable.parameter"],settings:{foreground:"#383A42"}},{scope:["string"],settings:{foreground:"#50A14F"}},{scope:["string > source","string embedded"],settings:{foreground:"#383A42"}},{scope:["string.regexp"],settings:{foreground:"#0184BC"}},{scope:["string.regexp source.ruby.embedded"],settings:{foreground:"#C18401"}},{scope:["string.other.link"],settings:{foreground:"#E45649"}},{scope:["punctuation.definition.comment"],settings:{foreground:"#A0A1A7"}},{scope:["punctuation.definition.method-parameters","punctuation.definition.function-parameters","punctuation.definition.parameters","punctuation.definition.separator","punctuation.definition.seperator","punctuation.definition.array"],settings:{foreground:"#383A42"}},{scope:["punctuation.definition.heading","punctuation.definition.identity"],settings:{foreground:"#4078F2"}},{scope:["punctuation.definition.bold"],settings:{fontStyle:"bold",foreground:"#C18401"}},{scope:["punctuation.definition.italic"],settings:{fontStyle:"italic",foreground:"#A626A4"}},{scope:["punctuation.section.embedded"],settings:{foreground:"#CA1243"}},{scope:["punctuation.section.method","punctuation.section.class","punctuation.section.inner-class"],settings:{foreground:"#383A42"}},{scope:["support.class"],settings:{foreground:"#C18401"}},{scope:["support.type"],settings:{foreground:"#0184BC"}},{scope:["support.function"],settings:{foreground:"#0184BC"}},{scope:["support.function.any-method"],settings:{foreground:"#4078F2"}},{scope:["entity.name.function"],settings:{foreground:"#4078F2"}},{scope:["entity.name.class","entity.name.type.class"],settings:{foreground:"#C18401"}},{scope:["entity.name.section"],settings:{foreground:"#4078F2"}},{scope:["entity.name.tag"],settings:{foreground:"#E45649"}},{scope:["entity.other.attribute-name"],settings:{foreground:"#986801"}},{scope:["entity.other.attribute-name.id"],settings:{foreground:"#4078F2"}},{scope:["meta.class"],settings:{foreground:"#C18401"}},{scope:["meta.class.body"],settings:{foreground:"#383A42"}},{scope:["meta.method-call","meta.method"],settings:{foreground:"#383A42"}},{scope:["meta.definition.variable"],settings:{foreground:"#E45649"}},{scope:["meta.link"],settings:{foreground:"#986801"}},{scope:["meta.require"],settings:{foreground:"#4078F2"}},{scope:["meta.selector"],settings:{foreground:"#A626A4"}},{scope:["meta.separator"],settings:{foreground:"#383A42"}},{scope:["meta.tag"],settings:{foreground:"#383A42"}},{scope:["underline"],settings:{"text-decoration":"underline"}},{scope:["none"],settings:{foreground:"#383A42"}},{scope:["invalid.deprecated"],settings:{background:"#F2A60D",foreground:"#000000"}},{scope:["invalid.illegal"],settings:{background:"#FF1414",foreground:"white"}},{scope:["markup.bold"],settings:{fontStyle:"bold",foreground:"#986801"}},{scope:["markup.changed"],settings:{foreground:"#A626A4"}},{scope:["markup.deleted"],settings:{foreground:"#E45649"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#A626A4"}},{scope:["markup.heading"],settings:{foreground:"#E45649"}},{scope:["markup.heading punctuation.definition.heading"],settings:{foreground:"#4078F2"}},{scope:["markup.link"],settings:{foreground:"#0184BC"}},{scope:["markup.inserted"],settings:{foreground:"#50A14F"}},{scope:["markup.quote"],settings:{foreground:"#986801"}},{scope:["markup.raw"],settings:{foreground:"#50A14F"}},{scope:["source.c keyword.operator"],settings:{foreground:"#A626A4"}},{scope:["source.cpp keyword.operator"],settings:{foreground:"#A626A4"}},{scope:["source.cs keyword.operator"],settings:{foreground:"#A626A4"}},{scope:["source.css property-name","source.css property-value"],settings:{foreground:"#696C77"}},{scope:["source.css property-name.support","source.css property-value.support"],settings:{foreground:"#383A42"}},{scope:["source.elixir source.embedded.source"],settings:{foreground:"#383A42"}},{scope:["source.elixir constant.language","source.elixir constant.numeric","source.elixir constant.definition"],settings:{foreground:"#4078F2"}},{scope:["source.elixir variable.definition","source.elixir variable.anonymous"],settings:{foreground:"#A626A4"}},{scope:["source.elixir parameter.variable.function"],settings:{fontStyle:"italic",foreground:"#986801"}},{scope:["source.elixir quoted"],settings:{foreground:"#50A14F"}},{scope:["source.elixir keyword.special-method","source.elixir embedded.section","source.elixir embedded.source.empty"],settings:{foreground:"#E45649"}},{scope:["source.elixir readwrite.module punctuation"],settings:{foreground:"#E45649"}},{scope:["source.elixir regexp.section","source.elixir regexp.string"],settings:{foreground:"#CA1243"}},{scope:["source.elixir separator","source.elixir keyword.operator"],settings:{foreground:"#986801"}},{scope:["source.elixir variable.constant"],settings:{foreground:"#C18401"}},{scope:["source.elixir array","source.elixir scope","source.elixir section"],settings:{foreground:"#696C77"}},{scope:["source.gfm markup"],settings:{"-webkit-font-smoothing":"auto"}},{scope:["source.gfm link entity"],settings:{foreground:"#4078F2"}},{scope:["source.go storage.type.string"],settings:{foreground:"#A626A4"}},{scope:["source.ini keyword.other.definition.ini"],settings:{foreground:"#E45649"}},{scope:["source.java storage.modifier.import"],settings:{foreground:"#C18401"}},{scope:["source.java storage.type"],settings:{foreground:"#C18401"}},{scope:["source.java keyword.operator.instanceof"],settings:{foreground:"#A626A4"}},{scope:["source.java-properties meta.key-pair"],settings:{foreground:"#E45649"}},{scope:["source.java-properties meta.key-pair > punctuation"],settings:{foreground:"#383A42"}},{scope:["source.js keyword.operator"],settings:{foreground:"#0184BC"}},{scope:["source.js keyword.operator.delete","source.js keyword.operator.in","source.js keyword.operator.of","source.js keyword.operator.instanceof","source.js keyword.operator.new","source.js keyword.operator.typeof","source.js keyword.operator.void"],settings:{foreground:"#A626A4"}},{scope:["source.ts keyword.operator"],settings:{foreground:"#0184BC"}},{scope:["source.flow keyword.operator"],settings:{foreground:"#0184BC"}},{scope:["source.json meta.structure.dictionary.json > string.quoted.json"],settings:{foreground:"#E45649"}},{scope:["source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string"],settings:{foreground:"#E45649"}},{scope:["source.json meta.structure.dictionary.json > value.json > string.quoted.json","source.json meta.structure.array.json > value.json > string.quoted.json","source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation","source.json meta.structure.array.json > value.json > string.quoted.json > punctuation"],settings:{foreground:"#50A14F"}},{scope:["source.json meta.structure.dictionary.json > constant.language.json","source.json meta.structure.array.json > constant.language.json"],settings:{foreground:"#0184BC"}},{scope:["ng.interpolation"],settings:{foreground:"#E45649"}},{scope:["ng.interpolation.begin","ng.interpolation.end"],settings:{foreground:"#4078F2"}},{scope:["ng.interpolation function"],settings:{foreground:"#E45649"}},{scope:["ng.interpolation function.begin","ng.interpolation function.end"],settings:{foreground:"#4078F2"}},{scope:["ng.interpolation bool"],settings:{foreground:"#986801"}},{scope:["ng.interpolation bracket"],settings:{foreground:"#383A42"}},{scope:["ng.pipe","ng.operator"],settings:{foreground:"#383A42"}},{scope:["ng.tag"],settings:{foreground:"#0184BC"}},{scope:["ng.attribute-with-value attribute-name"],settings:{foreground:"#C18401"}},{scope:["ng.attribute-with-value string"],settings:{foreground:"#A626A4"}},{scope:["ng.attribute-with-value string.begin","ng.attribute-with-value string.end"],settings:{foreground:"#383A42"}},{scope:["source.ruby constant.other.symbol > punctuation"],settings:{foreground:"inherit"}},{scope:["source.php class.bracket"],settings:{foreground:"#383A42"}},{scope:["source.python keyword.operator.logical.python"],settings:{foreground:"#A626A4"}},{scope:["source.python variable.parameter"],settings:{foreground:"#986801"}},{scope:"customrule",settings:{foreground:"#383A42"}},{scope:"support.type.property-name",settings:{foreground:"#383A42"}},{scope:"string.quoted.double punctuation",settings:{foreground:"#50A14F"}},{scope:"support.constant",settings:{foreground:"#986801"}},{scope:"support.type.property-name.json",settings:{foreground:"#E45649"}},{scope:"support.type.property-name.json punctuation",settings:{foreground:"#E45649"}},{scope:["punctuation.separator.key-value.ts","punctuation.separator.key-value.js","punctuation.separator.key-value.tsx"],settings:{foreground:"#0184BC"}},{scope:["source.js.embedded.html keyword.operator","source.ts.embedded.html keyword.operator"],settings:{foreground:"#0184BC"}},{scope:["variable.other.readwrite.js","variable.other.readwrite.ts","variable.other.readwrite.tsx"],settings:{foreground:"#383A42"}},{scope:["support.variable.dom.js","support.variable.dom.ts"],settings:{foreground:"#E45649"}},{scope:["support.variable.property.dom.js","support.variable.property.dom.ts"],settings:{foreground:"#E45649"}},{scope:["meta.template.expression.js punctuation.definition","meta.template.expression.ts punctuation.definition"],settings:{foreground:"#CA1243"}},{scope:["source.ts punctuation.definition.typeparameters","source.js punctuation.definition.typeparameters","source.tsx punctuation.definition.typeparameters"],settings:{foreground:"#383A42"}},{scope:["source.ts punctuation.definition.block","source.js punctuation.definition.block","source.tsx punctuation.definition.block"],settings:{foreground:"#383A42"}},{scope:["source.ts punctuation.separator.comma","source.js punctuation.separator.comma","source.tsx punctuation.separator.comma"],settings:{foreground:"#383A42"}},{scope:["support.variable.property.js","support.variable.property.ts","support.variable.property.tsx"],settings:{foreground:"#E45649"}},{scope:["keyword.control.default.js","keyword.control.default.ts","keyword.control.default.tsx"],settings:{foreground:"#E45649"}},{scope:["keyword.operator.expression.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.instanceof.tsx"],settings:{foreground:"#A626A4"}},{scope:["keyword.operator.expression.of.js","keyword.operator.expression.of.ts","keyword.operator.expression.of.tsx"],settings:{foreground:"#A626A4"}},{scope:["meta.brace.round.js","meta.array-binding-pattern-variable.js","meta.brace.square.js","meta.brace.round.ts","meta.array-binding-pattern-variable.ts","meta.brace.square.ts","meta.brace.round.tsx","meta.array-binding-pattern-variable.tsx","meta.brace.square.tsx"],settings:{foreground:"#383A42"}},{scope:["source.js punctuation.accessor","source.ts punctuation.accessor","source.tsx punctuation.accessor"],settings:{foreground:"#383A42"}},{scope:["punctuation.terminator.statement.js","punctuation.terminator.statement.ts","punctuation.terminator.statement.tsx"],settings:{foreground:"#383A42"}},{scope:["meta.array-binding-pattern-variable.js variable.other.readwrite.js","meta.array-binding-pattern-variable.ts variable.other.readwrite.ts","meta.array-binding-pattern-variable.tsx variable.other.readwrite.tsx"],settings:{foreground:"#986801"}},{scope:["source.js support.variable","source.ts support.variable","source.tsx support.variable"],settings:{foreground:"#E45649"}},{scope:["variable.other.constant.property.js","variable.other.constant.property.ts","variable.other.constant.property.tsx"],settings:{foreground:"#986801"}},{scope:["keyword.operator.new.ts","keyword.operator.new.j","keyword.operator.new.tsx"],settings:{foreground:"#A626A4"}},{scope:["source.ts keyword.operator","source.tsx keyword.operator"],settings:{foreground:"#0184BC"}},{scope:["punctuation.separator.parameter.js","punctuation.separator.parameter.ts","punctuation.separator.parameter.tsx "],settings:{foreground:"#383A42"}},{scope:["constant.language.import-export-all.js","constant.language.import-export-all.ts"],settings:{foreground:"#E45649"}},{scope:["constant.language.import-export-all.jsx","constant.language.import-export-all.tsx"],settings:{foreground:"#0184BC"}},{scope:["keyword.control.as.js","keyword.control.as.ts","keyword.control.as.jsx","keyword.control.as.tsx"],settings:{foreground:"#383A42"}},{scope:["variable.other.readwrite.alias.js","variable.other.readwrite.alias.ts","variable.other.readwrite.alias.jsx","variable.other.readwrite.alias.tsx"],settings:{foreground:"#E45649"}},{scope:["variable.other.constant.js","variable.other.constant.ts","variable.other.constant.jsx","variable.other.constant.tsx"],settings:{foreground:"#986801"}},{scope:["meta.export.default.js variable.other.readwrite.js","meta.export.default.ts variable.other.readwrite.ts"],settings:{foreground:"#E45649"}},{scope:["source.js meta.template.expression.js punctuation.accessor","source.ts meta.template.expression.ts punctuation.accessor","source.tsx meta.template.expression.tsx punctuation.accessor"],settings:{foreground:"#50A14F"}},{scope:["source.js meta.import-equals.external.js keyword.operator","source.jsx meta.import-equals.external.jsx keyword.operator","source.ts meta.import-equals.external.ts keyword.operator","source.tsx meta.import-equals.external.tsx keyword.operator"],settings:{foreground:"#383A42"}},{scope:"entity.name.type.module.js,entity.name.type.module.ts,entity.name.type.module.jsx,entity.name.type.module.tsx",settings:{foreground:"#50A14F"}},{scope:"meta.class.js,meta.class.ts,meta.class.jsx,meta.class.tsx",settings:{foreground:"#383A42"}},{scope:["meta.definition.property.js variable","meta.definition.property.ts variable","meta.definition.property.jsx variable","meta.definition.property.tsx variable"],settings:{foreground:"#383A42"}},{scope:["meta.type.parameters.js support.type","meta.type.parameters.jsx support.type","meta.type.parameters.ts support.type","meta.type.parameters.tsx support.type"],settings:{foreground:"#383A42"}},{scope:["source.js meta.tag.js keyword.operator","source.jsx meta.tag.jsx keyword.operator","source.ts meta.tag.ts keyword.operator","source.tsx meta.tag.tsx keyword.operator"],settings:{foreground:"#383A42"}},{scope:["meta.tag.js punctuation.section.embedded","meta.tag.jsx punctuation.section.embedded","meta.tag.ts punctuation.section.embedded","meta.tag.tsx punctuation.section.embedded"],settings:{foreground:"#383A42"}},{scope:["meta.array.literal.js variable","meta.array.literal.jsx variable","meta.array.literal.ts variable","meta.array.literal.tsx variable"],settings:{foreground:"#C18401"}},{scope:["support.type.object.module.js","support.type.object.module.jsx","support.type.object.module.ts","support.type.object.module.tsx"],settings:{foreground:"#E45649"}},{scope:["constant.language.json"],settings:{foreground:"#0184BC"}},{scope:["variable.other.constant.object.js","variable.other.constant.object.jsx","variable.other.constant.object.ts","variable.other.constant.object.tsx"],settings:{foreground:"#986801"}},{scope:["storage.type.property.js","storage.type.property.jsx","storage.type.property.ts","storage.type.property.tsx"],settings:{foreground:"#0184BC"}},{scope:["meta.template.expression.js string.quoted punctuation.definition","meta.template.expression.jsx string.quoted punctuation.definition","meta.template.expression.ts string.quoted punctuation.definition","meta.template.expression.tsx string.quoted punctuation.definition"],settings:{foreground:"#50A14F"}},{scope:["meta.template.expression.js string.template punctuation.definition.string.template","meta.template.expression.jsx string.template punctuation.definition.string.template","meta.template.expression.ts string.template punctuation.definition.string.template","meta.template.expression.tsx string.template punctuation.definition.string.template"],settings:{foreground:"#50A14F"}},{scope:["keyword.operator.expression.in.js","keyword.operator.expression.in.jsx","keyword.operator.expression.in.ts","keyword.operator.expression.in.tsx"],settings:{foreground:"#A626A4"}},{scope:["variable.other.object.js","variable.other.object.ts"],settings:{foreground:"#383A42"}},{scope:["meta.object-literal.key.js","meta.object-literal.key.ts"],settings:{foreground:"#E45649"}},{scope:"source.python constant.other",settings:{foreground:"#383A42"}},{scope:"source.python constant",settings:{foreground:"#986801"}},{scope:"constant.character.format.placeholder.other.python storage",settings:{foreground:"#986801"}},{scope:"support.variable.magic.python",settings:{foreground:"#E45649"}},{scope:"meta.function.parameters.python",settings:{foreground:"#986801"}},{scope:"punctuation.separator.annotation.python",settings:{foreground:"#383A42"}},{scope:"punctuation.separator.parameters.python",settings:{foreground:"#383A42"}},{scope:"entity.name.variable.field.cs",settings:{foreground:"#E45649"}},{scope:"source.cs keyword.operator",settings:{foreground:"#383A42"}},{scope:"variable.other.readwrite.cs",settings:{foreground:"#383A42"}},{scope:"variable.other.object.cs",settings:{foreground:"#383A42"}},{scope:"variable.other.object.property.cs",settings:{foreground:"#383A42"}},{scope:"entity.name.variable.property.cs",settings:{foreground:"#4078F2"}},{scope:"storage.type.cs",settings:{foreground:"#C18401"}},{scope:"keyword.other.unsafe.rust",settings:{foreground:"#A626A4"}},{scope:"entity.name.type.rust",settings:{foreground:"#0184BC"}},{scope:"storage.modifier.lifetime.rust",settings:{foreground:"#383A42"}},{scope:"entity.name.lifetime.rust",settings:{foreground:"#986801"}},{scope:"storage.type.core.rust",settings:{foreground:"#0184BC"}},{scope:"meta.attribute.rust",settings:{foreground:"#986801"}},{scope:"storage.class.std.rust",settings:{foreground:"#0184BC"}},{scope:"markup.raw.block.markdown",settings:{foreground:"#383A42"}},{scope:"punctuation.definition.variable.shell",settings:{foreground:"#E45649"}},{scope:"support.constant.property-value.css",settings:{foreground:"#383A42"}},{scope:"punctuation.definition.constant.css",settings:{foreground:"#986801"}},{scope:"punctuation.separator.key-value.scss",settings:{foreground:"#E45649"}},{scope:"punctuation.definition.constant.scss",settings:{foreground:"#986801"}},{scope:"meta.property-list.scss punctuation.separator.key-value.scss",settings:{foreground:"#383A42"}},{scope:"storage.type.primitive.array.java",settings:{foreground:"#C18401"}},{scope:"entity.name.section.markdown",settings:{foreground:"#E45649"}},{scope:"punctuation.definition.heading.markdown",settings:{foreground:"#E45649"}},{scope:"markup.heading.setext",settings:{foreground:"#383A42"}},{scope:"punctuation.definition.bold.markdown",settings:{foreground:"#986801"}},{scope:"markup.inline.raw.markdown",settings:{foreground:"#50A14F"}},{scope:"beginning.punctuation.definition.list.markdown",settings:{foreground:"#E45649"}},{scope:"markup.quote.markdown",settings:{fontStyle:"italic",foreground:"#A0A1A7"}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","punctuation.definition.metadata.markdown"],settings:{foreground:"#383A42"}},{scope:"punctuation.definition.metadata.markdown",settings:{foreground:"#A626A4"}},{scope:["markup.underline.link.markdown","markup.underline.link.image.markdown"],settings:{foreground:"#A626A4"}},{scope:["string.other.link.title.markdown","string.other.link.description.markdown"],settings:{foreground:"#4078F2"}},{scope:"punctuation.separator.variable.ruby",settings:{foreground:"#E45649"}},{scope:"variable.other.constant.ruby",settings:{foreground:"#986801"}},{scope:"keyword.operator.other.ruby",settings:{foreground:"#50A14F"}},{scope:"punctuation.definition.variable.php",settings:{foreground:"#E45649"}},{scope:"meta.class.php",settings:{foreground:"#383A42"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/pascal.B6ZnTe72.js b/assets/chunks/pascal.B6ZnTe72.js new file mode 100644 index 000000000..26e5b56d6 --- /dev/null +++ b/assets/chunks/pascal.B6ZnTe72.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Pascal",fileTypes:["pas","p","pp","dfm","fmx","dpr","dpk","lfm","lpr"],name:"pascal",patterns:[{match:"\\b(?i:(absolute|abstract|add|all|and_then|array|as|asc|asm|assembler|async|attribute|autoreleasepool|await|begin|bindable|block|by|case|cdecl|class|concat|const|constref|copy|cppdecl|contains|default|delegate|deprecated|desc|distinct|div|each|else|empty|end|ensure|enum|equals|event|except|export|exports|extension|external|far|file|finalization|finalizer|finally|flags|forward|from|future|generic|goto|group|has|helper|if|implements|implies|import|in|index|inherited|initialization|inline|interrupt|into|invariants|is|iterator|label|library|join|lazy|lifetimestrategy|locked|locking|loop|mapped|matching|method|mod|module|name|namespace|near|nested|new|nostackframe|not|notify|nullable|object|of|old|oldfpccall|on|only|operator|optional|or_else|order|otherwise|out|override|package|packed|parallel|params|partial|pascal|pinned|platform|pow|private|program|protected|public|published|interface|implementation|qualified|queryable|raises|read|readonly|record|reference|register|remove|resident|require|requires|resourcestring|restricted|result|reverse|safecall|sealed|segment|select|selector|sequence|set|shl|shr|skip|specialize|soft|static|stored|stdcall|step|strict|strong|take|then|threadvar|to|try|tuple|type|unconstrained|unit|unmanaged|unretained|unsafe|uses|using|var|view|virtual|volatile|weak|dynamic|overload|reintroduce|where|with|write|xor|yield))\\b",name:"keyword.pascal"},{captures:{1:{name:"storage.type.prototype.pascal"},2:{name:"entity.name.function.prototype.pascal"}},match:"\\b(?i:(function|procedure|constructor|destructor))\\b\\s+(\\w+(\\.\\w+)?)(\\(.*?\\))?;\\s*(?=(?i:attribute|forward|external))",name:"meta.function.prototype.pascal"},{captures:{1:{name:"storage.type.function.pascal"},2:{name:"entity.name.function.pascal"}},match:"\\b(?i:(function|procedure|constructor|destructor|property|read|write))\\b\\s+(\\w+(\\.\\w+)?)",name:"meta.function.pascal"},{match:"\\b(?i:(self|result))\\b",name:"token.variable"},{match:"\\b(?i:(and|or))\\b",name:"keyword.operator.pascal"},{match:"\\b(?i:(break|continue|exit|abort|while|do|downto|for|raise|repeat|until))\\b",name:"keyword.control.pascal"},{begin:"\\{\\$",captures:{0:{name:"string.regexp"}},end:"\\}",name:"string.regexp"},{match:"\\b(?i:(ansichar|ansistring|boolean|byte|cardinal|char|comp|currency|double|dword|extended|file|integer|int8|int16|int32|int64|longint|longword|nativeint|nativeuint|olevariant|pansichar|pchar|pwidechar|pointer|real|shortint|shortstring|single|smallint|string|uint8|uint16|uint32|uint64|variant|widechar|widestring|word|wordbool|uintptr|intptr))\\b",name:"storage.support.type.pascal"},{match:"\\b(\\d+)|(\\d*\\.\\d+([eE][\\-+]?\\d+)?)\\b",name:"constant.numeric.pascal"},{match:"\\$[0-9a-fA-F]{1,16}\\b",name:"constant.numeric.hex.pascal"},{match:"\\b(?i:(true|false|nil))\\b",name:"constant.language.pascal"},{match:"\\b(?i:(Assert))\\b",name:"keyword.control"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.pascal"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.pascal"}},end:"\\n",name:"comment.line.double-slash.pascal.two"}]},{begin:"\\(\\*",captures:{0:{name:"punctuation.definition.comment.pascal"}},end:"\\*\\)",name:"comment.block.pascal.one"},{begin:"\\{(?!\\$)",captures:{0:{name:"punctuation.definition.comment.pascal"}},end:"\\}",name:"comment.block.pascal.two"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.pascal"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.pascal"}},name:"string.quoted.single.pascal",patterns:[{match:"''",name:"constant.character.escape.apostrophe.pascal"}]},{match:"\\#\\d+",name:"string.other.pascal"}],scopeName:"source.pascal"});var a=[e];export{a as default}; diff --git a/assets/chunks/perl.Czv4QcIx.js b/assets/chunks/perl.Czv4QcIx.js new file mode 100644 index 000000000..3983524d9 --- /dev/null +++ b/assets/chunks/perl.Czv4QcIx.js @@ -0,0 +1 @@ +import e from"./html.CuK0VrWf.js";import n from"./xml.BzTcx3OS.js";import t from"./css.CbYhyuC0.js";import i from"./javascript.Dch3xQiY.js";import r from"./sql.DbK06e1c.js";import"./java.ClXEvkw9.js";const a=Object.freeze({displayName:"Perl",name:"perl",patterns:[{include:"#line_comment"},{begin:"^(?==[a-zA-Z]+)",end:"^(=cut\\b.*$)",endCaptures:{1:{patterns:[{include:"#pod"}]}},name:"comment.block.documentation.perl",patterns:[{include:"#pod"}]},{include:"#variable"},{applyEndPatternLast:1,begin:"\\b(?=qr\\s*[^\\s\\w])",comment:"string.regexp.compile.perl",end:"((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",endCaptures:{1:{name:"string.regexp.compile.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{begin:"(qr)\\s*\\{",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\}",name:"string.regexp.compile.nested_braces.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_braces_interpolated"}]},{begin:"(qr)\\s*\\[",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\]",name:"string.regexp.compile.nested_brackets.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_brackets_interpolated"}]},{begin:"(qr)\\s*<",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:">",name:"string.regexp.compile.nested_ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_ltgt_interpolated"}]},{begin:"(qr)\\s*\\(",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\)",name:"string.regexp.compile.nested_parens.perl",patterns:[{comment:"This is to prevent thinks like qr/foo$/ to treat $/ as a variable",match:"\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])"},{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]},{begin:"(qr)\\s*'",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"'",name:"string.regexp.compile.single-quote.perl",patterns:[{include:"#escaped_char"}]},{begin:"(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\2",name:"string.regexp.compile.simple-delimiter.perl",patterns:[{comment:"This is to prevent thinks like qr/foo$/ to treat $/ as a variable",match:"\\$(?=[^\\s\\w'\\{\\[\\(\\<])",name:"keyword.control.anchor.perl"},{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]}]},{applyEndPatternLast:1,begin:"(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",comment:"string.regexp.find-m.perl",end:"((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",endCaptures:{1:{name:"string.regexp.find-m.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{begin:"(m)\\s*\\{",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\}",name:"string.regexp.find-m.nested_braces.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_braces_interpolated"}]},{begin:"(m)\\s*\\[",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\]",name:"string.regexp.find-m.nested_brackets.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_brackets_interpolated"}]},{begin:"(m)\\s*<",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:">",name:"string.regexp.find-m.nested_ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_ltgt_interpolated"}]},{begin:"(m)\\s*\\(",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\)",name:"string.regexp.find-m.nested_parens.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]},{begin:"(m)\\s*'",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"'",name:"string.regexp.find-m.single-quote.perl",patterns:[{include:"#escaped_char"}]},{begin:"\\G(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\2",name:"string.regexp.find-m.simple-delimiter.perl",patterns:[{comment:"This is to prevent thinks like qr/foo$/ to treat $/ as a variable",match:"\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])",name:"keyword.control.anchor.perl"},{include:"#escaped_char"},{include:"#variable"},{begin:"\\[",beginCaptures:{1:{name:"punctuation.definition.character-class.begin.perl"}},end:"\\]",endCaptures:{1:{name:"punctuation.definition.character-class.end.perl"}},name:"constant.other.character-class.set.perl",patterns:[{comment:"This is to prevent thinks like qr/foo$/ to treat $/ as a variable",match:"\\$(?=[^\\s\\w'\\{\\[\\(\\<])",name:"keyword.control.anchor.perl"},{include:"#escaped_char"}]},{include:"#nested_parens_interpolated"}]}]},{applyEndPatternLast:1,begin:"\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))",comment:"string.regexp.replace.perl",end:"((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))",endCaptures:{1:{name:"string.regexp.replace.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{begin:"(s)\\s*\\{",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\}",name:"string.regexp.nested_braces.perl",patterns:[{include:"#escaped_char"},{include:"#nested_braces"}]},{begin:"(s)\\s*\\[",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\]",name:"string.regexp.nested_brackets.perl",patterns:[{include:"#escaped_char"},{include:"#nested_brackets"}]},{begin:"(s)\\s*<",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:">",name:"string.regexp.nested_ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#nested_ltgt"}]},{begin:"(s)\\s*\\(",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"\\)",name:"string.regexp.nested_parens.perl",patterns:[{include:"#escaped_char"},{include:"#nested_parens"}]},{begin:"\\{",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\}",name:"string.regexp.format.nested_braces.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_braces_interpolated"}]},{begin:"\\[",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\]",name:"string.regexp.format.nested_brackets.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_brackets_interpolated"}]},{begin:"<",captures:{0:{name:"punctuation.definition.string.perl"}},end:">",name:"string.regexp.format.nested_ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_ltgt_interpolated"}]},{begin:"\\(",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\)",name:"string.regexp.format.nested_parens.perl",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]},{begin:"'",captures:{0:{name:"punctuation.definition.string.perl"}},end:"'",name:"string.regexp.format.single_quote.perl",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.perl"}]},{begin:"([^\\s\\w\\[({<;])",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\1",name:"string.regexp.format.simple_delimiter.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]},{match:"\\s+"}]},{begin:"\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",comment:"string.regexp.replaceXXX",end:"((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",endCaptures:{1:{name:"string.regexp.replace.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{begin:"(s\\s*)([^\\sa-zA-Z0-9\\[({<])",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"(?=\\2)",name:"string.regexp.replaceXXX.simple_delimiter.perl",patterns:[{include:"#escaped_char"}]},{begin:"'",captures:{0:{name:"punctuation.definition.string.perl"}},end:"'",name:"string.regexp.replaceXXX.format.single_quote.perl",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.perl.perl"}]},{begin:"([^\\sa-zA-Z0-9\\[({<])",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\1",name:"string.regexp.replaceXXX.format.simple_delimiter.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]}]},{begin:"\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))",comment:"string.regexp.replace.extended",end:"((([egimosradlupc]*x[egimosradlupc]*)))\\b",endCaptures:{1:{name:"string.regexp.replace.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{begin:"(s)\\s*(.)",captures:{0:{name:"punctuation.definition.string.perl"},1:{name:"support.function.perl"}},end:"(?=\\2)",name:"string.regexp.replace.extended.simple_delimiter.perl",patterns:[{include:"#escaped_char"}]},{begin:"'",captures:{0:{name:"punctuation.definition.string.perl"}},end:"'(?=[egimosradlupc]*x[egimosradlupc]*)\\b",name:"string.regexp.replace.extended.simple_delimiter.perl",patterns:[{include:"#escaped_char"}]},{begin:"(.)",captures:{0:{name:"punctuation.definition.string.perl"}},end:"\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",name:"string.regexp.replace.extended.simple_delimiter.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]}]},{begin:"(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))",beginCaptures:{1:{name:"string.regexp.find.perl"},2:{name:"punctuation.definition.string.perl"}},contentName:"string.regexp.find.perl",end:"((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",endCaptures:{1:{name:"string.regexp.find.perl"},2:{name:"punctuation.definition.string.perl"},3:{name:"keyword.control.regexp-option.perl"}},patterns:[{comment:"This is to prevent thinks like /foo$/ to treat $/ as a variable",match:"\\$(?=\\/)",name:"keyword.control.anchor.perl"},{include:"#escaped_char"},{include:"#variable"}]},{captures:{1:{name:"constant.other.key.perl"}},match:"\\b(\\w+)\\s*(?==>)"},{match:"(?<={)\\s*\\w+\\s*(?=})",name:"constant.other.bareword.perl"},{captures:{1:{name:"keyword.control.perl"},2:{name:"entity.name.type.class.perl"}},match:"^\\s*(package)\\s+([^\\s;]+)",name:"meta.class.perl"},{captures:{1:{name:"storage.type.sub.perl"},2:{name:"entity.name.function.perl"},3:{name:"storage.type.method.perl"}},match:"\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",name:"meta.function.perl"},{captures:{1:{name:"entity.name.function.perl"},2:{name:"punctuation.definition.parameters.perl"},3:{name:"variable.parameter.function.perl"}},match:"^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",name:"meta.function.perl"},{begin:"^(?=(\\t| {4}))",end:"(?=[^\\t\\s])",name:"meta.leading-tabs",patterns:[{captures:{1:{name:"meta.odd-tab"},2:{name:"meta.even-tab"}},match:"(\\t| {4})(\\t| {4})?"}]},{captures:{1:{name:"support.function.perl"},2:{name:"punctuation.definition.string.perl"},5:{name:"punctuation.definition.string.perl"},8:{name:"punctuation.definition.string.perl"}},match:"\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",name:"string.regexp.replace.perl"},{match:"\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b",name:"constant.language.perl"},{begin:"\\b(__DATA__|__END__)\\n?",beginCaptures:{1:{name:"constant.language.perl"}},contentName:"comment.block.documentation.perl",end:"\\z",patterns:[{include:"#pod"}]},{match:"(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b",name:"keyword.control.perl"},{match:"\\b(my|our|local)\\b",name:"storage.modifier.perl"},{match:"(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b",name:"keyword.operator.filetest.perl"},{match:"\\b(and|or|xor|as|not)\\b",name:"keyword.operator.logical.perl"},{match:"(<=>|=>|->)",name:"keyword.operator.comparison.perl"},{include:"#heredoc"},{begin:"\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.qq.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"\\bqx\\s*'",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx.single-quote.perl",patterns:[{include:"#escaped_char"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.double.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.q.perl"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.single.perl",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.perl"}]},{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.perl",patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"(?<!->)\\bqq\\s*\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.qq-paren.perl",patterns:[{include:"#escaped_char"},{include:"#nested_parens_interpolated"},{include:"#variable"}]},{begin:"\\bqq\\s*\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.qq-brace.perl",patterns:[{include:"#escaped_char"},{include:"#nested_braces_interpolated"},{include:"#variable"}]},{begin:"\\bqq\\s*\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.qq-bracket.perl",patterns:[{include:"#escaped_char"},{include:"#nested_brackets_interpolated"},{include:"#variable"}]},{begin:"\\bqq\\s*\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.qq-ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#nested_ltgt_interpolated"},{include:"#variable"}]},{begin:"(?<!->)\\bqx\\s*\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx-paren.perl",patterns:[{include:"#escaped_char"},{include:"#nested_parens_interpolated"},{include:"#variable"}]},{begin:"\\bqx\\s*\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx-brace.perl",patterns:[{include:"#escaped_char"},{include:"#nested_braces_interpolated"},{include:"#variable"}]},{begin:"\\bqx\\s*\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx-bracket.perl",patterns:[{include:"#escaped_char"},{include:"#nested_brackets_interpolated"},{include:"#variable"}]},{begin:"\\bqx\\s*\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.interpolated.qx-ltgt.perl",patterns:[{include:"#escaped_char"},{include:"#nested_ltgt_interpolated"},{include:"#variable"}]},{begin:"(?<!->)\\bqw?\\s*\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.q-paren.perl",patterns:[{include:"#nested_parens"}]},{begin:"\\bqw?\\s*\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.q-brace.perl",patterns:[{include:"#nested_braces"}]},{begin:"\\bqw?\\s*\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.q-bracket.perl",patterns:[{include:"#nested_brackets"}]},{begin:"\\bqw?\\s*\\<",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.other.q-ltgt.perl",patterns:[{include:"#nested_ltgt"}]},{begin:"^__\\w+__",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"$",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.unquoted.program-block.perl"},{begin:"\\b(format)\\s+(\\w+)\\s*=",beginCaptures:{1:{name:"support.function.perl"},2:{name:"entity.name.function.format.perl"}},end:"^\\.\\s*$",name:"meta.format.perl",patterns:[{include:"#line_comment"},{include:"#variable"}]},{captures:{1:{name:"support.function.perl"},2:{name:"entity.name.function.perl"}},match:"\\b(x)\\s*(\\d+)\\b"},{match:"\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|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|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b",name:"support.function.perl"},{captures:{1:{name:"punctuation.section.scope.begin.perl"},2:{name:"punctuation.section.scope.end.perl"}},comment:"Match empty brackets for ↩ snippet",match:"(\\{)(\\})"},{captures:{1:{name:"punctuation.section.scope.begin.perl"},2:{name:"punctuation.section.scope.end.perl"}},comment:"Match empty parenthesis for ↩ snippet",match:"(\\()(\\))"}],repository:{escaped_char:{patterns:[{match:"\\\\\\d+",name:"constant.character.escape.perl"},{match:"\\\\c[^\\s\\\\]",name:"constant.character.escape.perl"},{match:"\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",name:"constant.character.escape.perl"},{match:"\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",name:"constant.character.escape.perl"},{match:"\\\\N\\{[^\\}]*\\}",name:"constant.character.escape.perl"},{match:"\\\\o\\{\\d*\\}",name:"constant.character.escape.perl"},{match:"\\\\(?:p|P)(?:\\{\\w*\\}|P)",name:"constant.character.escape.perl"},{match:"\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",name:"constant.character.escape.perl"},{match:"\\\\.",name:"constant.character.escape.perl"}]},heredoc:{patterns:[{begin:"((((<<(~)?) *')(HTML)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.html",patterns:[{begin:"^",end:"\\n",name:"text.html.basic",patterns:[{include:"text.html.basic"}]}]},{begin:"((((<<(~)?) *')(XML)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.xml",patterns:[{begin:"^",end:"\\n",name:"text.xml",patterns:[{include:"text.xml"}]}]},{begin:"((((<<(~)?) *')(CSS)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.css",patterns:[{begin:"^",end:"\\n",name:"source.css",patterns:[{include:"source.css"}]}]},{begin:"((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.js",patterns:[{begin:"^",end:"\\n",name:"source.js",patterns:[{include:"source.js"}]}]},{begin:"((((<<(~)?) *')(SQL)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.sql",patterns:[{begin:"^",end:"\\n",name:"source.sql",patterns:[{include:"source.sql"}]}]},{begin:"((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.postscript",patterns:[{begin:"^",end:"\\n",name:"source.postscript",patterns:[{include:"source.postscript"}]}]},{begin:"((((<<(~)?) *')([^']*)(')))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}}},{begin:"((((<<(~)?) *\\\\)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.raw.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.raw.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.raw.perl"},3:{name:"punctuation.definition.string.end.perl"}}},{begin:'((((<<(~)?) *")(HTML)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.html",patterns:[{begin:"^",end:"\\n",name:"text.html.basic",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"text.html.basic"}]}]},{begin:'((((<<(~)?) *")(XML)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.xml",patterns:[{begin:"^",end:"\\n",name:"text.xml",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"text.xml"}]}]},{begin:'((((<<(~)?) *")(CSS)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.css",patterns:[{begin:"^",end:"\\n",name:"source.css",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.css"}]}]},{begin:'((((<<(~)?) *")(JAVASCRIPT)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.js",patterns:[{begin:"^",end:"\\n",name:"source.js",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.js"}]}]},{begin:'((((<<(~)?) *")(SQL)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.sql",patterns:[{begin:"^",end:"\\n",name:"source.sql",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.sql"}]}]},{begin:'((((<<(~)?) *")(POSTSCRIPT)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.postscript",patterns:[{begin:"^",end:"\\n",name:"source.postscript",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.postscript"}]}]},{begin:'((((<<(~)?) *")([^"]*)(")))(.*)\\n?',beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"((((<<(~)?) *)(HTML)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.html",patterns:[{begin:"^",end:"\\n",name:"text.html.basic",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"text.html.basic"}]}]},{begin:"((((<<(~)?) *)(XML)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.xml",patterns:[{begin:"^",end:"\\n",name:"text.xml",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"text.xml"}]}]},{begin:"((((<<(~)?) *)(CSS)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.css",patterns:[{begin:"^",end:"\\n",name:"source.css",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.css"}]}]},{begin:"((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.js",patterns:[{begin:"^",end:"\\n",name:"source.js",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.js"}]}]},{begin:"((((<<(~)?) *)(SQL)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.sql",patterns:[{begin:"^",end:"\\n",name:"source.sql",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.sql"}]}]},{begin:"((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},name:"meta.embedded.block.postscript",patterns:[{begin:"^",end:"\\n",name:"source.postscript",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"source.postscript"}]}]},{begin:"((((<<(~)?) *)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.interpolated.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},patterns:[{include:"#escaped_char"},{include:"#variable"}]},{begin:"((((<<(~)?) *`)([^`]*)(`)))(.*)\\n?",beginCaptures:{1:{name:"string.unquoted.heredoc.interpolated.perl"},2:{name:"punctuation.definition.string.begin.perl"},3:{name:"punctuation.definition.delimiter.begin.perl"},7:{name:"punctuation.definition.delimiter.end.perl"},8:{patterns:[{include:"$self"}]}},contentName:"string.unquoted.heredoc.shell.perl",end:"^((?!\\5)\\s+)?((\\6))$",endCaptures:{2:{name:"string.unquoted.heredoc.interpolated.perl"},3:{name:"punctuation.definition.string.end.perl"}},patterns:[{include:"#escaped_char"},{include:"#variable"}]}]},line_comment:{patterns:[{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.perl"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.perl"}},end:"\\n",name:"comment.line.number-sign.perl"}]}]},nested_braces:{begin:"\\{",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\}",patterns:[{include:"#escaped_char"},{include:"#nested_braces"}]},nested_braces_interpolated:{begin:"\\{",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\}",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_braces_interpolated"}]},nested_brackets:{begin:"\\[",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\]",patterns:[{include:"#escaped_char"},{include:"#nested_brackets"}]},nested_brackets_interpolated:{begin:"\\[",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\]",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_brackets_interpolated"}]},nested_ltgt:{begin:"<",captures:{1:{name:"punctuation.section.scope.perl"}},end:">",patterns:[{include:"#nested_ltgt"}]},nested_ltgt_interpolated:{begin:"<",captures:{1:{name:"punctuation.section.scope.perl"}},end:">",patterns:[{include:"#variable"},{include:"#nested_ltgt_interpolated"}]},nested_parens:{begin:"\\(",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\)",patterns:[{include:"#escaped_char"},{include:"#nested_parens"}]},nested_parens_interpolated:{begin:"\\(",captures:{1:{name:"punctuation.section.scope.perl"}},end:"\\)",patterns:[{comment:"This is to prevent thinks like qr/foo$/ to treat $/ as a variable",match:"\\$(?=[^\\s\\w'\\{\\[\\(\\<])",name:"keyword.control.anchor.perl"},{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]},pod:{patterns:[{match:"^=(pod|back|cut)\\b",name:"storage.type.class.pod.perl"},{begin:"^(=begin)\\s+(html)\\s*$",beginCaptures:{1:{name:"storage.type.class.pod.perl"},2:{name:"variable.other.pod.perl"}},contentName:"text.embedded.html.basic",end:"^(=end)\\s+(html)|^(?==cut)",endCaptures:{1:{name:"storage.type.class.pod.perl"},2:{name:"variable.other.pod.perl"}},name:"meta.embedded.pod.perl",patterns:[{include:"text.html.basic"}]},{captures:{1:{name:"storage.type.class.pod.perl"},2:{name:"variable.other.pod.perl",patterns:[{include:"#pod-formatting"}]}},match:"^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)"},{include:"#pod-formatting"}]},"pod-formatting":{patterns:[{captures:{1:{name:"markup.italic.pod.perl"},2:{name:"markup.italic.pod.perl"}},match:"I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",name:"entity.name.type.instance.pod.perl"},{captures:{1:{name:"markup.bold.pod.perl"},2:{name:"markup.bold.pod.perl"}},match:"B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",name:"entity.name.type.instance.pod.perl"},{captures:{1:{name:"markup.raw.pod.perl"},2:{name:"markup.raw.pod.perl"}},match:"C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)",name:"entity.name.type.instance.pod.perl"},{captures:{1:{name:"markup.underline.link.hyperlink.pod.perl"}},match:"L<([^>]+)>",name:"entity.name.type.instance.pod.perl"},{match:"[EFSXZ]<[^>]*>",name:"entity.name.type.instance.pod.perl"}]},variable:{patterns:[{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)&(?![A-Za-z0-9_])",name:"variable.other.regexp.match.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)`(?![A-Za-z0-9_])",name:"variable.other.regexp.pre-match.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)'(?![A-Za-z0-9_])",name:"variable.other.regexp.post-match.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)\\+(?![A-Za-z0-9_])",name:"variable.other.regexp.last-paren-match.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:'(\\$)"(?![A-Za-z0-9_])',name:"variable.other.readwrite.list-separator.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)0(?![A-Za-z0-9_])",name:"variable.other.predefined.program-name.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",name:"variable.other.predefined.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"(\\$)[0-9]+(?![A-Za-z0-9_])",name:"variable.other.subpattern.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",name:"variable.other.readwrite.global.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"},2:{name:"punctuation.definition.variable.perl"}},match:"(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",name:"variable.other.readwrite.global.perl"},{captures:{1:{name:"punctuation.definition.variable.perl"}},match:"([\\$\\@\\%](#)?)[0-9_]\\b",name:"variable.other.readwrite.global.special.perl"}]}},scopeName:"source.perl",embeddedLangs:["html","xml","css","javascript","sql"]});var u=[...e,...n,...t,...i,...r,a];export{u as default}; diff --git a/assets/chunks/php.DEqKwr-6.js b/assets/chunks/php.DEqKwr-6.js new file mode 100644 index 000000000..7d8c9af34 --- /dev/null +++ b/assets/chunks/php.DEqKwr-6.js @@ -0,0 +1,771 @@ +import e from"./html.CuK0VrWf.js";import n from"./xml.BzTcx3OS.js";import t from"./sql.DbK06e1c.js";import a from"./javascript.Dch3xQiY.js";import r from"./json.CupVZNk8.js";import i from"./css.CbYhyuC0.js";import"./java.ClXEvkw9.js";const p=Object.freeze({displayName:"PHP",name:"php",patterns:[{include:"#attribute"},{include:"#comments"},{captures:{1:{name:"keyword.other.namespace.php"},2:{name:"entity.name.type.namespace.php",patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]}},match:"(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)(?=\\s*;)",name:"meta.namespace.php"},{begin:"(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",beginCaptures:{1:{name:"keyword.other.namespace.php"}},end:"(?<=})|(?=\\?>)",name:"meta.namespace.php",patterns:[{include:"#comments"},{captures:{0:{patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]}},match:"(?i)[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+",name:"entity.name.type.namespace.php"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.namespace.begin.bracket.curly.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.namespace.end.bracket.curly.php"}},patterns:[{include:"$self"}]},{match:"[^\\s]+",name:"invalid.illegal.identifier.php"}]},{match:"\\s+(?=use\\b)"},{begin:"(?i)\\buse\\b",beginCaptures:{0:{name:"keyword.other.use.php"}},end:"(?<=})|(?=;)|(?=\\?>)",name:"meta.use.php",patterns:[{match:"\\b(const|function)\\b",name:"storage.type.${1:/downcase}.php"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.use.begin.bracket.curly.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.use.end.bracket.curly.php"}},patterns:[{include:"#scope-resolution"},{captures:{1:{name:"keyword.other.use-as.php"},2:{name:"storage.modifier.php"},3:{name:"entity.other.alias.php"}},match:`(?xi) +\\b(as) +\\s+(final|abstract|public|private|protected|static) +\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`},{captures:{1:{name:"keyword.other.use-as.php"},2:{patterns:[{match:"^(?:final|abstract|public|private|protected|static)$",name:"storage.modifier.php"},{match:".+",name:"entity.other.alias.php"}]}},match:`(?xi) +\\b(as) +\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`},{captures:{1:{name:"keyword.other.use-insteadof.php"},2:{name:"support.class.php"}},match:"(?i)\\b(insteadof)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)"},{match:";",name:"punctuation.terminator.expression.php"},{include:"#use-inner"}]},{include:"#use-inner"}]},{begin:`(?ix) +\\b(trait)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`,beginCaptures:{1:{name:"storage.type.trait.php"},2:{name:"entity.name.type.trait.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.trait.end.bracket.curly.php"}},name:"meta.trait.php",patterns:[{include:"#comments"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.trait.begin.bracket.curly.php"}},contentName:"meta.trait.body.php",end:"(?=}|\\?>)",patterns:[{include:"$self"}]}]},{begin:`(?ix) +\\b(interface)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`,beginCaptures:{1:{name:"storage.type.interface.php"},2:{name:"entity.name.type.interface.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.interface.end.bracket.curly.php"}},name:"meta.interface.php",patterns:[{include:"#comments"},{include:"#interface-extends"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.interface.begin.bracket.curly.php"}},contentName:"meta.interface.body.php",end:"(?=}|\\?>)",patterns:[{include:"#class-constant"},{include:"$self"}]}]},{begin:`(?ix) +\\b(enum)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +(?: \\s* (:) \\s* (int | string) \\b )?`,beginCaptures:{1:{name:"storage.type.enum.php"},2:{name:"entity.name.type.enum.php"},3:{name:"keyword.operator.return-value.php"},4:{name:"keyword.other.type.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.enum.end.bracket.curly.php"}},name:"meta.enum.php",patterns:[{include:"#comments"},{include:"#class-implements"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.enum.begin.bracket.curly.php"}},contentName:"meta.enum.body.php",end:"(?=}|\\?>)",patterns:[{captures:{1:{name:"storage.modifier.php"},2:{name:"constant.enum.php"}},match:"(?i)\\b(case)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)"},{include:"#class-constant"},{include:"$self"}]}]},{begin:`(?ix) +(?: +\\b((?:(?:final|abstract|readonly)\\s+)*)(class)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +|\\b(new)\\b\\s*(\\#\\[.*\\])?\\s*(?:(readonly)\\s+)?\\b(class)\\b +)`,beginCaptures:{1:{patterns:[{match:"final|abstract",name:"storage.modifier.${0:/downcase}.php"},{match:"readonly",name:"storage.modifier.php"}]},2:{name:"storage.type.class.php"},3:{name:"entity.name.type.class.php"},4:{name:"keyword.other.new.php"},5:{patterns:[{include:"#attribute"}]},6:{name:"storage.modifier.php"},7:{name:"storage.type.class.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.class.end.bracket.curly.php"}},name:"meta.class.php",patterns:[{begin:"(?<=class)\\s*(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.function-call.php",patterns:[{include:"#named-arguments"},{include:"$self"}]},{include:"#comments"},{include:"#class-extends"},{include:"#class-implements"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.class.begin.bracket.curly.php"}},contentName:"meta.class.body.php",end:"(?=}|\\?>)",patterns:[{include:"#class-constant"},{include:"$self"}]}]},{include:"#match_statement"},{include:"#switch_statement"},{captures:{1:{name:"keyword.control.yield-from.php"}},match:"\\s*\\b(yield\\s+from)\\b"},{captures:{1:{name:"keyword.control.${1:/downcase}.php"}},match:`(?x) +\\b( +break|case|continue|declare|default|die|do| +else(if)?|end(declare|for(each)?|if|switch|while)|exit| +for(each)?|if|return|switch|use|while|yield +)\\b`},{begin:"(?i)\\b((?:require|include)(?:_once)?)(\\s+|(?=\\())",beginCaptures:{1:{name:"keyword.control.import.include.php"}},end:"(?=\\s|;|$|\\?>)",name:"meta.include.php",patterns:[{include:"$self"}]},{begin:"\\b(catch)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.exception.catch.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},name:"meta.catch.php",patterns:[{captures:{1:{patterns:[{match:"\\|",name:"punctuation.separator.delimiter.php"},{begin:"(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",end:`(?xi) +( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* ) +(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])`,endCaptures:{1:{name:"support.class.exception.php"}},patterns:[{include:"#namespace"}]}]},2:{name:"variable.other.php"},3:{name:"punctuation.definition.variable.php"}},match:`(?xi) +([a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ (?: \\s*\\|\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)*) +\\s* +((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?`}]},{match:"\\b(catch|try|throw|exception|finally)\\b",name:"keyword.control.exception.php"},{begin:"(?i)\\b(function)\\s*(?=&?\\s*\\()",beginCaptures:{1:{name:"storage.type.function.php"}},end:"(?=\\s*{)",name:"meta.function.closure.php",patterns:[{include:"#comments"},{begin:"(&)?\\s*(\\()",beginCaptures:{1:{name:"storage.modifier.reference.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},patterns:[{include:"#function-parameters"}]},{begin:"(?i)(use)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.function.use.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},name:"meta.function.closure.use.php",patterns:[{match:",",name:"punctuation.separator.delimiter.php"},{captures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"punctuation.definition.variable.php"}},match:"(?i)((?:(&)\\s*)?(\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(?=,|\\))"}]},{captures:{1:{name:"keyword.operator.return-value.php"},2:{patterns:[{include:"#php-types"}]}},match:`(?xi) +(:)\\s* +( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) +(?=\\s*(?:{|/[/*]|\\#|$))`}]},{begin:"(?i)\\b(fn)\\s*(?=&?\\s*\\()",beginCaptures:{1:{name:"storage.type.function.php"}},end:"=>",endCaptures:{0:{name:"punctuation.definition.arrow.php"}},name:"meta.function.closure.php",patterns:[{begin:"(?:(&)\\s*)?(\\()",beginCaptures:{1:{name:"storage.modifier.reference.php"},2:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.php"}},patterns:[{include:"#function-parameters"}]},{captures:{1:{name:"keyword.operator.return-value.php"},2:{patterns:[{include:"#php-types"}]}},match:`(?xi) +(:)\\s* +( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) +(?=\\s*(?:=>|/[/*]|\\#|$))`}]},{begin:`(?x) +((?:(?:final|abstract|public|private|protected)\\s+)*) +(function)\\s+(__construct) +\\s*(\\()`,beginCaptures:{1:{patterns:[{match:"final|abstract|public|private|protected",name:"storage.modifier.php"}]},2:{name:"storage.type.function.php"},3:{name:"support.function.constructor.php"},4:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:`(?xi) +(\\)) \\s* ( : \\s* +(?:\\?\\s*)? (?!\\s) [a-z0-9_\\x{7f}-\\x{10ffff}\\\\\\s\\|&()]+ (?<!\\s) +)? +(?=\\s*(?:{|/[/*]|\\#|$|;))`,endCaptures:{1:{name:"punctuation.definition.parameters.end.bracket.round.php"},2:{name:"invalid.illegal.return-type.php"}},name:"meta.function.php",patterns:[{include:"#comments"},{match:",",name:"punctuation.separator.delimiter.php"},{begin:`(?xi) +((?:(?:public|private|protected|readonly)(?:\\s+|(?=\\?)))++) +(?: ( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) \\s+ )? +((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`,beginCaptures:{1:{patterns:[{match:"public|private|protected|readonly",name:"storage.modifier.php"}]},2:{patterns:[{include:"#php-types"}]},3:{name:"variable.other.php"},4:{name:"storage.modifier.reference.php"},5:{name:"punctuation.definition.variable.php"}},end:"(?=\\s*(?:,|\\)|/[/*]|\\#))",name:"meta.function.parameter.promoted-property.php",patterns:[{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.php"}},end:"(?=\\s*(?:,|\\)|/[/*]|\\#))",patterns:[{include:"#parameter-default-types"}]}]},{include:"#function-parameters"}]},{begin:`(?x) +((?:(?:final|abstract|public|private|protected|static)\\s+)*) +(function)\\s+ +(?i: +(__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString| +clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize)) +|(?:(&)?\\s*([a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*)) +) +\\s*(\\()`,beginCaptures:{1:{patterns:[{match:"final|abstract|public|private|protected|static",name:"storage.modifier.php"}]},2:{name:"storage.type.function.php"},3:{name:"support.function.magic.php"},4:{name:"storage.modifier.reference.php"},5:{name:"entity.name.function.php"},6:{name:"punctuation.definition.parameters.begin.bracket.round.php"}},contentName:"meta.function.parameters.php",end:`(?xi) +(\\)) (?: \\s* (:) \\s* ( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) )? +(?=\\s*(?:{|/[/*]|\\#|$|;))`,endCaptures:{1:{name:"punctuation.definition.parameters.end.bracket.round.php"},2:{name:"keyword.operator.return-value.php"},3:{patterns:[{match:"\\b(static)\\b",name:"storage.type.php"},{match:"\\b(never)\\b",name:"keyword.other.type.never.php"},{include:"#php-types"}]}},name:"meta.function.php",patterns:[{include:"#function-parameters"}]},{captures:{1:{patterns:[{match:"public|private|protected|static|readonly",name:"storage.modifier.php"}]},2:{patterns:[{include:"#php-types"}]},3:{name:"variable.other.php"},4:{name:"punctuation.definition.variable.php"}},match:`(?xi) +((?:(?:public|private|protected|static|readonly)(?:\\s+|(?=\\?)))++) +( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +)? +\\s+ ((\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`},{include:"#invoke-call"},{include:"#scope-resolution"},{include:"#variables"},{include:"#strings"},{captures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"},3:{name:"punctuation.definition.array.end.bracket.round.php"}},match:"(array)(\\()(\\))",name:"meta.array.empty.php"},{begin:"(array)\\s*(\\()",beginCaptures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.round.php"}},name:"meta.array.php",patterns:[{include:"$self"}]},{captures:{1:{name:"punctuation.definition.storage-type.begin.bracket.round.php"},2:{name:"storage.type.php"},3:{name:"punctuation.definition.storage-type.end.bracket.round.php"}},match:"(?i)(\\()\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\s*(\\))"},{match:"(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\b",name:"storage.type.php"},{match:"(?i)\\b(global|abstract|const|final|private|protected|public|static)\\b",name:"storage.modifier.php"},{include:"#object"},{match:";",name:"punctuation.terminator.expression.php"},{match:":",name:"punctuation.terminator.statement.php"},{include:"#heredoc"},{include:"#numbers"},{match:"(?i)\\bclone\\b",name:"keyword.other.clone.php"},{match:"\\.\\.\\.",name:"keyword.operator.spread.php"},{match:"\\.=?",name:"keyword.operator.string.php"},{match:"=>",name:"keyword.operator.key.php"},{captures:{1:{name:"keyword.operator.assignment.php"},2:{name:"storage.modifier.reference.php"},3:{name:"storage.modifier.reference.php"}},match:"(?i)(\\=)(&)|(&)(?=[$a-z_])"},{match:"@",name:"keyword.operator.error-control.php"},{match:"===|==|!==|!=|<>",name:"keyword.operator.comparison.php"},{match:"=|\\+=|\\-=|\\*\\*?=|/=|%=|&=|\\|=|\\^=|<<=|>>=|\\?\\?=",name:"keyword.operator.assignment.php"},{match:"<=>|<=|>=|<|>",name:"keyword.operator.comparison.php"},{match:"\\-\\-|\\+\\+",name:"keyword.operator.increment-decrement.php"},{match:"\\-|\\+|\\*\\*?|/|%",name:"keyword.operator.arithmetic.php"},{match:"(?i)(!|&&|\\|\\|)|\\b(and|or|xor|as)\\b",name:"keyword.operator.logical.php"},{include:"#function-call"},{match:"<<|>>|~|\\^|&|\\|",name:"keyword.operator.bitwise.php"},{begin:"(?i)\\b(instanceof)\\s+(?=[\\\\$a-z_])",beginCaptures:{1:{name:"keyword.operator.type.php"}},end:"(?i)(?=[^\\\\$a-z0-9_\\x{7f}-\\x{10ffff}])",patterns:[{include:"#class-name"},{include:"#variable-name"}]},{include:"#instantiation"},{captures:{1:{name:"keyword.control.goto.php"},2:{name:"support.other.php"}},match:"(?i)(goto)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)"},{captures:{1:{name:"entity.name.goto-label.php"}},match:"(?i)^\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*(?<!default))\\s*:(?!:)"},{include:"#string-backtick"},{include:"#ternary_shorthand"},{include:"#null_coalescing"},{include:"#ternary_expression"},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.curly.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.end.bracket.curly.php"}},patterns:[{include:"$self"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.array.begin.php"}},end:"\\]|(?=\\?>)",endCaptures:{0:{name:"punctuation.section.array.end.php"}},patterns:[{include:"$self"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.php"}},patterns:[{include:"$self"}]},{include:"#constants"},{match:",",name:"punctuation.separator.delimiter.php"}],repository:{attribute:{begin:"\\#\\[",end:"\\]",name:"meta.attribute.php",patterns:[{match:",",name:"punctuation.separator.delimiter.php"},{begin:"([a-zA-Z0-9_\\x{7f}-\\x{10ffff}\\\\]+)\\s*(\\()",beginCaptures:{1:{patterns:[{include:"#attribute-name"}]},2:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},patterns:[{include:"#named-arguments"},{include:"$self"}]},{include:"#attribute-name"}]},"attribute-name":{patterns:[{begin:"(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",end:`(?xi) +( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )? +(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])`,endCaptures:{1:{name:"support.attribute.php"}},patterns:[{include:"#namespace"}]},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?xi) +(\\\\)?\\b(Attribute|SensitiveParameter|AllowDynamicProperties|ReturnTypeWillChange)\\b`,name:"support.attribute.builtin.php"},{begin:"(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",end:`(?xi) +( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )? +(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])`,endCaptures:{1:{name:"support.attribute.php"}},patterns:[{include:"#namespace"}]}]},"class-builtin":{patterns:[{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?xi) +(\\\\)?\\b +(Attribute|(APC|Append)Iterator|Array(Access|Iterator|Object) +|Bad(Function|Method)CallException +|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile +|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException +|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference +|Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath) +|(Error)?Exception|EmptyIterator +|finfo +|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)? +|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)? +|FANNConnection|(Filter|Filesystem)Iterator +|Gender\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)? +|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page) +|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString) +|HRTime\\\\(PerformanceCounter|StopWatch) +|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone) +|Imagick(Draw|Pixel(Iterator)?)? +|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)? +|JsonSerializable +|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame)) +|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)? +|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch +|Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp +|UpdateBatch|Write(Batch|ConcernException))? +|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex +|mysqli(_(driver|stmt|warning|result))? +|MysqlndUh(Connection|PreparedStatement) +|NoRewindIterator|Normalizer|NumberFormatter +|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception +|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool +|QuickHash(Int(Set|StringHash)|StringIntHash) +|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator +|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)? +|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater) +|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))? +|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?) +|Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence) +|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP +|Soap(Client|Fault|Header|Param|Server|Var) +|SphinxClient|Spoofchecker +|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage +|(Priority)?Queue|Stack|Subject|Type|TempFileObject) +|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered) +|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore) +|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable +|UConverter|(Underflow|UnexpectedValue)Exception +|V8Js(Exception)?|Varnish(Admin|Log|Stat) +|Worker|Weak(Map|Ref) +|XML(Diff\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor +|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar) +|Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract +|Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http) +|Response_Abstract|Router|Session|View_(Simple|Interface)) +|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?) +|ZipArchive|ZMQ(Context|Device|Poll|Socket)?) +\\b`,name:"support.class.builtin.php"}]},"class-constant":{patterns:[{captures:{1:{name:"storage.modifier.php"},2:{name:"constant.other.php"}},match:"(?i)\\b(const)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)"}]},"class-extends":{patterns:[{begin:"(?i)(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.extends.php"}},end:"(?i)(?=[^A-Za-z0-9_\\x{7f}-\\x{10ffff}\\\\])",patterns:[{include:"#comments"},{include:"#inheritance-single"}]}]},"class-implements":{patterns:[{begin:"(?i)(implements)\\s+",beginCaptures:{1:{name:"storage.modifier.implements.php"}},end:"(?i)(?={)",patterns:[{include:"#comments"},{match:",",name:"punctuation.separator.classes.php"},{include:"#inheritance-single"}]}]},"class-name":{patterns:[{begin:"(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",end:`(?xi) +( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )? +(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])`,endCaptures:{1:{name:"support.class.php"}},patterns:[{include:"#namespace"}]},{include:"#class-builtin"},{begin:"(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",end:`(?xi) +( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )? +(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])`,endCaptures:{1:{name:"support.class.php"}},patterns:[{include:"#namespace"}]}]},comments:{patterns:[{begin:"/\\*\\*(?=\\s)",beginCaptures:{0:{name:"punctuation.definition.comment.php"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.php"}},name:"comment.block.documentation.phpdoc.php",patterns:[{include:"#php_doc"}]},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.php"}},end:"\\*/",name:"comment.block.php"},{begin:"(^\\s+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.php"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.php"}},end:"\\n|(?=\\?>)",name:"comment.line.double-slash.php"}]},{begin:"(^\\s+)?(?=#)(?!#\\[)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.php"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.php"}},end:"\\n|(?=\\?>)",name:"comment.line.number-sign.php"}]}]},constants:{patterns:[{match:"(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",name:"constant.language.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(DEFAULT_INCLUDE_PATH +|EAR_(INSTALL|EXTENSION)_DIR +|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE +|PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING) +|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN +|BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR) +|INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR +|URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX +|EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)? +|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION) +|VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR) +|PRODUCTTYPE|PLATFORM) +|LIBDIR|LOCALSTATEDIR) +|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE)) +\\b`,name:"support.constant.core.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7]) +|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS +|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE) +|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI) +|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL +|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C) +|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR +|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP) +|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS) +|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES) +|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS) +|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN) +|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL +|NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER) +|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E) +|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP) +|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR) +|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN +|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR +|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT) +|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP +|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL) +|YES(EXPR|STR)) +\\b`,name:"support.constant.std.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS) +|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE +|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING) +|ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE +|NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE +|UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT +|PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY) +|ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE) +|CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION) +|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256) +|CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32) +|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC)) +|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG) +|READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH +|STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT +|SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG) +|NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)? +|CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE) +|CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS) +|TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR +|TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?) +|TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG +|OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE) +|DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG +|ASSOC|ASYNC|AUTO_INCREMENT_FLAG) +|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS +|BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY +|TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?) +|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR +|SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN) +|NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS +|FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT)) +|CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT) +|CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB +|OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH +|PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE)) +|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP) +|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT +|CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY +|FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH) +|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC) +|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK) +|MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD) +|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC) +|INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME +|(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME +|CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME +|PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME) +|OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE +|MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE +|SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES) +|SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?) +|SSL_(CIPHER_LIST|VERIFY(HOST|PEER)) +|STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH) +|HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)? +|COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT +|TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE +|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD +|PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT +|POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT +|FTP(APPEND|LISTONLY|PORT|SSLAUTH) +|FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD) +|FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME) +|AUTOREFERER) +|PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL) +|E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER +|BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT) +|SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED)) +|SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR) +|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE +|OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL +|UNKNOWN_TELNET_OPTION|PARTIAL_FILE +|FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST) +|CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR +|WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED) +|FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND +|LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK) +|VERSION_NOW +|FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS)) +|AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM)) +|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD) +|IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ)) +|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP) +|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION) +|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?) +|DOM(STRING_SIZE_ERR) +|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE +|INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR) +|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT) +|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT +|SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER) +|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC))) +|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO)) +|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME) +|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW +|SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL +|EMAIL|ENCODED|FULL_SPCIAL_CHARS) +|VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT) +|FORCE_ARRAY +|FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES +|IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED +|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION))) +|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND) +|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME) +|FORCE_(DEFLATE|GZIP) +|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING) +|COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING))) +\\b`,name:"support.constant.ext.php"},{captures:{1:{name:"punctuation.separator.inheritance.php"}},match:`(?x) +(\\\\)?\\b +(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK +|BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC +|SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT +|CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)? +|CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL)) +|INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR) +|OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON) +|DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC +|PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE +|END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE +|FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR) +|ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL)) +\\b`,name:"support.constant.parser-token.php"},{match:"(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",name:"constant.other.php"}]},"function-call":{patterns:[{begin:`(?x) +( +\\\\?(?<![a-zA-Z0-9_\\x{7f}-\\x{10ffff}]) +[a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]* +(?:\\\\[a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*)+ +)\\s*(\\()`,beginCaptures:{1:{patterns:[{include:"#namespace"},{match:"(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",name:"entity.name.function.php"}]},2:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.function-call.php",patterns:[{include:"#named-arguments"},{include:"$self"}]},{begin:"(\\\\)?(?<![a-zA-Z0-9_\\x{7f}-\\x{10ffff}])([a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",beginCaptures:{1:{patterns:[{include:"#namespace"}]},2:{patterns:[{include:"#support"},{match:"(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",name:"entity.name.function.php"}]},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.function-call.php",patterns:[{include:"#named-arguments"},{include:"$self"}]},{match:"(?i)\\b(print|echo)\\b",name:"support.function.construct.output.php"}]},"function-parameters":{patterns:[{include:"#attribute"},{include:"#comments"},{match:",",name:"punctuation.separator.delimiter.php"},{captures:{1:{patterns:[{include:"#php-types"}]},2:{name:"variable.other.php"},3:{name:"storage.modifier.reference.php"},4:{name:"keyword.operator.variadic.php"},5:{name:"punctuation.definition.variable.php"}},match:`(?xi) +(?: ( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) \\s+ )? +((?:(&)\\s*)?(\\.\\.\\.)(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +(?=\\s*(?:,|\\)|/[/*]|\\#|$))`,name:"meta.function.parameter.variadic.php"},{begin:`(?xi) +( + +(?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | + +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +(?: \\s*[|&]\\s* +(?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) ) +)+ +) +\\s+ ((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)`,beginCaptures:{1:{patterns:[{include:"#php-types"}]},2:{name:"variable.other.php"},3:{name:"storage.modifier.reference.php"},4:{name:"punctuation.definition.variable.php"}},end:"(?=\\s*(?:,|\\)|/[/*]|\\#))",name:"meta.function.parameter.typehinted.php",patterns:[{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.php"}},end:"(?=\\s*(?:,|\\)|/[/*]|\\#))",patterns:[{include:"#parameter-default-types"}]}]},{captures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"punctuation.definition.variable.php"}},match:`(?xi) +((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +(?=\\s*(?:,|\\)|/[/*]|\\#|$))`,name:"meta.function.parameter.no-default.php"},{begin:`(?xi) +((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +\\s*(=)\\s*`,beginCaptures:{1:{name:"variable.other.php"},2:{name:"storage.modifier.reference.php"},3:{name:"punctuation.definition.variable.php"},4:{name:"keyword.operator.assignment.php"}},end:"(?=\\s*(?:,|\\)|/[/*]|\\#))",name:"meta.function.parameter.default.php",patterns:[{include:"#parameter-default-types"}]}]},heredoc:{patterns:[{begin:'(?i)(?=<<<\\s*("?)([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\1)\\s*$)',end:"(?!\\G)",name:"string.unquoted.heredoc.php",patterns:[{include:"#heredoc_interior"}]},{begin:"(?=<<<\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\s*$)",end:"(?!\\G)",name:"string.unquoted.nowdoc.php",patterns:[{include:"#nowdoc_interior"}]}]},heredoc_interior:{patterns:[{begin:'(<<<)\\s*("?)(HTML)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.html",patterns:[{include:"#interpolation"},{include:"text.html.basic"}]},{begin:'(<<<)\\s*("?)(XML)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.xml",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.xml",patterns:[{include:"#interpolation"},{include:"text.xml"}]},{begin:'(<<<)\\s*("?)([DS]QL)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.sql",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.sql",patterns:[{include:"#interpolation"},{include:"source.sql"}]},{begin:'(<<<)\\s*("?)(JAVASCRIPT|JS)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.js",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.js",patterns:[{include:"#interpolation"},{include:"source.js"}]},{begin:'(<<<)\\s*("?)(JSON)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.json",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.json",patterns:[{include:"#interpolation"},{include:"source.json"}]},{begin:'(<<<)\\s*("?)(CSS)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.css",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.css",patterns:[{include:"#interpolation"},{include:"source.css"}]},{begin:'(<<<)\\s*("?)(REGEXP?)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"string.regexp.heredoc.php",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},patterns:[{include:"#interpolation"},{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{captures:{1:{name:"punctuation.definition.arbitrary-repitition.php"},3:{name:"punctuation.definition.arbitrary-repitition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repitition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{match:"\\\\[\\\\'\\[\\]]",name:"constant.character.escape.php"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"},{begin:"(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{10ffff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",beginCaptures:{1:{name:"punctuation.definition.comment.php"}},end:"$",endCaptures:{0:{name:"punctuation.definition.comment.php"}},name:"comment.line.number-sign.php"}]},{begin:'(<<<)\\s*("?)(BLADE)(\\2)(\\s*)$',beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html.php.blade",end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.heredoc.php"}},name:"meta.embedded.php.blade",patterns:[{include:"#interpolation"}]},{begin:'(?i)(<<<)\\s*("?)([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\2)(\\s*)',beginCaptures:{1:{name:"punctuation.definition.string.php"},3:{name:"keyword.operator.heredoc.php"},5:{name:"invalid.illegal.trailing-whitespace.php"}},end:"^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{1:{name:"keyword.operator.heredoc.php"}},patterns:[{include:"#interpolation"}]}]},"inheritance-single":{patterns:[{begin:"(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",end:"(?i)([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",endCaptures:{1:{name:"entity.other.inherited-class.php"}},patterns:[{include:"#namespace"}]},{include:"#class-builtin"},{include:"#namespace"},{match:"(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",name:"entity.other.inherited-class.php"}]},instantiation:{begin:"(?i)(new)\\s+(?!class\\b)",beginCaptures:{1:{name:"keyword.other.new.php"}},end:"(?i)(?=[^a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",patterns:[{match:"(?i)(parent|static|self)(?![a-z0-9_\\x{7f}-\\x{10ffff}])",name:"storage.type.php"},{include:"#class-name"},{include:"#variable-name"}]},"interface-extends":{patterns:[{begin:"(?i)(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.extends.php"}},end:"(?i)(?={)",patterns:[{include:"#comments"},{match:",",name:"punctuation.separator.classes.php"},{include:"#inheritance-single"}]}]},interpolation:{patterns:[{match:"\\\\[0-7]{1,3}",name:"constant.character.escape.octal.php"},{match:"\\\\x[0-9A-Fa-f]{1,2}",name:"constant.character.escape.hex.php"},{match:"\\\\u{[0-9A-Fa-f]+}",name:"constant.character.escape.unicode.php"},{match:"\\\\[nrtvef$\\\\]",name:"constant.character.escape.php"},{begin:"{(?=\\$.*?})",beginCaptures:{0:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"$self"}]},{include:"#variable-name"}]},interpolation_double_quoted:{patterns:[{match:'\\\\"',name:"constant.character.escape.php"},{include:"#interpolation"}]},"invoke-call":{captures:{1:{name:"variable.other.php"},2:{name:"punctuation.definition.variable.php"}},match:"(?i)((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(?=\\s*\\()",name:"meta.function-call.invoke.php"},match_statement:{patterns:[{match:"\\s+(?=match\\b)"},{begin:"\\bmatch\\b",beginCaptures:{0:{name:"keyword.control.match.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.section.match-block.end.bracket.curly.php"}},name:"meta.match-statement.php",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.match-expression.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.match-expression.end.bracket.round.php"}},patterns:[{include:"$self"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.section.match-block.begin.bracket.curly.php"}},end:"(?=}|\\?>)",patterns:[{match:"=>",name:"keyword.definition.arrow.php"},{include:"$self"}]}]}]},"named-arguments":{captures:{1:{name:"entity.name.variable.parameter.php"},2:{name:"punctuation.separator.colon.php"}},match:"(?i)(?<=^|\\(|,)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(:)(?!:)"},namespace:{begin:"(?i)(?:(namespace)|[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?(\\\\)",beginCaptures:{1:{name:"variable.language.namespace.php"},2:{name:"punctuation.separator.inheritance.php"}},end:"(?i)(?![a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",name:"support.other.namespace.php",patterns:[{match:"\\\\",name:"punctuation.separator.inheritance.php"}]},nowdoc_interior:{patterns:[{begin:"(<<<)\\s*'(HTML)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.html",patterns:[{include:"text.html.basic"}]},{begin:"(<<<)\\s*'(XML)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.xml",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.xml",patterns:[{include:"text.xml"}]},{begin:"(<<<)\\s*'([DS]QL)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.sql",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.sql",patterns:[{include:"source.sql"}]},{begin:"(<<<)\\s*'(JAVASCRIPT|JS)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.js",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.js",patterns:[{include:"source.js"}]},{begin:"(<<<)\\s*'(JSON)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.json",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.json",patterns:[{include:"source.json"}]},{begin:"(<<<)\\s*'(CSS)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"source.css",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.css",patterns:[{include:"source.css"}]},{begin:"(<<<)\\s*'(REGEXP?)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"string.regexp.nowdoc.php",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},patterns:[{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{captures:{1:{name:"punctuation.definition.arbitrary-repitition.php"},3:{name:"punctuation.definition.arbitrary-repitition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repitition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{match:"\\\\[\\\\'\\[\\]]",name:"constant.character.escape.php"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"},{begin:"(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{10ffff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",beginCaptures:{1:{name:"punctuation.definition.comment.php"}},end:"$",endCaptures:{0:{name:"punctuation.definition.comment.php"}},name:"comment.line.number-sign.php"}]},{begin:"(<<<)\\s*'(BLADE)'(\\s*)$",beginCaptures:{0:{name:"punctuation.section.embedded.begin.php"},1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},contentName:"text.html.php.blade",end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{0:{name:"punctuation.section.embedded.end.php"},1:{name:"keyword.operator.nowdoc.php"}},name:"meta.embedded.php.blade"},{begin:"(?i)(<<<)\\s*'([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)'(\\s*)",beginCaptures:{1:{name:"punctuation.definition.string.php"},2:{name:"keyword.operator.nowdoc.php"},3:{name:"invalid.illegal.trailing-whitespace.php"}},end:"^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",endCaptures:{1:{name:"keyword.operator.nowdoc.php"}}}]},null_coalescing:{match:"\\?\\?",name:"keyword.operator.null-coalescing.php"},numbers:{patterns:[{match:"0[xX][0-9a-fA-F]+(?:_[0-9a-fA-F]+)*",name:"constant.numeric.hex.php"},{match:"0[bB][01]+(?:_[01]+)*",name:"constant.numeric.binary.php"},{match:"0[oO][0-7]+(?:_[0-7]+)*",name:"constant.numeric.octal.php"},{match:"0(?:_?[0-7]+)+",name:"constant.numeric.octal.php"},{captures:{1:{name:"punctuation.separator.decimal.period.php"},2:{name:"punctuation.separator.decimal.period.php"}},match:`(?x) +(?: +(?:[0-9]+(?:_[0-9]+)*)?(\\.)[0-9]+(?:_[0-9]+)*(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| +[0-9]+(?:_[0-9]+)*(\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| +[0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)* +)`,name:"constant.numeric.decimal.php"},{match:"0|[1-9](?:_?[0-9]+)*",name:"constant.numeric.decimal.php"}]},object:{patterns:[{begin:"(\\??->)\\s*(\\$?{)",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"$self"}]},{begin:"(?i)(\\??->)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"entity.name.function.php"},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.method-call.php",patterns:[{include:"#named-arguments"},{include:"$self"}]},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"variable.other.property.php"},3:{name:"punctuation.definition.variable.php"}},match:"(?i)(\\??->)\\s*((\\$+)?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?"}]},"parameter-default-types":{patterns:[{include:"#strings"},{include:"#numbers"},{include:"#string-backtick"},{include:"#variables"},{match:"=>",name:"keyword.operator.key.php"},{match:"=",name:"keyword.operator.assignment.php"},{match:"&(?=\\s*\\$)",name:"storage.modifier.reference.php"},{begin:"(array)\\s*(\\()",beginCaptures:{1:{name:"support.function.construct.php"},2:{name:"punctuation.definition.array.begin.bracket.round.php"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.round.php"}},name:"meta.array.php",patterns:[{include:"#parameter-default-types"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.array.begin.php"}},end:"\\]|(?=\\?>)",endCaptures:{0:{name:"punctuation.section.array.end.php"}},patterns:[{include:"$self"}]},{include:"#instantiation"},{begin:`(?xi) +(?=[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ +(::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)? +)`,end:"(?i)(::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?",endCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"constant.other.class.php"}},patterns:[{include:"#class-name"}]},{include:"#constants"}]},"php-types":{patterns:[{match:"\\?",name:"keyword.operator.nullable-type.php"},{match:"[|&]",name:"punctuation.separator.delimiter.php"},{match:"(?i)\\b(null|int|float|bool|string|array|object|callable|iterable|true|false|mixed|void)\\b",name:"keyword.other.type.php"},{match:"(?i)\\b(parent|self)\\b",name:"storage.type.php"},{match:"\\(",name:"punctuation.definition.type.begin.bracket.round.php"},{match:"\\)",name:"punctuation.definition.type.end.bracket.round.php"},{include:"#class-name"}]},php_doc:{patterns:[{match:"^(?!\\s*\\*).*?(?:(?=\\*\\/)|$\\n?)",name:"invalid.illegal.missing-asterisk.phpdoc.php"},{captures:{1:{name:"keyword.other.phpdoc.php"},3:{name:"storage.modifier.php"},4:{name:"invalid.illegal.wrong-access-type.phpdoc.php"}},match:"^\\s*\\*\\s*(@access)\\s+((public|private|protected)|(.+))\\s*$"},{captures:{1:{name:"keyword.other.phpdoc.php"},2:{name:"markup.underline.link.php"}},match:"(@xlink)\\s+(.+)\\s*$"},{begin:"(@(?:global|param|property(-(read|write))?|return|throws|var))\\s+(?=[?A-Za-z_\\x{7f}-\\x{10ffff}\\\\]|\\()",beginCaptures:{1:{name:"keyword.other.phpdoc.php"}},contentName:"meta.other.type.phpdoc.php",end:"(?=\\s|\\*/)",patterns:[{include:"#php_doc_types_array_multiple"},{include:"#php_doc_types_array_single"},{include:"#php_doc_types"}]},{match:`(?x) +@ +( +api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal| +license|link|method|property(-(read|write))?|package|param|return|see|since|source| +static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore +)\\b`,name:"keyword.other.phpdoc.php"},{captures:{1:{name:"keyword.other.phpdoc.php"}},match:"{(@(link|inherit[Dd]oc)).+?}",name:"meta.tag.inline.phpdoc.php"}]},php_doc_types:{captures:{0:{patterns:[{match:"\\?",name:"keyword.operator.nullable-type.php"},{match:`(?x)\\b +(string|integer|int|boolean|bool|float|double|object|mixed +|array|resource|void|null|callback|false|true|self|static)\\b`,name:"keyword.other.type.php"},{include:"#class-name"},{match:"[|&]",name:"punctuation.separator.delimiter.php"},{match:"\\(",name:"punctuation.definition.type.begin.bracket.round.php"},{match:"\\)",name:"punctuation.definition.type.end.bracket.round.php"}]}},match:"(?i)\\??[a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*([|&]\\??[a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)*"},php_doc_types_array_multiple:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.type.begin.bracket.round.phpdoc.php"}},end:"(\\))(\\[\\])|(?=\\*/)",endCaptures:{1:{name:"punctuation.definition.type.end.bracket.round.phpdoc.php"},2:{name:"keyword.other.array.phpdoc.php"}},patterns:[{include:"#php_doc_types_array_multiple"},{include:"#php_doc_types_array_single"},{include:"#php_doc_types"},{match:"[|&]",name:"punctuation.separator.delimiter.php"}]},php_doc_types_array_single:{captures:{1:{patterns:[{include:"#php_doc_types"}]},2:{name:"keyword.other.array.phpdoc.php"}},match:"(?i)([a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)(\\[\\])"},"regex-double-quoted":{begin:'"/(?=(\\\\.|[^"/])++/[imsxeADSUXu]*")',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:'(/)([imsxeADSUXu]*)(")',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.regexp.double-quoted.php",patterns:[{match:"(\\\\){1,2}[.$^\\[\\]{}]",name:"constant.character.escape.regex.php"},{include:"#interpolation_double_quoted"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.php"},3:{name:"punctuation.definition.arbitrary-repetition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repetition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php",patterns:[{include:"#interpolation_double_quoted"}]},{match:"[$^+*]",name:"keyword.operator.regexp.php"}]},"regex-single-quoted":{begin:"'/(?=(\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"(/)([imsxeADSUXu]*)(')",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.regexp.single-quoted.php",patterns:[{include:"#single_quote_regex_escape"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.php"},3:{name:"punctuation.definition.arbitrary-repetition.php"}},match:"({)\\d+(,\\d+)?(})",name:"string.regexp.arbitrary-repetition.php"},{begin:"\\[(?:\\^?\\])?",captures:{0:{name:"punctuation.definition.character-class.php"}},end:"\\]",name:"string.regexp.character-class.php"},{match:"[$^+*]",name:"keyword.operator.regexp.php"}]},"scope-resolution":{patterns:[{captures:{1:{patterns:[{match:"\\b(self|static|parent)\\b",name:"storage.type.php"},{include:"#class-name"},{include:"#variable-name"}]}},match:"([A-Za-z_\\x{7f}-\\x{10ffff}\\\\][A-Za-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)(?=\\s*::)"},{begin:"(?i)(::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.class.php"},2:{name:"entity.name.function.php"},3:{name:"punctuation.definition.arguments.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.php"}},name:"meta.method-call.static.php",patterns:[{include:"#named-arguments"},{include:"$self"}]},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"keyword.other.class.php"}},match:"(?i)(::)\\s*(class)\\b"},{captures:{1:{name:"keyword.operator.class.php"},2:{name:"variable.other.class.php"},3:{name:"punctuation.definition.variable.php"},4:{name:"constant.other.class.php"}},match:`(?xi) +(::)\\s* +(?: +((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +| +([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) +)?`}]},single_quote_regex_escape:{match:"\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)",name:"constant.character.escape.php"},"sql-string-double-quoted":{begin:'"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},contentName:"source.sql.embedded.php",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.double.sql.php",patterns:[{captures:{1:{name:"punctuation.definition.comment.sql"}},match:'(#)(\\\\"|[^"])*(?="|$)',name:"comment.line.number-sign.sql"},{captures:{1:{name:"punctuation.definition.comment.sql"}},match:'(--)(\\\\"|[^"])*(?="|$)',name:"comment.line.double-dash.sql"},{match:"\\\\[\\\\\"`']",name:"constant.character.escape.php"},{match:`'(?=((\\\\')|[^'"])*("|$))`,name:"string.quoted.single.unclosed.sql"},{match:'`(?=((\\\\`)|[^`"])*("|$))',name:"string.quoted.other.backtick.unclosed.sql"},{begin:"'",end:"'",name:"string.quoted.single.sql",patterns:[{include:"#interpolation_double_quoted"}]},{begin:"`",end:"`",name:"string.quoted.other.backtick.sql",patterns:[{include:"#interpolation_double_quoted"}]},{include:"#interpolation_double_quoted"},{include:"source.sql"}]},"sql-string-single-quoted":{begin:"'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},contentName:"source.sql.embedded.php",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.single.sql.php",patterns:[{captures:{1:{name:"punctuation.definition.comment.sql"}},match:"(#)(\\\\'|[^'])*(?='|$)",name:"comment.line.number-sign.sql"},{captures:{1:{name:"punctuation.definition.comment.sql"}},match:"(--)(\\\\'|[^'])*(?='|$)",name:"comment.line.double-dash.sql"},{match:"\\\\[\\\\'`\"]",name:"constant.character.escape.php"},{match:"`(?=((\\\\`)|[^`'])*('|$))",name:"string.quoted.other.backtick.unclosed.sql"},{match:`"(?=((\\\\")|[^"'])*('|$))`,name:"string.quoted.double.unclosed.sql"},{include:"source.sql"}]},"string-backtick":{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.interpolated.php",patterns:[{match:"\\\\`",name:"constant.character.escape.php"},{include:"#interpolation"}]},"string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.double.php",patterns:[{include:"#interpolation_double_quoted"}]},"string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.php"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.php"}},name:"string.quoted.single.php",patterns:[{match:"\\\\[\\\\']",name:"constant.character.escape.php"}]},strings:{patterns:[{include:"#regex-double-quoted"},{include:"#sql-string-double-quoted"},{include:"#string-double-quoted"},{include:"#regex-single-quoted"},{include:"#sql-string-single-quoted"},{include:"#string-single-quoted"}]},support:{patterns:[{match:`(?xi) +\\b +apc_( +store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?| +exists|fetch|load_constants|add|bin_(dump|load)(file)? +)\\b`,name:"support.function.apc.php"},{match:`(?xi)\\b +( +shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort| +pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range| +array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine| +(diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique| +pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?| +reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?) +)\\b`,name:"support.function.array.php"},{match:`(?xi)\\b +( +show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)| +time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler| +php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser +)\\b`,name:"support.function.basic_functions.php"},{match:"(?i)\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\b",name:"support.function.bcmath.php"},{match:"(?i)\\bblenc_encrypt\\b",name:"support.function.blenc.php"},{match:"(?i)\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\b",name:"support.function.bz2.php"},{match:`(?xi)\\b +( +(French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd| +jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek) +)\\b`,name:"support.function.calendar.php"},{match:`(?xi)\\b +( +class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists| +get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits)) +)\\b`,name:"support.function.classobj.php"},{match:`(?xi)\\b +( +com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)| +variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp| +pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul) +)\\b`,name:"support.function.com.php"},{match:"(?i)\\b(isset|unset|eval|empty|list)\\b",name:"support.function.construct.php"},{match:"(?i)\\b(print|echo)\\b",name:"support.function.construct.output.php"},{match:"(?i)\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\b",name:"support.function.ctype.php"},{match:`(?xi)\\b +curl_( +share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape| +errno|error|exec|version|file_create|reset|getinfo| +multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec) +)\\b`,name:"support.function.curl.php"},{match:`(?xi)\\b +( +strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate| +timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)| +date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set| +isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set| +parse(_from_format)?|format|add|get_last_errors|modify))?| +localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime +)\\b`,name:"support.function.datetime.php"},{match:"(?i)\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\b",name:"support.function.dba.php"},{match:"(?i)\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\b",name:"support.function.dbx.php"},{match:"(?i)\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\b",name:"support.function.dir.php"},{match:`(?xi)\\b +eio_( +sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)| +seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll| +event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath| +read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy +)\\b`,name:"support.function.eio.php"},{match:`(?xi)\\b +enchant_( +dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)| +broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error) +)\\b`,name:"support.function.enchant.php"},{match:"(?i)\\b(split(i)?|sql_regcase|ereg(i)?(_replace)?)\\b",name:"support.function.ereg.php"},{match:"(?i)\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\b",name:"support.function.errorfunc.php"},{match:"(?i)\\b(shell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec)\\b",name:"support.function.exec.php"},{match:"(?i)\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\b",name:"support.function.exif.php"},{match:`(?xi)\\b +fann_( +(duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)| +set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)| +cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)| +output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)| +(max|min)_(cand|out)_epochs)| +callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log| +quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit| +activation_(function|steepness)(_(hidden|layer|output))?| +rprop_((decrease|increase)_factor|delta_(max|min|zero)))| +save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)| +create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)| +test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?| +print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights| +get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)| +network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?| +cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)| +weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)| +total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)| +quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)| +rprop_((decrease|increase)_factor|delta_(max|min|zero))) +)\\b`,name:"support.function.fann.php"},{match:`(?xi)\\b +( +symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile| +is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace| +dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch| +fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)| +f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?| +rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename +)\\b`,name:"support.function.file.php"},{match:"(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",name:"support.function.fileinfo.php"},{match:"(?i)\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\b",name:"support.function.filter.php"},{match:"(?i)\\bfastcgi_finish_request\\b",name:"support.function.fpm.php"},{match:"(?i)\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\b",name:"support.function.funchand.php"},{match:"(?i)\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\b",name:"support.function.gettext.php"},{match:`(?xi)\\b +gmp_( +scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit| +intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square| +prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul +)\\b`,name:"support.function.gmp.php"},{match:"(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\b",name:"support.function.hash.php"},{match:`(?xi)\\b +( +http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head| +negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle| +inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)| +parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?| +get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))| +ob_(etag|deflate|inflate)handler +)\\b`,name:"support.function.http.php"},{match:"(?i)\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",name:"support.function.iconv.php"},{match:"(?i)\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\b",name:"support.function.iisfunc.php"},{match:`(?xi)\\b +( +iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?| +image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha| +convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)| +color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)| +crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?| +types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg| +_type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon| +palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder| +filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect| +antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect| +grab(screen|window)|xbm) +)\\b`,name:"support.function.image.php"},{match:`(?xi)\\b +( +sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title| +ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)| +php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare| +assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt| +get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions| +magic_quotes_(gpc|runtime)|required_files|resources)| +get(env|lastmod|rusage|my(inode|[gup]id))| +memory_get_(peak_)?usage|main|magic_quotes_runtime +)\\b`,name:"support.function.info.php"},{match:`(?xi)\\b +ibase_( +set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect| +commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)| +execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event| +add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup| +blob_(cancel|close|create|import|info|open|echo|add|get) +)\\b`,name:"support.function.interbase.php"},{match:`(?xi)\\b +( +normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)| +numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?| +get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))| +collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort| +get_(strength|sort_key|error_(code|message)|locale|attribute))| +transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))| +intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))| +datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime| +get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))| +locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http| +get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))| +resourcebundle_(create|count|locales|get(_(error_(code|message)))?)| +grapheme_(str(i?str|r?i?pos|len)|substr|extract)| +msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale)) +)\\b`,name:"support.function.intl.php"},{match:"(?i)\\bjson_(decode|encode|last_error(_msg)?)\\b",name:"support.function.json.php"},{match:`(?xi)\\b +ldap_( +start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)| +connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61| +dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind| +free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?| +mod_(add|del|replace) +)\\b`,name:"support.function.ldap.php"},{match:"(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",name:"support.function.libxml.php"},{match:"(?i)\\b(ezmlm_hash|mail)\\b",name:"support.function.mail.php"},{match:`(?xi)\\b +( +(a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad| +pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax| +mt_(srand|rand|getrandmax)|max|min|bindec|base_convert +)\\b`,name:"support.function.math.php"},{match:`(?xi)\\b +mb_( +str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)| +substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding| +convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)| +detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)| +ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)| +list_encodings|language|regex_(set_options|encoding)|get_info +)\\b`,name:"support.function.mbstring.php"},{match:`(?xi)\\b +( +mcrypt_( +cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?| +enc_(self_test|is_block_(algorithm|algorithm_mode|mode)| +get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))| +get_(cipher_name|(block|iv|key)_size)| +module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open| +get_(supported_key_sizes|algo_(block|key)_size)))| +mdecrypt_generic +)\\b`,name:"support.function.mcrypt.php"},{match:"(?i)\\bmemcache_debug\\b",name:"support.function.memcache.php"},{match:"(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",name:"support.function.mhash.php"},{match:"(?i)\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\b",name:"support.function.mongo.php"},{match:`(?xi)\\b +mysql_( +stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string| +thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping| +errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)| +free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string| +get_(client|host|proto|server)_info +)\\b`,name:"support.function.mysql.php"},{match:`(?xi)\\b +mysqli_( +ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))| +stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result| +attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))| +select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit| +client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)| +dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute| +embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh| +fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)| +release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query| +get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)| +master_query|bind_(param|result)|begin_transaction +)\\b`,name:"support.function.mysqli.php"},{match:"(?i)\\bmysqlnd_memcache_(set|get_config)\\b",name:"support.function.mysqlnd-memcache.php"},{match:"(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\b",name:"support.function.mysqlnd-ms.php"},{match:"(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\b",name:"support.function.mysqlnd-qc.php"},{match:"(?i)\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\b",name:"support.function.mysqlnd-uh.php"},{match:`(?xi)\\b +( +syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog| +headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long| +openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip| +get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr) +)\\b`,name:"support.function.network.php"},{match:"(?i)\\bnsapi_(virtual|response_headers|request_headers)\\b",name:"support.function.nsapi.php"},{match:`(?xi)\\b +( +oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon| +column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit| +closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?| +free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback| +result|bindbyname)| +oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version| +num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel| +internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name| +field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?| +free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset) +)\\b`,name:"support.function.oci8.php"},{match:"(?i)\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\b",name:"support.function.opcache.php"},{match:`(?xi)\\b +openssl_( +sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))| +cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string| +pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes| +pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2| +get_((cipher|md)_methods|cert_locations|(public|private)key)| +x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read) +)\\b`,name:"support.function.openssl.php"},{match:`(?xi)\\b +( +output_(add_rewrite_var|reset_rewrite_vars)|flush| +ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler| +get_(status|contents|clean|flush|length|level)) +)\\b`,name:"support.function.output.php"},{match:"(?i)\\bpassword_(hash|needs_rehash|verify|get_info)\\b",name:"support.function.password.php"},{match:`(?xi)\\b +pcntl_( +strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork| +w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error +)\\b`,name:"support.function.pcntl.php"},{match:`(?xi)\\b +pg_( +socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host| +num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)| +client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace| +unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?| +escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)| +field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)| +fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data| +lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)| +)\\b`,name:"support.function.pgsql.php"},{match:"(?i)\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\b",name:"support.function.php_apache.php"},{match:"(?i)\\bdom_import_simplexml\\b",name:"support.function.php_dom.php"},{match:`(?xi)\\b +ftp_( +ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close| +delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir +)\\b`,name:"support.function.php_ftp.php"},{match:`(?xi)\\b +imap_( +(create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody| +num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen| +8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc| +fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error| +rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?| +msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64 +)\\b`,name:"support.function.php_imap.php"},{match:`(?xi)\\b +mssql_( +select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query| +field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)| +rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind +)\\b`,name:"support.function.php_mssql.php"},{match:`(?xi)\\b +odbc_( +statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit| +cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns| +prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result| +fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode +)\\b`,name:"support.function.php_odbc.php"},{match:"(?i)\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\b",name:"support.function.php_pcre.php"},{match:"(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",name:"support.function.php_spl.php"},{match:"(?i)\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\b",name:"support.function.php_zip.php"},{match:`(?xi)\\b +posix_( +strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access| +get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)| +get_last_error|mknod|mkfifo +)\\b`,name:"support.function.posix.php"},{match:"(?i)\\bset(thread|proc)title\\b",name:"support.function.proctitle.php"},{match:`(?xi)\\b +pspell_( +store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session| +config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal) +)\\b`,name:"support.function.pspell.php"},{match:"(?i)\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\b",name:"support.function.readline.php"},{match:"(?i)\\brecode(_(string|file))?\\b",name:"support.function.recode.php"},{match:"(?i)\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\b",name:"support.function.rrd.php"},{match:`(?xi)\\b +( +shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok| +msg_((get|remove|set|stat)_queue|send|queue_exists|receive) +)\\b`,name:"support.function.sem.php"},{match:`(?xi)\\b +session_( +status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)| +is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?| +regenerate_id|get_cookie_params|module_name +)\\b`,name:"support.function.session.php"},{match:"(?i)\\bshmop_(size|close|open|delete|write|read)\\b",name:"support.function.shmop.php"},{match:"(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",name:"support.function.simplexml.php"},{match:`(?xi)\\b +( +snmp(walk(oid)?|realwalk|get(next)?|set)| +snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib| +get_(valueretrieval|quick_print))| +snmp[23]_(set|walk|real_walk|get(next)?) +)\\b`,name:"support.function.snmp.php"},{match:"(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",name:"support.function.soap.php"},{match:`(?xi)\\b +socket_( +shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind| +create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?| +read|get(peer|sock)name|get_option +)\\b`,name:"support.function.sockets.php"},{match:`(?xi)\\b +sqlite_( +single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close| +create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev| +escape_string|error_string|exec|valid|key|query|field_name|factory| +fetch_(string|single|column_types|object|all|array)|lib(encoding|version)| +last_(insert_rowid|error)|array_query|rewind|busy_timeout +)\\b`,name:"support.function.sqlite.php"},{match:`(?xi)\\b +sqlsrv_( +send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit| +client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?| +free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction +)\\b`,name:"support.function.sqlsrv.php"},{match:`(?xi)\\b +stats_( +harmonic_mean|covariance|standard_deviation|skew| +cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull| +logistic|laplace|gamma|binomial|beta)| +stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)| +dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f| +weibull|logistic|laplace|gamma|beta)| +den_uniform|variance|kurtosis|absolute_deviation| +rand_(setall|phrase_to_seeds|ranf|get_seeds| +gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int| +i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)) +)\\b`,name:"support.function.stats.php"},{match:`(?xi)\\b +( +set_socket_blocking| +stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)| +set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock| +context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local| +encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)| +resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)| +bucket_(new|prepend|append|make_writeable) +) +)\\b`,name:"support.function.streamsfuncs.php"},{match:`(?xi)\\b +( +money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?| +str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)| +str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)| +strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale| +html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo| +chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord| +uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)| +quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table +)\\b`,name:"support.function.string.php"},{match:`(?xi)\\b +sybase_( +set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek| +unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result| +affected_rows|result|get_last_message|min_(client|error|message|server)_severity +)\\b`,name:"support.function.sybase.php"},{match:"(?i)\\b(taint|is_tainted|untaint)\\b",name:"support.function.taint.php"},{match:`(?xi)\\b +( +tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose| +(access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)| +get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))| +ob_tidyhandler +)\\b`,name:"support.function.tidy.php"},{match:"(?i)\\btoken_(name|get_all)\\b",name:"support.function.tokenizer.php"},{match:`(?xi)\\b +trader_( +stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma| +ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl| +cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines| +hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall| +counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer| +identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river| +upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)| +piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji| +ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite| +gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu| +belthold|breakaway)| +ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo| +plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands| +linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice| +aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]| +minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)? +)\\b`,name:"support.function.trader.php"},{match:"(?i)\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\b",name:"support.function.uopz.php"},{match:"(?i)\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\b",name:"support.function.url.php"},{match:`(?xi)\\b +( +strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset| +is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)| +unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type) +)\\b`,name:"support.function.var.php"},{match:"(?i)\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\b",name:"support.function.wddx.php"},{match:"(?i)\\bxhprof_(sample_)?(disable|enable)\\b",name:"support.function.xhprof.php"},{match:`(?xi) +\\b +( +utf8_(decode|encode)| +xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler| +(character_data|default|element|external_entity_ref|processing_instruction)_handler|object)| +parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string| +get_(current_((column|line)_number|byte_index)|error_code)) +)\\b`,name:"support.function.xml.php"},{match:`(?xi)\\b +xmlrpc_( +server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))| +is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type +)\\b`,name:"support.function.xmlrpc.php"},{match:`(?xi)\\b +xmlwriter_( +(end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)| +(start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)| +full_end_element|flush| +)\\b`,name:"support.function.xmlwriter.php"},{match:`(?xi)\\b +( +zlib_(decode|encode|get_coding_type)|readgzfile| +gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file| +write|rewind|read|getc|getss?) +)\\b`,name:"support.function.zlib.php"},{match:"(?i)\\bis_int(eger)?\\b",name:"support.function.alias.php"}]},switch_statement:{patterns:[{match:"\\s+(?=switch\\b)"},{begin:"\\bswitch\\b(?!\\s*\\(.*\\)\\s*:)",beginCaptures:{0:{name:"keyword.control.switch.php"}},end:"}|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.section.switch-block.end.bracket.curly.php"}},name:"meta.switch-statement.php",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.switch-expression.begin.bracket.round.php"}},end:"\\)|(?=\\?>)",endCaptures:{0:{name:"punctuation.definition.switch-expression.end.bracket.round.php"}},patterns:[{include:"$self"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.definition.section.switch-block.begin.bracket.curly.php"}},end:"(?=}|\\?>)",patterns:[{include:"$self"}]}]}]},ternary_expression:{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.php"}},end:"(?<!:):(?!:)",endCaptures:{0:{name:"keyword.operator.ternary.php"}},patterns:[{captures:{1:{patterns:[{include:"$self"}]}},match:"(?i)^\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(?=:(?!:))"},{include:"$self"}]},ternary_shorthand:{match:"\\?:",name:"keyword.operator.ternary.php"},"use-inner":{patterns:[{include:"#comments"},{begin:"(?i)\\b(as)\\s+",beginCaptures:{1:{name:"keyword.other.use-as.php"}},end:"(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",endCaptures:{0:{name:"entity.other.alias.php"}}},{include:"#class-name"},{match:",",name:"punctuation.separator.delimiter.php"}]},var_basic:{patterns:[{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(?i)(\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",name:"variable.other.php"}]},var_global:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\b",name:"variable.other.global.php"},var_global_safer:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",name:"variable.other.global.safer.php"},var_language:{captures:{1:{name:"punctuation.definition.variable.php"}},match:"(\\$)this\\b",name:"variable.language.this.php"},"variable-name":{patterns:[{include:"#var_global"},{include:"#var_global_safer"},{captures:{1:{name:"variable.other.php"},2:{name:"punctuation.definition.variable.php"},4:{name:"keyword.operator.class.php"},5:{name:"variable.other.property.php"},6:{name:"punctuation.section.array.begin.php"},7:{name:"constant.numeric.index.php"},8:{name:"variable.other.index.php"},9:{name:"punctuation.definition.variable.php"},10:{name:"string.unquoted.index.php"},11:{name:"punctuation.section.array.end.php"}},match:`(?xi) +((\\$)(?<name>[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*))\\s* +(?: +(\\??->)\\s*(\\g<name>) +| +(\\[)(?:(\\d+)|((\\$)\\g<name>)|([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*))(\\]) +)?`},{captures:{1:{name:"variable.other.php"},2:{name:"punctuation.definition.variable.php"},4:{name:"punctuation.definition.variable.php"}},match:"(?i)((\\${)(?<name>[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(}))"}]},variables:{patterns:[{include:"#var_language"},{include:"#var_global"},{include:"#var_global_safer"},{include:"#var_basic"},{begin:"\\${(?=.*?})",beginCaptures:{0:{name:"punctuation.definition.variable.php"}},end:"}",endCaptures:{0:{name:"punctuation.definition.variable.php"}},patterns:[{include:"$self"}]}]}},scopeName:"source.php",embeddedLangs:["html","xml","sql","javascript","json","css"]});var l=[...e,...n,...t,...a,...r,...i,p];export{l as default}; diff --git a/assets/chunks/plsql.BbJj1K1w.js b/assets/chunks/plsql.BbJj1K1w.js new file mode 100644 index 000000000..2e8a36f0b --- /dev/null +++ b/assets/chunks/plsql.BbJj1K1w.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"PL/SQL",fileTypes:["sql","ddl","dml","pkh","pks","pkb","pck","pls","plb"],foldingStartMarker:"(?i)^\\s*(begin|if|loop)\\b",foldingStopMarker:"(?i)^\\s*(end)\\b",name:"plsql",patterns:[{begin:"/\\*",end:"\\*/",name:"comment.block.oracle"},{match:"--.*$",name:"comment.line.double-dash.oracle"},{match:"(?i)(?:^\\s*)rem(?:\\s+.*$)",name:"comment.line.sqlplus.oracle"},{match:"(?i)(?:^\\s*)prompt(?:\\s+.*$)",name:"comment.line.sqlplus-prompt.oracle"},{captures:{1:{name:"keyword.other.oracle"},2:{name:"keyword.other.oracle"}},match:"(?i)^\\s*(create)(\\s+or\\s+replace)?\\s+",name:"meta.create.oracle"},{captures:{1:{name:"keyword.other.oracle"},2:{name:"keyword.other.oracle"},3:{name:"entity.name.type.oracle"}},match:"(?i)\\b(package)(\\s+body)?\\s+(\\S+)",name:"meta.package.oracle"},{captures:{1:{name:"keyword.other.oracle"},2:{name:"entity.name.type.oracle"}},match:'(?i)\\b(type)\\s+"([^"]+)"',name:"meta.type.oracle"},{captures:{1:{name:"keyword.other.oracle"},2:{name:"entity.name.function.oracle"}},match:'(?i)^\\s*(function|procedure)\\s+"?([-a-z0-9_]+)"?',name:"meta.procedure.oracle"},{match:"[!<>:]?=|<>|<|>|\\+|(?<!\\.)\\*|-|(?<!^)/|\\|\\|",name:"keyword.operator.oracle"},{match:"(?i)\\b(true|false|null|is\\s+(not\\s+)?null)\\b",name:"constant.language.oracle"},{match:"\\b\\d+(\\.\\d+)?\\b",name:"constant.numeric.oracle"},{match:"(?i)\\b(if|elsif|else|end\\s+if|loop|end\\s+loop|for|while|case|end\\s+case|continue|return|goto)\\b",name:"keyword.control.oracle"},{match:"(?i)\\b(or|and|not|like)\\b",name:"keyword.other.oracle"},{match:"(?i)\\b(%(isopen|found|notfound|rowcount)|commit|rollback|sqlerrm)\\b",name:"support.function.oracle"},{match:"(?i)\\b(sql|sqlcode)\\b",name:"variable.language.oracle"},{match:"(?i)\\b(ascii|asciistr|chr|compose|concat|convert|decompose|dump|initcap|instr|instrb|instrc|instr2|instr4|unistr|length|lengthb|lengthc|length2|length4|lower|lpad|ltrim|nchr|replace|rpad|rtrim|soundex|substr|translate|trim|upper|vsize)\\b",name:"support.function.builtin.char.oracle"},{match:"(?i)\\b(add_months|current_date|current_timestamp|dbtimezone|last_day|localtimestamp|months_between|new_time|next_day|round|sessiontimezone|sysdate|tz_offset|systimestamp)\\b",name:"support.function.builtin.date.oracle"},{match:"(?i)\\b(avg|count|sum|max|min|median|corr|corr_\\w+|covar_(pop|samp)|cume_dist|dense_rank|first|group_id|grouping|grouping_id|last|percentile_cont|percentile_disc|percent_rank|rank|regr_\\w+|row_number|stats_binomial_test|stats_crosstab|stats_f_test|stats_ks_test|stats_mode|stats_mw_test|stats_one_way_anova|stats_t_test_\\w+|stats_wsr_test|stddev|stddev_pop|stddev_samp|var_pop|var_samp|variance)\\b",name:"support.function.builtin.aggregate.oracle"},{match:"(?i)\\b(bfilename|cardinality|coalesce|decode|empty_(blob|clob)|lag|lead|listagg|lnnvl|nanvl|nullif|nvl|nvl2|sys_(context|guid|typeid|connect_by_path|extract_utc)|uid|(current\\s+)?user|userenv|cardinality|(bulk\\s+)?collect|powermultiset(_by_cardinality)?|ora_hash|standard_hash|execute\\s+immediate|alter\\s+session)\\b",name:"support.function.builtin.advanced.oracle"},{match:"(?i)\\b(bin_to_num|cast|chartorowid|from_tz|hextoraw|numtodsinterval|numtoyminterval|rawtohex|rawtonhex|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|scn_to_timestamp|timestamp_to_scn|rowidtochar|rowidtonchar|to_binary_double|to_binary_float|to_blob|to_nchar|con_dbid_to_id|con_guid_to_id|con_name_to_id|con_uid_to_id)\\b",name:"support.function.builtin.convert.oracle"},{match:"(?i)\\b(abs|acos|asin|atan|atan2|bit_(and|or|xor)|ceil|cos|cosh|exp|extract|floor|greatest|least|ln|log|mod|power|remainder|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",name:"support.function.builtin.math.oracle"},{match:"(?i)\\b(\\.(count|delete|exists|extend|first|last|limit|next|prior|trim|reverse))\\b",name:"support.function.builtin.collection.oracle"},{match:"(?i)\\b(cluster_details|cluster_distance|cluster_id|cluster_probability|cluster_set|feature_details|feature_id|feature_set|feature_value|prediction|prediction_bounds|prediction_cost|prediction_details|prediction_probability|prediction_set)\\b",name:"support.function.builtin.data_mining.oracle"},{match:"(?i)\\b(appendchildxml|deletexml|depth|extract|existsnode|extractvalue|insertchildxml|insertxmlbefore|xmlcast|xmldiff|xmlelement|xmlexists|xmlisvalid|insertchildxmlafter|insertchildxmlbefore|path|sys_dburigen|sys_xmlagg|sys_xmlgen|updatexml|xmlagg|xmlcdata|xmlcolattval|xmlcomment|xmlconcat|xmlforest|xmlparse|xmlpi|xmlquery|xmlroot|xmlsequence|xmlserialize|xmltable|xmltransform)\\b",name:"support.function.builtin.xml.oracle"},{match:"(?i)\\b(pragma\\s+(autonomous_transaction|serially_reusable|restrict_references|exception_init|inline))\\b",name:"keyword.other.pragma.oracle"},{match:"(?i)\\b(p(i|o|io)_[-a-z0-9_]+)\\b",name:"variable.parameter.oracle"},{match:"(?i)\\b(l_[-a-z0-9_]+)\\b",name:"variable.other.oracle"},{match:"(?i):\\b(new|old)\\b",name:"variable.trigger.oracle"},{match:"(?i)\\b(connect\\s+by\\s+(nocycle\\s+)?(prior|level)|connect_by_(root|icycle)|level|start\\s+with)\\b",name:"keyword.hierarchical.sql.oracle"},{match:"(?i)\\b(language|name|java|c)\\b",name:"keyword.wrapper.oracle"},{match:"(?i)\\b(end|then|deterministic|exception|when|declare|begin|in|out|nocopy|is|as|exit|open|fetch|into|close|subtype|type|rowtype|default|exclusive|mode|lock|record|index\\s+by|result_cache|constant|comment|\\.(nextval|currval))\\b",name:"keyword.other.oracle"},{match:"(?i)\\b(grant|revoke|alter|drop|force|add|check|constraint|primary\\s+key|foreign\\s+key|references|unique(\\s+index)?|column|sequence|increment\\s+by|cache|(materialized\\s+)?view|trigger|storage|tablespace|pct(free|used)|(init|max)trans|logging)\\b",name:"keyword.other.ddl.oracle"},{match:"(?i)\\b(with|select|from|where|order\\s+(siblings\\s+)?by|group\\s+by|rollup|cube|((left|right|cross|natural)\\s+(outer\\s+)?)?join|on|asc|desc|update|set|insert|into|values|delete|distinct|union|minus|intersect|having|limit|table|between|like|of|row|(range|rows)\\s+between|nulls\\s+first|nulls\\s+last|before|after|all|any|exists|rownum|cursor|returning|over|partition\\s+by|merge|using|matched|pivot|unpivot)\\b",name:"keyword.other.sql.oracle"},{match:"(?i)\\b(define|whenever\\s+sqlerror|exec|timing\\s+start|timing\\s+stop)\\b",name:"keyword.other.sqlplus.oracle"},{match:"(?i)\\b(access_into_null|case_not_found|collection_is_null|cursor_already_open|dup_val_on_index|invalid_cursor|invalid_number|login_denied|no_data_found|not_logged_on|program_error|rowtype_mismatch|self_is_null|storage_error|subscript_beyond_count|subscript_outside_limit|sys_invalid_rowid|timeout_on_resource|too_many_rows|value_error|zero_divide|others)\\b",name:"support.type.exception.oracle"},{captures:{3:{name:"support.class.oracle"}},match:"(?i)\\b((dbms|utl|owa|apex)_\\w+\\.(\\w+))\\b",name:"support.function.oracle"},{captures:{3:{name:"support.class.oracle"}},match:"(?i)\\b((htf|htp)\\.(\\w+))\\b",name:"support.function.oracle"},{captures:{3:{name:"support.class.user-defined.oracle"}},match:"(?i)\\b((\\w+_pkg|pkg_\\w+)\\.(\\w+))\\b",name:"support.function.user-defined.oracle"},{match:"(?i)\\b(raise|raise_application_error)\\b",name:"support.function.oracle"},{begin:"'",end:"'",name:"string.quoted.single.oracle"},{begin:'"',end:'"',name:"string.quoted.double.oracle"},{match:"(?i)\\b(char|varchar|varchar2|nchar|nvarchar2|boolean|date|timestamp(\\s+with(\\s+local)?\\s+time\\s+zone)?|interval\\s*day(\\(\\d*\\))?\\s*to\\s*month|interval\\s*year(\\(\\d*\\))?\\s*to\\s*second(\\(\\d*\\))?|xmltype|blob|clob|nclob|bfile|long|long\\s+raw|raw|number|integer|decimal|smallint|float|binary_(float|double|integer)|pls_(float|double|integer)|rowid|urowid|vararray|natural|naturaln|positive|positiven|signtype|simple_(float|double|integer))\\b",name:"storage.type.oracle"}],scopeName:"source.plsql.oracle"});var t=[e];export{t as default}; diff --git a/assets/chunks/po.HrnDn_2Q.js b/assets/chunks/po.HrnDn_2Q.js new file mode 100644 index 000000000..9f173f30b --- /dev/null +++ b/assets/chunks/po.HrnDn_2Q.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Gettext PO",fileTypes:["po","pot","potx"],name:"po",patterns:[{begin:'^(?=(msgid(_plural)?|msgctxt)\\s*"[^"])|^\\s*$',comment:"Start of body of document, after header",end:"\\z",patterns:[{include:"#body"}]},{include:"#comments"},{match:'^msg(id|str)\\s+""\\s*$\\n?',name:"comment.line.number-sign.po"},{captures:{1:{name:"constant.language.po"},2:{name:"punctuation.separator.key-value.po"},3:{name:"string.other.po"}},match:'^"(?:([^\\s:]+)(:)\\s+)?([^"]*)"\\s*$\\n?',name:"meta.header.po"}],repository:{body:{patterns:[{begin:"^(msgid(_plural)?)\\s+",beginCaptures:{1:{name:"keyword.control.msgid.po"}},end:'^(?!")',name:"meta.scope.msgid.po",patterns:[{begin:'(\\G|^)"',end:'"',name:"string.quoted.double.po",patterns:[{match:'\\\\[\\\\"]',name:"constant.character.escape.po"}]}]},{begin:"^(msgstr)(?:(\\[)(\\d+)(\\]))?\\s+",beginCaptures:{1:{name:"keyword.control.msgstr.po"},2:{name:"keyword.control.msgstr.po"},3:{name:"constant.numeric.po"},4:{name:"keyword.control.msgstr.po"}},end:'^(?!")',name:"meta.scope.msgstr.po",patterns:[{begin:'(\\G|^)"',end:'"',name:"string.quoted.double.po",patterns:[{match:'\\\\[\\\\"]',name:"constant.character.escape.po"}]}]},{begin:"^(msgctxt)(?:(\\[)(\\d+)(\\]))?\\s+",beginCaptures:{1:{name:"keyword.control.msgctxt.po"},2:{name:"keyword.control.msgctxt.po"},3:{name:"constant.numeric.po"},4:{name:"keyword.control.msgctxt.po"}},end:'^(?!")',name:"meta.scope.msgctxt.po",patterns:[{begin:'(\\G|^)"',end:'"',name:"string.quoted.double.po",patterns:[{match:'\\\\[\\\\"]',name:"constant.character.escape.po"}]}]},{captures:{1:{name:"punctuation.definition.comment.po"}},match:"^(#~).*$\\n?",name:"comment.line.number-sign.obsolete.po"},{include:"#comments"},{comment:'a line that does not begin with # or ". Could improve this regexp',match:'^(?!\\s*$)[^#"].*$\\n?',name:"invalid.illegal.po"}]},comments:{patterns:[{begin:"^(?=#)",end:"(?!\\G)",patterns:[{begin:"(#,)\\s+",beginCaptures:{1:{name:"punctuation.definition.comment.po"}},end:"\\n",name:"comment.line.number-sign.flag.po",patterns:[{captures:{1:{name:"entity.name.type.flag.po"}},match:"(?:\\G|,\\s*)((?:fuzzy)|(?:no-)?(?:c|objc|sh|lisp|elisp|librep|scheme|smalltalk|java|csharp|awk|object-pascal|ycp|tcl|perl|perl-brace|php|gcc-internal|qt|boost)-format)"}]},{begin:"#\\.",beginCaptures:{0:{name:"punctuation.definition.comment.po"}},end:"\\n",name:"comment.line.number-sign.extracted.po"},{begin:"(#:)[ \\t]*",beginCaptures:{1:{name:"punctuation.definition.comment.po"}},end:"\\n",name:"comment.line.number-sign.reference.po",patterns:[{match:"(\\S+:)([\\d;]*)",name:"storage.type.class.po"}]},{begin:"#\\|",beginCaptures:{0:{name:"punctuation.definition.comment.po"}},end:"\\n",name:"comment.line.number-sign.previous.po"},{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.po"}},end:"\\n",name:"comment.line.number-sign.po"}]}]}},scopeName:"source.po",aliases:["pot","potx"]});var n=[e];export{n as default}; diff --git a/assets/chunks/poimandres.Cda-MJFk.js b/assets/chunks/poimandres.Cda-MJFk.js new file mode 100644 index 000000000..a001b0367 --- /dev/null +++ b/assets/chunks/poimandres.Cda-MJFk.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#a6accd","activityBar.background":"#1b1e28","activityBar.dropBorder":"#a6accd","activityBar.foreground":"#a6accd","activityBar.inactiveForeground":"#a6accd66","activityBarBadge.background":"#303340","activityBarBadge.foreground":"#e4f0fb","badge.background":"#303340","badge.foreground":"#e4f0fb","breadcrumb.activeSelectionForeground":"#e4f0fb","breadcrumb.background":"#00000000","breadcrumb.focusForeground":"#e4f0fb","breadcrumb.foreground":"#767c9dcc","breadcrumbPicker.background":"#1b1e28","button.background":"#303340","button.foreground":"#ffffff","button.hoverBackground":"#50647750","button.secondaryBackground":"#a6accd","button.secondaryForeground":"#ffffff","button.secondaryHoverBackground":"#a6accd","charts.blue":"#ADD7FF","charts.foreground":"#a6accd","charts.green":"#5DE4c7","charts.lines":"#a6accd80","charts.orange":"#89ddff","charts.purple":"#f087bd","charts.red":"#d0679d","charts.yellow":"#fffac2","checkbox.background":"#1b1e28","checkbox.border":"#ffffff10","checkbox.foreground":"#e4f0fb","debugConsole.errorForeground":"#d0679d","debugConsole.infoForeground":"#ADD7FF","debugConsole.sourceForeground":"#a6accd","debugConsole.warningForeground":"#fffac2","debugConsoleInputIcon.foreground":"#a6accd","debugExceptionWidget.background":"#d0679d","debugExceptionWidget.border":"#d0679d","debugIcon.breakpointCurrentStackframeForeground":"#fffac2","debugIcon.breakpointDisabledForeground":"#7390AA","debugIcon.breakpointForeground":"#d0679d","debugIcon.breakpointStackframeForeground":"#5fb3a1","debugIcon.breakpointUnverifiedForeground":"#7390AA","debugIcon.continueForeground":"#ADD7FF","debugIcon.disconnectForeground":"#d0679d","debugIcon.pauseForeground":"#ADD7FF","debugIcon.restartForeground":"#5fb3a1","debugIcon.startForeground":"#5fb3a1","debugIcon.stepBackForeground":"#ADD7FF","debugIcon.stepIntoForeground":"#ADD7FF","debugIcon.stepOutForeground":"#ADD7FF","debugIcon.stepOverForeground":"#ADD7FF","debugIcon.stopForeground":"#d0679d","debugTokenExpression.boolean":"#89ddff","debugTokenExpression.error":"#d0679d","debugTokenExpression.name":"#e4f0fb","debugTokenExpression.number":"#5fb3a1","debugTokenExpression.string":"#89ddff","debugTokenExpression.value":"#a6accd99","debugToolBar.background":"#303340","debugView.exceptionLabelBackground":"#d0679d","debugView.exceptionLabelForeground":"#e4f0fb","debugView.stateLabelBackground":"#303340","debugView.stateLabelForeground":"#a6accd","debugView.valueChangedHighlight":"#89ddff",descriptionForeground:"#a6accdb3","diffEditor.diagonalFill":"#a6accd33","diffEditor.insertedTextBackground":"#50647715","diffEditor.removedTextBackground":"#d0679d20","dropdown.background":"#1b1e28","dropdown.border":"#ffffff10","dropdown.foreground":"#e4f0fb","editor.background":"#1b1e28","editor.findMatchBackground":"#ADD7FF40","editor.findMatchBorder":"#ADD7FF","editor.findMatchHighlightBackground":"#ADD7FF40","editor.findRangeHighlightBackground":"#ADD7FF40","editor.focusedStackFrameHighlightBackground":"#7abd7a4d","editor.foldBackground":"#717cb40b","editor.foreground":"#a6accd","editor.hoverHighlightBackground":"#264f7840","editor.inactiveSelectionBackground":"#717cb425","editor.lineHighlightBackground":"#717cb425","editor.lineHighlightBorder":"#00000000","editor.linkedEditingBackground":"#d0679d4d","editor.rangeHighlightBackground":"#ffffff0b","editor.selectionBackground":"#717cb425","editor.selectionHighlightBackground":"#00000000","editor.selectionHighlightBorder":"#ADD7FF80","editor.snippetFinalTabstopHighlightBorder":"#525252","editor.snippetTabstopHighlightBackground":"#7c7c7c4d","editor.stackFrameHighlightBackground":"#ffff0033","editor.symbolHighlightBackground":"#89ddff60","editor.wordHighlightBackground":"#ADD7FF20","editor.wordHighlightStrongBackground":"#ADD7FF40","editorBracketMatch.background":"#00000000","editorBracketMatch.border":"#e4f0fb40","editorCodeLens.foreground":"#a6accd","editorCursor.foreground":"#a6accd","editorError.foreground":"#d0679d","editorGroup.border":"#00000030","editorGroup.dropBackground":"#7390AA80","editorGroupHeader.noTabsBackground":"#1b1e28","editorGroupHeader.tabsBackground":"#1b1e28","editorGutter.addedBackground":"#5fb3a140","editorGutter.background":"#1b1e28","editorGutter.commentRangeForeground":"#a6accd","editorGutter.deletedBackground":"#d0679d40","editorGutter.foldingControlForeground":"#a6accd","editorGutter.modifiedBackground":"#ADD7FF20","editorHint.foreground":"#7390AAb3","editorHoverWidget.background":"#1b1e28","editorHoverWidget.border":"#ffffff10","editorHoverWidget.foreground":"#a6accd","editorHoverWidget.statusBarBackground":"#202430","editorIndentGuide.activeBackground":"#e3e4e229","editorIndentGuide.background":"#303340","editorInfo.foreground":"#ADD7FF","editorInlineHint.background":"#a6accd","editorInlineHint.foreground":"#1b1e28","editorLightBulb.foreground":"#fffac2","editorLightBulbAutoFix.foreground":"#ADD7FF","editorLineNumber.activeForeground":"#a6accd","editorLineNumber.foreground":"#767c9d50","editorLink.activeForeground":"#ADD7FF","editorMarkerNavigation.background":"#2d2d30","editorMarkerNavigationError.background":"#d0679d","editorMarkerNavigationInfo.background":"#ADD7FF","editorMarkerNavigationWarning.background":"#fffac2","editorOverviewRuler.addedForeground":"#5fb3a199","editorOverviewRuler.border":"#00000000","editorOverviewRuler.bracketMatchForeground":"#a0a0a0","editorOverviewRuler.commonContentForeground":"#a6accd66","editorOverviewRuler.currentContentForeground":"#5fb3a180","editorOverviewRuler.deletedForeground":"#d0679d99","editorOverviewRuler.errorForeground":"#d0679db3","editorOverviewRuler.findMatchForeground":"#e4f0fb20","editorOverviewRuler.incomingContentForeground":"#89ddff80","editorOverviewRuler.infoForeground":"#ADD7FF","editorOverviewRuler.modifiedForeground":"#89ddff99","editorOverviewRuler.rangeHighlightForeground":"#89ddff99","editorOverviewRuler.selectionHighlightForeground":"#a0a0a0cc","editorOverviewRuler.warningForeground":"#fffac2","editorOverviewRuler.wordHighlightForeground":"#a0a0a0cc","editorOverviewRuler.wordHighlightStrongForeground":"#89ddffcc","editorPane.background":"#1b1e28","editorRuler.foreground":"#e4f0fb10","editorSuggestWidget.background":"#1b1e28","editorSuggestWidget.border":"#ffffff10","editorSuggestWidget.foreground":"#a6accd","editorSuggestWidget.highlightForeground":"#5DE4c7","editorSuggestWidget.selectedBackground":"#00000050","editorUnnecessaryCode.opacity":"#000000aa","editorWarning.foreground":"#fffac2","editorWhitespace.foreground":"#303340","editorWidget.background":"#1b1e28","editorWidget.border":"#a6accd","editorWidget.foreground":"#a6accd",errorForeground:"#d0679d","extensionBadge.remoteBackground":"#303340","extensionBadge.remoteForeground":"#e4f0fb","extensionButton.prominentBackground":"#30334090","extensionButton.prominentForeground":"#ffffff","extensionButton.prominentHoverBackground":"#303340","extensionIcon.starForeground":"#fffac2",focusBorder:"#00000000",foreground:"#a6accd","gitDecoration.addedResourceForeground":"#5fb3a1","gitDecoration.conflictingResourceForeground":"#d0679d","gitDecoration.deletedResourceForeground":"#d0679d","gitDecoration.ignoredResourceForeground":"#767c9d70","gitDecoration.modifiedResourceForeground":"#ADD7FF","gitDecoration.renamedResourceForeground":"#5DE4c7","gitDecoration.stageDeletedResourceForeground":"#d0679d","gitDecoration.stageModifiedResourceForeground":"#ADD7FF","gitDecoration.submoduleResourceForeground":"#89ddff","gitDecoration.untrackedResourceForeground":"#5DE4c7","icon.foreground":"#a6accd","imagePreview.border":"#303340","input.background":"#ffffff05","input.border":"#ffffff10","input.foreground":"#e4f0fb","input.placeholderForeground":"#a6accd60","inputOption.activeBackground":"#00000000","inputOption.activeBorder":"#00000000","inputOption.activeForeground":"#ffffff","inputValidation.errorBackground":"#1b1e28","inputValidation.errorBorder":"#d0679d","inputValidation.errorForeground":"#d0679d","inputValidation.infoBackground":"#506477","inputValidation.infoBorder":"#89ddff","inputValidation.warningBackground":"#506477","inputValidation.warningBorder":"#fffac2","list.activeSelectionBackground":"#30334080","list.activeSelectionForeground":"#e4f0fb","list.deemphasizedForeground":"#767c9d","list.dropBackground":"#506477","list.errorForeground":"#d0679d","list.filterMatchBackground":"#89ddff60","list.focusBackground":"#30334080","list.focusForeground":"#a6accd","list.focusOutline":"#00000000","list.highlightForeground":"#5fb3a1","list.hoverBackground":"#30334080","list.hoverForeground":"#e4f0fb","list.inactiveSelectionBackground":"#30334080","list.inactiveSelectionForeground":"#e4f0fb","list.invalidItemForeground":"#fffac2","list.warningForeground":"#fffac2","listFilterWidget.background":"#303340","listFilterWidget.noMatchesOutline":"#d0679d","listFilterWidget.outline":"#00000000","menu.background":"#1b1e28","menu.foreground":"#e4f0fb","menu.selectionBackground":"#303340","menu.selectionForeground":"#7390AA","menu.separatorBackground":"#767c9d","menubar.selectionBackground":"#717cb425","menubar.selectionForeground":"#a6accd","merge.commonContentBackground":"#a6accd29","merge.commonHeaderBackground":"#a6accd66","merge.currentContentBackground":"#5fb3a133","merge.currentHeaderBackground":"#5fb3a180","merge.incomingContentBackground":"#89ddff33","merge.incomingHeaderBackground":"#89ddff80","minimap.errorHighlight":"#d0679d","minimap.findMatchHighlight":"#ADD7FF","minimap.selectionHighlight":"#e4f0fb40","minimap.warningHighlight":"#fffac2","minimapGutter.addedBackground":"#5fb3a180","minimapGutter.deletedBackground":"#d0679d80","minimapGutter.modifiedBackground":"#ADD7FF80","minimapSlider.activeBackground":"#a6accd30","minimapSlider.background":"#a6accd20","minimapSlider.hoverBackground":"#a6accd30","notebook.cellBorderColor":"#1b1e28","notebook.cellInsertionIndicator":"#00000000","notebook.cellStatusBarItemHoverBackground":"#ffffff26","notebook.cellToolbarSeparator":"#303340","notebook.focusedCellBorder":"#00000000","notebook.focusedEditorBorder":"#00000000","notebook.focusedRowBorder":"#00000000","notebook.inactiveFocusedCellBorder":"#00000000","notebook.outputContainerBackgroundColor":"#1b1e28","notebook.rowHoverBackground":"#30334000","notebook.selectedCellBackground":"#303340","notebook.selectedCellBorder":"#1b1e28","notebook.symbolHighlightBackground":"#ffffff0b","notebookScrollbarSlider.activeBackground":"#a6accd25","notebookScrollbarSlider.background":"#00000050","notebookScrollbarSlider.hoverBackground":"#a6accd25","notebookStatusErrorIcon.foreground":"#d0679d","notebookStatusRunningIcon.foreground":"#a6accd","notebookStatusSuccessIcon.foreground":"#5fb3a1","notificationCenterHeader.background":"#303340","notificationLink.foreground":"#ADD7FF","notifications.background":"#1b1e28","notifications.border":"#303340","notifications.foreground":"#e4f0fb","notificationsErrorIcon.foreground":"#d0679d","notificationsInfoIcon.foreground":"#ADD7FF","notificationsWarningIcon.foreground":"#fffac2","panel.background":"#1b1e28","panel.border":"#00000030","panel.dropBorder":"#a6accd","panelSection.border":"#1b1e28","panelSection.dropBackground":"#7390AA80","panelSectionHeader.background":"#303340","panelTitle.activeBorder":"#a6accd","panelTitle.activeForeground":"#a6accd","panelTitle.inactiveForeground":"#a6accd99","peekView.border":"#00000030","peekViewEditor.background":"#a6accd05","peekViewEditor.matchHighlightBackground":"#303340","peekViewEditorGutter.background":"#a6accd05","peekViewResult.background":"#a6accd05","peekViewResult.fileForeground":"#ffffff","peekViewResult.lineForeground":"#a6accd","peekViewResult.matchHighlightBackground":"#303340","peekViewResult.selectionBackground":"#717cb425","peekViewResult.selectionForeground":"#ffffff","peekViewTitle.background":"#a6accd05","peekViewTitleDescription.foreground":"#a6accd60","peekViewTitleLabel.foreground":"#ffffff","pickerGroup.border":"#a6accd","pickerGroup.foreground":"#89ddff","problemsErrorIcon.foreground":"#d0679d","problemsInfoIcon.foreground":"#ADD7FF","problemsWarningIcon.foreground":"#fffac2","progressBar.background":"#89ddff","quickInput.background":"#1b1e28","quickInput.foreground":"#a6accd","quickInputList.focusBackground":"#a6accd10","quickInputTitle.background":"#ffffff1b","sash.hoverBorder":"#00000000","scm.providerBorder":"#e4f0fb10","scrollbar.shadow":"#00000000","scrollbarSlider.activeBackground":"#a6accd25","scrollbarSlider.background":"#00000080","scrollbarSlider.hoverBackground":"#a6accd25","searchEditor.findMatchBackground":"#ADD7FF50","searchEditor.textInputBorder":"#ffffff10","selection.background":"#a6accd","settings.checkboxBackground":"#1b1e28","settings.checkboxBorder":"#ffffff10","settings.checkboxForeground":"#e4f0fb","settings.dropdownBackground":"#1b1e28","settings.dropdownBorder":"#ffffff10","settings.dropdownForeground":"#e4f0fb","settings.dropdownListBorder":"#e4f0fb10","settings.focusedRowBackground":"#00000000","settings.headerForeground":"#e4f0fb","settings.modifiedItemIndicator":"#ADD7FF","settings.numberInputBackground":"#ffffff05","settings.numberInputBorder":"#ffffff10","settings.numberInputForeground":"#e4f0fb","settings.textInputBackground":"#ffffff05","settings.textInputBorder":"#ffffff10","settings.textInputForeground":"#e4f0fb","sideBar.background":"#1b1e28","sideBar.dropBackground":"#7390AA80","sideBar.foreground":"#767c9d","sideBarSectionHeader.background":"#1b1e28","sideBarSectionHeader.foreground":"#a6accd","sideBarTitle.foreground":"#a6accd","statusBar.background":"#1b1e28","statusBar.debuggingBackground":"#303340","statusBar.debuggingForeground":"#ffffff","statusBar.foreground":"#a6accd","statusBar.noFolderBackground":"#1b1e28","statusBar.noFolderForeground":"#a6accd","statusBarItem.activeBackground":"#ffffff2e","statusBarItem.errorBackground":"#d0679d","statusBarItem.errorForeground":"#ffffff","statusBarItem.hoverBackground":"#ffffff1f","statusBarItem.prominentBackground":"#00000080","statusBarItem.prominentForeground":"#a6accd","statusBarItem.prominentHoverBackground":"#0000004d","statusBarItem.remoteBackground":"#303340","statusBarItem.remoteForeground":"#e4f0fb","symbolIcon.arrayForeground":"#a6accd","symbolIcon.booleanForeground":"#a6accd","symbolIcon.classForeground":"#fffac2","symbolIcon.colorForeground":"#a6accd","symbolIcon.constantForeground":"#a6accd","symbolIcon.constructorForeground":"#f087bd","symbolIcon.enumeratorForeground":"#fffac2","symbolIcon.enumeratorMemberForeground":"#ADD7FF","symbolIcon.eventForeground":"#fffac2","symbolIcon.fieldForeground":"#ADD7FF","symbolIcon.fileForeground":"#a6accd","symbolIcon.folderForeground":"#a6accd","symbolIcon.functionForeground":"#f087bd","symbolIcon.interfaceForeground":"#ADD7FF","symbolIcon.keyForeground":"#a6accd","symbolIcon.keywordForeground":"#a6accd","symbolIcon.methodForeground":"#f087bd","symbolIcon.moduleForeground":"#a6accd","symbolIcon.namespaceForeground":"#a6accd","symbolIcon.nullForeground":"#a6accd","symbolIcon.numberForeground":"#a6accd","symbolIcon.objectForeground":"#a6accd","symbolIcon.operatorForeground":"#a6accd","symbolIcon.packageForeground":"#a6accd","symbolIcon.propertyForeground":"#a6accd","symbolIcon.referenceForeground":"#a6accd","symbolIcon.snippetForeground":"#a6accd","symbolIcon.stringForeground":"#a6accd","symbolIcon.structForeground":"#a6accd","symbolIcon.textForeground":"#a6accd","symbolIcon.typeParameterForeground":"#a6accd","symbolIcon.unitForeground":"#a6accd","symbolIcon.variableForeground":"#ADD7FF","tab.activeBackground":"#30334080","tab.activeForeground":"#e4f0fb","tab.activeModifiedBorder":"#ADD7FF","tab.border":"#00000000","tab.inactiveBackground":"#1b1e28","tab.inactiveForeground":"#767c9d","tab.inactiveModifiedBorder":"#ADD7FF80","tab.lastPinnedBorder":"#00000000","tab.unfocusedActiveBackground":"#1b1e28","tab.unfocusedActiveForeground":"#a6accd","tab.unfocusedActiveModifiedBorder":"#ADD7FF40","tab.unfocusedInactiveBackground":"#1b1e28","tab.unfocusedInactiveForeground":"#a6accd80","tab.unfocusedInactiveModifiedBorder":"#ADD7FF40","terminal.ansiBlack":"#1b1e28","terminal.ansiBlue":"#89ddff","terminal.ansiBrightBlack":"#a6accd","terminal.ansiBrightBlue":"#ADD7FF","terminal.ansiBrightCyan":"#ADD7FF","terminal.ansiBrightGreen":"#5DE4c7","terminal.ansiBrightMagenta":"#f087bd","terminal.ansiBrightRed":"#d0679d","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#fffac2","terminal.ansiCyan":"#89ddff","terminal.ansiGreen":"#5DE4c7","terminal.ansiMagenta":"#f087bd","terminal.ansiRed":"#d0679d","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#fffac2","terminal.border":"#00000000","terminal.foreground":"#a6accd","terminal.selectionBackground":"#717cb425","terminalCommandDecoration.defaultBackground":"#767c9d","terminalCommandDecoration.errorBackground":"#d0679d","terminalCommandDecoration.successBackground":"#5DE4c7","testing.iconErrored":"#d0679d","testing.iconFailed":"#d0679d","testing.iconPassed":"#5DE4c7","testing.iconQueued":"#fffac2","testing.iconSkipped":"#7390AA","testing.iconUnset":"#7390AA","testing.message.error.decorationForeground":"#d0679d","testing.message.error.lineBackground":"#d0679d33","testing.message.hint.decorationForeground":"#7390AAb3","testing.message.info.decorationForeground":"#ADD7FF","testing.message.info.lineBackground":"#89ddff33","testing.message.warning.decorationForeground":"#fffac2","testing.message.warning.lineBackground":"#fffac233","testing.peekBorder":"#d0679d","testing.runAction":"#5DE4c7","textBlockQuote.background":"#7390AA1a","textBlockQuote.border":"#89ddff80","textCodeBlock.background":"#00000050","textLink.activeForeground":"#ADD7FF","textLink.foreground":"#ADD7FF","textPreformat.foreground":"#e4f0fb","textSeparator.foreground":"#ffffff2e","titleBar.activeBackground":"#1b1e28","titleBar.activeForeground":"#a6accd","titleBar.inactiveBackground":"#1b1e28","titleBar.inactiveForeground":"#767c9d","tree.indentGuidesStroke":"#303340","tree.tableColumnsBorder":"#a6accd20","welcomePage.progress.background":"#ffffff05","welcomePage.progress.foreground":"#5fb3a1","welcomePage.tileBackground":"#1b1e28","welcomePage.tileHoverBackground":"#303340","widget.shadow":"#00000030"},displayName:"Poimandres",name:"poimandres",tokenColors:[{scope:["comment","punctuation.definition.comment"],settings:{fontStyle:"italic",foreground:"#767c9dB0"}},{scope:"meta.parameters comment.block",settings:{fontStyle:"italic",foreground:"#a6accd"}},{scope:["variable.other.constant.object","variable.other.readwrite.alias","meta.import variable.other.readwrite"],settings:{foreground:"#ADD7FF"}},{scope:["variable.other","support.type.object"],settings:{foreground:"#e4f0fb"}},{scope:["variable.other.object.property","variable.other.property","support.variable.property"],settings:{foreground:"#e4f0fb"}},{scope:["entity.name.function.method","string.unquoted","meta.object.member"],settings:{foreground:"#ADD7FF"}},{scope:["variable - meta.import","constant.other.placeholder","meta.object-literal.key-meta.object.member"],settings:{foreground:"#e4f0fb"}},{scope:["keyword.control.flow"],settings:{foreground:"#5DE4c7c0"}},{scope:["keyword.operator.new","keyword.control.new"],settings:{foreground:"#5DE4c7"}},{scope:["variable.language.this","storage.modifier.async","storage.modifier","variable.language.super"],settings:{foreground:"#5DE4c7"}},{scope:["support.class.error","keyword.control.trycatch","keyword.operator.expression.delete","keyword.operator.expression.void","keyword.operator.void","keyword.operator.delete","constant.language.null","constant.language.boolean.false","constant.language.undefined"],settings:{foreground:"#d0679d"}},{scope:["variable.parameter","variable.other.readwrite.js","meta.definition.variable variable.other.constant","meta.definition.variable variable.other.readwrite"],settings:{foreground:"#e4f0fb"}},{scope:["constant.other.color"],settings:{foreground:"#ffffff"}},{scope:["invalid","invalid.illegal"],settings:{foreground:"#d0679d"}},{scope:["invalid.deprecated"],settings:{foreground:"#d0679d"}},{scope:["keyword.control","keyword"],settings:{foreground:"#a6accd"}},{scope:["keyword.operator","storage.type"],settings:{foreground:"#91B4D5"}},{scope:["keyword.control.module","keyword.control.import","keyword.control.export","keyword.control.default","meta.import","meta.export"],settings:{foreground:"#5DE4c7"}},{scope:["Keyword","Storage"],settings:{fontStyle:"italic"}},{scope:["keyword-meta.export"],settings:{foreground:"#ADD7FF"}},{scope:["meta.brace","punctuation","keyword.operator.existential"],settings:{foreground:"#a6accd"}},{scope:["constant.other.color","meta.tag","punctuation.definition.tag","punctuation.separator.inheritance.php","punctuation.definition.tag.html","punctuation.definition.tag.begin.html","punctuation.definition.tag.end.html","punctuation.section.embedded","keyword.other.template","keyword.other.substitution","meta.objectliteral"],settings:{foreground:"#e4f0fb"}},{scope:["support.class.component"],settings:{foreground:"#5DE4c7"}},{scope:["entity.name.tag","entity.name.tag","meta.tag.sgml","markup.deleted.git_gutter"],settings:{foreground:"#5DE4c7"}},{scope:"variable.function, source meta.function-call entity.name.function, source meta.function-call entity.name.function, source meta.method-call entity.name.function, meta.class meta.group.braces.curly meta.function-call variable.function, meta.class meta.field.declaration meta.function-call entity.name.function, variable.function.constructor, meta.block meta.var.expr meta.function-call entity.name.function, support.function.console, meta.function-call support.function, meta.property.class variable.other.class, punctuation.definition.entity.css",settings:{foreground:"#e4f0fbd0"}},{scope:"entity.name.function, meta.class entity.name.class, meta.class entity.name.type.class, meta.class meta.function-call variable.function, keyword.other.important",settings:{foreground:"#ADD7FF"}},{scope:["source.cpp meta.block variable.other"],settings:{foreground:"#ADD7FF"}},{scope:["support.other.variable","string.other.link"],settings:{foreground:"#5DE4c7"}},{scope:["constant.numeric","support.constant","constant.character","constant.escape","keyword.other.unit","keyword.other","string","constant.language","constant.other.symbol","constant.other.key","markup.heading","markup.inserted.git_gutter","meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js","text.html.derivative"],settings:{foreground:"#5DE4c7"}},{scope:["entity.other.inherited-class"],settings:{foreground:"#ADD7FF"}},{scope:["meta.type.declaration"],settings:{foreground:"#ADD7FF"}},{scope:["entity.name.type.alias"],settings:{foreground:"#a6accd"}},{scope:["keyword.control.as","entity.name.type","support.type"],settings:{foreground:"#a6accdC0"}},{scope:["entity.name","support.orther.namespace.use.php","meta.use.php","support.other.namespace.php","markup.changed.git_gutter","support.type.sys-types"],settings:{foreground:"#91B4D5"}},{scope:["support.class","support.constant","variable.other.constant.object"],settings:{foreground:"#ADD7FF"}},{scope:["source.css support.type.property-name","source.sass support.type.property-name","source.scss support.type.property-name","source.less support.type.property-name","source.stylus support.type.property-name","source.postcss support.type.property-name"],settings:{foreground:"#ADD7FF"}},{scope:["entity.name.module.js","variable.import.parameter.js","variable.other.class.js"],settings:{foreground:"#e4f0fb"}},{scope:["variable.language"],settings:{fontStyle:"italic",foreground:"#ADD7FF"}},{scope:["entity.name.method.js"],settings:{fontStyle:"italic",foreground:"#91B4D5"}},{scope:["meta.class-method.js entity.name.function.js","variable.function.constructor"],settings:{foreground:"#91B4D5"}},{scope:["entity.other.attribute-name"],settings:{fontStyle:"italic",foreground:"#91B4D5"}},{scope:["text.html.basic entity.other.attribute-name.html","text.html.basic entity.other.attribute-name"],settings:{fontStyle:"italic",foreground:"#5fb3a1"}},{scope:["entity.other.attribute-name.class"],settings:{foreground:"#5fb3a1"}},{scope:["source.sass keyword.control"],settings:{foreground:"#42675A"}},{scope:["markup.inserted"],settings:{foreground:"#ADD7FF"}},{scope:["markup.deleted"],settings:{foreground:"#506477"}},{scope:["markup.changed"],settings:{foreground:"#91B4D5"}},{scope:["string.regexp"],settings:{foreground:"#5fb3a1"}},{scope:["constant.character.escape"],settings:{foreground:"#5fb3a1"}},{scope:["*url*","*link*","*uri*"],settings:{fontStyle:"underline",foreground:"#ADD7FF"}},{scope:["tag.decorator.js entity.name.tag.js","tag.decorator.js punctuation.definition.tag.js"],settings:{fontStyle:"italic",foreground:"#42675A"}},{scope:["source.js constant.other.object.key.js string.unquoted.label.js"],settings:{fontStyle:"italic",foreground:"#5fb3a1"}},{scope:["source.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#e4f0fb"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ADD7FF"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#91B4D5"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#7390AA"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#e4f0fb"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#ADD7FF"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#91B4D5"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#7390AA"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#e4f0fb"}},{scope:["text.html.markdown","punctuation.definition.list_item.markdown"],settings:{foreground:"#e4f0fb"}},{scope:["text.html.markdown markup.inline.raw.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown"],settings:{foreground:"#91B4D5"}},{scope:["markdown.heading","markup.heading | markup.heading entity.name","markup.heading.markdown punctuation.definition.heading.markdown"],settings:{foreground:"#e4f0fb"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#7390AA"}},{scope:["markup.bold","markup.bold string"],settings:{fontStyle:"bold",foreground:"#7390AA"}},{scope:["markup.bold markup.italic","markup.italic markup.bold","markup.quote markup.bold","markup.bold markup.italic string","markup.italic markup.bold string","markup.quote markup.bold string"],settings:{fontStyle:"bold",foreground:"#7390AA"}},{scope:["markup.underline"],settings:{fontStyle:"underline",foreground:"#7390AA"}},{scope:["markup.strike"],settings:{fontStyle:"italic"}},{scope:["markup.quote punctuation.definition.blockquote.markdown"],settings:{foreground:"#5DE4c7"}},{scope:["markup.quote"],settings:{fontStyle:"italic"}},{scope:["string.other.link.title.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["string.other.link.description.title.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["constant.other.reference.link.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["markup.raw.block"],settings:{foreground:"#ADD7FF"}},{scope:["markup.raw.block.fenced.markdown"],settings:{foreground:"#50647750"}},{scope:["punctuation.definition.fenced.markdown"],settings:{foreground:"#50647750"}},{scope:["markup.raw.block.fenced.markdown","variable.language.fenced.markdown","punctuation.section.class.end"],settings:{foreground:"#91B4D5"}},{scope:["variable.language.fenced.markdown"],settings:{foreground:"#91B4D5"}},{scope:["meta.separator"],settings:{fontStyle:"bold",foreground:"#7390AA"}},{scope:["markup.table"],settings:{foreground:"#ADD7FF"}},{scope:"token.info-token",settings:{foreground:"#89ddff"}},{scope:"token.warn-token",settings:{foreground:"#fffac2"}},{scope:"token.error-token",settings:{foreground:"#d0679d"}},{scope:"token.debug-token",settings:{foreground:"#e4f0fb"}},{scope:["entity.name.section.markdown","markup.heading.setext.1.markdown","markup.heading.setext.2.markdown"],settings:{fontStyle:"bold",foreground:"#e4f0fb"}},{scope:"meta.paragraph.markdown",settings:{foreground:"#e4f0fbd0"}},{scope:["punctuation.definition.from-file.diff","meta.diff.header.from-file"],settings:{foreground:"#506477"}},{scope:"markup.inline.raw.string.markdown",settings:{foreground:"#7390AA"}},{scope:"meta.separator.markdown",settings:{foreground:"#767c9d"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}},{scope:["beginning.punctuation.definition.list.markdown","punctuation.definition.list.begin.markdown","markup.list.unnumbered.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["string.other.link.description.title.markdown punctuation.definition.string.markdown","meta.link.inline.markdown string.other.link.description.title.markdown","string.other.link.description.title.markdown punctuation.definition.string.begin.markdown","string.other.link.description.title.markdown punctuation.definition.string.end.markdown","meta.image.inline.markdown string.other.link.description.title.markdown"],settings:{fontStyle:"",foreground:"#ADD7FF"}},{scope:["meta.link.inline.markdown string.other.link.title.markdown","meta.link.reference.markdown string.other.link.title.markdown","meta.link.reference.def.markdown markup.underline.link.markdown"],settings:{fontStyle:"underline",foreground:"#ADD7FF"}},{scope:["markup.underline.link.markdown","string.other.link.description.title.markdown"],settings:{foreground:"#5DE4c7"}},{scope:["fenced_code.block.language","markup.inline.raw.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["punctuation.definition.markdown","punctuation.definition.raw.markdown","punctuation.definition.heading.markdown","punctuation.definition.bold.markdown","punctuation.definition.italic.markdown"],settings:{foreground:"#ADD7FF"}},{scope:["source.ignore","log.error","log.exception"],settings:{foreground:"#d0679d"}},{scope:["log.verbose"],settings:{foreground:"#a6accd"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/postcss.DXT9h7v2.js b/assets/chunks/postcss.DXT9h7v2.js new file mode 100644 index 000000000..084285614 --- /dev/null +++ b/assets/chunks/postcss.DXT9h7v2.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"PostCSS",fileTypes:["pcss","postcss"],foldingStartMarker:"/\\*|^#|^\\*|^\\b|^\\.",foldingStopMarker:"\\*/|^\\s*$",name:"postcss",patterns:[{begin:"/\\*",end:"\\*/",name:"comment.block.postcss",patterns:[{include:"#comment-tag"}]},{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#placeholder-selector"},{include:"#variable"},{include:"#variable-root-css"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#dotdotdot"},{begin:"@include",captures:{0:{name:"keyword.control.at-rule.css.postcss"}},end:"(?=\\n|\\(|{|;)",name:"support.function.name.postcss.library"},{begin:"@mixin|@function",captures:{0:{name:"keyword.control.at-rule.css.postcss"}},end:"$\\n?|(?=\\(|{)",name:"support.function.name.postcss.no-completions",patterns:[{match:"[\\w-]+",name:"entity.name.function"}]},{match:"(?<=@import)\\s[\\w/.*-]+",name:"string.quoted.double.css.postcss"},{begin:"@",end:"$\\n?|\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\s|,))|(?=;)",name:"keyword.control.at-rule.css.postcss"},{begin:"#",end:"$\\n?|(?=\\s|,|;|\\(|\\)|\\.|\\[|{|>)",name:"entity.other.attribute-name.id.css.postcss",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\.|(?<=&)(-|_)",end:"$\\n?|(?=\\s|,|;|\\(|\\)|\\[|{|>)",name:"entity.other.attribute-name.class.css.postcss",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\[",end:"\\]",name:"entity.other.attribute-selector.postcss",patterns:[{include:"#double-quoted"},{include:"#single-quoted"},{match:"\\^|\\$|\\*|~",name:"keyword.other.regex.postcss"}]},{match:"(?<=\\]|\\)|not\\(|\\*|>|>\\s):[a-z:-]+|(::|:-)[a-z:-]+",name:"entity.other.attribute-name.pseudo-class.css.postcss"},{begin:":",end:"$\\n?|(?=;|\\s\\(|and\\(|{|}|\\),)",name:"meta.property-list.css.postcss",patterns:[{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#variable"},{include:"#rgb-value"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#function"},{include:"#function-content"},{include:"#function-content-var"},{include:"#operator"},{include:"#parent-selector"},{include:"#property-value"}]},{include:"#rgb-value"},{include:"#function"},{include:"#function-content"},{begin:"(?<!\\-|\\()\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|x)\\b(?!-|\\)|:\\s)|&",end:"(?=\\s|,|;|\\(|\\)|\\.|\\[|{|>|-|_)",name:"entity.name.tag.css.postcss.symbol",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{include:"#operator"},{match:"[a-z-]+((?=:|#{))",name:"support.type.property-name.css.postcss"},{include:"#reserved-words"},{include:"#property-value"}],repository:{"comment-tag":{begin:"{{",end:"}}",name:"comment.tags.postcss",patterns:[{match:"[\\w-]+",name:"comment.tag.postcss"}]},dotdotdot:{match:"\\.{3}",name:"variable.other"},"double-quoted":{begin:'"',end:'"',name:"string.quoted.double.css.postcss",patterns:[{include:"#quoted-interpolation"}]},"double-slash":{begin:"//",end:"$",name:"comment.line.postcss",patterns:[{include:"#comment-tag"}]},flag:{match:"!(important|default|optional|global)",name:"keyword.other.important.css.postcss"},function:{match:"(?<=[\\s|\\(|,|:])(?!url|format|attr)[\\w-][\\w-]*(?=\\()",name:"support.function.name.postcss"},"function-content":{match:"(?<=url\\(|format\\(|attr\\().+?(?=\\))",name:"string.quoted.double.css.postcss"},"function-content-var":{match:"(?<=var\\()[\\w-]+(?=\\))",name:"variable.parameter.postcss"},interpolation:{begin:"#{",end:"}",name:"support.function.interpolation.postcss",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"},{include:"#double-quoted"},{include:"#single-quoted"}]},numeric:{match:"(-|\\.)?[0-9]+(\\.[0-9]+)?",name:"constant.numeric.css.postcss"},operator:{match:"\\+|\\s-\\s|\\s-(?=\\$)|(?<=\\()-(?=\\$)|\\s-(?=\\()|\\*|/|%|=|!|<|>|~",name:"keyword.operator.postcss"},"parent-selector":{match:"&",name:"entity.name.tag.css.postcss"},"placeholder-selector":{begin:"(?<!\\d)%(?!\\d)",end:"$\\n?|\\s|(?=;|{)",name:"entity.other.attribute-name.placeholder-selector.postcss"},"property-value":{match:"[\\w-]+",name:"meta.property-value.css.postcss, support.constant.property-value.css.postcss"},"pseudo-class":{match:":[a-z:-]+",name:"entity.other.attribute-name.pseudo-class.css.postcss"},"quoted-interpolation":{begin:"#{",end:"}",name:"support.function.interpolation.postcss",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"}]},"reserved-words":{match:"\\b(false|from|in|not|null|through|to|true)\\b",name:"support.type.property-name.css.postcss"},"rgb-value":{match:"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b",name:"constant.other.color.rgb-value.css.postcss"},"single-quoted":{begin:"'",end:"'",name:"string.quoted.single.css.postcss",patterns:[{include:"#quoted-interpolation"}]},unit:{match:"(?<=[\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|%)",name:"keyword.other.unit.css.postcss"},variable:{match:"\\$[\\w-]+",name:"variable.parameter.postcss"},"variable-root-css":{match:"(?<!&)--[\\w-]+",name:"variable.parameter.postcss"}},scopeName:"source.css.postcss"});var t=[e];export{t as default}; diff --git a/assets/chunks/powerquery.CApMHEaB.js b/assets/chunks/powerquery.CApMHEaB.js new file mode 100644 index 000000000..997e941db --- /dev/null +++ b/assets/chunks/powerquery.CApMHEaB.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"PowerQuery",fileTypes:["pq","pqm"],name:"powerquery",patterns:[{include:"#Noise"},{include:"#LiteralExpression"},{include:"#Keywords"},{include:"#ImplicitVariable"},{include:"#IntrinsicVariable"},{include:"#Operators"},{include:"#DotOperators"},{include:"#TypeName"},{include:"#RecordExpression"},{include:"#Punctuation"},{include:"#QuotedIdentifier"},{include:"#Identifier"}],repository:{BlockComment:{begin:"/\\*",end:"\\*/",name:"comment.block.powerquery"},DecimalNumber:{match:"(?<![\\d\\w])(\\d*\\.\\d+)\\b",name:"constant.numeric.decimal.powerquery"},DotOperators:{captures:{1:{name:"keyword.operator.ellipsis.powerquery"},2:{name:"keyword.operator.list.powerquery"}},match:"(?<!\\.)(?:(\\.\\.\\.)|(\\.\\.))(?!\\.)"},EscapeSequence:{begin:"#\\(",beginCaptures:{0:{name:"punctuation.definition.escapesequence.begin.powerquery"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.escapesequence.end.powerquery"}},name:"constant.character.escapesequence.powerquery",patterns:[{match:"(#|\\h{4}|\\h{8}|cr|lf|tab)(?:,(#|\\h{4}|\\h{8}|cr|lf|tab))*"},{match:"[^\\)]",name:"invalid.illegal.escapesequence.powerquery"}]},FloatNumber:{match:"(\\d*\\.)?\\d+(e|E)(\\+|-)?\\d+",name:"constant.numeric.float.powerquery"},HexNumber:{match:"0(x|X)\\h+",name:"constant.numeric.integer.hexadecimal.powerquery"},Identifier:{captures:{1:{name:"keyword.operator.inclusiveidentifier.powerquery"},2:{name:"entity.name.powerquery"}},match:"(?x:(?<![\\._\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])(@?)([_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}]*(?:\\.[_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])*)\\b)"},ImplicitVariable:{match:"\\b_\\b",name:"keyword.operator.implicitvariable.powerquery"},InclusiveIdentifier:{captures:{0:{name:"inclusiveidentifier.powerquery"}},match:"@"},IntNumber:{captures:{1:{name:"constant.numeric.integer.powerquery"}},match:"\\b(\\d+)\\b"},IntrinsicVariable:{captures:{1:{name:"constant.language.intrinsicvariable.powerquery"}},match:"(?<![\\d\\w])(#sections|#shared)\\b"},Keywords:{captures:{1:{name:"keyword.operator.word.logical.powerquery"},2:{name:"keyword.control.conditional.powerquery"},3:{name:"keyword.control.exception.powerquery"},4:{name:"keyword.other.powerquery"},5:{name:"keyword.powerquery"}},match:"\\b(?:(and|or|not)|(if|then|else)|(try|otherwise)|(as|each|in|is|let|meta|type|error)|(section|shared))\\b"},LineComment:{match:"//.*",name:"comment.line.double-slash.powerquery"},LiteralExpression:{patterns:[{include:"#String"},{include:"#NumericConstant"},{include:"#LogicalConstant"},{include:"#NullConstant"},{include:"#FloatNumber"},{include:"#DecimalNumber"},{include:"#HexNumber"},{include:"#IntNumber"}]},LogicalConstant:{match:"\\b(true|false)\\b",name:"constant.language.logical.powerquery"},Noise:{patterns:[{include:"#BlockComment"},{include:"#LineComment"},{include:"#Whitespace"}]},NullConstant:{match:"\\b(null)\\b",name:"constant.language.null.powerquery"},NumericConstant:{captures:{1:{name:"constant.language.numeric.float.powerquery"}},match:"(?<![\\d\\w])(#infinity|#nan)\\b"},Operators:{captures:{1:{name:"keyword.operator.function.powerquery"},2:{name:"keyword.operator.assignment-or-comparison.powerquery"},3:{name:"keyword.operator.comparison.powerquery"},4:{name:"keyword.operator.combination.powerquery"},5:{name:"keyword.operator.arithmetic.powerquery"},6:{name:"keyword.operator.sectionaccess.powerquery"},7:{name:"keyword.operator.optional.powerquery"}},match:"(=>)|(=)|(<>|<|>|<=|>=)|(&)|(\\+|-|\\*|\\/)|(!)|(\\?)"},Punctuation:{captures:{1:{name:"punctuation.separator.powerquery"},2:{name:"punctuation.section.parens.begin.powerquery"},3:{name:"punctuation.section.parens.end.powerquery"},4:{name:"punctuation.section.braces.begin.powerquery"},5:{name:"punctuation.section.braces.end.powerquery"}},match:"(,)|(\\()|(\\))|({)|(})"},QuotedIdentifier:{begin:'#"',beginCaptures:{0:{name:"punctuation.definition.quotedidentifier.begin.powerquery"}},end:'"(?!")',endCaptures:{0:{name:"punctuation.definition.quotedidentifier.end.powerquery"}},name:"entity.name.powerquery",patterns:[{match:'""',name:"constant.character.escape.quote.powerquery"},{include:"#EscapeSequence"}]},RecordExpression:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.brackets.begin.powerquery"}},contentName:"meta.recordexpression.powerquery",end:"\\]",endCaptures:{0:{name:"punctuation.section.brackets.end.powerquery"}},patterns:[{include:"$self"}]},String:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.powerquery"}},end:'"(?!")',endCaptures:{0:{name:"punctuation.definition.string.end.powerquery"}},name:"string.quoted.double.powerquery",patterns:[{match:'""',name:"constant.character.escape.quote.powerquery"},{include:"#EscapeSequence"}]},TypeName:{captures:{1:{name:"storage.modifier.powerquery"},2:{name:"storage.type.powerquery"}},match:"\\b(?:(optional|nullable)|(action|any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|null|number|record|table|text|type))\\b"},Whitespace:{match:"\\s+"}},scopeName:"source.powerquery"});var n=[e];export{n as default}; diff --git a/assets/chunks/powershell.9ZOzOPqN.js b/assets/chunks/powershell.9ZOzOPqN.js new file mode 100644 index 000000000..c233a5a4e --- /dev/null +++ b/assets/chunks/powershell.9ZOzOPqN.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"PowerShell",name:"powershell",patterns:[{begin:"<#",beginCaptures:{0:{name:"punctuation.definition.comment.block.begin.powershell"}},end:"#>",endCaptures:{0:{name:"punctuation.definition.comment.block.end.powershell"}},name:"comment.block.powershell",patterns:[{include:"#commentEmbeddedDocs"}]},{match:"[2-6]>&1|>>|>|<<|<|>|>\\||[1-6]>|[1-6]>>",name:"keyword.operator.redirection.powershell"},{include:"#commands"},{include:"#commentLine"},{include:"#variable"},{include:"#subexpression"},{include:"#function"},{include:"#attribute"},{include:"#UsingDirective"},{include:"#type"},{include:"#hashtable"},{include:"#doubleQuotedString"},{include:"#scriptblock"},{comment:"Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)",include:"#doubleQuotedStringEscapes"},{applyEndPatternLast:!0,begin:"['\\x{2018}-\\x{201B}]",beginCaptures:{0:{name:"punctuation.definition.string.begin.powershell"}},end:"['\\x{2018}-\\x{201B}]",endCaptures:{0:{name:"punctuation.definition.string.end.powershell"}},name:"string.quoted.single.powershell",patterns:[{match:"['\\x{2018}-\\x{201B}]{2}",name:"constant.character.escape.powershell"}]},{begin:'(@["\\x{201C}-\\x{201E}])\\s*$',beginCaptures:{1:{name:"punctuation.definition.string.begin.powershell"}},end:'^["\\x{201C}-\\x{201E}]@',endCaptures:{0:{name:"punctuation.definition.string.end.powershell"}},name:"string.quoted.double.heredoc.powershell",patterns:[{include:"#variableNoProperty"},{include:"#doubleQuotedStringEscapes"},{include:"#interpolation"}]},{begin:"(@['\\x{2018}-\\x{201B}])\\s*$",beginCaptures:{1:{name:"punctuation.definition.string.begin.powershell"}},end:"^['\\x{2018}-\\x{201B}]@",endCaptures:{0:{name:"punctuation.definition.string.end.powershell"}},name:"string.quoted.single.heredoc.powershell"},{include:"#numericConstant"},{begin:"(@)(\\()",beginCaptures:{1:{name:"keyword.other.array.begin.powershell"},2:{name:"punctuation.section.group.begin.powershell"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.powershell"}},name:"meta.group.array-expression.powershell",patterns:[{include:"$self"}]},{begin:"((\\$))(\\()",beginCaptures:{1:{name:"keyword.other.substatement.powershell"},2:{name:"punctuation.definition.subexpression.powershell"},3:{name:"punctuation.section.group.begin.powershell"}},comment:"TODO: move to repo; make recursive.",end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.powershell"}},name:"meta.group.complex.subexpression.powershell",patterns:[{include:"$self"}]},{match:"(\\b(([A-Za-z0-9\\-_\\.]+)\\.(?i:exe|com|cmd|bat))\\b)",name:"support.function.powershell"},{match:"(?<!\\w|-|\\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\\?)(?!\\w)",name:"keyword.control.powershell"},{match:"(?<!\\w|-|[^\\)]\\.)((?i:(foreach|where)(?!-object))|%|\\?)(?!\\w)",name:"keyword.control.powershell"},{begin:"(?<!\\w)(--%)(?!\\w)",beginCaptures:{1:{name:"keyword.control.powershell"}},comment:"This should be moved to the repository at some point.",end:"$",patterns:[{match:".+",name:"string.unquoted.powershell"}]},{comment:"This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.",match:"(?<!\\w)((?i:hidden|static))(?!\\w)",name:"storage.modifier.powershell"},{captures:{1:{name:"storage.type.powershell"},2:{name:"entity.name.function"}},comment:"capture should be entity.name.type, but it doesn't provide a good color in the default schema.",match:"(?<!\\w|-)((?i:class)|%|\\?)(?:\\s)+((?:\\p{L}|\\d|_|-|)+)\\b"},{match:"(?<!\\w)-(?i:is(?:not)?|as)\\b",name:"keyword.operator.comparison.powershell"},{match:"(?<!\\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\\p{L})",name:"keyword.operator.comparison.powershell"},{match:"(?<!\\w)-(?i:join|split)(?!\\p{L})|!",name:"keyword.operator.unary.powershell"},{match:"(?<!\\w)-(?i:and|or|not|xor)(?!\\p{L})|!",name:"keyword.operator.logical.powershell"},{match:"(?<!\\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\\p{L})",name:"keyword.operator.bitwise.powershell"},{match:"(?<!\\w)-(?i:f)(?!\\p{L})",name:"keyword.operator.string-format.powershell"},{match:"[+%*/-]?=|[+/*%-]",name:"keyword.operator.assignment.powershell"},{match:"\\|{2}|&{2}|;",name:"punctuation.terminator.statement.powershell"},{match:"&|(?<!\\w)\\.(?= )|`|,|\\|",name:"keyword.operator.other.powershell"},{comment:"This is very imprecise, is there a syntax for 'must come after...' ",match:"(?<!\\s|^)\\.\\.(?=\\-?\\d|\\(|\\$)",name:"keyword.operator.range.powershell"}],repository:{RequiresDirective:{begin:"(?<=#)(?i:(requires))\\s",beginCaptures:{0:{name:"keyword.control.requires.powershell"}},end:"$",name:"meta.requires.powershell",patterns:[{match:"\\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)",name:"keyword.other.powershell"},{match:"(?<!-)\\b\\p{L}+|\\d+(?:\\.\\d+)*",name:"variable.parameter.powershell"},{include:"#hashtable"}]},UsingDirective:{captures:{1:{name:"keyword.control.using.powershell"},2:{name:"keyword.other.powershell"},3:{name:"variable.parameter.powershell"}},match:"(?<!\\w)(?i:(using))\\s+(?i:(namespace|module))\\s+(?i:((?:\\w+(?:\\.)?)+))"},attribute:{begin:"(\\[)\\s*\\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\\b",beginCaptures:{1:{name:"punctuation.section.bracket.begin.powershell"},2:{name:"support.function.attribute.powershell"}},end:"(\\])",endCaptures:{1:{name:"punctuation.section.bracket.end.powershell"}},name:"meta.attribute.powershell",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.group.begin.powershell"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.powershell"}},patterns:[{include:"$self"},{captures:{1:{name:"variable.parameter.attribute.powershell"},2:{name:"keyword.operator.assignment.powershell"}},match:"(?i)\\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\\b(?:\\s+)?(=)?"}]}]},commands:{patterns:[{comment:"Verb-Noun pattern:",match:"(?:(\\p{L}|\\d|_|-|\\\\|\\:)*\\\\)?\\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\\-.+?(?:\\.(?i:exe|cmd|bat|ps1))?\\b",name:"support.function.powershell"},{comment:"Builtin cmdlets with reserved verbs",match:"(?<!\\w)(?i:foreach-object)(?!\\w)",name:"support.function.powershell"},{comment:"Builtin cmdlets with reserved verbs",match:"(?<!\\w)(?i:where-object)(?!\\w)",name:"support.function.powershell"},{comment:"Builtin cmdlets with reserved verbs",match:"(?<!\\w)(?i:sort-object)(?!\\w)",name:"support.function.powershell"},{comment:"Builtin cmdlets with reserved verbs",match:"(?<!\\w)(?i:tee-object)(?!\\w)",name:"support.function.powershell"}]},commentEmbeddedDocs:{patterns:[{captures:{1:{name:"constant.string.documentation.powershell"},2:{name:"keyword.operator.documentation.powershell"}},comment:"these embedded doc keywords do not support arguments, must be the only thing on the line",match:"(?:^|\\G)(?i:\\s*(\\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\\s*$",name:"comment.documentation.embedded.powershell"},{captures:{1:{name:"constant.string.documentation.powershell"},2:{name:"keyword.operator.documentation.powershell"},3:{name:"keyword.operator.documentation.powershell"}},comment:"these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match",match:"(?:^|\\G)(?i:\\s*(\\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\\s+(.+?)\\s*$",name:"comment.documentation.embedded.powershell"}]},commentLine:{begin:"(?<![`\\\\-])(#)#*",captures:{1:{name:"punctuation.definition.comment.powershell"}},end:"$\\n?",name:"comment.line.powershell",patterns:[{include:"#commentEmbeddedDocs"},{include:"#RequiresDirective"}]},doubleQuotedString:{applyEndPatternLast:!0,begin:'["\\x{201C}-\\x{201E}]',beginCaptures:{0:{name:"punctuation.definition.string.begin.powershell"}},end:'["\\x{201C}-\\x{201E}]',endCaptures:{0:{name:"punctuation.definition.string.end.powershell"}},name:"string.quoted.double.powershell",patterns:[{match:"(?i)\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,64}\\b"},{include:"#variableNoProperty"},{include:"#doubleQuotedStringEscapes"},{match:'["\\x{201C}-\\x{201E}]{2}',name:"constant.character.escape.powershell"},{include:"#interpolation"},{match:"`\\s*$",name:"keyword.other.powershell"}]},doubleQuotedStringEscapes:{patterns:[{match:"`[`0abefnrtv'\"\\x{2018}-\\x{201E}$]",name:"constant.character.escape.powershell"},{include:"#unicodeEscape"}]},function:{begin:"^(?:\\s*+)(?i)(function|filter|configuration|workflow)\\s+(?:(global|local|script|private):)?((?:\\p{L}|\\d|_|-|\\.)+)",beginCaptures:{0:{name:"meta.function.powershell"},1:{name:"storage.type.powershell"},2:{name:"storage.modifier.scope.powershell"},3:{name:"entity.name.function.powershell"}},end:"(?=\\{|\\()",patterns:[{include:"#commentLine"}]},hashtable:{begin:"(@)(\\{)",beginCaptures:{1:{name:"keyword.other.hashtable.begin.powershell"},2:{name:"punctuation.section.braces.begin.powershell"}},end:"(\\})",endCaptures:{1:{name:"punctuation.section.braces.end.powershell"}},name:"meta.hashtable.powershell",patterns:[{captures:{1:{name:"punctuation.definition.string.begin.powershell"},2:{name:"variable.other.readwrite.powershell"},3:{name:"punctuation.definition.string.end.powershell"},4:{name:"keyword.operator.assignment.powershell"}},match:`\\b((?:\\'|\\")?)(\\w+)((?:\\'|\\")?)(?:\\s+)?(=)(?:\\s+)?`,name:"meta.hashtable.assignment.powershell"},{include:"#scriptblock"},{include:"$self"}]},interpolation:{begin:"(((\\$)))((\\())",beginCaptures:{1:{name:"keyword.other.substatement.powershell"},2:{name:"punctuation.definition.substatement.powershell"},3:{name:"punctuation.section.embedded.substatement.begin.powershell"},4:{name:"punctuation.section.group.begin.powershell"},5:{name:"punctuation.section.embedded.substatement.begin.powershell"}},contentName:"interpolated.complex.source.powershell",end:"(\\))",endCaptures:{0:{name:"punctuation.section.group.end.powershell"},1:{name:"punctuation.section.embedded.substatement.end.powershell"}},name:"meta.embedded.substatement.powershell",patterns:[{include:"$self"}]},numericConstant:{patterns:[{captures:{1:{name:"constant.numeric.hex.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.integer.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?(?:[0-9_]+)?\\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.octal.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.integer.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.integer.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?[0-9_]+\\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.integer.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?[0-9_]+[\\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\\b"},{captures:{1:{name:"constant.numeric.integer.powershell"},2:{name:"keyword.other.powershell"}},match:"(?<!\\w)([-+]?[0-9_]+[\\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"}]},scriptblock:{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.braces.begin.powershell"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.braces.end.powershell"}},name:"meta.scriptblock.powershell",patterns:[{include:"$self"}]},subexpression:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.group.begin.powershell"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.group.end.powershell"}},name:"meta.group.simple.subexpression.powershell",patterns:[{include:"$self"}]},type:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.bracket.begin.powershell"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.bracket.end.powershell"}},patterns:[{match:"(?!\\d+|\\.)(?:\\p{L}|\\p{N}|\\.)+",name:"storage.type.powershell"},{include:"$self"}]},unicodeEscape:{comment:"`u{xxxx} added in PowerShell 6.0",patterns:[{match:"`u\\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\\g<1>{1,5})}",name:"constant.character.escape.powershell"},{match:"`u(?:\\{[0-9a-fA-F]{,6}.)?",name:"invalid.character.escape.powershell"}]},variable:{patterns:[{captures:{0:{name:"constant.language.powershell"},1:{name:"punctuation.definition.variable.powershell"}},comment:"These are special constants.",match:"(\\$)(?i:(False|Null|True))\\b"},{captures:{0:{name:"support.constant.variable.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"These are the other built-in constants.",match:"(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?\\b"},{captures:{0:{name:"support.variable.automatic.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.",match:"(\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\b)((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"},{captures:{0:{name:"variable.language.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"Style preference variables as language variables so that they stand out.",match:"(\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?\\b"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"storage.modifier.scope.powershell"},4:{name:"variable.other.member.powershell"}},match:"(?i:(\\$|@)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"punctuation.section.braces.begin.powershell"},3:{name:"storage.modifier.scope.powershell"},5:{name:"punctuation.section.braces.end.powershell"},6:{name:"variable.other.member.powershell"}},match:"(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"support.variable.drive.powershell"},4:{name:"variable.other.member.powershell"}},match:"(?i:(\\$|@)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"punctuation.section.braces.begin.powershell"},3:{name:"support.variable.drive.powershell"},5:{name:"punctuation.section.braces.end.powershell"},6:{name:"variable.other.member.powershell"}},match:"(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"}]},variableNoProperty:{patterns:[{captures:{0:{name:"constant.language.powershell"},1:{name:"punctuation.definition.variable.powershell"}},comment:"These are special constants.",match:"(\\$)(?i:(False|Null|True))\\b"},{captures:{0:{name:"support.constant.variable.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"These are the other built-in constants.",match:"(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\\b"},{captures:{0:{name:"support.variable.automatic.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"Automatic variables are not constants, but they are read-only...",match:"(\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\b)"},{captures:{0:{name:"variable.language.powershell"},1:{name:"punctuation.definition.variable.powershell"},3:{name:"variable.other.member.powershell"}},comment:"Style preference variables as language variables so that they stand out.",match:"(\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\\b"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"storage.modifier.scope.powershell"},4:{name:"variable.other.member.powershell"}},match:"(?i:(\\$)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"storage.modifier.scope.powershell"},4:{name:"keyword.other.powershell"},5:{name:"variable.other.member.powershell"}},match:"(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"support.variable.drive.powershell"},4:{name:"variable.other.member.powershell"}},match:"(?i:(\\$)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))"},{captures:{0:{name:"variable.other.readwrite.powershell"},1:{name:"punctuation.definition.variable.powershell"},2:{name:"punctuation.section.braces.begin"},3:{name:"support.variable.drive.powershell"},5:{name:"punctuation.section.braces.end"}},match:"(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))"}]}},scopeName:"source.powershell",aliases:["ps","ps1"]});var t=[e];export{t as default}; diff --git a/assets/chunks/prisma.BBJYjQ0k.js b/assets/chunks/prisma.BBJYjQ0k.js new file mode 100644 index 000000000..62961f253 --- /dev/null +++ b/assets/chunks/prisma.BBJYjQ0k.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Prisma",fileTypes:["prisma"],name:"prisma",patterns:[{include:"#triple_comment"},{include:"#double_comment"},{include:"#model_block_definition"},{include:"#config_block_definition"},{include:"#enum_block_definition"},{include:"#type_definition"}],repository:{array:{begin:"\\[",beginCaptures:{1:{name:"punctuation.definition.tag.prisma"}},end:"\\]",endCaptures:{1:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.array",patterns:[{include:"#value"}]},assignment:{patterns:[{begin:"^\\s*(\\w+)\\s*(=)\\s*",beginCaptures:{1:{name:"variable.other.assignment.prisma"},2:{name:"keyword.operator.terraform"}},end:"\\n",patterns:[{include:"#value"},{include:"#double_comment_inline"}]}]},attribute:{captures:{1:{name:"entity.name.function.attribute.prisma"}},match:"(@@?[\\w\\.]+)",name:"source.prisma.attribute"},attribute_with_arguments:{begin:"(@@?[\\w\\.]+)(\\()",beginCaptures:{1:{name:"entity.name.function.attribute.prisma"},2:{name:"punctuation.definition.tag.prisma"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.attribute.with_arguments",patterns:[{include:"#named_argument"},{include:"#value"}]},boolean:{match:"\\b(true|false)\\b",name:"constant.language.boolean.prisma"},config_block_definition:{begin:"^\\s*(generator|datasource)\\s+([A-Za-z][\\w]*)\\s+({)",beginCaptures:{1:{name:"storage.type.config.prisma"},2:{name:"entity.name.type.config.prisma"},3:{name:"punctuation.definition.tag.prisma"}},end:"\\s*\\}",endCaptures:{1:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.embedded.source",patterns:[{include:"#triple_comment"},{include:"#double_comment"},{include:"#assignment"}]},double_comment:{begin:"//",end:"$\\n?",name:"comment.prisma"},double_comment_inline:{match:"//[^\\n]*",name:"comment.prisma"},double_quoted_string:{begin:'"',beginCaptures:{0:{name:"string.quoted.double.start.prisma"}},end:'"',endCaptures:{0:{name:"string.quoted.double.end.prisma"}},name:"unnamed",patterns:[{include:"#string_interpolation"},{match:"([\\w\\-\\/\\._\\\\%@:\\?=]+)",name:"string.quoted.double.prisma"}]},enum_block_definition:{begin:"^\\s*(enum)\\s+([A-Za-z][\\w]*)\\s+({)",beginCaptures:{1:{name:"storage.type.enum.prisma"},2:{name:"entity.name.type.enum.prisma"},3:{name:"punctuation.definition.tag.prisma"}},end:"\\s*\\}",endCaptures:{0:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.embedded.source",patterns:[{include:"#triple_comment"},{include:"#double_comment"},{include:"#enum_value_definition"}]},enum_value_definition:{patterns:[{captures:{1:{name:"variable.other.assignment.prisma"}},match:"^\\s*(\\w+)\\s*"},{include:"#attribute_with_arguments"},{include:"#attribute"}]},field_definition:{name:"scalar.field",patterns:[{captures:{1:{name:"variable.other.assignment.prisma"},2:{name:"invalid.illegal.colon.prisma"},3:{name:"variable.language.relations.prisma"},4:{name:"support.type.primitive.prisma"},5:{name:"keyword.operator.list_type.prisma"},6:{name:"keyword.operator.optional_type.prisma"},7:{name:"invalid.illegal.required_type.prisma"}},match:"^\\s*(\\w+)(\\s*:)?\\s+((?!(?:Int|BigInt|String|DateTime|Bytes|Decimal|Float|Json|Boolean)\\b)\\b\\w+)?(Int|BigInt|String|DateTime|Bytes|Decimal|Float|Json|Boolean)?(\\[\\])?(\\?)?(\\!)?"},{include:"#attribute_with_arguments"},{include:"#attribute"}]},functional:{begin:"(\\w+)(\\()",beginCaptures:{1:{name:"support.function.functional.prisma"},2:{name:"punctuation.definition.tag.prisma"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.functional",patterns:[{include:"#value"}]},identifier:{patterns:[{match:"\\b(\\w)+\\b",name:"support.constant.constant.prisma"}]},literal:{name:"source.prisma.literal",patterns:[{include:"#boolean"},{include:"#number"},{include:"#double_quoted_string"},{include:"#identifier"}]},map_key:{name:"source.prisma.key",patterns:[{captures:{1:{name:"variable.parameter.key.prisma"},2:{name:"punctuation.definition.separator.key-value.prisma"}},match:"(\\w+)\\s*(:)\\s*"}]},model_block_definition:{begin:"^\\s*(model|type|view)\\s+([A-Za-z][\\w]*)\\s*({)",beginCaptures:{1:{name:"storage.type.model.prisma"},2:{name:"entity.name.type.model.prisma"},3:{name:"punctuation.definition.tag.prisma"}},end:"\\s*\\}",endCaptures:{0:{name:"punctuation.definition.tag.prisma"}},name:"source.prisma.embedded.source",patterns:[{include:"#triple_comment"},{include:"#double_comment"},{include:"#field_definition"}]},named_argument:{name:"source.prisma.named_argument",patterns:[{include:"#map_key"},{include:"#value"}]},number:{match:"((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b",name:"constant.numeric.prisma"},string_interpolation:{patterns:[{begin:"\\$\\{",beginCaptures:{0:{name:"keyword.control.interpolation.start.prisma"}},end:"\\s*\\}",endCaptures:{0:{name:"keyword.control.interpolation.end.prisma"}},name:"source.tag.embedded.source.prisma",patterns:[{include:"#value"}]}]},triple_comment:{begin:"///",end:"$\\n?",name:"comment.prisma"},type_definition:{patterns:[{captures:{1:{name:"storage.type.type.prisma"},2:{name:"entity.name.type.type.prisma"},3:{name:"support.type.primitive.prisma"}},match:"^\\s*(type)\\s+(\\w+)\\s*=\\s*(\\w+)"},{include:"#attribute_with_arguments"},{include:"#attribute"}]},value:{name:"source.prisma.value",patterns:[{include:"#array"},{include:"#functional"},{include:"#literal"}]}},scopeName:"source.prisma"});var n=[e];export{n as default}; diff --git a/assets/chunks/prolog.BH_RS3WO.js b/assets/chunks/prolog.BH_RS3WO.js new file mode 100644 index 000000000..7f0f484ae --- /dev/null +++ b/assets/chunks/prolog.BH_RS3WO.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Prolog",fileTypes:["pl","pro"],name:"prolog",patterns:[{include:"#comments"},{begin:"(?<=:-)\\s*",end:"(\\.)",endCaptures:{1:{name:"keyword.control.clause.bodyend.prolog"}},name:"meta.clause.body.prolog",patterns:[{include:"#comments"},{include:"#builtin"},{include:"#controlandkeywords"},{include:"#atom"},{include:"#variable"},{include:"#constants"},{match:".",name:"meta.clause.body.prolog"}]},{begin:"^\\s*([a-z][a-zA-Z0-9_]*)(\\(?)(?=.*:-.*)",beginCaptures:{1:{name:"entity.name.function.clause.prolog"},2:{name:"punctuation.definition.parameters.begin"}},end:"((\\)?))\\s*(:-)",endCaptures:{1:{name:"punctuation.definition.parameters.end"},3:{name:"keyword.control.clause.bodybegin.prolog"}},name:"meta.clause.head.prolog",patterns:[{include:"#atom"},{include:"#variable"},{include:"#constants"}]},{begin:"^\\s*([a-z][a-zA-Z0-9_]*)(\\(?)(?=.*-->.*)",beginCaptures:{1:{name:"entity.name.function.dcg.prolog"},2:{name:"punctuation.definition.parameters.begin"}},end:"((\\)?))\\s*(-->)",endCaptures:{1:{name:"punctuation.definition.parameters.end"},3:{name:"keyword.control.dcg.bodybegin.prolog"}},name:"meta.dcg.head.prolog",patterns:[{include:"#atom"},{include:"#variable"},{include:"#constants"}]},{begin:"(?<=-->)\\s*",end:"(\\.)",endCaptures:{1:{name:"keyword.control.dcg.bodyend.prolog"}},name:"meta.dcg.body.prolog",patterns:[{include:"#comments"},{include:"#controlandkeywords"},{include:"#atom"},{include:"#variable"},{include:"#constants"},{match:".",name:"meta.dcg.body.prolog"}]},{begin:"^\\s*([a-zA-Z][a-zA-Z0-9_]*)(\\(?)(?!.*(:-|-->).*)",beginCaptures:{1:{name:"entity.name.function.fact.prolog"},2:{name:"punctuation.definition.parameters.begin"}},end:"((\\)?))\\s*(\\.)(?!\\d+)",endCaptures:{1:{name:"punctuation.definition.parameters.end"},3:{name:"keyword.control.fact.end.prolog"}},name:"meta.fact.prolog",patterns:[{include:"#comments"},{include:"#atom"},{include:"#variable"},{include:"#constants"}]}],repository:{atom:{patterns:[{match:"(?<![a-zA-Z0-9_])[a-z][a-zA-Z0-9_]*(?!\\s*\\(|[a-zA-Z0-9_])",name:"constant.other.atom.simple.prolog"},{match:"'.*?'",name:"constant.other.atom.quoted.prolog"},{match:"\\[\\]",name:"constant.other.atom.emptylist.prolog"}]},builtin:{patterns:[{match:"\\b(op|nl|fail|dynamic|discontiguous|initialization|meta_predicate|module_transparent|multifile|public|thread_local|thread_initialization|volatile)\\b",name:"keyword.other"},{match:"\\b(abolish|abort|abs|absolute_file_name|access_file|acos|acosh|acyclic_term|add_import_module|append|apropos|arg|asin|asinh|assert|asserta|assertz|at_end_of_stream|at_halt|atan|atanh|atom|atom_chars|atom_codes|atom_concat|atom_length|atom_number|atom_prefix|atom_string|atom_to_stem_list|atom_to_term|atomic|atomic_concat|atomic_list_concat|atomics_to_string|attach_packs|attr_portray_hook|attr_unify_hook|attribute_goals|attvar|autoload|autoload_path|b_getval|b_set_dict|b_setval|bagof|begin_tests|between|blob|break|byte_count|call_dcg|call_residue_vars|callable|cancel_halt|catch|ceil|ceiling|char_code|char_conversion|char_type|character_count|chdir|chr_leash|chr_notrace|chr_show_store|chr_trace|clause|clause_property|close|close_dde_conversation|close_table|code_type|collation_key|compare|compare_strings|compile_aux_clauses|compile_predicates|compiling|compound|compound_name_arguments|compound_name_arity|consult|context_module|copy_predicate_clauses|copy_stream_data|copy_term|copy_term_nat|copysign|cos|cosh|cputime|create_prolog_flag|current_arithmetic_function|current_atom|current_blob|current_char_conversion|current_engine|current_flag|current_format_predicate|current_functor|current_input|current_key|current_locale|current_module|current_op|current_output|current_predicate|current_prolog_flag|current_signal|current_stream|current_trie|cyclic_term|date_time_stamp|date_time_value|day_of_the_week|dcg_translate_rule|dde_current_connection|dde_current_service|dde_execute|dde_poke|dde_register_service|dde_request|dde_unregister_service|debug|debugging|default_module|del_attr|del_attrs|del_dict|delete_directory|delete_file|delete_import_module|deterministic|dict_create|dict_pairs|dif|directory_files|divmod|doc_browser|doc_collect|doc_load_library|doc_server|double_metaphone|downcase_atom|dtd|dtd_property|duplicate_term|dwim_match|dwim_predicate|e|edit|encoding|engine_create|engine_fetch|engine_next|engine_next_reified|engine_post|engine_self|engine_yield|ensure_loaded|epsilon|erase|erf|erfc|eval|exception|exists_directory|exists_file|exists_source|exp|expand_answer|expand_file_name|expand_file_search_path|expand_goal|expand_query|expand_term|explain|fast_read|fast_term_serialized|fast_write|file_base_name|file_directory_name|file_name_extension|file_search_path|fill_buffer|find_chr_constraint|findall|findnsols|flag|float|float_fractional_part|float_integer_part|floor|flush_output|forall|format|format_predicate|format_time|free_dtd|free_sgml_parser|free_table|freeze|frozen|functor|garbage_collect|garbage_collect_atoms|garbage_collect_clauses|gdebug|get|get_attr|get_attrs|get_byte|get_char|get_code|get_dict|get_flag|get_sgml_parser|get_single_char|get_string_code|get_table_attribute|get_time|getbit|getenv|goal_expansion|ground|gspy|gtrace|guitracer|gxref|gzopen|halt|help|import_module|in_pce_thread|in_pce_thread_sync|in_table|include|inf|instance|integer|iri_xml_namespace|is_absolute_file_name|is_dict|is_engine|is_list|is_stream|is_thread|keysort|known_licenses|leash|length|lgamma|library_directory|license|line_count|line_position|list_strings|listing|load_dtd|load_files|load_html|load_rdf|load_sgml|load_structure|load_test_files|load_xml|locale_create|locale_destroy|locale_property|locale_sort|log|lsb|make|make_directory|make_library_index|max|memberchk|message_hook|message_property|message_queue_create|message_queue_destroy|message_queue_property|message_to_string|min|module|module_property|msb|msort|mutex_create|mutex_destroy|mutex_lock|mutex_property|mutex_statistics|mutex_trylock|mutex_unlock|name|nan|nb_current|nb_delete|nb_getval|nb_link_dict|nb_linkarg|nb_linkval|nb_set_dict|nb_setarg|nb_setval|new_dtd|new_order_table|new_sgml_parser|new_table|nl|nodebug|noguitracer|nonvar|noprotocol|normalize_space|nospy|nospyall|notrace|nth_clause|nth_integer_root_and_remainder|number|number_chars|number_codes|number_string|numbervars|odbc_close_statement|odbc_connect|odbc_current_connection|odbc_current_table|odbc_data_source|odbc_debug|odbc_disconnect|odbc_driver_connect|odbc_end_transaction|odbc_execute|odbc_fetch|odbc_free_statement|odbc_get_connection|odbc_prepare|odbc_query|odbc_set_connection|odbc_statistics|odbc_table_column|odbc_table_foreign_key|odbc_table_primary_key|odbc_type|on_signal|op|open|open_dde_conversation|open_dtd|open_null_stream|open_resource|open_string|open_table|order_table_mapping|parse_time|passed|pce_dispatch|pdt_install_console|peek_byte|peek_char|peek_code|peek_string|phrase|plus|popcount|porter_stem|portray|portray_clause|powm|predicate_property|predsort|prefix_string|print|print_message|print_message_lines|process_rdf|profile|profiler|project_attributes|prolog|prolog_choice_attribute|prolog_current_choice|prolog_current_frame|prolog_cut_to|prolog_debug|prolog_exception_hook|prolog_file_type|prolog_frame_attribute|prolog_ide|prolog_list_goal|prolog_load_context|prolog_load_file|prolog_nodebug|prolog_skip_frame|prolog_skip_level|prolog_stack_property|prolog_to_os_filename|prolog_trace_interception|prompt|protocol|protocola|protocolling|put|put_attr|put_attrs|put_byte|put_char|put_code|put_dict|qcompile|qsave_program|random|random_float|random_property|rational|rationalize|rdf_write_xml|read|read_clause|read_history|read_link|read_pending_chars|read_pending_codes|read_string|read_table_fields|read_table_record|read_table_record_data|read_term|read_term_from_atom|recorda|recorded|recordz|redefine_system_predicate|reexport|reload_library_index|rename_file|require|reset|reset_profiler|resource|retract|retractall|round|run_tests|running_tests|same_file|same_term|see|seeing|seek|seen|select_dict|set_end_of_stream|set_flag|set_input|set_locale|set_module|set_output|set_prolog_IO|set_prolog_flag|set_prolog_stack|set_random|set_sgml_parser|set_stream|set_stream_position|set_test_options|setarg|setenv|setlocale|setof|sgml_parse|shell|shift|show_coverage|show_profile|sign|sin|sinh|size_file|skip|sleep|sort|source_exports|source_file|source_file_property|source_location|split_string|spy|sqrt|stamp_date_time|statistics|stream_pair|stream_position_data|stream_property|string|string_chars|string_code|string_codes|string_concat|string_length|string_lower|string_upper|strip_module|style_check|sub_atom|sub_atom_icasechk|sub_string|subsumes_term|succ|suite|swritef|tab|table_previous_record|table_start_of_record|table_version|table_window|tan|tanh|tell|telling|term_attvars|term_expansion|term_hash|term_string|term_subsumer|term_to_atom|term_variables|test|test_report|text_to_string|thread_at_exit|thread_create|thread_detach|thread_exit|thread_get_message|thread_join|thread_message_hook|thread_peek_message|thread_property|thread_self|thread_send_message|thread_setconcurrency|thread_signal|thread_statistics|throw|time|time_file|tmp_file|tmp_file_stream|tokenize_atom|told|trace|tracing|trie_destroy|trie_gen|trie_insert|trie_insert_new|trie_lookup|trie_new|trie_property|trie_term|trim_stacks|truncate|tty_get_capability|tty_goto|tty_put|tty_size|ttyflush|unaccent_atom|unifiable|unify_with_occurs_check|unix|unknown|unload_file|unsetenv|upcase_atom|use_module|var|var_number|var_property|variant_hash|version|visible|wait_for_input|when|wildcard_match|win_add_dll_directory|win_exec|win_folder|win_has_menu|win_insert_menu|win_insert_menu_item|win_registry_get_value|win_remove_dll_directory|win_shell|win_window_pos|window_title|with_mutex|with_output_to|working_directory|write|write_canonical|write_length|write_term|writef|writeln|writeq|xml_is_dom|xml_to_rdf|zopen)\\b",name:"support.function.builtin.prolog"}]},comments:{patterns:[{match:"%.*",name:"comment.line.percent-sign.prolog"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.prolog"}},end:"\\*/",name:"comment.block.prolog"}]},constants:{patterns:[{match:"(?<![a-zA-Z]|/)(\\d+|(\\d+\\.\\d+))",name:"constant.numeric.integer.prolog"},{match:'".*?"',name:"string.quoted.double.prolog"}]},controlandkeywords:{patterns:[{begin:"(->)",beginCaptures:{1:{name:"keyword.control.if.prolog"}},end:"(;)",endCaptures:{1:{name:"keyword.control.else.prolog"}},name:"meta.if.prolog",patterns:[{include:"$self"},{include:"#builtin"},{include:"#comments"},{include:"#atom"},{include:"#variable"},{match:".",name:"meta.if.body.prolog"}]},{match:"!",name:"keyword.control.cut.prolog"},{match:"(\\s(is)\\s)|=:=|=\\.\\.|=?\\\\?=|\\\\\\+|@?>|@?=?<|\\+|\\*|\\-",name:"keyword.operator.prolog"}]},variable:{patterns:[{match:"(?<![a-zA-Z0-9_])[A-Z][a-zA-Z0-9_]*",name:"variable.parameter.uppercase.prolog"},{match:"(?<!\\w)_",name:"variable.language.anonymous.prolog"}]}},scopeName:"source.prolog"});var t=[e];export{t as default}; diff --git a/assets/chunks/proto.DOtRmeXT.js b/assets/chunks/proto.DOtRmeXT.js new file mode 100644 index 000000000..e81e35650 --- /dev/null +++ b/assets/chunks/proto.DOtRmeXT.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Protocol Buffer 3",fileTypes:["proto"],name:"proto",patterns:[{include:"#comments"},{include:"#syntax"},{include:"#package"},{include:"#import"},{include:"#optionStmt"},{include:"#message"},{include:"#enum"},{include:"#service"}],repository:{comments:{patterns:[{begin:"/\\*",end:"\\*/",name:"comment.block.proto"},{begin:"//",end:"$\\n?",name:"comment.line.double-slash.proto"}]},constants:{match:"\\b(true|false|max|[A-Z_]+)\\b",name:"constant.language.proto"},enum:{begin:"(enum)(\\s+)([A-Za-z][A-Za-z0-9_]*)(\\s*)(\\{)?",beginCaptures:{1:{name:"keyword.other.proto"},3:{name:"entity.name.class.proto"}},end:"\\}",patterns:[{include:"#reserved"},{include:"#optionStmt"},{include:"#comments"},{begin:"([A-Za-z][A-Za-z0-9_]*)\\s*(=)\\s*(0[xX][0-9a-fA-F]+|[0-9]+)",beginCaptures:{1:{name:"variable.other.proto"},2:{name:"keyword.operator.assignment.proto"},3:{name:"constant.numeric.proto"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#fieldOptions"}]}]},field:{begin:"\\s*(optional|repeated|required)?\\s*\\b([\\w.]+)\\s+(\\w+)\\s*(=)\\s*(0[xX][0-9a-fA-F]+|[0-9]+)",beginCaptures:{1:{name:"storage.modifier.proto"},2:{name:"storage.type.proto"},3:{name:"variable.other.proto"},4:{name:"keyword.operator.assignment.proto"},5:{name:"constant.numeric.proto"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#fieldOptions"}]},fieldOptions:{begin:"\\[",end:"\\]",patterns:[{include:"#constants"},{include:"#number"},{include:"#string"},{include:"#subMsgOption"},{include:"#optionName"}]},ident:{match:"[A-Za-z][A-Za-z0-9_]*",name:"entity.name.class.proto"},import:{captures:{1:{name:"keyword.other.proto"},2:{name:"keyword.other.proto"},3:{name:"string.quoted.double.proto.import"},4:{name:"punctuation.terminator.proto"}},match:'\\s*(import)\\s+(weak|public)?\\s*("[^"]+")\\s*(;)'},kv:{begin:"(\\w+)\\s*(:)",beginCaptures:{1:{name:"keyword.other.proto"},2:{name:"punctuation.separator.key-value.proto"}},end:"(;)|,|(?=[}/_a-zA-Z])",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#constants"},{include:"#number"},{include:"#string"},{include:"#subMsgOption"}]},mapfield:{begin:"\\s*(map)\\s*(<)\\s*([\\w.]+)\\s*,\\s*([\\w.]+)\\s*(>)\\s+(\\w+)\\s*(=)\\s*(\\d+)",beginCaptures:{1:{name:"storage.type.proto"},2:{name:"punctuation.definition.typeparameters.begin.proto"},3:{name:"storage.type.proto"},4:{name:"storage.type.proto"},5:{name:"punctuation.definition.typeparameters.end.proto"},6:{name:"variable.other.proto"},7:{name:"keyword.operator.assignment.proto"},8:{name:"constant.numeric.proto"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#fieldOptions"}]},message:{begin:"(message|extend)(\\s+)([A-Za-z_][A-Za-z0-9_.]*)(\\s*)(\\{)?",beginCaptures:{1:{name:"keyword.other.proto"},3:{name:"entity.name.class.message.proto"}},end:"\\}",patterns:[{include:"#reserved"},{include:"$self"},{include:"#enum"},{include:"#optionStmt"},{include:"#comments"},{include:"#oneof"},{include:"#field"},{include:"#mapfield"}]},method:{begin:"(rpc)\\s+([A-Za-z][A-Za-z0-9_]*)",beginCaptures:{1:{name:"keyword.other.proto"},2:{name:"entity.name.function"}},end:"\\}|(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#comments"},{include:"#optionStmt"},{include:"#rpcKeywords"},{include:"#ident"}]},number:{match:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b",name:"constant.numeric.proto"},oneof:{begin:"(oneof)\\s+([A-Za-z][A-Za-z0-9_]*)\\s*\\{?",beginCaptures:{1:{name:"keyword.other.proto"},2:{name:"variable.other.proto"}},end:"\\}",patterns:[{include:"#optionStmt"},{include:"#comments"},{include:"#field"}]},optionName:{captures:{1:{name:"support.other.proto"},2:{name:"support.other.proto"},3:{name:"support.other.proto"}},match:"(\\w+|\\(\\w+(\\.\\w+)*\\))(\\.\\w+)*"},optionStmt:{begin:"(option)\\s+(\\w+|\\(\\w+(\\.\\w+)*\\))(\\.\\w+)*\\s*(=)",beginCaptures:{1:{name:"keyword.other.proto"},2:{name:"support.other.proto"},3:{name:"support.other.proto"},4:{name:"support.other.proto"},5:{name:"keyword.operator.assignment.proto"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{include:"#constants"},{include:"#number"},{include:"#string"},{include:"#subMsgOption"}]},package:{captures:{1:{name:"keyword.other.proto"},2:{name:"string.unquoted.proto.package"},3:{name:"punctuation.terminator.proto"}},match:"\\s*(package)\\s+([\\w.]+)\\s*(;)"},reserved:{begin:"(reserved)\\s+",beginCaptures:{1:{name:"keyword.other.proto"}},end:"(;)",endCaptures:{1:{name:"punctuation.terminator.proto"}},patterns:[{captures:{1:{name:"constant.numeric.proto"},3:{name:"keyword.other.proto"},4:{name:"constant.numeric.proto"}},match:"(\\d+)(\\s+(to)\\s+(\\d+))?"},{include:"#string"}]},rpcKeywords:{match:"\\b(stream|returns)\\b",name:"keyword.other.proto"},service:{begin:"(service)\\s+([A-Za-z][A-Za-z0-9_.]*)\\s*\\{?",beginCaptures:{1:{name:"keyword.other.proto"},2:{name:"entity.name.class.message.proto"}},end:"\\}",patterns:[{include:"#comments"},{include:"#optionStmt"},{include:"#method"}]},storagetypes:{match:"\\b(double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\\b",name:"storage.type.proto"},string:{match:`('([^']|\\')*')|("([^"]|\\")*")`,name:"string.quoted.double.proto"},subMsgOption:{begin:"\\{",end:"\\}",patterns:[{include:"#kv"},{include:"#comments"}]},syntax:{captures:{1:{name:"keyword.other.proto"},2:{name:"keyword.operator.assignment.proto"},3:{name:"string.quoted.double.proto.syntax"},4:{name:"punctuation.terminator.proto"}},match:'\\s*(syntax)\\s*(=)\\s*("proto[23]")\\s*(;)'}},scopeName:"source.proto"});var t=[e];export{t as default}; diff --git a/assets/chunks/pug.BWq4yR4F.js b/assets/chunks/pug.BWq4yR4F.js new file mode 100644 index 000000000..7b76ade9e --- /dev/null +++ b/assets/chunks/pug.BWq4yR4F.js @@ -0,0 +1 @@ +import e from"./javascript.Dch3xQiY.js";import n from"./css.CbYhyuC0.js";import t from"./sass.CMDmr8et.js";import a from"./scss.Dr-_CcBd.js";import i from"./stylus.DSrLtGYv.js";import s from"./coffee.t_LrLW_f.js";import l from"./html.CuK0VrWf.js";const c=Object.freeze({displayName:"Pug",name:"pug",patterns:[{comment:"Doctype declaration.",match:"^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",name:"meta.tag.sgml.doctype.html"},{begin:"^(\\s*)//-",comment:"Unbuffered (pug-only) comments.",end:"^(?!(\\1\\s)|\\s*$)",name:"comment.unbuffered.block.pug"},{begin:"^(\\s*)//",comment:"Buffered (html) comments.",end:"^(?!(\\1\\s)|\\s*$)",name:"string.comment.buffered.block.pug",patterns:[{captures:{1:{name:"invalid.illegal.comment.comment.block.pug"}},comment:"Buffered comments inside buffered comments will generate invalid html.",match:"^\\s*(//)(?!-)",name:"string.comment.buffered.block.pug"}]},{begin:"<!--",end:"--\\s*>",name:"comment.unbuffered.block.pug",patterns:[{match:"--",name:"invalid.illegal.comment.comment.block.pug"}]},{begin:"^(\\s*)-$",comment:"Unbuffered code block.",end:"^(?!(\\1\\s)|\\s*$)",name:"source.js",patterns:[{include:"source.js"}]},{begin:"^(\\s*)(script)((\\.$)|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",beginCaptures:{2:{name:"entity.name.tag.pug"}},comment:"Script tag with JavaScript code.",end:"^(?!(\\1\\s)|\\s*$)",name:"meta.tag.other",patterns:[{begin:"\\G(?=\\()",end:"$",patterns:[{include:"#tag_attributes"}]},{begin:"\\G(?=[.#])",end:"$",patterns:[{include:"#complete_tag"}]},{include:"source.js"}]},{begin:"^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",beginCaptures:{2:{name:"entity.name.tag.pug"}},comment:"Style tag with CSS code.",end:"^(?!(\\1\\s)|\\s*$)",name:"meta.tag.other",patterns:[{begin:"\\G(?=\\()",end:"$",patterns:[{include:"#tag_attributes"}]},{begin:"\\G(?=[.#])",end:"$",patterns:[{include:"#complete_tag"}]},{include:"source.css"}]},{begin:"^(\\s*):(sass)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.sass.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.sass.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.sass"}]},{begin:"^(\\s*):(scss)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.scss.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.css.scss.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.css.scss"}]},{begin:"^(\\s*):(less)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.less.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.less.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.less"}]},{begin:"^(\\s*):(stylus)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.stylus.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",patterns:[{include:"#tag_attributes"},{include:"source.stylus"}]},{begin:"^(\\s*):(coffee(-?script)?)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.coffeescript.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.coffeescript.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.coffee"}]},{begin:"^(\\s*):(uglify-js)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.js.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.js.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.js"}]},{begin:"^(\\s*)((:(?=.))|(:$))",beginCaptures:{4:{name:"invalid.illegal.empty.generic.filter.pug"}},comment:"Generic Pug filter.",end:"^(?!(\\1\\s)|\\s*$)",patterns:[{begin:"\\G(?<=:)(?=.)",end:"$",name:"name.generic.filter.pug",patterns:[{match:"\\G\\(",name:"invalid.illegal.name.generic.filter.pug"},{match:"[\\w-]",name:"constant.language.name.generic.filter.pug"},{include:"#tag_attributes"},{match:"\\W",name:"invalid.illegal.name.generic.filter.pug"}]}]},{begin:`^(\\s*)(?:(?=\\.$)|(?:(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\"(?:[^\\"]|(?:(?<!\\\\)\\\\\\"))*\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\"(?:[^\\"]|(?:(?<!\\\\)\\\\\\"))*\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))))`,beginCaptures:{2:{name:"meta.selector.css entity.other.attribute-name.id.css.pug"},3:{name:"meta.selector.css entity.other.attribute-name.class.css.pug"},4:{name:"meta.tag.other entity.name.tag.pug"}},comment:"Generated from dot_block_tag.py",end:"^(?!(\\1\\s)|\\s*$)",patterns:[{match:"\\.$",name:"storage.type.function.pug.dot-block-dot"},{include:"#tag_attributes"},{include:"#complete_tag"},{begin:"^(?=.)",end:"$",name:"text.block.pug",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]}]},{begin:"^\\s*",comment:"All constructs that generally span a single line starting with any number of white-spaces.",end:"$",patterns:[{include:"#inline_pug"},{include:"#blocks_and_includes"},{include:"#unbuffered_code"},{include:"#mixin_definition"},{include:"#mixin_call"},{include:"#flow_control"},{include:"#flow_control_each"},{include:"#case_conds"},{begin:"\\|",comment:"Tag pipe text line.",end:"$",name:"text.block.pipe.pug",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#printed_expression"},{begin:"\\G(?=(#[^\\{\\w-])|[^\\w.#])",comment:"Line starting with characters incompatible with tag name/id/class is standalone text.",end:"$",patterns:[{begin:"</?(?=[!#])",end:">|$",patterns:[{include:"#inline_pug"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#complete_tag"}]}],repository:{babel_parens:{begin:"\\(",end:"\\)|(({\\s*)?$)",patterns:[{include:"#babel_parens"},{include:"source.js"}]},blocks_and_includes:{captures:{1:{name:"storage.type.import.include.pug"},4:{name:"variable.control.import.include.pug"}},comment:"Template blocks and includes.",match:"(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",name:"meta.first-class.pug"},case_conds:{begin:"(default|when)((\\s+|(?=:))|$)",captures:{1:{name:"storage.type.function.pug"}},comment:"Pug case conditionals.",end:"$",name:"meta.control.flow.pug",patterns:[{begin:"\\G(?!:)",end:"(?=:\\s+)|$",name:"js.embedded.control.flow.pug",patterns:[{include:"#case_when_paren"},{include:"source.js"}]},{begin:":\\s+",end:"$",name:"tag.case.control.flow.pug",patterns:[{include:"#complete_tag"}]}]},case_when_paren:{begin:"\\(",end:"\\)",name:"js.when.control.flow.pug",patterns:[{include:"#case_when_paren"},{match:":",name:"invalid.illegal.name.tag.pug"},{include:"source.js"}]},complete_tag:{begin:"(?=[\\w.#])|(:\\s*)",end:"(\\.?$)|(?=:.)",endCaptures:{1:{name:"storage.type.function.pug.dot-block-dot"}},patterns:[{include:"#blocks_and_includes"},{include:"#unbuffered_code"},{include:"#mixin_call"},{include:"#flow_control"},{include:"#flow_control_each"},{match:"(?<=:)\\w.*$",name:"invalid.illegal.name.tag.pug"},{include:"#tag_name"},{include:"#tag_id"},{include:"#tag_classes"},{include:"#tag_attributes"},{include:"#tag_mixin_attributes"},{captures:{2:{name:"invalid.illegal.end.tag.pug"},4:{name:"invalid.illegal.end.tag.pug"}},match:"((\\.)\\s+$)|((:)\\s*$)"},{include:"#printed_expression"},{include:"#tag_text"}]},embedded_html:{begin:"(?=<[^>]*>)",end:"$|(?=>)",name:"html",patterns:[{include:"text.html.basic"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},flow_control:{begin:"(for|if|else if|else|until|while|unless|case)(\\s+|$)",captures:{1:{name:"storage.type.function.pug"}},comment:"Pug control flow.",end:"$",name:"meta.control.flow.pug",patterns:[{begin:"",end:"$",name:"js.embedded.control.flow.pug",patterns:[{include:"source.js"}]}]},flow_control_each:{begin:"(each)(\\s+|$)",captures:{1:{name:"storage.type.function.pug"}},end:"$",name:"meta.control.flow.pug.each",patterns:[{match:"([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",name:"variable.other.pug.each-var"},{begin:"",end:"$",name:"js.embedded.control.flow.pug",patterns:[{include:"source.js"}]}]},html_entity:{patterns:[{match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.html.text.pug"},{match:"[<>&]",name:"invalid.illegal.html_entity.text.pug"}]},inline_pug:{begin:"(?<!\\\\)(#\\[)",captures:{1:{name:"entity.name.function.pug"},2:{name:"entity.name.function.pug"}},end:"(\\])",name:"inline.pug",patterns:[{include:"#inline_pug"},{include:"#mixin_call"},{begin:"(?<!\\])(?=[\\w.#])|(:\\s*)",end:"(?=\\]|(:.)|=|\\s)",name:"tag.inline.pug",patterns:[{include:"#tag_name"},{include:"#tag_id"},{include:"#tag_classes"},{include:"#tag_attributes"},{include:"#tag_mixin_attributes"},{include:"#inline_pug"},{match:"\\[",name:"invalid.illegal.tag.pug"}]},{include:"#unbuffered_code"},{include:"#printed_expression"},{match:"\\[",name:"invalid.illegal.tag.pug"},{include:"#inline_pug_text"}]},inline_pug_text:{begin:"",end:"(?=\\])",patterns:[{begin:"\\[",end:"\\]",patterns:[{include:"#inline_pug_text"}]},{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},interpolated_error:{match:"(?<!\\\\)[#!]\\{(?=[^}]*$)",name:"invalid.illegal.tag.pug"},interpolated_value:{begin:"(?<!\\\\)[#!]\\{(?=.*?\\})",end:"\\}",name:"string.interpolated.pug",patterns:[{match:"{",name:"invalid.illegal.tag.pug"},{include:"source.js"}]},js_braces:{begin:"\\{",end:"\\}",patterns:[{include:"#js_braces"},{include:"source.js"}]},js_brackets:{begin:"\\[",end:"\\]",patterns:[{include:"#js_brackets"},{include:"source.js"}]},js_parens:{begin:"\\(",end:"\\)",patterns:[{include:"#js_parens"},{include:"source.js"}]},mixin_call:{begin:"((?:mixin\\s+)|\\+)([\\w-]+)",beginCaptures:{1:{name:"storage.type.function.pug"},2:{name:"meta.tag.other entity.name.function.pug"}},end:"(?!\\()|$",patterns:[{begin:"(?<!\\))\\(",end:"\\)",name:"args.mixin.pug",patterns:[{include:"#js_parens"},{captures:{1:{name:"meta.tag.other entity.other.attribute-name.tag.pug"}},match:"([^\\s(),=/]+)\\s*=\\s*"},{include:"source.js"}]},{include:"#tag_attributes"}]},mixin_definition:{captures:{1:{name:"storage.type.function.pug"},2:{name:"meta.tag.other entity.name.function.pug"},3:{name:"punctuation.definition.parameters.begin.js"},4:{name:"variable.parameter.function.js"},5:{name:"punctuation.definition.parameters.begin.js"}},match:"(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$"},printed_expression:{begin:"(!?\\=)\\s*",captures:{1:{name:"constant"}},end:"(?=\\])|$",name:"source.js",patterns:[{include:"#js_brackets"},{include:"source.js"}]},tag_attribute_name:{captures:{1:{name:"entity.other.attribute-name.tag.pug"}},match:"([^\\s(),=/!]+)\\s*"},tag_attribute_name_paren:{begin:"\\(\\s*",end:"\\)",name:"entity.other.attribute-name.tag.pug",patterns:[{include:"#tag_attribute_name_paren"},{include:"#tag_attribute_name"}]},tag_attributes:{begin:"(\\(\\s*)",captures:{1:{name:"constant.name.attribute.tag.pug"}},end:"(\\))",name:"meta.tag.other",patterns:[{include:"#tag_attribute_name_paren"},{include:"#tag_attribute_name"},{match:"!(?!=)",name:"invalid.illegal.tag.pug"},{begin:"=\\s*",end:"$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",name:"attribute_value",patterns:[{include:"#js_parens"},{include:"#js_brackets"},{include:"#js_braces"},{include:"source.js"}]},{begin:"(?<=[%&*\\-+~|<>:?/])\\s+",end:"$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",name:"attribute_value2",patterns:[{include:"#js_parens"},{include:"#js_brackets"},{include:"#js_braces"},{include:"source.js"}]}]},tag_classes:{captures:{1:{name:"invalid.illegal.tag.pug"}},match:"\\.([^\\w-])?[\\w-]*",name:"meta.selector.css entity.other.attribute-name.class.css.pug"},tag_id:{match:"#[\\w-]+",name:"meta.selector.css entity.other.attribute-name.id.css.pug"},tag_mixin_attributes:{begin:"(&attributes\\()",captures:{1:{name:"entity.name.function.pug"}},end:"(\\))",name:"meta.tag.other",patterns:[{match:"attributes(?=\\))",name:"storage.type.keyword.pug"},{include:"source.js"}]},tag_name:{begin:"([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",end:"(\\G(?<!\\5[^\\w-]))|\\}|$",name:"meta.tag.other entity.name.tag.pug",patterns:[{begin:"\\G(?<=\\{)",end:"(?=\\})",name:"meta.tag.other entity.name.tag.pug",patterns:[{match:"{",name:"invalid.illegal.tag.pug"},{include:"source.js"}]}]},tag_text:{begin:"(?=.)",end:"$",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},unbuffered_code:{begin:"(-|(([a-zA-Z0-9_]+)\\s+=))",beginCaptures:{3:{name:"variable.parameter.javascript.embedded.pug"}},comment:"name = function() {}",end:"(?=\\])|(({\\s*)?$)",name:"source.js",patterns:[{include:"#js_brackets"},{include:"#babel_parens"},{include:"source.js"}]}},scopeName:"text.pug",embeddedLangs:["javascript","css","sass","scss","stylus","coffee","html"],aliases:["jade"]});var b=[...e,...n,...t,...a,...i,...s,...l,c];export{b as default}; diff --git a/assets/chunks/puppet.37ic6j3l.js b/assets/chunks/puppet.37ic6j3l.js new file mode 100644 index 000000000..fd08c7995 --- /dev/null +++ b/assets/chunks/puppet.37ic6j3l.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Puppet",fileTypes:["pp"],foldingStartMarker:"(^\\s*/\\*|(\\{|\\[|\\()\\s*$)",foldingStopMarker:"(\\*/|^\\s*(\\}|\\]|\\)))",name:"puppet",patterns:[{include:"#line_comment"},{include:"#constants"},{begin:"^\\s*/\\*",end:"\\*/",name:"comment.block.puppet"},{begin:"\\b(node)\\b",captures:{1:{name:"storage.type.puppet"},2:{name:"entity.name.type.class.puppet"}},end:"(?={)",name:"meta.definition.class.puppet",patterns:[{match:"\\bdefault\\b",name:"keyword.puppet"},{include:"#strings"},{include:"#regex-literal"}]},{begin:"\\b(class)\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\s*",captures:{1:{name:"storage.type.puppet"},2:{name:"entity.name.type.class.puppet"}},end:"(?={)",name:"meta.definition.class.puppet",patterns:[{begin:"\\b(inherits)\\b\\s+",captures:{1:{name:"storage.modifier.puppet"}},end:"(?=\\(|{)",name:"meta.definition.class.inherits.puppet",patterns:[{match:'\\b((?:[-_A-Za-z0-9".]+::)*[-_A-Za-z0-9".]+)\\b',name:"support.type.puppet"}]},{include:"#line_comment"},{include:"#resource-parameters"},{include:"#parameter-default-types"}]},{begin:"^\\s*(plan)\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\s*",captures:{1:{name:"storage.type.puppet"},2:{name:"entity.name.type.plan.puppet"}},end:"(?={)",name:"meta.definition.plan.puppet",patterns:[{include:"#line_comment"},{include:"#resource-parameters"},{include:"#parameter-default-types"}]},{begin:"^\\s*(define|function)\\s+((?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\s*(\\()",captures:{1:{name:"storage.type.function.puppet"},2:{name:"entity.name.function.puppet"}},end:"(?={)",name:"meta.function.puppet",patterns:[{include:"#line_comment"},{include:"#resource-parameters"},{include:"#parameter-default-types"}]},{captures:{1:{name:"keyword.control.puppet"}},match:"\\b(case|else|elsif|if|unless)(?!::)\\b"},{include:"#keywords"},{include:"#resource-definition"},{include:"#heredoc"},{include:"#strings"},{include:"#puppet-datatypes"},{include:"#array"},{match:'((\\$?)"?[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*"?):(?=\\s+|$)',name:"entity.name.section.puppet"},{include:"#numbers"},{include:"#variable"},{begin:"\\b(import|include|contain|require)\\s+(?!.*=>)",beginCaptures:{1:{name:"keyword.control.import.include.puppet"}},contentName:"variable.parameter.include.puppet",end:"(?=\\s|$)",name:"meta.include.puppet"},{match:"\\b\\w+\\s*(?==>)\\s*",name:"constant.other.key.puppet"},{match:"(?<={)\\s*\\w+\\s*(?=})",name:"constant.other.bareword.puppet"},{match:"\\b(alert|crit|debug|defined|emerg|err|escape|fail|failed|file|generate|gsub|info|notice|package|realize|search|tag|tagged|template|warning)\\b(?!.*{)",name:"support.function.puppet"},{match:"=>",name:"punctuation.separator.key-value.puppet"},{match:"->",name:"keyword.control.orderarrow.puppet"},{match:"~>",name:"keyword.control.notifyarrow.puppet"},{include:"#regex-literal"}],repository:{array:{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.array.begin.puppet"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.puppet"}},name:"meta.array.puppet",patterns:[{match:"\\s*,\\s*"},{include:"#parameter-default-types"},{include:"#line_comment"}]},constants:{patterns:[{match:"\\b(absent|directory|false|file|present|running|stopped|true)\\b(?!.*{)",name:"constant.language.puppet"}]},"double-quoted-string":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.puppet"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.puppet"}},name:"string.quoted.double.interpolated.puppet",patterns:[{include:"#escaped_char"},{include:"#interpolated_puppet"}]},escaped_char:{match:"\\\\.",name:"constant.character.escape.puppet"},function_call:{begin:"([a-zA-Z_][a-zA-Z0-9_]*)(\\()",end:"\\)",name:"meta.function-call.puppet",patterns:[{include:"#parameter-default-types"},{match:",",name:"punctuation.separator.parameters.puppet"}]},hash:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.hash.begin.puppet"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.hash.end.puppet"}},name:"meta.hash.puppet",patterns:[{match:"\\b\\w+\\s*(?==>)\\s*",name:"constant.other.key.puppet"},{include:"#parameter-default-types"},{include:"#line_comment"}]},heredoc:{patterns:[{begin:'@\\([[:blank:]]*"([^:\\/) \\t]+)"[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\)',beginCaptures:{0:{name:"punctuation.definition.string.begin.puppet"}},end:"^[[:blank:]]*(\\|[[:blank:]]*-|\\||-)?[[:blank:]]*\\1",endCaptures:{0:{name:"punctuation.definition.string.end.puppet"}},name:"string.interpolated.heredoc.puppet",patterns:[{include:"#escaped_char"},{include:"#interpolated_puppet"}]},{begin:"@\\([[:blank:]]*([^:\\/) \\t]+)[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\)",beginCaptures:{0:{name:"punctuation.definition.string.begin.puppet"}},end:"^[[:blank:]]*(\\|[[:blank:]]*-|\\||-)?[[:blank:]]*\\1",endCaptures:{0:{name:"punctuation.definition.string.end.puppet"}},name:"string.unquoted.heredoc.puppet"}]},interpolated_puppet:{patterns:[{begin:"(\\${)(\\d+)",beginCaptures:{1:{name:"punctuation.section.embedded.begin.puppet"},2:{name:"source.puppet variable.other.readwrite.global.pre-defined.puppet"}},contentName:"source.puppet",end:"}",endCaptures:{0:{name:"punctuation.section.embedded.end.puppet"}},name:"meta.embedded.line.puppet",patterns:[{include:"$self"}]},{begin:"(\\${)(_[a-zA-Z0-9_]*)",beginCaptures:{1:{name:"punctuation.section.embedded.begin.puppet"},2:{name:"source.puppet variable.other.readwrite.global.puppet"}},contentName:"source.puppet",end:"}",endCaptures:{0:{name:"punctuation.section.embedded.end.puppet"}},name:"meta.embedded.line.puppet",patterns:[{include:"$self"}]},{begin:"(\\${)(([a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)*)",beginCaptures:{1:{name:"punctuation.section.embedded.begin.puppet"},2:{name:"source.puppet variable.other.readwrite.global.puppet"}},contentName:"source.puppet",end:"}",endCaptures:{0:{name:"punctuation.section.embedded.end.puppet"}},name:"meta.embedded.line.puppet",patterns:[{include:"$self"}]},{begin:"\\${",beginCaptures:{0:{name:"punctuation.section.embedded.begin.puppet"}},contentName:"source.puppet",end:"}",endCaptures:{0:{name:"punctuation.section.embedded.end.puppet"}},name:"meta.embedded.line.puppet",patterns:[{include:"$self"}]}]},keywords:{captures:{1:{name:"keyword.puppet"}},match:"\\b(undef)\\b"},line_comment:{patterns:[{captures:{1:{name:"comment.line.number-sign.puppet"},2:{name:"punctuation.definition.comment.puppet"}},match:"^((#).*$\\n?)",name:"meta.comment.full-line.puppet"},{captures:{1:{name:"punctuation.definition.comment.puppet"}},match:"(#).*$\\n?",name:"comment.line.number-sign.puppet"}]},nested_braces:{begin:"\\{",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\}",patterns:[{include:"#escaped_char"},{include:"#nested_braces"}]},nested_braces_interpolated:{begin:"\\{",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\}",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_braces_interpolated"}]},nested_brackets:{begin:"\\[",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\]",patterns:[{include:"#escaped_char"},{include:"#nested_brackets"}]},nested_brackets_interpolated:{begin:"\\[",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\]",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_brackets_interpolated"}]},nested_parens:{begin:"\\(",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\)",patterns:[{include:"#escaped_char"},{include:"#nested_parens"}]},nested_parens_interpolated:{begin:"\\(",captures:{1:{name:"punctuation.section.scope.puppet"}},end:"\\)",patterns:[{include:"#escaped_char"},{include:"#variable"},{include:"#nested_parens_interpolated"}]},numbers:{patterns:[{comment:"HEX 0x 0-f",match:"(?<!\\w|\\d)([-+]?)(?i:0x)(?i:[0-9a-f])+(?!\\w|\\d)",name:"constant.numeric.hexadecimal.puppet"},{comment:"INTEGERS [(+|-)] digits [e [(+|-)] digits]",match:"(?<!\\w|\\.)([-+]?)(?<!\\d)\\d+(?i:e(\\+|-){0,1}\\d+){0,1}(?!\\w|\\d|\\.)",name:"constant.numeric.integer.puppet"},{comment:"FLOAT [(+|-)] digits . digits [e [(+|-)] digits]",match:"(?<!\\w)([-+]?)\\d+\\.\\d+(?i:e(\\+|-){0,1}\\d+){0,1}(?!\\w|\\d)",name:"constant.numeric.integer.puppet"}]},"parameter-default-types":{patterns:[{include:"#strings"},{include:"#numbers"},{include:"#variable"},{include:"#hash"},{include:"#array"},{include:"#function_call"},{include:"#constants"},{include:"#puppet-datatypes"}]},"puppet-datatypes":{patterns:[{comment:"Puppet Data type",match:"(?<![a-zA-Z\\$])([A-Z][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])",name:"storage.type.puppet"}]},"regex-literal":{comment:"Puppet Regular expression literal without interpolation",match:"(\\/)(.+?)(?:[^\\\\]\\/)",name:"string.regexp.literal.puppet"},"resource-definition":{begin:"(?:^|\\b)((?#Toplevel Bareword)::[a-z][a-z0-9_]*|(?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\s*({)\\s*",beginCaptures:{1:{name:"meta.definition.resource.puppet storage.type.puppet"}},contentName:"entity.name.section.puppet",end:":",patterns:[{include:"#strings"},{include:"#variable"},{include:"#array"}]},"resource-parameters":{patterns:[{captures:{1:{name:"variable.other.puppet"},2:{name:"punctuation.definition.variable.puppet"}},match:"((\\$+)[a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=,|\\))",name:"meta.function.argument.puppet"},{begin:"((\\$+)[a-zA-Z_][a-zA-Z0-9_]*)(?:\\s*(=)\\s*)\\s*",captures:{1:{name:"variable.other.puppet"},2:{name:"punctuation.definition.variable.puppet"},3:{name:"keyword.operator.assignment.puppet"}},end:"(?=,|\\))",name:"meta.function.argument.puppet",patterns:[{include:"#parameter-default-types"}]}]},"single-quoted-string":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.puppet"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.puppet"}},name:"string.quoted.single.puppet",patterns:[{include:"#escaped_char"}]},strings:{patterns:[{include:"#double-quoted-string"},{include:"#single-quoted-string"}]},variable:{patterns:[{captures:{1:{name:"punctuation.definition.variable.puppet"}},match:"(\\$)(\\d+)",name:"variable.other.readwrite.global.pre-defined.puppet"},{captures:{1:{name:"punctuation.definition.variable.puppet"}},match:"(\\$)_[a-zA-Z0-9_]*",name:"variable.other.readwrite.global.puppet"},{captures:{1:{name:"punctuation.definition.variable.puppet"}},match:"(\\$)(([a-z][a-zA-Z0-9_]*)?(?:::[a-z][a-zA-Z0-9_]*)*)",name:"variable.other.readwrite.global.puppet"}]}},scopeName:"source.puppet"});var n=[e];export{n as default}; diff --git a/assets/chunks/purescript.CfPQhs6g.js b/assets/chunks/purescript.CfPQhs6g.js new file mode 100644 index 000000000..48eda62ca --- /dev/null +++ b/assets/chunks/purescript.CfPQhs6g.js @@ -0,0 +1,7 @@ +const e=Object.freeze({displayName:"PureScript",fileTypes:["purs"],name:"purescript",patterns:[{captures:{1:{name:"punctuation.definition.entity.purescript"},2:{name:"punctuation.definition.entity.purescript"}},match:"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)",name:"keyword.operator.function.infix.purescript"},{begin:"^\\s*\\b(module)(?!')\\b",beginCaptures:{1:{name:"keyword.other.purescript"}},end:"(where)",endCaptures:{1:{name:"keyword.other.purescript"}},name:"meta.declaration.module.purescript",patterns:[{include:"#comments"},{include:"#module_name"},{include:"#module_exports"},{match:"[a-z]+",name:"invalid.purescript"}]},{begin:"^\\s*\\b(class)(?!')\\b",beginCaptures:{1:{name:"storage.type.class.purescript"}},end:"\\b(where)\\b|$",endCaptures:{1:{name:"keyword.other.purescript"}},name:"meta.declaration.typeclass.purescript",patterns:[{include:"#type_signature"}]},{begin:"^\\s*\\b(else\\s+)?(derive\\s+)?(newtype\\s+)?(instance)(?!')\\b",beginCaptures:{1:{name:"keyword.other.purescript"},2:{name:"keyword.other.purescript"},3:{name:"keyword.other.purescript"},4:{name:"keyword.other.purescript"}},contentName:"meta.type-signature.purescript",end:"\\b(where)\\b|$",endCaptures:{1:{name:"keyword.other.purescript"}},name:"meta.declaration.instance.purescript",patterns:[{include:"#type_signature"}]},{begin:"^(\\s*)(foreign)\\s+(import)\\s+(data)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",beginCaptures:{2:{name:"keyword.other.purescript"},3:{name:"keyword.other.purescript"},4:{name:"keyword.other.purescript"},5:{name:"entity.name.type.purescript"},6:{name:"keyword.other.double-colon.purescript"}},contentName:"meta.kind-signature.purescript",end:"^(?!\\1[ \\t]|[ \\t]*$)",name:"meta.foreign.data.purescript",patterns:[{include:"#double_colon"},{include:"#kind_signature"}]},{begin:"^(\\s*)(foreign)\\s+(import)\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",beginCaptures:{2:{name:"keyword.other.purescript"},3:{name:"keyword.other.purescript"},4:{name:"entity.name.function.purescript"}},contentName:"meta.type-signature.purescript",end:"^(?!\\1[ \\t]|[ \\t]*$)",name:"meta.foreign.purescript",patterns:[{include:"#double_colon"},{include:"#type_signature"}]},{begin:"^\\s*\\b(import)(?!')\\b",beginCaptures:{1:{name:"keyword.other.purescript"}},end:"($|(?=--))",name:"meta.import.purescript",patterns:[{include:"#module_name"},{include:"#module_exports"},{captures:{1:{name:"keyword.other.purescript"}},match:"\\b(as|hiding)\\b"}]},{begin:"^(\\s)*(data|newtype)\\s+(.+?)\\s*(?=\\=|$)",beginCaptures:{2:{name:"storage.type.data.purescript"},3:{name:"meta.type-signature.purescript",patterns:[{include:"#type_signature"}]}},end:"^(?!\\1[ \\t]|[ \\t]*$)",name:"meta.declaration.type.data.purescript",patterns:[{include:"#comments"},{captures:{0:{name:"keyword.operator.assignment.purescript"}},match:"="},{captures:{1:{patterns:[{include:"#data_ctor"}]},2:{name:"meta.type-signature.purescript",patterns:[{include:"#type_signature"}]}},match:"(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))"},{captures:{0:{name:"punctuation.separator.pipe.purescript"}},match:"\\|"},{include:"#record_types"}]},{begin:"^(\\s)*(type)\\s+(.+?)\\s*(?=\\=|$)",beginCaptures:{2:{name:"storage.type.data.purescript"},3:{name:"meta.type-signature.purescript",patterns:[{include:"#type_signature"}]}},contentName:"meta.type-signature.purescript",end:"^(?!\\1[ \\t]|[ \\t]*$)",name:"meta.declaration.type.type.purescript",patterns:[{captures:{0:{name:"keyword.operator.assignment.purescript"}},match:"="},{include:"#type_signature"},{include:"#record_types"},{include:"#comments"}]},{match:"^\\s*\\b(derive|where|data|type|newtype|infix[lr]?|foreign(\\s+import)?(\\s+data)?)(?!')\\b",name:"keyword.other.purescript"},{match:"\\?(?:[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",name:"entity.name.function.typed-hole.purescript"},{match:"^\\s*\\b(data|type|newtype)(?!')\\b",name:"storage.type.purescript"},{match:"\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\s*(:|=)))\\b",name:"keyword.control.purescript"},{match:"\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)",name:"constant.numeric.hex.purescript"},{captures:{0:{name:"constant.numeric.decimal.purescript"},1:{name:"meta.delimiter.decimal.period.purescript"},2:{name:"meta.delimiter.decimal.period.purescript"},3:{name:"meta.delimiter.decimal.period.purescript"},4:{name:"meta.delimiter.decimal.period.purescript"},5:{name:"meta.delimiter.decimal.period.purescript"},6:{name:"meta.delimiter.decimal.period.purescript"}},match:`(?x) +(?<!\\$)(?: +(?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| +(?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| +(?:\\b[0-9]+(\\.)[0-9]+\\b)| +(?:\\b[0-9]+\\b(?!\\.)) +)(?!\\$)`,name:"constant.numeric.decimal.purescript"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.purescript"},{match:"\\b(([0-9]+_?)*[0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\\b",name:"constant.numeric.purescript"},{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.purescript"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.purescript"}},name:"string.quoted.triple.purescript"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.purescript"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.purescript"}},name:"string.quoted.double.purescript",patterns:[{include:"#characters"},{begin:"\\\\\\s",beginCaptures:{0:{name:"markup.other.escape.newline.begin.purescript"}},end:"\\\\",endCaptures:{0:{name:"markup.other.escape.newline.end.purescript"}},patterns:[{match:"\\S+",name:"invalid.illegal.character-not-allowed-here.purescript"}]}]},{match:"\\\\$",name:"markup.other.escape.newline.purescript"},{captures:{1:{name:"punctuation.definition.string.begin.purescript"},2:{patterns:[{include:"#characters"}]},7:{name:"punctuation.definition.string.end.purescript"}},match:`(')((?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_])))(')`,name:"string.quoted.single.purescript"},{include:"#function_type_declaration"},{captures:{1:{patterns:[{include:"$self"}]},2:{name:"keyword.other.double-colon.purescript"},3:{name:"meta.type-signature.purescript",patterns:[{include:"#type_signature"}]}},match:"\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)"},{begin:"^(\\s*)(?:(::|∷))",beginCaptures:{2:{name:"keyword.other.double-colon.purescript"}},end:"^(?!\\1[ \\t]*|[ \\t]*$)",patterns:[{include:"#type_signature"}]},{include:"#data_ctor"},{include:"#comments"},{include:"#infix_op"},{match:"\\<-|-\\>",name:"keyword.other.arrow.purescript"},{match:"[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",name:"keyword.operator.purescript"},{match:",",name:"punctuation.separator.comma.purescript"}],repository:{block_comment:{patterns:[{applyEndPatternLast:1,begin:"\\{-\\s*\\|",beginCaptures:{0:{name:"punctuation.definition.comment.documentation.purescript"}},end:"-\\}",endCaptures:{0:{name:"punctuation.definition.comment.documentation.purescript"}},name:"comment.block.documentation.purescript",patterns:[{include:"#block_comment"}]},{applyEndPatternLast:1,begin:"\\{-",beginCaptures:{0:{name:"punctuation.definition.comment.purescript"}},end:"-\\}",name:"comment.block.purescript",patterns:[{include:"#block_comment"}]}]},characters:{patterns:[{captures:{1:{name:"constant.character.escape.purescript"},2:{name:"constant.character.escape.octal.purescript"},3:{name:"constant.character.escape.hexadecimal.purescript"},4:{name:"constant.character.escape.control.purescript"}},match:`(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))`}]},class_constraint:{patterns:[{captures:{1:{patterns:[{match:"\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",name:"entity.name.type.purescript"}]},2:{patterns:[{include:"#type_name"},{include:"#generic_type"}]}},match:"(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",name:"meta.class-constraint.purescript"}]},comments:{patterns:[{begin:"(^[ \\t]+)?(?=--+\\s+\\|)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.purescript"}},end:"(?!\\G)",patterns:[{begin:"(--+)\\s+(\\|)",beginCaptures:{1:{name:"punctuation.definition.comment.purescript"},2:{name:"punctuation.definition.comment.documentation.purescript"}},end:"\\n",name:"comment.line.double-dash.documentation.purescript"}]},{begin:"(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.purescript"}},end:"(?!\\G)",patterns:[{begin:"--",beginCaptures:{0:{name:"punctuation.definition.comment.purescript"}},end:"\\n",name:"comment.line.double-dash.purescript"}]},{include:"#block_comment"}]},data_ctor:{patterns:[{match:"\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",name:"entity.name.tag.purescript"}]},double_colon:{patterns:[{match:"(?:::|∷)",name:"keyword.other.double-colon.purescript"}]},function_type_declaration:{patterns:[{begin:"^(\\s*)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(?:(::|∷)(?!.*<-))",beginCaptures:{2:{name:"entity.name.function.purescript"},3:{name:"keyword.other.double-colon.purescript"}},contentName:"meta.type-signature.purescript",end:"^(?!\\1[ \\t]|[ \\t]*$)",name:"meta.function.type-declaration.purescript",patterns:[{include:"#double_colon"},{include:"#type_signature"}]}]},generic_type:{patterns:[{match:"\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",name:"variable.other.generic-type.purescript"}]},infix_op:{patterns:[{match:"(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",name:"entity.name.function.infix.purescript"}]},kind_signature:{patterns:[{match:"\\*",name:"keyword.other.star.purescript"},{match:"!",name:"keyword.other.exclaimation-point.purescript"},{match:"#",name:"keyword.other.pound-sign.purescript"},{match:"->|→",name:"keyword.other.arrow.purescript"}]},module_exports:{patterns:[{begin:"\\(",end:"\\)",name:"meta.declaration.exports.purescript",patterns:[{include:"#comments"},{match:"\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",name:"entity.name.function.purescript"},{include:"#type_name"},{match:",",name:"punctuation.separator.comma.purescript"},{include:"#infix_op"},{match:"\\(.*?\\)",name:"meta.other.constructor-list.purescript"}]}]},module_name:{patterns:[{match:"(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)*[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.?",name:"support.other.module.purescript"}]},record_field_declaration:{patterns:[{begin:"([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",beginCaptures:{1:{patterns:[{match:"(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",name:"entity.other.attribute-name.purescript"}]},2:{name:"keyword.other.double-colon.purescript"}},contentName:"meta.type-signature.purescript",end:"(?=([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)|})",name:"meta.record-field.type-declaration.purescript",patterns:[{include:"#type_signature"},{include:"#record_types"}]}]},record_types:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"keyword.operator.type.record.begin.purescript"}},end:"\\}",endCaptures:{0:{name:"keyword.operator.type.record.end.purescript"}},name:"meta.type.record.purescript",patterns:[{match:",",name:"punctuation.separator.comma.purescript"},{include:"#record_field_declaration"},{include:"#comments"}]}]},type_name:{patterns:[{match:"\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",name:"entity.name.type.purescript"}]},type_signature:{patterns:[{captures:{1:{patterns:[{include:"#class_constraint"}]},4:{name:"keyword.other.big-arrow.purescript"}},match:"(?:(?:\\()(?:(?<classConstraints>(?:(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))(?:\\s*(?:,)\\s*\\g<classConstraints>)?))(?:\\))(?:\\s*(=>|<=|⇐|⇒)))",name:"meta.class-constraints.purescript"},{captures:{1:{patterns:[{include:"#class_constraint"}]},4:{name:"keyword.other.big-arrow.purescript"}},match:"((?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))\\s*(=>|<=|⇐|⇒)",name:"meta.class-constraints.purescript"},{match:"->|→",name:"keyword.other.arrow.purescript"},{match:"=>|⇒",name:"keyword.other.big-arrow.purescript"},{match:"<=|⇐",name:"keyword.other.big-arrow-left.purescript"},{match:"forall|∀",name:"keyword.other.forall.purescript"},{include:"#generic_type"},{include:"#type_name"},{include:"#comments"}]}},scopeName:"source.purescript"});var t=[e];export{t as default}; diff --git a/assets/chunks/python.DwuVtWc2.js b/assets/chunks/python.DwuVtWc2.js new file mode 100644 index 000000000..5948a2b8f --- /dev/null +++ b/assets/chunks/python.DwuVtWc2.js @@ -0,0 +1,518 @@ +const e=Object.freeze({displayName:"Python",name:"python",patterns:[{include:"#statement"},{include:"#expression"}],repository:{"annotated-parameter":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (:) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.annotation.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"},{match:"=(?!=)",name:"keyword.operator.assignment.python"}]},"assignment-operator":{match:`(?x) +<<= | >>= | //= | \\*\\*= +| \\+= | -= | /= | @= +| \\*= | %= | ~= | \\^= | &= | \\|= +| =(?!=) +`,name:"keyword.operator.assignment.python"},backticks:{begin:"\\`",end:"(?:\\`|(?<!\\\\)(\\n))",name:"invalid.deprecated.backtick.python",patterns:[{include:"#expression"}]},"builtin-callables":{patterns:[{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#builtin-exceptions"},{include:"#builtin-functions"},{include:"#builtin-types"}]},"builtin-exceptions":{match:`(?x) (?<!\\.) \\b( +( +Arithmetic | Assertion | Attribute | Buffer | BlockingIO +| BrokenPipe | ChildProcess +| (Connection (Aborted | Refused | Reset)?) +| EOF | Environment | FileExists | FileNotFound +| FloatingPoint | IO | Import | Indentation | Index | Interrupted +| IsADirectory | NotADirectory | Permission | ProcessLookup +| Timeout +| Key | Lookup | Memory | Name | NotImplemented | OS | Overflow +| Reference | Runtime | Recursion | Syntax | System +| Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)? +| Value | Windows | ZeroDivision | ModuleNotFound +) Error +| +((Pending)?Deprecation | Runtime | Syntax | User | Future | Import +| Unicode | Bytes | Resource +)? Warning +| +SystemExit | Stop(Async)?Iteration +| KeyboardInterrupt +| GeneratorExit | (Base)?Exception +)\\b +`,name:"support.type.exception.python"},"builtin-functions":{patterns:[{match:`(?x) +(?<!\\.) \\b( +__import__ | abs | aiter | all | any | anext | ascii | bin +| breakpoint | callable | chr | compile | copyright | credits +| delattr | dir | divmod | enumerate | eval | exec | exit +| filter | format | getattr | globals | hasattr | hash | help +| hex | id | input | isinstance | issubclass | iter | len +| license | locals | map | max | memoryview | min | next +| oct | open | ord | pow | print | quit | range | reload | repr +| reversed | round | setattr | sorted | sum | vars | zip +)\\b +`,name:"support.function.builtin.python"},{match:`(?x) +(?<!\\.) \\b( +file | reduce | intern | raw_input | unicode | cmp | basestring +| execfile | long | xrange +)\\b +`,name:"variable.legacy.builtin.python"}]},"builtin-possible-callables":{patterns:[{include:"#builtin-callables"},{include:"#magic-names"}]},"builtin-types":{match:`(?x) +(?<!\\.) \\b( +bool | bytearray | bytes | classmethod | complex | dict +| float | frozenset | int | list | object | property +| set | slice | staticmethod | str | tuple | type + +(?# Although 'super' is not a type, it's related to types, +and is special enough to be highlighted differently from +other built-ins) +| super +)\\b +`,name:"support.type.python"},"call-wrapper-inheritance":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:"same as a function call, but in inheritance context",end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#inheritance-name"},{include:"#function-arguments"}]},"class-declaration":{patterns:[{begin:`(?x) +\\s*(class)\\s+ +(?= +[[:alpha:]_]\\w* \\s* (:|\\() +) +`,beginCaptures:{1:{name:"storage.type.class.python"}},end:"(:)",endCaptures:{1:{name:"punctuation.section.class.begin.python"}},name:"meta.class.python",patterns:[{include:"#class-name"},{include:"#class-inheritance"}]}]},"class-inheritance":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.inheritance.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.inheritance.end.python"}},name:"meta.class.inheritance.python",patterns:[{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.arguments.python"},{match:",",name:"punctuation.separator.inheritance.python"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{match:"\\bmetaclass\\b",name:"support.type.metaclass.python"},{include:"#illegal-names"},{include:"#class-kwarg"},{include:"#call-wrapper-inheritance"},{include:"#expression-base"},{include:"#member-access-class"},{include:"#inheritance-identifier"}]},"class-kwarg":{captures:{1:{name:"entity.other.inherited-class.python variable.parameter.class.python"},2:{name:"keyword.operator.assignment.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\s*(=)(?!=) +`},"class-name":{patterns:[{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.type.class.python"}]},codetags:{captures:{1:{name:"keyword.codetag.notation.python"}},match:"(?:\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b)"},comments:{patterns:[{begin:`(?x) +(?: +\\# \\s* (type:) +\\s*+ (?# we want \`\\s*+\` which is possessive quantifier since +we do not actually want to backtrack when matching +whitespace here) +(?! $ | \\#) +) +`,beginCaptures:{0:{name:"meta.typehint.comment.python"},1:{name:"comment.typehint.directive.notation.python"}},contentName:"meta.typehint.comment.python",end:"(?:$|(?=\\#))",name:"comment.line.number-sign.python",patterns:[{match:`(?x) +\\G ignore +(?= \\s* (?: $ | \\#)) +`,name:"comment.typehint.ignore.notation.python"},{match:`(?x) +(?<!\\.)\\b( +bool | bytes | float | int | object | str +| List | Dict | Iterable | Sequence | Set +| FrozenSet | Callable | Union | Tuple +| Any | None +)\\b +`,name:"comment.typehint.type.notation.python"},{match:"([\\[\\]\\(\\),\\.\\=\\*]|(->))",name:"comment.typehint.punctuation.notation.python"},{match:"([[:alpha:]_]\\w*)",name:"comment.typehint.variable.notation.python"}]},{include:"#comments-base"}]},"comments-base":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($)",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-double-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:'($|(?="""))',name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-single-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($|(?='''))",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"curly-braces":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dict.begin.python"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dict.end.python"}},patterns:[{match:":",name:"punctuation.separator.dict.python"},{include:"#expression"}]},decorator:{begin:`(?x) +^\\s* +((@)) \\s* (?=[[:alpha:]_]\\w*) +`,beginCaptures:{1:{name:"entity.name.function.decorator.python"},2:{name:"punctuation.definition.decorator.python"}},end:`(?x) +( \\) ) + +(?: (.*?) (?=\\s*(?:\\#|$)) ) +| (?=\\n|\\#) +`,endCaptures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"invalid.illegal.decorator.python"}},name:"meta.function.decorator.python",patterns:[{include:"#decorator-name"},{include:"#function-arguments"}]},"decorator-name":{patterns:[{include:"#builtin-callables"},{include:"#illegal-object-name"},{captures:{2:{name:"punctuation.separator.period.python"}},match:`(?x) +([[:alpha:]_]\\w*) | (\\.) +`,name:"entity.name.function.decorator.python"},{include:"#line-continuation"},{captures:{1:{name:"invalid.illegal.decorator.python"}},match:`(?x) +\\s* ([^([:alpha:]\\s_\\.#\\\\] .*?) (?=\\#|$) +`,name:"invalid.illegal.decorator.python"}]},docstring:{patterns:[{begin:`(\\'\\'\\'|\\"\\"\\")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.python"}},end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.python"}},name:"string.quoted.docstring.multi.python",patterns:[{include:"#docstring-prompt"},{include:"#codetags"},{include:"#docstring-guts-unicode"}]},{begin:`([rR])(\\'\\'\\'|\\"\\"\\")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"}},name:"string.quoted.docstring.raw.multi.python",patterns:[{include:"#string-consume-escape"},{include:"#docstring-prompt"},{include:"#codetags"}]},{begin:`(\\'|\\")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.python"}},end:"(\\1)|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.docstring.single.python",patterns:[{include:"#codetags"},{include:"#docstring-guts-unicode"}]},{begin:`([rR])(\\'|\\")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.docstring.raw.single.python",patterns:[{include:"#string-consume-escape"},{include:"#codetags"}]}]},"docstring-guts-unicode":{patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"docstring-prompt":{captures:{1:{name:"keyword.control.flow.python"}},match:`(?x) +(?: +(?:^|\\G) \\s* (?# '\\G' is necessary for ST) +((?:>>>|\\.\\.\\.) \\s) (?=\\s*\\S) +) +`},"docstring-statement":{begin:`^(?=\\s*[rR]?(\\'\\'\\'|\\"\\"\\"|\\'|\\"))`,comment:"the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring",end:`((?<=\\1)|^)(?!\\s*[rR]?(\\'\\'\\'|\\"\\"\\"|\\'|\\"))`,patterns:[{include:"#docstring"}]},"double-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-one-regexp-character-set"},{include:"#double-one-regexp-comments"},{include:"#regexp-flags"},{include:"#double-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-one-regexp-lookahead"},{include:"#double-one-regexp-lookahead-negative"},{include:"#double-one-regexp-lookbehind"},{include:"#double-one-regexp-lookbehind-negative"},{include:"#double-one-regexp-conditional"},{include:"#double-one-regexp-parentheses-non-capturing"},{include:"#double-one-regexp-parentheses"}]},"double-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="""))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-three-regexp-character-set"},{include:"#double-three-regexp-comments"},{include:"#regexp-flags"},{include:"#double-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-three-regexp-lookahead"},{include:"#double-three-regexp-lookahead-negative"},{include:"#double-three-regexp-lookbehind"},{include:"#double-three-regexp-lookbehind-negative"},{include:"#double-three-regexp-conditional"},{include:"#double-three-regexp-parentheses-non-capturing"},{include:"#double-three-regexp-parentheses"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},ellipsis:{match:"\\.\\.\\.",name:"constant.other.ellipsis.python"},"escape-sequence":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| [0-7]{1,3} +| [\\\\"'abfnrtv] +) +`,name:"constant.character.escape.python"},"escape-sequence-unicode":{patterns:[{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +| N\\{[\\w\\s]+?\\} +) +`,name:"constant.character.escape.python"}]},expression:{comment:"All valid Python expressions",patterns:[{include:"#expression-base"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"expression-bare":{comment:"valid Python expressions w/o comments and line continuation",patterns:[{include:"#backticks"},{include:"#illegal-anno"},{include:"#literal"},{include:"#regexp"},{include:"#string"},{include:"#lambda"},{include:"#generator"},{include:"#illegal-operator"},{include:"#operator"},{include:"#curly-braces"},{include:"#item-access"},{include:"#list"},{include:"#odd-function-call"},{include:"#round-braces"},{include:"#function-call"},{include:"#builtin-functions"},{include:"#builtin-types"},{include:"#builtin-exceptions"},{include:"#magic-names"},{include:"#special-names"},{include:"#illegal-names"},{include:"#special-variables"},{include:"#ellipsis"},{include:"#punctuation"},{include:"#line-continuation"}]},"expression-base":{comment:"valid Python expressions with comments and line continuation",patterns:[{include:"#comments"},{include:"#expression-bare"},{include:"#line-continuation"}]},"f-expression":{comment:"All valid Python expressions, except comments and line continuation",patterns:[{include:"#expression-bare"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"fregexp-base-expression":{patterns:[{include:"#fregexp-quantifier"},{include:"#fstring-formatting-braces"},{match:"\\{.*?\\}"},{include:"#regexp-base-common"}]},"fregexp-quantifier":{match:`(?x) +\\{\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\}\\} +`,name:"keyword.operator.quantifier.regexp"},"fstring-fnorm-quoted-multi-line":{begin:`(\\b[fF])([bBuU])?('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-fnorm-quoted-single-line":{begin:`(\\b[fF])([bBuU])?((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-formatting":{patterns:[{include:"#fstring-formatting-braces"},{include:"#fstring-formatting-singe-brace"}]},"fstring-formatting-braces":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},2:{name:"invalid.illegal.brace.python"},3:{name:"constant.character.format.placeholder.other.python"}},comment:"empty braces are illegal",match:"({)(\\s*?)(})"},{match:"({{|}})",name:"constant.character.escape.python"}]},"fstring-formatting-singe-brace":{match:"(}(?!}))",name:"invalid.illegal.brace.python"},"fstring-guts":{patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#fstring-formatting"}]},"fstring-illegal-multi-brace":{patterns:[{include:"#impossible"}]},"fstring-illegal-single-brace":{begin:"(\\{)(?=[^\\n}]*$\\n?)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"it is illegal to have a multiline brace inside a single-line string",end:"(\\})|(?=\\n)",endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-multi-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\}) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-multi"},{include:"#f-expression"}]},"fstring-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.multi.python"},"fstring-normf-quoted-multi-line":{begin:`(\\b[bBuU])([fF])('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-normf-quoted-single-line":{begin:`(\\b[bBuU])([fF])((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#fstring-formatting"}]},"fstring-raw-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.multi.python"},"fstring-raw-quoted-multi-line":{begin:`(\\b(?:[rR][fF]|[fF][rR]))('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.multi.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-raw-multi-core"}]},"fstring-raw-quoted-single-line":{begin:`(\\b(?:[rR][fF]|[fF][rR]))((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.single.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.single.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-raw-single-core"}]},"fstring-raw-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.single.python"},"fstring-single-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\})|(?=\\n) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.single.python"},"fstring-terminator-multi":{patterns:[{match:"(=(![rsa])?)(?=})",name:"storage.type.format.python"},{match:"(=?![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +( (?: =?) (?: ![rsa])? ) +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-multi-tail"}]},"fstring-terminator-multi-tail":{begin:"((?:=?)(?:![rsa])?)(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})",patterns:[{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"fstring-terminator-single":{patterns:[{match:"(=(![rsa])?)(?=})",name:"storage.type.format.python"},{match:"(=?![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +( (?: =?) (?: ![rsa])? ) +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-single-tail"}]},"fstring-terminator-single-tail":{begin:"((?:=?)(?:![rsa])?)(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})|(?=\\n)",patterns:[{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"function-arguments":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.function-call.arguments.python",end:"(?=\\))(?!\\)\\s*\\()",patterns:[{match:"(,)",name:"punctuation.separator.arguments.python"},{captures:{1:{name:"keyword.operator.unpacking.arguments.python"}},match:`(?x) +(?:(?<=[,(])|^) \\s* (\\*{1,2}) +`},{include:"#lambda-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function-call.python"},2:{name:"keyword.operator.assignment.python"}},match:"\\b([[:alpha:]_]\\w*)\\s*(=)(?!=)"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{include:"#expression"},{captures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"punctuation.definition.arguments.begin.python"}},match:"\\s*(\\))\\s*(\\()"}]},"function-call":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:'Regular function call of the type "name(args)"',end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#special-variables"},{include:"#function-name"},{include:"#function-arguments"}]},"function-declaration":{begin:`(?x) +\\s* +(?:\\b(async) \\s+)? \\b(def)\\s+ +(?= +[[:alpha:]_][[:word:]]* \\s* \\( +) +`,beginCaptures:{1:{name:"storage.type.function.async.python"},2:{name:"storage.type.function.python"}},end:`(:|(?=[#'"\\n]))`,endCaptures:{1:{name:"punctuation.section.function.begin.python"}},name:"meta.function.python",patterns:[{include:"#function-def-name"},{include:"#parameters"},{include:"#line-continuation"},{include:"#return-annotation"}]},"function-def-name":{patterns:[{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.function.python"}]},"function-name":{patterns:[{include:"#builtin-possible-callables"},{comment:"Some color schemas support meta.function-call.generic scope",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.function-call.generic.python"}]},generator:{begin:"\\bfor\\b",beginCaptures:{0:{name:"keyword.control.flow.python"}},comment:`Match "for ... in" construct used in generators and for loops to +correctly identify the "in" as a control flow keyword. +`,end:"\\bin\\b",endCaptures:{0:{name:"keyword.control.flow.python"}},patterns:[{include:"#expression"}]},"illegal-anno":{match:"->",name:"invalid.illegal.annotation.python"},"illegal-names":{captures:{1:{name:"keyword.control.flow.python"},2:{name:"keyword.control.import.python"}},match:`(?x) +\\b(?: +( +and | assert | async | await | break | class | continue | def +| del | elif | else | except | finally | for | from | global +| if | in | is | (?<=\\.)lambda | lambda(?=\\s*[\\.=]) +| nonlocal | not | or | pass | raise | return | try | while | with +| yield +) | ( +as | import +) +)\\b +`},"illegal-object-name":{comment:`It's illegal to name class or function "True"`,match:"\\b(True|False|None)\\b",name:"keyword.illegal.name.python"},"illegal-operator":{patterns:[{match:"&&|\\|\\||--|\\+\\+",name:"invalid.illegal.operator.python"},{match:"[?$]",name:"invalid.illegal.operator.python"},{comment:"We don't want `!` to flash when we're typing `!=`",match:"!\\b",name:"invalid.illegal.operator.python"}]},import:{comment:"Import statements used to correctly mark `from`, `import`, and `as`\n",patterns:[{begin:"\\b(?<!\\.)(from)\\b(?=.+import)",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$|(?=import)",patterns:[{match:"\\.+",name:"punctuation.separator.period.python"},{include:"#expression"}]},{begin:"\\b(?<!\\.)(import)\\b",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$",patterns:[{match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{include:"#expression"}]}]},impossible:{comment:"This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.",match:"$.^"},"inheritance-identifier":{captures:{1:{name:"entity.other.inherited-class.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`},"inheritance-name":{patterns:[{include:"#lambda-incomplete"},{include:"#builtin-possible-callables"},{include:"#inheritance-identifier"}]},"item-access":{patterns:[{begin:`(?x) +\\b(?= +[[:alpha:]_]\\w* \\s* \\[ +) +`,end:"(\\])",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.item-access.python",patterns:[{include:"#item-name"},{include:"#item-index"},{include:"#expression"}]}]},"item-index":{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.item-access.arguments.python",end:"(?=\\])",patterns:[{match:":",name:"punctuation.separator.slice.python"},{include:"#expression"}]},"item-name":{patterns:[{include:"#special-variables"},{include:"#builtin-functions"},{include:"#special-names"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.indexed-name.python"}]},lambda:{patterns:[{captures:{1:{name:"keyword.control.flow.python"}},match:"((?<=\\.)lambda|lambda(?=\\s*[\\.=]))"},{captures:{1:{name:"storage.type.function.lambda.python"}},match:"\\b(lambda)\\s*?(?=[,\\n]|$)"},{begin:`(?x) +\\b (lambda) \\b +`,beginCaptures:{1:{name:"storage.type.function.lambda.python"}},contentName:"meta.function.lambda.parameters.python",end:"(:)|(\\n)",endCaptures:{1:{name:"punctuation.section.function.lambda.begin.python"}},name:"meta.lambda-function.python",patterns:[{match:"/",name:"keyword.operator.positional.parameter.python"},{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-nested-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:"([[:alpha:]_]\\w*)\\s*(?:(,)|(?=:|$))"},{include:"#comments"},{include:"#backticks"},{include:"#illegal-anno"},{include:"#lambda-parameter-with-default"},{include:"#line-continuation"},{include:"#illegal-operator"}]}]},"lambda-incomplete":{match:"\\blambda(?=\\s*[,)])",name:"storage.type.function.lambda.python"},"lambda-nested-incomplete":{match:"\\blambda(?=\\s*[:,)])",name:"storage.type.function.lambda.python"},"lambda-parameter-with-default":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (=) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"keyword.operator.python"}},end:"(,)|(?=:|$)",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"line-continuation":{patterns:[{captures:{1:{name:"punctuation.separator.continuation.line.python"},2:{name:"invalid.illegal.line.continuation.python"}},match:"(\\\\)\\s*(\\S.*$\\n?)"},{begin:"(\\\\)\\s*$\\n?",beginCaptures:{1:{name:"punctuation.separator.continuation.line.python"}},end:`(?x) +(?=^\\s*$) +| +(?! (\\s* [rR]? (\\'\\'\\'|\\"\\"\\"|\\'|\\")) +| +(\\G $) (?# '\\G' is necessary for ST) +) +`,patterns:[{include:"#regexp"},{include:"#string"}]}]},list:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.list.begin.python"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.list.end.python"}},patterns:[{include:"#expression"}]},literal:{patterns:[{match:"\\b(True|False|None|NotImplemented|Ellipsis)\\b",name:"constant.language.python"},{include:"#number"}]},"loose-default":{begin:"(=)",beginCaptures:{1:{name:"keyword.operator.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"magic-function-names":{captures:{1:{name:"support.function.magic.python"}},comment:`these methods have magic interpretation by python and are generally called +indirectly through syntactic constructs +`,match:`(?x) +\\b( +__(?: +abs | add | aenter | aexit | aiter | and | anext +| await | bool | call | ceil | class_getitem +| cmp | coerce | complex | contains | copy +| deepcopy | del | delattr | delete | delitem +| delslice | dir | div | divmod | enter | eq +| exit | float | floor | floordiv | format | ge +| get | getattr | getattribute | getinitargs +| getitem | getnewargs | getslice | getstate | gt +| hash | hex | iadd | iand | idiv | ifloordiv | +| ilshift | imod | imul | index | init +| instancecheck | int | invert | ior | ipow +| irshift | isub | iter | itruediv | ixor | le +| len | long | lshift | lt | missing | mod | mul +| ne | neg | new | next | nonzero | oct | or | pos +| pow | radd | rand | rdiv | rdivmod | reduce +| reduce_ex | repr | reversed | rfloordiv | +| rlshift | rmod | rmul | ror | round | rpow +| rrshift | rshift | rsub | rtruediv | rxor | set +| setattr | setitem | set_name | setslice +| setstate | sizeof | str | sub | subclasscheck +| truediv | trunc | unicode | xor | matmul +| rmatmul | imatmul | init_subclass | set_name +| fspath | bytes | prepare | length_hint +)__ +)\\b +`},"magic-names":{patterns:[{include:"#magic-function-names"},{include:"#magic-variable-names"}]},"magic-variable-names":{captures:{1:{name:"support.variable.magic.python"}},comment:"magic variables which a class/module may have.",match:`(?x) +\\b( +__(?: +all | annotations | bases | builtins | class +| closure | code | debug | defaults | dict | doc | file | func +| globals | kwdefaults | match_args | members | metaclass | methods +| module | mro | mro_entries | name | qualname | post_init | self +| signature | slots | subclasses | version | weakref | wrapped +| classcell | spec | path | package | future | traceback +)__ +)\\b +`},"member-access":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:`(?x) + + +(?<=\\S)(?=\\W) | + + +(^|(?<=\\s))(?=[^\\\\\\w\\s]) | +$ +`,name:"meta.member.access.python",patterns:[{include:"#function-call"},{include:"#member-access-base"},{include:"#member-access-attribute"}]},"member-access-attribute":{comment:"Highlight attribute access in otherwise non-specialized cases.",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.attribute.python"},"member-access-base":{patterns:[{include:"#magic-names"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#special-names"},{include:"#line-continuation"},{include:"#item-access"}]},"member-access-class":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:"(?<=\\S)(?=\\W)|$",name:"meta.member.access.python",patterns:[{include:"#call-wrapper-inheritance"},{include:"#member-access-base"},{include:"#inheritance-identifier"}]},number:{name:"constant.numeric.python",patterns:[{include:"#number-float"},{include:"#number-dec"},{include:"#number-hex"},{include:"#number-oct"},{include:"#number-bin"},{include:"#number-long"},{match:"\\b[0-9]+\\w+",name:"invalid.illegal.name.python"}]},"number-bin":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[bB]) (_?[01])+ +\\b +`,name:"constant.numeric.bin.python"},"number-dec":{captures:{1:{name:"storage.type.imaginary.number.python"},2:{name:"invalid.illegal.dec.python"}},match:`(?x) +(?<![\\w\\.])(?: +[1-9](?: _?[0-9] )* +| +0+ +| +[0-9](?: _?[0-9] )* ([jJ]) +| +0 ([0-9]+)(?![eE\\.]) +)\\b +`,name:"constant.numeric.dec.python"},"number-float":{captures:{1:{name:"storage.type.imaginary.number.python"}},match:`(?x) +(?<! \\w)(?: +(?: +\\.[0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. +) (?: [eE][+-]?[0-9](?: _?[0-9] )* )? +| +[0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* ) +)([jJ])?\\b +`,name:"constant.numeric.float.python"},"number-hex":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[xX]) (_?[0-9a-fA-F])+ +\\b +`,name:"constant.numeric.hex.python"},"number-long":{captures:{2:{name:"storage.type.number.python"}},comment:"this is to support python2 syntax for long ints",match:`(?x) +(?<![\\w\\.]) +([1-9][0-9]* | 0) ([lL]) +\\b +`,name:"constant.numeric.bin.python"},"number-oct":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[oO]) (_?[0-7])+ +\\b +`,name:"constant.numeric.oct.python"},"odd-function-call":{begin:`(?x) +(?<= \\] | \\) ) \\s* +(?=\\() +`,comment:`A bit obscured function call where there may have been an +arbitrary number of other operations to get the function. +E.g. "arr[idx](args)" +`,end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},patterns:[{include:"#function-arguments"}]},operator:{captures:{1:{name:"keyword.operator.logical.python"},2:{name:"keyword.control.flow.python"},3:{name:"keyword.operator.bitwise.python"},4:{name:"keyword.operator.arithmetic.python"},5:{name:"keyword.operator.comparison.python"},6:{name:"keyword.operator.assignment.python"}},match:`(?x) +\\b(?<!\\.) +(?: +(and | or | not | in | is) (?# 1) +| +(for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2) +) +(?!\\s*:)\\b + +| (<< | >> | & | \\| | \\^ | ~) (?# 3) + +| (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4) + +| (!= | == | >= | <= | < | >) (?# 5) + +| (:=) (?# 6) +`},"parameter-special":{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"variable.parameter.function.language.special.self.python"},3:{name:"variable.parameter.function.language.special.cls.python"},4:{name:"punctuation.separator.parameters.python"}},match:`(?x) +\\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\))) +`},parameters:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.python"}},name:"meta.function.parameters.python",patterns:[{match:"/",name:"keyword.operator.positional.parameter.python"},{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-incomplete"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#parameter-special"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:`(?x) +([[:alpha:]_]\\w*) +\\s* (?: (,) | (?=[)#\\n=])) +`},{include:"#comments"},{include:"#loose-default"},{include:"#annotated-parameter"}]},punctuation:{patterns:[{match:":",name:"punctuation.separator.colon.python"},{match:",",name:"punctuation.separator.element.python"}]},regexp:{patterns:[{include:"#regexp-single-three-line"},{include:"#regexp-double-three-line"},{include:"#regexp-single-one-line"},{include:"#regexp-double-one-line"}]},"regexp-backreference":{captures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"},2:{name:"entity.name.tag.named.backreference.regexp"},3:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"}},match:`(?x) +(\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\)) +`,name:"meta.backreference.named.regexp"},"regexp-backreference-number":{captures:{1:{name:"entity.name.tag.backreference.regexp"}},match:"(\\\\[1-9]\\d?)",name:"meta.backreference.regexp"},"regexp-base-common":{patterns:[{match:"\\.",name:"support.other.match.any.regexp"},{match:"\\^",name:"support.other.match.begin.regexp"},{match:"\\$",name:"support.other.match.end.regexp"},{match:"[+*?]\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.disjunction.regexp"},{include:"#regexp-escape-sequence"}]},"regexp-base-expression":{patterns:[{include:"#regexp-quantifier"},{include:"#regexp-base-common"}]},"regexp-charecter-set-escapes":{patterns:[{match:"\\\\[abfnrtv\\\\]",name:"constant.character.escape.regexp"},{include:"#regexp-escape-special"},{match:"\\\\([0-7]{1,3})",name:"constant.character.escape.regexp"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-escape-catchall"}]},"regexp-double-one-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(")|(?<!\\\\)(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#double-one-regexp-expression"}]},"regexp-double-three-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(""")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#double-three-regexp-expression"}]},"regexp-escape-catchall":{match:"\\\\(.|\\n)",name:"constant.character.escape.regexp"},"regexp-escape-character":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| 0[0-7]{1,2} +| [0-7]{3} +) +`,name:"constant.character.escape.regexp"},"regexp-escape-sequence":{patterns:[{include:"#regexp-escape-special"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-backreference-number"},{include:"#regexp-escape-catchall"}]},"regexp-escape-special":{match:"\\\\([AbBdDsSwWZ])",name:"support.other.escape.special.regexp"},"regexp-escape-unicode":{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +) +`,name:"constant.character.unicode.regexp"},"regexp-flags":{match:"\\(\\?[aiLmsux]+\\)",name:"storage.modifier.flag.regexp"},"regexp-quantifier":{match:`(?x) +\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\} +`,name:"keyword.operator.quantifier.regexp"},"regexp-single-one-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\')|(?<!\\\\)(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#single-one-regexp-expression"}]},"regexp-single-three-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\'\\'\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\'\\'\\')",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#single-three-regexp-expression"}]},"return-annotation":{begin:"(->)",beginCaptures:{1:{name:"punctuation.separator.annotation.result.python"}},end:"(?=:)",patterns:[{include:"#expression"}]},"round-braces":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.begin.python"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.end.python"}},patterns:[{include:"#expression"}]},semicolon:{patterns:[{match:"\\;$",name:"invalid.deprecated.semicolon.python"}]},"single-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-one-regexp-character-set"},{include:"#single-one-regexp-comments"},{include:"#regexp-flags"},{include:"#single-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-one-regexp-lookahead"},{include:"#single-one-regexp-lookahead-negative"},{include:"#single-one-regexp-lookbehind"},{include:"#single-one-regexp-lookbehind-negative"},{include:"#single-one-regexp-conditional"},{include:"#single-one-regexp-parentheses-non-capturing"},{include:"#single-one-regexp-parentheses"}]},"single-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-three-regexp-character-set"},{include:"#single-three-regexp-comments"},{include:"#regexp-flags"},{include:"#single-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-three-regexp-lookahead"},{include:"#single-three-regexp-lookahead-negative"},{include:"#single-three-regexp-lookbehind"},{include:"#single-three-regexp-lookbehind-negative"},{include:"#single-three-regexp-conditional"},{include:"#single-three-regexp-parentheses-non-capturing"},{include:"#single-three-regexp-parentheses"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"special-names":{match:`(?x) +\\b + + + + + +( +_* [[:upper:]] [_\\d]* [[:upper:]] +) +[[:upper:]\\d]* (_\\w*)? +\\b +`,name:"constant.other.caps.python"},"special-variables":{captures:{1:{name:"variable.language.special.self.python"},2:{name:"variable.language.special.cls.python"}},match:`(?x) +\\b (?<!\\.) (?: +(self) | (cls) +)\\b +`},statement:{patterns:[{include:"#import"},{include:"#class-declaration"},{include:"#function-declaration"},{include:"#generator"},{include:"#statement-keyword"},{include:"#assignment-operator"},{include:"#decorator"},{include:"#docstring-statement"},{include:"#semicolon"}]},"statement-keyword":{patterns:[{match:"\\b((async\\s+)?\\s*def)\\b",name:"storage.type.function.python"},{comment:`if \`as\` is eventually followed by \`:\` or line continuation +it's probably control flow like: + with foo as bar, \\ + Foo as Bar: + try: + do_stuff() + except Exception as e: + pass +`,match:"\\b(?<!\\.)as\\b(?=.*[:\\\\])",name:"keyword.control.flow.python"},{comment:"other legal use of `as` is in an import",match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{match:`(?x) +\\b(?<!\\.)( +async | continue | del | assert | break | finally | for +| from | elif | else | if | except | pass | raise +| return | try | while | with +)\\b +`,name:"keyword.control.flow.python"},{match:`(?x) +\\b(?<!\\.)( +global | nonlocal +)\\b +`,name:"storage.modifier.declaration.python"},{match:"\\b(?<!\\.)(class)\\b",name:"storage.type.class.python"},{captures:{1:{name:"keyword.control.flow.python"}},match:`(?x) +^\\s*( +case | match +)(?=\\s*([-+\\w\\d(\\[{'":#]|$))\\b +`}]},string:{patterns:[{include:"#string-quoted-multi-line"},{include:"#string-quoted-single-line"},{include:"#string-bin-quoted-multi-line"},{include:"#string-bin-quoted-single-line"},{include:"#string-raw-quoted-multi-line"},{include:"#string-raw-quoted-single-line"},{include:"#string-raw-bin-quoted-multi-line"},{include:"#string-raw-bin-quoted-single-line"},{include:"#fstring-fnorm-quoted-multi-line"},{include:"#fstring-fnorm-quoted-single-line"},{include:"#fstring-normf-quoted-multi-line"},{include:"#fstring-normf-quoted-single-line"},{include:"#fstring-raw-quoted-multi-line"},{include:"#fstring-raw-quoted-single-line"}]},"string-bin-quoted-multi-line":{begin:`(\\b[bB])('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.multi.python",patterns:[{include:"#string-entity"}]},"string-bin-quoted-single-line":{begin:`(\\b[bB])((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.single.python",patterns:[{include:"#string-entity"}]},"string-brace-formatting":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{{ | }} +| (?: +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )? +}) +) +`,name:"meta.format.brace.python"},{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +(:) +[^'"{}\\n]* (?: +\\{ [^'"}\\n]*? \\} [^'"{}\\n]* +)* +} +) +`,name:"meta.format.brace.python"}]},"string-consume-escape":{match:`\\\\['"\\n\\\\]`},"string-entity":{patterns:[{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#string-formatting"}]},"string-formatting":{captures:{1:{name:"constant.character.format.placeholder.other.python"}},match:`(?x) +( +% (\\([\\w\\s]*\\))? +[-+#0 ]* +(\\d+|\\*)? (\\.(\\d+|\\*))? +([hlL])? +[diouxXeEfFgGcrsab%] +) +`,name:"meta.format.percent.python"},"string-line-continuation":{match:"\\\\$",name:"constant.language.python"},"string-multi-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"}]},"string-multi-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-multi-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-multi-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-quoted-multi-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-unicode"},{include:"#string-multi-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-quoted-single-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-unicode"},{include:"#string-single-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-raw-bin-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-raw-bin-quoted-multi-line":{begin:`(\\b(?:R[bB]|[bB]R))('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.multi.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-bin-quoted-single-line":{begin:`(\\b(?:R[bB]|[bB]R))((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.single.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"},{include:"#string-brace-formatting"}]},"string-raw-quoted-multi-line":{begin:`\\b(([uU]R)|(R))('''|""")`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-raw"},{include:"#string-multi-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-raw-quoted-single-line":{begin:`\\b(([uU]R)|(R))((['"]))`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-raw"},{include:"#string-single-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-single-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"}]},"string-single-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-single-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-single-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-unicode-guts":{patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"},{include:"#string-brace-formatting"}]}},scopeName:"source.python",aliases:["py"]});var n=[e];export{n as default}; diff --git a/assets/chunks/r.BXfENWL6.js b/assets/chunks/r.BXfENWL6.js new file mode 100644 index 000000000..89e188dfd --- /dev/null +++ b/assets/chunks/r.BXfENWL6.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"R",name:"r",patterns:[{include:"#roxygen"},{include:"#comments"},{include:"#constants"},{include:"#keywords"},{include:"#storage-type"},{include:"#strings"},{include:"#brackets"},{include:"#function-declarations"},{include:"#lambda-functions"},{include:"#builtin-functions"},{include:"#function-calls"},{include:"#general-variables"}],repository:{brackets:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.r"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.r"}},patterns:[{include:"source.r"}]},{begin:"\\[(?!\\[)",beginCaptures:{0:{name:"punctuation.section.brackets.single.begin.r"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.brackets.single.end.r"}},patterns:[{include:"source.r"}]},{begin:"\\[\\[",beginCaptures:{0:{name:"punctuation.section.brackets.double.begin.r"}},contentName:"meta.item-access.arguments.r",end:"\\]\\]",endCaptures:{0:{name:"punctuation.section.brackets.double.end.r"}},patterns:[{include:"source.r"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.braces.begin.r"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.braces.end.r"}},patterns:[{include:"source.r"}]}]},"builtin-functions":{patterns:[{captures:{1:{name:"support.function.r"}},match:"\\b(abbreviate|abs|acos|acosh|activeBindingFunction|addNA|addTaskCallback|agrep|agrepl|alist|all|all\\.equal|all\\.equal\\.character|all\\.equal\\.default|all\\.equal\\.environment|all\\.equal\\.envRefClass|all\\.equal\\.factor|all\\.equal\\.formula|all\\.equal\\.function|all\\.equal\\.language|all\\.equal\\.list|all\\.equal\\.numeric|all\\.equal\\.POSIXt|all\\.equal\\.raw|all\\.names|allowInterrupts|all\\.vars|any|anyDuplicated|anyDuplicated\\.array|anyDuplicated\\.data\\.frame|anyDuplicated\\.default|anyDuplicated\\.matrix|anyNA|anyNA\\.data\\.frame|anyNA\\.numeric_version|anyNA\\.POSIXlt|aperm|aperm\\.default|aperm\\.table|append|apply|Arg|args|array|arrayInd|as\\.array|as\\.array\\.default|as\\.call|as\\.character|as\\.character\\.condition|as\\.character\\.Date|as\\.character\\.default|as\\.character\\.error|as\\.character\\.factor|as\\.character\\.hexmode|as\\.character\\.numeric_version|as\\.character\\.octmode|as\\.character\\.POSIXt|as\\.character\\.srcref|as\\.complex|as\\.data\\.frame|as\\.data\\.frame\\.array|as\\.data\\.frame\\.AsIs|as\\.data\\.frame\\.character|as\\.data\\.frame\\.complex|as\\.data\\.frame\\.data\\.frame|as\\.data\\.frame\\.Date|as\\.data\\.frame\\.default|as\\.data\\.frame\\.difftime|as\\.data\\.frame\\.factor|as\\.data\\.frame\\.integer|as\\.data\\.frame\\.list|as\\.data\\.frame\\.logical|as\\.data\\.frame\\.matrix|as\\.data\\.frame\\.model\\.matrix|as\\.data\\.frame\\.noquote|as\\.data\\.frame\\.numeric|as\\.data\\.frame\\.numeric_version|as\\.data\\.frame\\.ordered|as\\.data\\.frame\\.POSIXct|as\\.data\\.frame\\.POSIXlt|as\\.data\\.frame\\.raw|as\\.data\\.frame\\.table|as\\.data\\.frame\\.ts|as\\.data\\.frame\\.vector|as\\.Date|as\\.Date\\.character|as\\.Date\\.default|as\\.Date\\.factor|as\\.Date\\.numeric|as\\.Date\\.POSIXct|as\\.Date\\.POSIXlt|as\\.difftime|as\\.double|as\\.double\\.difftime|as\\.double\\.POSIXlt|as\\.environment|as\\.expression|as\\.expression\\.default|as\\.factor|as\\.function|as\\.function\\.default|as\\.hexmode|asin|asinh|as\\.integer|as\\.list|as\\.list\\.data\\.frame|as\\.list\\.Date|as\\.list\\.default|as\\.list\\.difftime|as\\.list\\.environment|as\\.list\\.factor|as\\.list\\.function|as\\.list\\.numeric_version|as\\.list\\.POSIXct|as\\.list\\.POSIXlt|as\\.logical|as\\.logical\\.factor|as\\.matrix|as\\.matrix\\.data\\.frame|as\\.matrix\\.default|as\\.matrix\\.noquote|as\\.matrix\\.POSIXlt|as\\.name|asNamespace|as\\.null|as\\.null\\.default|as\\.numeric|as\\.numeric_version|as\\.octmode|as\\.ordered|as\\.package_version|as\\.pairlist|asplit|as\\.POSIXct|as\\.POSIXct\\.Date|as\\.POSIXct\\.default|as\\.POSIXct\\.numeric|as\\.POSIXct\\.POSIXlt|as\\.POSIXlt|as\\.POSIXlt\\.character|as\\.POSIXlt\\.Date|as\\.POSIXlt\\.default|as\\.POSIXlt\\.factor|as\\.POSIXlt\\.numeric|as\\.POSIXlt\\.POSIXct|as\\.qr|as\\.raw|asS3|asS4|assign|as\\.single|as\\.single\\.default|as\\.symbol|as\\.table|as\\.table\\.default|as\\.vector|as\\.vector\\.factor|atan|atan2|atanh|attach|attachNamespace|attr|attr\\.all\\.equal|attributes|autoload|autoloader|backsolve|baseenv|basename|besselI|besselJ|besselK|besselY|beta|bindingIsActive|bindingIsLocked|bindtextdomain|bitwAnd|bitwNot|bitwOr|bitwShiftL|bitwShiftR|bitwXor|body|bquote|break|browser|browserCondition|browserSetDebug|browserText|builtins|by|by\\.data\\.frame|by\\.default|bzfile|c|call|callCC|capabilities|casefold|cat|cbind|cbind\\.data\\.frame|c\\.Date|c\\.difftime|ceiling|c\\.factor|character|char\\.expand|charmatch|charToRaw|chartr|check_tzones|chkDots|chol|chol2inv|chol\\.default|choose|class|clearPushBack|close|closeAllConnections|close\\.connection|close\\.srcfile|close\\.srcfilealias|c\\.noquote|c\\.numeric_version|col|colMeans|colnames|colSums|commandArgs|comment|complex|computeRestarts|conditionCall|conditionCall\\.condition|conditionMessage|conditionMessage\\.condition|conflictRules|conflicts|Conj|contributors|cos|cosh|cospi|c\\.POSIXct|c\\.POSIXlt|crossprod|Cstack_info|cummax|cummin|cumprod|cumsum|curlGetHeaders|cut|cut\\.Date|cut\\.default|cut\\.POSIXt|c\\.warnings|data\\.class|data\\.frame|data\\.matrix|date|debug|debuggingState|debugonce|default\\.stringsAsFactors|delayedAssign|deparse|deparse1|det|detach|determinant|determinant\\.matrix|dget|diag|diff|diff\\.Date|diff\\.default|diff\\.difftime|diff\\.POSIXt|difftime|digamma|dim|dim\\.data\\.frame|dimnames|dimnames\\.data\\.frame|dir|dir\\.create|dir\\.exists|dirname|do\\.call|dontCheck|double|dput|dQuote|drop|droplevels|droplevels\\.data\\.frame|droplevels\\.factor|dump|duplicated|duplicated\\.array|duplicated\\.data\\.frame|duplicated\\.default|duplicated\\.matrix|duplicated\\.numeric_version|duplicated\\.POSIXlt|duplicated\\.warnings|dynGet|dyn\\.load|dyn\\.unload|eapply|eigen|emptyenv|enc2native|enc2utf8|encodeString|Encoding|endsWith|enquote|environment|environmentIsLocked|environmentName|env\\.profile|errorCondition|eval|eval\\.parent|evalq|exists|exp|expand\\.grid|expm1|expression|extSoftVersion|factor|factorial|fifo|file|file\\.access|file\\.append|file\\.choose|file\\.copy|file\\.create|file\\.exists|file\\.info|file\\.link|file\\.mode|file\\.mtime|file\\.path|file\\.remove|file\\.rename|file\\.show|file\\.size|file\\.symlink|Filter|Find|findInterval|find\\.package|findPackageEnv|findRestart|floor|flush|flush\\.connection|for|force|forceAndCall|formals|format|format\\.AsIs|formatC|format\\.data\\.frame|format\\.Date|format\\.default|format\\.difftime|formatDL|format\\.factor|format\\.hexmode|format\\.info|format\\.libraryIQR|format\\.numeric_version|format\\.octmode|format\\.packageInfo|format\\.POSIXct|format\\.POSIXlt|format\\.pval|format\\.summaryDefault|forwardsolve|function|gamma|gc|gcinfo|gc\\.time|gctorture|gctorture2|get|get0|getAllConnections|getCallingDLL|getCallingDLLe|getConnection|getDLLRegisteredRoutines|getDLLRegisteredRoutines\\.character|getDLLRegisteredRoutines\\.DLLInfo|getElement|geterrmessage|getExportedValue|getHook|getLoadedDLLs|getNamespace|getNamespaceExports|getNamespaceImports|getNamespaceInfo|getNamespaceName|getNamespaceUsers|getNamespaceVersion|getNativeSymbolInfo|getOption|getRversion|getSrcLines|getTaskCallbackNames|gettext|gettextf|getwd|gl|globalCallingHandlers|globalenv|gregexec|gregexpr|grep|grepl|grepRaw|grouping|gsub|gzcon|gzfile|I|iconv|iconvlist|icuGetCollate|icuSetCollate|identical|identity|if|ifelse|Im|importIntoEnv|infoRDS|inherits|integer|interaction|interactive|intersect|intToBits|intToUtf8|inverse\\.rle|invisible|invokeRestart|invokeRestartInteractively|isa|is\\.array|is\\.atomic|isatty|isBaseNamespace|is\\.call|is\\.character|is\\.complex|is\\.data\\.frame|isdebugged|is\\.double|is\\.element|is\\.environment|is\\.expression|is\\.factor|isFALSE|is\\.finite|is\\.function|isIncomplete|is\\.infinite|is\\.integer|is\\.language|is\\.list|is\\.loaded|is\\.logical|is\\.matrix|is\\.na|is\\.na\\.data\\.frame|is\\.name|isNamespace|isNamespaceLoaded|is\\.nan|is\\.na\\.numeric_version|is\\.na\\.POSIXlt|is\\.null|is\\.numeric|is\\.numeric\\.Date|is\\.numeric\\.difftime|is\\.numeric\\.POSIXt|is\\.numeric_version|is\\.object|ISOdate|ISOdatetime|isOpen|is\\.ordered|is\\.package_version|is\\.pairlist|is\\.primitive|is\\.qr|is\\.R|is\\.raw|is\\.recursive|isRestart|isS4|isSeekable|is\\.single|is\\.symbol|isSymmetric|isSymmetric\\.matrix|is\\.table|isTRUE|is\\.unsorted|is\\.vector|jitter|julian|julian\\.Date|julian\\.POSIXt|kappa|kappa\\.default|kappa\\.lm|kappa\\.qr|kronecker|l10n_info|labels|labels\\.default|La_library|lapply|La\\.svd|La_version|lazyLoad|lazyLoadDBexec|lazyLoadDBfetch|lbeta|lchoose|length|length\\.POSIXlt|lengths|levels|levels\\.default|lfactorial|lgamma|libcurlVersion|library|library\\.dynam|library\\.dynam\\.unload|licence|license|list|list2DF|list2env|list\\.dirs|list\\.files|load|loadedNamespaces|loadingNamespaceInfo|loadNamespace|local|lockBinding|lockEnvironment|log|log10|log1p|log2|logb|logical|lower\\.tri|ls|makeActiveBinding|make\\.names|make\\.unique|Map|mapply|marginSums|margin\\.table|match|match\\.arg|match\\.call|match\\.fun|Math\\.data\\.frame|Math\\.Date|Math\\.difftime|Math\\.factor|Math\\.POSIXt|mat\\.or\\.vec|matrix|max|max\\.col|mean|mean\\.Date|mean\\.default|mean\\.difftime|mean\\.POSIXct|mean\\.POSIXlt|memCompress|memDecompress|mem\\.maxNSize|mem\\.maxVSize|memory\\.profile|merge|merge\\.data\\.frame|merge\\.default|message|mget|min|missing|Mod|mode|months|months\\.Date|months\\.POSIXt|names|namespaceExport|namespaceImport|namespaceImportClasses|namespaceImportFrom|namespaceImportMethods|names\\.POSIXlt|nargs|nchar|ncol|NCOL|Negate|new\\.env|next|NextMethod|ngettext|nlevels|noquote|norm|normalizePath|nrow|NROW|nullfile|numeric|numeric_version|numToBits|numToInts|nzchar|objects|oldClass|OlsonNames|on\\.exit|open|open\\.connection|open\\.srcfile|open\\.srcfilealias|open\\.srcfilecopy|Ops\\.data\\.frame|Ops\\.Date|Ops\\.difftime|Ops\\.factor|Ops\\.numeric_version|Ops\\.ordered|Ops\\.POSIXt|options|order|ordered|outer|packageEvent|packageHasNamespace|packageNotFoundError|packageStartupMessage|package_version|packBits|pairlist|parent\\.env|parent\\.frame|parse|parseNamespaceFile|paste|paste0|path\\.expand|path\\.package|pcre_config|pi|pipe|plot|pmatch|pmax|pmax\\.int|pmin|pmin\\.int|polyroot|Position|pos\\.to\\.env|pretty|pretty\\.default|prettyNum|print|print\\.AsIs|print\\.by|print\\.condition|print\\.connection|print\\.data\\.frame|print\\.Date|print\\.default|print\\.difftime|print\\.Dlist|print\\.DLLInfo|print\\.DLLInfoList|print\\.DLLRegisteredRoutines|print\\.eigen|print\\.factor|print\\.function|print\\.hexmode|print\\.libraryIQR|print\\.listof|print\\.NativeRoutineList|print\\.noquote|print\\.numeric_version|print\\.octmode|print\\.packageInfo|print\\.POSIXct|print\\.POSIXlt|print\\.proc_time|print\\.restart|print\\.rle|print\\.simple\\.list|print\\.srcfile|print\\.srcref|print\\.summaryDefault|print\\.summary\\.table|print\\.summary\\.warnings|print\\.table|print\\.warnings|prmatrix|proc\\.time|prod|proportions|prop\\.table|provideDimnames|psigamma|pushBack|pushBackLength|q|qr|qr\\.coef|qr\\.default|qr\\.fitted|qr\\.Q|qr\\.qty|qr\\.qy|qr\\.R|qr\\.resid|qr\\.solve|qr\\.X|quarters|quarters\\.Date|quarters\\.POSIXt|quit|quote|range|range\\.default|rank|rapply|raw|rawConnection|rawConnectionValue|rawShift|rawToBits|rawToChar|rbind|rbind\\.data\\.frame|rcond|Re|readBin|readChar|read\\.dcf|readline|readLines|readRDS|readRenviron|Recall|Reduce|regexec|regexpr|reg\\.finalizer|registerS3method|registerS3methods|regmatches|remove|removeTaskCallback|rep|rep\\.Date|rep\\.difftime|repeat|rep\\.factor|rep\\.int|replace|rep_len|replicate|rep\\.numeric_version|rep\\.POSIXct|rep\\.POSIXlt|require|requireNamespace|restartDescription|restartFormals|retracemem|return|returnValue|rev|rev\\.default|R\\.home|rle|rm|RNGkind|RNGversion|round|round\\.Date|round\\.POSIXt|row|rowMeans|rownames|row\\.names|row\\.names\\.data\\.frame|row\\.names\\.default|rowsum|rowsum\\.data\\.frame|rowsum\\.default|rowSums|R_system_version|R\\.version|R\\.Version|R\\.version\\.string|sample|sample\\.int|sapply|save|save\\.image|saveRDS|scale|scale\\.default|scan|search|searchpaths|seek|seek\\.connection|seq|seq_along|seq\\.Date|seq\\.default|seq\\.int|seq_len|seq\\.POSIXt|sequence|sequence\\.default|serialize|serverSocket|setdiff|setequal|setHook|setNamespaceInfo|set\\.seed|setSessionTimeLimit|setTimeLimit|setwd|showConnections|shQuote|sign|signalCondition|signif|simpleCondition|simpleError|simpleMessage|simpleWarning|simplify2array|sin|single|sinh|sink|sink\\.number|sinpi|slice\\.index|socketAccept|socketConnection|socketSelect|socketTimeout|solve|solve\\.default|solve\\.qr|sort|sort\\.default|sort\\.int|sort\\.list|sort\\.POSIXlt|source|split|split\\.data\\.frame|split\\.Date|split\\.default|split\\.POSIXct|sprintf|sqrt|sQuote|srcfile|srcfilealias|srcfilecopy|srcref|standardGeneric|startsWith|stderr|stdin|stdout|stop|stopifnot|storage\\.mode|str2expression|str2lang|strftime|strptime|strrep|strsplit|strtoi|strtrim|structure|strwrap|sub|subset|subset\\.data\\.frame|subset\\.default|subset\\.matrix|substitute|substr|substring|sum|summary|summary\\.connection|summary\\.data\\.frame|Summary\\.data\\.frame|summary\\.Date|Summary\\.Date|summary\\.default|Summary\\.difftime|summary\\.factor|Summary\\.factor|summary\\.matrix|Summary\\.numeric_version|Summary\\.ordered|summary\\.POSIXct|Summary\\.POSIXct|summary\\.POSIXlt|Summary\\.POSIXlt|summary\\.proc_time|summary\\.srcfile|summary\\.srcref|summary\\.table|summary\\.warnings|suppressMessages|suppressPackageStartupMessages|suppressWarnings|suspendInterrupts|svd|sweep|switch|sys\\.call|sys\\.calls|Sys\\.chmod|Sys\\.Date|sys\\.frame|sys\\.frames|sys\\.function|Sys\\.getenv|Sys\\.getlocale|Sys\\.getpid|Sys\\.glob|Sys\\.info|sys\\.load\\.image|Sys\\.localeconv|sys\\.nframe|sys\\.on\\.exit|sys\\.parent|sys\\.parents|Sys\\.readlink|sys\\.save\\.image|Sys\\.setenv|Sys\\.setFileTime|Sys\\.setlocale|Sys\\.sleep|sys\\.source|sys\\.status|system|system2|system\\.file|system\\.time|Sys\\.time|Sys\\.timezone|Sys\\.umask|Sys\\.unsetenv|Sys\\.which|t|table|tabulate|tan|tanh|tanpi|tapply|taskCallbackManager|tcrossprod|t\\.data\\.frame|t\\.default|tempdir|tempfile|textConnection|textConnectionValue|tolower|topenv|toString|toString\\.default|toupper|trace|traceback|tracemem|tracingState|transform|transform\\.data\\.frame|transform\\.default|trigamma|trimws|trunc|truncate|truncate\\.connection|trunc\\.Date|trunc\\.POSIXt|try|tryCatch|tryInvokeRestart|typeof|unclass|undebug|union|unique|unique\\.array|unique\\.data\\.frame|unique\\.default|unique\\.matrix|unique\\.numeric_version|unique\\.POSIXlt|unique\\.warnings|units|units\\.difftime|unix\\.time|unlink|unlist|unloadNamespace|unlockBinding|unname|unserialize|unsplit|untrace|untracemem|unz|upper\\.tri|url|UseMethod|utf8ToInt|validEnc|validUTF8|vapply|vector|Vectorize|version|warning|warningCondition|warnings|weekdays|weekdays\\.Date|weekdays\\.POSIXt|which|which\\.max|which\\.min|while|with|withAutoprint|withCallingHandlers|with\\.default|within|within\\.data\\.frame|within\\.list|withRestarts|withVisible|write|writeBin|writeChar|write\\.dcf|writeLines|xor|xpdrows\\.data\\.frame|xtfrm|xtfrm\\.AsIs|xtfrm\\.data\\.frame|xtfrm\\.Date|xtfrm\\.default|xtfrm\\.difftime|xtfrm\\.factor|xtfrm\\.numeric_version|xtfrm\\.POSIXct|xtfrm\\.POSIXlt|xzfile|zapsmall)\\s*(\\()"},{captures:{1:{name:"support.function.r"}},match:"\\b(abline|arrows|assocplot|axis|Axis|axis\\.Date|axis\\.POSIXct|axTicks|barplot|barplot\\.default|box|boxplot|boxplot\\.default|boxplot\\.matrix|bxp|cdplot|clip|close\\.screen|co\\.intervals|contour|contour\\.default|coplot|curve|dotchart|erase\\.screen|filled\\.contour|fourfoldplot|frame|grconvertX|grconvertY|grid|hist|hist\\.default|identify|image|image\\.default|layout|layout\\.show|lcm|legend|lines|lines\\.default|locator|matlines|matplot|matpoints|mosaicplot|mtext|pairs|pairs\\.default|panel\\.smooth|par|persp|pie|plot|plot\\.default|plot\\.design|plot\\.function|plot\\.new|plot\\.window|plot\\.xy|points|points\\.default|polygon|polypath|rasterImage|rect|rug|screen|segments|smoothScatter|spineplot|split\\.screen|stars|stem|strheight|stripchart|strwidth|sunflowerplot|symbols|text|text\\.default|title|xinch|xspline|xyinch|yinch)\\s*(\\()"},{captures:{1:{name:"support.function.r"}},match:"\\b(adjustcolor|as\\.graphicsAnnot|as\\.raster|axisTicks|bitmap|blues9|bmp|boxplot\\.stats|cairo_pdf|cairo_ps|cairoSymbolFont|check\\.options|chull|CIDFont|cm|cm\\.colors|col2rgb|colorConverter|colorRamp|colorRampPalette|colors|colorspaces|colours|contourLines|convertColor|densCols|dev2bitmap|devAskNewPage|dev\\.capabilities|dev\\.capture|dev\\.control|dev\\.copy|dev\\.copy2eps|dev\\.copy2pdf|dev\\.cur|dev\\.flush|dev\\.hold|deviceIsInteractive|dev\\.interactive|dev\\.list|dev\\.new|dev\\.next|dev\\.off|dev\\.prev|dev\\.print|dev\\.set|dev\\.size|embedFonts|extendrange|getGraphicsEvent|getGraphicsEventEnv|graphics\\.off|gray|gray\\.colors|grey|grey\\.colors|grSoftVersion|hcl|hcl\\.colors|hcl\\.pals|heat\\.colors|Hershey|hsv|is\\.raster|jpeg|make\\.rgb|n2mfrow|nclass\\.FD|nclass\\.scott|nclass\\.Sturges|palette|palette\\.colors|palette\\.pals|pdf|pdfFonts|pdf\\.options|pictex|png|postscript|postscriptFonts|ps\\.options|quartz|quartzFont|quartzFonts|quartz\\.options|quartz\\.save|rainbow|recordGraphics|recordPlot|replayPlot|rgb|rgb2hsv|savePlot|setEPS|setGraphicsEventEnv|setGraphicsEventHandlers|setPS|svg|terrain\\.colors|tiff|topo\\.colors|trans3d|Type1Font|x11|X11|X11Font|X11Fonts|X11\\.options|xfig|xy\\.coords|xyTable|xyz\\.coords)\\s*(\\()"},{captures:{1:{name:"support.function.r"}},match:"\\b(addNextMethod|allNames|Arith|as|asMethodDefinition|assignClassDef|assignMethodsMetaData|balanceMethodsList|cacheGenericsMetaData|cacheMetaData|cacheMethod|callGeneric|callNextMethod|canCoerce|cbind2|checkAtAssignment|checkSlotAssignment|classesToAM|classLabel|classMetaName|className|coerce|Compare|completeClassDefinition|completeExtends|completeSubclasses|Complex|conformMethod|defaultDumpName|defaultPrototype|doPrimitiveMethod|dumpMethod|dumpMethods|el|elNamed|empty\\.dump|emptyMethodsList|evalOnLoad|evalqOnLoad|evalSource|existsFunction|existsMethod|extends|externalRefMethod|finalDefaultMethod|findClass|findFunction|findMethod|findMethods|findMethodSignatures|findUnique|fixPre1\\.8|formalArgs|functionBody|generic\\.skeleton|getAllSuperClasses|getClass|getClassDef|getClasses|getDataPart|getFunction|getGeneric|getGenerics|getGroup|getGroupMembers|getLoadActions|getMethod|getMethods|getMethodsForDispatch|getMethodsMetaData|getPackageName|getRefClass|getSlots|getValidity|hasArg|hasLoadAction|hasMethod|hasMethods|implicitGeneric|inheritedSlotNames|initFieldArgs|initialize|initRefFields|insertClassMethods|insertMethod|insertSource|is|isClass|isClassDef|isClassUnion|isGeneric|isGrammarSymbol|isGroup|isRematched|isSealedClass|isSealedMethod|isVirtualClass|isXS3Class|kronecker|languageEl|linearizeMlist|listFromMethods|listFromMlist|loadMethod|Logic|makeClassRepresentation|makeExtends|makeGeneric|makeMethodsList|makePrototypeFromClassDef|makeStandardGeneric|matchSignature|Math|Math2|mergeMethods|metaNameUndo|MethodAddCoerce|methodSignatureMatrix|method\\.skeleton|MethodsList|MethodsListSelect|methodsPackageMetaName|missingArg|multipleClasses|new|newBasic|newClassRepresentation|newEmptyObject|Ops|packageSlot|possibleExtends|prohibitGeneric|promptClass|promptMethods|prototype|Quote|rbind2|reconcilePropertiesAndPrototype|registerImplicitGenerics|rematchDefinition|removeClass|removeGeneric|removeMethod|removeMethods|representation|requireMethods|resetClass|resetGeneric|S3Class|S3Part|sealClass|selectMethod|selectSuperClasses|setAs|setClass|setClassUnion|setDataPart|setGeneric|setGenericImplicit|setGroupGeneric|setIs|setLoadAction|setLoadActions|setMethod|setOldClass|setPackageName|setPrimitiveMethods|setRefClass|setReplaceMethod|setValidity|show|showClass|showDefault|showExtends|showMethods|showMlist|signature|SignatureMethod|sigToEnv|slot|slotNames|slotsFromS3|substituteDirect|substituteFunctionArgs|Summary|superClassDepth|testInheritedMethods|testVirtual|tryNew|unRematchDefinition|validObject|validSlotNames)\\s*(\\()"},{captures:{1:{name:"support.function.r"}},match:"\\b(acf|acf2AR|add1|addmargins|add\\.scope|aggregate|aggregate\\.data\\.frame|aggregate\\.ts|AIC|alias|anova|ansari\\.test|aov|approx|approxfun|ar|ar\\.burg|arima|arima0|arima0\\.diag|arima\\.sim|ARMAacf|ARMAtoMA|ar\\.mle|ar\\.ols|ar\\.yw|as\\.dendrogram|as\\.dist|as\\.formula|as\\.hclust|asOneSidedFormula|as\\.stepfun|as\\.ts|ave|bandwidth\\.kernel|bartlett\\.test|BIC|binomial|binom\\.test|biplot|Box\\.test|bw\\.bcv|bw\\.nrd|bw\\.nrd0|bw\\.SJ|bw\\.ucv|C|cancor|case\\.names|ccf|chisq\\.test|cmdscale|coef|coefficients|complete\\.cases|confint|confint\\.default|confint\\.lm|constrOptim|contrasts|contr\\.helmert|contr\\.poly|contr\\.SAS|contr\\.sum|contr\\.treatment|convolve|cooks\\.distance|cophenetic|cor|cor\\.test|cov|cov2cor|covratio|cov\\.wt|cpgram|cutree|cycle|D|dbeta|dbinom|dcauchy|dchisq|decompose|delete\\.response|deltat|dendrapply|density|density\\.default|deriv|deriv3|deviance|dexp|df|DF2formula|dfbeta|dfbetas|dffits|df\\.kernel|df\\.residual|dgamma|dgeom|dhyper|diffinv|dist|dlnorm|dlogis|dmultinom|dnbinom|dnorm|dpois|drop1|drop\\.scope|drop\\.terms|dsignrank|dt|dummy\\.coef|dummy\\.coef\\.lm|dunif|dweibull|dwilcox|ecdf|eff\\.aovlist|effects|embed|end|estVar|expand\\.model\\.frame|extractAIC|factanal|factor\\.scope|family|fft|filter|fisher\\.test|fitted|fitted\\.values|fivenum|fligner\\.test|formula|frequency|friedman\\.test|ftable|Gamma|gaussian|get_all_vars|getCall|getInitial|glm|glm\\.control|glm\\.fit|hasTsp|hat|hatvalues|hclust|heatmap|HoltWinters|influence|influence\\.measures|integrate|interaction\\.plot|inverse\\.gaussian|IQR|is\\.empty\\.model|is\\.leaf|is\\.mts|isoreg|is\\.stepfun|is\\.ts|is\\.tskernel|KalmanForecast|KalmanLike|KalmanRun|KalmanSmooth|kernapply|kernel|kmeans|knots|kruskal\\.test|ksmooth|ks\\.test|lag|lag\\.plot|line|lm|lm\\.fit|lm\\.influence|lm\\.wfit|loadings|loess|loess\\.control|loess\\.smooth|logLik|loglin|lowess|ls\\.diag|lsfit|ls\\.print|mad|mahalanobis|makeARIMA|make\\.link|makepredictcall|manova|mantelhaen\\.test|mauchly\\.test|mcnemar\\.test|median|median\\.default|medpolish|model\\.extract|model\\.frame|model\\.frame\\.default|model\\.matrix|model\\.matrix\\.default|model\\.matrix\\.lm|model\\.offset|model\\.response|model\\.tables|model\\.weights|monthplot|mood\\.test|mvfft|na\\.action|na\\.contiguous|na\\.exclude|na\\.fail|na\\.omit|na\\.pass|napredict|naprint|naresid|nextn|nlm|nlminb|nls|nls\\.control|NLSstAsymptotic|NLSstClosestX|NLSstLfAsymptote|NLSstRtAsymptote|nobs|numericDeriv|offset|oneway\\.test|optim|optimHess|optimise|optimize|order\\.dendrogram|pacf|p\\.adjust|p\\.adjust\\.methods|Pair|pairwise\\.prop\\.test|pairwise\\.table|pairwise\\.t\\.test|pairwise\\.wilcox\\.test|pbeta|pbinom|pbirthday|pcauchy|pchisq|pexp|pf|pgamma|pgeom|phyper|plclust|plnorm|plogis|plot\\.ecdf|plot\\.spec\\.coherency|plot\\.spec\\.phase|plot\\.stepfun|plot\\.ts|pnbinom|pnorm|poisson|poisson\\.test|poly|polym|power|power\\.anova\\.test|power\\.prop\\.test|power\\.t\\.test|ppoints|ppois|ppr|PP\\.test|prcomp|predict|predict\\.glm|predict\\.lm|preplot|princomp|printCoefmat|profile|proj|promax|prop\\.test|prop\\.trend\\.test|psignrank|pt|ptukey|punif|pweibull|pwilcox|qbeta|qbinom|qbirthday|qcauchy|qchisq|qexp|qf|qgamma|qgeom|qhyper|qlnorm|qlogis|qnbinom|qnorm|qpois|qqline|qqnorm|qqplot|qsignrank|qt|qtukey|quade\\.test|quantile|quasi|quasibinomial|quasipoisson|qunif|qweibull|qwilcox|r2dtable|rbeta|rbinom|rcauchy|rchisq|read\\.ftable|rect\\.hclust|reformulate|relevel|reorder|replications|reshape|resid|residuals|residuals\\.glm|residuals\\.lm|rexp|rf|rgamma|rgeom|rhyper|rlnorm|rlogis|rmultinom|rnbinom|rnorm|rpois|rsignrank|rstandard|rstudent|rt|runif|runmed|rweibull|rwilcox|rWishart|scatter\\.smooth|screeplot|sd|se\\.contrast|selfStart|setNames|shapiro\\.test|sigma|simulate|smooth|smoothEnds|smooth\\.spline|sortedXyData|spec\\.ar|spec\\.pgram|spec\\.taper|spectrum|spline|splinefun|splinefunH|SSasymp|SSasympOff|SSasympOrig|SSbiexp|SSD|SSfol|SSfpl|SSgompertz|SSlogis|SSmicmen|SSweibull|start|stat\\.anova|step|stepfun|stl|StructTS|summary\\.aov|summary\\.glm|summary\\.lm|summary\\.manova|summary\\.stepfun|supsmu|symnum|termplot|terms|terms\\.formula|time|toeplitz|ts|tsdiag|ts\\.intersect|tsp|ts\\.plot|tsSmooth|ts\\.union|t\\.test|TukeyHSD|uniroot|update|update\\.default|update\\.formula|var|variable\\.names|varimax|var\\.test|vcov|weighted\\.mean|weighted\\.residuals|weights|wilcox\\.test|window|write\\.ftable|xtabs)\\s*(\\()"},{captures:{1:{name:"support.function.r"}},match:"\\b(adist|alarm|apropos|aregexec|argsAnywhere|asDateBuilt|askYesNo|aspell|aspell_package_C_files|aspell_package_Rd_files|aspell_package_R_files|aspell_package_vignettes|aspell_write_personal_dictionary_file|as\\.person|as\\.personList|as\\.relistable|as\\.roman|assignInMyNamespace|assignInNamespace|available\\.packages|bibentry|browseEnv|browseURL|browseVignettes|bug\\.report|capture\\.output|changedFiles|charClass|checkCRAN|chooseBioCmirror|chooseCRANmirror|citation|cite|citeNatbib|citEntry|citFooter|citHeader|close\\.socket|combn|compareVersion|contrib\\.url|count\\.fields|create\\.post|data|dataentry|data\\.entry|de|debugcall|debugger|demo|de\\.ncols|de\\.restore|de\\.setup|download\\.file|download\\.packages|dump\\.frames|edit|emacs|example|file\\.edit|fileSnapshot|file_test|find|findLineNum|fix|fixInNamespace|flush\\.console|formatOL|formatUL|getAnywhere|getCRANmirrors|getFromNamespace|getParseData|getParseText|getS3method|getSrcDirectory|getSrcFilename|getSrcLocation|getSrcref|getTxtProgressBar|glob2rx|globalVariables|hasName|head|head\\.matrix|help|help\\.request|help\\.search|help\\.start|history|hsearch_db|hsearch_db_concepts|hsearch_db_keywords|installed\\.packages|install\\.packages|is\\.relistable|isS3method|isS3stdGeneric|limitedLabels|loadhistory|localeToCharset|lsf\\.str|ls\\.str|maintainer|make\\.packages\\.html|makeRweaveLatexCodeRunner|make\\.socket|memory\\.limit|memory\\.size|menu|methods|mirror2html|modifyList|new\\.packages|news|nsl|object\\.size|old\\.packages|osVersion|packageDate|packageDescription|packageName|package\\.skeleton|packageStatus|packageVersion|page|person|personList|pico|process\\.events|prompt|promptData|promptImport|promptPackage|rc\\.getOption|rc\\.options|rc\\.settings|rc\\.status|readCitationFile|read\\.csv|read\\.csv2|read\\.delim|read\\.delim2|read\\.DIF|read\\.fortran|read\\.fwf|read\\.socket|read\\.table|recover|relist|remove\\.packages|removeSource|Rprof|Rprofmem|RShowDoc|RSiteSearch|rtags|Rtangle|RtangleFinish|RtangleRuncode|RtangleSetup|RtangleWritedoc|RweaveChunkPrefix|RweaveEvalWithOpt|RweaveLatex|RweaveLatexFinish|RweaveLatexOptions|RweaveLatexSetup|RweaveLatexWritedoc|RweaveTryStop|savehistory|select\\.list|sessionInfo|setBreakpoint|setRepositories|setTxtProgressBar|stack|Stangle|str|strcapture|strOptions|summaryRprof|suppressForeignCheck|Sweave|SweaveHooks|SweaveSyntaxLatex|SweaveSyntaxNoweb|SweaveSyntConv|tail|tail\\.matrix|tar|timestamp|toBibtex|toLatex|txtProgressBar|type\\.convert|undebugcall|unstack|untar|unzip|update\\.packages|upgrade|URLdecode|URLencode|url\\.show|vi|View|vignette|warnErrList|write\\.csv|write\\.csv2|write\\.socket|write\\.table|xedit|xemacs|zip)\\s*(\\()"}]},comments:{patterns:[{captures:{1:{name:"comment.line.pragma.r"},2:{name:"entity.name.pragma.name.r"}},match:"^(#pragma[ \\t]+mark)[ \\t](.*)",name:"comment.line.pragma-mark.r"},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.r"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.r"}},end:"\\n",name:"comment.line.number-sign.r"}]}]},constants:{patterns:[{match:"\\b(pi|letters|LETTERS|month\\.abb|month\\.name)\\b",name:"support.constant.misc.r"},{match:"\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\b",name:"constant.language.r"},{match:"\\b0(x|X)[0-9a-fA-F]+i\\b",name:"constant.numeric.imaginary.hexadecimal.r"},{match:"\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?i\\b",name:"constant.numeric.imaginary.decimal.r"},{match:"\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?i\\b",name:"constant.numeric.imaginary.decimal.r"},{match:"\\b0(x|X)[0-9a-fA-F]+L\\b",name:"constant.numeric.integer.hexadecimal.r"},{match:"\\b(?:[0-9]+\\.?[0-9]*)(?:(e|E)(\\+|-)?[0-9]+)?L\\b",name:"constant.numeric.integer.decimal.r"},{match:"\\b0(x|X)[0-9a-fA-F]+\\b",name:"constant.numeric.float.hexadecimal.r"},{match:"\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?\\b",name:"constant.numeric.float.decimal.r"},{match:"\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?\\b",name:"constant.numeric.float.decimal.r"}]},"function-calls":{begin:"(?:\\b|(?=\\.))((?:[a-zA-Z._][\\w.]*|`[^`]+`))\\s*(\\()",beginCaptures:{1:{name:"variable.function.r"},2:{name:"punctuation.section.parens.begin.r"}},contentName:"meta.function-call.arguments.r",end:"(\\))",endCaptures:{1:{name:"punctuation.section.parens.end.r"}},name:"meta.function-call.r",patterns:[{include:"#function-parameters"}]},"function-declarations":{patterns:[{captures:{1:{name:"entity.name.function.r"},2:{name:"keyword.operator.assignment.r"},3:{name:"keyword.control.r"}},match:"((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*(<?<-|=(?!=))\\s*(function|\\\\)(?!\\w)",name:"meta.function.r",patterns:[{include:"#lambda-functions"}]}]},"function-parameters":{patterns:[{contentName:"meta.function-call.parameters.r",name:"meta.function-call.r"},{match:"(?:[a-zA-Z._][\\w.]*|`[^`]+`)(?=\\s[^=])",name:"variable.other.r"},{begin:"(?==)",end:"(?=[,)])",patterns:[{include:"source.r"}]},{match:",",name:"punctuation.separator.parameters.r"},{include:"source.r"}]},"general-variables":{patterns:[{captures:{1:{name:"variable.parameter.r"},2:{name:"keyword.operator.assignment.r"}},match:"([[:alpha:].][[:alnum:]._]*)\\s*(=)(?=[^=])"},{captures:{1:{name:"variable.parameter.r"},2:{name:"keyword.operator.assignment.r"}},match:"(`[^`]+`)\\s*(=)(?=[^=])"},{match:"\\b([\\d_][[:alnum:]._]+)\\b",name:"invalid.illegal.variable.other.r"},{match:"\\b([[:alnum:]_]+)(?=::)",name:"entity.namespace.r"},{match:"\\b([[:alnum:]._]+)\\b",name:"variable.other.r"},{match:"(`[^`]+`)",name:"variable.other.r"}]},keywords:{patterns:[{match:"\\b(break|next|repeat|else|in)\\b",name:"keyword.control.r"},{match:"\\b(ifelse|if|for|return|switch|while|invisible)\\b(?=\\s*\\()",name:"keyword.control.r"},{match:"(\\-|\\+|\\*|\\/|%\\/%|%%|%\\*%|%o%|%x%|\\^)",name:"keyword.operator.arithmetic.r"},{match:"(:=|<-|<<-|->|->>)",name:"keyword.operator.assignment.r"},{match:"(==|<=|>=|!=|<>|<|>|%in%)",name:"keyword.operator.comparison.r"},{match:"(!|&{1,2}|[|]{1,2})",name:"keyword.operator.logical.r"},{match:"(\\|>)",name:"keyword.operator.pipe.r"},{match:"(%between%|%chin%|%like%|%\\+%|%\\+replace%|%:%|%do%|%dopar%|%>%|%<>%|%T>%|%\\$%)",name:"keyword.operator.other.r"},{match:"(\\.\\.\\.|\\$|:|\\~|@)",name:"keyword.other.r"}]},"lambda-functions":{patterns:[{begin:"\\b(function)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.r"},2:{name:"punctuation.section.parens.begin.r"}},contentName:"meta.function.parameters.r",end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.r"}},name:"meta.function.r",patterns:[{include:"#comments"},{match:"(?:[a-zA-Z._][\\w.]*|`[^`]+`)",name:"variable.other.r"},{begin:"(?==)",end:"(?=[,)])",patterns:[{include:"source.r"}]},{match:",",name:"punctuation.separator.parameters.r"}]}]},roxygen:{patterns:[{begin:"^\\s*(#')\\s*",beginCaptures:{1:{name:"punctuation.definition.comment.r"}},end:"$\\n?",name:"comment.line.roxygen.r",patterns:[{captures:{1:{name:"keyword.other.r"},2:{name:"variable.parameter.r"}},match:"(@param)\\s*((?:[a-zA-Z._][\\w.]*|`[^`]+`))"},{match:"@[a-zA-Z0-9]+",name:"keyword.other.r"}]}]},"storage-type":{patterns:[{match:"\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw)\\b(?=\\s*\\()",name:"storage.type.r"}]},strings:{patterns:[{begin:'[rR]"(-*)\\[',beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:'\\]\\1"',endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.double.raw.r"},{begin:"[rR]'(-*)\\[",beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:"\\]\\1'",endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.single.raw.r"},{begin:'[rR]"(-*)\\{',beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:'\\}\\1"',endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.double.raw.r"},{begin:"[rR]'(-*)\\{",beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:"\\}\\1'",endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.single.raw.r"},{begin:'[rR]"(-*)\\(',beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:'\\)\\1"',endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.double.raw.r"},{begin:"[rR]'(-*)\\(",beginCaptures:{0:{name:"punctuation.definition.string.raw.begin.r"}},end:"\\)\\1'",endCaptures:{0:{name:"punctuation.definition.string.raw.end.r"}},name:"string.quoted.single.raw.r"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.r"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.r"}},name:"string.quoted.double.r",patterns:[{match:"\\\\.",name:"constant.character.escape.r"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.r"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.r"}},name:"string.quoted.single.r",patterns:[{match:"\\\\.",name:"constant.character.escape.r"}]}]}},scopeName:"source.r"});var a=[e];export{a as default}; diff --git a/assets/chunks/racket.B5NHDIr7.js b/assets/chunks/racket.B5NHDIr7.js new file mode 100644 index 000000000..bf028a774 --- /dev/null +++ b/assets/chunks/racket.B5NHDIr7.js @@ -0,0 +1,353 @@ +const e=Object.freeze({displayName:"Racket",name:"racket",patterns:[{include:"#comment"},{include:"#not-atom"},{include:"#atom"},{include:"#quote"},{match:"^#lang",name:"keyword.other.racket"}],repository:{args:{patterns:[{include:"#keyword"},{include:"#comment"},{include:"#default-args"},{match:"[^(\\#)\\[\\]{}\",'`;\\s][^()\\[\\]{}\",'`;\\s]*",name:"variable.parameter.racket"}]},argument:{patterns:[{begin:"(?x) (?<=[(\\[{]) \\s* (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},contentName:"variable.parameter.racket",end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}},{begin:`(?x) (?<=[(\\[{]) \\s* +(\\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,beginCaptures:{1:{name:"variable.parameter.racket"}},contentName:"variable.parameter.racket",end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:"punctuation.verbatim.begin.racket"},end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}}]}]},"argument-struct":{patterns:[{begin:"(?x) (?<=[(\\[{]) \\s* (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},contentName:"variable.other.member.racket",end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}},{begin:`(?x) (?<=[(\\[{]) \\s* +(\\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,beginCaptures:{1:{name:"variable.other.member.racket"}},contentName:"variable.other.member.racket",end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:"punctuation.verbatim.begin.racket"},end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}}]}]},atom:{patterns:[{include:"#bool"},{include:"#number"},{include:"#string"},{include:"#keyword"},{include:"#character"},{include:"#symbol"},{include:"#variable"}]},"base-string":{patterns:[{begin:'"',beginCaptures:{0:[{name:"punctuation.definition.string.begin.racket"}]},end:'"',endCaptures:{0:[{name:"punctuation.definition.string.end.racket"}]},name:"string.quoted.double.racket",patterns:[{include:"#escape-char"}]}]},binding:{patterns:[{begin:"(?x) (?<=[(\\[{]) \\s* (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},contentName:"entity.name.constant",end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}},{begin:`(?x) (?<=[(\\[{]) \\s* +(\\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,beginCaptures:{1:{name:"entity.name.constant"}},contentName:"entity.name.constant",end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:"punctuation.verbatim.begin.racket"},end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}}]}]},bool:{patterns:[{match:`(?x) +(?<=^|[()\\[\\]{}",'\`;\\s]) \\# +(?: [tT](?: rue)?|[fF](?: alse)?) +(?=[()\\[\\]{}",'\`;\\s]) +`,name:"constant.language.racket"}]},"builtin-functions":{patterns:[{include:"#format"},{include:"#define"},{include:"#lambda"},{include:"#struct"},{captures:{1:{name:"support.function.racket"}},match:`(?x) (?<=$|[()\\[\\]{}",'\`;\\s]) +( +\\.\\.\\. | _ | syntax-id-rules | syntax-rules | \\#%app | \\#%datum | \\#%declare | \\#%expression | \\#%module-begin | \\#%plain-app | \\#%plain-lambda | \\#%plain-module-begin | \\#%printing-module-begin | \\#%provide | \\#%require | \\#%stratified-body | \\#%top | \\#%top-interaction | \\#%variable-reference | \\.\\.\\. | :do-in | => | _ | all-defined-out | all-from-out | and | apply | arity-at-least | begin | begin-for-syntax | begin0 | call-with-input-file | call-with-input-file\\* | call-with-output-file | call-with-output-file\\* | case | case-lambda | combine-in | combine-out | cond | date | date\\* | define | define-for-syntax | define-logger | define-namespace-anchor | define-sequence-syntax | define-struct | define-struct\\/derived | define-syntax | define-syntax-rule | define-syntaxes | define-values | define-values-for-syntax | do | else | except-in | except-out | exn | exn:break | exn:break:hang-up | exn:break:terminate | exn:fail | exn:fail:contract | exn:fail:contract:arity | exn:fail:contract:continuation | exn:fail:contract:divide-by-zero | exn:fail:contract:non-fixnum-result | exn:fail:contract:variable | exn:fail:filesystem | exn:fail:filesystem:errno | exn:fail:filesystem:exists | exn:fail:filesystem:missing-module | exn:fail:filesystem:version | exn:fail:network | exn:fail:network:errno | exn:fail:out-of-memory | exn:fail:read | exn:fail:read:eof | exn:fail:read:non-char | exn:fail:syntax | exn:fail:syntax:missing-module | exn:fail:syntax:unbound | exn:fail:unsupported | exn:fail:user | file | for | for\\* | for\\*\\/and | for\\*\\/first | for\\*\\/fold | for\\*\\/fold\\/derived | for\\*\\/hash | for\\*\\/hasheq | for\\*\\/hasheqv | for\\*\\/last | for\\*\\/list | for\\*\\/lists | for\\*\\/or | for\\*\\/product | for\\*\\/sum | for\\*\\/vector | for-label | for-meta | for-syntax | for-template | for\\/and | for\\/first | for\\/fold | for\\/fold\\/derived | for\\/hash | for\\/hasheq | for\\/hasheqv | for\\/last | for\\/list | for\\/lists | for\\/or | for\\/product | for\\/sum | for\\/vector | gen:custom-write | gen:equal\\+hash | if | in-bytes | in-bytes-lines | in-directory | in-hash | in-hash-keys | in-hash-pairs | in-hash-values | in-immutable-hash | in-immutable-hash-keys | in-immutable-hash-pairs | in-immutable-hash-values | in-indexed | in-input-port-bytes | in-input-port-chars | in-lines | in-list | in-mlist | in-mutable-hash | in-mutable-hash-keys | in-mutable-hash-pairs | in-mutable-hash-values | in-naturals | in-port | in-producer | in-range | in-string | in-value | in-vector | in-weak-hash | in-weak-hash-keys | in-weak-hash-pairs | in-weak-hash-values | lambda | let | let\\* | let\\*-values | let-syntax | let-syntaxes | let-values | let\\/cc | let\\/ec | letrec | letrec-syntax | letrec-syntaxes | letrec-syntaxes\\+values | letrec-values | lib | local-require | log-debug | log-error | log-fatal | log-info | log-warning | module | module\\* | module\\+ | only-in | only-meta-in | open-input-file | open-input-output-file | open-output-file | or | parameterize | parameterize\\* | parameterize-break | planet | prefix-in | prefix-out | protect-out | provide | quasiquote | quasisyntax | quasisyntax\\/loc | quote | quote-syntax | quote-syntax\\/prune | regexp-match\\* | regexp-match-peek-positions\\* | regexp-match-positions\\* | relative-in | rename-in | rename-out | require | set! | set!-values | sort | srcloc | struct | struct-copy | struct-field-index | struct-out | submod | syntax | syntax-case | syntax-case\\* | syntax-id-rules | syntax-rules | syntax\\/loc | time | unless | unquote | unquote-splicing | unsyntax | unsyntax-splicing | when | with-continuation-mark | with-handlers | with-handlers\\* | with-input-from-file | with-output-to-file | with-syntax | λ | \\#%app | \\#%datum | \\#%declare | \\#%expression | \\#%module-begin | \\#%plain-app | \\#%plain-lambda | \\#%plain-module-begin | \\#%printing-module-begin | \\#%provide | \\#%require | \\#%stratified-body | \\#%top | \\#%top-interaction | \\#%variable-reference | -> | ->\\* | ->\\*m | ->d | ->dm | ->i | ->m | \\.\\.\\. | :do-in | <=\\/c | =\\/c | == | => | >=\\/c | _ | absent | abstract | add-between | all-defined-out | all-from-out | and | and\\/c | any | any\\/c | apply | arity-at-least | arrow-contract-info | augment | augment\\* | augment-final | augment-final\\* | augride | augride\\* | bad-number-of-results | begin | begin-for-syntax | begin0 | between\\/c | blame-add-context | box-immutable\\/c | box\\/c | call-with-atomic-output-file | call-with-file-lock\\/timeout | call-with-input-file | call-with-input-file\\* | call-with-output-file | call-with-output-file\\* | case | case-> | case->m | case-lambda | channel\\/c | char-in\\/c | check-duplicates | class | class\\* | class-field-accessor | class-field-mutator | class\\/c | class\\/derived | combine-in | combine-out | command-line | compound-unit | compound-unit\\/infer | cond | cons\\/c | cons\\/dc | continuation-mark-key\\/c | contract | contract-exercise | contract-out | contract-struct | contracted | copy-directory\\/files | current-contract-region | date | date\\* | define | define-compound-unit | define-compound-unit\\/infer | define-contract-struct | define-custom-hash-types | define-custom-set-types | define-for-syntax | define-local-member-name | define-logger | define-match-expander | define-member-name | define-module-boundary-contract | define-namespace-anchor | define-opt\\/c | define-sequence-syntax | define-serializable-class | define-serializable-class\\* | define-signature | define-signature-form | define-struct | define-struct\\/contract | define-struct\\/derived | define-syntax | define-syntax-rule | define-syntaxes | define-unit | define-unit-binding | define-unit-from-context | define-unit\\/contract | define-unit\\/new-import-export | define-unit\\/s | define-values | define-values-for-export | define-values-for-syntax | define-values\\/invoke-unit | define-values\\/invoke-unit\\/infer | define\\/augment | define\\/augment-final | define\\/augride | define\\/contract | define\\/final-prop | define\\/match | define\\/overment | define\\/override | define\\/override-final | define\\/private | define\\/public | define\\/public-final | define\\/pubment | define\\/subexpression-pos-prop | define\\/subexpression-pos-prop\\/name | delay | delay\\/idle | delay\\/name | delay\\/strict | delay\\/sync | delay\\/thread | delete-directory\\/files | dict->list | dict-can-functional-set\\? | dict-can-remove-keys\\? | dict-clear | dict-clear! | dict-copy | dict-count | dict-empty\\? | dict-for-each | dict-has-key\\? | dict-implements\\/c | dict-implements\\? | dict-iterate-first | dict-iterate-key | dict-iterate-next | dict-iterate-value | dict-keys | dict-map | dict-mutable\\? | dict-ref | dict-ref! | dict-remove | dict-remove! | dict-set | dict-set! | dict-set\\* | dict-set\\*! | dict-update | dict-update! | dict-values | dict\\? | display-lines | display-lines-to-file | display-to-file | do | dynamic->\\* | dynamic-place | dynamic-place\\* | else | eof-evt | except | except-in | except-out | exn | exn:break | exn:break:hang-up | exn:break:terminate | exn:fail | exn:fail:contract | exn:fail:contract:arity | exn:fail:contract:blame | exn:fail:contract:continuation | exn:fail:contract:divide-by-zero | exn:fail:contract:non-fixnum-result | exn:fail:contract:variable | exn:fail:filesystem | exn:fail:filesystem:errno | exn:fail:filesystem:exists | exn:fail:filesystem:missing-module | exn:fail:filesystem:version | exn:fail:network | exn:fail:network:errno | exn:fail:object | exn:fail:out-of-memory | exn:fail:read | exn:fail:read:eof | exn:fail:read:non-char | exn:fail:syntax | exn:fail:syntax:missing-module | exn:fail:syntax:unbound | exn:fail:unsupported | exn:fail:user | export | extends | failure-cont | field | field-bound\\? | file | file->bytes | file->bytes-lines | file->lines | file->list | file->string | file->value | find-files | find-relative-path | first-or\\/c | flat-contract-with-explanation | flat-murec-contract | flat-rec-contract | for | for\\* | for\\*\\/and | for\\*\\/async | for\\*\\/first | for\\*\\/fold | for\\*\\/fold\\/derived | for\\*\\/hash | for\\*\\/hasheq | for\\*\\/hasheqv | for\\*\\/last | for\\*\\/list | for\\*\\/lists | for\\*\\/mutable-set | for\\*\\/mutable-seteq | for\\*\\/mutable-seteqv | for\\*\\/or | for\\*\\/product | for\\*\\/set | for\\*\\/seteq | for\\*\\/seteqv | for\\*\\/stream | for\\*\\/sum | for\\*\\/vector | for\\*\\/weak-set | for\\*\\/weak-seteq | for\\*\\/weak-seteqv | for-label | for-meta | for-syntax | for-template | for\\/and | for\\/async | for\\/first | for\\/fold | for\\/fold\\/derived | for\\/hash | for\\/hasheq | for\\/hasheqv | for\\/last | for\\/list | for\\/lists | for\\/mutable-set | for\\/mutable-seteq | for\\/mutable-seteqv | for\\/or | for\\/product | for\\/set | for\\/seteq | for\\/seteqv | for\\/stream | for\\/sum | for\\/vector | for\\/weak-set | for\\/weak-seteq | for\\/weak-seteqv | gen:custom-write | gen:dict | gen:equal\\+hash | gen:set | gen:stream | generic | get-field | get-preference | hash\\/c | hash\\/dc | if | implies | import | in-bytes | in-bytes-lines | in-dict | in-dict-keys | in-dict-values | in-directory | in-hash | in-hash-keys | in-hash-pairs | in-hash-values | in-immutable-hash | in-immutable-hash-keys | in-immutable-hash-pairs | in-immutable-hash-values | in-immutable-set | in-indexed | in-input-port-bytes | in-input-port-chars | in-lines | in-list | in-mlist | in-mutable-hash | in-mutable-hash-keys | in-mutable-hash-pairs | in-mutable-hash-values | in-mutable-set | in-naturals | in-port | in-producer | in-range | in-set | in-slice | in-stream | in-string | in-syntax | in-value | in-vector | in-weak-hash | in-weak-hash-keys | in-weak-hash-pairs | in-weak-hash-values | in-weak-set | include | include-at\\/relative-to | include-at\\/relative-to\\/reader | include\\/reader | inherit | inherit-field | inherit\\/inner | inherit\\/super | init | init-depend | init-field | init-rest | inner | inspect | instantiate | integer-in | interface | interface\\* | invariant-assertion | invoke-unit | invoke-unit\\/infer | lambda | lazy | let | let\\* | let\\*-values | let-syntax | let-syntaxes | let-values | let\\/cc | let\\/ec | letrec | letrec-syntax | letrec-syntaxes | letrec-syntaxes\\+values | letrec-values | lib | link | list\\*of | list\\/c | listof | local | local-require | log-debug | log-error | log-fatal | log-info | log-warning | make-custom-hash | make-custom-hash-types | make-custom-set | make-custom-set-types | make-handle-get-preference-locked | make-immutable-custom-hash | make-mutable-custom-set | make-object | make-temporary-file | make-weak-custom-hash | make-weak-custom-set | match | match\\* | match\\*\\/derived | match-define | match-define-values | match-lambda | match-lambda\\* | match-lambda\\*\\* | match-let | match-let\\* | match-let\\*-values | match-let-values | match-letrec | match-letrec-values | match\\/derived | match\\/values | member-name-key | mixin | module | module\\* | module\\+ | nand | new | new-∀\\/c | new-∃\\/c | non-empty-listof | none\\/c | nor | not\\/c | object-contract | object\\/c | one-of\\/c | only | only-in | only-meta-in | open | open-input-file | open-input-output-file | open-output-file | opt\\/c | or | or\\/c | overment | overment\\* | override | override\\* | override-final | override-final\\* | parameter\\/c | parameterize | parameterize\\* | parameterize-break | parametric->\\/c | pathlist-closure | peek-bytes!-evt | peek-bytes-avail!-evt | peek-bytes-evt | peek-string!-evt | peek-string-evt | peeking-input-port | place | place\\* | place\\/context | planet | port->bytes | port->bytes-lines | port->lines | port->string | prefix | prefix-in | prefix-out | pretty-format | private | private\\* | procedure-arity-includes\\/c | process | process\\* | process\\*\\/ports | process\\/ports | promise\\/c | prompt-tag\\/c | prop:dict\\/contract | protect-out | provide | provide-signature-elements | provide\\/contract | public | public\\* | public-final | public-final\\* | pubment | pubment\\* | quasiquote | quasisyntax | quasisyntax\\/loc | quote | quote-syntax | quote-syntax\\/prune | raise-blame-error | raise-not-cons-blame-error | range | read-bytes!-evt | read-bytes-avail!-evt | read-bytes-evt | read-bytes-line-evt | read-line-evt | read-string!-evt | read-string-evt | real-in | recontract-out | recursive-contract | regexp-match\\* | regexp-match-evt | regexp-match-peek-positions\\* | regexp-match-positions\\* | relative-in | relocate-input-port | relocate-output-port | remove-duplicates | rename | rename-in | rename-inner | rename-out | rename-super | require | send | send\\* | send\\+ | send-generic | send\\/apply | send\\/keyword-apply | sequence\\/c | set! | set!-values | set-field! | set\\/c | shared | sort | srcloc | stream | stream\\* | stream-cons | string-join | string-len\\/c | string-normalize-spaces | string-replace | string-split | string-trim | struct | struct\\* | struct-copy | struct-field-index | struct-out | struct\\/c | struct\\/ctc | struct\\/dc | submod | super | super-instantiate | super-make-object | super-new | symbols | syntax | syntax-case | syntax-case\\* | syntax-id-rules | syntax-rules | syntax\\/c | syntax\\/loc | system | system\\* | system\\*\\/exit-code | system\\/exit-code | tag | this | this% | thunk | thunk\\* | time | transplant-input-port | transplant-output-port | unconstrained-domain-> | unit | unit-from-context | unit\\/c | unit\\/new-import-export | unit\\/s | unless | unquote | unquote-splicing | unsyntax | unsyntax-splicing | values\\/drop | vector-immutable\\/c | vector-immutableof | vector-sort | vector-sort! | vector\\/c | vectorof | when | with-continuation-mark | with-contract | with-contract-continuation-mark | with-handlers | with-handlers\\* | with-input-from-file | with-method | with-output-to-file | with-syntax | wrapped-extra-arg-arrow | write-to-file | ~\\.a | ~\\.s | ~\\.v | ~a | ~e | ~r | ~s | ~v | λ | expand-for-clause | for-clause-syntax-protect | syntax-pattern-variable\\? | \\* | \\+ | - | \\/ | < | <= | = | > | >= | abort-current-continuation | abs | absolute-path\\? | acos | add1 | alarm-evt | always-evt | andmap | angle | append | arithmetic-shift | arity-at-least-value | arity-at-least\\? | asin | assf | assoc | assq | assv | atan | banner | bitwise-and | bitwise-bit-field | bitwise-bit-set\\? | bitwise-ior | bitwise-not | bitwise-xor | boolean\\? | bound-identifier=\\? | box | box-cas! | box-immutable | box\\? | break-enabled | break-parameterization\\? | break-thread | build-list | build-path | build-path\\/convention-type | build-string | build-vector | byte-pregexp | byte-pregexp\\? | byte-ready\\? | byte-regexp | byte-regexp\\? | byte\\? | bytes | bytes->immutable-bytes | bytes->list | bytes->path | bytes->path-element | bytes->string\\/latin-1 | bytes->string\\/locale | bytes->string\\/utf-8 | bytes-append | bytes-close-converter | bytes-convert | bytes-convert-end | bytes-converter\\? | bytes-copy | bytes-copy! | bytes-environment-variable-name\\? | bytes-fill! | bytes-length | bytes-open-converter | bytes-ref | bytes-set! | bytes-utf-8-index | bytes-utf-8-length | bytes-utf-8-ref | bytes<\\? | bytes=\\? | bytes>\\? | bytes\\? | caaaar | caaadr | caaar | caadar | caaddr | caadr | caar | cadaar | cadadr | cadar | caddar | cadddr | caddr | cadr | call-in-nested-thread | call-with-break-parameterization | call-with-composable-continuation | call-with-continuation-barrier | call-with-continuation-prompt | call-with-current-continuation | call-with-default-reading-parameterization | call-with-escape-continuation | call-with-exception-handler | call-with-immediate-continuation-mark | call-with-parameterization | call-with-semaphore | call-with-semaphore\\/enable-break | call-with-values | call\\/cc | call\\/ec | car | cdaaar | cdaadr | cdaar | cdadar | cdaddr | cdadr | cdar | cddaar | cddadr | cddar | cdddar | cddddr | cdddr | cddr | cdr | ceiling | channel-get | channel-put | channel-put-evt | channel-put-evt\\? | channel-try-get | channel\\? | chaperone-box | chaperone-channel | chaperone-continuation-mark-key | chaperone-evt | chaperone-hash | chaperone-of\\? | chaperone-procedure | chaperone-procedure\\* | chaperone-prompt-tag | chaperone-struct | chaperone-struct-type | chaperone-vector | chaperone-vector\\* | chaperone\\? | char->integer | char-alphabetic\\? | char-blank\\? | char-ci<=\\? | char-ci<\\? | char-ci=\\? | char-ci>=\\? | char-ci>\\? | char-downcase | char-foldcase | char-general-category | char-graphic\\? | char-iso-control\\? | char-lower-case\\? | char-numeric\\? | char-punctuation\\? | char-ready\\? | char-symbolic\\? | char-title-case\\? | char-titlecase | char-upcase | char-upper-case\\? | char-utf-8-length | char-whitespace\\? | char<=\\? | char<\\? | char=\\? | char>=\\? | char>\\? | char\\? | check-duplicate-identifier | check-tail-contract | checked-procedure-check-and-extract | choice-evt | cleanse-path | close-input-port | close-output-port | collect-garbage | collection-file-path | collection-path | compile | compile-allow-set!-undefined | compile-context-preservation-enabled | compile-enforce-module-constants | compile-syntax | compiled-expression-recompile | compiled-expression\\? | compiled-module-expression\\? | complete-path\\? | complex\\? | compose | compose1 | cons | continuation-mark-key\\? | continuation-mark-set->context | continuation-mark-set->list | continuation-mark-set->list\\* | continuation-mark-set-first | continuation-mark-set\\? | continuation-marks | continuation-prompt-available\\? | continuation-prompt-tag\\? | continuation\\? | copy-file | cos | current-break-parameterization | current-code-inspector | current-command-line-arguments | current-compile | current-compiled-file-roots | current-continuation-marks | current-custodian | current-directory | current-directory-for-user | current-drive | current-environment-variables | current-error-port | current-eval | current-evt-pseudo-random-generator | current-force-delete-permissions | current-gc-milliseconds | current-get-interaction-input-port | current-inexact-milliseconds | current-input-port | current-inspector | current-library-collection-links | current-library-collection-paths | current-load | current-load-extension | current-load-relative-directory | current-load\\/use-compiled | current-locale | current-logger | current-memory-use | current-milliseconds | current-module-declare-name | current-module-declare-source | current-module-name-resolver | current-module-path-for-load | current-namespace | current-output-port | current-parameterization | current-plumber | current-preserved-thread-cell-values | current-print | current-process-milliseconds | current-prompt-read | current-pseudo-random-generator | current-read-interaction | current-reader-guard | current-readtable | current-seconds | current-security-guard | current-subprocess-custodian-mode | current-thread | current-thread-group | current-thread-initial-stack-size | current-write-relative-directory | custodian-box-value | custodian-box\\? | custodian-limit-memory | custodian-managed-list | custodian-memory-accounting-available\\? | custodian-require-memory | custodian-shut-down\\? | custodian-shutdown-all | custodian\\? | custom-print-quotable-accessor | custom-print-quotable\\? | custom-write-accessor | custom-write\\? | date\\*-nanosecond | date\\*-time-zone-name | date\\*\\? | date-day | date-dst\\? | date-hour | date-minute | date-month | date-second | date-time-zone-offset | date-week-day | date-year | date-year-day | date\\? | datum->syntax | datum-intern-literal | default-continuation-prompt-tag | delete-directory | delete-file | denominator | directory-exists\\? | directory-list | display | displayln | double-flonum\\? | dump-memory-stats | dynamic-require | dynamic-require-for-syntax | dynamic-wind | environment-variables-copy | environment-variables-names | environment-variables-ref | environment-variables-set! | environment-variables\\? | eof | eof-object\\? | ephemeron-value | ephemeron\\? | eprintf | eq-hash-code | eq\\? | equal-hash-code | equal-secondary-hash-code | equal\\? | equal\\?\\/recur | eqv-hash-code | eqv\\? | error | error-display-handler | error-escape-handler | error-print-context-length | error-print-source-location | error-print-width | error-value->string-handler | eval | eval-jit-enabled | eval-syntax | even\\? | evt\\? | exact->inexact | exact-integer\\? | exact-nonnegative-integer\\? | exact-positive-integer\\? | exact\\? | executable-yield-handler | exit | exit-handler | exn-continuation-marks | exn-message | exn:break-continuation | exn:break:hang-up\\? | exn:break:terminate\\? | exn:break\\? | exn:fail:contract:arity\\? | exn:fail:contract:continuation\\? | exn:fail:contract:divide-by-zero\\? | exn:fail:contract:non-fixnum-result\\? | exn:fail:contract:variable-id | exn:fail:contract:variable\\? | exn:fail:contract\\? | exn:fail:filesystem:errno-errno | exn:fail:filesystem:errno\\? | exn:fail:filesystem:exists\\? | exn:fail:filesystem:missing-module-path | exn:fail:filesystem:missing-module\\? | exn:fail:filesystem:version\\? | exn:fail:filesystem\\? | exn:fail:network:errno-errno | exn:fail:network:errno\\? | exn:fail:network\\? | exn:fail:out-of-memory\\? | exn:fail:read-srclocs | exn:fail:read:eof\\? | exn:fail:read:non-char\\? | exn:fail:read\\? | exn:fail:syntax-exprs | exn:fail:syntax:missing-module-path | exn:fail:syntax:missing-module\\? | exn:fail:syntax:unbound\\? | exn:fail:syntax\\? | exn:fail:unsupported\\? | exn:fail:user\\? | exn:fail\\? | exn:missing-module-accessor | exn:missing-module\\? | exn:srclocs-accessor | exn:srclocs\\? | exn\\? | exp | expand | expand-for-clause | expand-once | expand-syntax | expand-syntax-once | expand-syntax-to-top-form | expand-to-top-form | expand-user-path | explode-path | expt | file-exists\\? | file-or-directory-identity | file-or-directory-modify-seconds | file-or-directory-permissions | file-position | file-position\\* | file-size | file-stream-buffer-mode | file-stream-port\\? | file-truncate | filesystem-change-evt | filesystem-change-evt-cancel | filesystem-change-evt\\? | filesystem-root-list | filter | find-executable-path | find-library-collection-links | find-library-collection-paths | find-system-path | findf | fixnum\\? | floating-point-bytes->real | flonum\\? | floor | flush-output | foldl | foldr | for-clause-syntax-protect | for-each | format | fprintf | free-identifier=\\? | free-label-identifier=\\? | free-template-identifier=\\? | free-transformer-identifier=\\? | gcd | generate-temporaries | gensym | get-output-bytes | get-output-string | getenv | global-port-print-handler | guard-evt | handle-evt | handle-evt\\? | hash | hash->list | hash-clear | hash-clear! | hash-copy | hash-copy-clear | hash-count | hash-empty\\? | hash-eq\\? | hash-equal\\? | hash-eqv\\? | hash-for-each | hash-has-key\\? | hash-iterate-first | hash-iterate-key | hash-iterate-key\\+value | hash-iterate-next | hash-iterate-pair | hash-iterate-value | hash-keys | hash-keys-subset\\? | hash-map | hash-placeholder\\? | hash-ref | hash-ref! | hash-remove | hash-remove! | hash-set | hash-set! | hash-set\\* | hash-set\\*! | hash-update | hash-update! | hash-values | hash-weak\\? | hash\\? | hasheq | hasheqv | identifier-binding | identifier-binding-symbol | identifier-label-binding | identifier-prune-lexical-context | identifier-prune-to-source-module | identifier-remove-from-definition-context | identifier-template-binding | identifier-transformer-binding | identifier\\? | imag-part | immutable\\? | impersonate-box | impersonate-channel | impersonate-continuation-mark-key | impersonate-hash | impersonate-procedure | impersonate-procedure\\* | impersonate-prompt-tag | impersonate-struct | impersonate-vector | impersonate-vector\\* | impersonator-ephemeron | impersonator-of\\? | impersonator-prop:application-mark | impersonator-property-accessor-procedure\\? | impersonator-property\\? | impersonator\\? | in-cycle | in-parallel | in-sequences | in-values\\*-sequence | in-values-sequence | inexact->exact | inexact-real\\? | inexact\\? | input-port\\? | inspector-superior\\? | inspector\\? | integer->char | integer->integer-bytes | integer-bytes->integer | integer-length | integer-sqrt | integer-sqrt\\/remainder | integer\\? | internal-definition-context-binding-identifiers | internal-definition-context-introduce | internal-definition-context-seal | internal-definition-context\\? | keyword->string | keyword-apply | keyword<\\? | keyword\\? | kill-thread | lcm | legacy-match-expander\\? | length | liberal-define-context\\? | link-exists\\? | list | list\\* | list->bytes | list->string | list->vector | list-ref | list-tail | list\\? | load | load-extension | load-on-demand-enabled | load-relative | load-relative-extension | load\\/cd | load\\/use-compiled | local-expand | local-expand\\/capture-lifts | local-transformer-expand | local-transformer-expand\\/capture-lifts | locale-string-encoding | log | log-all-levels | log-level-evt | log-level\\? | log-max-level | log-message | log-receiver\\? | logger-name | logger\\? | magnitude | make-arity-at-least | make-base-empty-namespace | make-base-namespace | make-bytes | make-channel | make-continuation-mark-key | make-continuation-prompt-tag | make-custodian | make-custodian-box | make-date | make-date\\* | make-derived-parameter | make-directory | make-do-sequence | make-empty-namespace | make-environment-variables | make-ephemeron | make-exn | make-exn:break | make-exn:break:hang-up | make-exn:break:terminate | make-exn:fail | make-exn:fail:contract | make-exn:fail:contract:arity | make-exn:fail:contract:continuation | make-exn:fail:contract:divide-by-zero | make-exn:fail:contract:non-fixnum-result | make-exn:fail:contract:variable | make-exn:fail:filesystem | make-exn:fail:filesystem:errno | make-exn:fail:filesystem:exists | make-exn:fail:filesystem:missing-module | make-exn:fail:filesystem:version | make-exn:fail:network | make-exn:fail:network:errno | make-exn:fail:out-of-memory | make-exn:fail:read | make-exn:fail:read:eof | make-exn:fail:read:non-char | make-exn:fail:syntax | make-exn:fail:syntax:missing-module | make-exn:fail:syntax:unbound | make-exn:fail:unsupported | make-exn:fail:user | make-file-or-directory-link | make-hash | make-hash-placeholder | make-hasheq | make-hasheq-placeholder | make-hasheqv | make-hasheqv-placeholder | make-immutable-hash | make-immutable-hasheq | make-immutable-hasheqv | make-impersonator-property | make-input-port | make-inspector | make-keyword-procedure | make-known-char-range-list | make-log-receiver | make-logger | make-output-port | make-parameter | make-phantom-bytes | make-pipe | make-placeholder | make-plumber | make-polar | make-prefab-struct | make-pseudo-random-generator | make-reader-graph | make-readtable | make-rectangular | make-rename-transformer | make-resolved-module-path | make-security-guard | make-semaphore | make-set!-transformer | make-shared-bytes | make-sibling-inspector | make-special-comment | make-srcloc | make-string | make-struct-field-accessor | make-struct-field-mutator | make-struct-type | make-struct-type-property | make-syntax-delta-introducer | make-syntax-introducer | make-thread-cell | make-thread-group | make-vector | make-weak-box | make-weak-hash | make-weak-hasheq | make-weak-hasheqv | make-will-executor | map | match-\\.\\.\\.-nesting | match-expander\\? | max | mcar | mcdr | mcons | member | memf | memq | memv | min | module->exports | module->imports | module->indirect-exports | module->language-info | module->namespace | module-compiled-cross-phase-persistent\\? | module-compiled-exports | module-compiled-imports | module-compiled-indirect-exports | module-compiled-language-info | module-compiled-name | module-compiled-submodules | module-declared\\? | module-path-index-join | module-path-index-resolve | module-path-index-split | module-path-index-submodule | module-path-index\\? | module-path\\? | module-predefined\\? | module-provide-protected\\? | modulo | mpair\\? | nack-guard-evt | namespace-anchor->empty-namespace | namespace-anchor->namespace | namespace-anchor\\? | namespace-attach-module | namespace-attach-module-declaration | namespace-base-phase | namespace-mapped-symbols | namespace-module-identifier | namespace-module-registry | namespace-require | namespace-require\\/constant | namespace-require\\/copy | namespace-require\\/expansion-time | namespace-set-variable-value! | namespace-symbol->identifier | namespace-syntax-introduce | namespace-undefine-variable! | namespace-unprotect-module | namespace-variable-value | namespace\\? | negative\\? | never-evt | newline | normal-case-path | not | null | null\\? | number->string | number\\? | numerator | object-name | odd\\? | open-input-bytes | open-input-string | open-output-bytes | open-output-string | ormap | output-port\\? | pair\\? | parameter-procedure=\\? | parameter\\? | parameterization\\? | parse-leftover->\\* | path->bytes | path->complete-path | path->directory-path | path->string | path-add-extension | path-add-suffix | path-convention-type | path-element->bytes | path-element->string | path-for-some-system\\? | path-list-string->path-list | path-replace-extension | path-replace-suffix | path-string\\? | path<\\? | path\\? | peek-byte | peek-byte-or-special | peek-bytes | peek-bytes! | peek-bytes-avail! | peek-bytes-avail!\\* | peek-bytes-avail!\\/enable-break | peek-char | peek-char-or-special | peek-string | peek-string! | phantom-bytes\\? | pipe-content-length | placeholder-get | placeholder-set! | placeholder\\? | plumber-add-flush! | plumber-flush-all | plumber-flush-handle-remove! | plumber-flush-handle\\? | plumber\\? | poll-guard-evt | port-closed-evt | port-closed\\? | port-commit-peeked | port-count-lines! | port-count-lines-enabled | port-counts-lines\\? | port-display-handler | port-file-identity | port-file-unlock | port-next-location | port-print-handler | port-progress-evt | port-provides-progress-evts\\? | port-read-handler | port-try-file-lock\\? | port-write-handler | port-writes-atomic\\? | port-writes-special\\? | port\\? | positive\\? | prefab-key->struct-type | prefab-key\\? | prefab-struct-key | pregexp | pregexp\\? | primitive-closure\\? | primitive-result-arity | primitive\\? | print | print-as-expression | print-boolean-long-form | print-box | print-graph | print-hash-table | print-mpair-curly-braces | print-pair-curly-braces | print-reader-abbreviations | print-struct | print-syntax-width | print-unreadable | print-vector-length | printf | println | procedure->method | procedure-arity | procedure-arity-includes\\? | procedure-arity\\? | procedure-closure-contents-eq\\? | procedure-extract-target | procedure-impersonator\\*\\? | procedure-keywords | procedure-reduce-arity | procedure-reduce-keyword-arity | procedure-rename | procedure-result-arity | procedure-specialize | procedure-struct-type\\? | procedure\\? | progress-evt\\? | prop:arity-string | prop:authentic | prop:checked-procedure | prop:custom-print-quotable | prop:custom-write | prop:equal\\+hash | prop:evt | prop:exn:missing-module | prop:exn:srclocs | prop:expansion-contexts | prop:impersonator-of | prop:input-port | prop:legacy-match-expander | prop:liberal-define-context | prop:match-expander | prop:object-name | prop:output-port | prop:procedure | prop:rename-transformer | prop:sequence | prop:set!-transformer | pseudo-random-generator->vector | pseudo-random-generator-vector\\? | pseudo-random-generator\\? | putenv | quotient | quotient\\/remainder | raise | raise-argument-error | raise-arguments-error | raise-arity-error | raise-mismatch-error | raise-range-error | raise-result-error | raise-syntax-error | raise-type-error | raise-user-error | random | random-seed | rational\\? | rationalize | read | read-accept-bar-quote | read-accept-box | read-accept-compiled | read-accept-dot | read-accept-graph | read-accept-infix-dot | read-accept-lang | read-accept-quasiquote | read-accept-reader | read-byte | read-byte-or-special | read-bytes | read-bytes! | read-bytes-avail! | read-bytes-avail!\\* | read-bytes-avail!\\/enable-break | read-bytes-line | read-case-sensitive | read-cdot | read-char | read-char-or-special | read-curly-brace-as-paren | read-curly-brace-with-tag | read-decimal-as-inexact | read-eval-print-loop | read-language | read-line | read-on-demand-source | read-square-bracket-as-paren | read-square-bracket-with-tag | read-string | read-string! | read-syntax | read-syntax\\/recursive | read\\/recursive | readtable-mapping | readtable\\? | real->decimal-string | real->double-flonum | real->floating-point-bytes | real->single-flonum | real-part | real\\? | regexp | regexp-match | regexp-match-exact\\? | regexp-match-peek | regexp-match-peek-immediate | regexp-match-peek-positions | regexp-match-peek-positions-immediate | regexp-match-peek-positions-immediate\\/end | regexp-match-peek-positions\\/end | regexp-match-positions | regexp-match-positions\\/end | regexp-match\\/end | regexp-match\\? | regexp-max-lookbehind | regexp-quote | regexp-replace | regexp-replace\\* | regexp-replace-quote | regexp-replaces | regexp-split | regexp-try-match | regexp\\? | relative-path\\? | remainder | remove | remove\\* | remq | remq\\* | remv | remv\\* | rename-file-or-directory | rename-transformer-target | rename-transformer\\? | replace-evt | reroot-path | resolve-path | resolved-module-path-name | resolved-module-path\\? | reverse | round | seconds->date | security-guard\\? | semaphore-peek-evt | semaphore-peek-evt\\? | semaphore-post | semaphore-try-wait\\? | semaphore-wait | semaphore-wait\\/enable-break | semaphore\\? | sequence->stream | sequence-generate | sequence-generate\\* | sequence\\? | set!-transformer-procedure | set!-transformer\\? | set-box! | set-mcar! | set-mcdr! | set-phantom-bytes! | set-port-next-location! | shared-bytes | shell-execute | simplify-path | sin | single-flonum\\? | sleep | special-comment-value | special-comment\\? | split-path | sqrt | srcloc->string | srcloc-column | srcloc-line | srcloc-position | srcloc-source | srcloc-span | srcloc\\? | stop-after | stop-before | string | string->bytes\\/latin-1 | string->bytes\\/locale | string->bytes\\/utf-8 | string->immutable-string | string->keyword | string->list | string->number | string->path | string->path-element | string->symbol | string->uninterned-symbol | string->unreadable-symbol | string-append | string-ci<=\\? | string-ci<\\? | string-ci=\\? | string-ci>=\\? | string-ci>\\? | string-copy | string-copy! | string-downcase | string-environment-variable-name\\? | string-fill! | string-foldcase | string-length | string-locale-ci<\\? | string-locale-ci=\\? | string-locale-ci>\\? | string-locale-downcase | string-locale-upcase | string-locale<\\? | string-locale=\\? | string-locale>\\? | string-normalize-nfc | string-normalize-nfd | string-normalize-nfkc | string-normalize-nfkd | string-port\\? | string-ref | string-set! | string-titlecase | string-upcase | string-utf-8-length | string<=\\? | string<\\? | string=\\? | string>=\\? | string>\\? | string\\? | struct->vector | struct-accessor-procedure\\? | struct-constructor-procedure\\? | struct-info | struct-mutator-procedure\\? | struct-predicate-procedure\\? | struct-type-info | struct-type-make-constructor | struct-type-make-predicate | struct-type-property-accessor-procedure\\? | struct-type-property\\? | struct-type\\? | struct:arity-at-least | struct:date | struct:date\\* | struct:exn | struct:exn:break | struct:exn:break:hang-up | struct:exn:break:terminate | struct:exn:fail | struct:exn:fail:contract | struct:exn:fail:contract:arity | struct:exn:fail:contract:continuation | struct:exn:fail:contract:divide-by-zero | struct:exn:fail:contract:non-fixnum-result | struct:exn:fail:contract:variable | struct:exn:fail:filesystem | struct:exn:fail:filesystem:errno | struct:exn:fail:filesystem:exists | struct:exn:fail:filesystem:missing-module | struct:exn:fail:filesystem:version | struct:exn:fail:network | struct:exn:fail:network:errno | struct:exn:fail:out-of-memory | struct:exn:fail:read | struct:exn:fail:read:eof | struct:exn:fail:read:non-char | struct:exn:fail:syntax | struct:exn:fail:syntax:missing-module | struct:exn:fail:syntax:unbound | struct:exn:fail:unsupported | struct:exn:fail:user | struct:srcloc | struct\\? | sub1 | subbytes | subprocess | subprocess-group-enabled | subprocess-kill | subprocess-pid | subprocess-status | subprocess-wait | subprocess\\? | substring | symbol->string | symbol-interned\\? | symbol-unreadable\\? | symbol<\\? | symbol\\? | sync | sync\\/enable-break | sync\\/timeout | sync\\/timeout\\/enable-break | syntax->datum | syntax->list | syntax-arm | syntax-column | syntax-debug-info | syntax-disarm | syntax-e | syntax-line | syntax-local-bind-syntaxes | syntax-local-certifier | syntax-local-context | syntax-local-expand-expression | syntax-local-get-shadower | syntax-local-identifier-as-binding | syntax-local-introduce | syntax-local-lift-context | syntax-local-lift-expression | syntax-local-lift-module | syntax-local-lift-module-end-declaration | syntax-local-lift-provide | syntax-local-lift-require | syntax-local-lift-values-expression | syntax-local-make-definition-context | syntax-local-make-delta-introducer | syntax-local-match-introduce | syntax-local-module-defined-identifiers | syntax-local-module-exports | syntax-local-module-required-identifiers | syntax-local-name | syntax-local-phase-level | syntax-local-submodules | syntax-local-transforming-module-provides\\? | syntax-local-value | syntax-local-value\\/immediate | syntax-original\\? | syntax-pattern-variable\\? | syntax-position | syntax-property | syntax-property-preserved\\? | syntax-property-symbol-keys | syntax-protect | syntax-rearm | syntax-recertify | syntax-shift-phase-level | syntax-source | syntax-source-module | syntax-span | syntax-taint | syntax-tainted\\? | syntax-track-origin | syntax-transforming-module-expression\\? | syntax-transforming-with-lifts\\? | syntax-transforming\\? | syntax\\? | system-big-endian\\? | system-idle-evt | system-language\\+country | system-library-subpath | system-path-convention-type | system-type | tan | terminal-port\\? | thread | thread-cell-ref | thread-cell-set! | thread-cell-values\\? | thread-cell\\? | thread-dead-evt | thread-dead\\? | thread-group\\? | thread-receive | thread-receive-evt | thread-resume | thread-resume-evt | thread-rewind-receive | thread-running\\? | thread-send | thread-suspend | thread-suspend-evt | thread-try-receive | thread-wait | thread\\/suspend-to-kill | thread\\? | time-apply | truncate | unbox | uncaught-exception-handler | unquoted-printing-string | unquoted-printing-string-value | unquoted-printing-string\\? | use-collection-link-paths | use-compiled-file-check | use-compiled-file-paths | use-user-specific-search-paths | values | variable-reference->empty-namespace | variable-reference->module-base-phase | variable-reference->module-declaration-inspector | variable-reference->module-path-index | variable-reference->module-source | variable-reference->namespace | variable-reference->phase | variable-reference->resolved-module-path | variable-reference-constant\\? | variable-reference\\? | vector | vector->immutable-vector | vector->list | vector->pseudo-random-generator | vector->pseudo-random-generator! | vector->values | vector-cas! | vector-copy! | vector-fill! | vector-immutable | vector-length | vector-ref | vector-set! | vector-set-performance-stats! | vector\\? | version | void | void\\? | weak-box-value | weak-box\\? | will-execute | will-executor\\? | will-register | will-try-execute | wrap-evt | write | write-byte | write-bytes | write-bytes-avail | write-bytes-avail\\* | write-bytes-avail-evt | write-bytes-avail\\/enable-break | write-char | write-special | write-special-avail\\* | write-special-evt | write-string | writeln | zero\\? | \\* | \\*list\\/c | \\+ | - | \\/ | < | <\\/c | <= | = | > | >\\/c | >= | abort-current-continuation | abs | absolute-path\\? | acos | add1 | alarm-evt | always-evt | andmap | angle | append | append\\* | append-map | argmax | argmin | arithmetic-shift | arity-at-least-value | arity-at-least\\? | arity-checking-wrapper | arity-includes\\? | arity=\\? | arrow-contract-info-accepts-arglist | arrow-contract-info-chaperone-procedure | arrow-contract-info-check-first-order | arrow-contract-info\\? | asin | assf | assoc | assq | assv | atan | banner | base->-doms\\/c | base->-rngs\\/c | base->\\? | bitwise-and | bitwise-bit-field | bitwise-bit-set\\? | bitwise-ior | bitwise-not | bitwise-xor | blame-add-car-context | blame-add-cdr-context | blame-add-missing-party | blame-add-nth-arg-context | blame-add-range-context | blame-add-unknown-context | blame-context | blame-contract | blame-fmt->-string | blame-missing-party\\? | blame-negative | blame-original\\? | blame-positive | blame-replace-negative | blame-source | blame-swap | blame-swapped\\? | blame-update | blame-value | blame\\? | boolean=\\? | boolean\\? | bound-identifier=\\? | box | box-cas! | box-immutable | box\\? | break-enabled | break-parameterization\\? | break-thread | build-chaperone-contract-property | build-compound-type-name | build-contract-property | build-flat-contract-property | build-list | build-path | build-path\\/convention-type | build-string | build-vector | byte-pregexp | byte-pregexp\\? | byte-ready\\? | byte-regexp | byte-regexp\\? | byte\\? | bytes | bytes->immutable-bytes | bytes->list | bytes->path | bytes->path-element | bytes->string\\/latin-1 | bytes->string\\/locale | bytes->string\\/utf-8 | bytes-append | bytes-append\\* | bytes-close-converter | bytes-convert | bytes-convert-end | bytes-converter\\? | bytes-copy | bytes-copy! | bytes-environment-variable-name\\? | bytes-fill! | bytes-join | bytes-length | bytes-no-nuls\\? | bytes-open-converter | bytes-ref | bytes-set! | bytes-utf-8-index | bytes-utf-8-length | bytes-utf-8-ref | bytes<\\? | bytes=\\? | bytes>\\? | bytes\\? | caaaar | caaadr | caaar | caadar | caaddr | caadr | caar | cadaar | cadadr | cadar | caddar | cadddr | caddr | cadr | call-in-nested-thread | call-with-break-parameterization | call-with-composable-continuation | call-with-continuation-barrier | call-with-continuation-prompt | call-with-current-continuation | call-with-default-reading-parameterization | call-with-escape-continuation | call-with-exception-handler | call-with-immediate-continuation-mark | call-with-input-bytes | call-with-input-string | call-with-output-bytes | call-with-output-string | call-with-parameterization | call-with-semaphore | call-with-semaphore\\/enable-break | call-with-values | call\\/cc | call\\/ec | car | cartesian-product | cdaaar | cdaadr | cdaar | cdadar | cdaddr | cdadr | cdar | cddaar | cddadr | cddar | cdddar | cddddr | cdddr | cddr | cdr | ceiling | channel-get | channel-put | channel-put-evt | channel-put-evt\\? | channel-try-get | channel\\? | chaperone-box | chaperone-channel | chaperone-continuation-mark-key | chaperone-contract-property\\? | chaperone-contract\\? | chaperone-evt | chaperone-hash | chaperone-hash-set | chaperone-of\\? | chaperone-procedure | chaperone-procedure\\* | chaperone-prompt-tag | chaperone-struct | chaperone-struct-type | chaperone-vector | chaperone-vector\\* | chaperone\\? | char->integer | char-alphabetic\\? | char-blank\\? | char-ci<=\\? | char-ci<\\? | char-ci=\\? | char-ci>=\\? | char-ci>\\? | char-downcase | char-foldcase | char-general-category | char-graphic\\? | char-in | char-iso-control\\? | char-lower-case\\? | char-numeric\\? | char-punctuation\\? | char-ready\\? | char-symbolic\\? | char-title-case\\? | char-titlecase | char-upcase | char-upper-case\\? | char-utf-8-length | char-whitespace\\? | char<=\\? | char<\\? | char=\\? | char>=\\? | char>\\? | char\\? | check-duplicate-identifier | checked-procedure-check-and-extract | choice-evt | class->interface | class-info | class-seal | class-unseal | class\\? | cleanse-path | close-input-port | close-output-port | coerce-chaperone-contract | coerce-chaperone-contracts | coerce-contract | coerce-contract\\/f | coerce-contracts | coerce-flat-contract | coerce-flat-contracts | collect-garbage | collection-file-path | collection-path | combinations | compile | compile-allow-set!-undefined | compile-context-preservation-enabled | compile-enforce-module-constants | compile-syntax | compiled-expression-recompile | compiled-expression\\? | compiled-module-expression\\? | complete-path\\? | complex\\? | compose | compose1 | conjoin | conjugate | cons | cons\\? | const | continuation-mark-key\\? | continuation-mark-set->context | continuation-mark-set->list | continuation-mark-set->list\\* | continuation-mark-set-first | continuation-mark-set\\? | continuation-marks | continuation-prompt-available\\? | continuation-prompt-tag\\? | continuation\\? | contract-continuation-mark-key | contract-custom-write-property-proc | contract-first-order | contract-first-order-passes\\? | contract-late-neg-projection | contract-name | contract-proc | contract-projection | contract-property\\? | contract-random-generate | contract-random-generate-fail | contract-random-generate-fail\\? | contract-random-generate-get-current-environment | contract-random-generate-stash | contract-random-generate\\/choose | contract-stronger\\? | contract-struct-exercise | contract-struct-generate | contract-struct-late-neg-projection | contract-struct-list-contract\\? | contract-val-first-projection | contract\\? | convert-stream | copy-file | copy-port | cos | cosh | count | current-blame-format | current-break-parameterization | current-code-inspector | current-command-line-arguments | current-compile | current-compiled-file-roots | current-continuation-marks | current-custodian | current-directory | current-directory-for-user | current-drive | current-environment-variables | current-error-port | current-eval | current-evt-pseudo-random-generator | current-force-delete-permissions | current-future | current-gc-milliseconds | current-get-interaction-input-port | current-inexact-milliseconds | current-input-port | current-inspector | current-library-collection-links | current-library-collection-paths | current-load | current-load-extension | current-load-relative-directory | current-load\\/use-compiled | current-locale | current-logger | current-memory-use | current-milliseconds | current-module-declare-name | current-module-declare-source | current-module-name-resolver | current-module-path-for-load | current-namespace | current-output-port | current-parameterization | current-plumber | current-preserved-thread-cell-values | current-print | current-process-milliseconds | current-prompt-read | current-pseudo-random-generator | current-read-interaction | current-reader-guard | current-readtable | current-seconds | current-security-guard | current-subprocess-custodian-mode | current-thread | current-thread-group | current-thread-initial-stack-size | current-write-relative-directory | curry | curryr | custodian-box-value | custodian-box\\? | custodian-limit-memory | custodian-managed-list | custodian-memory-accounting-available\\? | custodian-require-memory | custodian-shut-down\\? | custodian-shutdown-all | custodian\\? | custom-print-quotable-accessor | custom-print-quotable\\? | custom-write-accessor | custom-write-property-proc | custom-write\\? | date\\*-nanosecond | date\\*-time-zone-name | date\\*\\? | date-day | date-dst\\? | date-hour | date-minute | date-month | date-second | date-time-zone-offset | date-week-day | date-year | date-year-day | date\\? | datum->syntax | datum-intern-literal | default-continuation-prompt-tag | degrees->radians | delete-directory | delete-file | denominator | dict-iter-contract | dict-key-contract | dict-value-contract | directory-exists\\? | directory-list | disjoin | display | displayln | double-flonum\\? | drop | drop-common-prefix | drop-right | dropf | dropf-right | dump-memory-stats | dup-input-port | dup-output-port | dynamic-get-field | dynamic-object\\/c | dynamic-require | dynamic-require-for-syntax | dynamic-send | dynamic-set-field! | dynamic-wind | eighth | empty | empty-sequence | empty-stream | empty\\? | environment-variables-copy | environment-variables-names | environment-variables-ref | environment-variables-set! | environment-variables\\? | eof | eof-object\\? | ephemeron-value | ephemeron\\? | eprintf | eq-contract-val | eq-contract\\? | eq-hash-code | eq\\? | equal-contract-val | equal-contract\\? | equal-hash-code | equal-secondary-hash-code | equal<%> | equal\\? | equal\\?\\/recur | eqv-hash-code | eqv\\? | error | error-display-handler | error-escape-handler | error-print-context-length | error-print-source-location | error-print-width | error-value->string-handler | eval | eval-jit-enabled | eval-syntax | even\\? | evt\\/c | evt\\? | exact->inexact | exact-ceiling | exact-floor | exact-integer\\? | exact-nonnegative-integer\\? | exact-positive-integer\\? | exact-round | exact-truncate | exact\\? | executable-yield-handler | exit | exit-handler | exn-continuation-marks | exn-message | exn:break-continuation | exn:break:hang-up\\? | exn:break:terminate\\? | exn:break\\? | exn:fail:contract:arity\\? | exn:fail:contract:blame-object | exn:fail:contract:blame\\? | exn:fail:contract:continuation\\? | exn:fail:contract:divide-by-zero\\? | exn:fail:contract:non-fixnum-result\\? | exn:fail:contract:variable-id | exn:fail:contract:variable\\? | exn:fail:contract\\? | exn:fail:filesystem:errno-errno | exn:fail:filesystem:errno\\? | exn:fail:filesystem:exists\\? | exn:fail:filesystem:missing-module-path | exn:fail:filesystem:missing-module\\? | exn:fail:filesystem:version\\? | exn:fail:filesystem\\? | exn:fail:network:errno-errno | exn:fail:network:errno\\? | exn:fail:network\\? | exn:fail:object\\? | exn:fail:out-of-memory\\? | exn:fail:read-srclocs | exn:fail:read:eof\\? | exn:fail:read:non-char\\? | exn:fail:read\\? | exn:fail:syntax-exprs | exn:fail:syntax:missing-module-path | exn:fail:syntax:missing-module\\? | exn:fail:syntax:unbound\\? | exn:fail:syntax\\? | exn:fail:unsupported\\? | exn:fail:user\\? | exn:fail\\? | exn:misc:match\\? | exn:missing-module-accessor | exn:missing-module\\? | exn:srclocs-accessor | exn:srclocs\\? | exn\\? | exp | expand | expand-once | expand-syntax | expand-syntax-once | expand-syntax-to-top-form | expand-to-top-form | expand-user-path | explode-path | expt | externalizable<%> | failure-result\\/c | false | false\\/c | false\\? | field-names | fifth | file-exists\\? | file-name-from-path | file-or-directory-identity | file-or-directory-modify-seconds | file-or-directory-permissions | file-position | file-position\\* | file-size | file-stream-buffer-mode | file-stream-port\\? | file-truncate | filename-extension | filesystem-change-evt | filesystem-change-evt-cancel | filesystem-change-evt\\? | filesystem-root-list | filter | filter-map | filter-not | filter-read-input-port | find-executable-path | find-library-collection-links | find-library-collection-paths | find-system-path | findf | first | fixnum\\? | flat-contract | flat-contract-predicate | flat-contract-property\\? | flat-contract\\? | flat-named-contract | flatten | floating-point-bytes->real | flonum\\? | floor | flush-output | fold-files | foldl | foldr | for-each | force | format | fourth | fprintf | free-identifier=\\? | free-label-identifier=\\? | free-template-identifier=\\? | free-transformer-identifier=\\? | fsemaphore-count | fsemaphore-post | fsemaphore-try-wait\\? | fsemaphore-wait | fsemaphore\\? | future | future\\? | futures-enabled\\? | gcd | generate-member-key | generate-temporaries | generic-set\\? | generic\\? | gensym | get-output-bytes | get-output-string | get\\/build-late-neg-projection | get\\/build-val-first-projection | getenv | global-port-print-handler | group-by | group-execute-bit | group-read-bit | group-write-bit | guard-evt | handle-evt | handle-evt\\? | has-blame\\? | has-contract\\? | hash | hash->list | hash-clear | hash-clear! | hash-copy | hash-copy-clear | hash-count | hash-empty\\? | hash-eq\\? | hash-equal\\? | hash-eqv\\? | hash-for-each | hash-has-key\\? | hash-iterate-first | hash-iterate-key | hash-iterate-key\\+value | hash-iterate-next | hash-iterate-pair | hash-iterate-value | hash-keys | hash-keys-subset\\? | hash-map | hash-placeholder\\? | hash-ref | hash-ref! | hash-remove | hash-remove! | hash-set | hash-set! | hash-set\\* | hash-set\\*! | hash-update | hash-update! | hash-values | hash-weak\\? | hash\\? | hasheq | hasheqv | identifier-binding | identifier-binding-symbol | identifier-label-binding | identifier-prune-lexical-context | identifier-prune-to-source-module | identifier-remove-from-definition-context | identifier-template-binding | identifier-transformer-binding | identifier\\? | identity | if\\/c | imag-part | immutable\\? | impersonate-box | impersonate-channel | impersonate-continuation-mark-key | impersonate-hash | impersonate-hash-set | impersonate-procedure | impersonate-procedure\\* | impersonate-prompt-tag | impersonate-struct | impersonate-vector | impersonate-vector\\* | impersonator-contract\\? | impersonator-ephemeron | impersonator-of\\? | impersonator-prop:application-mark | impersonator-prop:blame | impersonator-prop:contracted | impersonator-property-accessor-procedure\\? | impersonator-property\\? | impersonator\\? | implementation\\? | implementation\\?\\/c | in-combinations | in-cycle | in-dict-pairs | in-parallel | in-permutations | in-sequences | in-values\\*-sequence | in-values-sequence | index-of | index-where | indexes-of | indexes-where | inexact->exact | inexact-real\\? | inexact\\? | infinite\\? | input-port-append | input-port\\? | inspector-superior\\? | inspector\\? | instanceof\\/c | integer->char | integer->integer-bytes | integer-bytes->integer | integer-length | integer-sqrt | integer-sqrt\\/remainder | integer\\? | interface->method-names | interface-extension\\? | interface\\? | internal-definition-context-binding-identifiers | internal-definition-context-introduce | internal-definition-context-seal | internal-definition-context\\? | is-a\\? | is-a\\?\\/c | keyword->string | keyword-apply | keyword<\\? | keyword\\? | keywords-match | kill-thread | last | last-pair | lcm | length | liberal-define-context\\? | link-exists\\? | list | list\\* | list->bytes | list->mutable-set | list->mutable-seteq | list->mutable-seteqv | list->set | list->seteq | list->seteqv | list->string | list->vector | list->weak-set | list->weak-seteq | list->weak-seteqv | list-contract\\? | list-prefix\\? | list-ref | list-set | list-tail | list-update | list\\? | listen-port-number\\? | load | load-extension | load-on-demand-enabled | load-relative | load-relative-extension | load\\/cd | load\\/use-compiled | local-expand | local-expand\\/capture-lifts | local-transformer-expand | local-transformer-expand\\/capture-lifts | locale-string-encoding | log | log-all-levels | log-level-evt | log-level\\? | log-max-level | log-message | log-receiver\\? | logger-name | logger\\? | magnitude | make-arity-at-least | make-base-empty-namespace | make-base-namespace | make-bytes | make-channel | make-chaperone-contract | make-continuation-mark-key | make-continuation-prompt-tag | make-contract | make-custodian | make-custodian-box | make-date | make-date\\* | make-derived-parameter | make-directory | make-directory\\* | make-do-sequence | make-empty-namespace | make-environment-variables | make-ephemeron | make-exn | make-exn:break | make-exn:break:hang-up | make-exn:break:terminate | make-exn:fail | make-exn:fail:contract | make-exn:fail:contract:arity | make-exn:fail:contract:blame | make-exn:fail:contract:continuation | make-exn:fail:contract:divide-by-zero | make-exn:fail:contract:non-fixnum-result | make-exn:fail:contract:variable | make-exn:fail:filesystem | make-exn:fail:filesystem:errno | make-exn:fail:filesystem:exists | make-exn:fail:filesystem:missing-module | make-exn:fail:filesystem:version | make-exn:fail:network | make-exn:fail:network:errno | make-exn:fail:object | make-exn:fail:out-of-memory | make-exn:fail:read | make-exn:fail:read:eof | make-exn:fail:read:non-char | make-exn:fail:syntax | make-exn:fail:syntax:missing-module | make-exn:fail:syntax:unbound | make-exn:fail:unsupported | make-exn:fail:user | make-file-or-directory-link | make-flat-contract | make-fsemaphore | make-generic | make-hash | make-hash-placeholder | make-hasheq | make-hasheq-placeholder | make-hasheqv | make-hasheqv-placeholder | make-immutable-hash | make-immutable-hasheq | make-immutable-hasheqv | make-impersonator-property | make-input-port | make-input-port\\/read-to-peek | make-inspector | make-keyword-procedure | make-known-char-range-list | make-limited-input-port | make-list | make-lock-file-name | make-log-receiver | make-logger | make-mixin-contract | make-none\\/c | make-output-port | make-parameter | make-parent-directory\\* | make-phantom-bytes | make-pipe | make-pipe-with-specials | make-placeholder | make-plumber | make-polar | make-prefab-struct | make-primitive-class | make-proj-contract | make-pseudo-random-generator | make-reader-graph | make-readtable | make-rectangular | make-rename-transformer | make-resolved-module-path | make-security-guard | make-semaphore | make-set!-transformer | make-shared-bytes | make-sibling-inspector | make-special-comment | make-srcloc | make-string | make-struct-field-accessor | make-struct-field-mutator | make-struct-type | make-struct-type-property | make-syntax-delta-introducer | make-syntax-introducer | make-tentative-pretty-print-output-port | make-thread-cell | make-thread-group | make-vector | make-weak-box | make-weak-hash | make-weak-hasheq | make-weak-hasheqv | make-will-executor | map | match-equality-test | matches-arity-exactly\\? | max | mcar | mcdr | mcons | member | member-name-key-hash-code | member-name-key=\\? | member-name-key\\? | memf | memq | memv | merge-input | method-in-interface\\? | min | mixin-contract | module->exports | module->imports | module->indirect-exports | module->language-info | module->namespace | module-compiled-cross-phase-persistent\\? | module-compiled-exports | module-compiled-imports | module-compiled-indirect-exports | module-compiled-language-info | module-compiled-name | module-compiled-submodules | module-declared\\? | module-path-index-join | module-path-index-resolve | module-path-index-split | module-path-index-submodule | module-path-index\\? | module-path\\? | module-predefined\\? | module-provide-protected\\? | modulo | mpair\\? | mutable-set | mutable-seteq | mutable-seteqv | n->th | nack-guard-evt | namespace-anchor->empty-namespace | namespace-anchor->namespace | namespace-anchor\\? | namespace-attach-module | namespace-attach-module-declaration | namespace-base-phase | namespace-mapped-symbols | namespace-module-identifier | namespace-module-registry | namespace-require | namespace-require\\/constant | namespace-require\\/copy | namespace-require\\/expansion-time | namespace-set-variable-value! | namespace-symbol->identifier | namespace-syntax-introduce | namespace-undefine-variable! | namespace-unprotect-module | namespace-variable-value | namespace\\? | nan\\? | natural-number\\/c | natural\\? | negate | negative-integer\\? | negative\\? | never-evt | newline | ninth | non-empty-string\\? | nonnegative-integer\\? | nonpositive-integer\\? | normal-case-path | normalize-arity | normalize-path | normalized-arity\\? | not | null | null\\? | number->string | number\\? | numerator | object% | object->vector | object-info | object-interface | object-method-arity-includes\\? | object-name | object-or-false=\\? | object=\\? | object\\? | odd\\? | open-input-bytes | open-input-string | open-output-bytes | open-output-nowhere | open-output-string | order-of-magnitude | ormap | other-execute-bit | other-read-bit | other-write-bit | output-port\\? | pair\\? | parameter-procedure=\\? | parameter\\? | parameterization\\? | parse-command-line | partition | path->bytes | path->complete-path | path->directory-path | path->string | path-add-extension | path-add-suffix | path-convention-type | path-element->bytes | path-element->string | path-element\\? | path-for-some-system\\? | path-get-extension | path-has-extension\\? | path-list-string->path-list | path-only | path-replace-extension | path-replace-suffix | path-string\\? | path<\\? | path\\? | peek-byte | peek-byte-or-special | peek-bytes | peek-bytes! | peek-bytes-avail! | peek-bytes-avail!\\* | peek-bytes-avail!\\/enable-break | peek-char | peek-char-or-special | peek-string | peek-string! | permutations | phantom-bytes\\? | pi | pi\\.f | pipe-content-length | place-break | place-channel | place-channel-get | place-channel-put | place-channel-put\\/get | place-channel\\? | place-dead-evt | place-enabled\\? | place-kill | place-location\\? | place-message-allowed\\? | place-sleep | place-wait | place\\? | placeholder-get | placeholder-set! | placeholder\\? | plumber-add-flush! | plumber-flush-all | plumber-flush-handle-remove! | plumber-flush-handle\\? | plumber\\? | poll-guard-evt | port->list | port-closed-evt | port-closed\\? | port-commit-peeked | port-count-lines! | port-count-lines-enabled | port-counts-lines\\? | port-display-handler | port-file-identity | port-file-unlock | port-next-location | port-number\\? | port-print-handler | port-progress-evt | port-provides-progress-evts\\? | port-read-handler | port-try-file-lock\\? | port-write-handler | port-writes-atomic\\? | port-writes-special\\? | port\\? | positive-integer\\? | positive\\? | predicate\\/c | prefab-key->struct-type | prefab-key\\? | prefab-struct-key | preferences-lock-file-mode | pregexp | pregexp\\? | pretty-display | pretty-print | pretty-print-\\.-symbol-without-bars | pretty-print-abbreviate-read-macros | pretty-print-columns | pretty-print-current-style-table | pretty-print-depth | pretty-print-exact-as-decimal | pretty-print-extend-style-table | pretty-print-handler | pretty-print-newline | pretty-print-post-print-hook | pretty-print-pre-print-hook | pretty-print-print-hook | pretty-print-print-line | pretty-print-remap-stylable | pretty-print-show-inexactness | pretty-print-size-hook | pretty-print-style-table\\? | pretty-printing | pretty-write | primitive-closure\\? | primitive-result-arity | primitive\\? | print | print-as-expression | print-boolean-long-form | print-box | print-graph | print-hash-table | print-mpair-curly-braces | print-pair-curly-braces | print-reader-abbreviations | print-struct | print-syntax-width | print-unreadable | print-vector-length | printable\\/c | printable<%> | printf | println | procedure->method | procedure-arity | procedure-arity-includes\\? | procedure-arity\\? | procedure-closure-contents-eq\\? | procedure-extract-target | procedure-impersonator\\*\\? | procedure-keywords | procedure-reduce-arity | procedure-reduce-keyword-arity | procedure-rename | procedure-result-arity | procedure-specialize | procedure-struct-type\\? | procedure\\? | processor-count | progress-evt\\? | promise-forced\\? | promise-running\\? | promise\\/name\\? | promise\\? | prop:arity-string | prop:arrow-contract | prop:arrow-contract-get-info | prop:arrow-contract\\? | prop:authentic | prop:blame | prop:chaperone-contract | prop:checked-procedure | prop:contract | prop:contracted | prop:custom-print-quotable | prop:custom-write | prop:dict | prop:equal\\+hash | prop:evt | prop:exn:missing-module | prop:exn:srclocs | prop:expansion-contexts | prop:flat-contract | prop:impersonator-of | prop:input-port | prop:liberal-define-context | prop:object-name | prop:opt-chaperone-contract | prop:opt-chaperone-contract-get-test | prop:opt-chaperone-contract\\? | prop:orc-contract | prop:orc-contract-get-subcontracts | prop:orc-contract\\? | prop:output-port | prop:place-location | prop:procedure | prop:recursive-contract | prop:recursive-contract-unroll | prop:recursive-contract\\? | prop:rename-transformer | prop:sequence | prop:set!-transformer | prop:stream | proper-subset\\? | pseudo-random-generator->vector | pseudo-random-generator-vector\\? | pseudo-random-generator\\? | put-preferences | putenv | quotient | quotient\\/remainder | radians->degrees | raise | raise-argument-error | raise-arguments-error | raise-arity-error | raise-contract-error | raise-mismatch-error | raise-range-error | raise-result-error | raise-syntax-error | raise-type-error | raise-user-error | random | random-seed | rational\\? | rationalize | read | read-accept-bar-quote | read-accept-box | read-accept-compiled | read-accept-dot | read-accept-graph | read-accept-infix-dot | read-accept-lang | read-accept-quasiquote | read-accept-reader | read-byte | read-byte-or-special | read-bytes | read-bytes! | read-bytes-avail! | read-bytes-avail!\\* | read-bytes-avail!\\/enable-break | read-bytes-line | read-case-sensitive | read-cdot | read-char | read-char-or-special | read-curly-brace-as-paren | read-curly-brace-with-tag | read-decimal-as-inexact | read-eval-print-loop | read-language | read-line | read-on-demand-source | read-square-bracket-as-paren | read-square-bracket-with-tag | read-string | read-string! | read-syntax | read-syntax\\/recursive | read\\/recursive | readtable-mapping | readtable\\? | real->decimal-string | real->double-flonum | real->floating-point-bytes | real->single-flonum | real-part | real\\? | reencode-input-port | reencode-output-port | regexp | regexp-match | regexp-match-exact\\? | regexp-match-peek | regexp-match-peek-immediate | regexp-match-peek-positions | regexp-match-peek-positions-immediate | regexp-match-peek-positions-immediate\\/end | regexp-match-peek-positions\\/end | regexp-match-positions | regexp-match-positions\\/end | regexp-match\\/end | regexp-match\\? | regexp-max-lookbehind | regexp-quote | regexp-replace | regexp-replace\\* | regexp-replace-quote | regexp-replaces | regexp-split | regexp-try-match | regexp\\? | relative-path\\? | remainder | remf | remf\\* | remove | remove\\* | remq | remq\\* | remv | remv\\* | rename-contract | rename-file-or-directory | rename-transformer-target | rename-transformer\\? | replace-evt | reroot-path | resolve-path | resolved-module-path-name | resolved-module-path\\? | rest | reverse | round | second | seconds->date | security-guard\\? | semaphore-peek-evt | semaphore-peek-evt\\? | semaphore-post | semaphore-try-wait\\? | semaphore-wait | semaphore-wait\\/enable-break | semaphore\\? | sequence->list | sequence->stream | sequence-add-between | sequence-andmap | sequence-append | sequence-count | sequence-filter | sequence-fold | sequence-for-each | sequence-generate | sequence-generate\\* | sequence-length | sequence-map | sequence-ormap | sequence-ref | sequence-tail | sequence\\? | set | set!-transformer-procedure | set!-transformer\\? | set->list | set->stream | set-add | set-add! | set-box! | set-clear | set-clear! | set-copy | set-copy-clear | set-count | set-empty\\? | set-eq\\? | set-equal\\? | set-eqv\\? | set-first | set-for-each | set-implements\\/c | set-implements\\? | set-intersect | set-intersect! | set-map | set-mcar! | set-mcdr! | set-member\\? | set-mutable\\? | set-phantom-bytes! | set-port-next-location! | set-remove | set-remove! | set-rest | set-subtract | set-subtract! | set-symmetric-difference | set-symmetric-difference! | set-union | set-union! | set-weak\\? | set=\\? | set\\? | seteq | seteqv | seventh | sgn | shared-bytes | shell-execute | shrink-path-wrt | shuffle | simple-form-path | simplify-path | sin | single-flonum\\? | sinh | sixth | skip-projection-wrapper\\? | sleep | some-system-path->string | special-comment-value | special-comment\\? | special-filter-input-port | split-at | split-at-right | split-common-prefix | split-path | splitf-at | splitf-at-right | sqr | sqrt | srcloc->string | srcloc-column | srcloc-line | srcloc-position | srcloc-source | srcloc-span | srcloc\\? | stop-after | stop-before | stream->list | stream-add-between | stream-andmap | stream-append | stream-count | stream-empty\\? | stream-filter | stream-first | stream-fold | stream-for-each | stream-length | stream-map | stream-ormap | stream-ref | stream-rest | stream-tail | stream\\/c | stream\\? | string | string->bytes\\/latin-1 | string->bytes\\/locale | string->bytes\\/utf-8 | string->immutable-string | string->keyword | string->list | string->number | string->path | string->path-element | string->some-system-path | string->symbol | string->uninterned-symbol | string->unreadable-symbol | string-append | string-append\\* | string-ci<=\\? | string-ci<\\? | string-ci=\\? | string-ci>=\\? | string-ci>\\? | string-contains\\? | string-copy | string-copy! | string-downcase | string-environment-variable-name\\? | string-fill! | string-foldcase | string-length | string-locale-ci<\\? | string-locale-ci=\\? | string-locale-ci>\\? | string-locale-downcase | string-locale-upcase | string-locale<\\? | string-locale=\\? | string-locale>\\? | string-no-nuls\\? | string-normalize-nfc | string-normalize-nfd | string-normalize-nfkc | string-normalize-nfkd | string-port\\? | string-prefix\\? | string-ref | string-set! | string-suffix\\? | string-titlecase | string-upcase | string-utf-8-length | string<=\\? | string<\\? | string=\\? | string>=\\? | string>\\? | string\\? | struct->vector | struct-accessor-procedure\\? | struct-constructor-procedure\\? | struct-info | struct-mutator-procedure\\? | struct-predicate-procedure\\? | struct-type-info | struct-type-make-constructor | struct-type-make-predicate | struct-type-property-accessor-procedure\\? | struct-type-property\\/c | struct-type-property\\? | struct-type\\? | struct:arity-at-least | struct:arrow-contract-info | struct:date | struct:date\\* | struct:exn | struct:exn:break | struct:exn:break:hang-up | struct:exn:break:terminate | struct:exn:fail | struct:exn:fail:contract | struct:exn:fail:contract:arity | struct:exn:fail:contract:blame | struct:exn:fail:contract:continuation | struct:exn:fail:contract:divide-by-zero | struct:exn:fail:contract:non-fixnum-result | struct:exn:fail:contract:variable | struct:exn:fail:filesystem | struct:exn:fail:filesystem:errno | struct:exn:fail:filesystem:exists | struct:exn:fail:filesystem:missing-module | struct:exn:fail:filesystem:version | struct:exn:fail:network | struct:exn:fail:network:errno | struct:exn:fail:object | struct:exn:fail:out-of-memory | struct:exn:fail:read | struct:exn:fail:read:eof | struct:exn:fail:read:non-char | struct:exn:fail:syntax | struct:exn:fail:syntax:missing-module | struct:exn:fail:syntax:unbound | struct:exn:fail:unsupported | struct:exn:fail:user | struct:srcloc | struct:wrapped-extra-arg-arrow | struct\\? | sub1 | subbytes | subclass\\? | subclass\\?\\/c | subprocess | subprocess-group-enabled | subprocess-kill | subprocess-pid | subprocess-status | subprocess-wait | subprocess\\? | subset\\? | substring | suggest\\/c | symbol->string | symbol-interned\\? | symbol-unreadable\\? | symbol<\\? | symbol=\\? | symbol\\? | sync | sync\\/enable-break | sync\\/timeout | sync\\/timeout\\/enable-break | syntax->datum | syntax->list | syntax-arm | syntax-column | syntax-debug-info | syntax-disarm | syntax-e | syntax-line | syntax-local-bind-syntaxes | syntax-local-certifier | syntax-local-context | syntax-local-expand-expression | syntax-local-get-shadower | syntax-local-identifier-as-binding | syntax-local-introduce | syntax-local-lift-context | syntax-local-lift-expression | syntax-local-lift-module | syntax-local-lift-module-end-declaration | syntax-local-lift-provide | syntax-local-lift-require | syntax-local-lift-values-expression | syntax-local-make-definition-context | syntax-local-make-delta-introducer | syntax-local-module-defined-identifiers | syntax-local-module-exports | syntax-local-module-required-identifiers | syntax-local-name | syntax-local-phase-level | syntax-local-submodules | syntax-local-transforming-module-provides\\? | syntax-local-value | syntax-local-value\\/immediate | syntax-original\\? | syntax-position | syntax-property | syntax-property-preserved\\? | syntax-property-symbol-keys | syntax-protect | syntax-rearm | syntax-recertify | syntax-shift-phase-level | syntax-source | syntax-source-module | syntax-span | syntax-taint | syntax-tainted\\? | syntax-track-origin | syntax-transforming-module-expression\\? | syntax-transforming-with-lifts\\? | syntax-transforming\\? | syntax\\? | system-big-endian\\? | system-idle-evt | system-language\\+country | system-library-subpath | system-path-convention-type | system-type | tail-marks-match\\? | take | take-common-prefix | take-right | takef | takef-right | tan | tanh | tcp-abandon-port | tcp-accept | tcp-accept-evt | tcp-accept-ready\\? | tcp-accept\\/enable-break | tcp-addresses | tcp-close | tcp-connect | tcp-connect\\/enable-break | tcp-listen | tcp-listener\\? | tcp-port\\? | tentative-pretty-print-port-cancel | tentative-pretty-print-port-transfer | tenth | terminal-port\\? | the-unsupplied-arg | third | thread | thread-cell-ref | thread-cell-set! | thread-cell-values\\? | thread-cell\\? | thread-dead-evt | thread-dead\\? | thread-group\\? | thread-receive | thread-receive-evt | thread-resume | thread-resume-evt | thread-rewind-receive | thread-running\\? | thread-send | thread-suspend | thread-suspend-evt | thread-try-receive | thread-wait | thread\\/suspend-to-kill | thread\\? | time-apply | touch | true | truncate | udp-addresses | udp-bind! | udp-bound\\? | udp-close | udp-connect! | udp-connected\\? | udp-multicast-interface | udp-multicast-join-group! | udp-multicast-leave-group! | udp-multicast-loopback\\? | udp-multicast-set-interface! | udp-multicast-set-loopback! | udp-multicast-set-ttl! | udp-multicast-ttl | udp-open-socket | udp-receive! | udp-receive!\\* | udp-receive!-evt | udp-receive!\\/enable-break | udp-receive-ready-evt | udp-send | udp-send\\* | udp-send-evt | udp-send-ready-evt | udp-send-to | udp-send-to\\* | udp-send-to-evt | udp-send-to\\/enable-break | udp-send\\/enable-break | udp\\? | unbox | uncaught-exception-handler | unit\\? | unquoted-printing-string | unquoted-printing-string-value | unquoted-printing-string\\? | unspecified-dom | unsupplied-arg\\? | use-collection-link-paths | use-compiled-file-check | use-compiled-file-paths | use-user-specific-search-paths | user-execute-bit | user-read-bit | user-write-bit | value-blame | value-contract | values | variable-reference->empty-namespace | variable-reference->module-base-phase | variable-reference->module-declaration-inspector | variable-reference->module-path-index | variable-reference->module-source | variable-reference->namespace | variable-reference->phase | variable-reference->resolved-module-path | variable-reference-constant\\? | variable-reference\\? | vector | vector->immutable-vector | vector->list | vector->pseudo-random-generator | vector->pseudo-random-generator! | vector->values | vector-append | vector-argmax | vector-argmin | vector-cas! | vector-copy | vector-copy! | vector-count | vector-drop | vector-drop-right | vector-fill! | vector-filter | vector-filter-not | vector-immutable | vector-length | vector-map | vector-map! | vector-member | vector-memq | vector-memv | vector-ref | vector-set! | vector-set\\*! | vector-set-performance-stats! | vector-split-at | vector-split-at-right | vector-take | vector-take-right | vector\\? | version | void | void\\? | weak-box-value | weak-box\\? | weak-set | weak-seteq | weak-seteqv | will-execute | will-executor\\? | will-register | will-try-execute | with-input-from-bytes | with-input-from-string | with-output-to-bytes | with-output-to-string | would-be-future | wrap-evt | wrapped-extra-arg-arrow-extra-neg-party-argument | wrapped-extra-arg-arrow-real-func | wrapped-extra-arg-arrow\\? | writable<%> | write | write-byte | write-bytes | write-bytes-avail | write-bytes-avail\\* | write-bytes-avail-evt | write-bytes-avail\\/enable-break | write-char | write-special | write-special-avail\\* | write-special-evt | write-string | writeln | xor | zero\\? +) (?=$|[()\\[\\]{}",'\`;\\s])`}]},"byte-string":{patterns:[{begin:'#"',beginCaptures:{0:[{name:"punctuation.definition.string.begin.racket"}]},end:'"',endCaptures:{0:[{name:"punctuation.definition.string.end.racket"}]},name:"string.byte.racket",patterns:[{include:"#escape-char-base"}]}]},character:{patterns:[{match:`(?x) \\#\\\\ +(?: +(?: [0-7]{3}) | +(?: u[0-9a-fA-F]{1,4}) | +(?: U[0-9a-fA-F]{1,6}) | +(?: +(?: +null? | newline | linefeed | backspace | vtab | page | +return | space | rubout | (?: [^\\w\\s] | \\d) +) +(?![a-zA-Z]) +) | +(?: [^\\W\\d](?=[\\W\\d]) | \\W ) +) +`,name:"constant.character.racket"}]},comment:{patterns:[{include:"#comment-line"},{include:"#comment-block"},{include:"#comment-sexp"}]},"comment-block":{patterns:[{begin:"#\\|",beginCaptures:{0:{name:"punctuation.definition.comment.begin.racket"}},end:"\\|#",endCaptures:{0:{name:"punctuation.definition.comment.end.racket"}},name:"comment.block.racket",patterns:[{include:"#comment-block"}]}]},"comment-line":{patterns:[{beginCaptures:{1:{name:"punctuation.definition.comment.racket"}},match:"(#!)[ /].*$",name:"comment.line.unix.racket"},{captures:{1:{name:"punctuation.definition.comment.racket"}},match:"(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (;) .* $",name:"comment.line.semicolon.racket"}]},"comment-sexp":{patterns:[{match:"(?<=^|[()\\[\\]{}\",'`;\\s])#;",name:"comment.sexp.racket"}]},"default-args":{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-content"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-content"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-content"}]}]},"default-args-content":{patterns:[{include:"#comment"},{include:"#argument"},{include:"$base"}]},"default-args-struct":{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-struct-content"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-struct-content"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#default-args-struct-content"}]}]},"default-args-struct-content":{patterns:[{include:"#comment"},{include:"#argument-struct"},{include:"$base"}]},define:{patterns:[{include:"#define-func"},{include:"#define-vals"},{include:"#define-val"}]},"define-func":{patterns:[{begin:`(?x) (?<=[(\\[{]) \\s* +(define (?: (?: -for)?-syntax)?) \\s* +(\\() +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#func-args"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(define (?: (?: -for)?-syntax)?) \\s* +(\\[) +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#func-args"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(define (?: (?: -for)?-syntax)?) \\s* +({) +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{include:"#func-args"}]}]},"define-val":{patterns:[{captures:{1:{name:"storage.type.racket"},2:{name:"entity.name.constant.racket"}},match:`(?x) (?<=[(\\[{]) \\s* +(define(?: (?: -for)?-syntax)?) \\s+ +([^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*) +`}]},"define-vals":{patterns:[{begin:`(?x) (?<=[(\\[{]) \\s* +(define-(?: values(?: -for-syntax)? | syntaxes)?) \\s* +(\\() +`,beginCaptures:{1:{name:"storage.type.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{match:"[^(\\#)\\[\\]{}\",'`;\\s][^()\\[\\]{}\",'`;\\s]*",name:"entity.name.constant"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(define-(?: values(?: -for-syntax)? | syntaxes)?) \\s* +(\\[) +`,beginCaptures:{1:{name:"storage.type.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{match:"[^(\\#)\\[\\]{}\",'`;\\s][^()\\[\\]{}\",'`;\\s]*",name:"entity.name.constant"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(define-(?: values(?: -for-syntax)? | syntaxes)?) \\s* +({) +`,beginCaptures:{1:{name:"storage.type.racket"},2:{name:"punctuation.section.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.end.racket"}},patterns:[{match:"[^(\\#)\\[\\]{}\",'`;\\s][^()\\[\\]{}\",'`;\\s]*",name:"entity.name.constant"}]}]},dot:{patterns:[{match:"(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) \\. (?=$|[()\\[\\]{}\",'`;\\s])",name:"punctuation.accessor.racket"}]},"escape-char":{patterns:[{include:"#escape-char-base"},{match:`(?x) \\\\ +(?: +(?: u[\\da-fA-F]{1,4}) | +(?: U[\\da-fA-F]{1,8}) +) +`,name:"constant.character.escape.racket"},{include:"#escape-char-error"}]},"escape-char-base":{patterns:[{match:`(?x) \\\\ +(?: +(?: [abtnvfre"'\\\\]) | +(?: [0-7]{1,3}) | +(?: x[\\da-fA-F]{1,2}) +) +`,name:"constant.character.escape.racket"}]},"escape-char-error":{patterns:[{match:"\\\\.",name:"invalid.illegal.escape.racket"}]},format:{patterns:[{begin:`(?x) (?<=[(\\[{]) \\s* +(e?printf | format) \\s* +(") +`,beginCaptures:{1:{name:"support.function.racket"},2:{name:"string.quoted.double.racket"}},contentName:"string.quoted.double.racket",end:'"',endCaptures:{0:{name:"string.quoted.double.racket"}},patterns:[{include:"#format-string"},{include:"#escape-char"}]}]},"format-string":{patterns:[{match:`(?x) ~ +(?: +(?: \\.?[n%aAsSvV]) | +[cCbBoOxX~\\s] +) +`,name:"constant.other.placeholder.racket"}]},"func-args":{patterns:[{include:"#function-name"},{include:"#dot"},{include:"#comment"},{include:"#args"}]},"function-name":{patterns:[{begin:"(?x) (?<=[(\\[{]) \\s* (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},contentName:"entity.name.function.racket",end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"},name:"entity.name.function.racket"},{begin:`(?x) (?<=[(\\[{]) \\s* +(\\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,beginCaptures:{1:{name:"entity.name.function.racket"}},contentName:"entity.name.function.racket",end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:"punctuation.verbatim.begin.racket"},end:"\\|",endCaptures:{0:"punctuation.verbatim.end.racket"}}]}]},hash:{patterns:[{begin:"(?x) \\# hash(?: eq(?: v)?)? \\(",beginCaptures:{0:{name:"punctuation.section.hash.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.hash.end.racket"}},name:"meta.hash.racket",patterns:[{include:"#hash-content"}]},{begin:"(?x) \\# hash(?: eq(?: v)?)? \\[",beginCaptures:{0:{name:"punctuation.section.hash.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.hash.end.racket"}},name:"meta.hash.racket",patterns:[{include:"#hash-content"}]},{begin:"(?x) \\# hash(?: eq(?: v)?)? \\{",beginCaptures:{0:{name:"punctuation.section.hash.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.hash.end.racket"}},name:"meta.hash.racket",patterns:[{include:"#hash-content"}]}]},"hash-content":{patterns:[{include:"#comment"},{include:"#pairing"}]},"here-string":{patterns:[{begin:"#<<(.*)$",end:"^\\1$",name:"string.here.racket"}]},keyword:{patterns:[{match:`(?x) (?<=^|[()\\[\\]{}",'\`;\\s]) \\#: [^()\\[\\]{}",'\`;\\s]+ +`,name:"keyword.other.racket"}]},lambda:{patterns:[{include:"#lambda-onearg"},{include:"#lambda-args"}]},"lambda-args":{patterns:[{begin:`(?x) (?<=[(\\[{]) \\s* +(lambda | λ) \\s+ +(\\() +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.end.racket"}},name:"meta.lambda.racket",patterns:[{include:"#args"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(lambda | λ) \\s+ +({) +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.end.racket"}},name:"meta.lambda.racket",patterns:[{include:"#args"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(lambda | λ) \\s+ +(\\[) +`,beginCaptures:{1:{name:"storage.type.lambda.racket"},2:{name:"punctuation.section.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.end.racket"}},name:"meta.lambda.racket",patterns:[{include:"#args"}]}]},"lambda-onearg":[{captures:{1:{name:"storage.type.lambda.racket"},2:{name:"variable.parameter.racket"}},match:`(?x) (?<=[(\\[{]) \\s* +(lambda | λ) \\s+ +([^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*) +`,name:"meta.lambda.racket"}],list:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.list.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.list.end.racket"}},name:"meta.list.racket",patterns:[{include:"#list-content"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.list.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.list.end.racket"}},name:"meta.list.racket",patterns:[{include:"#list-content"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.list.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.list.end.racket"}},name:"meta.list.racket",patterns:[{include:"#list-content"}]}]},"list-content":{patterns:[{include:"#builtin-functions"},{include:"#dot"},{include:"$base"}]},"not-atom":{patterns:[{include:"#vector"},{include:"#hash"},{include:"#prefab-struct"},{include:"#list"},{match:`(?x) (?<=^|[()\\[\\]{}\\",'\`;\\s]) +(?: \\#[cC][iI] | \\#[cC][sS]) +(?=\\s) +`,name:"keyword.control.racket"},{match:`(?x) (?<=^|[()\\[\\]{}\\",'\`;\\s]) +(?: \\#&) +`,name:"support.function.racket"}]},number:{patterns:[{include:"#number-dec"},{include:"#number-oct"},{include:"#number-bin"},{include:"#number-hex"}]},"number-bin":{patterns:[{match:`(?x) +(?<=^|[()\\[\\]{}",'\`;\\s]) +(?: \\#[bB](?: \\#[eEiI])? | (?: \\#[eEiI])?\\#[bB]) +(?: +(?: +(?: +(?: +(?: +(?: [+-]? [01]+ \\#* \\/ [01]+ \\#*)| +(?: [+-]? [01]+ \\. [01]+ \\#*) | +(?: [+-]? [01]+ \\#* \\. \\#*) | +(?: [+-]? [01]+ \\#*) +) (?: [sldefSLDEF] [+-]? [01]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) @ +(?: +(?: +(?: +(?: [+-]? [01]+ \\#* \\/ [01]+ \\#*)| +(?: [+-]? [01]+ \\. [01]+ \\#*) | +(?: [+-]? [01]+ \\#* \\. \\#*) | +(?: [+-]? [01]+ \\#*) +) (?: [sldefSLDEF] [+-]? [01]+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) +) | +(?: +(?: +(?: +(?: +(?: [+-]? [01]+ \\#* \\/ [01]+ \\#*)| +(?: [+-]? [01]+ \\. [01]+ \\#*) | +(?: [+-]? [01]+ \\#* \\. \\#*) | +(?: [+-]? [01]+ \\#*) +) (?: [sldefSLDEF] [+-]? [01]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +)? [+-] +(?: +(?: +(?: +(?: [+-]? [01]+ \\#* \\/ [01]+ \\#*)| +(?: [+-]? [01]+ \\. [01]+ \\#*) | +(?: [+-]? [01]+ \\#* \\. \\#*) | +(?: [+-]? [01]+ \\#*) +) (?: [sldefSLDEF] [+-]? [01]+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +) i +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +(?: +(?: [+-]? [01]+ \\#* \\/ [01]+ \\#*)| +(?: [+-]? [01]* \\. [01]+ \\#*) | +(?: [+-]? [01]+ \\#* \\. \\#*) | +(?: [+-]? [01]+ \\#*) +) (?: [sldefSLDEF] [+-]? [01]+)? +) (?=$|[()\\[\\]{}",'\`;\\s]) +`,name:"constant.numeric.bin.racket"}]},"number-dec":{patterns:[{match:`(?x) +(?<=^|[()\\[\\]{}",'\`;\\s]) +(?: (?: \\#[dD])?(?: \\#[eEiI])? | (?: \\#[eEiI])?(?: \\#[dD])?) +(?: +(?: +(?: +(?: +(?: +(?: [+-]? \\d+ \\#* \\/ \\d+ \\#*)| +(?: [+-]? \\d+ \\. \\d+ \\#*) | +(?: [+-]? \\d+ \\#* \\. \\#*) | +(?: [+-]? \\d+ \\#*) +) (?: [sldefSLDEF] [+-]? \\d+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) @ +(?: +(?: +(?: +(?: [+-]? \\d+ \\#* \\/ \\d+ \\#*)| +(?: [+-]? \\d+ \\. \\d+ \\#*) | +(?: [+-]? \\d+ \\#* \\. \\#*) | +(?: [+-]? \\d+ \\#*) +) (?: [sldefSLDEF] [+-]? \\d+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) +) | +(?: +(?: +(?: +(?: +(?: [+-]? \\d+ \\#* \\/ \\d+ \\#*)| +(?: [+-]? \\d+ \\. \\d+ \\#*) | +(?: [+-]? \\d+ \\#* \\. \\#*) | +(?: [+-]? \\d+ \\#*) +) (?: [sldefSLDEF] [+-]? \\d+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +)? [+-] +(?: +(?: +(?: +(?: [+-]? \\d+ \\#* \\/ \\d+ \\#*)| +(?: [+-]? \\d+ \\. \\d+ \\#*) | +(?: [+-]? \\d+ \\#* \\. \\#*) | +(?: [+-]? \\d+ \\#*) +) (?: [sldefSLDEF] [+-]? \\d+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +) i +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +(?: +(?: [+-]? \\d+ \\#* \\/ \\d+ \\#*)| +(?: [+-]? \\d* \\. \\d+ \\#*) | +(?: [+-]? \\d+ \\#* \\. \\#*) | +(?: [+-]? \\d+ \\#*) +) (?: [sldefSLDEF] [+-]? \\d+)? +) (?=$|[()\\[\\]{}",'\`;\\s]) +`,name:"constant.numeric.racket"}]},"number-hex":{patterns:[{match:`(?x) +(?<=^|[()\\[\\]{}",'\`;\\s]) +(?: \\#[xX](?: \\#[eEiI])? | (?: \\#[eEiI])?\\#[xX]) +(?: +(?: +(?: +(?: +(?: +(?: [+-]? [0-9a-fA-F]+ \\#* \\/ [0-9a-fA-F]+ \\#*)| +(?: [+-]? [0-9a-fA-F] \\. [0-9a-fA-F]+ \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#* \\. \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#*) +) (?: [slSL] [+-]? [0-9a-fA-F]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) @ +(?: +(?: +(?: +(?: [+-]? [0-9a-fA-F]+ \\#* \\/ [0-9a-fA-F]+ \\#*)| +(?: [+-]? [0-9a-fA-F]+ \\. [0-9a-fA-F]+ \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#* \\. \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#*) +) (?: [slSL] [+-]? [0-9a-fA-F]+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) +) | +(?: +(?: +(?: +(?: +(?: [+-]? [0-9a-fA-F]+ \\#* \\/ [0-9a-fA-F]+ \\#*)| +(?: [+-]? [0-9a-fA-F]+ \\. [0-9a-fA-F]+ \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#* \\. \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#*) +) (?: [slSL] [+-]? [0-9a-fA-F]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +)? [+-] +(?: +(?: +(?: +(?: [+-]? [0-9a-fA-F]+ \\#* \\/ [0-9a-fA-F]+ \\#*)| +(?: [+-]? [0-9a-fA-F]+ \\. [0-9a-fA-F]+ \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#* \\. \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#*) +) (?: [slSL] [+-]? [0-9a-fA-F]+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +) i +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +(?: +(?: [+-]? [0-9a-fA-F]+ \\#* \\/ [0-9a-fA-F]+ \\#*)| +(?: [+-]? [0-9a-fA-F]* \\. [0-9a-fA-F]+ \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#* \\. \\#*) | +(?: [+-]? [0-9a-fA-F]+ \\#*) +) (?: [slSL] [+-]? [0-9a-fA-F]+)? +) (?=$|[()\\[\\]{}",'\`;\\s]) +`,name:"constant.numeric.hex.racket"}]},"number-oct":{patterns:[{match:`(?x) +(?<=^|[()\\[\\]{}",'\`;\\s]) +(?: \\#[oO](?: \\#[eEiI])? | (?: \\#[eEiI])?\\#[oO]) +(?: +(?: +(?: +(?: +(?: +(?: [+-]? [0-7]+ \\#* \\/ [0-7]+ \\#*)| +(?: [+-]? [0-7]+ \\. [0-7]+ \\#*) | +(?: [+-]? [0-7]+ \\#* \\. \\#*) | +(?: [+-]? [0-7]+ \\#*) +) (?: [sldefSLDEF] [+-]? [0-7]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) @ +(?: +(?: +(?: +(?: [+-]? [0-7]+ \\#* \\/ [0-7]+ \\#*)| +(?: [+-]? [0-7]+ \\. [0-7]+ \\#*) | +(?: [+-]? [0-7]+ \\#* \\. \\#*) | +(?: [+-]? [0-7]+ \\#*) +) (?: [sldefSLDEF] [+-]? [0-7]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +) +) | +(?: +(?: +(?: +(?: +(?: [+-]? [0-7]+ \\#* \\/ [0-7]+ \\#*)| +(?: [+-]? [0-7]+ \\. [0-7]+ \\#*) | +(?: [+-]? [0-7]+ \\#* \\. \\#*) | +(?: [+-]? [0-7]+ \\#*) +) (?: [sldefSLDEF] [+-]? [0-7]+)? +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) +)? [+-] +(?: +(?: +(?: +(?: [+-]? [0-7]+ \\#* \\/ [0-7]+ \\#*)| +(?: [+-]? [0-7]+ \\. [0-7]+ \\#*) | +(?: [+-]? [0-7]+ \\#* \\. \\#*) | +(?: [+-]? [0-7]+ \\#*) +) (?: [sldefSLDEF] [+-]? [0-7]+)? +) | +(?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +) i +) | +[+-] (?: (?: [iI][nN][fF])\\.[0f] | (?: [nN][aA][nN])\\.[0f]) | +(?: +(?: [+-]? [0-7]+ \\#* \\/ [0-7]+ \\#*)| +(?: [+-]? [0-7]* \\. [0-7]+ \\#*) | +(?: [+-]? [0-7]+ \\#* \\. \\#*) | +(?: [+-]? [0-7]+ \\#*) +) (?: [sldefSLDEF] [+-]? [0-7]+)? +) (?=$|[()\\[\\]{}",'\`;\\s]) +`,name:"constant.numeric.octal.racket"}]},"pair-content":{patterns:[{include:"#dot"},{include:"#comment"},{include:"#atom"}]},pairing:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.pair.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.pair.end.racket"}},name:"meta.list.racket",patterns:[{include:"#pair-content"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.pair.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.pair.end.racket"}},name:"meta.list.racket",patterns:[{include:"#pair-content"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.pair.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.pair.end.racket"}},name:"meta.list.racket",patterns:[{include:"#pair-content"}]}]},"prefab-struct":{patterns:[{begin:"#s\\(",beginCaptures:{0:{name:"punctuation.section.prefab-struct.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.prefab-struct.end.racket"}},name:"meta.prefab-struct.racket",patterns:[{include:"$base"}]},{begin:"#s\\[",beginCaptures:{0:{name:"punctuation.section.prefab-struct.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.prefab-struct.end.racket"}},name:"meta.prefab-struct.racket",patterns:[{include:"$base"}]},{begin:"#s{",beginCaptures:{0:{name:"punctuation.section.prefab-struct.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.prefab-struct.end.racket"}},name:"meta.prefab-struct.racket",patterns:[{include:"$base"}]}]},quote:{patterns:[{match:`(?x) (?<=^|[()\\[\\]{}\\",'\`;\\s]) +(?: ,@ | ' | \` | , | \\#' | \\#\` | \\#, | \\#~ | \\#,@)+ +(?=[()\\[\\]{}\\",'\`;\\s] | \\#[^%] | [^()\\[\\]{}",'\`;\\s] ) +`,name:"support.function.racket"}]},"regexp-byte-string":{patterns:[{begin:'#(r|p)x#"',beginCaptures:{0:[{name:"punctuation.definition.string.begin.racket"}]},end:'"',endCaptures:{0:[{name:"punctuation.definition.string.end.racket"}]},name:"string.regexp.byte.racket",patterns:[{include:"#escape-char-base"}]}]},"regexp-string":{patterns:[{begin:'#(r|p)x"',beginCaptures:{0:[{name:"punctuation.definition.string.begin.racket"}]},end:'"',endCaptures:{0:[{name:"punctuation.definition.string.end.racket"}]},name:"string.regexp.racket",patterns:[{include:"#escape-char-base"}]}]},string:{patterns:[{include:"#byte-string"},{include:"#regexp-byte-string"},{include:"#regexp-string"},{include:"#base-string"},{include:"#here-string"}]},struct:{patterns:[{begin:`(?x) (?<=[(\\[{]) \\s* +(struct) \\s+ +([^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*) +(?: \\s+ [^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*)? \\s* +(\\() +`,beginCaptures:{1:{name:"storage.struct.racket"},2:{name:"entity.name.struct.racket"},3:{name:"punctuation.section.fields.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.fields.end.racket"}},name:"meta.struct.fields.racket",patterns:[{include:"#comment"},{include:"#default-args-struct"},{include:"#struct-field"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(struct) \\s+ +([^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*) +(?: \\s+ [^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*)? \\s* +(\\[) +`,beginCaptures:{1:{name:"storage.struct.racket"},2:{name:"entity.name.struct.racket"},3:{name:"punctuation.section.fields.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.fields.end.racket"}},name:"meta.struct.fields.racket",patterns:[{include:"#default-args-struct"},{include:"#struct-field"}]},{begin:`(?x) (?<=[(\\[{]) \\s* +(struct) \\s+ +([^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*) +(?: \\s+ [^(\\#)\\[\\]{}",'\`;\\s][^()\\[\\]{}",'\`;\\s]*)? \\s* +(\\{) +`,beginCaptures:{1:{name:"storage.struct.racket"},2:{name:"entity.name.struct.racket"},3:{name:"punctuation.section.fields.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.fields.end.racket"}},name:"meta.struct.fields.racket",patterns:[{include:"#default-args-struct"},{include:"#struct-field"}]}]},"struct-field":{patterns:[{begin:"(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},contentName:"variable.other.member.racket",end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}}},{begin:`(?x) (?<=^|[()\\[\\]{}",'\`;\\s]) +(\\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,beginCaptures:{1:{name:"variable.other.member.racket"}},contentName:"variable.other.member.racket",end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:{name:"punctuation.verbatim.begin.racket"}},end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}}}]}]},symbol:{patterns:[{begin:`(?x) (?<=^|[()\\[\\]{}",;\\s]) (?: \` | ' )+(\\|) +`,beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}},name:"string.quoted.single.racket"},{begin:`(?x) (?<=^|[()\\[\\]{}",;\\s]) (?: \` | ' )+ +(?: \\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,end:"(?=[()\\[\\]{}\",'`;\\s])",name:"string.quoted.single.racket",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:{name:"punctuation.verbatim.begin.racket"}},end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}}}]}]},variable:{patterns:[{begin:"(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (\\|)",beginCaptures:{1:{name:"punctuation.verbatim.begin.racket"}},end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}}},{begin:`(?x) (?<=^|[()\\[\\]{}",'\`;\\s]) +(?: \\#% | \\\\\\ | [^\\#()\\[\\]{}",'\`;\\s]) +`,end:"(?=[()\\[\\]{}\",'`;\\s])",patterns:[{match:"\\\\ "},{begin:"\\|",beginCaptures:{0:{name:"punctuation.verbatim.begin.racket"}},end:"\\|",endCaptures:{0:{name:"punctuation.verbatim.end.racket"}}}]}]},vector:{patterns:[{begin:"(?x) \\# (?: fl | Fl | fx | Fx)? [0-9]* \\(",beginCaptures:{0:{name:"punctuation.section.vector.begin.racket"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.vector.end.racket"}},name:"meta.vector.racket",patterns:[{include:"$base"}]},{begin:"(?x) \\# (?: fl | Fl | fx | Fx)? [0-9]* \\[",beginCaptures:{0:{name:"punctuation.section.vector.begin.racket"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.vector.end.racket"}},name:"meta.vector.racket",patterns:[{include:"$base"}]},{begin:"(?x) \\# (?: fl | Fl | fx | Fx)? [0-9]* {",beginCaptures:{0:{name:"punctuation.section.vector.begin.racket"}},end:"}",endCaptures:{0:{name:"punctuation.section.vector.end.racket"}},name:"meta.vector.racket",patterns:[{include:"$base"}]}]}},scopeName:"source.racket"});var t=[e];export{t as default}; diff --git a/assets/chunks/raku.D384ylkT.js b/assets/chunks/raku.D384ylkT.js new file mode 100644 index 000000000..97fbf18aa --- /dev/null +++ b/assets/chunks/raku.D384ylkT.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Raku",name:"raku",patterns:[{begin:"^=begin",end:"^=end",name:"comment.block.perl"},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.perl"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.perl"}},end:"\\n",name:"comment.line.number-sign.perl"}]},{captures:{1:{name:"storage.type.class.perl.6"},3:{name:"entity.name.type.class.perl.6"}},match:"(class|enum|grammar|knowhow|module|package|role|slang|subset)(\\s+)(((?:::|')?(?:([a-zA-Z_\\x{C0}-\\x{FF}\\$])([a-zA-Z0-9_\\x{C0}-\\x{FF}\\\\$]|[\\-'][a-zA-Z0-9_\\x{C0}-\\x{FF}\\$])*))+)",name:"meta.class.perl.6"},{begin:"(?<=\\s)'",beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.single.perl",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.perl"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.perl"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.perl"}},name:"string.quoted.double.perl",patterns:[{match:'\\\\[abtnfre"\\\\]',name:"constant.character.escape.perl"}]},{begin:"q(q|to|heredoc)*\\s*:?(q|to|heredoc)*\\s*/(.+)/",end:"\\3",name:"string.quoted.single.heredoc.perl"},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*{{",end:"}}",name:"string.quoted.double.heredoc.brace.perl",patterns:[{include:"#qq_brace_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\(\\(",end:"\\)\\)",name:"string.quoted.double.heredoc.paren.perl",patterns:[{include:"#qq_paren_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\[\\[",end:"\\]\\]",name:"string.quoted.double.heredoc.bracket.perl",patterns:[{include:"#qq_bracket_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*{",end:"}",name:"string.quoted.single.heredoc.brace.perl",patterns:[{include:"#qq_brace_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*/",end:"/",name:"string.quoted.single.heredoc.slash.perl",patterns:[{include:"#qq_slash_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\(",end:"\\)",name:"string.quoted.single.heredoc.paren.perl",patterns:[{include:"#qq_paren_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\[",end:"\\]",name:"string.quoted.single.heredoc.bracket.perl",patterns:[{include:"#qq_bracket_string_content"}]},{begin:"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*'",end:"'",name:"string.quoted.single.heredoc.single.perl",patterns:[{include:"#qq_single_string_content"}]},{begin:'(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*"',end:'"',name:"string.quoted.single.heredoc.double.perl",patterns:[{include:"#qq_double_string_content"}]},{match:"\\b\\$\\w+\\b",name:"variable.other.perl"},{match:"\\b(macro|sub|submethod|method|multi|proto|only|rule|token|regex|category)\\b",name:"storage.type.declare.routine.perl"},{match:"\\b(self)\\b",name:"variable.language.perl"},{match:"\\b(use|require)\\b",name:"keyword.other.include.perl"},{match:"\\b(if|else|elsif|unless)\\b",name:"keyword.control.conditional.perl"},{match:"\\b(let|my|our|state|temp|has|constant)\\b",name:"storage.type.variable.perl"},{match:"\\b(for|loop|repeat|while|until|gather|given)\\b",name:"keyword.control.repeat.perl"},{match:"\\b(take|do|when|next|last|redo|return|contend|maybe|defer|default|exit|make|continue|break|goto|leave|async|lift)\\b",name:"keyword.control.flowcontrol.perl"},{match:"\\b(is|as|but|trusts|of|returns|handles|where|augment|supersede)\\b",name:"storage.modifier.type.constraints.perl"},{match:"\\b(BEGIN|CHECK|INIT|START|FIRST|ENTER|LEAVE|KEEP|UNDO|NEXT|LAST|PRE|POST|END|CATCH|CONTROL|TEMP)\\b",name:"meta.function.perl"},{match:"\\b(die|fail|try|warn)\\b",name:"keyword.control.control-handlers.perl"},{match:"\\b(prec|irs|ofs|ors|export|deep|binary|unary|reparsed|rw|parsed|cached|readonly|defequiv|will|ref|copy|inline|tighter|looser|equiv|assoc|required)\\b",name:"storage.modifier.perl"},{match:"\\b(NaN|Inf)\\b",name:"constant.numeric.perl"},{match:"\\b(oo|fatal)\\b",name:"keyword.other.pragma.perl"},{match:"\\b(Object|Any|Junction|Whatever|Capture|MatchSignature|Proxy|Matcher|Package|Module|ClassGrammar|Scalar|Array|Hash|KeyHash|KeySet|KeyBagPair|List|Seq|Range|Set|Bag|Mapping|Void|UndefFailure|Exception|Code|Block|Routine|Sub|MacroMethod|Submethod|Regex|Str|str|Blob|Char|ByteCodepoint|Grapheme|StrPos|StrLen|Version|NumComplex|num|complex|Bit|bit|bool|True|FalseIncreasing|Decreasing|Ordered|Callable|AnyCharPositional|Associative|Ordering|KeyExtractorComparator|OrderingPair|IO|KitchenSink|RoleInt|int|int1|int2|int4|int8|int16|int32|int64Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32uint64|Abstraction|utf8|utf16|utf32)\\b",name:"support.type.perl6"},{match:"\\b(div|xx|x|mod|also|leg|cmp|before|after|eq|ne|le|lt|not|gt|ge|eqv|ff|fff|and|andthen|or|xor|orelse|extra|lcm|gcd)\\b",name:"keyword.operator.perl"},{match:"(\\$|@|%|&)(\\*|:|!|\\^|~|=|\\?|(<(?=.+>)))?([a-zA-Z_\\x{C0}-\\x{FF}\\$])([a-zA-Z0-9_\\x{C0}-\\x{FF}\\$]|[\\-'][a-zA-Z0-9_\\x{C0}-\\x{FF}\\$])*",name:"variable.other.identifier.perl.6"},{match:"\\b(eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints|chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin|classify|first|sum|keys|values|pairs|defined|delete|exists|elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push|shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign|sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2|pick|chop|p5chop|chomp|p5chomp|lc|lcfirst|uc|ucfirst|capitalize|normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars|nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead|nothing|want|bless|chr|ord|gmtime|time|eof|localtime|gethost|getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs|codes|bytes|clone|print|open|read|write|readline|say|seek|close|opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink|symlink|uniq|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan|sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh|sech|acosech|acotanh|asech|ok|nok|plan_ok|dies_ok|lives_ok|skip|todo|pass|flunk|force_todo|use_ok|isa_ok|diag|is_deeply|isnt|like|skip_rest|unlike|cmp_ok|eval_dies_ok|nok_error|eval_lives_ok|approx|is_approx|throws_ok|version_lt|plan|EVAL|succ|pred|times|nonce|once|signature|new|connect|operator|undef|undefine|sleep|from|to|infix|postfix|prefix|circumfix|postcircumfix|minmax|lazy|count|unwrap|getc|pi|e|context|void|quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity|assuming|rewind|callwith|callsame|nextwith|nextsame|attr|eval_elsewhere|none|srand|trim|trim_start|trim_end|lastcall|WHAT|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not|true|iterator|by|re|im|invert|flip|gist|flat|tree|is-prime|throws_like|trans)\\b",name:"support.function.perl"}],repository:{qq_brace_string_content:{begin:"{",end:"}",patterns:[{include:"#qq_brace_string_content"}]},qq_bracket_string_content:{begin:"\\[",end:"\\]",patterns:[{include:"#qq_bracket_string_content"}]},qq_double_string_content:{begin:'"',end:'"',patterns:[{include:"#qq_double_string_content"}]},qq_paren_string_content:{begin:"\\(",end:"\\)",patterns:[{include:"#qq_paren_string_content"}]},qq_single_string_content:{begin:"'",end:"'",patterns:[{include:"#qq_single_string_content"}]},qq_slash_string_content:{begin:"\\\\/",end:"\\\\/",patterns:[{include:"#qq_slash_string_content"}]}},scopeName:"source.perl.6",aliases:["perl6"]});var a=[e];export{a as default}; diff --git a/assets/chunks/razor.BPIJn9no.js b/assets/chunks/razor.BPIJn9no.js new file mode 100644 index 000000000..8ba8b5cfc --- /dev/null +++ b/assets/chunks/razor.BPIJn9no.js @@ -0,0 +1,40 @@ +import e from"./html.CuK0VrWf.js";import t from"./csharp.DISxKEhY.js";import"./javascript.Dch3xQiY.js";import"./css.CbYhyuC0.js";const n=Object.freeze({displayName:"ASP.NET Razor",fileTypes:["razor","cshtml"],injections:{"string.quoted.double.html":{patterns:[{include:"#explicit-razor-expression"},{include:"#implicit-expression"}]},"string.quoted.single.html":{patterns:[{include:"#explicit-razor-expression"},{include:"#implicit-expression"}]}},name:"razor",patterns:[{include:"#razor-control-structures"},{include:"text.html.basic"}],repository:{"addTagHelper-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.addTagHelper"},3:{patterns:[{include:"#tagHelper-directive-argument"}]}},match:"(@)(addTagHelper)\\s+([^$]+)?",name:"meta.directive"},"attribute-directive":{begin:"(@)(attribute)\\b\\s+",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.attribute"}},end:"(?<=\\])|$",name:"meta.directive",patterns:[{include:"source.cs#attribute-section"}]},"await-prefix":{match:"(await)\\s+",name:"keyword.other.await.cs"},"balanced-brackets-csharp":{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.squarebracket.open.cs"}},end:"(\\])",endCaptures:{1:{name:"punctuation.squarebracket.close.cs"}},name:"razor.test.balanced.brackets",patterns:[{include:"source.cs"}]},"balanced-parenthesis-csharp":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parenthesis.close.cs"}},name:"razor.test.balanced.parenthesis",patterns:[{include:"source.cs"}]},"catch-clause":{begin:"(?:^|(?<=}))\\s*(catch)\\b\\s*?(?=[\\n\\(\\{])",beginCaptures:{1:{name:"keyword.control.try.catch.cs"}},end:"(?<=})",name:"meta.statement.catch.razor",patterns:[{include:"#catch-condition"},{include:"source.cs#when-clause"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"catch-condition":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{captures:{1:{patterns:[{include:"source.cs#type"}]},6:{name:"entity.name.variable.local.cs"}},match:`(?x) +(?<type-name> +(?: +(?: +(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(?<name-and-type-args> +\\g<identifier>\\s* +(?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)? +) +(?:\\s*\\.\\s*\\g<name-and-type-args>)* | +(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +)\\s* +(?:(\\g<identifier>)\\b)?`}]},"code-directive":{begin:"(@)(code)((?=\\{)|\\s+)",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.code"}},end:"(?<=})|\\s",patterns:[{include:"#directive-codeblock"}]},"csharp-code-block":{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.curlybrace.open.cs"}},end:"(\\})",endCaptures:{1:{name:"punctuation.curlybrace.close.cs"}},name:"meta.structure.razor.csharp.codeblock",patterns:[{include:"#razor-codeblock-body"}]},"csharp-condition":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"source.cs#local-variable-declaration"},{include:"source.cs#expression"},{include:"source.cs#punctuation-comma"},{include:"source.cs#punctuation-semicolon"}]},"directive-codeblock":{begin:"(\\{)",beginCaptures:{1:{name:"keyword.control.razor.directive.codeblock.open"}},contentName:"source.cs",end:"(\\})",endCaptures:{1:{name:"keyword.control.razor.directive.codeblock.close"}},name:"meta.structure.razor.directive.codeblock",patterns:[{include:"source.cs#class-or-struct-members"}]},"directive-markupblock":{begin:"(\\{)",beginCaptures:{1:{name:"keyword.control.razor.directive.codeblock.open"}},end:"(\\})",endCaptures:{1:{name:"keyword.control.razor.directive.codeblock.close"}},name:"meta.structure.razor.directive.markblock",patterns:[{include:"$self"}]},directives:{patterns:[{include:"#code-directive"},{include:"#functions-directive"},{include:"#page-directive"},{include:"#addTagHelper-directive"},{include:"#removeTagHelper-directive"},{include:"#tagHelperPrefix-directive"},{include:"#model-directive"},{include:"#inherits-directive"},{include:"#implements-directive"},{include:"#namespace-directive"},{include:"#inject-directive"},{include:"#attribute-directive"},{include:"#section-directive"},{include:"#layout-directive"},{include:"#using-directive"},{include:"#rendermode-directive"},{include:"#preservewhitespace-directive"},{include:"#typeparam-directive"}]},"do-statement":{begin:"(?:(@))(do)\\b\\s",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.loop.do.cs"}},end:"(?<=})",name:"meta.statement.do.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"do-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(do)\\b\\s",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.loop.do.cs"}},end:"(?<=})",name:"meta.statement.do.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"else-part":{begin:"(?:^|(?<=}))\\s*(else)\\b\\s*?(?: (if))?\\s*?(?=[\\n\\(\\{])",beginCaptures:{1:{name:"keyword.control.conditional.else.cs"},2:{name:"keyword.control.conditional.if.cs"}},end:"(?<=})",name:"meta.statement.else.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"escaped-transition":{match:"@@",name:"constant.character.escape.razor.transition"},"explicit-razor-expression":{begin:"(@)\\(",beginCaptures:{0:{name:"keyword.control.cshtml"},1:{patterns:[{include:"#transition"}]}},end:"\\)",endCaptures:{0:{name:"keyword.control.cshtml"}},name:"meta.expression.explicit.cshtml",patterns:[{include:"source.cs#expression"}]},"finally-clause":{begin:"(?:^|(?<=}))\\s*(finally)\\b\\s*?(?=[\\n\\{])",beginCaptures:{1:{name:"keyword.control.try.finally.cs"}},end:"(?<=})",name:"meta.statement.finally.razor",patterns:[{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"for-statement":{begin:"(?:(@))(for)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.loop.for.cs"}},end:"(?<=})",name:"meta.statement.for.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"for-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(for)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.loop.for.cs"}},end:"(?<=})",name:"meta.statement.for.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"foreach-condition":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{captures:{1:{name:"keyword.other.var.cs"},2:{patterns:[{include:"source.cs#type"}]},7:{name:"entity.name.variable.local.cs"},8:{name:"keyword.control.loop.in.cs"}},match:`(?x) +(?: +(\\bvar\\b)| +(?<type-name> +(?: +(?: +(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? +(?<name-and-type-args> +\\g<identifier>\\s* +(?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)? +) +(?:\\s*\\.\\s*\\g<name-and-type-args>)* | +(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)) +) +(?:\\s*\\?\\s*)? +(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* +) +) +)\\s+ +(\\g<identifier>)\\s+ +\\b(in)\\b`},{captures:{1:{name:"keyword.other.var.cs"},2:{patterns:[{include:"source.cs#tuple-declaration-deconstruction-element-list"}]},3:{name:"keyword.control.loop.in.cs"}},match:`(?x) +(?:\\b(var)\\b\\s*)? +(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+ +\\b(in)\\b`},{include:"source.cs#expression"}]},"foreach-statement":{begin:"(?:(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{patterns:[{include:"#await-prefix"}]},3:{name:"keyword.control.loop.foreach.cs"}},end:"(?<=})",name:"meta.statement.foreach.razor",patterns:[{include:"#foreach-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"foreach-statement-with-optional-transition":{begin:"(?:^\\s*|(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{patterns:[{include:"#await-prefix"}]},3:{name:"keyword.control.loop.foreach.cs"}},end:"(?<=})",name:"meta.statement.foreach.razor",patterns:[{include:"#foreach-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"functions-directive":{begin:"(@)(functions)((?=\\{)|\\s+)",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.functions"}},end:"(?<=})|\\s",patterns:[{include:"#directive-codeblock"}]},"if-statement":{begin:"(?:(@))(if)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.conditional.if.cs"}},end:"(?<=})",name:"meta.statement.if.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"if-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(if)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.conditional.if.cs"}},end:"(?<=})",name:"meta.statement.if.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"implements-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.implements"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(implements)\\s+([^$]+)?",name:"meta.directive"},"implicit-expression":{begin:"(?<![[:alpha:][:alnum:]])(@)",beginCaptures:{1:{patterns:[{include:"#transition"}]}},contentName:"source.cs",end:`(?=[\\s<>\\{\\}\\)\\]'"])`,name:"meta.expression.implicit.cshtml",patterns:[{include:"#await-prefix"},{include:"#implicit-expression-body"}]},"implicit-expression-accessor":{match:"(?<=\\.)[_[:alpha:]][_[:alnum:]]*",name:"variable.other.object.property.cs"},"implicit-expression-accessor-start":{begin:"([_[:alpha:]][_[:alnum:]]*)",beginCaptures:{1:{name:"variable.other.object.cs"}},end:`(?=[\\s<>\\{\\}\\)\\]'"])`,patterns:[{include:"#implicit-expression-continuation"}]},"implicit-expression-body":{end:`(?=[\\s<>\\{\\}\\)\\]'"])`,patterns:[{include:"#implicit-expression-invocation-start"},{include:"#implicit-expression-accessor-start"}]},"implicit-expression-continuation":{end:`(?=[\\s<>\\{\\}\\)\\]'"])`,patterns:[{include:"#balanced-parenthesis-csharp"},{include:"#balanced-brackets-csharp"},{include:"#implicit-expression-invocation"},{include:"#implicit-expression-accessor"},{include:"#implicit-expression-extension"}]},"implicit-expression-dot-operator":{captures:{1:{name:"punctuation.accessor.cs"}},match:"(\\.)(?=[_[:alpha:]][_[:alnum:]]*)"},"implicit-expression-invocation":{match:"(?<=\\.)[_[:alpha:]][_[:alnum:]]*(?=\\()",name:"entity.name.function.cs"},"implicit-expression-invocation-start":{begin:"([_[:alpha:]][_[:alnum:]]*)(?=\\()",beginCaptures:{1:{name:"entity.name.function.cs"}},end:`(?=[\\s<>\\{\\}\\)\\]'"])`,patterns:[{include:"#implicit-expression-continuation"}]},"implicit-expression-null-conditional-operator":{captures:{1:{name:"keyword.operator.null-conditional.cs"}},match:"(\\?)(?=[.\\[])"},"implicit-expression-null-forgiveness-operator":{captures:{1:{name:"keyword.operator.logical.cs"}},match:"(\\!)(?=(?:\\.[_[:alpha:]][_[:alnum:]]*)|\\?|[\\[\\(])"},"implicit-expression-operator":{patterns:[{include:"#implicit-expression-dot-operator"},{include:"#implicit-expression-null-conditional-operator"},{include:"#implicit-expression-null-forgiveness-operator"}]},"inherits-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.inherits"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(inherits)\\s+([^$]+)?",name:"meta.directive"},"inject-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.inject"},3:{patterns:[{include:"source.cs#type"}]},4:{name:"entity.name.variable.property.cs"}},match:"(@)(inject)\\s*([\\S\\s]+?)?\\s*([_[:alpha:]][_[:alnum:]]*)?\\s*(?=$)",name:"meta.directive"},"layout-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.layout"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(layout)\\s+([^$]+)?",name:"meta.directive"},"lock-statement":{begin:"(?:(@))(lock)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.other.lock.cs"}},end:"(?<=})",name:"meta.statement.lock.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"lock-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(lock)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.other.lock.cs"}},end:"(?<=})",name:"meta.statement.lock.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"model-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.model"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(model)\\s+([^$]+)?",name:"meta.directive"},"namespace-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.namespace"},3:{patterns:[{include:"#namespace-directive-argument"}]}},match:"(@)(namespace)\\s+([^\\s]+)?",name:"meta.directive"},"namespace-directive-argument":{captures:{1:{name:"entity.name.type.namespace.cs"},2:{name:"punctuation.accessor.cs"}},match:"([_[:alpha:]][_[:alnum:]]*)(\\.)?"},"non-void-tag":{begin:"(?=<(!)?([^/\\s>]+)(\\s|/?>))",end:"(</)(\\2)\\s*(>)|(/>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"},3:{name:"punctuation.definition.tag.end.html"},4:{name:"punctuation.definition.tag.end.html"}},patterns:[{begin:"(<)(!)?([^/\\s>]+)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"constant.character.escape.razor.tagHelperOptOut"},3:{name:"entity.name.tag.html"}},end:"(?=/?>)",patterns:[{include:"#razor-control-structures"},{include:"text.html.basic#attribute"}]},{begin:">",beginCaptures:{0:{name:"punctuation.definition.tag.end.html"}},end:"(?=</)",patterns:[{include:"#wellformed-html"},{include:"$self"}]}]},"optionally-transitioned-csharp-control-structures":{patterns:[{include:"#using-statement-with-optional-transition"},{include:"#if-statement-with-optional-transition"},{include:"#else-part"},{include:"#foreach-statement-with-optional-transition"},{include:"#for-statement-with-optional-transition"},{include:"#while-statement"},{include:"#switch-statement-with-optional-transition"},{include:"#lock-statement-with-optional-transition"},{include:"#do-statement-with-optional-transition"},{include:"#try-statement-with-optional-transition"}]},"optionally-transitioned-razor-control-structures":{patterns:[{include:"#razor-comment"},{include:"#razor-codeblock"},{include:"#explicit-razor-expression"},{include:"#escaped-transition"},{include:"#directives"},{include:"#optionally-transitioned-csharp-control-structures"},{include:"#implicit-expression"}]},"page-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.page"},3:{patterns:[{include:"source.cs#string-literal"}]}},match:"(@)(page)\\s+([^$]+)?",name:"meta.directive"},"preservewhitespace-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.preservewhitespace"},3:{patterns:[{include:"source.cs#boolean-literal"}]}},match:"(@)(preservewhitespace)\\s+([^$]+)?",name:"meta.directive"},"razor-codeblock":{begin:"(@)(\\{)",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.codeblock.open"}},contentName:"source.cs",end:"(\\})",endCaptures:{1:{name:"keyword.control.razor.directive.codeblock.close"}},name:"meta.structure.razor.codeblock",patterns:[{include:"#razor-codeblock-body"}]},"razor-codeblock-body":{patterns:[{include:"#text-tag"},{include:"#wellformed-html"},{include:"#razor-single-line-markup"},{include:"#optionally-transitioned-razor-control-structures"},{include:"source.cs"}]},"razor-comment":{begin:"(@)(\\*)",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.comment.star"}},contentName:"comment.block.razor",end:"(\\*)(@)",endCaptures:{1:{name:"keyword.control.razor.comment.star"},2:{patterns:[{include:"#transition"}]}},name:"meta.comment.razor"},"razor-control-structures":{patterns:[{include:"#razor-comment"},{include:"#razor-codeblock"},{include:"#explicit-razor-expression"},{include:"#escaped-transition"},{include:"#directives"},{include:"#transitioned-csharp-control-structures"},{include:"#implicit-expression"}]},"razor-single-line-markup":{captures:{1:{name:"keyword.control.razor.singleLineMarkup"},2:{patterns:[{include:"#razor-control-structures"},{include:"text.html.basic"}]}},match:"(\\@\\:)([^$]*)$"},"removeTagHelper-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.removeTagHelper"},3:{patterns:[{include:"#tagHelper-directive-argument"}]}},match:"(@)(removeTagHelper)\\s+([^$]+)?",name:"meta.directive"},"rendermode-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.rendermode"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(rendermode)\\s+([^$]+)?",name:"meta.directive"},"section-directive":{begin:"(@)(section)\\b\\s+([_[:alpha:]][_[:alnum:]]*)?",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.section"},3:{name:"variable.other.razor.directive.sectionName"}},end:"(?<=})",name:"meta.directive.block",patterns:[{include:"#directive-markupblock"}]},"switch-code-block":{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.curlybrace.open.cs"}},end:"(\\})",endCaptures:{1:{name:"punctuation.curlybrace.close.cs"}},name:"meta.structure.razor.csharp.codeblock.switch",patterns:[{include:"source.cs#switch-label"},{include:"#razor-codeblock-body"}]},"switch-statement":{begin:"(?:(@))(switch)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.switch.cs"}},end:"(?<=})",name:"meta.statement.switch.razor",patterns:[{include:"#csharp-condition"},{include:"#switch-code-block"},{include:"#razor-codeblock-body"}]},"switch-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(switch)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.switch.cs"}},end:"(?<=})",name:"meta.statement.switch.razor",patterns:[{include:"#csharp-condition"},{include:"#switch-code-block"},{include:"#razor-codeblock-body"}]},"tagHelper-directive-argument":{patterns:[{include:"source.cs#string-literal"},{include:"#unquoted-string-argument"}]},"tagHelperPrefix-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.tagHelperPrefix"},3:{patterns:[{include:"#tagHelper-directive-argument"}]}},match:"(@)(tagHelperPrefix)\\s+([^$]+)?",name:"meta.directive"},"text-tag":{begin:"(<text\\s*>)",beginCaptures:{1:{name:"keyword.control.cshtml.transition.textTag.open"}},end:"(</text>)",endCaptures:{1:{name:"keyword.control.cshtml.transition.textTag.close"}},patterns:[{include:"#wellformed-html"},{include:"$self"}]},transition:{match:"@",name:"keyword.control.cshtml.transition"},"transitioned-csharp-control-structures":{patterns:[{include:"#using-statement"},{include:"#if-statement"},{include:"#else-part"},{include:"#foreach-statement"},{include:"#for-statement"},{include:"#while-statement"},{include:"#switch-statement"},{include:"#lock-statement"},{include:"#do-statement"},{include:"#try-statement"}]},"try-block":{begin:"(?:(@))(try)\\b\\s*",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.try.cs"}},end:"(?<=})",name:"meta.statement.try.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"try-block-with-optional-transition":{begin:"(?:^\\s*|(@))(try)\\b\\s*",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.try.cs"}},end:"(?<=})",name:"meta.statement.try.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"try-statement":{patterns:[{include:"#try-block"},{include:"#catch-clause"},{include:"#finally-clause"}]},"try-statement-with-optional-transition":{patterns:[{include:"#try-block-with-optional-transition"},{include:"#catch-clause"},{include:"#finally-clause"}]},"typeparam-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.razor.directive.typeparam"},3:{patterns:[{include:"source.cs#type"}]}},match:"(@)(typeparam)\\s+([^$]+)?",name:"meta.directive"},"unquoted-string-argument":{match:"[^$]+",name:"string.quoted.double.cs"},"using-alias-directive":{captures:{1:{name:"entity.name.type.alias.cs"},2:{name:"keyword.operator.assignment.cs"},3:{patterns:[{include:"source.cs#type"}]}},match:"([_[:alpha:]][_[:alnum:]]*)\\b\\s*(=)\\s*(.+)\\s*"},"using-directive":{captures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.other.using.cs"},3:{patterns:[{include:"#using-static-directive"},{include:"#using-alias-directive"},{include:"#using-standard-directive"}]},4:{name:"keyword.control.razor.optionalSemicolon"}},match:"(@)(using)\\b\\s+(?!\\(|\\s)(.+?)?(;)?$",name:"meta.directive"},"using-standard-directive":{captures:{1:{name:"entity.name.type.namespace.cs"}},match:"([_[:alpha:]][_[:alnum:]]*)\\s*"},"using-statement":{begin:"(?:(@))(using)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.other.using.cs"}},end:"(?<=})",name:"meta.statement.using.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"using-statement-with-optional-transition":{begin:"(?:^\\s*|(@))(using)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.other.using.cs"}},end:"(?<=})",name:"meta.statement.using.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]},"using-static-directive":{captures:{1:{name:"keyword.other.static.cs"},2:{patterns:[{include:"source.cs#type"}]}},match:"(static)\\b\\s+(.+)"},"void-tag":{begin:"(?i)(<)(!)?(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"constant.character.escape.razor.tagHelperOptOut"},3:{name:"entity.name.tag.html"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.$3.void.html",patterns:[{include:"text.html.basic#attribute"}]},"wellformed-html":{patterns:[{include:"#void-tag"},{include:"#non-void-tag"}]},"while-statement":{begin:"(?:(@)|^\\s*|(?<=})\\s*)(while)\\b\\s*(?=\\()",beginCaptures:{1:{patterns:[{include:"#transition"}]},2:{name:"keyword.control.loop.while.cs"}},end:"(?<=})|(;)",endCaptures:{1:{name:"punctuation.terminator.statement.cs"}},name:"meta.statement.while.razor",patterns:[{include:"#csharp-condition"},{include:"#csharp-code-block"},{include:"#razor-codeblock-body"}]}},scopeName:"text.aspnetcorerazor",embeddedLangs:["html","csharp"]});var o=[...e,...t,n];export{o as default}; diff --git a/assets/chunks/red.jaXbsbtS.js b/assets/chunks/red.jaXbsbtS.js new file mode 100644 index 000000000..9982cb977 --- /dev/null +++ b/assets/chunks/red.jaXbsbtS.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#580000","badge.background":"#cc3333","button.background":"#833","debugToolBar.background":"#660000","dropdown.background":"#580000","editor.background":"#390000","editor.foreground":"#F8F8F8","editor.hoverHighlightBackground":"#ff000044","editor.lineHighlightBackground":"#ff000033","editor.selectionBackground":"#750000","editor.selectionHighlightBackground":"#f5500039","editorCursor.foreground":"#970000","editorGroup.border":"#ff666633","editorGroupHeader.tabsBackground":"#330000","editorHoverWidget.background":"#300000","editorLineNumber.activeForeground":"#ffbbbb88","editorLineNumber.foreground":"#ff777788","editorLink.activeForeground":"#FFD0AA","editorSuggestWidget.background":"#300000","editorSuggestWidget.border":"#220000","editorWhitespace.foreground":"#c10000","editorWidget.background":"#300000",errorForeground:"#ffeaea","extensionButton.prominentBackground":"#cc3333","extensionButton.prominentHoverBackground":"#cc333388",focusBorder:"#ff6666aa","input.background":"#580000","inputOption.activeBorder":"#cc0000","inputValidation.infoBackground":"#550000","inputValidation.infoBorder":"#DB7E58","list.activeSelectionBackground":"#880000","list.dropBackground":"#662222","list.highlightForeground":"#ff4444","list.hoverBackground":"#800000","list.inactiveSelectionBackground":"#770000","minimap.selectionHighlight":"#750000","peekView.border":"#ff000044","peekViewEditor.background":"#300000","peekViewResult.background":"#400000","peekViewTitle.background":"#550000","pickerGroup.border":"#ff000033","pickerGroup.foreground":"#cc9999","ports.iconRunningProcessForeground":"#DB7E58","progressBar.background":"#cc3333","quickInputList.focusBackground":"#660000","selection.background":"#ff777788","sideBar.background":"#330000","statusBar.background":"#700000","statusBar.noFolderBackground":"#700000","statusBarItem.remoteBackground":"#c33","tab.activeBackground":"#490000","tab.inactiveBackground":"#300a0a","tab.lastPinnedBorder":"#ff000044","titleBar.activeBackground":"#770000","titleBar.inactiveBackground":"#772222"},displayName:"Red",name:"red",semanticHighlighting:!0,tokenColors:[{settings:{foreground:"#F8F8F8"}},{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#F8F8F8"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#e7c0c0ff"}},{scope:"constant",settings:{fontStyle:"",foreground:"#994646ff"}},{scope:"keyword",settings:{fontStyle:"",foreground:"#f12727ff"}},{scope:"entity",settings:{fontStyle:"",foreground:"#fec758ff"}},{scope:"storage",settings:{fontStyle:"bold",foreground:"#ff6262ff"}},{scope:"string",settings:{fontStyle:"",foreground:"#cd8d8dff"}},{scope:"support",settings:{fontStyle:"",foreground:"#9df39fff"}},{scope:"variable",settings:{fontStyle:"italic",foreground:"#fb9a4bff"}},{scope:"invalid",settings:{foreground:"#ffffffff"}},{scope:"entity.other.inherited-class",settings:{fontStyle:"underline",foreground:"#aa5507ff"}},{scope:"constant.character",settings:{foreground:"#ec0d1e"}},{scope:["string constant","constant.character.escape"],settings:{fontStyle:"",foreground:"#ffe862ff"}},{scope:"string.regexp",settings:{foreground:"#ffb454ff"}},{scope:"string variable",settings:{foreground:"#edef7dff"}},{scope:"support.function",settings:{fontStyle:"",foreground:"#ffb454ff"}},{scope:["support.constant","support.variable"],settings:{fontStyle:"",foreground:"#eb939aff"}},{scope:["declaration.sgml.html declaration.doctype","declaration.sgml.html declaration.doctype entity","declaration.sgml.html declaration.doctype string","declaration.xml-processing","declaration.xml-processing entity","declaration.xml-processing string"],settings:{fontStyle:"",foreground:"#73817dff"}},{scope:["declaration.tag","declaration.tag entity","meta.tag","meta.tag entity"],settings:{fontStyle:"",foreground:"#ec0d1eff"}},{scope:"meta.selector.css entity.name.tag",settings:{fontStyle:"",foreground:"#aa5507ff"}},{scope:"meta.selector.css entity.other.attribute-name.id",settings:{foreground:"#fec758ff"}},{scope:"meta.selector.css entity.other.attribute-name.class",settings:{fontStyle:"",foreground:"#41a83eff"}},{scope:"support.type.property-name.css",settings:{fontStyle:"",foreground:"#96dd3bff"}},{scope:["meta.property-group support.constant.property-value.css","meta.property-value support.constant.property-value.css"],settings:{fontStyle:"italic",foreground:"#ffe862ff"}},{scope:["meta.property-value support.constant.named-color.css","meta.property-value constant"],settings:{fontStyle:"",foreground:"#ffe862ff"}},{scope:"meta.preprocessor.at-rule keyword.control.at-rule",settings:{foreground:"#fd6209ff"}},{scope:"meta.constructor.argument.css",settings:{fontStyle:"",foreground:"#ec9799ff"}},{scope:["meta.diff","meta.diff.header"],settings:{fontStyle:"italic",foreground:"#f8f8f8ff"}},{scope:"markup.deleted",settings:{foreground:"#ec9799ff"}},{scope:"markup.changed",settings:{foreground:"#f8f8f8ff"}},{scope:"markup.inserted",settings:{foreground:"#41a83eff"}},{scope:"markup.quote",settings:{foreground:"#f12727ff"}},{scope:"markup.list",settings:{foreground:"#ff6262ff"}},{scope:["markup.bold","markup.italic"],settings:{foreground:"#fb9a4bff"}},{scope:"markup.bold",settings:{fontStyle:"bold"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{fontStyle:"",foreground:"#cd8d8dff"}},{scope:["markup.heading","markup.heading.setext","punctuation.definition.heading","entity.name.section"],settings:{fontStyle:"bold",foreground:"#fec758ff"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded",".format.placeholder"],settings:{foreground:"#ec0d1e"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/reg.CrhH3_Og.js b/assets/chunks/reg.CrhH3_Og.js new file mode 100644 index 000000000..a2fca6a35 --- /dev/null +++ b/assets/chunks/reg.CrhH3_Og.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Windows Registry Script",fileTypes:["reg","REG"],name:"reg",patterns:[{match:"Windows Registry Editor Version 5\\.00|REGEDIT4",name:"keyword.control.import.reg"},{captures:{1:{name:"punctuation.definition.comment.reg"}},match:"(;).*$",name:"comment.line.semicolon.reg"},{captures:{1:{name:"punctuation.definition.section.reg"},2:{name:"entity.section.reg"},3:{name:"punctuation.definition.section.reg"}},match:"^\\s*(\\[(?!-))(.*?)(\\])",name:"entity.name.function.section.add.reg"},{captures:{1:{name:"punctuation.definition.section.reg"},2:{name:"entity.section.reg"},3:{name:"punctuation.definition.section.reg"}},match:"^\\s*(\\[-)(.*?)(\\])",name:"entity.name.function.section.delete.reg"},{captures:{2:{name:"punctuation.definition.quote.reg"},3:{name:"support.function.regname.ini"},4:{name:"punctuation.definition.quote.reg"},5:{name:"punctuation.definition.equals.reg"},7:{name:"keyword.operator.arithmetic.minus.reg"},9:{name:"punctuation.definition.quote.reg"},10:{name:"string.name.regdata.reg"},11:{name:"punctuation.definition.quote.reg"},13:{name:"support.type.dword.reg"},14:{name:"keyword.operator.arithmetic.colon.reg"},15:{name:"constant.numeric.dword.reg"},17:{name:"support.type.dword.reg"},18:{name:"keyword.operator.arithmetic.parenthesis.reg"},19:{name:"keyword.operator.arithmetic.parenthesis.reg"},20:{name:"constant.numeric.hex.size.reg"},21:{name:"keyword.operator.arithmetic.parenthesis.reg"},22:{name:"keyword.operator.arithmetic.colon.reg"},23:{name:"constant.numeric.hex.reg"},24:{name:"keyword.operator.arithmetic.linecontinuation.reg"},25:{name:"comment.declarationline.semicolon.reg"}},match:`^(\\s*(["']?)(.+?)(["']?)\\s*(=))?\\s*((-)|((["'])(.*?)(["']))|(((?i:dword))(\\:)\\s*([\\dabcdefABCDEF]{1,8}))|(((?i:hex))((\\()([\\d]*)(\\)))?(\\:)(.*?)(\\\\?)))\\s*(;.*)?$`,name:"meta.declaration.reg"},{match:"[0-9]+",name:"constant.numeric.reg"},{match:"[a-fA-F]+",name:"constant.numeric.hex.reg"},{match:",+",name:"constant.numeric.hex.comma.reg"},{match:"\\\\",name:"keyword.operator.arithmetic.linecontinuation.reg"}],scopeName:"source.reg"});var n=[e];export{n as default}; diff --git a/assets/chunks/rel.6Kuza3Wr.js b/assets/chunks/rel.6Kuza3Wr.js new file mode 100644 index 000000000..2dc88a2d2 --- /dev/null +++ b/assets/chunks/rel.6Kuza3Wr.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Rel",name:"rel",patterns:[{include:"#strings"},{include:"#comment"},{include:"#single-line-comment-consuming-line-ending"},{include:"#deprecated-temporary"},{include:"#operators"},{include:"#symbols"},{include:"#keywords"},{include:"#otherkeywords"},{include:"#types"},{include:"#constants"}],repository:{comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.rel"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.rel"}},name:"comment.block.documentation.rel",patterns:[{include:"#docblock"}]},{begin:"(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",beginCaptures:{1:{name:"punctuation.definition.comment.rel"},2:{name:"storage.type.internaldeclaration.rel"},3:{name:"punctuation.decorator.internaldeclaration.rel"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.rel"}},name:"comment.block.rel"},{begin:'doc"""',end:'"""',name:"comment.block.documentation.rel"},{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.rel"},2:{name:"comment.line.double-slash.rel"},3:{name:"punctuation.definition.comment.rel"},4:{name:"storage.type.internaldeclaration.rel"},5:{name:"punctuation.decorator.internaldeclaration.rel"}},contentName:"comment.line.double-slash.rel",end:"(?=$)"}]},constants:{patterns:[{match:"(\\b(true|false)\\b)",name:"constant.language.rel"}]},"deprecated-temporary":{patterns:[{match:"@inspect",name:"keyword.other.rel"}]},keywords:{patterns:[{match:"(\\b(def|entity|bound|include|ic|forall|exists|∀|∃|return|module|^end)\\b)|(((\\<)?\\|(\\>)?)|∀|∃)",name:"keyword.control.rel"}]},operators:{patterns:[{match:"(\\b(if|then|else|and|or|not|eq|neq|lt|lt_eq|gt|gt_eq)\\b)|(\\+|\\-|\\*|\\/|÷|\\^|\\%|\\=|\\!\\=|≠|\\<|\\<\\=|≤|\\>|\\>\\=|≥|\\&)|\\s+(end)",name:"keyword.other.rel"}]},otherkeywords:{patterns:[{match:"\\s*(@inline)\\s*|\\s*(@auto_number)\\s*|\\s*(function)\\s|(\\b(implies|select|from|∈|where|for|in)\\b)|(((\\<)?\\|(\\>)?)|∈)",name:"keyword.other.rel"}]},"single-line-comment-consuming-line-ending":{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.rel"},2:{name:"comment.line.double-slash.rel"},3:{name:"punctuation.definition.comment.rel"},4:{name:"storage.type.internaldeclaration.rel"},5:{name:"punctuation.decorator.internaldeclaration.rel"}},contentName:"comment.line.double-slash.rel",end:"(?=^)"},strings:{begin:'"',end:'"',name:"string.quoted.double.rel",patterns:[{match:"\\\\.",name:"constant.character.escape.rel"}]},symbols:{patterns:[{match:"(:[\\[_$[:alpha:]](\\]|[_$[:alnum:]]*))",name:"variable.parameter.rel"}]},types:{patterns:[{match:"(\\b(Symbol|Char|Bool|Rational|FixedDecimal|Float16|Float32|Float64|Int8|Int16|Int32|Int64|Int128|UInt8|UInt16|UInt32|UInt64|UInt128|Date|DateTime|Day|Week|Month|Year|Nanosecond|Microsecond|Millisecond|Second|Minute|Hour|FilePos|HashValue|AutoNumberValue)\\b)",name:"entity.name.type.rel"}]}},scopeName:"source.rel"});var n=[e];export{n as default}; diff --git a/assets/chunks/riscv.AgnqFTPX.js b/assets/chunks/riscv.AgnqFTPX.js new file mode 100644 index 000000000..be5670a42 --- /dev/null +++ b/assets/chunks/riscv.AgnqFTPX.js @@ -0,0 +1,13 @@ +const n=Object.freeze({displayName:"RISC-V",fileTypes:["S","s","riscv","asm"],name:"riscv",patterns:[{comment:"ok actually this are instructions, but one also could call them funtions…",match:"\\b(la|lb|lh|lw|ld|nop|li|mv|not|neg|negw|sext\\.w|seqz|snez|sltz|sgtz|beqz|bnez|blez|bgez|bltz|bgtz|bgt|ble|bgtu|bleu|j|jal|jr|ret|call|tail|fence|csr[r|w|s|c]|csr[w|s|c]i)\\b",name:"support.function.pseudo.riscv"},{match:"\\b(add|addw|auipc|lui|jalr|beq|bne|blt|bge|bltu|bgeu|lb|lh|lw|ld|lbu|lhu|sb|sh|sw|sd|addi|addiw|slti|sltiu|xori|ori|andi|slli|slliw|srli|srliw|srai|sraiw|sub|subw|sll|sllw|slt|sltu|xor|srl|srlw|sra|sraw|or|and|fence|fence\\.i|csrrw|csrrs|csrrc|csrrwi|csrrsi|csrrci)\\b",name:"support.function.riscv"},{comment:"priviledged instructions",match:"\\b(ecall|ebreak|sfence\\.vma|mret|sret|uret|wfi)\\b",name:"support.function.riscv.privileged"},{comment:"M extension (multiplication and division)",match:"\\b(mul|mulh|mulhsu|mulhu|div|divu|rem|remu|mulw|divw|divuw|remw|remuw)\\b",name:"support.function.riscv.m"},{comment:"C extension (compressed instructions)",match:"\\b(c\\.addi4spn|c\\.fld|c\\.lq|c\\.lw|c\\.flw|c\\.ld|c\\.fsd|c\\.sq|c\\.sw|c\\.fsw|c\\.sd|c\\.nop|c\\.addi|c\\.jal|c\\.addiw|c\\.li|c\\.addi16sp|c\\.lui|c\\.srli|c\\.srli64|c\\.srai|c\\.srai64|c\\.andi|c\\.sub|c\\.xor|c\\.or|c\\.and|c\\.subw|c\\.addw|c\\.j|c\\.beqz|c\\.bnez)\\b",name:"support.function.riscv.c"},{comment:"A extension (atomic instructions)",match:"\\b(lr\\.[w|d]|sc\\.[w|d]|amoswap\\.[w|d]|amoadd\\.[w|d]|amoxor\\.[w|d]|amoand\\.[w|d]|amoor\\.[w|d]|amomin\\.[w|d]|amomax\\.[w|d]|amominu\\.[w|d]|amomaxu\\.[w|d])\\b",name:"support.function.riscv.a"},{comment:"F extension (single precision floating point)",match:"\\b(flw|fsw|fmadd\\.s|fmsub\\.s|fnmsub\\.s|fnmadd\\.s|fadd\\.s|fsub\\.s|fmul\\.s|fdiv\\.s|fsqrt\\.s|fsgnj\\.s|fsgnjn\\.s|fsgnjx\\.s|fmin\\.s|fmax\\.s|fcvt\\.w\\.s|fcvt\\.wu\\.s|fmv\\.x\\.w|feq\\.s|flt\\.s|fle\\.s|fclass\\.s|fcvt\\.s\\.w|fcvt\\.s\\.wu|fmv\\.w\\.x|fcvt\\.l\\.s|fcvt\\.lu\\.s|fcvt\\.s\\.l|fcvt\\.s\\.lu)\\b",name:"support.function.riscv.f"},{comment:"D extension (double precision floating point)",match:"\\b(fld|fsd|fmadd\\.d|fmsub\\.d|fnmsub\\.d|fnmadd\\.d|fadd\\.d|fsub\\.d|fmul\\.d|fdiv\\.d|fsqrt\\.d|fsgnj\\.d|fsgnjn\\.d|fsgnjx\\.d|fmin\\.d|fmax\\.d|fcvt\\.s\\.d|fcvt\\.d\\.s|feq\\.d|flt\\.d|fle\\.d|fclass\\.d|fcvt\\.w\\.d|fcvt\\.wu\\.d|fcvt\\.d\\.w|fcvt\\.d\\.wu|fcvt\\.l\\.d|fcvt\\.lu\\.d|fmv\\.x\\.d|fcvt\\.d\\.l|fcvt\\.d\\.lu|fmv\\.d\\.x)\\b",name:"support.function.riscv.d"},{match:"\\.(skip|ascii|asciiz|byte|[2|4|8]byte|data|double|float|half|kdata|ktext|space|text|word|dword|dtprelword|dtpreldword|set\\s*(noat|at)|[s|u]leb128|string|incbin|zero|rodata|comm|common)\\b",name:"storage.type.riscv"},{match:"\\.(balign|align|p2align|extern|globl|global|local|pushsection|section|bss|insn|option|type|equ|macro|endm|file|ident)\\b",name:"storage.modifier.riscv"},{captures:{1:{name:"entity.name.function.label.riscv"}},match:"\\b([A-Za-z0-9_]+):",name:"meta.function.label.riscv"},{captures:{1:{name:"punctuation.definition.variable.riscv"}},match:"\\b(x([0-9]|1[0-9]|2[0-9]|3[0-1]))\\b",name:"variable.other.register.usable.by-number.riscv"},{captures:{1:{name:"punctuation.definition.variable.riscv"}},match:"\\b(zero|ra|sp|gp|tp|t[0-6]|a[0-7]|s[0-9]|fp|s1[0-1])\\b",name:"variable.other.register.usable.by-name.riscv"},{captures:{1:{name:"punctuation.definition.variable.riscv"}},match:"\\b(([umsh]|vs)status|([umsh]|vs)ie|([ums]|vs)tvec|([ums]|vs)scratch|([ums]|vs)epc|([ums]|vs)cause|([umsh]|vs)tval|([umsh]|vs)ip|fflags|frm|fcsr|m?cycleh?|timeh?|m?instreth?|m?hpmcounter([3-9]|[12][0-9]|3[01])h?|[msh][ei]deleg|[msh]counteren|v?satp|hgeie|hgeip|[hm]tinst|hvip|hgatp|htimedeltah?|mvendorid|marchid|mimpid|mhartid|misa|mstatush|mtval2|pmpcfg[0-3]|pmpaddr([0-9]|1[0-5])|mcountinhibit|mhpmevent([3-9]|[12][0-9]|3[01])|tselect|tdata[1-3]|dcsr|dpc|dscratch[0-1])\\b",name:"variable.other.csr.names.riscv"},{captures:{1:{name:"punctuation.definition.variable.riscv"}},match:"\\bf([0-9]|1[0-9]|2[0-9]|3[0-1])\\b",name:"variable.other.register.usable.floating-point.riscv"},{match:"\\b\\d+\\.\\d+\\b",name:"constant.numeric.float.riscv"},{match:"\\b(\\d+|0(x|X)[a-fA-F0-9]+)\\b",name:"constant.numeric.integer.riscv"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.riscv"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.riscv"}},name:"string.quoted.double.riscv",patterns:[{match:'\\\\[rnt\\\\"]',name:"constant.character.escape.riscv"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.riscv"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.riscv"}},name:"string.quoted.single.riscv",patterns:[{match:'\\\\[rnt\\\\"]',name:"constant.character.escape.riscv"}]},{begin:"\\/\\*",end:"\\*\\/",name:"comment.block"},{begin:"\\/\\/",end:"\\n",name:"comment.line.double-slash"},{begin:`(?x) +^\\s*\\#\\s*(define)\\s+ +((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) +(?: +(\\() +( +\\s* \\g<id> \\s* +((,) \\s* \\g<id> \\s*)* +(?:\\.\\.\\.)? +) +(\\)) +)? +`,beginCaptures:{1:{name:"keyword.control.import.define.c"},2:{name:"entity.name.function.preprocessor.c"},4:{name:"punctuation.definition.parameters.c"},5:{name:"variable.parameter.preprocessor.c"},7:{name:"punctuation.separator.parameters.c"},8:{name:"punctuation.definition.parameters.c"}},end:"(?=(?://|/\\*))|$",name:"meta.preprocessor.macro.c",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"},{include:"$base"}]},{begin:"^\\s*#\\s*(error|warning)\\b",captures:{1:{name:"keyword.control.import.error.c"}},end:"$",name:"meta.preprocessor.diagnostic.c",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"}]},{begin:"^\\s*#\\s*(include|import)\\b\\s+",captures:{1:{name:"keyword.control.import.include.c"}},end:"(?=(?://|/\\*))|$",name:"meta.preprocessor.c.include",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.double.include.c"},{begin:"<",beginCaptures:{0:{name:"punctuation.definition.string.begin.c"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.c"}},name:"string.quoted.other.lt-gt.include.c"}]},{begin:"^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\\b",captures:{1:{name:"keyword.control.import.c"}},end:"(?=(?://|/\\*))|$",name:"meta.preprocessor.c",patterns:[{match:"(?>\\\\\\s*\\n)",name:"punctuation.separator.continuation.c"}]},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.riscv"}},end:"(?!\\G)",patterns:[{begin:"#|(\\/\\/)",beginCaptures:{0:{name:"punctuation.definition.comment.riscv"}},end:"\\n",name:"comment.line.number-sign.riscv"}]}],scopeName:"source.riscv"});var e=[n];export{e as default}; diff --git a/assets/chunks/rose-pine-dawn.Bj5xdiaE.js b/assets/chunks/rose-pine-dawn.Bj5xdiaE.js new file mode 100644 index 000000000..ac417b146 --- /dev/null +++ b/assets/chunks/rose-pine-dawn.Bj5xdiaE.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#575279","activityBar.background":"#faf4ed","activityBar.dropBorder":"#f2e9e1","activityBar.foreground":"#575279","activityBar.inactiveForeground":"#797593","activityBarBadge.background":"#d7827e","activityBarBadge.foreground":"#faf4ed","badge.background":"#d7827e","badge.foreground":"#faf4ed","banner.background":"#fffaf3","banner.foreground":"#575279","banner.iconForeground":"#797593","breadcrumb.activeSelectionForeground":"#d7827e","breadcrumb.background":"#faf4ed","breadcrumb.focusForeground":"#797593","breadcrumb.foreground":"#9893a5","breadcrumbPicker.background":"#fffaf3","button.background":"#d7827e","button.foreground":"#faf4ed","button.hoverBackground":"#d7827ee6","button.secondaryBackground":"#fffaf3","button.secondaryForeground":"#575279","button.secondaryHoverBackground":"#f2e9e1","charts.blue":"#56949f","charts.foreground":"#575279","charts.green":"#286983","charts.lines":"#797593","charts.orange":"#d7827e","charts.purple":"#907aa9","charts.red":"#b4637a","charts.yellow":"#ea9d34","checkbox.background":"#fffaf3","checkbox.border":"#6e6a8614","checkbox.foreground":"#575279","debugExceptionWidget.background":"#fffaf3","debugExceptionWidget.border":"#6e6a8614","debugIcon.breakpointCurrentStackframeForeground":"#797593","debugIcon.breakpointDisabledForeground":"#797593","debugIcon.breakpointForeground":"#797593","debugIcon.breakpointStackframeForeground":"#797593","debugIcon.breakpointUnverifiedForeground":"#797593","debugIcon.continueForeground":"#797593","debugIcon.disconnectForeground":"#797593","debugIcon.pauseForeground":"#797593","debugIcon.restartForeground":"#797593","debugIcon.startForeground":"#797593","debugIcon.stepBackForeground":"#797593","debugIcon.stepIntoForeground":"#797593","debugIcon.stepOutForeground":"#797593","debugIcon.stepOverForeground":"#797593","debugIcon.stopForeground":"#b4637a","debugToolBar.background":"#fffaf3","debugToolBar.border":"#f2e9e1",descriptionForeground:"#797593","diffEditor.border":"#f2e9e1","diffEditor.diagonalFill":"#6e6a8626","diffEditor.insertedLineBackground":"#56949f26","diffEditor.insertedTextBackground":"#56949f26","diffEditor.removedLineBackground":"#b4637a26","diffEditor.removedTextBackground":"#b4637a26","diffEditorOverview.insertedForeground":"#56949f80","diffEditorOverview.removedForeground":"#b4637a80","dropdown.background":"#fffaf3","dropdown.border":"#6e6a8614","dropdown.foreground":"#575279","dropdown.listBackground":"#fffaf3","editor.background":"#faf4ed","editor.findMatchBackground":"#6e6a8626","editor.findMatchHighlightBackground":"#6e6a8626","editor.findRangeHighlightBackground":"#6e6a8626","editor.findRangeHighlightBorder":"#0000","editor.focusedStackFrameHighlightBackground":"#6e6a8614","editor.foldBackground":"#fffaf3","editor.foreground":"#575279","editor.hoverHighlightBackground":"#0000","editor.inactiveSelectionBackground":"#6e6a860d","editor.inlineValuesBackground":"#0000","editor.inlineValuesForeground":"#797593","editor.lineHighlightBackground":"#6e6a860d","editor.lineHighlightBorder":"#0000","editor.linkedEditingBackground":"#fffaf3","editor.rangeHighlightBackground":"#6e6a860d","editor.selectionBackground":"#6e6a8614","editor.selectionForeground":"#575279","editor.selectionHighlightBackground":"#6e6a8614","editor.selectionHighlightBorder":"#faf4ed","editor.snippetFinalTabstopHighlightBackground":"#6e6a8614","editor.snippetFinalTabstopHighlightBorder":"#fffaf3","editor.snippetTabstopHighlightBackground":"#6e6a8614","editor.snippetTabstopHighlightBorder":"#fffaf3","editor.stackFrameHighlightBackground":"#6e6a8614","editor.symbolHighlightBackground":"#6e6a8614","editor.symbolHighlightBorder":"#0000","editor.wordHighlightBackground":"#6e6a8614","editor.wordHighlightBorder":"#0000","editor.wordHighlightStrongBackground":"#6e6a8614","editor.wordHighlightStrongBorder":"#6e6a8614","editorBracketHighlight.foreground1":"#b4637a80","editorBracketHighlight.foreground2":"#28698380","editorBracketHighlight.foreground3":"#ea9d3480","editorBracketHighlight.foreground4":"#56949f80","editorBracketHighlight.foreground5":"#d7827e80","editorBracketHighlight.foreground6":"#907aa980","editorBracketMatch.background":"#0000","editorBracketMatch.border":"#797593","editorBracketPairGuide.activeBackground1":"#286983","editorBracketPairGuide.activeBackground2":"#d7827e","editorBracketPairGuide.activeBackground3":"#907aa9","editorBracketPairGuide.activeBackground4":"#56949f","editorBracketPairGuide.activeBackground5":"#ea9d34","editorBracketPairGuide.activeBackground6":"#b4637a","editorBracketPairGuide.background1":"#28698380","editorBracketPairGuide.background2":"#d7827e80","editorBracketPairGuide.background3":"#907aa980","editorBracketPairGuide.background4":"#56949f80","editorBracketPairGuide.background5":"#ea9d3480","editorBracketPairGuide.background6":"#b4637a80","editorCodeLens.foreground":"#d7827e","editorCursor.background":"#575279","editorCursor.foreground":"#9893a5","editorError.border":"#0000","editorError.foreground":"#b4637a","editorGhostText.foreground":"#797593","editorGroup.border":"#0000","editorGroup.dropBackground":"#fffaf3","editorGroup.emptyBackground":"#0000","editorGroup.focusedEmptyBorder":"#0000","editorGroupHeader.noTabsBackground":"#0000","editorGroupHeader.tabsBackground":"#0000","editorGroupHeader.tabsBorder":"#0000","editorGutter.addedBackground":"#56949f","editorGutter.background":"#faf4ed","editorGutter.commentRangeForeground":"#797593","editorGutter.deletedBackground":"#b4637a","editorGutter.foldingControlForeground":"#907aa9","editorGutter.modifiedBackground":"#d7827e","editorHint.border":"#0000","editorHint.foreground":"#797593","editorHoverWidget.background":"#fffaf3","editorHoverWidget.border":"#9893a580","editorHoverWidget.foreground":"#797593","editorHoverWidget.highlightForeground":"#575279","editorHoverWidget.statusBarBackground":"#0000","editorIndentGuide.activeBackground":"#9893a5","editorIndentGuide.background":"#6e6a8626","editorInfo.border":"#f2e9e1","editorInfo.foreground":"#56949f","editorInlayHint.background":"#f2e9e1","editorInlayHint.foreground":"#797593","editorInlayHint.parameterBackground":"#f2e9e1","editorInlayHint.parameterForeground":"#907aa9","editorInlayHint.typeBackground":"#f2e9e1","editorInlayHint.typeForeground":"#56949f","editorLightBulb.foreground":"#286983","editorLightBulbAutoFix.foreground":"#d7827e","editorLineNumber.activeForeground":"#575279","editorLineNumber.foreground":"#797593","editorLink.activeForeground":"#d7827e","editorMarkerNavigation.background":"#fffaf3","editorMarkerNavigationError.background":"#fffaf3","editorMarkerNavigationInfo.background":"#fffaf3","editorMarkerNavigationWarning.background":"#fffaf3","editorOverviewRuler.addedForeground":"#56949f80","editorOverviewRuler.background":"#faf4ed","editorOverviewRuler.border":"#6e6a8626","editorOverviewRuler.bracketMatchForeground":"#797593","editorOverviewRuler.commonContentForeground":"#6e6a860d","editorOverviewRuler.currentContentForeground":"#6e6a8614","editorOverviewRuler.deletedForeground":"#b4637a80","editorOverviewRuler.errorForeground":"#b4637a80","editorOverviewRuler.findMatchForeground":"#6e6a8626","editorOverviewRuler.incomingContentForeground":"#907aa980","editorOverviewRuler.infoForeground":"#56949f80","editorOverviewRuler.modifiedForeground":"#d7827e80","editorOverviewRuler.rangeHighlightForeground":"#6e6a8626","editorOverviewRuler.selectionHighlightForeground":"#6e6a8626","editorOverviewRuler.warningForeground":"#ea9d3480","editorOverviewRuler.wordHighlightForeground":"#6e6a8614","editorOverviewRuler.wordHighlightStrongForeground":"#6e6a8626","editorPane.background":"#0000","editorRuler.foreground":"#6e6a8626","editorSuggestWidget.background":"#fffaf3","editorSuggestWidget.border":"#0000","editorSuggestWidget.focusHighlightForeground":"#d7827e","editorSuggestWidget.foreground":"#797593","editorSuggestWidget.highlightForeground":"#d7827e","editorSuggestWidget.selectedBackground":"#6e6a8614","editorSuggestWidget.selectedForeground":"#575279","editorSuggestWidget.selectedIconForeground":"#575279","editorUnnecessaryCode.border":"#0000","editorUnnecessaryCode.opacity":"#57527980","editorWarning.border":"#0000","editorWarning.foreground":"#ea9d34","editorWhitespace.foreground":"#9893a5","editorWidget.background":"#fffaf3","editorWidget.border":"#f2e9e1","editorWidget.foreground":"#797593","editorWidget.resizeBorder":"#9893a5",errorForeground:"#b4637a","extensionBadge.remoteBackground":"#907aa9","extensionBadge.remoteForeground":"#faf4ed","extensionButton.prominentBackground":"#d7827e","extensionButton.prominentForeground":"#faf4ed","extensionButton.prominentHoverBackground":"#d7827ee6","extensionIcon.preReleaseForeground":"#286983","extensionIcon.starForeground":"#d7827e","extensionIcon.verifiedForeground":"#907aa9",focusBorder:"#6e6a8614",foreground:"#575279","gitDecoration.addedResourceForeground":"#56949f","gitDecoration.conflictingResourceForeground":"#b4637a","gitDecoration.deletedResourceForeground":"#797593","gitDecoration.ignoredResourceForeground":"#9893a5","gitDecoration.modifiedResourceForeground":"#d7827e","gitDecoration.renamedResourceForeground":"#286983","gitDecoration.stageDeletedResourceForeground":"#b4637a","gitDecoration.stageModifiedResourceForeground":"#907aa9","gitDecoration.submoduleResourceForeground":"#ea9d34","gitDecoration.untrackedResourceForeground":"#ea9d34","icon.foreground":"#797593","input.background":"#f2e9e180","input.border":"#6e6a8614","input.foreground":"#575279","input.placeholderForeground":"#797593","inputOption.activeBackground":"#d7827e26","inputOption.activeForeground":"#d7827e","inputValidation.errorBackground":"#fffaf3","inputValidation.errorBorder":"#6e6a8626","inputValidation.errorForeground":"#b4637a","inputValidation.infoBackground":"#fffaf3","inputValidation.infoBorder":"#6e6a8626","inputValidation.infoForeground":"#56949f","inputValidation.warningBackground":"#fffaf3","inputValidation.warningBorder":"#6e6a8626","inputValidation.warningForeground":"#56949f80","keybindingLabel.background":"#f2e9e1","keybindingLabel.border":"#6e6a8626","keybindingLabel.bottomBorder":"#6e6a8626","keybindingLabel.foreground":"#907aa9","keybindingTable.headerBackground":"#f2e9e1","keybindingTable.rowsBackground":"#fffaf3","list.activeSelectionBackground":"#6e6a8614","list.activeSelectionForeground":"#575279","list.deemphasizedForeground":"#797593","list.dropBackground":"#fffaf3","list.errorForeground":"#b4637a","list.filterMatchBackground":"#fffaf3","list.filterMatchBorder":"#d7827e","list.focusBackground":"#6e6a8626","list.focusForeground":"#575279","list.focusOutline":"#6e6a8614","list.highlightForeground":"#d7827e","list.hoverBackground":"#6e6a860d","list.hoverForeground":"#575279","list.inactiveFocusBackground":"#6e6a860d","list.inactiveSelectionBackground":"#fffaf3","list.inactiveSelectionForeground":"#575279","list.invalidItemForeground":"#b4637a","list.warningForeground":"#ea9d34","listFilterWidget.background":"#fffaf3","listFilterWidget.noMatchesOutline":"#b4637a","listFilterWidget.outline":"#f2e9e1","menu.background":"#fffaf3","menu.border":"#6e6a860d","menu.foreground":"#575279","menu.selectionBackground":"#6e6a8614","menu.selectionBorder":"#f2e9e1","menu.selectionForeground":"#575279","menu.separatorBackground":"#6e6a8626","menubar.selectionBackground":"#6e6a8614","menubar.selectionBorder":"#6e6a860d","menubar.selectionForeground":"#575279","merge.border":"#f2e9e1","merge.commonContentBackground":"#6e6a8614","merge.commonHeaderBackground":"#6e6a8614","merge.currentContentBackground":"#ea9d3480","merge.currentHeaderBackground":"#ea9d3480","merge.incomingContentBackground":"#56949f80","merge.incomingHeaderBackground":"#56949f80","minimap.background":"#fffaf3","minimap.errorHighlight":"#b4637a80","minimap.findMatchHighlight":"#6e6a8614","minimap.selectionHighlight":"#6e6a8614","minimap.warningHighlight":"#ea9d3480","minimapGutter.addedBackground":"#56949f","minimapGutter.deletedBackground":"#b4637a","minimapGutter.modifiedBackground":"#d7827e","minimapSlider.activeBackground":"#6e6a8626","minimapSlider.background":"#6e6a8614","minimapSlider.hoverBackground":"#6e6a8614","notebook.cellBorderColor":"#56949f80","notebook.cellEditorBackground":"#fffaf3","notebook.cellHoverBackground":"#f2e9e180","notebook.focusedCellBackground":"#6e6a860d","notebook.focusedCellBorder":"#56949f","notebook.outputContainerBackgroundColor":"#6e6a860d","notificationCenter.border":"#6e6a8614","notificationCenterHeader.background":"#fffaf3","notificationCenterHeader.foreground":"#797593","notificationLink.foreground":"#907aa9","notificationToast.border":"#6e6a8614","notifications.background":"#fffaf3","notifications.border":"#6e6a8614","notifications.foreground":"#575279","notificationsErrorIcon.foreground":"#b4637a","notificationsInfoIcon.foreground":"#56949f","notificationsWarningIcon.foreground":"#ea9d34","panel.background":"#fffaf3","panel.border":"#0000","panel.dropBorder":"#f2e9e1","panelInput.border":"#fffaf3","panelSection.dropBackground":"#6e6a8614","panelSectionHeader.background":"#fffaf3","panelSectionHeader.foreground":"#575279","panelTitle.activeBorder":"#6e6a8626","panelTitle.activeForeground":"#575279","panelTitle.inactiveForeground":"#797593","peekView.border":"#f2e9e1","peekViewEditor.background":"#fffaf3","peekViewEditor.matchHighlightBackground":"#6e6a8626","peekViewResult.background":"#fffaf3","peekViewResult.fileForeground":"#797593","peekViewResult.lineForeground":"#797593","peekViewResult.matchHighlightBackground":"#6e6a8626","peekViewResult.selectionBackground":"#6e6a8614","peekViewResult.selectionForeground":"#575279","peekViewTitle.background":"#f2e9e1","peekViewTitleDescription.foreground":"#797593","pickerGroup.border":"#6e6a8626","pickerGroup.foreground":"#907aa9","ports.iconRunningProcessForeground":"#d7827e","problemsErrorIcon.foreground":"#b4637a","problemsInfoIcon.foreground":"#56949f","problemsWarningIcon.foreground":"#ea9d34","progressBar.background":"#d7827e","quickInput.background":"#fffaf3","quickInput.foreground":"#797593","quickInputList.focusBackground":"#6e6a8614","quickInputList.focusForeground":"#575279","quickInputList.focusIconForeground":"#575279","scrollbar.shadow":"#fffaf34d","scrollbarSlider.activeBackground":"#28698380","scrollbarSlider.background":"#6e6a8614","scrollbarSlider.hoverBackground":"#6e6a8626","searchEditor.findMatchBackground":"#6e6a8614","selection.background":"#6e6a8626","settings.focusedRowBackground":"#fffaf3","settings.focusedRowBorder":"#6e6a8614","settings.headerForeground":"#575279","settings.modifiedItemIndicator":"#d7827e","settings.rowHoverBackground":"#fffaf3","sideBar.background":"#faf4ed","sideBar.dropBackground":"#fffaf3","sideBar.foreground":"#797593","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#6e6a8614","statusBar.background":"#faf4ed","statusBar.debuggingBackground":"#907aa9","statusBar.debuggingForeground":"#faf4ed","statusBar.foreground":"#797593","statusBar.noFolderBackground":"#faf4ed","statusBar.noFolderForeground":"#797593","statusBarItem.activeBackground":"#6e6a8626","statusBarItem.errorBackground":"#faf4ed","statusBarItem.errorForeground":"#b4637a","statusBarItem.hoverBackground":"#6e6a8614","statusBarItem.prominentBackground":"#f2e9e1","statusBarItem.prominentForeground":"#575279","statusBarItem.prominentHoverBackground":"#6e6a8614","statusBarItem.remoteBackground":"#faf4ed","statusBarItem.remoteForeground":"#ea9d34","symbolIcon.arrayForeground":"#797593","symbolIcon.classForeground":"#797593","symbolIcon.colorForeground":"#797593","symbolIcon.constantForeground":"#797593","symbolIcon.constructorForeground":"#797593","symbolIcon.enumeratorForeground":"#797593","symbolIcon.enumeratorMemberForeground":"#797593","symbolIcon.eventForeground":"#797593","symbolIcon.fieldForeground":"#797593","symbolIcon.fileForeground":"#797593","symbolIcon.folderForeground":"#797593","symbolIcon.functionForeground":"#797593","symbolIcon.interfaceForeground":"#797593","symbolIcon.keyForeground":"#797593","symbolIcon.keywordForeground":"#797593","symbolIcon.methodForeground":"#797593","symbolIcon.moduleForeground":"#797593","symbolIcon.namespaceForeground":"#797593","symbolIcon.nullForeground":"#797593","symbolIcon.numberForeground":"#797593","symbolIcon.objectForeground":"#797593","symbolIcon.operatorForeground":"#797593","symbolIcon.packageForeground":"#797593","symbolIcon.propertyForeground":"#797593","symbolIcon.referenceForeground":"#797593","symbolIcon.snippetForeground":"#797593","symbolIcon.stringForeground":"#797593","symbolIcon.structForeground":"#797593","symbolIcon.textForeground":"#797593","symbolIcon.typeParameterForeground":"#797593","symbolIcon.unitForeground":"#797593","symbolIcon.variableForeground":"#797593","tab.activeBackground":"#6e6a860d","tab.activeForeground":"#575279","tab.activeModifiedBorder":"#56949f","tab.border":"#0000","tab.hoverBackground":"#6e6a8614","tab.inactiveBackground":"#0000","tab.inactiveForeground":"#797593","tab.inactiveModifiedBorder":"#56949f80","tab.lastPinnedBorder":"#9893a5","tab.unfocusedActiveBackground":"#0000","tab.unfocusedHoverBackground":"#0000","tab.unfocusedInactiveBackground":"#0000","tab.unfocusedInactiveModifiedBorder":"#56949f80","terminal.ansiBlack":"#f2e9e1","terminal.ansiBlue":"#56949f","terminal.ansiBrightBlack":"#797593","terminal.ansiBrightBlue":"#56949f","terminal.ansiBrightCyan":"#d7827e","terminal.ansiBrightGreen":"#286983","terminal.ansiBrightMagenta":"#907aa9","terminal.ansiBrightRed":"#b4637a","terminal.ansiBrightWhite":"#575279","terminal.ansiBrightYellow":"#ea9d34","terminal.ansiCyan":"#d7827e","terminal.ansiGreen":"#286983","terminal.ansiMagenta":"#907aa9","terminal.ansiRed":"#b4637a","terminal.ansiWhite":"#575279","terminal.ansiYellow":"#ea9d34","terminal.dropBackground":"#6e6a8614","terminal.foreground":"#575279","terminal.selectionBackground":"#6e6a8614","terminal.tab.activeBorder":"#575279","terminalCursor.background":"#575279","terminalCursor.foreground":"#9893a5","textBlockQuote.background":"#fffaf3","textBlockQuote.border":"#6e6a8614","textCodeBlock.background":"#fffaf3","textLink.activeForeground":"#907aa9e6","textLink.foreground":"#907aa9","textPreformat.foreground":"#ea9d34","textSeparator.foreground":"#797593","titleBar.activeBackground":"#faf4ed","titleBar.activeForeground":"#797593","titleBar.inactiveBackground":"#fffaf3","titleBar.inactiveForeground":"#797593","toolbar.activeBackground":"#6e6a8626","toolbar.hoverBackground":"#6e6a8614","tree.indentGuidesStroke":"#797593","walkThrough.embeddedEditorBackground":"#faf4ed","welcomePage.background":"#faf4ed","welcomePage.buttonBackground":"#fffaf3","welcomePage.buttonHoverBackground":"#f2e9e1","widget.shadow":"#fffaf34d","window.activeBorder":"#fffaf3","window.inactiveBorder":"#fffaf3"},displayName:"Rosé Pine Dawn",name:"rose-pine-dawn",tokenColors:[{scope:["comment"],settings:{fontStyle:"italic",foreground:"#9893a5"}},{scope:["constant"],settings:{foreground:"#286983"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"#d7827e"}},{scope:["entity.name"],settings:{foreground:"#d7827e"}},{scope:["entity.name.section","entity.name.tag","entity.name.namespace","entity.name.type"],settings:{foreground:"#56949f"}},{scope:["entity.other.attribute-name","entity.other.inherited-class"],settings:{fontStyle:"italic",foreground:"#907aa9"}},{scope:["invalid"],settings:{foreground:"#b4637a"}},{scope:["invalid.deprecated"],settings:{foreground:"#797593"}},{scope:["keyword"],settings:{foreground:"#286983"}},{scope:["markup.inserted.diff"],settings:{foreground:"#56949f"}},{scope:["markup.deleted.diff"],settings:{foreground:"#b4637a"}},{scope:"markup.heading",settings:{fontStyle:"bold"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}},{scope:["meta.diff.range"],settings:{foreground:"#907aa9"}},{scope:["meta.tag","meta.brace"],settings:{foreground:"#575279"}},{scope:["meta.import","meta.export"],settings:{foreground:"#286983"}},{scope:"meta.directive.vue",settings:{fontStyle:"italic",foreground:"#907aa9"}},{scope:"meta.property-name.css",settings:{foreground:"#56949f"}},{scope:"meta.property-value.css",settings:{foreground:"#ea9d34"}},{scope:"meta.tag.other.html",settings:{foreground:"#797593"}},{scope:["punctuation"],settings:{foreground:"#797593"}},{scope:["punctuation.accessor"],settings:{foreground:"#286983"}},{scope:["punctuation.definition.string"],settings:{foreground:"#ea9d34"}},{scope:["punctuation.definition.tag"],settings:{foreground:"#9893a5"}},{scope:["storage.type","storage.modifier"],settings:{foreground:"#286983"}},{scope:["string"],settings:{foreground:"#ea9d34"}},{scope:["support"],settings:{foreground:"#56949f"}},{scope:["support.constant"],settings:{foreground:"#ea9d34"}},{scope:["support.function"],settings:{fontStyle:"italic",foreground:"#b4637a"}},{scope:["variable"],settings:{fontStyle:"italic",foreground:"#d7827e"}},{scope:["variable.other","variable.language","variable.function","variable.argument"],settings:{foreground:"#575279"}},{scope:["variable.parameter"],settings:{foreground:"#907aa9"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/rose-pine-moon.CdedUr_-.js b/assets/chunks/rose-pine-moon.CdedUr_-.js new file mode 100644 index 000000000..5beba826a --- /dev/null +++ b/assets/chunks/rose-pine-moon.CdedUr_-.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#e0def4","activityBar.background":"#232136","activityBar.dropBorder":"#393552","activityBar.foreground":"#e0def4","activityBar.inactiveForeground":"#908caa","activityBarBadge.background":"#ea9a97","activityBarBadge.foreground":"#232136","badge.background":"#ea9a97","badge.foreground":"#232136","banner.background":"#2a273f","banner.foreground":"#e0def4","banner.iconForeground":"#908caa","breadcrumb.activeSelectionForeground":"#ea9a97","breadcrumb.background":"#232136","breadcrumb.focusForeground":"#908caa","breadcrumb.foreground":"#6e6a86","breadcrumbPicker.background":"#2a273f","button.background":"#ea9a97","button.foreground":"#232136","button.hoverBackground":"#ea9a97e6","button.secondaryBackground":"#2a273f","button.secondaryForeground":"#e0def4","button.secondaryHoverBackground":"#393552","charts.blue":"#9ccfd8","charts.foreground":"#e0def4","charts.green":"#3e8fb0","charts.lines":"#908caa","charts.orange":"#ea9a97","charts.purple":"#c4a7e7","charts.red":"#eb6f92","charts.yellow":"#f6c177","checkbox.background":"#2a273f","checkbox.border":"#817c9c26","checkbox.foreground":"#e0def4","debugExceptionWidget.background":"#2a273f","debugExceptionWidget.border":"#817c9c26","debugIcon.breakpointCurrentStackframeForeground":"#908caa","debugIcon.breakpointDisabledForeground":"#908caa","debugIcon.breakpointForeground":"#908caa","debugIcon.breakpointStackframeForeground":"#908caa","debugIcon.breakpointUnverifiedForeground":"#908caa","debugIcon.continueForeground":"#908caa","debugIcon.disconnectForeground":"#908caa","debugIcon.pauseForeground":"#908caa","debugIcon.restartForeground":"#908caa","debugIcon.startForeground":"#908caa","debugIcon.stepBackForeground":"#908caa","debugIcon.stepIntoForeground":"#908caa","debugIcon.stepOutForeground":"#908caa","debugIcon.stepOverForeground":"#908caa","debugIcon.stopForeground":"#eb6f92","debugToolBar.background":"#2a273f","debugToolBar.border":"#393552",descriptionForeground:"#908caa","diffEditor.border":"#393552","diffEditor.diagonalFill":"#817c9c4d","diffEditor.insertedLineBackground":"#9ccfd826","diffEditor.insertedTextBackground":"#9ccfd826","diffEditor.removedLineBackground":"#eb6f9226","diffEditor.removedTextBackground":"#eb6f9226","diffEditorOverview.insertedForeground":"#9ccfd880","diffEditorOverview.removedForeground":"#eb6f9280","dropdown.background":"#2a273f","dropdown.border":"#817c9c26","dropdown.foreground":"#e0def4","dropdown.listBackground":"#2a273f","editor.background":"#232136","editor.findMatchBackground":"#817c9c4d","editor.findMatchHighlightBackground":"#817c9c4d","editor.findRangeHighlightBackground":"#817c9c4d","editor.findRangeHighlightBorder":"#0000","editor.focusedStackFrameHighlightBackground":"#817c9c26","editor.foldBackground":"#2a273f","editor.foreground":"#e0def4","editor.hoverHighlightBackground":"#0000","editor.inactiveSelectionBackground":"#817c9c14","editor.inlineValuesBackground":"#0000","editor.inlineValuesForeground":"#908caa","editor.lineHighlightBackground":"#817c9c14","editor.lineHighlightBorder":"#0000","editor.linkedEditingBackground":"#2a273f","editor.rangeHighlightBackground":"#817c9c14","editor.selectionBackground":"#817c9c26","editor.selectionForeground":"#e0def4","editor.selectionHighlightBackground":"#817c9c26","editor.selectionHighlightBorder":"#232136","editor.snippetFinalTabstopHighlightBackground":"#817c9c26","editor.snippetFinalTabstopHighlightBorder":"#2a273f","editor.snippetTabstopHighlightBackground":"#817c9c26","editor.snippetTabstopHighlightBorder":"#2a273f","editor.stackFrameHighlightBackground":"#817c9c26","editor.symbolHighlightBackground":"#817c9c26","editor.symbolHighlightBorder":"#0000","editor.wordHighlightBackground":"#817c9c26","editor.wordHighlightBorder":"#0000","editor.wordHighlightStrongBackground":"#817c9c26","editor.wordHighlightStrongBorder":"#817c9c26","editorBracketHighlight.foreground1":"#eb6f9280","editorBracketHighlight.foreground2":"#3e8fb080","editorBracketHighlight.foreground3":"#f6c17780","editorBracketHighlight.foreground4":"#9ccfd880","editorBracketHighlight.foreground5":"#ea9a9780","editorBracketHighlight.foreground6":"#c4a7e780","editorBracketMatch.background":"#0000","editorBracketMatch.border":"#908caa","editorBracketPairGuide.activeBackground1":"#3e8fb0","editorBracketPairGuide.activeBackground2":"#ea9a97","editorBracketPairGuide.activeBackground3":"#c4a7e7","editorBracketPairGuide.activeBackground4":"#9ccfd8","editorBracketPairGuide.activeBackground5":"#f6c177","editorBracketPairGuide.activeBackground6":"#eb6f92","editorBracketPairGuide.background1":"#3e8fb080","editorBracketPairGuide.background2":"#ea9a9780","editorBracketPairGuide.background3":"#c4a7e780","editorBracketPairGuide.background4":"#9ccfd880","editorBracketPairGuide.background5":"#f6c17780","editorBracketPairGuide.background6":"#eb6f9280","editorCodeLens.foreground":"#ea9a97","editorCursor.background":"#e0def4","editorCursor.foreground":"#6e6a86","editorError.border":"#0000","editorError.foreground":"#eb6f92","editorGhostText.foreground":"#908caa","editorGroup.border":"#0000","editorGroup.dropBackground":"#2a273f","editorGroup.emptyBackground":"#0000","editorGroup.focusedEmptyBorder":"#0000","editorGroupHeader.noTabsBackground":"#0000","editorGroupHeader.tabsBackground":"#0000","editorGroupHeader.tabsBorder":"#0000","editorGutter.addedBackground":"#9ccfd8","editorGutter.background":"#232136","editorGutter.commentRangeForeground":"#908caa","editorGutter.deletedBackground":"#eb6f92","editorGutter.foldingControlForeground":"#c4a7e7","editorGutter.modifiedBackground":"#ea9a97","editorHint.border":"#0000","editorHint.foreground":"#908caa","editorHoverWidget.background":"#2a273f","editorHoverWidget.border":"#6e6a8680","editorHoverWidget.foreground":"#908caa","editorHoverWidget.highlightForeground":"#e0def4","editorHoverWidget.statusBarBackground":"#0000","editorIndentGuide.activeBackground":"#6e6a86","editorIndentGuide.background":"#817c9c4d","editorInfo.border":"#393552","editorInfo.foreground":"#9ccfd8","editorInlayHint.background":"#393552","editorInlayHint.foreground":"#908caa","editorInlayHint.parameterBackground":"#393552","editorInlayHint.parameterForeground":"#c4a7e7","editorInlayHint.typeBackground":"#393552","editorInlayHint.typeForeground":"#9ccfd8","editorLightBulb.foreground":"#3e8fb0","editorLightBulbAutoFix.foreground":"#ea9a97","editorLineNumber.activeForeground":"#e0def4","editorLineNumber.foreground":"#908caa","editorLink.activeForeground":"#ea9a97","editorMarkerNavigation.background":"#2a273f","editorMarkerNavigationError.background":"#2a273f","editorMarkerNavigationInfo.background":"#2a273f","editorMarkerNavigationWarning.background":"#2a273f","editorOverviewRuler.addedForeground":"#9ccfd880","editorOverviewRuler.background":"#232136","editorOverviewRuler.border":"#817c9c4d","editorOverviewRuler.bracketMatchForeground":"#908caa","editorOverviewRuler.commonContentForeground":"#817c9c14","editorOverviewRuler.currentContentForeground":"#817c9c26","editorOverviewRuler.deletedForeground":"#eb6f9280","editorOverviewRuler.errorForeground":"#eb6f9280","editorOverviewRuler.findMatchForeground":"#817c9c4d","editorOverviewRuler.incomingContentForeground":"#c4a7e780","editorOverviewRuler.infoForeground":"#9ccfd880","editorOverviewRuler.modifiedForeground":"#ea9a9780","editorOverviewRuler.rangeHighlightForeground":"#817c9c4d","editorOverviewRuler.selectionHighlightForeground":"#817c9c4d","editorOverviewRuler.warningForeground":"#f6c17780","editorOverviewRuler.wordHighlightForeground":"#817c9c26","editorOverviewRuler.wordHighlightStrongForeground":"#817c9c4d","editorPane.background":"#0000","editorRuler.foreground":"#817c9c4d","editorSuggestWidget.background":"#2a273f","editorSuggestWidget.border":"#0000","editorSuggestWidget.focusHighlightForeground":"#ea9a97","editorSuggestWidget.foreground":"#908caa","editorSuggestWidget.highlightForeground":"#ea9a97","editorSuggestWidget.selectedBackground":"#817c9c26","editorSuggestWidget.selectedForeground":"#e0def4","editorSuggestWidget.selectedIconForeground":"#e0def4","editorUnnecessaryCode.border":"#0000","editorUnnecessaryCode.opacity":"#e0def480","editorWarning.border":"#0000","editorWarning.foreground":"#f6c177","editorWhitespace.foreground":"#6e6a86","editorWidget.background":"#2a273f","editorWidget.border":"#393552","editorWidget.foreground":"#908caa","editorWidget.resizeBorder":"#6e6a86",errorForeground:"#eb6f92","extensionBadge.remoteBackground":"#c4a7e7","extensionBadge.remoteForeground":"#232136","extensionButton.prominentBackground":"#ea9a97","extensionButton.prominentForeground":"#232136","extensionButton.prominentHoverBackground":"#ea9a97e6","extensionIcon.preReleaseForeground":"#3e8fb0","extensionIcon.starForeground":"#ea9a97","extensionIcon.verifiedForeground":"#c4a7e7",focusBorder:"#817c9c26",foreground:"#e0def4","gitDecoration.addedResourceForeground":"#9ccfd8","gitDecoration.conflictingResourceForeground":"#eb6f92","gitDecoration.deletedResourceForeground":"#908caa","gitDecoration.ignoredResourceForeground":"#6e6a86","gitDecoration.modifiedResourceForeground":"#ea9a97","gitDecoration.renamedResourceForeground":"#3e8fb0","gitDecoration.stageDeletedResourceForeground":"#eb6f92","gitDecoration.stageModifiedResourceForeground":"#c4a7e7","gitDecoration.submoduleResourceForeground":"#f6c177","gitDecoration.untrackedResourceForeground":"#f6c177","icon.foreground":"#908caa","input.background":"#39355280","input.border":"#817c9c26","input.foreground":"#e0def4","input.placeholderForeground":"#908caa","inputOption.activeBackground":"#ea9a9726","inputOption.activeForeground":"#ea9a97","inputValidation.errorBackground":"#2a273f","inputValidation.errorBorder":"#817c9c4d","inputValidation.errorForeground":"#eb6f92","inputValidation.infoBackground":"#2a273f","inputValidation.infoBorder":"#817c9c4d","inputValidation.infoForeground":"#9ccfd8","inputValidation.warningBackground":"#2a273f","inputValidation.warningBorder":"#817c9c4d","inputValidation.warningForeground":"#9ccfd880","keybindingLabel.background":"#393552","keybindingLabel.border":"#817c9c4d","keybindingLabel.bottomBorder":"#817c9c4d","keybindingLabel.foreground":"#c4a7e7","keybindingTable.headerBackground":"#393552","keybindingTable.rowsBackground":"#2a273f","list.activeSelectionBackground":"#817c9c26","list.activeSelectionForeground":"#e0def4","list.deemphasizedForeground":"#908caa","list.dropBackground":"#2a273f","list.errorForeground":"#eb6f92","list.filterMatchBackground":"#2a273f","list.filterMatchBorder":"#ea9a97","list.focusBackground":"#817c9c4d","list.focusForeground":"#e0def4","list.focusOutline":"#817c9c26","list.highlightForeground":"#ea9a97","list.hoverBackground":"#817c9c14","list.hoverForeground":"#e0def4","list.inactiveFocusBackground":"#817c9c14","list.inactiveSelectionBackground":"#2a273f","list.inactiveSelectionForeground":"#e0def4","list.invalidItemForeground":"#eb6f92","list.warningForeground":"#f6c177","listFilterWidget.background":"#2a273f","listFilterWidget.noMatchesOutline":"#eb6f92","listFilterWidget.outline":"#393552","menu.background":"#2a273f","menu.border":"#817c9c14","menu.foreground":"#e0def4","menu.selectionBackground":"#817c9c26","menu.selectionBorder":"#393552","menu.selectionForeground":"#e0def4","menu.separatorBackground":"#817c9c4d","menubar.selectionBackground":"#817c9c26","menubar.selectionBorder":"#817c9c14","menubar.selectionForeground":"#e0def4","merge.border":"#393552","merge.commonContentBackground":"#817c9c26","merge.commonHeaderBackground":"#817c9c26","merge.currentContentBackground":"#f6c17780","merge.currentHeaderBackground":"#f6c17780","merge.incomingContentBackground":"#9ccfd880","merge.incomingHeaderBackground":"#9ccfd880","minimap.background":"#2a273f","minimap.errorHighlight":"#eb6f9280","minimap.findMatchHighlight":"#817c9c26","minimap.selectionHighlight":"#817c9c26","minimap.warningHighlight":"#f6c17780","minimapGutter.addedBackground":"#9ccfd8","minimapGutter.deletedBackground":"#eb6f92","minimapGutter.modifiedBackground":"#ea9a97","minimapSlider.activeBackground":"#817c9c4d","minimapSlider.background":"#817c9c26","minimapSlider.hoverBackground":"#817c9c26","notebook.cellBorderColor":"#9ccfd880","notebook.cellEditorBackground":"#2a273f","notebook.cellHoverBackground":"#39355280","notebook.focusedCellBackground":"#817c9c14","notebook.focusedCellBorder":"#9ccfd8","notebook.outputContainerBackgroundColor":"#817c9c14","notificationCenter.border":"#817c9c26","notificationCenterHeader.background":"#2a273f","notificationCenterHeader.foreground":"#908caa","notificationLink.foreground":"#c4a7e7","notificationToast.border":"#817c9c26","notifications.background":"#2a273f","notifications.border":"#817c9c26","notifications.foreground":"#e0def4","notificationsErrorIcon.foreground":"#eb6f92","notificationsInfoIcon.foreground":"#9ccfd8","notificationsWarningIcon.foreground":"#f6c177","panel.background":"#2a273f","panel.border":"#0000","panel.dropBorder":"#393552","panelInput.border":"#2a273f","panelSection.dropBackground":"#817c9c26","panelSectionHeader.background":"#2a273f","panelSectionHeader.foreground":"#e0def4","panelTitle.activeBorder":"#817c9c4d","panelTitle.activeForeground":"#e0def4","panelTitle.inactiveForeground":"#908caa","peekView.border":"#393552","peekViewEditor.background":"#2a273f","peekViewEditor.matchHighlightBackground":"#817c9c4d","peekViewResult.background":"#2a273f","peekViewResult.fileForeground":"#908caa","peekViewResult.lineForeground":"#908caa","peekViewResult.matchHighlightBackground":"#817c9c4d","peekViewResult.selectionBackground":"#817c9c26","peekViewResult.selectionForeground":"#e0def4","peekViewTitle.background":"#393552","peekViewTitleDescription.foreground":"#908caa","pickerGroup.border":"#817c9c4d","pickerGroup.foreground":"#c4a7e7","ports.iconRunningProcessForeground":"#ea9a97","problemsErrorIcon.foreground":"#eb6f92","problemsInfoIcon.foreground":"#9ccfd8","problemsWarningIcon.foreground":"#f6c177","progressBar.background":"#ea9a97","quickInput.background":"#2a273f","quickInput.foreground":"#908caa","quickInputList.focusBackground":"#817c9c26","quickInputList.focusForeground":"#e0def4","quickInputList.focusIconForeground":"#e0def4","scrollbar.shadow":"#2a273f4d","scrollbarSlider.activeBackground":"#3e8fb080","scrollbarSlider.background":"#817c9c26","scrollbarSlider.hoverBackground":"#817c9c4d","searchEditor.findMatchBackground":"#817c9c26","selection.background":"#817c9c4d","settings.focusedRowBackground":"#2a273f","settings.focusedRowBorder":"#817c9c26","settings.headerForeground":"#e0def4","settings.modifiedItemIndicator":"#ea9a97","settings.rowHoverBackground":"#2a273f","sideBar.background":"#232136","sideBar.dropBackground":"#2a273f","sideBar.foreground":"#908caa","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#817c9c26","statusBar.background":"#232136","statusBar.debuggingBackground":"#c4a7e7","statusBar.debuggingForeground":"#232136","statusBar.foreground":"#908caa","statusBar.noFolderBackground":"#232136","statusBar.noFolderForeground":"#908caa","statusBarItem.activeBackground":"#817c9c4d","statusBarItem.errorBackground":"#232136","statusBarItem.errorForeground":"#eb6f92","statusBarItem.hoverBackground":"#817c9c26","statusBarItem.prominentBackground":"#393552","statusBarItem.prominentForeground":"#e0def4","statusBarItem.prominentHoverBackground":"#817c9c26","statusBarItem.remoteBackground":"#232136","statusBarItem.remoteForeground":"#f6c177","symbolIcon.arrayForeground":"#908caa","symbolIcon.classForeground":"#908caa","symbolIcon.colorForeground":"#908caa","symbolIcon.constantForeground":"#908caa","symbolIcon.constructorForeground":"#908caa","symbolIcon.enumeratorForeground":"#908caa","symbolIcon.enumeratorMemberForeground":"#908caa","symbolIcon.eventForeground":"#908caa","symbolIcon.fieldForeground":"#908caa","symbolIcon.fileForeground":"#908caa","symbolIcon.folderForeground":"#908caa","symbolIcon.functionForeground":"#908caa","symbolIcon.interfaceForeground":"#908caa","symbolIcon.keyForeground":"#908caa","symbolIcon.keywordForeground":"#908caa","symbolIcon.methodForeground":"#908caa","symbolIcon.moduleForeground":"#908caa","symbolIcon.namespaceForeground":"#908caa","symbolIcon.nullForeground":"#908caa","symbolIcon.numberForeground":"#908caa","symbolIcon.objectForeground":"#908caa","symbolIcon.operatorForeground":"#908caa","symbolIcon.packageForeground":"#908caa","symbolIcon.propertyForeground":"#908caa","symbolIcon.referenceForeground":"#908caa","symbolIcon.snippetForeground":"#908caa","symbolIcon.stringForeground":"#908caa","symbolIcon.structForeground":"#908caa","symbolIcon.textForeground":"#908caa","symbolIcon.typeParameterForeground":"#908caa","symbolIcon.unitForeground":"#908caa","symbolIcon.variableForeground":"#908caa","tab.activeBackground":"#817c9c14","tab.activeForeground":"#e0def4","tab.activeModifiedBorder":"#9ccfd8","tab.border":"#0000","tab.hoverBackground":"#817c9c26","tab.inactiveBackground":"#0000","tab.inactiveForeground":"#908caa","tab.inactiveModifiedBorder":"#9ccfd880","tab.lastPinnedBorder":"#6e6a86","tab.unfocusedActiveBackground":"#0000","tab.unfocusedHoverBackground":"#0000","tab.unfocusedInactiveBackground":"#0000","tab.unfocusedInactiveModifiedBorder":"#9ccfd880","terminal.ansiBlack":"#393552","terminal.ansiBlue":"#9ccfd8","terminal.ansiBrightBlack":"#908caa","terminal.ansiBrightBlue":"#9ccfd8","terminal.ansiBrightCyan":"#ea9a97","terminal.ansiBrightGreen":"#3e8fb0","terminal.ansiBrightMagenta":"#c4a7e7","terminal.ansiBrightRed":"#eb6f92","terminal.ansiBrightWhite":"#e0def4","terminal.ansiBrightYellow":"#f6c177","terminal.ansiCyan":"#ea9a97","terminal.ansiGreen":"#3e8fb0","terminal.ansiMagenta":"#c4a7e7","terminal.ansiRed":"#eb6f92","terminal.ansiWhite":"#e0def4","terminal.ansiYellow":"#f6c177","terminal.dropBackground":"#817c9c26","terminal.foreground":"#e0def4","terminal.selectionBackground":"#817c9c26","terminal.tab.activeBorder":"#e0def4","terminalCursor.background":"#e0def4","terminalCursor.foreground":"#6e6a86","textBlockQuote.background":"#2a273f","textBlockQuote.border":"#817c9c26","textCodeBlock.background":"#2a273f","textLink.activeForeground":"#c4a7e7e6","textLink.foreground":"#c4a7e7","textPreformat.foreground":"#f6c177","textSeparator.foreground":"#908caa","titleBar.activeBackground":"#232136","titleBar.activeForeground":"#908caa","titleBar.inactiveBackground":"#2a273f","titleBar.inactiveForeground":"#908caa","toolbar.activeBackground":"#817c9c4d","toolbar.hoverBackground":"#817c9c26","tree.indentGuidesStroke":"#908caa","walkThrough.embeddedEditorBackground":"#232136","welcomePage.background":"#232136","welcomePage.buttonBackground":"#2a273f","welcomePage.buttonHoverBackground":"#393552","widget.shadow":"#2a273f4d","window.activeBorder":"#2a273f","window.inactiveBorder":"#2a273f"},displayName:"Rosé Pine Moon",name:"rose-pine-moon",tokenColors:[{scope:["comment"],settings:{fontStyle:"italic",foreground:"#6e6a86"}},{scope:["constant"],settings:{foreground:"#3e8fb0"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"#ea9a97"}},{scope:["entity.name"],settings:{foreground:"#ea9a97"}},{scope:["entity.name.section","entity.name.tag","entity.name.namespace","entity.name.type"],settings:{foreground:"#9ccfd8"}},{scope:["entity.other.attribute-name","entity.other.inherited-class"],settings:{fontStyle:"italic",foreground:"#c4a7e7"}},{scope:["invalid"],settings:{foreground:"#eb6f92"}},{scope:["invalid.deprecated"],settings:{foreground:"#908caa"}},{scope:["keyword"],settings:{foreground:"#3e8fb0"}},{scope:["markup.inserted.diff"],settings:{foreground:"#9ccfd8"}},{scope:["markup.deleted.diff"],settings:{foreground:"#eb6f92"}},{scope:"markup.heading",settings:{fontStyle:"bold"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}},{scope:["meta.diff.range"],settings:{foreground:"#c4a7e7"}},{scope:["meta.tag","meta.brace"],settings:{foreground:"#e0def4"}},{scope:["meta.import","meta.export"],settings:{foreground:"#3e8fb0"}},{scope:"meta.directive.vue",settings:{fontStyle:"italic",foreground:"#c4a7e7"}},{scope:"meta.property-name.css",settings:{foreground:"#9ccfd8"}},{scope:"meta.property-value.css",settings:{foreground:"#f6c177"}},{scope:"meta.tag.other.html",settings:{foreground:"#908caa"}},{scope:["punctuation"],settings:{foreground:"#908caa"}},{scope:["punctuation.accessor"],settings:{foreground:"#3e8fb0"}},{scope:["punctuation.definition.string"],settings:{foreground:"#f6c177"}},{scope:["punctuation.definition.tag"],settings:{foreground:"#6e6a86"}},{scope:["storage.type","storage.modifier"],settings:{foreground:"#3e8fb0"}},{scope:["string"],settings:{foreground:"#f6c177"}},{scope:["support"],settings:{foreground:"#9ccfd8"}},{scope:["support.constant"],settings:{foreground:"#f6c177"}},{scope:["support.function"],settings:{fontStyle:"italic",foreground:"#eb6f92"}},{scope:["variable"],settings:{fontStyle:"italic",foreground:"#ea9a97"}},{scope:["variable.other","variable.language","variable.function","variable.argument"],settings:{foreground:"#e0def4"}},{scope:["variable.parameter"],settings:{foreground:"#c4a7e7"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/rose-pine.CX_FIdg1.js b/assets/chunks/rose-pine.CX_FIdg1.js new file mode 100644 index 000000000..38c0ab32b --- /dev/null +++ b/assets/chunks/rose-pine.CX_FIdg1.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#e0def4","activityBar.background":"#191724","activityBar.dropBorder":"#26233a","activityBar.foreground":"#e0def4","activityBar.inactiveForeground":"#908caa","activityBarBadge.background":"#ebbcba","activityBarBadge.foreground":"#191724","badge.background":"#ebbcba","badge.foreground":"#191724","banner.background":"#1f1d2e","banner.foreground":"#e0def4","banner.iconForeground":"#908caa","breadcrumb.activeSelectionForeground":"#ebbcba","breadcrumb.background":"#191724","breadcrumb.focusForeground":"#908caa","breadcrumb.foreground":"#6e6a86","breadcrumbPicker.background":"#1f1d2e","button.background":"#ebbcba","button.foreground":"#191724","button.hoverBackground":"#ebbcbae6","button.secondaryBackground":"#1f1d2e","button.secondaryForeground":"#e0def4","button.secondaryHoverBackground":"#26233a","charts.blue":"#9ccfd8","charts.foreground":"#e0def4","charts.green":"#31748f","charts.lines":"#908caa","charts.orange":"#ebbcba","charts.purple":"#c4a7e7","charts.red":"#eb6f92","charts.yellow":"#f6c177","checkbox.background":"#1f1d2e","checkbox.border":"#6e6a8633","checkbox.foreground":"#e0def4","debugExceptionWidget.background":"#1f1d2e","debugExceptionWidget.border":"#6e6a8633","debugIcon.breakpointCurrentStackframeForeground":"#908caa","debugIcon.breakpointDisabledForeground":"#908caa","debugIcon.breakpointForeground":"#908caa","debugIcon.breakpointStackframeForeground":"#908caa","debugIcon.breakpointUnverifiedForeground":"#908caa","debugIcon.continueForeground":"#908caa","debugIcon.disconnectForeground":"#908caa","debugIcon.pauseForeground":"#908caa","debugIcon.restartForeground":"#908caa","debugIcon.startForeground":"#908caa","debugIcon.stepBackForeground":"#908caa","debugIcon.stepIntoForeground":"#908caa","debugIcon.stepOutForeground":"#908caa","debugIcon.stepOverForeground":"#908caa","debugIcon.stopForeground":"#eb6f92","debugToolBar.background":"#1f1d2e","debugToolBar.border":"#26233a",descriptionForeground:"#908caa","diffEditor.border":"#26233a","diffEditor.diagonalFill":"#6e6a8666","diffEditor.insertedLineBackground":"#9ccfd826","diffEditor.insertedTextBackground":"#9ccfd826","diffEditor.removedLineBackground":"#eb6f9226","diffEditor.removedTextBackground":"#eb6f9226","diffEditorOverview.insertedForeground":"#9ccfd880","diffEditorOverview.removedForeground":"#eb6f9280","dropdown.background":"#1f1d2e","dropdown.border":"#6e6a8633","dropdown.foreground":"#e0def4","dropdown.listBackground":"#1f1d2e","editor.background":"#191724","editor.findMatchBackground":"#6e6a8666","editor.findMatchHighlightBackground":"#6e6a8666","editor.findRangeHighlightBackground":"#6e6a8666","editor.findRangeHighlightBorder":"#0000","editor.focusedStackFrameHighlightBackground":"#6e6a8633","editor.foldBackground":"#1f1d2e","editor.foreground":"#e0def4","editor.hoverHighlightBackground":"#0000","editor.inactiveSelectionBackground":"#6e6a861a","editor.inlineValuesBackground":"#0000","editor.inlineValuesForeground":"#908caa","editor.lineHighlightBackground":"#6e6a861a","editor.lineHighlightBorder":"#0000","editor.linkedEditingBackground":"#1f1d2e","editor.rangeHighlightBackground":"#6e6a861a","editor.selectionBackground":"#6e6a8633","editor.selectionForeground":"#e0def4","editor.selectionHighlightBackground":"#6e6a8633","editor.selectionHighlightBorder":"#191724","editor.snippetFinalTabstopHighlightBackground":"#6e6a8633","editor.snippetFinalTabstopHighlightBorder":"#1f1d2e","editor.snippetTabstopHighlightBackground":"#6e6a8633","editor.snippetTabstopHighlightBorder":"#1f1d2e","editor.stackFrameHighlightBackground":"#6e6a8633","editor.symbolHighlightBackground":"#6e6a8633","editor.symbolHighlightBorder":"#0000","editor.wordHighlightBackground":"#6e6a8633","editor.wordHighlightBorder":"#0000","editor.wordHighlightStrongBackground":"#6e6a8633","editor.wordHighlightStrongBorder":"#6e6a8633","editorBracketHighlight.foreground1":"#eb6f9280","editorBracketHighlight.foreground2":"#31748f80","editorBracketHighlight.foreground3":"#f6c17780","editorBracketHighlight.foreground4":"#9ccfd880","editorBracketHighlight.foreground5":"#ebbcba80","editorBracketHighlight.foreground6":"#c4a7e780","editorBracketMatch.background":"#0000","editorBracketMatch.border":"#908caa","editorBracketPairGuide.activeBackground1":"#31748f","editorBracketPairGuide.activeBackground2":"#ebbcba","editorBracketPairGuide.activeBackground3":"#c4a7e7","editorBracketPairGuide.activeBackground4":"#9ccfd8","editorBracketPairGuide.activeBackground5":"#f6c177","editorBracketPairGuide.activeBackground6":"#eb6f92","editorBracketPairGuide.background1":"#31748f80","editorBracketPairGuide.background2":"#ebbcba80","editorBracketPairGuide.background3":"#c4a7e780","editorBracketPairGuide.background4":"#9ccfd880","editorBracketPairGuide.background5":"#f6c17780","editorBracketPairGuide.background6":"#eb6f9280","editorCodeLens.foreground":"#ebbcba","editorCursor.background":"#e0def4","editorCursor.foreground":"#6e6a86","editorError.border":"#0000","editorError.foreground":"#eb6f92","editorGhostText.foreground":"#908caa","editorGroup.border":"#0000","editorGroup.dropBackground":"#1f1d2e","editorGroup.emptyBackground":"#0000","editorGroup.focusedEmptyBorder":"#0000","editorGroupHeader.noTabsBackground":"#0000","editorGroupHeader.tabsBackground":"#0000","editorGroupHeader.tabsBorder":"#0000","editorGutter.addedBackground":"#9ccfd8","editorGutter.background":"#191724","editorGutter.commentRangeForeground":"#908caa","editorGutter.deletedBackground":"#eb6f92","editorGutter.foldingControlForeground":"#c4a7e7","editorGutter.modifiedBackground":"#ebbcba","editorHint.border":"#0000","editorHint.foreground":"#908caa","editorHoverWidget.background":"#1f1d2e","editorHoverWidget.border":"#6e6a8680","editorHoverWidget.foreground":"#908caa","editorHoverWidget.highlightForeground":"#e0def4","editorHoverWidget.statusBarBackground":"#0000","editorIndentGuide.activeBackground":"#6e6a86","editorIndentGuide.background":"#6e6a8666","editorInfo.border":"#26233a","editorInfo.foreground":"#9ccfd8","editorInlayHint.background":"#26233a","editorInlayHint.foreground":"#908caa","editorInlayHint.parameterBackground":"#26233a","editorInlayHint.parameterForeground":"#c4a7e7","editorInlayHint.typeBackground":"#26233a","editorInlayHint.typeForeground":"#9ccfd8","editorLightBulb.foreground":"#31748f","editorLightBulbAutoFix.foreground":"#ebbcba","editorLineNumber.activeForeground":"#e0def4","editorLineNumber.foreground":"#908caa","editorLink.activeForeground":"#ebbcba","editorMarkerNavigation.background":"#1f1d2e","editorMarkerNavigationError.background":"#1f1d2e","editorMarkerNavigationInfo.background":"#1f1d2e","editorMarkerNavigationWarning.background":"#1f1d2e","editorOverviewRuler.addedForeground":"#9ccfd880","editorOverviewRuler.background":"#191724","editorOverviewRuler.border":"#6e6a8666","editorOverviewRuler.bracketMatchForeground":"#908caa","editorOverviewRuler.commonContentForeground":"#6e6a861a","editorOverviewRuler.currentContentForeground":"#6e6a8633","editorOverviewRuler.deletedForeground":"#eb6f9280","editorOverviewRuler.errorForeground":"#eb6f9280","editorOverviewRuler.findMatchForeground":"#6e6a8666","editorOverviewRuler.incomingContentForeground":"#c4a7e780","editorOverviewRuler.infoForeground":"#9ccfd880","editorOverviewRuler.modifiedForeground":"#ebbcba80","editorOverviewRuler.rangeHighlightForeground":"#6e6a8666","editorOverviewRuler.selectionHighlightForeground":"#6e6a8666","editorOverviewRuler.warningForeground":"#f6c17780","editorOverviewRuler.wordHighlightForeground":"#6e6a8633","editorOverviewRuler.wordHighlightStrongForeground":"#6e6a8666","editorPane.background":"#0000","editorRuler.foreground":"#6e6a8666","editorSuggestWidget.background":"#1f1d2e","editorSuggestWidget.border":"#0000","editorSuggestWidget.focusHighlightForeground":"#ebbcba","editorSuggestWidget.foreground":"#908caa","editorSuggestWidget.highlightForeground":"#ebbcba","editorSuggestWidget.selectedBackground":"#6e6a8633","editorSuggestWidget.selectedForeground":"#e0def4","editorSuggestWidget.selectedIconForeground":"#e0def4","editorUnnecessaryCode.border":"#0000","editorUnnecessaryCode.opacity":"#e0def480","editorWarning.border":"#0000","editorWarning.foreground":"#f6c177","editorWhitespace.foreground":"#6e6a86","editorWidget.background":"#1f1d2e","editorWidget.border":"#26233a","editorWidget.foreground":"#908caa","editorWidget.resizeBorder":"#6e6a86",errorForeground:"#eb6f92","extensionBadge.remoteBackground":"#c4a7e7","extensionBadge.remoteForeground":"#191724","extensionButton.prominentBackground":"#ebbcba","extensionButton.prominentForeground":"#191724","extensionButton.prominentHoverBackground":"#ebbcbae6","extensionIcon.preReleaseForeground":"#31748f","extensionIcon.starForeground":"#ebbcba","extensionIcon.verifiedForeground":"#c4a7e7",focusBorder:"#6e6a8633",foreground:"#e0def4","gitDecoration.addedResourceForeground":"#9ccfd8","gitDecoration.conflictingResourceForeground":"#eb6f92","gitDecoration.deletedResourceForeground":"#908caa","gitDecoration.ignoredResourceForeground":"#6e6a86","gitDecoration.modifiedResourceForeground":"#ebbcba","gitDecoration.renamedResourceForeground":"#31748f","gitDecoration.stageDeletedResourceForeground":"#eb6f92","gitDecoration.stageModifiedResourceForeground":"#c4a7e7","gitDecoration.submoduleResourceForeground":"#f6c177","gitDecoration.untrackedResourceForeground":"#f6c177","icon.foreground":"#908caa","input.background":"#26233a80","input.border":"#6e6a8633","input.foreground":"#e0def4","input.placeholderForeground":"#908caa","inputOption.activeBackground":"#ebbcba26","inputOption.activeForeground":"#ebbcba","inputValidation.errorBackground":"#1f1d2e","inputValidation.errorBorder":"#6e6a8666","inputValidation.errorForeground":"#eb6f92","inputValidation.infoBackground":"#1f1d2e","inputValidation.infoBorder":"#6e6a8666","inputValidation.infoForeground":"#9ccfd8","inputValidation.warningBackground":"#1f1d2e","inputValidation.warningBorder":"#6e6a8666","inputValidation.warningForeground":"#9ccfd880","keybindingLabel.background":"#26233a","keybindingLabel.border":"#6e6a8666","keybindingLabel.bottomBorder":"#6e6a8666","keybindingLabel.foreground":"#c4a7e7","keybindingTable.headerBackground":"#26233a","keybindingTable.rowsBackground":"#1f1d2e","list.activeSelectionBackground":"#6e6a8633","list.activeSelectionForeground":"#e0def4","list.deemphasizedForeground":"#908caa","list.dropBackground":"#1f1d2e","list.errorForeground":"#eb6f92","list.filterMatchBackground":"#1f1d2e","list.filterMatchBorder":"#ebbcba","list.focusBackground":"#6e6a8666","list.focusForeground":"#e0def4","list.focusOutline":"#6e6a8633","list.highlightForeground":"#ebbcba","list.hoverBackground":"#6e6a861a","list.hoverForeground":"#e0def4","list.inactiveFocusBackground":"#6e6a861a","list.inactiveSelectionBackground":"#1f1d2e","list.inactiveSelectionForeground":"#e0def4","list.invalidItemForeground":"#eb6f92","list.warningForeground":"#f6c177","listFilterWidget.background":"#1f1d2e","listFilterWidget.noMatchesOutline":"#eb6f92","listFilterWidget.outline":"#26233a","menu.background":"#1f1d2e","menu.border":"#6e6a861a","menu.foreground":"#e0def4","menu.selectionBackground":"#6e6a8633","menu.selectionBorder":"#26233a","menu.selectionForeground":"#e0def4","menu.separatorBackground":"#6e6a8666","menubar.selectionBackground":"#6e6a8633","menubar.selectionBorder":"#6e6a861a","menubar.selectionForeground":"#e0def4","merge.border":"#26233a","merge.commonContentBackground":"#6e6a8633","merge.commonHeaderBackground":"#6e6a8633","merge.currentContentBackground":"#f6c17780","merge.currentHeaderBackground":"#f6c17780","merge.incomingContentBackground":"#9ccfd880","merge.incomingHeaderBackground":"#9ccfd880","minimap.background":"#1f1d2e","minimap.errorHighlight":"#eb6f9280","minimap.findMatchHighlight":"#6e6a8633","minimap.selectionHighlight":"#6e6a8633","minimap.warningHighlight":"#f6c17780","minimapGutter.addedBackground":"#9ccfd8","minimapGutter.deletedBackground":"#eb6f92","minimapGutter.modifiedBackground":"#ebbcba","minimapSlider.activeBackground":"#6e6a8666","minimapSlider.background":"#6e6a8633","minimapSlider.hoverBackground":"#6e6a8633","notebook.cellBorderColor":"#9ccfd880","notebook.cellEditorBackground":"#1f1d2e","notebook.cellHoverBackground":"#26233a80","notebook.focusedCellBackground":"#6e6a861a","notebook.focusedCellBorder":"#9ccfd8","notebook.outputContainerBackgroundColor":"#6e6a861a","notificationCenter.border":"#6e6a8633","notificationCenterHeader.background":"#1f1d2e","notificationCenterHeader.foreground":"#908caa","notificationLink.foreground":"#c4a7e7","notificationToast.border":"#6e6a8633","notifications.background":"#1f1d2e","notifications.border":"#6e6a8633","notifications.foreground":"#e0def4","notificationsErrorIcon.foreground":"#eb6f92","notificationsInfoIcon.foreground":"#9ccfd8","notificationsWarningIcon.foreground":"#f6c177","panel.background":"#1f1d2e","panel.border":"#0000","panel.dropBorder":"#26233a","panelInput.border":"#1f1d2e","panelSection.dropBackground":"#6e6a8633","panelSectionHeader.background":"#1f1d2e","panelSectionHeader.foreground":"#e0def4","panelTitle.activeBorder":"#6e6a8666","panelTitle.activeForeground":"#e0def4","panelTitle.inactiveForeground":"#908caa","peekView.border":"#26233a","peekViewEditor.background":"#1f1d2e","peekViewEditor.matchHighlightBackground":"#6e6a8666","peekViewResult.background":"#1f1d2e","peekViewResult.fileForeground":"#908caa","peekViewResult.lineForeground":"#908caa","peekViewResult.matchHighlightBackground":"#6e6a8666","peekViewResult.selectionBackground":"#6e6a8633","peekViewResult.selectionForeground":"#e0def4","peekViewTitle.background":"#26233a","peekViewTitleDescription.foreground":"#908caa","pickerGroup.border":"#6e6a8666","pickerGroup.foreground":"#c4a7e7","ports.iconRunningProcessForeground":"#ebbcba","problemsErrorIcon.foreground":"#eb6f92","problemsInfoIcon.foreground":"#9ccfd8","problemsWarningIcon.foreground":"#f6c177","progressBar.background":"#ebbcba","quickInput.background":"#1f1d2e","quickInput.foreground":"#908caa","quickInputList.focusBackground":"#6e6a8633","quickInputList.focusForeground":"#e0def4","quickInputList.focusIconForeground":"#e0def4","scrollbar.shadow":"#1f1d2e4d","scrollbarSlider.activeBackground":"#31748f80","scrollbarSlider.background":"#6e6a8633","scrollbarSlider.hoverBackground":"#6e6a8666","searchEditor.findMatchBackground":"#6e6a8633","selection.background":"#6e6a8666","settings.focusedRowBackground":"#1f1d2e","settings.focusedRowBorder":"#6e6a8633","settings.headerForeground":"#e0def4","settings.modifiedItemIndicator":"#ebbcba","settings.rowHoverBackground":"#1f1d2e","sideBar.background":"#191724","sideBar.dropBackground":"#1f1d2e","sideBar.foreground":"#908caa","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#6e6a8633","statusBar.background":"#191724","statusBar.debuggingBackground":"#c4a7e7","statusBar.debuggingForeground":"#191724","statusBar.foreground":"#908caa","statusBar.noFolderBackground":"#191724","statusBar.noFolderForeground":"#908caa","statusBarItem.activeBackground":"#6e6a8666","statusBarItem.errorBackground":"#191724","statusBarItem.errorForeground":"#eb6f92","statusBarItem.hoverBackground":"#6e6a8633","statusBarItem.prominentBackground":"#26233a","statusBarItem.prominentForeground":"#e0def4","statusBarItem.prominentHoverBackground":"#6e6a8633","statusBarItem.remoteBackground":"#191724","statusBarItem.remoteForeground":"#f6c177","symbolIcon.arrayForeground":"#908caa","symbolIcon.classForeground":"#908caa","symbolIcon.colorForeground":"#908caa","symbolIcon.constantForeground":"#908caa","symbolIcon.constructorForeground":"#908caa","symbolIcon.enumeratorForeground":"#908caa","symbolIcon.enumeratorMemberForeground":"#908caa","symbolIcon.eventForeground":"#908caa","symbolIcon.fieldForeground":"#908caa","symbolIcon.fileForeground":"#908caa","symbolIcon.folderForeground":"#908caa","symbolIcon.functionForeground":"#908caa","symbolIcon.interfaceForeground":"#908caa","symbolIcon.keyForeground":"#908caa","symbolIcon.keywordForeground":"#908caa","symbolIcon.methodForeground":"#908caa","symbolIcon.moduleForeground":"#908caa","symbolIcon.namespaceForeground":"#908caa","symbolIcon.nullForeground":"#908caa","symbolIcon.numberForeground":"#908caa","symbolIcon.objectForeground":"#908caa","symbolIcon.operatorForeground":"#908caa","symbolIcon.packageForeground":"#908caa","symbolIcon.propertyForeground":"#908caa","symbolIcon.referenceForeground":"#908caa","symbolIcon.snippetForeground":"#908caa","symbolIcon.stringForeground":"#908caa","symbolIcon.structForeground":"#908caa","symbolIcon.textForeground":"#908caa","symbolIcon.typeParameterForeground":"#908caa","symbolIcon.unitForeground":"#908caa","symbolIcon.variableForeground":"#908caa","tab.activeBackground":"#6e6a861a","tab.activeForeground":"#e0def4","tab.activeModifiedBorder":"#9ccfd8","tab.border":"#0000","tab.hoverBackground":"#6e6a8633","tab.inactiveBackground":"#0000","tab.inactiveForeground":"#908caa","tab.inactiveModifiedBorder":"#9ccfd880","tab.lastPinnedBorder":"#6e6a86","tab.unfocusedActiveBackground":"#0000","tab.unfocusedHoverBackground":"#0000","tab.unfocusedInactiveBackground":"#0000","tab.unfocusedInactiveModifiedBorder":"#9ccfd880","terminal.ansiBlack":"#26233a","terminal.ansiBlue":"#9ccfd8","terminal.ansiBrightBlack":"#908caa","terminal.ansiBrightBlue":"#9ccfd8","terminal.ansiBrightCyan":"#ebbcba","terminal.ansiBrightGreen":"#31748f","terminal.ansiBrightMagenta":"#c4a7e7","terminal.ansiBrightRed":"#eb6f92","terminal.ansiBrightWhite":"#e0def4","terminal.ansiBrightYellow":"#f6c177","terminal.ansiCyan":"#ebbcba","terminal.ansiGreen":"#31748f","terminal.ansiMagenta":"#c4a7e7","terminal.ansiRed":"#eb6f92","terminal.ansiWhite":"#e0def4","terminal.ansiYellow":"#f6c177","terminal.dropBackground":"#6e6a8633","terminal.foreground":"#e0def4","terminal.selectionBackground":"#6e6a8633","terminal.tab.activeBorder":"#e0def4","terminalCursor.background":"#e0def4","terminalCursor.foreground":"#6e6a86","textBlockQuote.background":"#1f1d2e","textBlockQuote.border":"#6e6a8633","textCodeBlock.background":"#1f1d2e","textLink.activeForeground":"#c4a7e7e6","textLink.foreground":"#c4a7e7","textPreformat.foreground":"#f6c177","textSeparator.foreground":"#908caa","titleBar.activeBackground":"#191724","titleBar.activeForeground":"#908caa","titleBar.inactiveBackground":"#1f1d2e","titleBar.inactiveForeground":"#908caa","toolbar.activeBackground":"#6e6a8666","toolbar.hoverBackground":"#6e6a8633","tree.indentGuidesStroke":"#908caa","walkThrough.embeddedEditorBackground":"#191724","welcomePage.background":"#191724","welcomePage.buttonBackground":"#1f1d2e","welcomePage.buttonHoverBackground":"#26233a","widget.shadow":"#1f1d2e4d","window.activeBorder":"#1f1d2e","window.inactiveBorder":"#1f1d2e"},displayName:"Rosé Pine",name:"rose-pine",tokenColors:[{scope:["comment"],settings:{fontStyle:"italic",foreground:"#6e6a86"}},{scope:["constant"],settings:{foreground:"#31748f"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"#ebbcba"}},{scope:["entity.name"],settings:{foreground:"#ebbcba"}},{scope:["entity.name.section","entity.name.tag","entity.name.namespace","entity.name.type"],settings:{foreground:"#9ccfd8"}},{scope:["entity.other.attribute-name","entity.other.inherited-class"],settings:{fontStyle:"italic",foreground:"#c4a7e7"}},{scope:["invalid"],settings:{foreground:"#eb6f92"}},{scope:["invalid.deprecated"],settings:{foreground:"#908caa"}},{scope:["keyword"],settings:{foreground:"#31748f"}},{scope:["markup.inserted.diff"],settings:{foreground:"#9ccfd8"}},{scope:["markup.deleted.diff"],settings:{foreground:"#eb6f92"}},{scope:"markup.heading",settings:{fontStyle:"bold"}},{scope:"markup.bold.markdown",settings:{fontStyle:"bold"}},{scope:"markup.italic.markdown",settings:{fontStyle:"italic"}},{scope:["meta.diff.range"],settings:{foreground:"#c4a7e7"}},{scope:["meta.tag","meta.brace"],settings:{foreground:"#e0def4"}},{scope:["meta.import","meta.export"],settings:{foreground:"#31748f"}},{scope:"meta.directive.vue",settings:{fontStyle:"italic",foreground:"#c4a7e7"}},{scope:"meta.property-name.css",settings:{foreground:"#9ccfd8"}},{scope:"meta.property-value.css",settings:{foreground:"#f6c177"}},{scope:"meta.tag.other.html",settings:{foreground:"#908caa"}},{scope:["punctuation"],settings:{foreground:"#908caa"}},{scope:["punctuation.accessor"],settings:{foreground:"#31748f"}},{scope:["punctuation.definition.string"],settings:{foreground:"#f6c177"}},{scope:["punctuation.definition.tag"],settings:{foreground:"#6e6a86"}},{scope:["storage.type","storage.modifier"],settings:{foreground:"#31748f"}},{scope:["string"],settings:{foreground:"#f6c177"}},{scope:["support"],settings:{foreground:"#9ccfd8"}},{scope:["support.constant"],settings:{foreground:"#f6c177"}},{scope:["support.function"],settings:{fontStyle:"italic",foreground:"#eb6f92"}},{scope:["variable"],settings:{fontStyle:"italic",foreground:"#ebbcba"}},{scope:["variable.other","variable.language","variable.function","variable.argument"],settings:{foreground:"#e0def4"}},{scope:["variable.parameter"],settings:{foreground:"#c4a7e7"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/rst.MQSXyo4o.js b/assets/chunks/rst.MQSXyo4o.js new file mode 100644 index 000000000..ea4677347 --- /dev/null +++ b/assets/chunks/rst.MQSXyo4o.js @@ -0,0 +1 @@ +import e from"./html-derivative.fiapQfxX.js";import n from"./cpp.BnO_O5bK.js";import a from"./python.DwuVtWc2.js";import c from"./javascript.Dch3xQiY.js";import o from"./shellscript.BZfs-ost.js";import t from"./yaml.C5gCGmDW.js";import r from"./cmake.DXZpi2gR.js";import l from"./ruby.BYVeyLWu.js";import"./html.CuK0VrWf.js";import"./css.CbYhyuC0.js";import"./glsl.-GlVTnW0.js";import"./c.RCJZWN-0.js";import"./sql.DbK06e1c.js";import"./xml.BzTcx3OS.js";import"./java.ClXEvkw9.js";import"./lua.CHJYZA-p.js";const s=Object.freeze({displayName:"reStructuredText",name:"rst",patterns:[{include:"#body"}],repository:{anchor:{match:"^\\.{2}\\s+(_[^:]+:)\\s*",name:"entity.name.tag.anchor"},block:{begin:"^(\\s*)(\\.{2}\\s+\\S+::)(.*)",beginCaptures:{2:{name:"keyword.control"},3:{name:"variable"}},end:"^(?!\\1\\s|\\s*$)",patterns:[{include:"#block-param"},{include:"#body"}]},"block-comment":{begin:"^(\\s*)\\.{2}(\\s+|$)",end:"^(?=\\S)|^\\s*$",name:"comment.block",patterns:[{begin:"^\\s{3,}(?=\\S)",name:"comment.block",while:"^\\s{3}.*|^\\s*$"}]},"block-param":{patterns:[{captures:{1:{name:"keyword.control"},2:{name:"variable.parameter"}},match:"(:param\\s+(.+?):)(?:\\s|$)"},{captures:{1:{name:"keyword.control"},2:{patterns:[{match:"\\b(0x[a-fA-F\\d]+|\\d+)\\b",name:"constant.numeric"},{include:"#inline-markup"}]}},match:"(:.+?:)(?:$|\\s+(.*))"}]},blocks:{patterns:[{include:"#domains"},{include:"#doctest"},{include:"#code-block-cpp"},{include:"#code-block-py"},{include:"#code-block-console"},{include:"#code-block-javascript"},{include:"#code-block-yaml"},{include:"#code-block-cmake"},{include:"#code-block-kconfig"},{include:"#code-block-ruby"},{include:"#code-block-dts"},{include:"#code-block"},{include:"#doctest-block"},{include:"#raw-html"},{include:"#block"},{include:"#literal-block"},{include:"#block-comment"}]},body:{patterns:[{include:"#title"},{include:"#inline-markup"},{include:"#anchor"},{include:"#line-block"},{include:"#replace-include"},{include:"#footnote"},{include:"#substitution"},{include:"#blocks"},{include:"#table"},{include:"#simple-table"},{include:"#options-list"}]},bold:{begin:`(?<=[\\s"'(\\[{<]|^)\\*{2}[^\\s*]`,end:"\\*{2}|^\\s*$",name:"markup.bold"},citation:{applyEndPatternLast:0,begin:"(?<=[\\s\"'(\\[{<]|^)`[^\\s`]",end:"`_{,2}|^\\s*$",name:"entity.name.tag"},"code-block":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)",beginCaptures:{2:{name:"keyword.control"}},patterns:[{include:"#block-param"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-cmake":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(cmake)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.cmake"}},patterns:[{include:"#block-param"},{include:"source.cmake"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-console":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(console|shell|bash)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.console"}},patterns:[{include:"#block-param"},{include:"source.shell"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-cpp":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(c|c\\+\\+|cpp|C|C\\+\\+|CPP|Cpp)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.cpp"}},patterns:[{include:"#block-param"},{include:"source.cpp"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-dts":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(dts|DTS|devicetree)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.dts"}},patterns:[{include:"#block-param"},{include:"source.dts"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-javascript":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(javascript)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.js"}},patterns:[{include:"#block-param"},{include:"source.js"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-kconfig":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*([kK]config)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.kconfig"}},patterns:[{include:"#block-param"},{include:"source.kconfig"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-py":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(python)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.py"}},patterns:[{include:"#block-param"},{include:"source.python"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-ruby":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(ruby)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.ruby"}},patterns:[{include:"#block-param"},{include:"source.ruby"}],while:"^\\1(?=\\s)|^\\s*$"},"code-block-yaml":{begin:"^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(ya?ml)\\s*$",beginCaptures:{2:{name:"keyword.control"},4:{name:"variable.parameter.codeblock.yaml"}},patterns:[{include:"#block-param"},{include:"source.yaml"}],while:"^\\1(?=\\s)|^\\s*$"},doctest:{begin:"^(>>>)\\s*(.*)",beginCaptures:{1:{name:"keyword.control"},2:{patterns:[{include:"source.python"}]}},end:"^\\s*$"},"doctest-block":{begin:"^(\\s*)(\\.{2}\\s+doctest::)\\s*$",beginCaptures:{2:{name:"keyword.control"}},patterns:[{include:"#block-param"},{include:"source.python"}],while:"^\\1(?=\\s)|^\\s*$"},"domain-auto":{begin:"^(\\s*)(\\.{2}\\s+auto(?:class|module|exception|function|decorator|data|method|attribute|property)::)\\s*(.*)",beginCaptures:{2:{name:"keyword.control.py"},3:{patterns:[{include:"source.python"}]}},patterns:[{include:"#block-param"},{include:"#body"}],while:"^\\1(?=\\s)|^\\s*$"},"domain-cpp":{begin:"^(\\s*)(\\.{2}\\s+(?:cpp|c):(?:class|struct|function|member|var|type|enum|enum-struct|enum-class|enumerator|union|concept)::)\\s*(?:(@\\w+)|(.*))",beginCaptures:{2:{name:"keyword.control"},3:{name:"entity.name.tag"},4:{patterns:[{include:"source.cpp"}]}},patterns:[{include:"#block-param"},{include:"#body"}],while:"^\\1(?=\\s)|^\\s*$"},"domain-js":{begin:"^(\\s*)(\\.{2}\\s+js:\\w+::)\\s*(.*)",beginCaptures:{2:{name:"keyword.control"},3:{patterns:[{include:"source.js"}]}},end:"^(?!\\1[ \\t]|$)",patterns:[{include:"#block-param"},{include:"#body"}]},"domain-py":{begin:"^(\\s*)(\\.{2}\\s+py:(?:module|function|data|exception|class|attribute|property|method|staticmethod|classmethod|decorator|decoratormethod)::)\\s*(.*)",beginCaptures:{2:{name:"keyword.control"},3:{patterns:[{include:"source.python"}]}},patterns:[{include:"#block-param"},{include:"#body"}],while:"^\\1(?=\\s)|^\\s*$"},domains:{patterns:[{include:"#domain-cpp"},{include:"#domain-py"},{include:"#domain-auto"},{include:"#domain-js"}]},escaped:{match:"\\\\.",name:"constant.character.escape"},footnote:{match:"^\\s*\\.{2}\\s+\\[(?:[\\w\\.-]+|[#*]|#\\w+)\\]\\s+",name:"entity.name.tag"},"footnote-ref":{match:"\\[(?:[\\w\\.-]+|[#*])\\]_",name:"entity.name.tag"},ignore:{patterns:[{match:"'[`*]+'"},{match:"<[`*]+>"},{match:"{[`*]+}"},{match:"\\([`*]+\\)"},{match:"\\[[`*]+\\]"},{match:'"[`*]+"'}]},"inline-markup":{patterns:[{include:"#escaped"},{include:"#ignore"},{include:"#ref"},{include:"#literal"},{include:"#monospaced"},{include:"#citation"},{include:"#bold"},{include:"#italic"},{include:"#list"},{include:"#macro"},{include:"#reference"},{include:"#footnote-ref"}]},italic:{begin:`(?<=[\\s"'(\\[{<]|^)\\*[^\\s*]`,end:"\\*|^\\s*$",name:"markup.italic"},"line-block":{match:"^\\|\\s+",name:"keyword.control"},list:{match:"^\\s*(\\d+\\.|\\* -|[a-zA-Z#]\\.|[iIvVxXmMcC]+\\.|\\(\\d+\\)|\\d+\\)|[*+-])\\s+",name:"keyword.control"},literal:{captures:{1:{name:"keyword.control"},2:{name:"entity.name.tag"}},match:"(:\\S+:)(`.*?`\\\\?)"},"literal-block":{begin:"^(\\s*)(.*)(::)\\s*$",beginCaptures:{2:{patterns:[{include:"#inline-markup"}]},3:{name:"keyword.control"}},while:"^\\1(?=\\s)|^\\s*$"},macro:{match:"\\|[^\\|]+\\|",name:"entity.name.tag"},monospaced:{begin:"(?<=[\\s\"'(\\[{<]|^)``[^\\s`]",end:"``|^\\s*$",name:"string.interpolated"},"options-list":{match:"(?:(?:^|,\\s+)(?:[-+]\\w|--?[a-zA-Z][\\w-]+|/\\w+)(?:[ =](?:\\w+|<[^<>]+?>))?)+(?= |\\t|$)",name:"variable.parameter"},"raw-html":{begin:"^(\\s*)(\\.{2}\\s+raw\\s*::)\\s+(html)\\s*$",beginCaptures:{2:{name:"keyword.control"},3:{name:"variable.parameter.html"}},patterns:[{include:"#block-param"},{include:"text.html.derivative"}],while:"^\\1(?=\\s)|^\\s*$"},ref:{begin:"(:ref:)`",beginCaptures:{1:{name:"keyword.control"}},end:"`|^\\s*$",name:"entity.name.tag",patterns:[{match:"<.*?>",name:"markup.underline.link"}]},reference:{match:"[\\w-]*[a-zA-Z\\d-]__?\\b",name:"entity.name.tag"},"replace-include":{captures:{1:{name:"keyword.control"},2:{name:"entity.name.tag"},3:{name:"keyword.control"}},match:"^\\s*(\\.{2})\\s+(\\|[^\\|]+\\|)\\s+(replace::)"},"simple-table":{match:"^[=\\s]+$",name:"keyword.control.table"},substitution:{match:"^\\.{2}\\s*\\|([^|]+)\\|",name:"entity.name.tag"},table:{begin:"^\\s*\\+[=+-]+\\+\\s*$",beginCaptures:{0:{name:"keyword.control.table"}},end:"^(?![+|])",patterns:[{match:"[=+|-]",name:"keyword.control.table"}]},title:{match:"^(\\*{3,}|#{3,}|\\={3,}|~{3,}|\\+{3,}|-{3,}|`{3,}|\\^{3,}|:{3,}|\"{3,}|_{3,}|'{3,})$",name:"markup.heading"}},scopeName:"source.rst",embeddedLangs:["html-derivative","cpp","python","javascript","shellscript","yaml","cmake","ruby"]});var x=[...e,...n,...a,...c,...o,...t,...r,...l,s];export{x as default}; diff --git a/assets/chunks/ruby.BYVeyLWu.js b/assets/chunks/ruby.BYVeyLWu.js new file mode 100644 index 000000000..9e485114e --- /dev/null +++ b/assets/chunks/ruby.BYVeyLWu.js @@ -0,0 +1,80 @@ +import e from"./html.CuK0VrWf.js";import n from"./xml.BzTcx3OS.js";import t from"./sql.DbK06e1c.js";import a from"./css.CbYhyuC0.js";import r from"./c.RCJZWN-0.js";import i from"./javascript.Dch3xQiY.js";import s from"./shellscript.BZfs-ost.js";import c from"./lua.CHJYZA-p.js";import"./java.ClXEvkw9.js";const u=Object.freeze({displayName:"Ruby",name:"ruby",patterns:[{captures:{1:{name:"keyword.control.class.ruby"},2:{name:"entity.name.type.class.ruby"},3:{name:"keyword.operator.other.ruby"},4:{name:"entity.other.inherited-class.ruby"},5:{name:"keyword.operator.other.ruby"},6:{name:"variable.other.object.ruby"}},match:"^\\s*(class)\\s+(?:([.a-zA-Z0-9_:]+)(?:\\s*(<)\\s*([.a-zA-Z0-9_:]+))?|(<<)\\s*([.a-zA-Z0-9_:]+))",name:"meta.class.ruby"},{captures:{1:{name:"keyword.control.module.ruby"},2:{name:"entity.name.type.module.ruby"},3:{name:"entity.other.inherited-class.module.first.ruby"},4:{name:"punctuation.separator.inheritance.ruby"},5:{name:"entity.other.inherited-class.module.second.ruby"},6:{name:"punctuation.separator.inheritance.ruby"},7:{name:"entity.other.inherited-class.module.third.ruby"},8:{name:"punctuation.separator.inheritance.ruby"}},match:"^\\s*(module)\\s+(([A-Z]\\w*(::))?([A-Z]\\w*(::))?([A-Z]\\w*(::))*[A-Z]\\w*)",name:"meta.module.ruby"},{comment:"else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.",match:"(?<!\\.)\\belse(\\s)+if\\b",name:"invalid.deprecated.ruby"},{captures:{1:{name:"punctuation.definition.constant.ruby"}},comment:"symbols as hash key (1.9 syntax)",match:"(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)",name:"constant.other.symbol.hashkey.ruby"},{captures:{1:{name:"punctuation.definition.constant.ruby"}},comment:"symbols as hash key (1.8 syntax)",match:"(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!])?)(?=\\s*=>)",name:"constant.other.symbol.hashkey.ruby"},{comment:"everything being a reserved word, not a value and needing a 'end' is a..",match:"(?<!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\b(?![?!])",name:"keyword.control.ruby"},{comment:"contextual smart pair support for block parameters",match:"(?<!\\.)\\bdo\\b",name:"keyword.control.start-block.ruby"},{comment:"contextual smart pair support",match:"(?<=\\{)(\\s+)",name:"meta.syntax.ruby.start-block"},{match:"(?<!\\.)\\b(alias|alias_method|block_given[?]|break|defined[?]|iterator[?]|next|redo|retry|return|super|undef|yield)(\\b|(?<=[?]))(?![?!])",name:"keyword.control.pseudo-method.ruby"},{match:"\\b(nil|true|false)\\b(?![?!])",name:"constant.language.ruby"},{match:"\\b(__(dir|FILE|LINE)__)\\b(?![?!])",name:"variable.language.ruby"},{begin:"^__END__\\n",captures:{0:{name:"string.unquoted.program-block.ruby"}},comment:"__END__ marker",contentName:"text.plain",end:"(?=not)impossible",patterns:[{begin:"(?=<?xml|<(?i:html\\b)|!DOCTYPE (?i:html\\b))",end:"(?=not)impossible",name:"text.html.embedded.ruby",patterns:[{include:"text.html.basic"}]}]},{match:"\\b(self)\\b(?![?!])",name:"variable.language.self.ruby"},{comment:" everything being a method but having a special function is a..",match:"\\b(initialize|new|loop|include|extend|prepend|fail|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|private_class_method|module_function|public|public_class_method|protected|refine|using)\\b(?![?!])",name:"keyword.other.special-method.ruby"},{begin:"\\b(?<!\\.|::)(require|require_relative)\\b",captures:{1:{name:"keyword.other.special-method.ruby"}},end:"$|(?=#|\\})",name:"meta.require.ruby",patterns:[{include:"$self"}]},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.instance.ruby"},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(@@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.class.ruby"},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(\\$)[a-zA-Z_]\\w*",name:"variable.other.readwrite.global.ruby"},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(\\$)(!|@|&|`|'|\\+|\\d+|~|=|/|\\\\|,|;|\\.|<|>|_|\\*|\\$|\\?|:|\"|-[0adFiIlpvw])",name:"variable.other.readwrite.global.pre-defined.ruby"},{begin:"\\b(ENV)\\[",beginCaptures:{1:{name:"variable.other.constant.ruby"}},end:"\\]",name:"meta.environment-variable.ruby",patterns:[{include:"$self"}]},{match:"\\b[A-Z]\\w*(?=((\\.|::)[A-Za-z]|\\[))",name:"support.class.ruby"},{match:"\\b(abort|at_exit|autoload[?]?|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|exit!|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)(\\b|(?<=[?!]))(?![?!])",name:"support.function.kernel.ruby"},{match:"\\b[A-Z]\\w*\\b",name:"variable.other.constant.ruby"},{begin:`(?x) +(?=def\\b) +(?<=^|\\s)(def)\\s+ +( (?>[a-zA-Z_]\\w*(?>\\.|::))? +(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? +|===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&\`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) +\\s*(\\() +`,beginCaptures:{1:{name:"keyword.control.def.ruby"},2:{name:"entity.name.function.ruby"},3:{name:"punctuation.definition.parameters.ruby"}},comment:"the method pattern comes from the symbol pattern, see there for a explaination",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.ruby"}},name:"meta.function.method.with-arguments.ruby",patterns:[{begin:"(?=[&*_a-zA-Z])",end:"(?=[,)])",patterns:[{captures:{1:{name:"storage.type.variable.ruby"},2:{name:"constant.other.symbol.hashkey.parameter.function.ruby"},3:{name:"punctuation.definition.constant.ruby"},4:{name:"variable.parameter.function.ruby"}},match:"\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"},{include:"#parens"},{include:"#braces"},{include:"$self"}]}],repository:{braces:{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.function.begin.ruby"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.function.end.ruby"}},patterns:[{include:"#parens"},{include:"#braces"},{include:"$self"}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.function.begin.ruby"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.function.end.ruby"}},patterns:[{include:"#parens"},{include:"#braces"},{include:"$self"}]}}},{begin:`(?x) +(?=def\\b) +(?<=^|\\s)(def)\\s+ +( (?>[a-zA-Z_]\\w*(?>\\.|::))? +(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? +|===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&\`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) +[ \\t] +(?=[ \\t]*[^\\s#;]) +`,beginCaptures:{1:{name:"keyword.control.def.ruby"},2:{name:"entity.name.function.ruby"}},comment:"same as the previous rule, but without parentheses around the arguments",end:"$",name:"meta.function.method.with-arguments.ruby",patterns:[{begin:"(?![\\s,])",end:"(?=,|$)",patterns:[{captures:{1:{name:"storage.type.variable.ruby"},2:{name:"constant.other.symbol.hashkey.parameter.function.ruby"},3:{name:"punctuation.definition.constant.ruby"},4:{name:"variable.parameter.function.ruby"}},match:"\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))",name:"variable.parameter.function.ruby"},{include:"$self"}]}]},{captures:{1:{name:"keyword.control.def.ruby"},3:{name:"entity.name.function.ruby"}},comment:" the optional name is just to catch the def also without a method-name",match:`(?x) +(?=def\\b) +(?<=^|\\s)(def)\\b +( \\s+ +( (?>[a-zA-Z_]\\w*(?>\\.|::))? +(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? +|===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&\`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) )? +`,name:"meta.function.method.without-arguments.ruby"},{match:"\\b\\d(?>_?\\d)*(?=\\.\\d|[eE])(\\.\\d(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?r?i?\\b",name:"constant.numeric.float.ruby"},{match:"\\b(0|(0[dD]\\d|[1-9])(?>_?\\d)*)r?i?\\b",name:"constant.numeric.integer.ruby"},{match:"\\b0[xX]\\h(?>_?\\h)*r?i?\\b",name:"constant.numeric.hex.ruby"},{match:"\\b0[bB][01](?>_?[01])*r?i?\\b",name:"constant.numeric.binary.ruby"},{match:"\\b0([oO]?[0-7](?>_?[0-7])*)?r?i?\\b",name:"constant.numeric.octal.ruby"},{begin:":'",captures:{0:{name:"punctuation.definition.constant.ruby"}},end:"'",name:"constant.other.symbol.single-quoted.ruby",patterns:[{match:"\\\\['\\\\]",name:"constant.character.escape.ruby"}]},{begin:':"',captures:{0:{name:"punctuation.definition.constant.ruby"}},end:'"',name:"constant.other.symbol.double-quoted.ruby",patterns:[{include:"#interpolated_ruby"},{include:"#escaped_char"}]},{comment:"Needs higher precedence than regular expressions.",match:"(?<!\\()/=",name:"keyword.operator.assignment.augmented.ruby"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},comment:"single quoted string (does not allow interpolation)",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.quoted.single.ruby",patterns:[{match:"\\\\'|\\\\\\\\",name:"constant.character.escape.ruby"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},comment:"double quoted string (allows for interpolation)",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.quoted.double.ruby",patterns:[{include:"#interpolated_ruby"},{include:"#escaped_char"}]},{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},comment:"execute string (allows for interpolation)",end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.interpolated.ruby",patterns:[{include:"#interpolated_ruby"},{include:"#escaped_char"}]},{include:"#percent_literals"},{begin:`(?x) +(?: +^ +| (?<= +[=>~(?:\\[,|&;] +| [\\s;]if\\s +| [\\s;]elsif\\s +| [\\s;]while\\s +| [\\s;]unless\\s +| [\\s;]when\\s +| [\\s;]assert_match\\s +| [\\s;]or\\s +| [\\s;]and\\s +| [\\s;]not\\s +| [\\s.]index\\s +| [\\s.]scan\\s +| [\\s.]sub\\s +| [\\s.]sub!\\s +| [\\s.]gsub\\s +| [\\s.]gsub!\\s +| [\\s.]match\\s +) +| (?<= +^when\\s +| ^if\\s +| ^elsif\\s +| ^while\\s +| ^unless\\s +) +) +\\s*((/))(?![*+{}?]) +`,captures:{1:{name:"string.regexp.classic.ruby"},2:{name:"punctuation.definition.string.ruby"}},comment:`regular expressions (normal) + we only start a regexp if the character before it (excluding whitespace) + is what we think is before a regexp + `,contentName:"string.regexp.classic.ruby",end:"((/[eimnosux]*))",patterns:[{include:"#regex_sub"}]},{captures:{1:{name:"punctuation.definition.constant.ruby"}},comment:"symbols",match:"(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?|(@@?|\\$)[a-zA-Z_]\\w*)",name:"constant.other.symbol.ruby"},{begin:"^=begin",captures:{0:{name:"punctuation.definition.comment.ruby"}},comment:"multiline comments",end:"^=end",name:"comment.block.documentation.ruby"},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ruby"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.ruby"}},end:"\\n",name:"comment.line.number-sign.ruby"}]},{comment:` + matches questionmark-letters. + + examples (1st alternation = hex): + ?\\x1 ?\\x61 + + examples (2nd alternation = octal): + ?\\0 ?\\07 ?\\017 + + examples (3rd alternation = escaped): + ?\\n ?\\b + + examples (4th alternation = meta-ctrl): + ?\\C-a ?\\M-a ?\\C-\\M-\\C-\\M-a + + examples (4th alternation = normal): + ?a ?A ?0 + ?* ?" ?( + ?. ?# + + + the negative lookbehind prevents against matching + p(42.tainted?) + `,match:"(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|0[0-7]{0,2}(?![0-7])\\b|[^x0MC])|(\\\\[MC]-)+\\w|[^\\s\\\\])",name:"constant.numeric.ruby"},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)HTML)\\b\\1))',comment:"Heredoc with embedded html",end:"(?!\\G)",name:"meta.embedded.block.html",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)HTML)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"text.html",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"text.html.basic"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)XML)\\b\\1))',comment:"Heredoc with embedded xml",end:"(?!\\G)",name:"meta.embedded.block.xml",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)XML)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"text.xml",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"text.xml"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)SQL)\\b\\1))',comment:"Heredoc with embedded sql",end:"(?!\\G)",name:"meta.embedded.block.sql",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)SQL)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.sql",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.sql"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)CSS)\\b\\1))',comment:"Heredoc with embedded css",end:"(?!\\G)",name:"meta.embedded.block.css",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)CSS)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.css",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.css"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)CPP)\\b\\1))',comment:"Heredoc with embedded c++",end:"(?!\\G)",name:"meta.embedded.block.c++",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)CPP)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.c++",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.c++"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)C)\\b\\1))',comment:"Heredoc with embedded c",end:"(?!\\G)",name:"meta.embedded.block.c",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)C)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.c",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.c"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1))',comment:"Heredoc with embedded javascript",end:"(?!\\G)",name:"meta.embedded.block.js",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.js",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.js"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)JQUERY)\\b\\1))',comment:"Heredoc with embedded jQuery javascript",end:"(?!\\G)",name:"meta.embedded.block.js.jquery",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)JQUERY)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.js.jquery",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.js.jquery"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1))',comment:"Heredoc with embedded shell",end:"(?!\\G)",name:"meta.embedded.block.shell",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.shell",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.shell"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)LUA)\\b\\1))',comment:"Heredoc with embedded lua",end:"(?!\\G)",name:"meta.embedded.block.lua",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)LUA)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.lua",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.lua"},{include:"#escaped_char"}]}]},{begin:'(?=(?><<[-~]("?)((?:[_\\w]+_|)RUBY)\\b\\1))',comment:"Heredoc with embedded ruby",end:"(?!\\G)",name:"meta.embedded.block.ruby",patterns:[{begin:'(?><<[-~]("?)((?:[_\\w]+_|)RUBY)\\b\\1)',beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},contentName:"source.ruby",end:"\\s*\\2$\\n?",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"source.ruby"},{include:"#escaped_char"}]}]},{begin:"(?>=\\s*<<(\\w+))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},end:"^\\1$",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"#escaped_char"}]},{begin:"(?><<[-~](\\w+))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},comment:"heredoc with indented terminator",end:"\\s*\\1$",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.unquoted.heredoc.ruby",patterns:[{include:"#heredoc"},{include:"#interpolated_ruby"},{include:"#escaped_char"}]},{begin:"(?<=\\{|do|\\{\\s|do\\s)(\\|)",captures:{1:{name:"punctuation.separator.arguments.ruby"}},end:"(?<!\\|)(\\|)(?!\\|)",patterns:[{include:"$self"},{match:"[_a-zA-Z][_a-zA-Z0-9]*",name:"variable.other.block.ruby"},{match:",",name:"punctuation.separator.variable.ruby"}]},{match:"=>",name:"punctuation.separator.key-value"},{match:"->",name:"support.function.kernel.lambda.ruby"},{match:"<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<",name:"keyword.operator.assignment.augmented.ruby"},{match:"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?",name:"keyword.operator.comparison.ruby"},{match:"(?<!\\.)\\b(and|not|or)\\b(?![?!])",name:"keyword.operator.logical.ruby"},{comment:"Make sure this goes after assignment and comparison",match:"(?<=^|[ \\t])!|&&|\\|\\||\\^",name:"keyword.operator.logical.ruby"},{captures:{1:{name:"punctuation.separator.method.ruby"}},comment:"Safe navigation operator - Added in 2.3",match:"(&\\.)\\s*(?![A-Z])"},{match:"(%|&|\\*\\*|\\*|\\+|-|/)",name:"keyword.operator.arithmetic.ruby"},{match:"=",name:"keyword.operator.assignment.ruby"},{match:"\\||~|>>",name:"keyword.operator.other.ruby"},{match:";",name:"punctuation.separator.statement.ruby"},{match:",",name:"punctuation.separator.object.ruby"},{captures:{1:{name:"punctuation.separator.namespace.ruby"}},comment:"Mark as namespace separator if double colons followed by capital letter",match:"(::)\\s*(?=[A-Z])"},{captures:{1:{name:"punctuation.separator.method.ruby"}},comment:"Mark as method separator if double colons not followed by capital letter",match:"(\\.|::)\\s*(?![A-Z])"},{comment:"Must come after method and constant separators to prefer double colons",match:":",name:"punctuation.separator.other.ruby"},{match:"\\{",name:"punctuation.section.scope.begin.ruby"},{match:"\\}",name:"punctuation.section.scope.end.ruby"},{match:"\\[",name:"punctuation.section.array.begin.ruby"},{match:"\\]",name:"punctuation.section.array.end.ruby"},{match:"\\(|\\)",name:"punctuation.section.function.ruby"}],repository:{escaped_char:{match:"\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)",name:"constant.character.escape.ruby"},heredoc:{begin:"^<<[-~]?\\w+",end:"$",patterns:[{include:"$self"}]},interpolated_ruby:{patterns:[{begin:"#\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.ruby"}},contentName:"source.ruby",end:"(\\})",endCaptures:{0:{name:"punctuation.section.embedded.end.ruby"},1:{name:"source.ruby"}},name:"meta.embedded.line.ruby",patterns:[{include:"#nest_curly_and_self"},{include:"$self"}],repository:{nest_curly_and_self:{patterns:[{begin:"\\{",captures:{0:{name:"punctuation.section.scope.ruby"}},end:"\\}",patterns:[{include:"#nest_curly_and_self"}]},{include:"$self"}]}}},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(#@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.instance.ruby"},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(#@@)[a-zA-Z_]\\w*",name:"variable.other.readwrite.class.ruby"},{captures:{1:{name:"punctuation.definition.variable.ruby"}},match:"(#\\$)[a-zA-Z_]\\w*",name:"variable.other.readwrite.global.ruby"}]},percent_literals:{patterns:[{begin:"%i(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.section.array.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.section.array.end.ruby"}},name:"meta.array.symbol.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"},{include:"#symbol"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"},{include:"#symbol"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"},{include:"#symbol"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"},{include:"#symbol"}]},{include:"#symbol"}],repository:{angles:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\<|\\\\>",name:"constant.other.symbol.ruby"},{begin:"<",captures:{0:{name:"constant.other.symbol.ruby"}},end:">",patterns:[{include:"#angles"},{include:"#symbol"}]}]},braces:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\{|\\\\\\}",name:"constant.other.symbol.ruby"},{begin:"\\{",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\}",patterns:[{include:"#braces"},{include:"#symbol"}]}]},brackets:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\[|\\\\\\]",name:"constant.other.symbol.ruby"},{begin:"\\[",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\]",patterns:[{include:"#brackets"},{include:"#symbol"}]}]},parens:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\(|\\\\\\)",name:"constant.other.symbol.ruby"},{begin:"\\(",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\)",patterns:[{include:"#parens"},{include:"#symbol"}]}]},symbol:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\\\|\\\\[ ]",name:"constant.other.symbol.ruby"},{match:"\\S\\w*",name:"constant.other.symbol.ruby"}]}}},{begin:"%I(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.section.array.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.section.array.end.ruby"}},name:"meta.array.symbol.interpolated.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"},{include:"#symbol"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"},{include:"#symbol"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"},{include:"#symbol"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"},{include:"#symbol"}]},{include:"#symbol"}],repository:{angles:{patterns:[{begin:"<",captures:{0:{name:"constant.other.symbol.ruby"}},end:">",patterns:[{include:"#angles"},{include:"#symbol"}]}]},braces:{patterns:[{begin:"\\{",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\}",patterns:[{include:"#braces"},{include:"#symbol"}]}]},brackets:{patterns:[{begin:"\\[",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\]",patterns:[{include:"#brackets"},{include:"#symbol"}]}]},parens:{patterns:[{begin:"\\(",captures:{0:{name:"constant.other.symbol.ruby"}},end:"\\)",patterns:[{include:"#parens"},{include:"#symbol"}]}]},symbol:{patterns:[{begin:"(?=\\\\|#\\{)",end:"(?!\\G)",name:"constant.other.symbol.ruby",patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"}]},{match:"\\S\\w*",name:"constant.other.symbol.ruby"}]}}},{begin:"%q(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.quoted.other.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"}]}],repository:{angles:{patterns:[{match:"\\\\<|\\\\>|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"<",end:">",patterns:[{include:"#angles"}]}]},braces:{patterns:[{match:"\\\\\\{|\\\\\\}|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\{",end:"\\}",patterns:[{include:"#braces"}]}]},brackets:{patterns:[{match:"\\\\\\[|\\\\\\]|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\[",end:"\\]",patterns:[{include:"#brackets"}]}]},parens:{patterns:[{match:"\\\\\\(|\\\\\\)|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\(",end:"\\)",patterns:[{include:"#parens"}]}]}}},{begin:"%Q?(?:([(\\[{<])|([^\\w\\s=]|_))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.quoted.other.interpolated.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"}]},{include:"#escaped_char"},{include:"#interpolated_ruby"}],repository:{angles:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"<",end:">",patterns:[{include:"#angles"}]}]},braces:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\{",end:"\\}",patterns:[{include:"#braces"}]}]},brackets:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\[",end:"\\]",patterns:[{include:"#brackets"}]}]},parens:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\(",end:"\\)",patterns:[{include:"#parens"}]}]}}},{begin:"%r(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},end:"([)\\]}>]\\2|\\1\\2)[eimnosux]*",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.regexp.percent.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"}]},{include:"#regex_sub"}],repository:{angles:{patterns:[{include:"#regex_sub"},{begin:"<",end:">",patterns:[{include:"#angles"}]}]},braces:{patterns:[{include:"#regex_sub"},{begin:"\\{",end:"\\}",patterns:[{include:"#braces"}]}]},brackets:{patterns:[{include:"#regex_sub"},{begin:"\\[",end:"\\]",patterns:[{include:"#brackets"}]}]},parens:{patterns:[{include:"#regex_sub"},{begin:"\\(",end:"\\)",patterns:[{include:"#parens"}]}]}}},{begin:"%s(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.definition.constant.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.definition.constant.end.ruby"}},name:"constant.other.symbol.percent.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"}]}],repository:{angles:{patterns:[{match:"\\\\<|\\\\>|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"<",end:">",patterns:[{include:"#angles"}]}]},braces:{patterns:[{match:"\\\\\\{|\\\\\\}|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\{",end:"\\}",patterns:[{include:"#braces"}]}]},brackets:{patterns:[{match:"\\\\\\[|\\\\\\]|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\[",end:"\\]",patterns:[{include:"#brackets"}]}]},parens:{patterns:[{match:"\\\\\\(|\\\\\\)|\\\\\\\\",name:"constant.character.escape.ruby"},{begin:"\\(",end:"\\)",patterns:[{include:"#parens"}]}]}}},{begin:"%w(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.section.array.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.section.array.end.ruby"}},name:"meta.array.string.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"},{include:"#string"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"},{include:"#string"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"},{include:"#string"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"},{include:"#string"}]},{include:"#string"}],repository:{angles:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\<|\\\\>",name:"string.other.ruby"},{begin:"<",captures:{0:{name:"string.other.ruby"}},end:">",patterns:[{include:"#angles"},{include:"#string"}]}]},braces:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\{|\\\\\\}",name:"string.other.ruby"},{begin:"\\{",captures:{0:{name:"string.other.ruby"}},end:"\\}",patterns:[{include:"#braces"},{include:"#string"}]}]},brackets:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\[|\\\\\\]",name:"string.other.ruby"},{begin:"\\[",captures:{0:{name:"string.other.ruby"}},end:"\\]",patterns:[{include:"#brackets"},{include:"#string"}]}]},parens:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\(|\\\\\\)",name:"string.other.ruby"},{begin:"\\(",captures:{0:{name:"string.other.ruby"}},end:"\\)",patterns:[{include:"#parens"},{include:"#string"}]}]},string:{patterns:[{captures:{0:{name:"constant.character.escape.ruby"}},match:"\\\\\\\\|\\\\[ ]",name:"string.other.ruby"},{match:"\\S\\w*",name:"string.other.ruby"}]}}},{begin:"%W(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.section.array.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.section.array.end.ruby"}},name:"meta.array.string.interpolated.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"},{include:"#string"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"},{include:"#string"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"},{include:"#string"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"},{include:"#string"}]},{include:"#string"}],repository:{angles:{patterns:[{begin:"<",captures:{0:{name:"string.other.ruby"}},end:">",patterns:[{include:"#angles"},{include:"#string"}]}]},braces:{patterns:[{begin:"\\{",captures:{0:{name:"string.other.ruby"}},end:"\\}",patterns:[{include:"#braces"},{include:"#string"}]}]},brackets:{patterns:[{begin:"\\[",captures:{0:{name:"string.other.ruby"}},end:"\\]",patterns:[{include:"#brackets"},{include:"#string"}]}]},parens:{patterns:[{begin:"\\(",captures:{0:{name:"string.other.ruby"}},end:"\\)",patterns:[{include:"#parens"},{include:"#string"}]}]},string:{patterns:[{begin:"(?=\\\\|#\\{)",end:"(?!\\G)",name:"string.other.ruby",patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"}]},{match:"\\S\\w*",name:"string.other.ruby"}]}}},{begin:"%x(?:([(\\[{<])|([^\\w\\s]|_))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ruby"}},end:"[)\\]}>]\\2|\\1\\2",endCaptures:{0:{name:"punctuation.definition.string.end.ruby"}},name:"string.interpolated.percent.ruby",patterns:[{begin:"\\G(?<=\\()(?!\\))",end:"(?=\\))",patterns:[{include:"#parens"}]},{begin:"\\G(?<=\\[)(?!\\])",end:"(?=\\])",patterns:[{include:"#brackets"}]},{begin:"\\G(?<=\\{)(?!\\})",end:"(?=\\})",patterns:[{include:"#braces"}]},{begin:"\\G(?<=<)(?!>)",end:"(?=>)",patterns:[{include:"#angles"}]},{include:"#escaped_char"},{include:"#interpolated_ruby"}],repository:{angles:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"<",end:">",patterns:[{include:"#angles"}]}]},braces:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\{",end:"\\}",patterns:[{include:"#braces"}]}]},brackets:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\[",end:"\\]",patterns:[{include:"#brackets"}]}]},parens:{patterns:[{include:"#escaped_char"},{include:"#interpolated_ruby"},{begin:"\\(",end:"\\)",patterns:[{include:"#parens"}]}]}}}]},regex_sub:{patterns:[{include:"#interpolated_ruby"},{include:"#escaped_char"},{captures:{1:{name:"punctuation.definition.quantifier.begin.ruby"},3:{name:"punctuation.definition.quantifier.end.ruby"}},match:"(\\{)\\d+(,\\d+)?(\\})",name:"keyword.operator.quantifier.ruby"},{begin:"\\[\\^?",beginCaptures:{0:{name:"punctuation.definition.character-class.begin.ruby"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.character-class.end.ruby"}},name:"constant.other.character-class.set.ruby",patterns:[{include:"#escaped_char"}]},{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.definition.comment.begin.ruby"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.comment.end.ruby"}},name:"comment.line.number-sign.ruby",patterns:[{include:"#escaped_char"}]},{begin:"\\(",captures:{0:{name:"punctuation.definition.group.ruby"}},end:"\\)",name:"meta.group.regexp.ruby",patterns:[{include:"#regex_sub"}]},{begin:"(?<=^|\\s)(#)\\s(?=[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$)",beginCaptures:{1:{name:"punctuation.definition.comment.ruby"}},comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",end:"$\\n?",name:"comment.line.number-sign.ruby"}]}},scopeName:"source.ruby",embeddedLangs:["html","xml","sql","css","c","javascript","shellscript","lua"],aliases:["rb"]});var _=[...e,...n,...t,...a,...r,...i,...s,...c,u];export{_ as default}; diff --git a/assets/chunks/rust.DGxQkqYo.js b/assets/chunks/rust.DGxQkqYo.js new file mode 100644 index 000000000..a3494830c --- /dev/null +++ b/assets/chunks/rust.DGxQkqYo.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Rust",name:"rust",patterns:[{begin:"(<)(\\[)",beginCaptures:{1:{name:"punctuation.brackets.angle.rust"},2:{name:"punctuation.brackets.square.rust"}},comment:"boxed slice literal",end:">",endCaptures:{0:{name:"punctuation.brackets.angle.rust"}},patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#gtypes"},{include:"#lvariables"},{include:"#lifetimes"},{include:"#punctuation"},{include:"#types"}]},{captures:{1:{name:"keyword.operator.macro.dollar.rust"},3:{name:"keyword.other.crate.rust"},4:{name:"entity.name.type.metavariable.rust"},6:{name:"keyword.operator.key-value.rust"},7:{name:"variable.other.metavariable.specifier.rust"}},comment:"macro type metavariables",match:"(\\$)((crate)|([A-Z][A-Za-z0-9_]*))((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?",name:"meta.macro.metavariable.type.rust",patterns:[{include:"#keywords"}]},{captures:{1:{name:"keyword.operator.macro.dollar.rust"},2:{name:"variable.other.metavariable.name.rust"},4:{name:"keyword.operator.key-value.rust"},5:{name:"variable.other.metavariable.specifier.rust"}},comment:"macro metavariables",match:"(\\$)([a-z][A-Za-z0-9_]*)((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?",name:"meta.macro.metavariable.rust",patterns:[{include:"#keywords"}]},{captures:{1:{name:"entity.name.function.macro.rules.rust"},3:{name:"entity.name.function.macro.rust"},4:{name:"entity.name.type.macro.rust"},5:{name:"punctuation.brackets.curly.rust"}},comment:"macro rules",match:"\\b(macro_rules!)\\s+(([a-z0-9_]+)|([A-Z][a-z0-9_]*))\\s+(\\{)",name:"meta.macro.rules.rust"},{captures:{1:{name:"storage.type.rust"},2:{name:"entity.name.module.rust"}},comment:"modules",match:"(mod)\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)"},{begin:"\\b(extern)\\s+(crate)",beginCaptures:{1:{name:"storage.type.rust"},2:{name:"keyword.other.crate.rust"}},comment:"external crate imports",end:";",endCaptures:{0:{name:"punctuation.semi.rust"}},name:"meta.import.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#keywords"},{include:"#punctuation"}]},{begin:"\\b(use)\\s",beginCaptures:{1:{name:"keyword.other.rust"}},comment:"use statements",end:";",endCaptures:{0:{name:"punctuation.semi.rust"}},name:"meta.use.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#keywords"},{include:"#namespaces"},{include:"#punctuation"},{include:"#types"},{include:"#lvariables"}]},{include:"#block-comments"},{include:"#comments"},{include:"#attributes"},{include:"#lvariables"},{include:"#constants"},{include:"#gtypes"},{include:"#functions"},{include:"#types"},{include:"#keywords"},{include:"#lifetimes"},{include:"#macros"},{include:"#namespaces"},{include:"#punctuation"},{include:"#strings"},{include:"#variables"}],repository:{attributes:{begin:"(#)(\\!?)(\\[)",beginCaptures:{1:{name:"punctuation.definition.attribute.rust"},3:{name:"punctuation.brackets.attribute.rust"}},comment:"attributes",end:"\\]",endCaptures:{0:{name:"punctuation.brackets.attribute.rust"}},name:"meta.attribute.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#keywords"},{include:"#lifetimes"},{include:"#punctuation"},{include:"#strings"},{include:"#gtypes"},{include:"#types"}]},"block-comments":{patterns:[{comment:"empty block comments",match:"/\\*\\*/",name:"comment.block.rust"},{begin:"/\\*\\*",comment:"block documentation comments",end:"\\*/",name:"comment.block.documentation.rust",patterns:[{include:"#block-comments"}]},{begin:"/\\*(?!\\*)",comment:"block comments",end:"\\*/",name:"comment.block.rust",patterns:[{include:"#block-comments"}]}]},comments:{patterns:[{captures:{1:{name:"punctuation.definition.comment.rust"}},comment:"documentation comments",match:"(///).*$",name:"comment.line.documentation.rust"},{captures:{1:{name:"punctuation.definition.comment.rust"}},comment:"line comments",match:"(//).*$",name:"comment.line.double-slash.rust"}]},constants:{patterns:[{comment:"ALL CAPS constants",match:"\\b[A-Z]{2}[A-Z0-9_]*\\b",name:"constant.other.caps.rust"},{captures:{1:{name:"storage.type.rust"},2:{name:"constant.other.caps.rust"}},comment:"constant declarations",match:"\\b(const)\\s+([A-Z][A-Za-z0-9_]*)\\b"},{captures:{1:{name:"punctuation.separator.dot.decimal.rust"},2:{name:"keyword.operator.exponent.rust"},3:{name:"keyword.operator.exponent.sign.rust"},4:{name:"constant.numeric.decimal.exponent.mantissa.rust"},5:{name:"entity.name.type.numeric.rust"}},comment:"decimal integers and floats",match:"\\b\\d[\\d_]*(\\.?)[\\d_]*(?:(E|e)([+-]?)([\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",name:"constant.numeric.decimal.rust"},{captures:{1:{name:"entity.name.type.numeric.rust"}},comment:"hexadecimal integers",match:"\\b0x[\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",name:"constant.numeric.hex.rust"},{captures:{1:{name:"entity.name.type.numeric.rust"}},comment:"octal integers",match:"\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",name:"constant.numeric.oct.rust"},{captures:{1:{name:"entity.name.type.numeric.rust"}},comment:"binary integers",match:"\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",name:"constant.numeric.bin.rust"},{comment:"booleans",match:"\\b(true|false)\\b",name:"constant.language.bool.rust"}]},escapes:{captures:{1:{name:"constant.character.escape.backslash.rust"},2:{name:"constant.character.escape.bit.rust"},3:{name:"constant.character.escape.unicode.rust"},4:{name:"constant.character.escape.unicode.punctuation.rust"},5:{name:"constant.character.escape.unicode.punctuation.rust"}},comment:"escapes: ASCII, byte, Unicode, quote, regex",match:"(\\\\)(?:(?:(x[0-7][\\da-fA-F])|(u(\\{)[\\da-fA-F]{4,6}(\\}))|.))",name:"constant.character.escape.rust"},functions:{patterns:[{captures:{1:{name:"keyword.other.rust"},2:{name:"punctuation.brackets.round.rust"}},comment:"pub as a function",match:"\\b(pub)(\\()"},{begin:"\\b(fn)\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\()|(<))",beginCaptures:{1:{name:"keyword.other.fn.rust"},2:{name:"entity.name.function.rust"},4:{name:"punctuation.brackets.round.rust"},5:{name:"punctuation.brackets.angle.rust"}},comment:"function definition",end:"\\{|;",endCaptures:{0:{name:"punctuation.brackets.curly.rust"}},name:"meta.function.definition.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#keywords"},{include:"#lvariables"},{include:"#constants"},{include:"#gtypes"},{include:"#functions"},{include:"#lifetimes"},{include:"#macros"},{include:"#namespaces"},{include:"#punctuation"},{include:"#strings"},{include:"#types"},{include:"#variables"}]},{begin:"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\()",beginCaptures:{1:{name:"entity.name.function.rust"},2:{name:"punctuation.brackets.round.rust"}},comment:"function/method calls, chaining",end:"\\)",endCaptures:{0:{name:"punctuation.brackets.round.rust"}},name:"meta.function.call.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#attributes"},{include:"#keywords"},{include:"#lvariables"},{include:"#constants"},{include:"#gtypes"},{include:"#functions"},{include:"#lifetimes"},{include:"#macros"},{include:"#namespaces"},{include:"#punctuation"},{include:"#strings"},{include:"#types"},{include:"#variables"}]},{begin:"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::<.*>\\()",beginCaptures:{1:{name:"entity.name.function.rust"}},comment:"function/method calls with turbofish",end:"\\)",endCaptures:{0:{name:"punctuation.brackets.round.rust"}},name:"meta.function.call.rust",patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#attributes"},{include:"#keywords"},{include:"#lvariables"},{include:"#constants"},{include:"#gtypes"},{include:"#functions"},{include:"#lifetimes"},{include:"#macros"},{include:"#namespaces"},{include:"#punctuation"},{include:"#strings"},{include:"#types"},{include:"#variables"}]}]},gtypes:{patterns:[{comment:"option types",match:"\\b(Some|None)\\b",name:"entity.name.type.option.rust"},{comment:"result types",match:"\\b(Ok|Err)\\b",name:"entity.name.type.result.rust"}]},interpolations:{captures:{1:{name:"punctuation.definition.interpolation.rust"},2:{name:"punctuation.definition.interpolation.rust"}},comment:"curly brace interpolations",match:'({)[^"{}]*(})',name:"meta.interpolation.rust"},keywords:{patterns:[{comment:"control flow keywords",match:"\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\b",name:"keyword.control.rust"},{comment:"storage keywords",match:"\\b(extern|let|macro|mod)\\b",name:"keyword.other.rust storage.type.rust"},{comment:"const keyword",match:"\\b(const)\\b",name:"storage.modifier.rust"},{comment:"type keyword",match:"\\b(type)\\b",name:"keyword.declaration.type.rust storage.type.rust"},{comment:"enum keyword",match:"\\b(enum)\\b",name:"keyword.declaration.enum.rust storage.type.rust"},{comment:"trait keyword",match:"\\b(trait)\\b",name:"keyword.declaration.trait.rust storage.type.rust"},{comment:"struct keyword",match:"\\b(struct)\\b",name:"keyword.declaration.struct.rust storage.type.rust"},{comment:"storage modifiers",match:"\\b(abstract|static)\\b",name:"storage.modifier.rust"},{comment:"other keywords",match:"\\b(as|async|become|box|dyn|move|final|gen|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\b",name:"keyword.other.rust"},{comment:"fn",match:"\\bfn\\b",name:"keyword.other.fn.rust"},{comment:"crate",match:"\\bcrate\\b",name:"keyword.other.crate.rust"},{comment:"mut",match:"\\bmut\\b",name:"storage.modifier.mut.rust"},{comment:"logical operators",match:"(\\^|\\||\\|\\||&&|<<|>>|!)(?!=)",name:"keyword.operator.logical.rust"},{comment:"logical AND, borrow references",match:"&(?![&=])",name:"keyword.operator.borrow.and.rust"},{comment:"assignment operators",match:"(\\+=|-=|\\*=|/=|%=|\\^=|&=|\\|=|<<=|>>=)",name:"keyword.operator.assignment.rust"},{comment:"single equal",match:"(?<![<>])=(?!=|>)",name:"keyword.operator.assignment.equal.rust"},{comment:"comparison operators",match:"(=(=)?(?!>)|!=|<=|(?<!=)>=)",name:"keyword.operator.comparison.rust"},{comment:"math operators",match:"(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))",name:"keyword.operator.math.rust"},{captures:{1:{name:"punctuation.brackets.round.rust"},2:{name:"punctuation.brackets.square.rust"},3:{name:"punctuation.brackets.curly.rust"},4:{name:"keyword.operator.comparison.rust"},5:{name:"punctuation.brackets.round.rust"},6:{name:"punctuation.brackets.square.rust"},7:{name:"punctuation.brackets.curly.rust"}},comment:"less than, greater than (special case)",match:"(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([<>])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))"},{comment:"namespace operator",match:"::",name:"keyword.operator.namespace.rust"},{captures:{1:{name:"keyword.operator.dereference.rust"}},comment:"dereference asterisk",match:"(\\*)(?=\\w+)"},{comment:"subpattern binding",match:"@",name:"keyword.operator.subpattern.rust"},{comment:"dot access",match:"\\.(?!\\.)",name:"keyword.operator.access.dot.rust"},{comment:"ranges, range patterns",match:"\\.{2}(=|\\.)?",name:"keyword.operator.range.rust"},{comment:"colon",match:":(?!:)",name:"keyword.operator.key-value.rust"},{comment:"dashrocket, skinny arrow",match:"->",name:"keyword.operator.arrow.skinny.rust"},{comment:"hashrocket, fat arrow",match:"=>",name:"keyword.operator.arrow.fat.rust"},{comment:"dollar macros",match:"\\$",name:"keyword.operator.macro.dollar.rust"},{comment:"question mark operator, questionably sized, macro kleene matcher",match:"\\?",name:"keyword.operator.question.rust"}]},lifetimes:{patterns:[{captures:{1:{name:"punctuation.definition.lifetime.rust"},2:{name:"entity.name.type.lifetime.rust"}},comment:"named lifetime parameters",match:"(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b"},{captures:{1:{name:"keyword.operator.borrow.rust"},2:{name:"punctuation.definition.lifetime.rust"},3:{name:"entity.name.type.lifetime.rust"}},comment:"borrowing references to named lifetimes",match:"(\\&)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b"}]},lvariables:{patterns:[{comment:"self",match:"\\b[Ss]elf\\b",name:"variable.language.self.rust"},{comment:"super",match:"\\bsuper\\b",name:"variable.language.super.rust"}]},macros:{patterns:[{captures:{2:{name:"entity.name.function.macro.rust"},3:{name:"entity.name.type.macro.rust"}},comment:"macros",match:"(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))",name:"meta.macro.rust"}]},namespaces:{patterns:[{captures:{1:{name:"entity.name.namespace.rust"},2:{name:"keyword.operator.namespace.rust"}},comment:"namespace (non-type, non-function path segment)",match:"(?<![A-Za-z0-9_])([A-Za-z0-9_]+)((?<!super|self)::)"}]},punctuation:{patterns:[{comment:"comma",match:",",name:"punctuation.comma.rust"},{comment:"curly braces",match:"[{}]",name:"punctuation.brackets.curly.rust"},{comment:"parentheses, round brackets",match:"[()]",name:"punctuation.brackets.round.rust"},{comment:"semicolon",match:";",name:"punctuation.semi.rust"},{comment:"square brackets",match:"[\\[\\]]",name:"punctuation.brackets.square.rust"},{comment:"angle brackets",match:"(?<!=)[<>]",name:"punctuation.brackets.angle.rust"}]},strings:{patterns:[{begin:'(b?)(")',beginCaptures:{1:{name:"string.quoted.byte.raw.rust"},2:{name:"punctuation.definition.string.rust"}},comment:"double-quoted strings and byte strings",end:'"',endCaptures:{0:{name:"punctuation.definition.string.rust"}},name:"string.quoted.double.rust",patterns:[{include:"#escapes"},{include:"#interpolations"}]},{begin:'(b?r)(#*)(")',beginCaptures:{1:{name:"string.quoted.byte.raw.rust"},2:{name:"punctuation.definition.string.raw.rust"},3:{name:"punctuation.definition.string.rust"}},comment:"double-quoted raw strings and raw byte strings",end:'(")(\\2)',endCaptures:{1:{name:"punctuation.definition.string.rust"},2:{name:"punctuation.definition.string.raw.rust"}},name:"string.quoted.double.rust"},{begin:"(b)?(')",beginCaptures:{1:{name:"string.quoted.byte.raw.rust"},2:{name:"punctuation.definition.char.rust"}},comment:"characters and bytes",end:"'",endCaptures:{0:{name:"punctuation.definition.char.rust"}},name:"string.quoted.single.char.rust",patterns:[{include:"#escapes"}]}]},types:{patterns:[{captures:{1:{name:"entity.name.type.numeric.rust"}},comment:"numeric types",match:"(?<![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\b"},{begin:"\\b(_?[A-Z][A-Za-z0-9_]*)(<)",beginCaptures:{1:{name:"entity.name.type.rust"},2:{name:"punctuation.brackets.angle.rust"}},comment:"parameterized types",end:">",endCaptures:{0:{name:"punctuation.brackets.angle.rust"}},patterns:[{include:"#block-comments"},{include:"#comments"},{include:"#keywords"},{include:"#lvariables"},{include:"#lifetimes"},{include:"#punctuation"},{include:"#types"},{include:"#variables"}]},{comment:"primitive types",match:"\\b(bool|char|str)\\b",name:"entity.name.type.primitive.rust"},{captures:{1:{name:"keyword.declaration.trait.rust storage.type.rust"},2:{name:"entity.name.type.trait.rust"}},comment:"trait declarations",match:"\\b(trait)\\s+(_?[A-Z][A-Za-z0-9_]*)\\b"},{captures:{1:{name:"keyword.declaration.struct.rust storage.type.rust"},2:{name:"entity.name.type.struct.rust"}},comment:"struct declarations",match:"\\b(struct)\\s+(_?[A-Z][A-Za-z0-9_]*)\\b"},{captures:{1:{name:"keyword.declaration.enum.rust storage.type.rust"},2:{name:"entity.name.type.enum.rust"}},comment:"enum declarations",match:"\\b(enum)\\s+(_?[A-Z][A-Za-z0-9_]*)\\b"},{captures:{1:{name:"keyword.declaration.type.rust storage.type.rust"},2:{name:"entity.name.type.declaration.rust"}},comment:"type declarations",match:"\\b(type)\\s+(_?[A-Z][A-Za-z0-9_]*)\\b"},{comment:"types",match:"\\b_?[A-Z][A-Za-z0-9_]*\\b(?!!)",name:"entity.name.type.rust"}]},variables:{patterns:[{comment:"variables",match:"\\b(?<!(?<!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b",name:"variable.other.rust"}]}},scopeName:"source.rust",aliases:["rs"]});var t=[e];export{t as default}; diff --git a/assets/chunks/sas.2Dj3KWk-.js b/assets/chunks/sas.2Dj3KWk-.js new file mode 100644 index 000000000..1bd1a6d88 --- /dev/null +++ b/assets/chunks/sas.2Dj3KWk-.js @@ -0,0 +1 @@ +import e from"./sql.DbK06e1c.js";const t=Object.freeze({displayName:"SAS",fileTypes:["sas"],foldingStartMarker:"(?i:(proc|data|%macro).*;$)",foldingStopMarker:"(?i:(run|quit|%mend)\\s?);",name:"sas",patterns:[{include:"#starComment"},{include:"#blockComment"},{include:"#macro"},{include:"#constant"},{include:"#quote"},{include:"#operator"},{begin:"\\b(?i:(data))\\s+",beginCaptures:{1:{name:"keyword.other.sas"}},comment:"Begins a DATA step and provides names for any output SAS data sets, views, or programs.",end:"(;)",patterns:[{include:"#blockComment"},{include:"#dataSet"},{captures:{1:{name:"keyword.other.sas"},2:{name:"keyword.other.sas"}},match:"(?i:(?:(stack|pgm|view|source)\\s?=\\s?)|(debug|nesting|nolist))"}]},{begin:"\\b(?i:(set|update|modify|merge))\\s+",beginCaptures:{1:{name:"support.function.sas"},2:{name:"entity.name.class.sas"},3:{name:"entity.name.class.sas"}},comment:"DATA set File-Handling Statements for DATA step",end:"(;)",patterns:[{include:"#blockComment"},{include:"#dataSet"}]},{match:"(?i:\\b(if|while|until|for|do|end|then|else|run|quit|cancel|options)\\b)",name:"keyword.control.sas"},{captures:{1:{name:"support.class.sas"},3:{name:"entity.name.function.sas"}},match:"(?i:(%(bquote|do|else|end|eval|global|goto|if|inc|include|index|input|length|let|list|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qscan|qsysfunc|quote|run|scan|str|substr|syscall|sysevalf|sysexec|sysfunc|sysrc|then|to|unquote|upcase|until|while|window)\\b))\\s*(\\w*)",name:"keyword.other.sas"},{begin:"(?i:\\b(proc\\s*(sql))\\b)",beginCaptures:{1:{name:"support.function.sas"},2:{name:"support.class.sas"}},comment:"Looks like for this to work there must be a *name* as well as the patterns/include bit.",end:"(?i:\\b(quit)\\s*;)",endCaptures:{1:{name:"keyword.control.sas"}},name:"meta.sql.sas",patterns:[{include:"#starComment"},{include:"#blockComment"},{include:"source.sql"}]},{match:"(?i:\\b(by|label|format)\\b)",name:"keyword.datastep.sas"},{captures:{1:{name:"support.function.sas"},2:{name:"support.class.sas"}},match:"(?i:\\b(proc (\\w+))\\b)",name:"meta.function-call.sas"},{match:"(?i:\\b(_n_|_error_)\\b)",name:"variable.language.sas"},{captures:{1:{name:"support.class.sas"}},match:"\\b(?i:(_all_|_character_|_cmd_|_freq_|_i_|_infile_|_last_|_msg_|_null_|_numeric_|_temporary_|_type_|abort|abs|addr|adjrsq|airy|alpha|alter|altlog|altprint|and|arcos|array|arsin|as|atan|attrc|attrib|attrn|authserver|autoexec|awscontrol|awsdef|awsmenu|awsmenumerge|awstitle|backward|band|base|betainv|between|blocksize|blshift|bnot|bor|brshift|bufno|bufsize|bxor|by|byerr|byline|byte|calculated|call|cards|cards4|case|catcache|cbufno|cdf|ceil|center|cexist|change|chisq|cinv|class|cleanup|close|cnonct|cntllev|coalesce|codegen|col|collate|collin|column|comamid|comaux1|comaux2|comdef|compbl|compound|compress|config|continue|convert|cos|cosh|cpuid|create|cross|crosstab|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|datalines|datalines4|date|datejul|datepart|datetime|day|dbcslang|dbcstype|dclose|ddm|delete|delimiter|depdb|depdbsl|depsl|depsyd|deptab|dequote|descending|descript|design=|device|dflang|dhms|dif|digamma|dim|dinfo|display|distinct|dkricond|dkrocond|dlm|dnum|do|dopen|doptname|doptnum|dread|drop|dropnote|dsname|dsnferr|echo|else|emaildlg|emailid|emailpw|emailserver|emailsys|encrypt|end|endsas|engine|eof|eov|erf|erfc|error|errorcheck|errors|exist|exp|fappend|fclose|fcol|fdelete|feedback|fetch|fetchobs|fexist|fget|file|fileclose|fileexist|filefmt|filename|fileref|filevar|finfo|finv|fipname|fipnamel|fipstate|first|firstobs|floor|fmterr|fmtsearch|fnonct|fnote|font|fontalias|footnote[1-9]?|fopen|foptname|foptnum|force|formatted|formchar|formdelim|formdlim|forward|fpoint|fpos|fput|fread|frewind|frlen|from|fsep|full|fullstimer|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|go|goto|group|gwindow|hbar|hbound|helpenv|helploc|hms|honorappearance|hosthelp|hostprint|hour|hpct|html|hvar|ibessel|ibr|id|if|index|indexc|indexw|infile|informat|initcmd|initstmt|inner|input|inputc|inputn|inr|insert|int|intck|intnx|into|intrr|invaliddata|irr|is|jbessel|join|juldate|keep|kentb|kurtosis|label|lag|last|lbound|leave|left|length|levels|lgamma|lib|libname|library|libref|line|linesize|link|list|log|log10|log2|logpdf|logpmf|logsdf|lostcard|lowcase|lrecl|ls|macro|macrogen|maps|mautosource|max|maxdec|maxr|mdy|mean|measures|median|memtype|merge|merror|min|minute|missing|missover|mlogic|mod|mode|model|modify|month|mopen|mort|mprint|mrecall|msglevel|msymtabmax|mvarsize|myy|n|nest|netpv|new|news|nmiss|no|nobatch|nobs|nocaps|nocardimage|nocenter|nocharcode|nocmdmac|nocol|nocum|nodate|nodbcs|nodetails|nodmr|nodms|nodmsbatch|nodup|nodupkey|noduplicates|noechoauto|noequals|noerrorabend|noexitwindows|nofullstimer|noicon|noimplmac|noint|nolist|noloadlist|nomiss|nomlogic|nomprint|nomrecall|nomsgcase|nomstored|nomultenvappl|nonotes|nonumber|noobs|noovp|nopad|nopercent|noprint|noprintinit|normal|norow|norsasuser|nosetinit|nosource|nosource2|nosplash|nosymbolgen|note|notes|notitle|notitles|notsorted|noverbose|noxsync|noxwait|npv|null|number|numkeys|nummousekeys|nway|obs|ods|on|open|option|order|ordinal|otherwise|out|outer|outp=|output|over|ovp|p(1|5|10|25|50|75|90|95|99)|pad|pad2|page|pageno|pagesize|paired|parm|parmcards|path|pathdll|pathname|pdf|peek|peekc|pfkey|pmf|point|poisson|poke|position|printer|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probsig|probt|procleave|project|prt|propcase|prxmatch|prxparse|prxchange|prxposn|ps|put|putc|putn|pw|pwreq|qtr|quote|r|ranbin|rancau|ranexp|rangam|range|ranks|rannor|ranpoi|rantbl|rantri|ranuni|read|recfm|register|regr|remote|remove|rename|repeat|replace|resolve|retain|return|reuse|reverse|rewind|right|round|rsquare|rtf|rtrace|rtraceloc|s|s2|samploc|sasautos|sascontrol|sasfrscr|sashelp|sasmsg|sasmstore|sasscript|sasuser|saving|scan|sdf|second|select|selection|separated|seq|serror|set|setcomm|setot|sign|simple|sin|sinh|siteinfo|skewness|skip|sle|sls|sortedby|sortpgm|sortseq|sortsize|soundex|source2|spedis|splashlocation|split|spool|sqrt|start|std|stderr|stdin|stfips|stimer|stname|stnamel|stop|stopover|strip|subgroup|subpopn|substr|sum|sumwgt|symbol|symbolgen|symget|symput|sysget|sysin|sysleave|sysmsg|sysparm|sysprint|sysprintfont|sysprod|sysrc|system|t|table|tables|tan|tanh|tapeclose|tbufsize|terminal|test|then|time|timepart|tinv|title[1-9]?|tnonct|to|today|tol|tooldef|totper|transformout|translate|trantab|tranwrd|trigamma|trim|trimn|trunc|truncover|type|unformatted|uniform|union|until|upcase|update|user|usericon|uss|validate|value|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vnferr|vtype|vtypex|weekday|weight|when|where|while|wincharset|window|work|workinit|workterm|write|wsum|wsumx|x|xsync|xwait|year|yearcutoff|yes|yyq|zipfips|zipname|zipnamel|zipstate))\\b",name:"support.function.sas"}],repository:{blockComment:{patterns:[{begin:"\\/\\*",end:"\\*\\/",name:"comment.block.slashstar.sas"}]},constant:{patterns:[{comment:"numeric constant",match:"(?<![&\\}])\\b[0-9]*\\.?[0-9]+([eEdD][-+]?[0-9]+)?\\b",name:"constant.numeric.sas"},{comment:"single quote numeric-type constant",match:"(')([^']+)(')(dt|[dt])",name:"constant.numeric.quote.single.sas"},{comment:"double quote numeric-type constant",match:'(")([^"]+)(")(dt|[dt])',name:"constant.numeric.quote.double.sas"}]},dataSet:{patterns:[{begin:"((\\w+)\\.)?(\\w+)\\s?\\(",beginCaptures:{2:{name:"entity.name.class.libref.sas"},3:{name:"entity.name.class.dsname.sas"}},comment:"data set with options",end:"\\)",patterns:[{include:"#dataSetOptions"},{include:"#blockComment"},{include:"#macro"},{include:"#constant"},{include:"#quote"},{include:"#operator"}]},{captures:{2:{name:"entity.name.class.libref.sas"},3:{name:"entity.name.class.dsname.sas"}},comment:"data set without options",match:"\\b((\\w+)\\.)?(\\w+)\\b"}]},dataSetOptions:{patterns:[{match:"(?<=\\s|\\(|\\))(?i:ALTER|BUFNO|BUFSIZE|CNTLLEV|COMPRESS|DLDMGACTION|ENCRYPT|ENCRYPTKEY|EXTENDOBSCOUNTER|GENMAX|GENNUM|INDEX|LABEL|OBSBUF|OUTREP|PW|PWREQ|READ|REPEMPTY|REPLACE|REUSE|ROLE|SORTEDBY|SPILL|TOBSNO|TYPE|WRITE|FILECLOSE|FIRSTOBS|IN|OBS|POINTOBS|WHERE|WHEREUP|IDXNAME|IDXWHERE|DROP|KEEP|RENAME)\\s?=",name:"keyword.other.sas"}]},macro:{patterns:[{match:"(&+(?i:[a-z_]([a-z0-9_]+)?)(\\.+)?)\\b",name:"variable.other.macro.sas"}]},operator:{patterns:[{match:"([\\+\\-\\*\\^\\/])",name:"keyword.operator.arithmetic.sas"},{match:"\\b(?i:(eq|ne|gt|lt|ge|le|in|not|&|and|or|min|max))\\b",name:"keyword.operator.comparison.sas"},{match:"([¬<>^~]?=(:)?|>|<|\\||!|¦|¬|^|~|<>|><|\\|\\|)",name:"keyword.operator.sas"}]},quote:{patterns:[{begin:"(?<!%)(')",comment:"single quoted string block",end:"(')([bx])?",name:"string.quoted.single.sas"},{begin:'(")',comment:"double quoted string block",end:'(")([bx])?',name:"string.quoted.double.sas"}]},starComment:{patterns:[{include:"#blockcomment"},{begin:"(?<=;)[\\s%]*\\*",end:";",name:"comment.line.inline.star.sas"},{begin:"^[\\s%]*\\*",end:";",name:"comment.line.start.sas"}]}},scopeName:"source.sas",embeddedLangs:["sql"]});var a=[...e,t];export{a as default}; diff --git a/assets/chunks/sass.CMDmr8et.js b/assets/chunks/sass.CMDmr8et.js new file mode 100644 index 000000000..5c2192003 --- /dev/null +++ b/assets/chunks/sass.CMDmr8et.js @@ -0,0 +1,2 @@ +const e=Object.freeze({displayName:"Sass",fileTypes:["sass"],foldingStartMarker:"/\\*|^#|^\\*|^\\b|*#?region|^\\.",foldingStopMarker:"\\*/|*#?endregion|^\\s*$",name:"sass",patterns:[{begin:"^(\\s*)(/\\*)",end:"(\\*/)|^(?!\\s\\1)",name:"comment.block.sass",patterns:[{include:"#comment-tag"},{include:"#comment-param"}]},{match:"^[\\t ]*/?//[\\t ]*[SRI][\\t ]*$",name:"keyword.other.sass.formatter.action"},{begin:"^[\\t ]*//[\\t ]*(import)[\\t ]*(css-variables)[\\t ]*(from)",captures:{1:{name:"keyword.control"},2:{name:"variable"},3:{name:"keyword.control"}},end:"$\\n?",name:"comment.import.css.variables",patterns:[{include:"#import-quotes"}]},{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#curly-brackets"},{include:"#placeholder-selector"},{begin:"\\$[a-zA-Z0-9_-]+(?=:)",captures:{0:{name:"variable.other.name"}},end:"$\\n?|(?=\\)\\s\\)|\\)\\n)",name:"sass.script.maps",patterns:[{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#variable"},{include:"#rgb-value"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#comma"},{include:"#function"},{include:"#function-content"},{include:"#operator"},{include:"#reserved-words"},{include:"#parent-selector"},{include:"#property-value"},{include:"#semicolon"},{include:"#dotdotdot"}]},{include:"#variable-root"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#comma"},{include:"#semicolon"},{include:"#dotdotdot"},{begin:"@include|\\+(?!\\W|\\d)",captures:{0:{name:"keyword.control.at-rule.css.sass"}},end:"(?=\\n|\\()",name:"support.function.name.sass.library"},{begin:"^(@use)",captures:{0:{name:"keyword.control.at-rule.css.sass.use"}},end:"(?=\\n)",name:"sass.use",patterns:[{match:"as|with",name:"support.type.css.sass"},{include:"#numeric"},{include:"#unit"},{include:"#variable-root"},{include:"#rgb-value"},{include:"#comma"},{include:"#parenthesis-open"},{include:"#parenthesis-close"},{include:"#colon"},{include:"#import-quotes"}]},{begin:"^@import(.*?)( as.*)?$",captures:{1:{name:"constant.character.css.sass"},2:{name:"invalid"}},end:"(?=\\n)",name:"keyword.control.at-rule.use"},{begin:"@mixin|^[\\t ]*=|@function",captures:{0:{name:"keyword.control.at-rule.css.sass"}},end:"$\\n?|(?=\\()",name:"support.function.name.sass",patterns:[{match:"[\\w-]+",name:"entity.name.function"}]},{begin:"@",end:"$\\n?|\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\s|,))",name:"keyword.control.at-rule.css.sass"},{begin:"(?<!\\-|\\()\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|slot)\\b(?!-|\\)|:\\s)|&",end:"$\\n?|(?=\\s|,|\\(|\\)|\\.|\\#|\\[|>|-|_)",name:"entity.name.tag.css.sass.symbol",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"#",end:"$\\n?|(?=\\s|,|\\(|\\)|\\.|\\[|>)",name:"entity.other.attribute-name.id.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\.|(?<=&)(-|_)",end:"$\\n?|(?=\\s|,|\\(|\\)|\\[|>)",name:"entity.other.attribute-name.class.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\[",end:"\\]",name:"entity.other.attribute-selector.sass",patterns:[{include:"#double-quoted"},{include:"#single-quoted"},{match:"\\^|\\$|\\*|~",name:"keyword.other.regex.sass"}]},{match:`^((?<=\\]|\\)|not\\(|\\*|>|>\\s)| +*):[a-z:-]+|(::|:-)[a-z:-]+`,name:"entity.other.attribute-name.pseudo-class.css.sass"},{include:"#module"},{match:"[\\w-]*\\(",name:"entity.name.function"},{match:"\\)",name:"entity.name.function.close"},{begin:":",end:"$\\n?|(?=\\s\\(|and\\(|\\),)",name:"meta.property-list.css.sass.prop",patterns:[{match:"(?<=:)[a-z-]+\\s",name:"support.type.property-name.css.sass.prop.name"},{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#curly-brackets"},{include:"#variable"},{include:"#rgb-value"},{include:"#numeric"},{include:"#unit"},{include:"#module"},{match:"--.+?(?=\\))",name:"variable.css"},{match:"[\\w-]*\\(",name:"entity.name.function"},{match:"\\)",name:"entity.name.function.close"},{include:"#flag"},{include:"#comma"},{include:"#semicolon"},{include:"#function"},{include:"#function-content"},{include:"#operator"},{include:"#parent-selector"},{include:"#property-value"}]},{include:"#rgb-value"},{include:"#function"},{include:"#function-content"},{begin:"(?<=})(?!\\n|\\(|\\)|[a-zA-Z0-9_-]+:)",end:"\\s|(?=,|\\.|\\[|\\)|\\n)",name:"entity.name.tag.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{include:"#operator"},{match:"[a-z-]+((?=:|#{))",name:"support.type.property-name.css.sass.prop.name"},{include:"#reserved-words"},{include:"#property-value"}],repository:{colon:{match:":",name:"meta.property-list.css.sass.colon"},comma:{match:"\\band\\b|\\bor\\b|,",name:"comment.punctuation.comma.sass"},"comment-param":{match:"\\@(\\w+)",name:"storage.type.class.jsdoc"},"comment-tag":{begin:"(?<={{)",end:"(?=}})",name:"comment.tag.sass"},"curly-brackets":{match:"{|}",name:"invalid"},dotdotdot:{match:"\\.\\.\\.",name:"variable.other"},"double-quoted":{begin:'"',end:'"',name:"string.quoted.double.css.sass",patterns:[{include:"#quoted-interpolation"}]},"double-slash":{begin:"//",end:"$\\n?",name:"comment.line.sass",patterns:[{include:"#comment-tag"}]},flag:{match:"!(important|default|optional|global)",name:"keyword.other.important.css.sass"},function:{match:"(?<=[\\s|\\(|,|:])(?!url|format|attr)[a-zA-Z0-9_-][\\w-]*(?=\\()",name:"support.function.name.sass"},"function-content":{begin:"(?<=url\\(|format\\(|attr\\()",end:".(?=\\))",name:"string.quoted.double.css.sass"},"import-quotes":{match:`["']?\\.{0,2}[\\w/]+["']?`,name:"constant.character.css.sass"},interpolation:{begin:"#{",end:"}",name:"support.function.interpolation.sass",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"},{include:"#comma"},{include:"#double-quoted"},{include:"#single-quoted"}]},module:{captures:{1:{name:"constant.character.module.name"},2:{name:"constant.numeric.module.dot"}},match:"([\\w-]+?)(\\.)",name:"constant.character.module"},numeric:{match:"(-|\\.)?[0-9]+(\\.[0-9]+)?",name:"constant.numeric.css.sass"},operator:{match:"\\+|\\s-\\s|\\s-(?=\\$)|(?<=\\()-(?=\\$)|\\s-(?=\\()|\\*|/|%|=|!|<|>|~",name:"keyword.operator.sass"},"parent-selector":{match:"&",name:"entity.name.tag.css.sass"},"parenthesis-close":{match:"\\)",name:"entity.name.function.parenthesis.close"},"parenthesis-open":{match:"\\(",name:"entity.name.function.parenthesis.open"},"placeholder-selector":{begin:"(?<!\\d)%(?!\\d)",end:"$\\n?|\\s",name:"entity.other.inherited-class.placeholder-selector.css.sass"},"property-value":{match:"[a-zA-Z0-9_-]+",name:"meta.property-value.css.sass support.constant.property-value.css.sass"},"pseudo-class":{match:":[a-z:-]+",name:"entity.other.attribute-name.pseudo-class.css.sass"},"quoted-interpolation":{begin:"#{",end:"}",name:"support.function.interpolation.sass",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"},{include:"#comma"}]},"reserved-words":{match:"\\b(false|from|in|not|null|through|to|true)\\b",name:"support.type.property-name.css.sass"},"rgb-value":{match:"(#)([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",name:"constant.language.color.rgb-value.css.sass"},semicolon:{match:";",name:"invalid"},"single-quoted":{begin:"'",end:"'",name:"string.quoted.single.css.sass",patterns:[{include:"#quoted-interpolation"}]},unit:{match:"(?<=[\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|fr|%)",name:"keyword.control.unit.css.sass"},variable:{match:"\\$[a-zA-Z0-9_-]+",name:"variable.other.value"},"variable-root":{match:"\\$[a-zA-Z0-9_-]+",name:"variable.other.root"}},scopeName:"source.sass"});var n=[e];export{n as default}; diff --git a/assets/chunks/scala.vMsNTMhM.js b/assets/chunks/scala.vMsNTMhM.js new file mode 100644 index 000000000..051b4235b --- /dev/null +++ b/assets/chunks/scala.vMsNTMhM.js @@ -0,0 +1,5 @@ +const a=Object.freeze({displayName:"Scala",fileTypes:["scala"],firstLineMatch:"^#!/.*\\b\\w*scala\\b",foldingStartMarker:"/\\*\\*|\\{\\s*$",foldingStopMarker:"\\*\\*/|^\\s*\\}",name:"scala",patterns:[{include:"#code"}],repository:{backQuotedVariable:{match:"`[^`]+`"},"block-comments":{patterns:[{captures:{0:{name:"punctuation.definition.comment.scala"}},match:"/\\*\\*/",name:"comment.block.empty.scala"},{begin:"^\\s*(/\\*\\*)(?!/)",beginCaptures:{1:{name:"punctuation.definition.comment.scala"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.scala"}},name:"comment.block.documentation.scala",patterns:[{captures:{1:{name:"keyword.other.documentation.scaladoc.scala"},2:{name:"variable.parameter.scala"}},match:"(@param)\\s+(\\S+)"},{captures:{1:{name:"keyword.other.documentation.scaladoc.scala"},2:{name:"entity.name.class"}},match:"(@(?:tparam|throws))\\s+(\\S+)"},{match:"@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\b",name:"keyword.other.documentation.scaladoc.scala"},{captures:{1:{name:"punctuation.definition.documentation.link.scala"},2:{name:"string.other.link.title.markdown"},3:{name:"punctuation.definition.documentation.link.scala"}},match:"(\\[\\[)([^\\]]+)(\\]\\])"},{include:"#block-comments"}]},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.scala"}},end:"\\*/",name:"comment.block.scala",patterns:[{include:"#block-comments"}]}]},"char-literal":{patterns:[{captures:{1:{name:"punctuation.definition.character.begin.scala"},2:{name:"punctuation.definition.character.end.scala"}},match:"(')'(')",name:"string.quoted.other constant.character.literal.scala"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.character.begin.scala"}},end:"'|$",endCaptures:{0:{name:"punctuation.definition.character.end.scala"}},name:"string.quoted.other constant.character.literal.scala",patterns:[{match:`\\\\(?:[btnfr\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})`,name:"constant.character.escape.scala"},{match:"\\\\.",name:"invalid.illegal.unrecognized-character-escape.scala"},{match:"[^']{2,}",name:"invalid.illegal.character-literal-too-long"},{match:"(?<!')[^']",name:"invalid.illegal.character-literal-too-long"}]}]},code:{patterns:[{include:"#using-directive"},{include:"#script-header"},{include:"#storage-modifiers"},{include:"#declarations"},{include:"#inheritance"},{include:"#extension"},{include:"#imports"},{include:"#exports"},{include:"#comments"},{include:"#strings"},{include:"#initialization"},{include:"#xml-literal"},{include:"#keywords"},{include:"#using"},{include:"#constants"},{include:"#singleton-type"},{include:"#inline"},{include:"#scala-quoted-or-symbol"},{include:"#char-literal"},{include:"#empty-parentheses"},{include:"#parameter-list"},{include:"#qualifiedClassName"},{include:"#backQuotedVariable"},{include:"#curly-braces"},{include:"#meta-brackets"},{include:"#meta-bounds"},{include:"#meta-colons"}]},comments:{patterns:[{include:"#block-comments"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.scala"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.scala"}},end:"\\n",name:"comment.line.double-slash.scala"}]}]},constants:{patterns:[{match:"\\b(false|null|true)\\b",name:"constant.language.scala"},{match:"\\b(0[xX][0-9a-fA-F_]*)\\b",name:"constant.numeric.scala"},{match:"\\b(([0-9][0-9_]*(\\.[0-9][0-9_]*)?)([eE](\\+|-)?[0-9][0-9_]*)?|[0-9][0-9_]*)[LlFfDd]?\\b",name:"constant.numeric.scala"},{match:"(\\.[0-9][0-9_]*)([eE](\\+|-)?[0-9][0-9_]*)?[LlFfDd]?\\b",name:"constant.numeric.scala"},{match:"\\b0[bB][01]([01_]*[01])?[Ll]?\\b",name:"constant.numeric.scala"},{match:"\\b(this|super)\\b",name:"variable.language.scala"}]},"curly-braces":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.block.begin.scala"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.scala"}},patterns:[{include:"#code"}]},declarations:{patterns:[{captures:{1:{name:"keyword.declaration.scala"},2:{name:"entity.name.function.declaration"}},match:"\\b(def)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?"},{captures:{1:{name:"keyword.declaration.scala"},2:{name:"entity.name.class.declaration"}},match:"\\b(trait)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?"},{captures:{1:{name:"keyword.declaration.scala"},2:{name:"keyword.declaration.scala"},3:{name:"entity.name.class.declaration"}},match:"\\b(?:(case)\\s+)?(class|object|enum)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?"},{captures:{1:{name:"keyword.declaration.scala"},2:{name:"entity.name.type.declaration"}},match:"(?<!\\.)\\b(type)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?"},{captures:{1:{name:"keyword.declaration.stable.scala"},2:{name:"keyword.declaration.volatile.scala"}},match:"\\b(?:(val)|(var))\\b\\s*(?!//|/\\*)(?=(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)?\\()"},{captures:{1:{name:"keyword.declaration.stable.scala"},2:{name:"variable.stable.declaration.scala"}},match:'\\b(val)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)(?:\\s*,\\s*(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))*)?(?!")'},{captures:{1:{name:"keyword.declaration.volatile.scala"},2:{name:"variable.volatile.declaration.scala"}},match:'\\b(var)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)(?:\\s*,\\s*(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))*)?(?!")'},{captures:{1:{name:"keyword.other.package.scala"},2:{name:"keyword.declaration.scala"},3:{name:"entity.name.class.declaration"}},match:"\\b(package)\\s+(object)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?"},{begin:"\\b(package)\\s+",beginCaptures:{1:{name:"keyword.other.package.scala"}},end:"(?<=[\\n;])",name:"meta.package.scala",patterns:[{include:"#comments"},{match:"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",name:"entity.name.package.scala"},{match:"\\.",name:"punctuation.definition.package"}]},{captures:{1:{name:"keyword.declaration.scala"},2:{name:"entity.name.given.declaration"}},match:"\\b(given)\\b\\s*([_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`)?"}]},"empty-parentheses":{captures:{1:{name:"meta.bracket.scala"}},match:"(\\(\\))",name:"meta.parentheses.scala"},exports:{begin:"\\b(export)\\s+",beginCaptures:{1:{name:"keyword.other.export.scala"}},end:"(?<=[\\n;])",name:"meta.export.scala",patterns:[{include:"#comments"},{match:"\\b(given)\\b",name:"keyword.other.export.given.scala"},{match:"[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?",name:"entity.name.class.export.scala"},{match:"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",name:"entity.name.export.scala"},{match:"\\.",name:"punctuation.definition.export"},{begin:"{",beginCaptures:{0:{name:"meta.bracket.scala"}},end:"}",endCaptures:{0:{name:"meta.bracket.scala"}},name:"meta.export.selector.scala",patterns:[{captures:{1:{name:"keyword.other.export.given.scala"},2:{name:"entity.name.class.export.renamed-from.scala"},3:{name:"entity.name.export.renamed-from.scala"},4:{name:"keyword.other.arrow.scala"},5:{name:"entity.name.class.export.renamed-to.scala"},6:{name:"entity.name.export.renamed-to.scala"}},match:"(?x)(given\\s)?\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*(=>)\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*"},{match:"\\b(given)\\b",name:"keyword.other.export.given.scala"},{captures:{1:{name:"keyword.other.export.given.scala"},2:{name:"entity.name.class.export.scala"},3:{name:"entity.name.export.scala"}},match:"(given\\s+)?(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))"}]}]},extension:{patterns:[{captures:{1:{name:"keyword.declaration.scala"}},match:"^\\s*(extension)\\s+(?=[\\[\\(])"}]},imports:{begin:"\\b(import)\\s+",beginCaptures:{1:{name:"keyword.other.import.scala"}},end:"(?<=[\\n;])",name:"meta.import.scala",patterns:[{include:"#comments"},{match:"\\b(given)\\b",name:"keyword.other.import.given.scala"},{match:"\\s(as)\\s",name:"keyword.other.import.as.scala"},{match:"[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?",name:"entity.name.class.import.scala"},{match:"(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",name:"entity.name.import.scala"},{match:"\\.",name:"punctuation.definition.import"},{begin:"{",beginCaptures:{0:{name:"meta.bracket.scala"}},end:"}",endCaptures:{0:{name:"meta.bracket.scala"}},name:"meta.import.selector.scala",patterns:[{captures:{1:{name:"keyword.other.import.given.scala"},2:{name:"entity.name.class.import.renamed-from.scala"},3:{name:"entity.name.import.renamed-from.scala"},4:{name:"keyword.other.arrow.scala"},5:{name:"entity.name.class.import.renamed-to.scala"},6:{name:"entity.name.import.renamed-to.scala"}},match:"(?x)(given\\s)?\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*(=>)\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*"},{match:"\\b(given)\\b",name:"keyword.other.import.given.scala"},{captures:{1:{name:"keyword.other.import.given.scala"},2:{name:"entity.name.class.import.scala"},3:{name:"entity.name.import.scala"}},match:"(given\\s+)?(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))"}]}]},inheritance:{patterns:[{captures:{1:{name:"keyword.declaration.scala"},2:{name:"entity.name.class"}},match:'\\b(extends|with|derives)\\b\\s*([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?=\\([^\\)]+=>)|(?=(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))|(?="))?'}]},initialization:{captures:{1:{name:"keyword.declaration.scala"}},match:"\\b(new)\\b"},inline:{patterns:[{match:"\\b(inline)(?=\\s+((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)\\s*:)",name:"storage.modifier.other"},{match:"\\b(inline)\\b(?=(?:.(?!\\b(?:val|def|given)\\b))*\\b(if|match)\\b)",name:"keyword.control.flow.scala"}]},keywords:{patterns:[{match:"\\b(return|throw)\\b",name:"keyword.control.flow.jump.scala"},{match:"\\b(classOf|isInstanceOf|asInstanceOf)\\b",name:"support.function.type-of.scala"},{match:"\\b(else|if|then|do|while|for|yield|match|case)\\b",name:"keyword.control.flow.scala"},{match:"^\\s*(end)\\s+(if|while|for|match)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",name:"keyword.control.flow.end.scala"},{match:"^\\s*(end)\\s+(val)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",name:"keyword.declaration.stable.end.scala"},{match:"^\\s*(end)\\s+(var)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",name:"keyword.declaration.volatile.end.scala"},{captures:{1:{name:"keyword.declaration.end.scala"},2:{name:"keyword.declaration.end.scala"},3:{name:"entity.name.type.declaration"}},match:"^\\s*(end)\\s+(?:(new|extension)|([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)"},{match:"\\b(catch|finally|try)\\b",name:"keyword.control.exception.scala"},{match:"^\\s*(end)\\s+(try)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",name:"keyword.control.exception.end.scala"},{captures:{1:{name:"keyword.declaration.end.scala"},2:{name:"entity.name.declaration"}},match:"^\\s*(end)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)"},{match:"(==?|!=|<=|>=|<>|<|>)",name:"keyword.operator.comparison.scala"},{match:"(\\-|\\+|\\*|/(?![/*])|%|~)",name:"keyword.operator.arithmetic.scala"},{match:"(?<![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]|_)(!|&&|\\|\\|)(?![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}])",name:"keyword.operator.logical.scala"},{match:"(<-|←|->|→|=>|⇒|\\?|\\:+|@|\\|)+",name:"keyword.operator.scala"}]},"meta-bounds":{comment:"For themes: Matching view bounds",match:"<%|=:=|<:<|<%<|>:|<:",name:"meta.bounds.scala"},"meta-brackets":{comment:"For themes: Brackets look nice when colored.",patterns:[{comment:"The punctuation.section.*.begin is needed for return snippet in source bundle",match:"\\{",name:"punctuation.section.block.begin.scala"},{comment:"The punctuation.section.*.end is needed for return snippet in source bundle",match:"\\}",name:"punctuation.section.block.end.scala"},{match:"{|}|\\(|\\)|\\[|\\]",name:"meta.bracket.scala"}]},"meta-colons":{comment:"For themes: Matching type colons",patterns:[{match:"(?<!:):(?!:)",name:"meta.colon.scala"}]},"parameter-list":{patterns:[{captures:{1:{name:"variable.parameter.scala"},2:{name:"meta.colon.scala"}},match:"(?<=[^\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)\\s*(:)\\s+"}]},qualifiedClassName:{captures:{1:{name:"entity.name.class"}},match:"(\\b([A-Z][\\w]*)(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)"},"scala-quoted-or-symbol":{patterns:[{captures:{1:{name:"keyword.control.flow.staging.scala constant.other.symbol.scala"},2:{name:"constant.other.symbol.scala"}},match:"(')((?>(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))(?!')"},{match:"'(?=\\s*\\{(?!'))",name:"keyword.control.flow.staging.scala"},{match:"'(?=\\s*\\[(?!'))",name:"keyword.control.flow.staging.scala"},{match:"\\$(?=\\s*\\{)",name:"keyword.control.flow.staging.scala"}]},"script-header":{captures:{1:{name:"string.unquoted.shebang.scala"}},match:"^#!(.*)$",name:"comment.block.shebang.scala"},"singleton-type":{captures:{1:{name:"keyword.type.scala"}},match:"\\.(type)(?![A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[0-9])"},"storage-modifiers":{patterns:[{match:"\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b",name:"storage.modifier.access"},{match:"\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\b",name:"storage.modifier.other"},{match:"(?<=^|\\s)\\b(transparent|opaque|infix|open|inline)\\b(?=[a-z\\s]*\\b(def|val|var|given|type|class|trait|object|enum)\\b)",name:"storage.modifier.other"}]},"string-interpolation":{patterns:[{match:"\\$\\$",name:"constant.character.escape.interpolation.scala"},{captures:{1:{name:"punctuation.definition.template-expression.begin.scala"}},match:"(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\p{Lo}\\p{Nl}\\p{Ll}0-9]*)",name:"meta.template.expression.scala"},{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.scala"}},contentName:"meta.embedded.line.scala",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.scala"}},name:"meta.template.expression.scala",patterns:[{include:"#code"}]}]},strings:{patterns:[{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.scala"}},end:'"""(?!")',endCaptures:{0:{name:"punctuation.definition.string.end.scala"}},name:"string.quoted.triple.scala",patterns:[{match:"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",name:"constant.character.escape.scala"}]},{begin:'\\b(raw)(""")',beginCaptures:{1:{name:"keyword.interpolation.scala"},2:{name:"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"}},end:`(""")(?!")|\\$ +|(\\$[^\\$"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])`,endCaptures:{1:{name:"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"},2:{name:"invalid.illegal.unrecognized-string-escape.scala"}},patterns:[{match:'\\$[\\$"]',name:"constant.character.escape.scala"},{include:"#string-interpolation"},{match:".",name:"string.quoted.triple.interpolated.scala"}]},{begin:'\\b((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(""")',beginCaptures:{1:{name:"keyword.interpolation.scala"},2:{name:"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"}},end:`(""")(?!")|\\$ +|(\\$[^\\$"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])`,endCaptures:{1:{name:"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"},2:{name:"invalid.illegal.unrecognized-string-escape.scala"}},patterns:[{include:"#string-interpolation"},{match:"\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",name:"constant.character.escape.scala"},{match:".",name:"string.quoted.triple.interpolated.scala"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.scala"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.scala"}},name:"string.quoted.double.scala",patterns:[{match:`\\\\(?:[btnfr\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})`,name:"constant.character.escape.scala"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.scala"}]},{begin:'\\b(raw)(")',beginCaptures:{1:{name:"keyword.interpolation.scala"},2:{name:"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"}},end:`(")|\\$ +|(\\$[^\\$"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])`,endCaptures:{1:{name:"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"},2:{name:"invalid.illegal.unrecognized-string-escape.scala"}},patterns:[{match:'\\$[\\$"]',name:"constant.character.escape.scala"},{include:"#string-interpolation"},{match:".",name:"string.quoted.double.interpolated.scala"}]},{begin:'\\b((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(")',beginCaptures:{1:{name:"keyword.interpolation.scala"},2:{name:"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"}},end:`(")|\\$ +|(\\$[^\\$"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])`,endCaptures:{1:{name:"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"},2:{name:"invalid.illegal.unrecognized-string-escape.scala"}},patterns:[{match:'\\$[\\$"]',name:"constant.character.escape.scala"},{include:"#string-interpolation"},{match:`\\\\(?:[btnfr\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})`,name:"constant.character.escape.scala"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.scala"},{match:".",name:"string.quoted.double.interpolated.scala"}]}]},using:{patterns:[{captures:{1:{name:"keyword.declaration.scala"}},match:"(?<=\\()\\s*(using)\\s"}]},"using-directive":{begin:"^\\s*(//>)\\s*(using)[^\\S\\n]+(?:(\\S+))?",beginCaptures:{1:{name:"punctuation.definition.comment.scala"},2:{name:"keyword.other.import.scala"},3:{patterns:[{match:"[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)",name:"entity.name.import.scala"},{match:"\\.",name:"punctuation.definition.import"}]}},end:"\\n",name:"comment.line.shebang.scala",patterns:[{include:"#constants"},{include:"#strings"},{match:"[^\\s,]+",name:"string.quoted.double.scala"}]},"xml-doublequotedString":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.double.xml",patterns:[{include:"#xml-entity"}]},"xml-embedded-content":{patterns:[{begin:"{",captures:{0:{name:"meta.bracket.scala"}},end:"}",name:"meta.source.embedded.scala",patterns:[{include:"#code"}]},{captures:{1:{name:"entity.other.attribute-name.namespace.xml"},2:{name:"entity.other.attribute-name.xml"},3:{name:"punctuation.separator.namespace.xml"},4:{name:"entity.other.attribute-name.localname.xml"}},match:" (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)="},{include:"#xml-doublequotedString"},{include:"#xml-singlequotedString"}]},"xml-entity":{captures:{1:{name:"punctuation.definition.constant.xml"},3:{name:"punctuation.definition.constant.xml"}},match:"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.xml"},"xml-literal":{patterns:[{begin:"(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\s[^>]*)?></\\2>)",beginCaptures:{1:{name:"punctuation.definition.tag.xml"},3:{name:"entity.name.tag.namespace.xml"},4:{name:"entity.name.tag.xml"},5:{name:"punctuation.separator.namespace.xml"},6:{name:"entity.name.tag.localname.xml"}},comment:"We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway. Also code such as -- if (val <val2 || val> val3) will falsly be recognized as an xml tag. The solution is to put a space on either side of the comparison operator",end:"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)",endCaptures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"meta.scope.between-tag-pair.xml"},3:{name:"entity.name.tag.namespace.xml"},4:{name:"entity.name.tag.xml"},5:{name:"punctuation.separator.namespace.xml"},6:{name:"entity.name.tag.localname.xml"},7:{name:"punctuation.definition.tag.xml"}},name:"meta.tag.no-content.xml",patterns:[{include:"#xml-embedded-content"}]},{begin:"(</?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^>]*?>)",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"entity.name.tag.namespace.xml"},3:{name:"entity.name.tag.xml"},4:{name:"punctuation.separator.namespace.xml"},5:{name:"entity.name.tag.localname.xml"}},end:"(/?>)",name:"meta.tag.xml",patterns:[{include:"#xml-embedded-content"}]},{include:"#xml-entity"}]},"xml-singlequotedString":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.single.xml",patterns:[{include:"#xml-entity"}]}},scopeName:"source.scala"});var e=[a];export{e as default}; diff --git a/assets/chunks/scheme.1Je9_Reo.js b/assets/chunks/scheme.1Je9_Reo.js new file mode 100644 index 000000000..d7a435576 --- /dev/null +++ b/assets/chunks/scheme.1Je9_Reo.js @@ -0,0 +1,136 @@ +const e=Object.freeze({displayName:"Scheme",fileTypes:["scm","ss","sch","rkt"],name:"scheme",patterns:[{include:"#comment"},{include:"#block-comment"},{include:"#sexp"},{include:"#string"},{include:"#language-functions"},{include:"#quote"},{include:"#illegal"}],repository:{"block-comment":{begin:"\\#\\|",contentName:"comment",end:"\\|\\#",name:"comment",patterns:[{include:"#block-comment",name:"comment"}]},comment:{begin:"(^[ \\t]+)?(?=;)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.scheme"}},end:"(?!\\G)",patterns:[{begin:";",beginCaptures:{0:{name:"punctuation.definition.comment.scheme"}},end:"\\n",name:"comment.line.semicolon.scheme"}]},constants:{patterns:[{match:"#[t|f]",name:"constant.language.boolean.scheme"},{match:`(?<=[\\(\\s])((#e|#i)?[0-9]+(\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\s;()'",\\[\\]])`,name:"constant.numeric.scheme"}]},illegal:{match:"[()\\[\\]]",name:"invalid.illegal.parenthesis.scheme"},"language-functions":{patterns:[{match:`(?x) +(?<=(\\s|\\(|\\[)) +( do|or|and|else|quasiquote|begin|if|case|set!| +cond|let|unquote|define|let\\*|unquote-splicing|delay| +letrec) +(?=(\\s|\\())`,name:"keyword.control.scheme"},{comment:` + These functions run a test, and return a boolean + answer. + `,match:`(?x) +(?<=(\\s|\\()) +( char-alphabetic|char-lower-case|char-numeric| +char-ready|char-upper-case|char-whitespace| +(?:char|string)(?:-ci)?(?:=|<=?|>=?)| +atom|boolean|bound-identifier=|char|complex| +identifier|integer|symbol|free-identifier=|inexact| +eof-object|exact|list|(?:input|output)-port|pair| +real|rational|zero|vector|negative|odd|null|string| +eq|equal|eqv|even|number|positive|procedure +) +(\\?) +(?=(\\s|\\()) +`,name:"support.function.boolean-test.scheme"},{comment:` + These functions change one type into another. + `,match:`(?x) +(?<=(\\s|\\()) +( char->integer|exact->inexact|inexact->exact| +integer->char|symbol->string|list->vector| +list->string|identifier->symbol|vector->list| +string->list|string->number|string->symbol| +number->string +) +(?=(\\s|\\()) +`,name:"support.function.convert-type.scheme"},{comment:` + These functions are potentially dangerous because + they have side-effects which could affect other + parts of the program. + `,match:`(?x) +(?<=(\\s|\\()) +( set-(?:car|cdr)| +(?:vector|string)-(?:fill|set) +) +(!) +(?=(\\s|\\()) +`,name:"support.function.with-side-effects.scheme"},{comment:` + +, -, *, /, =, >, etc. + `,match:`(?x) +(?<=(\\s|\\()) +( >=?|<=?|=|[*/+-]) +(?=(\\s|\\()) +`,name:"keyword.operator.arithmetic.scheme"},{match:`(?x) +(?<=(\\s|\\()) +( append|apply|approximate| +call-with-current-continuation|call/cc|catch| +construct-identifier|define-syntax|display|foo| +for-each|force|format|cd|gen-counter|gen-loser| +generate-identifier|last-pair|length|let-syntax| +letrec-syntax|list|list-ref|list-tail|load|log| +macro|magnitude|map|map-streams|max|member|memq| +memv|min|newline|nil|not|peek-char|rationalize| +read|read-char|return|reverse|sequence|substring| +syntax|syntax-rules|transcript-off|transcript-on| +truncate|unwrap-syntax|values-list|write|write-char| + + +cons|c(a|d){1,4}r| + + +abs|acos|angle|asin|assoc|assq|assv|atan|ceiling| +cos|floor|round|sin|sqrt|tan| +(?:real|imag)-part|numerator|denominator + + +modulo|exp|expt|remainder|quotient|lcm| + + +call-with-(?:input|output)-file| +(?:close|current)-(?:input|output)-port| +with-(?:input|output)-from-file| +open-(?:input|output)-file| + + +char-(?:downcase|upcase|ready)| + + +make-(?:polar|promise|rectangular|string|vector) + + +string(?:-(?:append|copy|length|ref))?| +vector(?:-length|-ref) +) +(?=(\\s|\\()) +`,name:"support.function.general.scheme"}]},quote:{comment:` + We need to be able to quote any kind of item, which creates + a tiny bit of complexity in our grammar. It is hopefully + not overwhelming complexity. + + Note: the first two matches are special cases. quoted + symbols, and quoted empty lists are considered constant.other + + `,patterns:[{captures:{1:{name:"punctuation.section.quoted.symbol.scheme"}},match:`(?x) +(')\\s* +([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*) +`,name:"constant.other.symbol.scheme"},{captures:{1:{name:"punctuation.section.quoted.empty-list.scheme"},2:{name:"meta.expression.scheme"},3:{name:"punctuation.section.expression.begin.scheme"},4:{name:"punctuation.section.expression.end.scheme"}},match:`(?x) +(')\\s* +((\\()\\s*(\\))) +`,name:"constant.other.empty-list.schem"},{begin:"(')\\s*",beginCaptures:{1:{name:"punctuation.section.quoted.scheme"}},comment:"quoted double-quoted string or s-expression",end:"(?=[\\s()])|(?<=\\n)",name:"string.other.quoted-object.scheme",patterns:[{include:"#quoted"}]}]},"quote-sexp":{begin:"(?<=\\()\\s*(quote)\\s+",beginCaptures:{1:{name:"keyword.control.quote.scheme"}},comment:` + Something quoted with (quote «thing»). In this case «thing» + will not be evaluated, so we are considering it a string. + `,contentName:"string.other.quote.scheme",end:"(?=[\\s)])|(?<=\\n)",patterns:[{include:"#quoted"}]},quoted:{patterns:[{include:"#string"},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.expression.begin.scheme"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.expression.end.scheme"}},name:"meta.expression.scheme",patterns:[{include:"#quoted"}]},{include:"#quote"},{include:"#illegal"}]},sexp:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.section.expression.begin.scheme"}},end:"(\\))(\\n)?",endCaptures:{1:{name:"punctuation.section.expression.end.scheme"},2:{name:"meta.after-expression.scheme"}},name:"meta.expression.scheme",patterns:[{include:"#comment"},{begin:`(?x) +(?<=\\() +(define)\\s+ +(\\() +([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*) +((\\s+ +([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._]) +)* +)\\s* +(\\)) +`,captures:{1:{name:"keyword.control.scheme"},2:{name:"punctuation.definition.function.scheme"},3:{name:"entity.name.function.scheme"},4:{name:"variable.parameter.function.scheme"},7:{name:"punctuation.definition.function.scheme"}},end:"(?=\\))",name:"meta.declaration.procedure.scheme",patterns:[{include:"#comment"},{include:"#sexp"},{include:"#illegal"}]},{begin:`(?x) +(?<=\\() +(lambda)\\s+ +(\\() +((?: +([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._]) +\\s+ +)*(?: +([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._]) +)?) +(\\)) +`,captures:{1:{name:"keyword.control.scheme"},2:{name:"punctuation.definition.variable.scheme"},3:{name:"variable.parameter.scheme"},6:{name:"punctuation.definition.variable.scheme"}},comment:` + Not sure this one is quite correct. That \\s* is + particularly troubling + `,end:"(?=\\))",name:"meta.declaration.procedure.scheme",patterns:[{include:"#comment"},{include:"#sexp"},{include:"#illegal"}]},{begin:"(?<=\\()(define)\\s([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\s*.*?",captures:{1:{name:"keyword.control.scheme"},2:{name:"variable.other.scheme"}},end:"(?=\\))",name:"meta.declaration.variable.scheme",patterns:[{include:"#comment"},{include:"#sexp"},{include:"#illegal"}]},{include:"#quote-sexp"},{include:"#quote"},{include:"#language-functions"},{include:"#string"},{include:"#constants"},{match:"(?<=[\\(\\s])(#\\\\)(space|newline|tab)(?=[\\s\\)])",name:"constant.character.named.scheme"},{match:"(?<=[\\(\\s])(#\\\\)x[0-9A-F]{2,4}(?=[\\s\\)])",name:"constant.character.hex-literal.scheme"},{match:"(?<=[\\(\\s])(#\\\\).(?=[\\s\\)])",name:"constant.character.escape.scheme"},{comment:` + the . in (a . b) which conses together two elements + a and b. (a b c) == (a . (b . (c . nil))) + `,match:"(?<=[ ()])\\.(?=[ ()])",name:"punctuation.separator.cons.scheme"},{include:"#sexp"},{include:"#illegal"}]},string:{begin:'(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.scheme"}},end:'(")',endCaptures:{1:{name:"punctuation.definition.string.end.scheme"}},name:"string.quoted.double.scheme",patterns:[{match:"\\\\.",name:"constant.character.escape.scheme"}]}},scopeName:"source.scheme"});var n=[e];export{n as default}; diff --git a/assets/chunks/scss.Dr-_CcBd.js b/assets/chunks/scss.Dr-_CcBd.js new file mode 100644 index 000000000..db15cb7a7 --- /dev/null +++ b/assets/chunks/scss.Dr-_CcBd.js @@ -0,0 +1,90 @@ +import e from"./css.CbYhyuC0.js";const n=Object.freeze({displayName:"SCSS",name:"scss",patterns:[{include:"#variable_setting"},{include:"#at_rule_forward"},{include:"#at_rule_use"},{include:"#at_rule_include"},{include:"#at_rule_import"},{include:"#general"},{include:"#flow_control"},{include:"#rules"},{include:"#property_list"},{include:"#at_rule_mixin"},{include:"#at_rule_media"},{include:"#at_rule_function"},{include:"#at_rule_charset"},{include:"#at_rule_option"},{include:"#at_rule_namespace"},{include:"#at_rule_fontface"},{include:"#at_rule_page"},{include:"#at_rule_keyframes"},{include:"#at_rule_at_root"},{include:"#at_rule_supports"},{match:";",name:"punctuation.terminator.rule.css"}],repository:{at_rule_at_root:{begin:"\\s*((@)(at-root))(\\s+|$)",beginCaptures:{1:{name:"keyword.control.at-rule.at-root.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.at-root.scss",patterns:[{include:"#function_attributes"},{include:"#functions"},{include:"#selectors"}]},at_rule_charset:{begin:"\\s*((@)charset\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.charset.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;|$))",name:"meta.at-rule.charset.scss",patterns:[{include:"#variable"},{include:"#string_single"},{include:"#string_double"}]},at_rule_content:{begin:"\\s*((@)content\\b)\\s*",captures:{1:{name:"keyword.control.content.scss"}},end:"\\s*((?=;))",name:"meta.content.scss",patterns:[{include:"#variable"},{include:"#selectors"},{include:"#property_values"}]},at_rule_each:{begin:"\\s*((@)each\\b)\\s*",captures:{1:{name:"keyword.control.each.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=}))",name:"meta.at-rule.each.scss",patterns:[{match:"\\b(in|,)\\b",name:"keyword.control.operator"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},at_rule_else:{begin:"\\s*((@)else(\\s*(if)?))\\s*",captures:{1:{name:"keyword.control.else.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.else.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"}]},at_rule_extend:{begin:"\\s*((@)extend\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.extend.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.extend.scss",patterns:[{include:"#variable"},{include:"#selectors"},{include:"#property_values"}]},at_rule_fontface:{patterns:[{begin:"^\\s*((@)font-face\\b)",beginCaptures:{1:{name:"keyword.control.at-rule.fontface.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.fontface.scss",patterns:[{include:"#function_attributes"}]}]},at_rule_for:{begin:"\\s*((@)for\\b)\\s*",captures:{1:{name:"keyword.control.for.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.for.scss",patterns:[{match:"(==|!=|<=|>=|<|>|from|to|through)",name:"keyword.control.operator"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},at_rule_forward:{begin:"\\s*((@)forward\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.forward.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.forward.scss",patterns:[{match:"\\b(as|hide|show)\\b",name:"keyword.control.operator"},{captures:{1:{name:"entity.other.attribute-name.module.scss"},2:{name:"punctuation.definition.wildcard.scss"}},match:"\\b([\\w-]+)(\\*)"},{match:"\\b[\\w-]+\\b",name:"entity.name.function.scss"},{include:"#variable"},{include:"#string_single"},{include:"#string_double"},{include:"#comment_line"},{include:"#comment_block"}]},at_rule_function:{patterns:[{begin:"\\s*((@)function\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.function.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},end:"\\s*(?={)",name:"meta.at-rule.function.scss",patterns:[{include:"#function_attributes"}]},{captures:{1:{name:"keyword.control.at-rule.function.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},match:"\\s*((@)function\\b)\\s*",name:"meta.at-rule.function.scss"}]},at_rule_if:{begin:"\\s*((@)if\\b)\\s*",captures:{1:{name:"keyword.control.if.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.if.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"}]},at_rule_import:{begin:"\\s*((@)import\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.import.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;)|(?=}))",name:"meta.at-rule.import.scss",patterns:[{include:"#variable"},{include:"#string_single"},{include:"#string_double"},{include:"#functions"},{include:"#comment_line"}]},at_rule_include:{patterns:[{begin:"(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)\\s*(\\()",beginCaptures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"entity.name.function.scss"},4:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},name:"meta.at-rule.include.scss",patterns:[{include:"#function_attributes"}]},{captures:{0:{name:"meta.at-rule.include.scss"},1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"entity.name.function.scss"}},match:"(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)"},{captures:{0:{name:"meta.at-rule.include.scss"},1:{name:"keyword.control.at-rule.include.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)include)\\b"}]},at_rule_keyframes:{begin:"(?<=^|\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\b",beginCaptures:{0:{name:"keyword.control.at-rule.keyframes.scss"},1:{name:"punctuation.definition.keyword.scss"}},end:"(?<=})",name:"meta.at-rule.keyframes.scss",patterns:[{captures:{1:{name:"entity.name.function.scss"}},match:"(?<=@keyframes)\\s+((?:[_A-Za-z][-\\w]|-[_A-Za-z])[-\\w]*)"},{begin:'(?<=@keyframes)\\s+(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.scss"}},contentName:"entity.name.function.scss",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.double.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},{begin:"(?<=@keyframes)\\s+(')",beginCaptures:{1:{name:"punctuation.definition.string.begin.scss"}},contentName:"entity.name.function.scss",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.single.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.keyframes.begin.scss"}},end:"}",endCaptures:{0:{name:"punctuation.section.keyframes.end.scss"}},patterns:[{match:"\\b(?:(?:100|[1-9]\\d|\\d)%|from|to)(?=\\s*{)",name:"entity.other.attribute-name.scss"},{include:"#flow_control"},{include:"#interpolation"},{include:"#property_list"},{include:"#rules"}]}]},at_rule_media:{patterns:[{begin:"^\\s*((@)media)\\b",beginCaptures:{1:{name:"keyword.control.at-rule.media.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.media.scss",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{match:"\\b(only)\\b",name:"keyword.control.operator.css.scss"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.media-query.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.media-query.end.bracket.round.scss"}},name:"meta.property-list.media-query.scss",patterns:[{begin:"(?<![-a-z])(?=[-a-z])",end:"$|(?![-a-z])",name:"meta.property-name.media-query.scss",patterns:[{include:"source.css#media-features"},{include:"source.css#property-names"}]},{begin:"(:)\\s*(?!(\\s*{))",beginCaptures:{1:{name:"punctuation.separator.key-value.scss"}},contentName:"meta.property-value.media-query.scss",end:"\\s*(;|(?=}|\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},{include:"#variable"},{include:"#conditional_operators"},{include:"source.css#media-types"}]}]},at_rule_mixin:{patterns:[{begin:"(?<=@mixin)\\s+([\\w-]+)\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.scss"},2:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},name:"meta.at-rule.mixin.scss",patterns:[{include:"#function_attributes"}]},{captures:{1:{name:"entity.name.function.scss"}},match:"(?<=@mixin)\\s+([\\w-]+)",name:"meta.at-rule.mixin.scss"},{captures:{1:{name:"keyword.control.at-rule.mixin.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)mixin)\\b",name:"meta.at-rule.mixin.scss"}]},at_rule_namespace:{patterns:[{begin:"(?<=@namespace)\\s+(?=url)",end:"(?=;|$)",name:"meta.at-rule.namespace.scss",patterns:[{include:"#property_values"},{include:"#string_single"},{include:"#string_double"}]},{begin:"(?<=@namespace)\\s+([\\w-]*)",captures:{1:{name:"entity.name.namespace-prefix.scss"}},end:"(?=;|$)",name:"meta.at-rule.namespace.scss",patterns:[{include:"#variables"},{include:"#property_values"},{include:"#string_single"},{include:"#string_double"}]},{captures:{1:{name:"keyword.control.at-rule.namespace.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)namespace)\\b",name:"meta.at-rule.namespace.scss"}]},at_rule_option:{captures:{1:{name:"keyword.control.at-rule.charset.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"^\\s*((@)option\\b)\\s*",name:"meta.at-rule.option.scss"},at_rule_page:{patterns:[{begin:"^\\s*((@)page)(?=:|\\s)\\s*([-:\\w]*)",captures:{1:{name:"keyword.control.at-rule.page.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},end:"\\s*(?={)",name:"meta.at-rule.page.scss"}]},at_rule_return:{begin:"\\s*((@)(return)\\b)",captures:{1:{name:"keyword.control.return.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;))",name:"meta.at-rule.return.scss",patterns:[{include:"#variable"},{include:"#property_values"}]},at_rule_supports:{begin:"(?<=^|\\s)(@)supports\\b",captures:{0:{name:"keyword.control.at-rule.supports.scss"},1:{name:"punctuation.definition.keyword.scss"}},end:"(?={)|$",name:"meta.at-rule.supports.scss",patterns:[{include:"#logical_operators"},{include:"#properties"},{match:"\\(",name:"punctuation.definition.condition.begin.bracket.round.scss"},{match:"\\)",name:"punctuation.definition.condition.end.bracket.round.scss"}]},at_rule_use:{begin:"\\s*((@)use\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.use.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.use.scss",patterns:[{match:"\\b(as|with)\\b",name:"keyword.control.operator"},{match:"\\b[\\w-]+\\b",name:"variable.scss"},{match:"\\*",name:"variable.language.expanded-namespace.scss"},{include:"#string_single"},{include:"#string_double"},{include:"#comment_line"},{include:"#comment_block"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},patterns:[{include:"#function_attributes"}]}]},at_rule_warn:{begin:"\\s*((@)(warn|debug|error)\\b)\\s*",captures:{1:{name:"keyword.control.warn.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.warn.scss",patterns:[{include:"#variable"},{include:"#string_double"},{include:"#string_single"}]},at_rule_while:{begin:"\\s*((@)while\\b)\\s*",captures:{1:{name:"keyword.control.while.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=})",name:"meta.at-rule.while.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},comment_block:{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.scss"}},name:"comment.block.scss"},comment_docblock:{begin:"///",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"(?=$)",name:"comment.block.documentation.scss",patterns:[{include:"source.sassdoc"}]},comment_line:{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"\\n",name:"comment.line.scss"},comparison_operators:{match:"==|!=|<=|>=|<|>",name:"keyword.operator.comparison.scss"},conditional_operators:{patterns:[{include:"#comparison_operators"},{include:"#logical_operators"}]},constant_default:{match:"!default",name:"keyword.other.default.scss"},constant_functions:{begin:"(?:([\\w-]+)(\\.))?([\\w-]+)(\\()",beginCaptures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"support.function.misc.scss"},4:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},constant_important:{match:"!important",name:"keyword.other.important.scss"},constant_mathematical_symbols:{match:"\\b(\\+|-|\\*|/)\\b",name:"support.constant.mathematical-symbols.scss"},constant_optional:{match:"!optional",name:"keyword.other.optional.scss"},constant_sass_functions:{begin:"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\()",beginCaptures:{1:{name:"support.function.misc.scss"},2:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},flow_control:{patterns:[{include:"#at_rule_if"},{include:"#at_rule_else"},{include:"#at_rule_warn"},{include:"#at_rule_for"},{include:"#at_rule_while"},{include:"#at_rule_each"},{include:"#at_rule_return"}]},function_attributes:{patterns:[{match:":",name:"punctuation.separator.key-value.scss"},{include:"#general"},{include:"#property_values"},{match:"[={}\\?;@]",name:"invalid.illegal.scss"}]},functions:{patterns:[{begin:"([\\w-]{1,})(\\()\\s*",beginCaptures:{1:{name:"support.function.misc.scss"},2:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},{match:"([\\w-]{1,})",name:"support.function.misc.scss"}]},general:{patterns:[{include:"#variable"},{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"}]},interpolation:{begin:"#{",beginCaptures:{0:{name:"punctuation.definition.interpolation.begin.bracket.curly.scss"}},end:"}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.bracket.curly.scss"}},name:"variable.interpolation.scss",patterns:[{include:"#variable"},{include:"#property_values"}]},logical_operators:{match:"\\b(not|or|and)\\b",name:"keyword.operator.logical.scss"},map:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.map.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.map.end.bracket.round.scss"}},name:"meta.definition.variable.map.scss",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{captures:{1:{name:"support.type.map.key.scss"},2:{name:"punctuation.separator.key-value.scss"}},match:"\\b([\\w-]+)\\s*(:)"},{match:",",name:"punctuation.separator.delimiter.scss"},{include:"#map"},{include:"#variable"},{include:"#property_values"}]},operators:{match:"[-+*/](?!\\s*[-+*/])",name:"keyword.operator.css"},parameters:{patterns:[{include:"#variable"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.scss"}},patterns:[{include:"#function_attributes"}]},{include:"#property_values"},{include:"#comment_block"},{match:`[^'",) \\t]+`,name:"variable.parameter.url.scss"},{match:",",name:"punctuation.separator.delimiter.scss"}]},parent_selector_suffix:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(?<=&) +( +(?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\$ +| } +)+ +) +(?= $ +| [\\s,.\\#)\\[:{>+~|] +| /\\* +)`,name:"entity.other.attribute-name.parent-selector-suffix.css"},properties:{patterns:[{begin:"(?<![-a-z])(?=[-a-z])",end:"$|(?![-a-z])",name:"meta.property-name.scss",patterns:[{include:"source.css#property-names"},{include:"#at_rule_include"}]},{begin:"(:)\\s*(?!(\\s*{))",beginCaptures:{1:{name:"punctuation.separator.key-value.scss"}},contentName:"meta.property-value.scss",end:"\\s*(;|(?=}|\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},property_list:{begin:"{",beginCaptures:{0:{name:"punctuation.section.property-list.begin.bracket.curly.scss"}},end:"}",endCaptures:{0:{name:"punctuation.section.property-list.end.bracket.curly.scss"}},name:"meta.property-list.scss",patterns:[{include:"#flow_control"},{include:"#rules"},{include:"#properties"},{include:"$self"}]},property_values:{patterns:[{include:"#string_single"},{include:"#string_double"},{include:"#constant_functions"},{include:"#constant_sass_functions"},{include:"#constant_important"},{include:"#constant_default"},{include:"#constant_optional"},{include:"source.css#numeric-values"},{include:"source.css#property-keywords"},{include:"source.css#color-keywords"},{include:"source.css#property-names"},{include:"#constant_mathematical_symbols"},{include:"#operators"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},rules:{patterns:[{include:"#general"},{include:"#at_rule_extend"},{include:"#at_rule_content"},{include:"#at_rule_include"},{include:"#at_rule_media"},{include:"#selectors"}]},selector_attribute:{captures:{1:{name:"punctuation.definition.attribute-selector.begin.bracket.square.scss"},2:{name:"entity.other.attribute-name.attribute.scss",patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},3:{name:"keyword.operator.scss"},4:{name:"string.unquoted.attribute-value.scss",patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},5:{name:"string.quoted.double.attribute-value.scss"},6:{name:"punctuation.definition.string.begin.scss"},7:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},8:{name:"punctuation.definition.string.end.scss"},9:{name:"string.quoted.single.attribute-value.scss"},10:{name:"punctuation.definition.string.begin.scss"},11:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},12:{name:"punctuation.definition.string.end.scss"},13:{name:"punctuation.definition.attribute-selector.end.bracket.square.scss"}},match:`(?xi) +(\\[) +\\s* +( +(?: +[-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\.?\\$ +| } +)+? +) +(?: +\\s*([~|^$*]?=)\\s* +(?: +( +(?: +[-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\.?\\$ +| } +)+ +) +| +((")(.*?)(")) +| +((')(.*?)(')) +) +)? +\\s* +(\\])`,name:"meta.attribute-selector.scss"},selector_class:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]}},match:`(?x) +(\\.) +( +(?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\.?\\$ +| } +)+ +) +(?= $ +| [\\s,\\#)\\[:{>+~|] +| \\.[^$] +| /\\* +| ; +)`,name:"entity.other.attribute-name.class.css"},selector_custom:{match:"\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\.|\\s++[^:]|\\s*[,\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\([0-9A-Za-z]*\\))?)",name:"entity.name.tag.custom.scss"},selector_id:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(\\#) +( +(?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\.?\\$ +| } +)+ +) +(?= $ +| [\\s,\\#)\\[:{>+~|] +| \\.[^$] +| /\\* +)`,name:"entity.other.attribute-name.id.css"},selector_placeholder:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(%) +( +(?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] +| \\\\(?:[0-9a-fA-F]{1,6}|.) +| \\#\\{ +| \\.\\$ +| \\$ +| } +)+ +) +(?= ; +| $ +| [\\s,\\#)\\[:{>+~|] +| \\.[^$] +| /\\* +)`,name:"entity.other.attribute-name.placeholder.css"},selector_pseudo_class:{patterns:[{begin:"((:)\\bnth-(?:child|last-child|of-type|last-of-type))(\\()",beginCaptures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.definition.pseudo-class.begin.bracket.round.css"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.pseudo-class.end.bracket.round.css"}},patterns:[{include:"#interpolation"},{match:"\\d+",name:"constant.numeric.css"},{match:"(?<=\\d)n\\b|\\b(n|even|odd)\\b",name:"constant.other.scss"},{match:"\\w+",name:"invalid.illegal.scss"}]},{include:"source.css#pseudo-classes"},{include:"source.css#pseudo-elements"},{include:"source.css#functional-pseudo-classes"}]},selectors:{patterns:[{include:"source.css#tag-names"},{include:"#selector_custom"},{include:"#selector_class"},{include:"#selector_id"},{include:"#selector_pseudo_class"},{include:"#tag_wildcard"},{include:"#tag_parent_reference"},{include:"source.css#pseudo-elements"},{include:"#selector_attribute"},{include:"#selector_placeholder"},{include:"#parent_selector_suffix"}]},string_double:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.scss"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.double.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},string_single:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.scss"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.single.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},tag_parent_reference:{match:"&",name:"entity.name.tag.reference.scss"},tag_wildcard:{match:"\\*",name:"entity.name.tag.wildcard.scss"},variable:{patterns:[{include:"#variables"},{include:"#interpolation"}]},variable_setting:{begin:"(?=\\$[\\w-]+\\s*:)",contentName:"meta.definition.variable.scss",end:";",endCaptures:{0:{name:"punctuation.terminator.rule.scss"}},patterns:[{match:"\\$[\\w-]+(?=\\s*:)",name:"variable.scss"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.key-value.scss"}},end:"(?=;)",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{include:"#map"},{include:"#property_values"},{include:"#variable"},{match:",",name:"punctuation.separator.delimiter.scss"}]}]},variables:{patterns:[{captures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"variable.scss"}},match:"\\b([\\w-]+)(\\.)(\\$[\\w-]+)\\b"},{match:"(\\$|\\-\\-)[A-Za-z0-9_-]+\\b",name:"variable.scss"}]}},scopeName:"source.css.scss",embeddedLangs:["css"]});var s=[...e,n];export{s as default}; diff --git a/assets/chunks/shaderlab.D_C8j_yu.js b/assets/chunks/shaderlab.D_C8j_yu.js new file mode 100644 index 000000000..7c86ad667 --- /dev/null +++ b/assets/chunks/shaderlab.D_C8j_yu.js @@ -0,0 +1 @@ +import a from"./hlsl.DmDrTTlz.js";const e=Object.freeze({displayName:"ShaderLab",name:"shaderlab",patterns:[{begin:"//",end:"$",name:"comment.line.double-slash.shaderlab"},{match:"\\b(?i:Range|Float|Int|Color|Vector|2D|3D|Cube|Any)\\b",name:"support.type.basic.shaderlab"},{include:"#numbers"},{match:"\\b(?i:Shader|Properties|SubShader|Pass|Category)\\b",name:"storage.type.structure.shaderlab"},{match:"\\b(?i:Name|Tags|Fallback|CustomEditor|Cull|ZWrite|ZTest|Offset|Blend|BlendOp|ColorMask|AlphaToMask|LOD|Lighting|Stencil|Ref|ReadMask|WriteMask|Comp|CompBack|CompFront|Fail|ZFail|UsePass|GrabPass|Dependency|Material|Diffuse|Ambient|Shininess|Specular|Emission|Fog|Mode|Density|SeparateSpecular|SetTexture|Combine|ConstantColor|Matrix|AlphaTest|ColorMaterial|BindChannels|Bind)\\b",name:"support.type.propertyname.shaderlab"},{match:"\\b(?i:Back|Front|On|Off|[RGBA]{1,3}|AmbientAndDiffuse|Emission)\\b",name:"support.constant.property-value.shaderlab"},{match:"\\b(?i:Less|Greater|LEqual|GEqual|Equal|NotEqual|Always|Never)\\b",name:"support.constant.property-value.comparisonfunction.shaderlab"},{match:"\\b(?i:Keep|Zero|Replace|IncrSat|DecrSat|Invert|IncrWrap|DecrWrap)\\b",name:"support.constant.property-value.stenciloperation.shaderlab"},{match:"\\b(?i:Previous|Primary|Texture|Constant|Lerp|Double|Quad|Alpha)\\b",name:"support.constant.property-value.texturecombiners.shaderlab"},{match:"\\b(?i:Global|Linear|Exp2|Exp)\\b",name:"support.constant.property-value.fog.shaderlab"},{match:"\\b(?i:Vertex|Normal|Tangent|TexCoord0|TexCoord1)\\b",name:"support.constant.property-value.bindchannels.shaderlab"},{match:"\\b(?i:Add|Sub|RevSub|Min|Max|LogicalClear|LogicalSet|LogicalCopyInverted|LogicalCopy|LogicalNoop|LogicalInvert|LogicalAnd|LogicalNand|LogicalOr|LogicalNor|LogicalXor|LogicalEquiv|LogicalAndReverse|LogicalAndInverted|LogicalOrReverse|LogicalOrInverted)\\b",name:"support.constant.property-value.blendoperations.shaderlab"},{match:"\\b(?i:One|Zero|SrcColor|SrcAlpha|DstColor|DstAlpha|OneMinusSrcColor|OneMinusSrcAlpha|OneMinusDstColor|OneMinusDstAlpha)\\b",name:"support.constant.property-value.blendfactors.shaderlab"},{match:'\\[([a-zA-Z_][a-zA-Z0-9_]*)\\](?!\\s*[a-zA-Z_][a-zA-Z0-9_]*\\s*\\(")',name:"support.variable.reference.shaderlab"},{begin:"(\\[)",end:"(\\])",name:"meta.attribute.shaderlab",patterns:[{match:"\\G([a-zA-Z]+)\\b",name:"support.type.attributename.shaderlab"},{include:"#numbers"}]},{match:"\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",name:"support.variable.declaration.shaderlab"},{begin:"\\b(CGPROGRAM|CGINCLUDE)\\b",beginCaptures:{1:{name:"keyword.other"}},end:"\\b(ENDCG)\\b",endCaptures:{1:{name:"keyword.other"}},name:"meta.cgblock",patterns:[{include:"#hlsl-embedded"}]},{begin:"\\b(HLSLPROGRAM|HLSLINCLUDE)\\b",beginCaptures:{1:{name:"keyword.other"}},end:"\\b(ENDHLSL)\\b",endCaptures:{1:{name:"keyword.other"}},name:"meta.hlslblock",patterns:[{include:"#hlsl-embedded"}]},{begin:'"',end:'"',name:"string.quoted.double.shaderlab"}],repository:{"hlsl-embedded":{patterns:[{include:"source.hlsl"},{match:"\\b(fixed([1-4](x[1-4])?)?)\\b",name:"storage.type.basic.shaderlab"},{match:"\\b(UNITY_MATRIX_MVP|UNITY_MATRIX_MV|UNITY_MATRIX_M|UNITY_MATRIX_V|UNITY_MATRIX_P|UNITY_MATRIX_VP|UNITY_MATRIX_T_MV|UNITY_MATRIX_I_V|UNITY_MATRIX_IT_MV|_Object2World|_World2Object|unity_ObjectToWorld|unity_WorldToObject)\\b",name:"support.variable.transformations.shaderlab"},{match:"\\b(_WorldSpaceCameraPos|_ProjectionParams|_ScreenParams|_ZBufferParams|unity_OrthoParams|unity_CameraProjection|unity_CameraInvProjection|unity_CameraWorldClipPlanes)\\b",name:"support.variable.camera.shaderlab"},{match:"\\b(_Time|_SinTime|_CosTime|unity_DeltaTime)\\b",name:"support.variable.time.shaderlab"},{match:"\\b(_LightColor0|_WorldSpaceLightPos0|_LightMatrix0|unity_4LightPosX0|unity_4LightPosY0|unity_4LightPosZ0|unity_4LightAtten0|unity_LightColor|_LightColor|unity_LightPosition|unity_LightAtten|unity_SpotDirection)\\b",name:"support.variable.lighting.shaderlab"},{match:"\\b(unity_AmbientSky|unity_AmbientEquator|unity_AmbientGround|UNITY_LIGHTMODEL_AMBIENT|unity_FogColor|unity_FogParams)\\b",name:"support.variable.fog.shaderlab"},{match:"\\b(unity_LODFade)\\b",name:"support.variable.various.shaderlab"},{match:"\\b(SHADER_API_D3D9|SHADER_API_D3D11|SHADER_API_GLCORE|SHADER_API_OPENGL|SHADER_API_GLES|SHADER_API_GLES3|SHADER_API_METAL|SHADER_API_D3D11_9X|SHADER_API_PSSL|SHADER_API_XBOXONE|SHADER_API_PSP2|SHADER_API_WIIU|SHADER_API_MOBILE|SHADER_API_GLSL)\\b",name:"support.variable.preprocessor.targetplatform.shaderlab"},{match:"\\b(SHADER_TARGET)\\b",name:"support.variable.preprocessor.targetmodel.shaderlab"},{match:"\\b(UNITY_VERSION)\\b",name:"support.variable.preprocessor.unityversion.shaderlab"},{match:"\\b(UNITY_BRANCH|UNITY_FLATTEN|UNITY_NO_SCREENSPACE_SHADOWS|UNITY_NO_LINEAR_COLORSPACE|UNITY_NO_RGBM|UNITY_NO_DXT5nm|UNITY_FRAMEBUFFER_FETCH_AVAILABLE|UNITY_USE_RGBA_FOR_POINT_SHADOWS|UNITY_ATTEN_CHANNEL|UNITY_HALF_TEXEL_OFFSET|UNITY_UV_STARTS_AT_TOP|UNITY_MIGHT_NOT_HAVE_DEPTH_Texture|UNITY_NEAR_CLIP_VALUE|UNITY_VPOS_TYPE|UNITY_CAN_COMPILE_TESSELLATION|UNITY_COMPILER_HLSL|UNITY_COMPILER_HLSL2GLSL|UNITY_COMPILER_CG|UNITY_REVERSED_Z)\\b",name:"support.variable.preprocessor.platformdifference.shaderlab"},{match:"\\b(UNITY_PASS_FORWARDBASE|UNITY_PASS_FORWARDADD|UNITY_PASS_DEFERRED|UNITY_PASS_SHADOWCASTER|UNITY_PASS_PREPASSBASE|UNITY_PASS_PREPASSFINAL)\\b",name:"support.variable.preprocessor.texture2D.shaderlab"},{match:"\\b(appdata_base|appdata_tan|appdata_full|appdata_img)\\b",name:"support.class.structures.shaderlab"},{match:"\\b(SurfaceOutputStandardSpecular|SurfaceOutputStandard|SurfaceOutput|Input)\\b",name:"support.class.surface.shaderlab"}]},numbers:{patterns:[{match:"\\b([0-9]+\\.?[0-9]*)\\b",name:"constant.numeric.shaderlab"}]}},scopeName:"source.shaderlab",embeddedLangs:["hlsl"],aliases:["shader"]});var t=[...a,e];export{t as default}; diff --git a/assets/chunks/shellscript.BZfs-ost.js b/assets/chunks/shellscript.BZfs-ost.js new file mode 100644 index 000000000..28eefdae8 --- /dev/null +++ b/assets/chunks/shellscript.BZfs-ost.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Shell",name:"shellscript",patterns:[{include:"#initial_context"}],repository:{alias_statement:{begin:"(?:(?:[ \\t]*+)(alias)(?:[ \\t]*+)((?:(?:((?<!\\w)-\\w+\\b)(?:[ \\t]*+))*))(?:(?:[ \\t]*+)(?:((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(?:(?:(\\[)((?:(?:(?:(?:\\$?)(?:(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))|@)|\\*)|(-?\\d+)))(\\]))?))(?:(?:(\\=)|(\\+\\=))|(\\-\\=))))",beginCaptures:{1:{name:"storage.type.alias.shell"},2:{patterns:[{match:"(?<!\\w)-\\w+\\b",name:"string.unquoted.argument.shell constant.other.option.shell"}]},3:{name:"string.unquoted.argument.shell constant.other.option.shell"},4:{name:"variable.other.assignment.shell"},5:{name:"punctuation.definition.array.access.shell"},6:{name:"variable.other.assignment.shell"},7:{name:"constant.numeric.shell constant.numeric.integer.shell"},8:{name:"punctuation.definition.array.access.shell"},9:{name:"keyword.operator.assignment.shell"},10:{name:"keyword.operator.assignment.compound.shell"},11:{name:"keyword.operator.assignment.compound.shell"}},end:"(?:(?= |\\t|$)|(?:(?:(?:(;)|(&&))|(\\|\\|))|(&)))",endCaptures:{1:{name:"punctuation.terminator.statement.semicolon.shell"},2:{name:"punctuation.separator.statement.and.shell"},3:{name:"punctuation.separator.statement.or.shell"},4:{name:"punctuation.separator.statement.background.shell"}},name:"meta.expression.assignment.alias.shell",patterns:[{include:"#normal_context"}]},argument:{begin:"(?:[ \\t]++)(?!(?:&|\\||\\(|\\[|#|\\n|$|;))",beginCaptures:{},end:"(?= |\\t|;|\\||&|$|\\n|\\)|\\`)",endCaptures:{},name:"meta.argument.shell",patterns:[{include:"#argument_context"},{include:"#line_continuation"}]},argument_context:{patterns:[{captures:{1:{name:"string.unquoted.argument.shell",patterns:[{match:"\\*",name:"variable.language.special.wildcard.shell"},{include:"#variable"},{include:"#numeric_literal"},{captures:{1:{name:"constant.language.$1.shell"}},match:"(?<!\\w)(\\b(?:true|false)\\b)(?!\\w)"}]}},match:"(?:[ \\t]*+)((?:[^ \\t\\n>&;<>\\(\\)\\$`\\\\\"'<\\|]+)(?!>))"},{include:"#normal_context"}]},arithmetic_double:{patterns:[{begin:"\\(\\(",beginCaptures:{0:{name:"punctuation.section.arithmetic.double.shell"}},end:"\\)(?:\\s*)\\)",endCaptures:{0:{name:"punctuation.section.arithmetic.double.shell"}},name:"meta.arithmetic.shell",patterns:[{include:"#math"},{include:"#string"}]}]},arithmetic_no_dollar:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.arithmetic.single.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.arithmetic.single.shell"}},name:"meta.arithmetic.shell",patterns:[{include:"#math"},{include:"#string"}]}]},array_access_inline:{captures:{1:{name:"punctuation.section.array.shell"},2:{patterns:[{include:"#special_expansion"},{include:"#string"},{include:"#variable"}]},3:{name:"punctuation.section.array.shell"}},match:"(?:(\\[)([^\\[\\]]+)(\\]))"},array_value:{begin:"(?:[ \\t]*+)(?:((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(?:(?:(\\[)((?:(?:(?:(?:\\$?)(?:(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))|@)|\\*)|(-?\\d+)))(\\]))?))(?:(?:(\\=)|(\\+\\=))|(\\-\\=))(?:[ \\t]*+)(\\()",beginCaptures:{1:{name:"variable.other.assignment.shell"},2:{name:"punctuation.definition.array.access.shell"},3:{name:"variable.other.assignment.shell"},4:{name:"constant.numeric.shell constant.numeric.integer.shell"},5:{name:"punctuation.definition.array.access.shell"},6:{name:"keyword.operator.assignment.shell"},7:{name:"keyword.operator.assignment.compound.shell"},8:{name:"keyword.operator.assignment.compound.shell"},9:{name:"punctuation.definition.array.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.array.shell"}},patterns:[{include:"#comment"},{captures:{1:{name:"variable.other.assignment.array.shell entity.other.attribute-name.shell"},2:{name:"keyword.operator.assignment.shell punctuation.definition.assignment.shell"}},match:"(?:((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(\\=))"},{captures:{1:{name:"punctuation.definition.bracket.named-array.shell"},2:{name:"string.unquoted.shell entity.other.attribute-name.bracket.shell"},3:{name:"punctuation.definition.bracket.named-array.shell"},4:{name:"punctuation.definition.assignment.shell"}},match:"(?:(\\[)(.+?)(\\])(\\=))"},{include:"#normal_context"},{include:"#simple_unquoted"}]},assignment_statement:{patterns:[{include:"#array_value"},{include:"#modified_assignment_statement"},{include:"#normal_assignment_statement"}]},basic_command_name:{captures:{1:{name:"storage.modifier.$1.shell"},2:{name:"entity.name.function.call.shell entity.name.command.shell",patterns:[{match:"(?<!\\w)(?:continue|return|break)(?!\\w)",name:"keyword.control.$0.shell"},{match:"(?<!\\w)(?:(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|:|\\.)(?!\\/))(?!\\w)(?!-)",name:"support.function.builtin.shell"},{include:"#variable"}]}},match:`(?:(?:(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!nocorrect |nocorrect |nocorrect$|readonly |readonly |readonly$|function |function |function$|foreach |foreach |foreach$|coproc |coproc |coproc$|logout |logout |logout$|export |export |export$|select |select |select$|repeat |repeat |repeat$|pushd |pushd |pushd$|until |until |until$|while |while |while$|local |local |local$|case |case |case$|done |done |done$|elif |elif |elif$|else |else |else$|esac |esac |esac$|popd |popd |popd$|then |then |then$|time |time |time$|for |for |for$|end |end |end$|fi |fi |fi$|do |do |do$|in |in |in$|if |if |if$))(?:((?<=^|;|&|[ \\t])(?:readonly|declare|typeset|export|local)(?=[ \\t]|;|&|$))|((?!"|'|\\\\\\n?$)(?:[^!'"<> \\t\\n\\r]+?)))(?:(?= |\\t)|(?:(?=;|\\||&|\\n|\\)|\\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\))))`,name:"meta.statement.command.name.basic.shell"},block_comment:{begin:"(?:(?:\\s*+)(\\/\\*))",beginCaptures:{1:{name:"punctuation.definition.comment.begin.shell"}},end:"\\*\\/",endCaptures:{0:{name:"punctuation.definition.comment.end.shell"}},name:"comment.block.shell"},boolean:{match:"\\b(?:true|false)\\b",name:"constant.language.$0.shell"},case_statement:{begin:"(?:(\\bcase\\b)(?:[ \\t]*+)(.+?)(?:[ \\t]*+)(\\bin\\b))",beginCaptures:{1:{name:"keyword.control.case.shell"},2:{patterns:[{include:"#initial_context"}]},3:{name:"keyword.control.in.shell"}},end:"\\besac\\b",endCaptures:{0:{name:"keyword.control.esac.shell"}},name:"meta.case.shell",patterns:[{include:"#comment"},{captures:{1:{name:"keyword.operator.pattern.case.default.shell"}},match:"(?:[ \\t]*+)(\\* *\\))"},{begin:"(?<!\\))(?!(?:[ \\t]*+)(?:esac\\b|$))",beginCaptures:{},end:"(?:(?=\\besac\\b)|(\\)))",endCaptures:{1:{name:"keyword.operator.pattern.case.shell"}},name:"meta.case.entry.pattern.shell",patterns:[{include:"#case_statement_context"}]},{begin:"(?<=\\))",beginCaptures:{},end:"(?:(;;)|(?=\\besac\\b))",endCaptures:{1:{name:"punctuation.terminator.statement.case.shell"}},name:"meta.case.entry.body.shell",patterns:[{include:"#typical_statements"},{include:"#initial_context"}]}]},case_statement_context:{patterns:[{match:"\\*",name:"variable.language.special.quantifier.star.shell keyword.operator.quantifier.star.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{match:"\\+",name:"variable.language.special.quantifier.plus.shell keyword.operator.quantifier.plus.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{match:"\\?",name:"variable.language.special.quantifier.question.shell keyword.operator.quantifier.question.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{match:"@",name:"variable.language.special.at.shell keyword.operator.at.shell punctuation.definition.regex.at.shell"},{match:"\\|",name:"keyword.operator.orvariable.language.special.or.shell keyword.operator.alternation.ruby.shell punctuation.definition.regex.alternation.shell punctuation.separator.regex.alternation.shell"},{match:"\\\\.",name:"constant.character.escape.shell"},{match:"(?<=\\tin| in| |\\t|;;)\\(",name:"keyword.operator.pattern.case.shell"},{begin:"(?<=\\S)(\\()",beginCaptures:{1:{name:"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},name:"meta.parenthese.shell",patterns:[{include:"#case_statement_context"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.character-class.shell"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.character-class.shell"}},name:"string.regexp.character-class.shell",patterns:[{match:"\\\\.",name:"constant.character.escape.shell"}]},{include:"#string"},{match:"[^) \\t\\n\\[\\?\\*\\|\\@]",name:"string.unquoted.pattern.shell string.regexp.unquoted.shell"}]},command_name_range:{begin:"\\G",beginCaptures:{},end:"(?:(?= |\\t|;|\\||&|$|\\n|\\)|\\`)|(?=<))",endCaptures:{},name:"meta.statement.command.name.shell",patterns:[{match:"(?<!\\w)(?:continue|return|break)(?!\\w)",name:"entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell"},{match:"(?<!\\w)(?:(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|:|\\.)(?!\\/))(?!\\w)(?!-)",name:"entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell"},{include:"#variable"},{captures:{1:{name:"entity.name.function.call.shell entity.name.command.shell"}},match:`(?:(?<!\\w)(?<=\\G|'|"|\\}|\\))([^ \\n\\t\\r"'=;&\\|\`\\)\\{<>]+))`},{begin:`(?:(?:\\G|(?<! |\\t|;|\\||&|\\n|\\{|#))(?:(\\$?)((?:(")|(')))))`,beginCaptures:{1:{name:"meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell"},2:{},3:{name:"meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"},4:{name:"meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"}},end:"(?<!\\G)(?<=(?:\\2))",endCaptures:{},patterns:[{include:"#continuation_of_single_quoted_command_name"},{include:"#continuation_of_double_quoted_command_name"}]},{include:"#line_continuation"},{include:"#simple_unquoted"}]},command_statement:{begin:"(?:(?:[ \\t]*+)(?:(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!nocorrect |nocorrect |nocorrect$|readonly |readonly |readonly$|function |function |function$|foreach |foreach |foreach$|coproc |coproc |coproc$|logout |logout |logout$|export |export |export$|select |select |select$|repeat |repeat |repeat$|pushd |pushd |pushd$|until |until |until$|while |while |while$|local |local |local$|case |case |case$|done |done |done$|elif |elif |elif$|else |else |else$|esac |esac |esac$|popd |popd |popd$|then |then |then$|time |time |time$|for |for |for$|end |end |end$|fi |fi |fi$|do |do |do$|in |in |in$|if |if |if$)(?!\\\\\\n?$)))",beginCaptures:{},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.statement.command.shell",patterns:[{include:"#command_name_range"},{include:"#line_continuation"},{include:"#option"},{include:"#argument"},{include:"#string"},{include:"#heredoc"}]},comment:{captures:{1:{name:"comment.line.number-sign.shell meta.shebang.shell"},2:{name:"punctuation.definition.comment.shebang.shell"},3:{name:"comment.line.number-sign.shell"},4:{name:"punctuation.definition.comment.shell"}},match:"(?:(?:^|(?:[ \\t]++))(?:((?:(#!)(?:.*)))|((?:(#)(?:.*)))))"},comments:{patterns:[{include:"#block_comment"},{include:"#line_comment"}]},"compound-command":{patterns:[{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},name:"meta.scope.logical-expression.shell",patterns:[{include:"#logical-expression"},{include:"#initial_context"}]},{begin:"(?<=\\s|^){(?=\\s|$)",beginCaptures:{0:{name:"punctuation.definition.group.shell"}},end:"(?<=^|;)\\s*(})",endCaptures:{1:{name:"punctuation.definition.group.shell"}},name:"meta.scope.group.shell",patterns:[{include:"#initial_context"}]}]},continuation_of_double_quoted_command_name:{begin:'(?:\\G(?<="))',beginCaptures:{},contentName:"meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command",end:'"',endCaptures:{0:{name:"string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}},patterns:[{match:'\\\\[\\$\\n`"\\\\]',name:"constant.character.escape.shell"},{include:"#variable"},{include:"#interpolation"}]},continuation_of_single_quoted_command_name:{begin:"(?:\\G(?<='))",beginCaptures:{},contentName:"meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command",end:"'",endCaptures:{0:{name:"string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}}},custom_command_names:{patterns:[]},custom_commands:{patterns:[]},double_quote_context:{patterns:[{match:'\\\\[\\$`"\\\\\\n]',name:"constant.character.escape.shell"},{include:"#variable"},{include:"#interpolation"}]},double_quote_escape_char:{match:'\\\\[\\$`"\\\\\\n]',name:"constant.character.escape.shell"},floating_keyword:{patterns:[{match:"(?<=^|;|&| |\\t)(?:then|elif|else|done|end|do|if|fi)(?= |\\t|;|&|$)",name:"keyword.control.$0.shell"}]},for_statement:{patterns:[{begin:"(?:(\\bfor\\b)(?:(?:[ \\t]*+)((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(?:[ \\t]*+)(\\bin\\b)))",beginCaptures:{1:{name:"keyword.control.for.shell"},2:{name:"variable.other.for.shell"},3:{name:"keyword.control.in.shell"}},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.for.in.shell",patterns:[{include:"#string"},{include:"#simple_unquoted"},{include:"#normal_context"}]},{begin:"(\\bfor\\b)",beginCaptures:{1:{name:"keyword.control.for.shell"}},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.for.shell",patterns:[{include:"#arithmetic_double"},{include:"#normal_context"}]}]},function_definition:{applyEndPatternLast:1,begin:`(?:[ \\t]*+)(?:(?:(\\bfunction\\b)(?:[ \\t]*+)([^ \\t\\n\\r\\(\\)="']+)(?:(?:(\\()(?:[ \\t]*+)(\\)))?))|(?:([^ \\t\\n\\r\\(\\)="']+)(?:[ \\t]*+)(\\()(?:[ \\t]*+)(\\))))`,beginCaptures:{1:{name:"storage.type.function.shell"},2:{name:"entity.name.function.shell"},3:{name:"punctuation.definition.arguments.shell"},4:{name:"punctuation.definition.arguments.shell"},5:{name:"entity.name.function.shell"},6:{name:"punctuation.definition.arguments.shell"},7:{name:"punctuation.definition.arguments.shell"}},end:"(?<=\\}|\\))",endCaptures:{},name:"meta.function.shell",patterns:[{match:"(?:\\G(?:\\t| |\\n))"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},name:"meta.function.body.shell",patterns:[{include:"#initial_context"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},name:"meta.function.body.shell",patterns:[{include:"#initial_context"}]},{include:"#initial_context"}]},heredoc:{patterns:[{begin:`(?:((?<!<)(?:<<-))(?:[ \\t]*+)("|')(?:[ \\t]*+)([^"']+?)(?=\\s|;|&|<|"|')((?:\\2))(.*))`,beginCaptures:{1:{name:"keyword.operator.heredoc.shell"},2:{name:"punctuation.definition.string.heredoc.quote.shell"},3:{name:"punctuation.definition.string.heredoc.delimiter.shell"},4:{name:"punctuation.definition.string.heredoc.quote.shell"},5:{patterns:[{include:"#redirect_fix"},{include:"#typical_statements"}]}},contentName:"string.quoted.heredoc.indent.$3",end:"(?:(?:^\\t*)(?:\\3)(?=\\s|;|&|$))",endCaptures:{0:{name:"punctuation.definition.string.heredoc.$0.shell"}},patterns:[]},{begin:`(?:((?<!<)(?:<<)(?!<))(?:[ \\t]*+)("|')(?:[ \\t]*+)([^"']+?)(?=\\s|;|&|<|"|')((?:\\2))(.*))`,beginCaptures:{1:{name:"keyword.operator.heredoc.shell"},2:{name:"punctuation.definition.string.heredoc.quote.shell"},3:{name:"punctuation.definition.string.heredoc.delimiter.shell"},4:{name:"punctuation.definition.string.heredoc.quote.shell"},5:{patterns:[{include:"#redirect_fix"},{include:"#typical_statements"}]}},contentName:"string.quoted.heredoc.no-indent.$3",end:"(?:^(?:\\3)(?=\\s|;|&|$))",endCaptures:{0:{name:"punctuation.definition.string.heredoc.delimiter.shell"}},patterns:[]},{begin:`(?:((?<!<)(?:<<-))(?:[ \\t]*+)([^"' \\t]+)(?=\\s|;|&|<|"|')(.*))`,beginCaptures:{1:{name:"keyword.operator.heredoc.shell"},2:{name:"punctuation.definition.string.heredoc.delimiter.shell"},3:{patterns:[{include:"#redirect_fix"},{include:"#typical_statements"}]}},contentName:"string.unquoted.heredoc.indent.$2",end:"(?:(?:^\\t*)(?:\\2)(?=\\s|;|&|$))",endCaptures:{0:{name:"punctuation.definition.string.heredoc.delimiter.shell"}},patterns:[{include:"#double_quote_escape_char"},{include:"#variable"},{include:"#interpolation"}]},{begin:`(?:((?<!<)(?:<<)(?!<))(?:[ \\t]*+)([^"' \\t]+)(?=\\s|;|&|<|"|')(.*))`,beginCaptures:{1:{name:"keyword.operator.heredoc.shell"},2:{name:"punctuation.definition.string.heredoc.delimiter.shell"},3:{patterns:[{include:"#redirect_fix"},{include:"#typical_statements"}]}},contentName:"string.unquoted.heredoc.no-indent.$2",end:"(?:^(?:\\2)(?=\\s|;|&|$))",endCaptures:{0:{name:"punctuation.definition.string.heredoc.delimiter.shell"}},patterns:[{include:"#double_quote_escape_char"},{include:"#variable"},{include:"#interpolation"}]}]},herestring:{patterns:[{begin:"(<<<)\\s*(('))",beginCaptures:{1:{name:"keyword.operator.herestring.shell"},2:{name:"string.quoted.single.shell"},3:{name:"punctuation.definition.string.begin.shell"}},contentName:"string.quoted.single.shell",end:"(')",endCaptures:{0:{name:"string.quoted.single.shell"},1:{name:"punctuation.definition.string.end.shell"}},name:"meta.herestring.shell"},{begin:'(<<<)\\s*(("))',beginCaptures:{1:{name:"keyword.operator.herestring.shell"},2:{name:"string.quoted.double.shell"},3:{name:"punctuation.definition.string.begin.shell"}},contentName:"string.quoted.double.shell",end:'(")',endCaptures:{0:{name:"string.quoted.double.shell"},1:{name:"punctuation.definition.string.end.shell"}},name:"meta.herestring.shell",patterns:[{include:"#double_quote_context"}]},{captures:{1:{name:"keyword.operator.herestring.shell"},2:{name:"string.unquoted.herestring.shell",patterns:[{include:"#initial_context"}]}},match:"(<<<)\\s*(([^\\s)\\\\]|\\\\.)+)",name:"meta.herestring.shell"}]},initial_context:{patterns:[{include:"#comment"},{include:"#pipeline"},{include:"#normal_statement_seperator"},{include:"#logical_expression_double"},{include:"#logical_expression_single"},{include:"#assignment_statement"},{include:"#case_statement"},{include:"#for_statement"},{include:"#loop"},{include:"#function_definition"},{include:"#line_continuation"},{include:"#arithmetic_double"},{include:"#misc_ranges"},{include:"#variable"},{include:"#interpolation"},{include:"#heredoc"},{include:"#herestring"},{include:"#redirection"},{include:"#pathname"},{include:"#floating_keyword"},{include:"#alias_statement"},{include:"#normal_statement"},{include:"#string"},{include:"#support"}]},inline_comment:{captures:{1:{name:"comment.block.shell punctuation.definition.comment.begin.shell"},2:{name:"comment.block.shell"},3:{patterns:[{match:"\\*\\/",name:"comment.block.shell punctuation.definition.comment.end.shell"},{match:"\\*",name:"comment.block.shell"}]}},match:"(\\/\\*)((?:(?:[^\\*]|(?:(?:\\*++)[^\\/]))*+)((?:(?:\\*++)\\/)))"},interpolation:{patterns:[{include:"#arithmetic_dollar"},{include:"#subshell_dollar"},{begin:"`",beginCaptures:{0:{name:"punctuation.definition.evaluation.backticks.shell"}},end:"`",endCaptures:{0:{name:"punctuation.definition.evaluation.backticks.shell"}},name:"string.interpolated.backtick.shell",patterns:[{match:"\\\\[`\\\\$]",name:"constant.character.escape.shell"},{begin:"(?<=\\W)(?=#)(?!#{)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.shell"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.shell"}},end:"(?=`)",name:"comment.line.number-sign.shell"}]},{include:"#initial_context"}]}]},keyword:{patterns:[{match:"(?<=^|;|&|\\s)(then|else|elif|fi|for|in|do|done|select|continue|esac|while|until|return)(?=\\s|;|&|$)",name:"keyword.control.shell"},{match:"(?<=^|;|&|\\s)(?:export|declare|typeset|local|readonly)(?=\\s|;|&|$)",name:"storage.modifier.shell"}]},line_comment:{begin:"(?:\\s*+)(\\/\\/)",beginCaptures:{1:{name:"punctuation.definition.comment.shell"}},end:"(?<=\\n)(?<!\\\\\\n)",endCaptures:{},name:"comment.line.double-slash.shell",patterns:[{include:"#line_continuation_character"}]},line_continuation:{match:"\\\\(?=\\n)",name:"constant.character.escape.line-continuation.shell"},"logical-expression":{patterns:[{include:"#arithmetic_no_dollar"},{comment:"do we want a special rule for ( expr )?",match:"=[=~]?|!=?|<|>|&&|\\|\\|",name:"keyword.operator.logical.shell"},{match:"(?<!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])\\b",name:"keyword.operator.logical.shell"}]},logical_expression_context:{patterns:[{include:"#regex_comparison"},{include:"#arithmetic_no_dollar"},{include:"#logical-expression"},{include:"#logical_expression_single"},{include:"#logical_expression_double"},{include:"#comment"},{include:"#boolean"},{include:"#redirect_number"},{include:"#numeric_literal"},{include:"#pipeline"},{include:"#normal_statement_seperator"},{include:"#string"},{include:"#variable"},{include:"#interpolation"},{include:"#heredoc"},{include:"#herestring"},{include:"#pathname"},{include:"#floating_keyword"},{include:"#support"}]},logical_expression_double:{begin:"\\[\\[",beginCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},end:"\\]\\]",endCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},name:"meta.scope.logical-expression.shell",patterns:[{include:"#logical_expression_context"}]},logical_expression_single:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.logical-expression.shell"}},name:"meta.scope.logical-expression.shell",patterns:[{include:"#logical_expression_context"}]},loop:{patterns:[{begin:"(?<=^|;|&|\\s)(for)\\s+(.+?)\\s+(in)(?=\\s|;|&|$)",beginCaptures:{1:{name:"keyword.control.shell"},2:{name:"variable.other.loop.shell",patterns:[{include:"#string"}]},3:{name:"keyword.control.shell"}},end:"(?<=^|;|&|\\s)done(?=\\s|;|&|$|\\))",endCaptures:{0:{name:"keyword.control.shell"}},name:"meta.scope.for-in-loop.shell",patterns:[{include:"#initial_context"}]},{begin:"(?<=^|;|&|\\s)(while|until)(?=\\s|;|&|$)",beginCaptures:{1:{name:"keyword.control.shell"}},end:"(?<=^|;|&|\\s)done(?=\\s|;|&|$|\\))",endCaptures:{0:{name:"keyword.control.shell"}},name:"meta.scope.while-loop.shell",patterns:[{include:"#initial_context"}]},{begin:"(?<=^|;|&|\\s)(select)\\s+((?:[^\\s\\\\]|\\\\.)+)(?=\\s|;|&|$)",beginCaptures:{1:{name:"keyword.control.shell"},2:{name:"variable.other.loop.shell"}},end:"(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))",endCaptures:{1:{name:"keyword.control.shell"}},name:"meta.scope.select-block.shell",patterns:[{include:"#initial_context"}]},{begin:"(?<=^|;|&|\\s)if(?=\\s|;|&|$)",beginCaptures:{0:{name:"keyword.control.if.shell"}},end:"(?<=^|;|&|\\s)fi(?=\\s|;|&|$)",endCaptures:{0:{name:"keyword.control.fi.shell"}},name:"meta.scope.if-block.shell",patterns:[{include:"#initial_context"}]}]},math:{patterns:[{include:"#variable"},{match:"\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*/%+\\-&^|]=|<<=|>>=",name:"keyword.operator.arithmetic.shell"},{match:"0[xX][0-9A-Fa-f]+",name:"constant.numeric.hex.shell"},{match:";",name:"punctuation.separator.semicolon.range"},{match:"0\\d+",name:"constant.numeric.octal.shell"},{match:"\\d{1,2}#[0-9a-zA-Z@_]+",name:"constant.numeric.other.shell"},{match:"\\d+",name:"constant.numeric.integer.shell"},{match:"(?<!\\w)(?:[a-zA-Z_0-9]+)(?!\\w)",name:"variable.other.normal.shell"}]},math_operators:{patterns:[{match:"\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*/%+\\-&^|]=|<<=|>>=",name:"keyword.operator.arithmetic.shell"},{match:"0[xX][0-9A-Fa-f]+",name:"constant.numeric.hex.shell"},{match:"0\\d+",name:"constant.numeric.octal.shell"},{match:"\\d{1,2}#[0-9a-zA-Z@_]+",name:"constant.numeric.other.shell"},{match:"\\d+",name:"constant.numeric.integer.shell"}]},misc_ranges:{patterns:[{include:"#logical_expression_single"},{include:"#logical_expression_double"},{include:"#subshell_dollar"},{begin:"(?<![^ \\t])({)",beginCaptures:{1:{name:"punctuation.definition.group.shell"}},end:"}",endCaptures:{0:{name:"punctuation.definition.group.shell"}},name:"meta.scope.group.shell",patterns:[{include:"#initial_context"}]}]},modified_assignment_statement:{begin:"(?<=^|;|&|[ \\t])(?:readonly|declare|typeset|export|local)(?=[ \\t]|;|&|$)",beginCaptures:{0:{name:"storage.modifier.$0.shell"}},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.statement.shell meta.expression.assignment.modified.shell",patterns:[{match:"(?<!\\w)-\\w+\\b",name:"string.unquoted.argument.shell constant.other.option.shell"},{include:"#array_value"},{captures:{1:{name:"variable.other.assignment.shell"},2:{name:"punctuation.definition.array.access.shell"},3:{name:"variable.other.assignment.shell"},4:{name:"constant.numeric.shell constant.numeric.integer.shell"},5:{name:"punctuation.definition.array.access.shell"},6:{name:"keyword.operator.assignment.shell"},7:{name:"keyword.operator.assignment.compound.shell"},8:{name:"keyword.operator.assignment.compound.shell"},9:{name:"constant.numeric.shell constant.numeric.hex.shell"},10:{name:"constant.numeric.shell constant.numeric.octal.shell"},11:{name:"constant.numeric.shell constant.numeric.other.shell"},12:{name:"constant.numeric.shell constant.numeric.decimal.shell"},13:{name:"constant.numeric.shell constant.numeric.version.shell"},14:{name:"constant.numeric.shell constant.numeric.integer.shell"}},match:"(?:((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(?:(?:(\\[)((?:(?:(?:(?:\\$?)(?:(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))|@)|\\*)|(-?\\d+)))(\\]))?)(?:(?:(?:(\\=)|(\\+\\=))|(\\-\\=))?)(?:(?:(?<==| |\\t|^|\\{|\\(|\\[)(?:(?:(?:(?:(?:(0[xX][0-9A-Fa-f]+)|(0\\d+))|(\\d{1,2}#[0-9a-zA-Z@_]+))|(-?\\d+(?:\\.\\d+)))|(-?\\d+(?:\\.\\d+)+))|(-?\\d+))(?= |\\t|$|\\}|\\)|;))?))"},{include:"#normal_context"}]},modifiers:{match:"(?<=^|;|&|[ \\t])(?:readonly|declare|typeset|export|local)(?=[ \\t]|;|&|$)",name:"storage.modifier.$0.shell"},normal_assignment_statement:{begin:"(?:[ \\t]*+)(?:((?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))(?:(?:(\\[)((?:(?:(?:(?:\\$?)(?:(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w))|@)|\\*)|(-?\\d+)))(\\]))?))(?:(?:(\\=)|(\\+\\=))|(\\-\\=))",beginCaptures:{1:{name:"variable.other.assignment.shell"},2:{name:"punctuation.definition.array.access.shell"},3:{name:"variable.other.assignment.shell"},4:{name:"constant.numeric.shell constant.numeric.integer.shell"},5:{name:"punctuation.definition.array.access.shell"},6:{name:"keyword.operator.assignment.shell"},7:{name:"keyword.operator.assignment.compound.shell"},8:{name:"keyword.operator.assignment.compound.shell"}},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.expression.assignment.shell",patterns:[{include:"#comment"},{include:"#string"},{include:"#normal_assignment_statement"},{begin:"(?<= |\\t)(?! |\\t|\\w+=)",beginCaptures:{},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.statement.command.env.shell",patterns:[{include:"#command_name_range"},{include:"#line_continuation"},{include:"#option"},{include:"#argument"},{include:"#string"}]},{include:"#simple_unquoted"},{include:"#normal_context"}]},normal_context:{patterns:[{include:"#comment"},{include:"#pipeline"},{include:"#normal_statement_seperator"},{include:"#misc_ranges"},{include:"#boolean"},{include:"#redirect_number"},{include:"#numeric_literal"},{include:"#string"},{include:"#variable"},{include:"#interpolation"},{include:"#heredoc"},{include:"#herestring"},{include:"#redirection"},{include:"#pathname"},{include:"#floating_keyword"},{include:"#support"},{include:"#parenthese"}]},normal_statement:{begin:"(?:(?!^[ \\t]*+$)(?:(?<=^until | until |\\tuntil |^while | while |\\twhile |^elif | elif |\\telif |^else | else |\\telse |^then | then |\\tthen |^do | do |\\tdo |^if | if |\\tif )|(?<=(?:^|;|\\||&|!|\\(|\\{|\\`)))(?:[ \\t]*+)(?!nocorrect\\W|nocorrect\\$|function\\W|function\\$|foreach\\W|foreach\\$|repeat\\W|repeat\\$|logout\\W|logout\\$|coproc\\W|coproc\\$|select\\W|select\\$|while\\W|while\\$|pushd\\W|pushd\\$|until\\W|until\\$|case\\W|case\\$|done\\W|done\\$|elif\\W|elif\\$|else\\W|else\\$|esac\\W|esac\\$|popd\\W|popd\\$|then\\W|then\\$|time\\W|time\\$|for\\W|for\\$|end\\W|end\\$|fi\\W|fi\\$|do\\W|do\\$|in\\W|in\\$|if\\W|if\\$))",beginCaptures:{},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.statement.shell",patterns:[{include:"#typical_statements"}]},normal_statement_seperator:{captures:{1:{name:"punctuation.terminator.statement.semicolon.shell"},2:{name:"punctuation.separator.statement.and.shell"},3:{name:"punctuation.separator.statement.or.shell"},4:{name:"punctuation.separator.statement.background.shell"}},match:"(?:(?:(?:(;)|(&&))|(\\|\\|))|(&))"},numeric_literal:{captures:{1:{name:"constant.numeric.shell constant.numeric.hex.shell"},2:{name:"constant.numeric.shell constant.numeric.octal.shell"},3:{name:"constant.numeric.shell constant.numeric.other.shell"},4:{name:"constant.numeric.shell constant.numeric.decimal.shell"},5:{name:"constant.numeric.shell constant.numeric.version.shell"},6:{name:"constant.numeric.shell constant.numeric.integer.shell"}},match:"(?<==| |\\t|^|\\{|\\(|\\[)(?:(?:(?:(?:(?:(0[xX][0-9A-Fa-f]+)|(0\\d+))|(\\d{1,2}#[0-9a-zA-Z@_]+))|(-?\\d+(?:\\.\\d+)))|(-?\\d+(?:\\.\\d+)+))|(-?\\d+))(?= |\\t|$|\\}|\\)|;)"},option:{begin:"(?:(?:[ \\t]++)(-)((?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))))",beginCaptures:{1:{name:"string.unquoted.argument.shell constant.other.option.dash.shell"},2:{name:"string.unquoted.argument.shell constant.other.option.shell"}},contentName:"string.unquoted.argument constant.other.option",end:"(?:(?=[ \\t])|(?:(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)))",endCaptures:{},patterns:[{include:"#option_context"}]},option_context:{patterns:[{include:"#misc_ranges"},{include:"#string"},{include:"#variable"},{include:"#interpolation"},{include:"#heredoc"},{include:"#herestring"},{include:"#redirection"},{include:"#pathname"},{include:"#floating_keyword"},{include:"#support"}]},parenthese:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parenthese.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parenthese.shell"}},name:"meta.parenthese.group.shell",patterns:[{include:"#initial_context"}]}]},pathname:{patterns:[{match:"(?<=\\s|:|=|^)~",name:"keyword.operator.tilde.shell"},{match:"\\*|\\?",name:"keyword.operator.glob.shell"},{begin:"([?*+@!])(\\()",beginCaptures:{1:{name:"keyword.operator.extglob.shell"},2:{name:"punctuation.definition.extglob.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.extglob.shell"}},name:"meta.structure.extglob.shell",patterns:[{include:"#initial_context"}]}]},pipeline:{patterns:[{match:"(?<=^|;|&|\\s)(time)(?=\\s|;|&|$)",name:"keyword.other.shell"},{match:"[|!]",name:"keyword.operator.pipe.shell"}]},redirect_fix:{captures:{1:{name:"keyword.operator.redirect.shell"},2:{name:"string.unquoted.argument.shell"}},match:"(?:(>>?)(?:[ \\t]*+)([^ \\t\\n>&;<>\\(\\)\\$`\\\\\"'<\\|]+))"},redirect_number:{captures:{1:{name:"keyword.operator.redirect.stdout.shell"},2:{name:"keyword.operator.redirect.stderr.shell"},3:{name:"keyword.operator.redirect.$3.shell"}},match:"(?<=[ \\t])(?:(?:(1)|(2)|(\\d+))(?=>))"},redirection:{patterns:[{begin:"[><]\\(",beginCaptures:{0:{name:"punctuation.definition.string.begin.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.string.end.shell"}},name:"string.interpolated.process-substitution.shell",patterns:[{include:"#initial_context"}]},{match:"(?<![<>])(&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>)(?![<>])",name:"keyword.operator.redirect.shell"}]},regex_comparison:{match:"\\=~",name:"keyword.operator.logical.regex.shell"},regexp:{patterns:[{match:"(?:.+)"}]},simple_options:{captures:{0:{patterns:[{captures:{1:{name:"string.unquoted.argument.shell constant.other.option.dash.shell"},2:{name:"string.unquoted.argument.shell constant.other.option.shell"}},match:"(?:[ \\t]++)(\\-)(\\w+)"}]}},match:"(?:(?:[ \\t]++)\\-(?:\\w+))*"},simple_unquoted:{match:"[^ \\t\\n>&;<>\\(\\)\\$`\\\\\"'<\\|]",name:"string.unquoted.shell"},special_expansion:{match:"!|:[-=?]?|\\*|@|##|#|%%|%|\\/",name:"keyword.operator.expansion.shell"},start_of_command:{match:"(?:(?:[ \\t]*+)(?:(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!nocorrect |nocorrect |nocorrect$|readonly |readonly |readonly$|function |function |function$|foreach |foreach |foreach$|coproc |coproc |coproc$|logout |logout |logout$|export |export |export$|select |select |select$|repeat |repeat |repeat$|pushd |pushd |pushd$|until |until |until$|while |while |while$|local |local |local$|case |case |case$|done |done |done$|elif |elif |elif$|else |else |else$|esac |esac |esac$|popd |popd |popd$|then |then |then$|time |time |time$|for |for |for$|end |end |end$|fi |fi |fi$|do |do |do$|in |in |in$|if |if |if$)(?!\\\\\\n?$)))"},string:{patterns:[{match:"\\\\.",name:"constant.character.escape.shell"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.shell"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.shell"}},name:"string.quoted.single.shell"},{begin:'\\$?"',beginCaptures:{0:{name:"punctuation.definition.string.begin.shell"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.shell"}},name:"string.quoted.double.shell",patterns:[{match:'\\\\[\\$\\n`"\\\\]',name:"constant.character.escape.shell"},{include:"#variable"},{include:"#interpolation"}]},{begin:"\\$'",beginCaptures:{0:{name:"punctuation.definition.string.begin.shell"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.shell"}},name:"string.quoted.single.dollar.shell",patterns:[{match:"\\\\(?:a|b|e|f|n|r|t|v|\\\\|')",name:"constant.character.escape.ansi-c.shell"},{match:'\\\\[0-9]{3}"',name:"constant.character.escape.octal.shell"},{match:'\\\\x[0-9a-fA-F]{2}"',name:"constant.character.escape.hex.shell"},{match:'\\\\c."',name:"constant.character.escape.control-char.shell"}]}]},subshell_dollar:{patterns:[{begin:"(?:\\$\\()",beginCaptures:{0:{name:"punctuation.definition.subshell.single.shell"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.subshell.single.shell"}},name:"meta.scope.subshell",patterns:[{include:"#parenthese"},{include:"#initial_context"}]}]},support:{patterns:[{match:"(?<=^|;|&|\\s)(?::|\\.)(?=\\s|;|&|$)",name:"support.function.builtin.shell"}]},typical_statements:{patterns:[{include:"#assignment_statement"},{include:"#case_statement"},{include:"#for_statement"},{include:"#while_statement"},{include:"#function_definition"},{include:"#command_statement"},{include:"#line_continuation"},{include:"#arithmetic_double"},{include:"#normal_context"}]},variable:{patterns:[{captures:{1:{name:"punctuation.definition.variable.shell variable.parameter.positional.all.shell"},2:{name:"variable.parameter.positional.all.shell"}},match:"(?:(\\$)(\\@(?!\\w)))"},{captures:{1:{name:"punctuation.definition.variable.shell variable.parameter.positional.shell"},2:{name:"variable.parameter.positional.shell"}},match:"(?:(\\$)([0-9](?!\\w)))"},{captures:{1:{name:"punctuation.definition.variable.shell variable.language.special.shell"},2:{name:"variable.language.special.shell"}},match:"(?:(\\$)([-*#?$!0_](?!\\w)))"},{begin:"(?:(\\$)(\\{)(?:[ \\t]*+)(?=\\d))",beginCaptures:{1:{name:"punctuation.definition.variable.shell variable.parameter.positional.shell"},2:{name:"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},contentName:"meta.parameter-expansion",end:"\\}",endCaptures:{0:{name:"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},patterns:[{include:"#special_expansion"},{include:"#array_access_inline"},{match:"[0-9]+",name:"variable.parameter.positional.shell"},{match:"(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w)",name:"variable.other.normal.shell"},{include:"#variable"},{include:"#string"}]},{begin:"(?:(\\$)(\\{))",beginCaptures:{1:{name:"punctuation.definition.variable.shell"},2:{name:"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell"}},contentName:"meta.parameter-expansion",end:"\\}",endCaptures:{0:{name:"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell"}},patterns:[{include:"#special_expansion"},{include:"#array_access_inline"},{match:"(?<!\\w)(?:[a-zA-Z_0-9-]+)(?!\\w)",name:"variable.other.normal.shell"},{include:"#variable"},{include:"#string"}]},{captures:{1:{name:"punctuation.definition.variable.shell variable.other.normal.shell"},2:{name:"variable.other.normal.shell"}},match:"(?:(\\$)((?:\\w+)(?!\\w)))"}]},while_statement:{patterns:[{begin:"(\\bwhile\\b)",beginCaptures:{1:{name:"keyword.control.while.shell"}},end:"(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",endCaptures:{},name:"meta.while.shell",patterns:[{include:"#line_continuation"},{include:"#math_operators"},{include:"#option"},{include:"#simple_unquoted"},{include:"#normal_context"},{include:"#string"}]}]}},scopeName:"source.shell",aliases:["bash","sh","shell","zsh"]});var n=[e];export{n as default}; diff --git a/assets/chunks/shellsession.D2P9pGgM.js b/assets/chunks/shellsession.D2P9pGgM.js new file mode 100644 index 000000000..496cdda0b --- /dev/null +++ b/assets/chunks/shellsession.D2P9pGgM.js @@ -0,0 +1 @@ +import s from"./shellscript.BZfs-ost.js";const e=Object.freeze({displayName:"Shell Session",fileTypes:["sh-session"],name:"shellsession",patterns:[{captures:{1:{name:"entity.other.prompt-prefix.shell-session"},2:{name:"punctuation.separator.prompt.shell-session"},3:{name:"source.shell",patterns:[{include:"source.shell"}]}},match:"(?x) ^ (?: ( (?:\\(\\S+\\)\\s*)? (?: sh\\S*? | \\w+\\S+[@:]\\S+(?:\\s+\\S+)? | \\[\\S+?[@:][^\\n]+?\\].*? ) ) \\s* )? ( [>$#%❯➜] | \\p{Greek} ) \\s+ (.*) $"},{match:"^.+$",name:"meta.output.shell-session"}],scopeName:"text.shell-session",embeddedLangs:["shellscript"],aliases:["console"]});var t=[...s,e];export{t as default}; diff --git a/assets/chunks/slack-dark.C7oZ9nno.js b/assets/chunks/slack-dark.C7oZ9nno.js new file mode 100644 index 000000000..bd11ae4b7 --- /dev/null +++ b/assets/chunks/slack-dark.C7oZ9nno.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#222222","activityBarBadge.background":"#1D978D","button.background":"#0077B5","button.foreground":"#FFF","button.hoverBackground":"#005076","debugExceptionWidget.background":"#141414","debugExceptionWidget.border":"#FFF","debugToolBar.background":"#141414","editor.background":"#222222","editor.foreground":"#E6E6E6","editor.inactiveSelectionBackground":"#3a3d41","editor.lineHighlightBackground":"#141414","editor.lineHighlightBorder":"#141414","editor.selectionHighlightBackground":"#add6ff26","editorIndentGuide.activeBackground":"#707070","editorIndentGuide.background":"#404040","editorLink.activeForeground":"#0077B5","editorSuggestWidget.selectedBackground":"#0077B5","extensionButton.prominentBackground":"#0077B5","extensionButton.prominentForeground":"#FFF","extensionButton.prominentHoverBackground":"#005076",focusBorder:"#0077B5","gitDecoration.addedResourceForeground":"#ECB22E","gitDecoration.conflictingResourceForeground":"#FFF","gitDecoration.deletedResourceForeground":"#FFF","gitDecoration.ignoredResourceForeground":"#877583","gitDecoration.modifiedResourceForeground":"#ECB22E","gitDecoration.untrackedResourceForeground":"#ECB22E","input.placeholderForeground":"#7A7A7A","list.activeSelectionBackground":"#222222","list.dropBackground":"#383b3d","list.focusBackground":"#0077B5","list.hoverBackground":"#222222","menu.background":"#252526","menu.foreground":"#E6E6E6","notificationLink.foreground":"#0077B5","settings.numberInputBackground":"#292929","settings.textInputBackground":"#292929","sideBarSectionHeader.background":"#222222","sideBarTitle.foreground":"#E6E6E6","statusBar.background":"#222222","statusBar.debuggingBackground":"#1D978D","statusBar.noFolderBackground":"#141414","textLink.activeForeground":"#0077B5","textLink.foreground":"#0077B5","titleBar.activeBackground":"#222222","titleBar.activeForeground":"#E6E6E6","titleBar.inactiveBackground":"#222222","titleBar.inactiveForeground":"#7A7A7A"},displayName:"Slack Dark",name:"slack-dark",tokenColors:[{scope:["meta.embedded","source.groovy.embedded"],settings:{foreground:"#D4D4D4"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"header",settings:{foreground:"#000080"}},{scope:"comment",settings:{foreground:"#6A9955"}},{scope:"constant.language",settings:{foreground:"#569cd6"}},{scope:["constant.numeric"],settings:{foreground:"#b5cea8"}},{scope:"constant.regexp",settings:{foreground:"#646695"}},{scope:"entity.name.tag",settings:{foreground:"#569cd6"}},{scope:"entity.name.tag.css",settings:{foreground:"#d7ba7d"}},{scope:"entity.other.attribute-name",settings:{foreground:"#9cdcfe"}},{scope:["entity.other.attribute-name.class.css","entity.other.attribute-name.class.mixin.css","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.pseudo-class.css","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.attribute.scss","entity.other.attribute-name.scss"],settings:{foreground:"#d7ba7d"}},{scope:"invalid",settings:{foreground:"#f44747"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.inserted",settings:{foreground:"#b5cea8"}},{scope:"markup.deleted",settings:{foreground:"#ce9178"}},{scope:"markup.changed",settings:{foreground:"#569cd6"}},{scope:"punctuation.definition.quote.begin.markdown",settings:{foreground:"#6A9955"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#6796e6"}},{scope:"markup.inline.raw",settings:{foreground:"#ce9178"}},{scope:"punctuation.definition.tag",settings:{foreground:"#808080"}},{scope:"meta.preprocessor",settings:{foreground:"#569cd6"}},{scope:"meta.preprocessor.string",settings:{foreground:"#ce9178"}},{scope:"meta.preprocessor.numeric",settings:{foreground:"#b5cea8"}},{scope:"meta.structure.dictionary.key.python",settings:{foreground:"#9cdcfe"}},{scope:"meta.diff.header",settings:{foreground:"#569cd6"}},{scope:"storage",settings:{foreground:"#569cd6"}},{scope:"storage.type",settings:{foreground:"#569cd6"}},{scope:"storage.modifier",settings:{foreground:"#569cd6"}},{scope:"string",settings:{foreground:"#ce9178"}},{scope:"string.tag",settings:{foreground:"#ce9178"}},{scope:"string.value",settings:{foreground:"#ce9178"}},{scope:"string.regexp",settings:{foreground:"#d16969"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#569cd6"}},{scope:["meta.template.expression"],settings:{foreground:"#d4d4d4"}},{scope:["support.type.vendored.property-name","support.type.property-name","variable.css","variable.scss","variable.other.less","source.coffee.embedded"],settings:{foreground:"#9cdcfe"}},{scope:"keyword",settings:{foreground:"#569cd6"}},{scope:"keyword.control",settings:{foreground:"#569cd6"}},{scope:"keyword.operator",settings:{foreground:"#d4d4d4"}},{scope:["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.instanceof","keyword.operator.logical.python"],settings:{foreground:"#569cd6"}},{scope:"keyword.other.unit",settings:{foreground:"#b5cea8"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#569cd6"}},{scope:"support.function.git-rebase",settings:{foreground:"#9cdcfe"}},{scope:"constant.sha.git-rebase",settings:{foreground:"#b5cea8"}},{scope:["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],settings:{foreground:"#d4d4d4"}},{scope:"variable.language",settings:{foreground:"#569cd6"}},{scope:["entity.name.function","support.function","support.constant.handlebars"],settings:{foreground:"#DCDCAA"}},{scope:["meta.return-type","support.class","support.type","entity.name.type","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],settings:{foreground:"#4EC9B0"}},{scope:["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class"],settings:{foreground:"#4EC9B0"}},{scope:"keyword.control",settings:{foreground:"#C586C0"}},{scope:["variable","meta.definition.variable.name","support.variable","entity.name.variable"],settings:{foreground:"#9CDCFE"}},{scope:["meta.object-literal.key"],settings:{foreground:"#9CDCFE"}},{scope:["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],settings:{foreground:"#CE9178"}},{scope:["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],settings:{foreground:"#CE9178"}},{scope:["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],settings:{foreground:"#d16969"}},{scope:["keyword.operator.or.regexp","keyword.control.anchor.regexp"],settings:{foreground:"#DCDCAA"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#d7ba7d"}},{scope:"constant.character",settings:{foreground:"#569cd6"}},{scope:"constant.character.escape",settings:{foreground:"#d7ba7d"}},{scope:"token.info-token",settings:{foreground:"#6796e6"}},{scope:"token.warn-token",settings:{foreground:"#cd9731"}},{scope:"token.error-token",settings:{foreground:"#f44747"}},{scope:"token.debug-token",settings:{foreground:"#b267e6"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/slack-ochin.hXH8Gyq8.js b/assets/chunks/slack-ochin.hXH8Gyq8.js new file mode 100644 index 000000000..f201bee9a --- /dev/null +++ b/assets/chunks/slack-ochin.hXH8Gyq8.js @@ -0,0 +1 @@ +var o=Object.freeze({colors:{"activityBar.background":"#161F26","activityBar.dropBackground":"#FFF","activityBar.foreground":"#FFF","activityBarBadge.background":"#8AE773","activityBarBadge.foreground":"#FFF","badge.background":"#8AE773","breadcrumb.focusForeground":"#475663","breadcrumb.foreground":"#161F26","button.background":"#475663","button.foreground":"#FFF","button.hoverBackground":"#161F26","debugExceptionWidget.background":"#AED4FB","debugExceptionWidget.border":"#161F26","debugToolBar.background":"#161F26","dropdown.background":"#FFF","dropdown.border":"#DCDEDF","dropdown.foreground":"#DCDEDF","dropdown.listBackground":"#FFF","editor.background":"#FFF","editor.findMatchBackground":"#AED4FB","editor.foreground":"#000","editor.lineHighlightBackground":"#EEEEEE","editor.selectionBackground":"#AED4FB","editor.wordHighlightBackground":"#AED4FB","editor.wordHighlightStrongBackground":"#EEEEEE","editorActiveLineNumber.foreground":"#475663","editorGroup.emptyBackground":"#2D3E4C","editorGroup.focusedEmptyBorder":"#2D3E4C","editorGroupHeader.tabsBackground":"#2D3E4C","editorHint.border":"#F9F9F9","editorHint.foreground":"#F9F9F9","editorIndentGuide.activeBackground":"#dbdbdb","editorIndentGuide.background":"#F3F3F3","editorLineNumber.foreground":"#b9b9b9","editorMarkerNavigation.background":"#F9F9F9","editorMarkerNavigationError.background":"#F44C5E","editorMarkerNavigationInfo.background":"#6182b8","editorMarkerNavigationWarning.background":"#F6B555","editorPane.background":"#2D3E4C","editorSuggestWidget.foreground":"#2D3E4C","editorSuggestWidget.highlightForeground":"#2D3E4C","editorSuggestWidget.selectedBackground":"#b9b9b9","editorWidget.background":"#F9F9F9","editorWidget.border":"#dbdbdb","extensionButton.prominentBackground":"#475663","extensionButton.prominentForeground":"#F6F6F6","extensionButton.prominentHoverBackground":"#161F26",focusBorder:"#161F26",foreground:"#616161","gitDecoration.addedResourceForeground":"#ECB22E","gitDecoration.conflictingResourceForeground":"#FFF","gitDecoration.deletedResourceForeground":"#FFF","gitDecoration.ignoredResourceForeground":"#877583","gitDecoration.modifiedResourceForeground":"#ECB22E","gitDecoration.untrackedResourceForeground":"#ECB22E","input.background":"#FFF","input.border":"#161F26","input.foreground":"#000","input.placeholderForeground":"#a0a0a0","inputOption.activeBorder":"#3E313C","inputValidation.errorBackground":"#F44C5E","inputValidation.errorForeground":"#FFF","inputValidation.infoBackground":"#6182b8","inputValidation.infoForeground":"#FFF","inputValidation.warningBackground":"#F6B555","inputValidation.warningForeground":"#000","list.activeSelectionBackground":"#5899C5","list.activeSelectionForeground":"#fff","list.focusBackground":"#d5e1ea","list.focusForeground":"#fff","list.highlightForeground":"#2D3E4C","list.hoverBackground":"#d5e1ea","list.hoverForeground":"#fff","list.inactiveFocusBackground":"#161F26","list.inactiveSelectionBackground":"#5899C5","list.inactiveSelectionForeground":"#fff","list.invalidItemForeground":"#fff","menu.background":"#161F26","menu.foreground":"#F9FAFA","menu.separatorBackground":"#F9FAFA","notificationCenter.border":"#161F26","notificationCenterHeader.foreground":"#FFF","notificationLink.foreground":"#FFF","notificationToast.border":"#161F26","notifications.background":"#161F26","notifications.border":"#161F26","notifications.foreground":"#FFF","panel.border":"#2D3E4C","panelTitle.activeForeground":"#161F26","progressBar.background":"#8AE773","scrollbar.shadow":"#ffffff00","scrollbarSlider.activeBackground":"#161F267e","scrollbarSlider.background":"#161F267e","scrollbarSlider.hoverBackground":"#161F267e","settings.dropdownBorder":"#161F26","settings.dropdownForeground":"#161F26","settings.headerForeground":"#161F26","sideBar.background":"#2D3E4C","sideBar.foreground":"#DCDEDF","sideBarSectionHeader.background":"#161F26","sideBarSectionHeader.foreground":"#FFF","sideBarTitle.foreground":"#FFF","statusBar.background":"#5899C5","statusBar.debuggingBackground":"#8AE773","statusBar.foreground":"#FFF","statusBar.noFolderBackground":"#161F26","tab.activeBackground":"#FFF","tab.activeForeground":"#000","tab.border":"#F3F3F3","tab.inactiveBackground":"#F3F3F3","tab.inactiveForeground":"#686868","terminal.ansiBlack":"#000000","terminal.ansiBlue":"#6182b8","terminal.ansiBrightBlack":"#90a4ae","terminal.ansiBrightBlue":"#6182b8","terminal.ansiBrightCyan":"#39adb5","terminal.ansiBrightGreen":"#91b859","terminal.ansiBrightMagenta":"#7c4dff","terminal.ansiBrightRed":"#e53935","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#ffb62c","terminal.ansiCyan":"#39adb5","terminal.ansiGreen":"#91b859","terminal.ansiMagenta":"#7c4dff","terminal.ansiRed":"#e53935","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#ffb62c","terminal.border":"#2D3E4C","terminal.foreground":"#161F26","terminal.selectionBackground":"#0006","textPreformat.foreground":"#161F26","titleBar.activeBackground":"#2D3E4C","titleBar.activeForeground":"#FFF","titleBar.border":"#2D3E4C","titleBar.inactiveBackground":"#161F26","titleBar.inactiveForeground":"#685C66","welcomePage.buttonBackground":"#F3F3F3","welcomePage.buttonHoverBackground":"#ECECEC","widget.shadow":"#161F2694"},displayName:"Slack Ochin",name:"slack-ochin",tokenColors:[{settings:{foreground:"#002339"}},{scope:["meta.paragraph.markdown","string.other.link.description.title.markdown"],settings:{foreground:"#110000"}},{scope:["entity.name.section.markdown","punctuation.definition.heading.markdown"],settings:{foreground:"#034c7c"}},{scope:["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","markup.quote.markdown"],settings:{foreground:"#00AC8F"}},{scope:["markup.quote.markdown"],settings:{fontStyle:"italic",foreground:"#003494"}},{scope:["markup.bold.markdown","punctuation.definition.bold.markdown"],settings:{fontStyle:"bold",foreground:"#4e76b5"}},{scope:["markup.italic.markdown","punctuation.definition.italic.markdown"],settings:{fontStyle:"italic",foreground:"#C792EA"}},{scope:["markup.inline.raw.string.markdown","markup.fenced_code.block.markdown"],settings:{fontStyle:"italic",foreground:"#0460b1"}},{scope:["punctuation.definition.metadata.markdown"],settings:{foreground:"#00AC8F"}},{scope:["markup.underline.link.image.markdown","markup.underline.link.markdown"],settings:{foreground:"#924205"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#357b42"}},{scope:"string",settings:{foreground:"#a44185"}},{scope:"constant.numeric",settings:{foreground:"#174781"}},{scope:"constant",settings:{foreground:"#174781"}},{scope:"language.method",settings:{foreground:"#174781"}},{scope:["constant.character","constant.other"],settings:{foreground:"#174781"}},{scope:"variable",settings:{fontStyle:"",foreground:"#2f86d2"}},{scope:"variable.language.this",settings:{fontStyle:"",foreground:"#000000"}},{scope:"keyword",settings:{fontStyle:"",foreground:"#7b30d0"}},{scope:"storage",settings:{fontStyle:"",foreground:"#da5221"}},{scope:"storage.type",settings:{fontStyle:"",foreground:"#0991b6"}},{scope:"entity.name.class",settings:{foreground:"#1172c7"}},{scope:"entity.other.inherited-class",settings:{fontStyle:"",foreground:"#b02767"}},{scope:"entity.name.function",settings:{fontStyle:"",foreground:"#7eb233"}},{scope:"variable.parameter",settings:{fontStyle:"",foreground:"#b1108e"}},{scope:"entity.name.tag",settings:{fontStyle:"",foreground:"#0444ac"}},{scope:"text.html.basic",settings:{fontStyle:"",foreground:"#0071ce"}},{scope:"entity.name.type",settings:{foreground:"#0444ac"}},{scope:"entity.other.attribute-name",settings:{fontStyle:"italic",foreground:"#df8618"}},{scope:"support.function",settings:{fontStyle:"",foreground:"#1ab394"}},{scope:"support.constant",settings:{fontStyle:"",foreground:"#174781"}},{scope:["support.type","support.class"],settings:{foreground:"#dc3eb7"}},{scope:"support.other.variable",settings:{foreground:"#224555"}},{scope:"invalid",settings:{fontStyle:" italic bold underline",foreground:"#207bb8"}},{scope:"invalid.deprecated",settings:{fontStyle:" bold italic underline",foreground:"#207bb8"}},{scope:"source.json support",settings:{foreground:"#6dbdfa"}},{scope:["source.json string","source.json punctuation.definition.string"],settings:{foreground:"#00820f"}},{scope:"markup.list",settings:{foreground:"#207bb8"}},{scope:["markup.heading punctuation.definition.heading","entity.name.section"],settings:{fontStyle:"",foreground:"#4FB4D8"}},{scope:["text.html.markdown meta.paragraph meta.link.inline","text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.begin.markdown","text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.end.markdown"],settings:{foreground:"#87429A"}},{scope:"markup.quote",settings:{foreground:"#87429A"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#08134A"}},{scope:["markup.italic","punctuation.definition.italic"],settings:{fontStyle:"italic",foreground:"#174781"}},{scope:"meta.link",settings:{foreground:"#87429A"}}],type:"light"});export{o as default}; diff --git a/assets/chunks/smalltalk.DSsji4Hu.js b/assets/chunks/smalltalk.DSsji4Hu.js new file mode 100644 index 000000000..123167e80 --- /dev/null +++ b/assets/chunks/smalltalk.DSsji4Hu.js @@ -0,0 +1 @@ +const a=Object.freeze({displayName:"Smalltalk",fileTypes:["st"],foldingStartMarker:"\\[",foldingStopMarker:"^\\s*\\]|^\\s\\]",name:"smalltalk",patterns:[{match:"\\$.",name:"constant.character.smalltalk"},{match:"\\b(class)\\b",name:"storage.type.$1.smalltalk"},{match:"\\b(extend|super|self)\\b",name:"storage.modifier.$1.smalltalk"},{match:"\\b(yourself|new|Smalltalk)\\b",name:"keyword.control.$1.smalltalk"},{match:":=",name:"keyword.operator.assignment.smalltalk"},{comment:"Parse the variable declaration like: |a b c|",match:"/^:\\w*\\s*\\|/",name:"constant.other.block.smalltalk"},{captures:{1:{name:"punctuation.definition.instance-variables.begin.smalltalk"},2:{patterns:[{match:"\\w+",name:"support.type.variable.declaration.smalltalk"}]},3:{name:"punctuation.definition.instance-variables.end.smalltalk"}},match:"(\\|)(\\s*\\w[\\w ]*)(\\|)"},{captures:{1:{patterns:[{match:":\\w+",name:"entity.name.function.block.smalltalk"}]}},comment:"Parse the blocks like: [ :a :b | ...... ]",match:"\\[((\\s+|:\\w+)*)\\|"},{include:"#numeric"},{match:"<(?!<|=)|>(?!<|=|>)|<=|>=|=|==|~=|~~|>>|\\^",name:"keyword.operator.comparison.smalltalk"},{match:"(\\*|\\+|\\-|/|\\\\)",name:"keyword.operator.arithmetic.smalltalk"},{match:"(?<=[ \\t])!+|\\bnot\\b|&|\\band\\b|\\||\\bor\\b",name:"keyword.operator.logical.smalltalk"},{comment:"Fake reserved word -> main Smalltalk messages",match:"(?<!\\.)\\b(ensure|resume|retry|signal)\\b(?![?!])",name:"keyword.control.smalltalk"},{comment:"Fake conditionals. Smalltalk Methods.",match:"ifCurtailed:|ifTrue:|ifFalse:|whileFalse:|whileTrue:",name:"keyword.control.conditionals.smalltalk"},{captures:{1:{name:"entity.other.inherited-class.smalltalk"},3:{name:"keyword.control.smalltalk"},4:{name:"entity.name.type.class.smalltalk"}},match:"(\\w+)(\\s+(subclass:))\\s*(\\w*)",name:"meta.class.smalltalk"},{begin:'"',beginCaptures:[{name:"punctuation.definition.comment.begin.smalltalk"}],end:'"',endCaptures:[{name:"punctuation.definition.comment.end.smalltalk"}],name:"comment.block.smalltalk"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.smalltalk"},{match:"\\b(nil)\\b",name:"constant.language.nil.smalltalk"},{captures:{1:{name:"punctuation.definition.constant.smalltalk"}},comment:"messages/methods",match:"(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)",name:"constant.other.messages.smalltalk"},{captures:{1:{name:"punctuation.definition.constant.smalltalk"}},comment:"symbols",match:"(#)[a-zA-Z_][a-zA-Z0-9_:]*",name:"constant.other.symbol.smalltalk"},{begin:"#\\[",beginCaptures:[{name:"punctuation.definition.constant.begin.smalltalk"}],end:"\\]",endCaptures:[{name:"punctuation.definition.constant.end.smalltalk"}],name:"meta.array.byte.smalltalk",patterns:[{match:"[0-9]+(r[a-zA-Z0-9]+)?",name:"constant.numeric.integer.smalltalk"},{match:"[^\\s\\]]+",name:"invalid.illegal.character-not-allowed-here.smalltalk"}]},{begin:"#\\(",beginCaptures:[{name:"punctuation.definition.constant.begin.smalltalk"}],comment:"Array Constructor",end:"\\)",endCaptures:[{name:"punctuation.definition.constant.end.smalltalk"}],name:"constant.other.array.smalltalk"},{begin:"'",beginCaptures:[{name:"punctuation.definition.string.begin.smalltalk"}],end:"'",endCaptures:[{name:"punctuation.definition.string.end.smalltalk"}],name:"string.quoted.single.smalltalk"},{match:"\\b[A-Z]\\w*\\b",name:"variable.other.constant.smalltalk"}],repository:{numeric:{patterns:[{match:"(?<!\\w)[0-9]+\\.[0-9]+s[0-9]*",name:"constant.numeric.float.scaled.smalltalk"},{match:"(?<!\\w)[0-9]+\\.[0-9]+([edq]-?[0-9]+)?",name:"constant.numeric.float.smalltalk"},{match:"(?<!\\w)-?[0-9]+r[a-zA-Z0-9]+",name:"constant.numeric.integer.radix.smalltalk"},{match:"(?<!\\w)-?[0-9]+([edq]-?[0-9]+)?",name:"constant.numeric.integer.smalltalk"}]}},scopeName:"source.smalltalk"});var t=[a];export{t as default}; diff --git a/assets/chunks/snazzy-light.CA9nliXM.js b/assets/chunks/snazzy-light.CA9nliXM.js new file mode 100644 index 000000000..6854a48f8 --- /dev/null +++ b/assets/chunks/snazzy-light.CA9nliXM.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#E7E8E6","activityBar.foreground":"#2DAE58","activityBar.inactiveForeground":"#68696888","activityBarBadge.background":"#09A1ED","badge.background":"#09A1ED","badge.foreground":"#ffffff","button.background":"#2DAE58","debugExceptionWidget.background":"#FFAEAC33","debugExceptionWidget.border":"#FF5C57","debugToolBar.border":"#E9EAEB","diffEditor.insertedTextBackground":"#2DAE5824","diffEditor.removedTextBackground":"#FFAEAC44","dropdown.border":"#E9EAEB","editor.background":"#FAFBFC","editor.findMatchBackground":"#00E6E06A","editor.findMatchHighlightBackground":"#00E6E02A","editor.findRangeHighlightBackground":"#F5B90011","editor.focusedStackFrameHighlightBackground":"#2DAE5822","editor.foreground":"#565869","editor.hoverHighlightBackground":"#00E6E018","editor.rangeHighlightBackground":"#F5B90033","editor.selectionBackground":"#2DAE5822","editor.snippetTabstopHighlightBackground":"#ADB1C23A","editor.stackFrameHighlightBackground":"#F5B90033","editor.wordHighlightBackground":"#ADB1C23A","editorError.foreground":"#FF5C56","editorGroup.emptyBackground":"#F3F4F5","editorGutter.addedBackground":"#2DAE58","editorGutter.deletedBackground":"#FF5C57","editorGutter.modifiedBackground":"#00A39FAA","editorInlayHint.background":"#E9EAEB","editorInlayHint.foreground":"#565869","editorLineNumber.activeForeground":"#35CF68","editorLineNumber.foreground":"#9194A2aa","editorLink.activeForeground":"#35CF68","editorOverviewRuler.addedForeground":"#2DAE58","editorOverviewRuler.deletedForeground":"#FF5C57","editorOverviewRuler.errorForeground":"#FF5C56","editorOverviewRuler.findMatchForeground":"#13BBB7AA","editorOverviewRuler.modifiedForeground":"#00A39FAA","editorOverviewRuler.warningForeground":"#CF9C00","editorOverviewRuler.wordHighlightForeground":"#ADB1C288","editorOverviewRuler.wordHighlightStrongForeground":"#35CF68","editorWarning.foreground":"#CF9C00","editorWhitespace.foreground":"#ADB1C255","extensionButton.prominentBackground":"#2DAE58","extensionButton.prominentHoverBackground":"#238744",focusBorder:"#09A1ED",foreground:"#686968","gitDecoration.modifiedResourceForeground":"#00A39F","gitDecoration.untrackedResourceForeground":"#2DAE58","input.border":"#E9EAEB","list.activeSelectionBackground":"#09A1ED","list.activeSelectionForeground":"#ffffff","list.errorForeground":"#FF5C56","list.focusBackground":"#BCE7FC99","list.focusForeground":"#11658F","list.hoverBackground":"#E9EAEB","list.inactiveSelectionBackground":"#89B5CB33","list.warningForeground":"#B38700","menu.background":"#FAFBFC","menu.selectionBackground":"#E9EAEB","menu.selectionForeground":"#686968","menubar.selectionBackground":"#E9EAEB","menubar.selectionForeground":"#686968","merge.currentContentBackground":"#35CF6833","merge.currentHeaderBackground":"#35CF6866","merge.incomingContentBackground":"#14B1FF33","merge.incomingHeaderBackground":"#14B1FF77","peekView.border":"#09A1ED","peekViewEditor.background":"#14B1FF08","peekViewEditor.matchHighlightBackground":"#F5B90088","peekViewEditor.matchHighlightBorder":"#F5B900","peekViewEditorStickyScroll.background":"#EDF4FB","peekViewResult.matchHighlightBackground":"#F5B90088","peekViewResult.selectionBackground":"#09A1ED","peekViewResult.selectionForeground":"#FFFFFF","peekViewTitle.background":"#09A1ED11","selection.background":"#2DAE5844","settings.modifiedItemIndicator":"#13BBB7","sideBar.background":"#F3F4F5","sideBar.border":"#DEDFE0","sideBarSectionHeader.background":"#E9EAEB","sideBarSectionHeader.border":"#DEDFE0","statusBar.background":"#2DAE58","statusBar.debuggingBackground":"#13BBB7","statusBar.debuggingBorder":"#00A39F","statusBar.noFolderBackground":"#565869","statusBarItem.remoteBackground":"#238744","tab.activeBorderTop":"#2DAE58","terminal.ansiBlack":"#565869","terminal.ansiBlue":"#09A1ED","terminal.ansiBrightBlack":"#75798F","terminal.ansiBrightBlue":"#14B1FF","terminal.ansiBrightCyan":"#13BBB7","terminal.ansiBrightGreen":"#35CF68","terminal.ansiBrightMagenta":"#FF94D2","terminal.ansiBrightRed":"#FFAEAC","terminal.ansiBrightWhite":"#FFFFFF","terminal.ansiBrightYellow":"#F5B900","terminal.ansiCyan":"#13BBB7","terminal.ansiGreen":"#2DAE58","terminal.ansiMagenta":"#F767BB","terminal.ansiRed":"#FF5C57","terminal.ansiWhite":"#FAFBF9","terminal.ansiYellow":"#CF9C00","titleBar.activeBackground":"#F3F4F5"},displayName:"Snazzy Light",name:"snazzy-light",tokenColors:[{scope:"invalid.illegal",settings:{foreground:"#FF5C56"}},{scope:["meta.object-literal.key","meta.object-literal.key constant.character.escape","meta.object-literal string","meta.object-literal string constant.character.escape","support.type.property-name","support.type.property-name constant.character.escape"],settings:{foreground:"#11658F"}},{scope:["keyword","storage","meta.class storage.type","keyword.operator.expression.import","keyword.operator.new","keyword.operator.expression.delete"],settings:{foreground:"#F767BB"}},{scope:["support.type","meta.type.annotation entity.name.type","new.expr meta.type.parameters entity.name.type","storage.type.primitive","storage.type.built-in.primitive","meta.function.parameter storage.type"],settings:{foreground:"#2DAE58"}},{scope:["storage.type.annotation"],settings:{foreground:"#C25193"}},{scope:"keyword.other.unit",settings:{foreground:"#FF5C57CC"}},{scope:["constant.language","support.constant","variable.language"],settings:{foreground:"#2DAE58"}},{scope:["variable","support.variable"],settings:{foreground:"#565869"}},{scope:"variable.language.this",settings:{foreground:"#13BBB7"}},{scope:["entity.name.function","support.function"],settings:{foreground:"#09A1ED"}},{scope:["entity.name.function.decorator"],settings:{foreground:"#11658F"}},{scope:["meta.class entity.name.type","new.expr entity.name.type","entity.other.inherited-class","support.class"],settings:{foreground:"#13BBB7"}},{scope:["keyword.preprocessor.pragma","keyword.control.directive.include","keyword.other.preprocessor"],settings:{foreground:"#11658F"}},{scope:"entity.name.exception",settings:{foreground:"#FF5C56"}},{scope:"entity.name.section",settings:{}},{scope:["constant.numeric"],settings:{foreground:"#FF5C57"}},{scope:["constant","constant.character"],settings:{foreground:"#2DAE58"}},{scope:"string",settings:{foreground:"#CF9C00"}},{scope:"string",settings:{foreground:"#CF9C00"}},{scope:"constant.character.escape",settings:{foreground:"#F5B900"}},{scope:["string.regexp","string.regexp constant.character.escape"],settings:{foreground:"#13BBB7"}},{scope:["keyword.operator.quantifier.regexp","keyword.operator.negation.regexp","keyword.operator.or.regexp","string.regexp punctuation","string.regexp keyword","string.regexp keyword.control","string.regexp constant","variable.other.regexp"],settings:{foreground:"#00A39F"}},{scope:["string.regexp keyword.other"],settings:{foreground:"#00A39F88"}},{scope:"constant.other.symbol",settings:{foreground:"#CF9C00"}},{scope:["comment","punctuation.definition.comment"],settings:{foreground:"#ADB1C2"}},{scope:"comment.block.preprocessor",settings:{fontStyle:"",foreground:"#9194A2"}},{scope:"comment.block.documentation entity.name.type",settings:{foreground:"#2DAE58"}},{scope:["comment.block.documentation storage","comment.block.documentation keyword.other","meta.class comment.block.documentation storage.type"],settings:{foreground:"#9194A2"}},{scope:["comment.block.documentation variable"],settings:{foreground:"#C25193"}},{scope:["punctuation"],settings:{foreground:"#ADB1C2"}},{scope:["keyword.operator","keyword.other.arrow","keyword.control.@"],settings:{foreground:"#ADB1C2"}},{scope:["meta.tag.metadata.doctype.html entity.name.tag","meta.tag.metadata.doctype.html entity.other.attribute-name.html","meta.tag.sgml.doctype","meta.tag.sgml.doctype string","meta.tag.sgml.doctype entity.name.tag","meta.tag.sgml punctuation.definition.tag.html"],settings:{foreground:"#9194A2"}},{scope:["meta.tag","punctuation.definition.tag.html","punctuation.definition.tag.begin.html","punctuation.definition.tag.end.html"],settings:{foreground:"#ADB1C2"}},{scope:["entity.name.tag"],settings:{foreground:"#13BBB7"}},{scope:["meta.tag entity.other.attribute-name","entity.other.attribute-name.html"],settings:{foreground:"#FF8380"}},{scope:["constant.character.entity","punctuation.definition.entity"],settings:{foreground:"#CF9C00"}},{scope:["source.css"],settings:{foreground:"#ADB1C2"}},{scope:["meta.selector","meta.selector entity","meta.selector entity punctuation","source.css entity.name.tag"],settings:{foreground:"#F767BB"}},{scope:["keyword.control.at-rule","keyword.control.at-rule punctuation.definition.keyword"],settings:{foreground:"#C25193"}},{scope:"source.css variable",settings:{foreground:"#11658F"}},{scope:["source.css meta.property-name","source.css support.type.property-name"],settings:{foreground:"#565869"}},{scope:["source.css support.type.vendored.property-name"],settings:{foreground:"#565869AA"}},{scope:["meta.property-value","support.constant.property-value"],settings:{foreground:"#13BBB7"}},{scope:["source.css support.constant"],settings:{foreground:"#2DAE58"}},{scope:["punctuation.definition.entity.css","keyword.operator.combinator.css"],settings:{foreground:"#FF82CBBB"}},{scope:["source.css support.function"],settings:{foreground:"#09A1ED"}},{scope:"keyword.other.important",settings:{foreground:"#238744"}},{scope:["source.css.scss"],settings:{foreground:"#F767BB"}},{scope:["source.css.scss entity.other.attribute-name.class.css","source.css.scss entity.other.attribute-name.id.css"],settings:{foreground:"#F767BB"}},{scope:["entity.name.tag.reference.scss"],settings:{foreground:"#C25193"}},{scope:["source.css.scss meta.at-rule keyword","source.css.scss meta.at-rule keyword punctuation","source.css.scss meta.at-rule operator.logical","keyword.control.content.scss","keyword.control.return.scss","keyword.control.return.scss punctuation.definition.keyword"],settings:{foreground:"#C25193"}},{scope:["meta.at-rule.mixin.scss","meta.at-rule.include.scss","source.css.scss meta.at-rule.if","source.css.scss meta.at-rule.else","source.css.scss meta.at-rule.each","source.css.scss meta.at-rule variable.parameter"],settings:{foreground:"#ADB1C2"}},{scope:["source.css.less entity.other.attribute-name.class.css"],settings:{foreground:"#F767BB"}},{scope:"source.stylus meta.brace.curly.css",settings:{foreground:"#ADB1C2"}},{scope:["source.stylus entity.other.attribute-name.class","source.stylus entity.other.attribute-name.id","source.stylus entity.name.tag"],settings:{foreground:"#F767BB"}},{scope:["source.stylus support.type.property-name"],settings:{foreground:"#565869"}},{scope:["source.stylus variable"],settings:{foreground:"#11658F"}},{scope:"markup.changed",settings:{foreground:"#888888"}},{scope:"markup.deleted",settings:{foreground:"#888888"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.error",settings:{foreground:"#FF5C56"}},{scope:"markup.inserted",settings:{foreground:"#888888"}},{scope:"meta.link",settings:{foreground:"#CF9C00"}},{scope:"string.other.link.title.markdown",settings:{foreground:"#09A1ED"}},{scope:["markup.output","markup.raw"],settings:{foreground:"#999999"}},{scope:"markup.prompt",settings:{foreground:"#999999"}},{scope:"markup.heading",settings:{foreground:"#2DAE58"}},{scope:"markup.bold",settings:{fontStyle:"bold"}},{scope:"markup.traceback",settings:{foreground:"#FF5C56"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.quote",settings:{foreground:"#777985"}},{scope:["markup.bold","markup.italic"],settings:{foreground:"#13BBB7"}},{scope:"markup.inline.raw",settings:{fontStyle:"",foreground:"#F767BB"}},{scope:["meta.brace.round","meta.brace.square","storage.type.function.arrow"],settings:{foreground:"#ADB1C2"}},{scope:["constant.language.import-export-all","meta.import keyword.control.default"],settings:{foreground:"#C25193"}},{scope:["support.function.js"],settings:{foreground:"#11658F"}},{scope:"string.regexp.js",settings:{foreground:"#13BBB7"}},{scope:["variable.language.super","support.type.object.module.js"],settings:{foreground:"#F767BB"}},{scope:"meta.jsx.children",settings:{foreground:"#686968"}},{scope:"entity.name.tag.yaml",settings:{foreground:"#11658F"}},{scope:"variable.other.alias.yaml",settings:{foreground:"#2DAE58"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#75798F"}},{scope:["meta.use.php entity.other.alias.php"],settings:{foreground:"#13BBB7"}},{scope:["source.php support.function.construct","source.php support.function.var"],settings:{foreground:"#11658F"}},{scope:["storage.modifier.extends.php","source.php keyword.other","storage.modifier.php"],settings:{foreground:"#F767BB"}},{scope:["meta.class.body.php storage.type.php"],settings:{foreground:"#F767BB"}},{scope:["storage.type.php","meta.class.body.php meta.function-call.php storage.type.php","meta.class.body.php meta.function.php storage.type.php"],settings:{foreground:"#2DAE58"}},{scope:["source.php keyword.other.DML"],settings:{foreground:"#D94E4A"}},{scope:["source.sql.embedded.php keyword.operator"],settings:{foreground:"#2DAE58"}},{scope:["source.ini keyword","source.toml keyword","source.env variable"],settings:{foreground:"#11658F"}},{scope:["source.ini entity.name.section","source.toml entity.other.attribute-name"],settings:{foreground:"#F767BB"}},{scope:["source.go storage.type"],settings:{foreground:"#2DAE58"}},{scope:["keyword.import.go","keyword.package.go"],settings:{foreground:"#FF5C56"}},{scope:["source.reason variable.language string"],settings:{foreground:"#565869"}},{scope:["source.reason support.type","source.reason constant.language","source.reason constant.language constant.numeric","source.reason support.type string.regexp"],settings:{foreground:"#2DAE58"}},{scope:["source.reason keyword.operator keyword.control","source.reason keyword.control.less","source.reason keyword.control.flow"],settings:{foreground:"#ADB1C2"}},{scope:["source.reason string.regexp"],settings:{foreground:"#CF9C00"}},{scope:["source.reason support.property-value"],settings:{foreground:"#11658F"}},{scope:["source.rust support.function.core.rust"],settings:{foreground:"#11658F"}},{scope:["source.rust storage.type.core.rust","source.rust storage.class.std"],settings:{foreground:"#2DAE58"}},{scope:["source.rust entity.name.type.rust"],settings:{foreground:"#13BBB7"}},{scope:["storage.type.function.coffee"],settings:{foreground:"#ADB1C2"}},{scope:["keyword.type.cs","storage.type.cs"],settings:{foreground:"#2DAE58"}},{scope:["entity.name.type.namespace.cs"],settings:{foreground:"#13BBB7"}},{scope:"meta.diff.header",settings:{foreground:"#11658F"}},{scope:["markup.inserted.diff"],settings:{foreground:"#2DAE58"}},{scope:["markup.deleted.diff"],settings:{foreground:"#FF5C56"}},{scope:["meta.diff.range","meta.diff.index","meta.separator"],settings:{foreground:"#09A1ED"}},{scope:"source.makefile variable",settings:{foreground:"#11658F"}},{scope:["keyword.control.protocol-specification.objc"],settings:{foreground:"#F767BB"}},{scope:["meta.parens storage.type.objc","meta.return-type.objc support.class","meta.return-type.objc storage.type.objc"],settings:{foreground:"#2DAE58"}},{scope:["source.sql keyword"],settings:{foreground:"#11658F"}},{scope:["keyword.other.special-method.dockerfile"],settings:{foreground:"#09A1ED"}},{scope:"constant.other.symbol.elixir",settings:{foreground:"#11658F"}},{scope:["storage.type.elm","support.module.elm"],settings:{foreground:"#13BBB7"}},{scope:["source.elm keyword.other"],settings:{foreground:"#ADB1C2"}},{scope:["source.erlang entity.name.type.class"],settings:{foreground:"#13BBB7"}},{scope:["variable.other.field.erlang"],settings:{foreground:"#11658F"}},{scope:["source.erlang constant.other.symbol"],settings:{foreground:"#2DAE58"}},{scope:["storage.type.haskell"],settings:{foreground:"#2DAE58"}},{scope:["meta.declaration.class.haskell storage.type.haskell","meta.declaration.instance.haskell storage.type.haskell"],settings:{foreground:"#13BBB7"}},{scope:["meta.preprocessor.haskell"],settings:{foreground:"#75798F"}},{scope:["source.haskell keyword.control"],settings:{foreground:"#F767BB"}},{scope:["tag.end.latte","tag.begin.latte"],settings:{foreground:"#ADB1C2"}},{scope:"source.po keyword.control",settings:{foreground:"#11658F"}},{scope:"source.po storage.type",settings:{foreground:"#9194A2"}},{scope:"constant.language.po",settings:{foreground:"#13BBB7"}},{scope:"meta.header.po string",settings:{foreground:"#FF8380"}},{scope:"source.po meta.header.po",settings:{foreground:"#ADB1C2"}},{scope:["source.ocaml markup.underline"],settings:{fontStyle:""}},{scope:["source.ocaml punctuation.definition.tag emphasis","source.ocaml entity.name.class constant.numeric","source.ocaml support.type"],settings:{foreground:"#F767BB"}},{scope:["source.ocaml constant.numeric entity.other.attribute-name"],settings:{foreground:"#13BBB7"}},{scope:["source.ocaml comment meta.separator"],settings:{foreground:"#ADB1C2"}},{scope:["source.ocaml support.type strong","source.ocaml keyword.control strong"],settings:{foreground:"#ADB1C2"}},{scope:["source.ocaml support.constant.property-value"],settings:{foreground:"#11658F"}},{scope:["source.scala entity.name.class"],settings:{foreground:"#13BBB7"}},{scope:["storage.type.scala"],settings:{foreground:"#2DAE58"}},{scope:["variable.parameter.scala"],settings:{foreground:"#11658F"}},{scope:["meta.bracket.scala","meta.colon.scala"],settings:{foreground:"#ADB1C2"}},{scope:["meta.metadata.simple.clojure"],settings:{foreground:"#ADB1C2"}},{scope:["meta.metadata.simple.clojure meta.symbol"],settings:{foreground:"#13BBB7"}},{scope:["source.r keyword.other"],settings:{foreground:"#ADB1C2"}},{scope:["source.svelte meta.block.ts entity.name.label"],settings:{foreground:"#11658F"}},{scope:["keyword.operator.word.applescript"],settings:{foreground:"#F767BB"}},{scope:["meta.function-call.livescript"],settings:{foreground:"#09A1ED"}},{scope:["variable.language.self.lua"],settings:{foreground:"#13BBB7"}},{scope:["entity.name.type.class.swift","meta.inheritance-clause.swift","meta.import.swift entity.name.type"],settings:{foreground:"#13BBB7"}},{scope:["source.swift punctuation.section.embedded"],settings:{foreground:"#B38700"}},{scope:["variable.parameter.function.swift entity.name.function.swift"],settings:{foreground:"#565869"}},{scope:"meta.function-call.twig",settings:{foreground:"#565869"}},{scope:"string.unquoted.tag-string.django",settings:{foreground:"#565869"}},{scope:["entity.tag.tagbraces.django","entity.tag.filter-pipe.django"],settings:{foreground:"#ADB1C2"}},{scope:["meta.section.attributes.haml constant.language","meta.section.attributes.plain.haml constant.other.symbol"],settings:{foreground:"#FF8380"}},{scope:["meta.prolog.haml"],settings:{foreground:"#9194A2"}},{scope:["support.constant.handlebars"],settings:{foreground:"#ADB1C2"}},{scope:"text.log log.constant",settings:{foreground:"#C25193"}},{scope:["source.c string constant.other.placeholder","source.cpp string constant.other.placeholder"],settings:{foreground:"#B38700"}},{scope:"constant.other.key.groovy",settings:{foreground:"#11658F"}},{scope:"storage.type.groovy",settings:{foreground:"#13BBB7"}},{scope:"meta.definition.variable.groovy storage.type.groovy",settings:{foreground:"#2DAE58"}},{scope:"storage.modifier.import.groovy",settings:{foreground:"#CF9C00"}},{scope:["entity.other.attribute-name.class.pug","entity.other.attribute-name.id.pug"],settings:{foreground:"#13BBB7"}},{scope:["constant.name.attribute.tag.pug"],settings:{foreground:"#ADB1C2"}},{scope:"entity.name.tag.style.html",settings:{foreground:"#13BBB7"}},{scope:"entity.name.type.wasm",settings:{foreground:"#2DAE58"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/solarized-dark.C86elO-m.js b/assets/chunks/solarized-dark.C86elO-m.js new file mode 100644 index 000000000..8abecae33 --- /dev/null +++ b/assets/chunks/solarized-dark.C86elO-m.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#003847","badge.background":"#047aa6","button.background":"#2AA19899","debugExceptionWidget.background":"#00212B","debugExceptionWidget.border":"#AB395B","debugToolBar.background":"#00212B","dropdown.background":"#00212B","dropdown.border":"#2AA19899","editor.background":"#002B36","editor.foreground":"#839496","editor.lineHighlightBackground":"#073642","editor.selectionBackground":"#274642","editor.selectionHighlightBackground":"#005A6FAA","editor.wordHighlightBackground":"#004454AA","editor.wordHighlightStrongBackground":"#005A6FAA","editorBracketHighlight.foreground1":"#cdcdcdff","editorBracketHighlight.foreground2":"#b58900ff","editorBracketHighlight.foreground3":"#d33682ff","editorCursor.foreground":"#D30102","editorGroup.border":"#00212B","editorGroup.dropBackground":"#2AA19844","editorGroupHeader.tabsBackground":"#004052","editorHoverWidget.background":"#004052","editorIndentGuide.activeBackground":"#C3E1E180","editorIndentGuide.background":"#93A1A180","editorLineNumber.activeForeground":"#949494","editorMarkerNavigationError.background":"#AB395B","editorMarkerNavigationWarning.background":"#5B7E7A","editorWhitespace.foreground":"#93A1A180","editorWidget.background":"#00212B",errorForeground:"#ffeaea",focusBorder:"#2AA19899","input.background":"#003847","input.foreground":"#93A1A1","input.placeholderForeground":"#93A1A1AA","inputOption.activeBorder":"#2AA19899","inputValidation.errorBackground":"#571b26","inputValidation.errorBorder":"#a92049","inputValidation.infoBackground":"#052730","inputValidation.infoBorder":"#363b5f","inputValidation.warningBackground":"#5d5938","inputValidation.warningBorder":"#9d8a5e","list.activeSelectionBackground":"#005A6F","list.dropBackground":"#00445488","list.highlightForeground":"#1ebcc5","list.hoverBackground":"#004454AA","list.inactiveSelectionBackground":"#00445488","minimap.selectionHighlight":"#274642","panel.border":"#2b2b4a","peekView.border":"#2b2b4a","peekViewEditor.background":"#10192c","peekViewEditor.matchHighlightBackground":"#7744AA40","peekViewResult.background":"#00212B","peekViewTitle.background":"#00212B","pickerGroup.border":"#2AA19899","pickerGroup.foreground":"#2AA19899","ports.iconRunningProcessForeground":"#369432","progressBar.background":"#047aa6","quickInputList.focusBackground":"#005A6F","selection.background":"#2AA19899","sideBar.background":"#00212B","sideBarTitle.foreground":"#93A1A1","statusBar.background":"#00212B","statusBar.debuggingBackground":"#00212B","statusBar.foreground":"#93A1A1","statusBar.noFolderBackground":"#00212B","statusBarItem.prominentBackground":"#003847","statusBarItem.prominentHoverBackground":"#003847","statusBarItem.remoteBackground":"#2AA19899","tab.activeBackground":"#002B37","tab.activeForeground":"#d6dbdb","tab.border":"#003847","tab.inactiveBackground":"#004052","tab.inactiveForeground":"#93A1A1","tab.lastPinnedBorder":"#2AA19844","terminal.ansiBlack":"#073642","terminal.ansiBlue":"#268bd2","terminal.ansiBrightBlack":"#002b36","terminal.ansiBrightBlue":"#839496","terminal.ansiBrightCyan":"#93a1a1","terminal.ansiBrightGreen":"#586e75","terminal.ansiBrightMagenta":"#6c71c4","terminal.ansiBrightRed":"#cb4b16","terminal.ansiBrightWhite":"#fdf6e3","terminal.ansiBrightYellow":"#657b83","terminal.ansiCyan":"#2aa198","terminal.ansiGreen":"#859900","terminal.ansiMagenta":"#d33682","terminal.ansiRed":"#dc322f","terminal.ansiWhite":"#eee8d5","terminal.ansiYellow":"#b58900","titleBar.activeBackground":"#002C39"},displayName:"Solarized Dark",name:"solarized-dark",semanticHighlighting:!0,tokenColors:[{settings:{foreground:"#839496"}},{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#839496"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#586E75"}},{scope:"string",settings:{foreground:"#2AA198"}},{scope:"string.regexp",settings:{foreground:"#DC322F"}},{scope:"constant.numeric",settings:{foreground:"#D33682"}},{scope:["variable.language","variable.other"],settings:{foreground:"#268BD2"}},{scope:"keyword",settings:{foreground:"#859900"}},{scope:"storage",settings:{fontStyle:"bold",foreground:"#93A1A1"}},{scope:["entity.name.class","entity.name.type","entity.name.namespace","entity.name.scope-resolution"],settings:{fontStyle:"",foreground:"#CB4B16"}},{scope:"entity.name.function",settings:{foreground:"#268BD2"}},{scope:"punctuation.definition.variable",settings:{foreground:"#859900"}},{scope:["punctuation.section.embedded.begin","punctuation.section.embedded.end"],settings:{foreground:"#DC322F"}},{scope:["constant.language","meta.preprocessor"],settings:{foreground:"#B58900"}},{scope:["support.function.construct","keyword.other.new"],settings:{foreground:"#CB4B16"}},{scope:["constant.character","constant.other"],settings:{foreground:"#CB4B16"}},{scope:"entity.other.inherited-class",settings:{foreground:"#6C71C4"}},{scope:"variable.parameter",settings:{}},{scope:"entity.name.tag",settings:{foreground:"#268BD2"}},{scope:"punctuation.definition.tag",settings:{foreground:"#586E75"}},{scope:"entity.other.attribute-name",settings:{foreground:"#93A1A1"}},{scope:"support.function",settings:{foreground:"#268BD2"}},{scope:"punctuation.separator.continuation",settings:{foreground:"#DC322F"}},{scope:["support.constant","support.variable"],settings:{}},{scope:["support.type","support.class"],settings:{foreground:"#859900"}},{scope:"support.type.exception",settings:{foreground:"#CB4B16"}},{scope:"support.other.variable",settings:{}},{scope:"invalid",settings:{foreground:"#DC322F"}},{scope:["meta.diff","meta.diff.header"],settings:{fontStyle:"italic",foreground:"#268BD2"}},{scope:"markup.deleted",settings:{fontStyle:"",foreground:"#DC322F"}},{scope:"markup.changed",settings:{fontStyle:"",foreground:"#CB4B16"}},{scope:"markup.inserted",settings:{foreground:"#859900"}},{scope:"markup.quote",settings:{foreground:"#859900"}},{scope:"markup.list",settings:{foreground:"#B58900"}},{scope:["markup.bold","markup.italic"],settings:{foreground:"#D33682"}},{scope:"markup.bold",settings:{fontStyle:"bold"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{fontStyle:"",foreground:"#2AA198"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#268BD2"}},{scope:"markup.heading.setext",settings:{fontStyle:"",foreground:"#268BD2"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/solarized-light.xPNGhBYe.js b/assets/chunks/solarized-light.xPNGhBYe.js new file mode 100644 index 000000000..76197f377 --- /dev/null +++ b/assets/chunks/solarized-light.xPNGhBYe.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#DDD6C1","activityBar.foreground":"#584c27","activityBarBadge.background":"#B58900","badge.background":"#B58900AA","button.background":"#AC9D57","debugExceptionWidget.background":"#DDD6C1","debugExceptionWidget.border":"#AB395B","debugToolBar.background":"#DDD6C1","dropdown.background":"#EEE8D5","dropdown.border":"#D3AF86","editor.background":"#FDF6E3","editor.foreground":"#657B83","editor.lineHighlightBackground":"#EEE8D5","editor.selectionBackground":"#EEE8D5","editorCursor.foreground":"#657B83","editorGroup.border":"#DDD6C1","editorGroup.dropBackground":"#DDD6C1AA","editorGroupHeader.tabsBackground":"#D9D2C2","editorHoverWidget.background":"#CCC4B0","editorIndentGuide.activeBackground":"#081E2580","editorIndentGuide.background":"#586E7580","editorLineNumber.activeForeground":"#567983","editorWhitespace.foreground":"#586E7580","editorWidget.background":"#EEE8D5","extensionButton.prominentBackground":"#b58900","extensionButton.prominentHoverBackground":"#584c27aa",focusBorder:"#b49471","input.background":"#DDD6C1","input.foreground":"#586E75","input.placeholderForeground":"#586E75AA","inputOption.activeBorder":"#D3AF86","list.activeSelectionBackground":"#DFCA88","list.activeSelectionForeground":"#6C6C6C","list.highlightForeground":"#B58900","list.hoverBackground":"#DFCA8844","list.inactiveSelectionBackground":"#D1CBB8","minimap.selectionHighlight":"#EEE8D5","notebook.cellEditorBackground":"#F7F0E0","panel.border":"#DDD6C1","peekView.border":"#B58900","peekViewEditor.background":"#FFFBF2","peekViewEditor.matchHighlightBackground":"#7744AA40","peekViewResult.background":"#EEE8D5","peekViewTitle.background":"#EEE8D5","pickerGroup.border":"#2AA19899","pickerGroup.foreground":"#2AA19899","ports.iconRunningProcessForeground":"#2AA19899","progressBar.background":"#B58900","quickInputList.focusBackground":"#DFCA8866","selection.background":"#878b9180","sideBar.background":"#EEE8D5","sideBarTitle.foreground":"#586E75","statusBar.background":"#EEE8D5","statusBar.debuggingBackground":"#EEE8D5","statusBar.foreground":"#586E75","statusBar.noFolderBackground":"#EEE8D5","statusBarItem.prominentBackground":"#DDD6C1","statusBarItem.prominentHoverBackground":"#DDD6C199","statusBarItem.remoteBackground":"#AC9D57","tab.activeBackground":"#FDF6E3","tab.activeModifiedBorder":"#cb4b16","tab.border":"#DDD6C1","tab.inactiveBackground":"#D3CBB7","tab.inactiveForeground":"#586E75","tab.lastPinnedBorder":"#FDF6E3","terminal.ansiBlack":"#073642","terminal.ansiBlue":"#268bd2","terminal.ansiBrightBlack":"#002b36","terminal.ansiBrightBlue":"#839496","terminal.ansiBrightCyan":"#93a1a1","terminal.ansiBrightGreen":"#586e75","terminal.ansiBrightMagenta":"#6c71c4","terminal.ansiBrightRed":"#cb4b16","terminal.ansiBrightWhite":"#fdf6e3","terminal.ansiBrightYellow":"#657b83","terminal.ansiCyan":"#2aa198","terminal.ansiGreen":"#859900","terminal.ansiMagenta":"#d33682","terminal.ansiRed":"#dc322f","terminal.ansiWhite":"#eee8d5","terminal.ansiYellow":"#b58900","terminal.background":"#FDF6E3","titleBar.activeBackground":"#EEE8D5","walkThrough.embeddedEditorBackground":"#00000014"},displayName:"Solarized Light",name:"solarized-light",semanticHighlighting:!0,tokenColors:[{settings:{foreground:"#657B83"}},{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#657B83"}},{scope:"comment",settings:{fontStyle:"italic",foreground:"#93A1A1"}},{scope:"string",settings:{foreground:"#2AA198"}},{scope:"string.regexp",settings:{foreground:"#DC322F"}},{scope:"constant.numeric",settings:{foreground:"#D33682"}},{scope:["variable.language","variable.other"],settings:{foreground:"#268BD2"}},{scope:"keyword",settings:{foreground:"#859900"}},{scope:"storage",settings:{fontStyle:"bold",foreground:"#586E75"}},{scope:["entity.name.class","entity.name.type","entity.name.namespace","entity.name.scope-resolution"],settings:{fontStyle:"",foreground:"#CB4B16"}},{scope:"entity.name.function",settings:{foreground:"#268BD2"}},{scope:"punctuation.definition.variable",settings:{foreground:"#859900"}},{scope:["punctuation.section.embedded.begin","punctuation.section.embedded.end"],settings:{foreground:"#DC322F"}},{scope:["constant.language","meta.preprocessor"],settings:{foreground:"#B58900"}},{scope:["support.function.construct","keyword.other.new"],settings:{foreground:"#CB4B16"}},{scope:["constant.character","constant.other"],settings:{foreground:"#CB4B16"}},{scope:"entity.other.inherited-class",settings:{foreground:"#6C71C4"}},{scope:"variable.parameter",settings:{}},{scope:"entity.name.tag",settings:{foreground:"#268BD2"}},{scope:"punctuation.definition.tag",settings:{foreground:"#93A1A1"}},{scope:"entity.other.attribute-name",settings:{foreground:"#93A1A1"}},{scope:"support.function",settings:{foreground:"#268BD2"}},{scope:"punctuation.separator.continuation",settings:{foreground:"#DC322F"}},{scope:["support.constant","support.variable"],settings:{}},{scope:["support.type","support.class"],settings:{foreground:"#859900"}},{scope:"support.type.exception",settings:{foreground:"#CB4B16"}},{scope:"support.other.variable",settings:{}},{scope:"invalid",settings:{foreground:"#DC322F"}},{scope:["meta.diff","meta.diff.header"],settings:{fontStyle:"italic",foreground:"#268BD2"}},{scope:"markup.deleted",settings:{fontStyle:"",foreground:"#DC322F"}},{scope:"markup.changed",settings:{fontStyle:"",foreground:"#CB4B16"}},{scope:"markup.inserted",settings:{foreground:"#859900"}},{scope:"markup.quote",settings:{foreground:"#859900"}},{scope:"markup.list",settings:{foreground:"#B58900"}},{scope:["markup.bold","markup.italic"],settings:{foreground:"#D33682"}},{scope:"markup.bold",settings:{fontStyle:"bold"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inline.raw",settings:{fontStyle:"",foreground:"#2AA198"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#268BD2"}},{scope:"markup.heading.setext",settings:{fontStyle:"",foreground:"#268BD2"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/solidity.CThH5sBG.js b/assets/chunks/solidity.CThH5sBG.js new file mode 100644 index 000000000..dacc6361e --- /dev/null +++ b/assets/chunks/solidity.CThH5sBG.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Solidity",fileTypes:["sol"],name:"solidity",patterns:[{include:"#natspec"},{include:"#declaration-userType"},{include:"#comment"},{include:"#operator"},{include:"#global"},{include:"#control"},{include:"#constant"},{include:"#primitive"},{include:"#type-primitive"},{include:"#type-modifier-extended-scope"},{include:"#declaration"},{include:"#function-call"},{include:"#assembly"},{include:"#punctuation"}],repository:{assembly:{patterns:[{match:"\\b(assembly)\\b",name:"keyword.control.assembly"},{match:"\\b(let)\\b",name:"storage.type.assembly"}]},comment:{patterns:[{include:"#comment-line"},{include:"#comment-block"}]},"comment-block":{begin:"/\\*",end:"\\*/",name:"comment.block",patterns:[{include:"#comment-todo"}]},"comment-line":{begin:"(?<!tp:)//",end:"$",name:"comment.line",patterns:[{include:"#comment-todo"}]},"comment-todo":{match:"(?i)\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|COMBAK|TEMP|SUPPRESS|LINT|\\w+-disable|\\w+-suppress)\\b(?-i)",name:"keyword.comment.todo"},constant:{patterns:[{include:"#constant-boolean"},{include:"#constant-time"},{include:"#constant-currency"}]},"constant-boolean":{match:"\\b(true|false)\\b",name:"constant.language.boolean"},"constant-currency":{match:"\\b(ether|wei|gwei|finney|szabo)\\b",name:"constant.language.currency"},"constant-time":{match:"\\b(seconds|minutes|hours|days|weeks|years)\\b",name:"constant.language.time"},control:{patterns:[{include:"#control-flow"},{include:"#control-using"},{include:"#control-import"},{include:"#control-pragma"},{include:"#control-underscore"},{include:"#control-unchecked"},{include:"#control-other"}]},"control-flow":{patterns:[{match:"\\b(if|else|for|while|do|break|continue|try|catch|finally|throw|return|global)\\b",name:"keyword.control.flow"},{begin:"\\b(returns)\\b",beginCaptures:{1:{name:"keyword.control.flow.return"}},end:"(?=\\))",patterns:[{include:"#declaration-function-parameters"}]}]},"control-import":{patterns:[{begin:"\\b(import)\\b",beginCaptures:{1:{name:"keyword.control.import"}},end:"(?=\\;)",patterns:[{begin:"((?=\\{))",end:"((?=\\}))",patterns:[{match:"\\b(\\w+)\\b",name:"entity.name.type.interface"}]},{match:"\\b(from)\\b",name:"keyword.control.import.from"},{include:"#string"},{include:"#punctuation"}]},{match:"\\b(import)\\b",name:"keyword.control.import"}]},"control-other":{match:"\\b(new|delete|emit)\\b",name:"keyword.control"},"control-pragma":{captures:{1:{name:"keyword.control.pragma"},2:{name:"entity.name.tag.pragma"},3:{name:"constant.other.pragma"}},match:"\\b(pragma)(?:\\s+([A-Za-z_]\\w+)\\s+([^\\s]+))?\\b"},"control-unchecked":{match:"\\b(unchecked)\\b",name:"keyword.control.unchecked"},"control-underscore":{match:"\\b(_)\\b",name:"constant.other.underscore"},"control-using":{patterns:[{captures:{1:{name:"keyword.control.using"},2:{name:"entity.name.type.library"},3:{name:"keyword.control.for"},4:{name:"entity.name.type"}},match:"\\b(using)\\b\\s+\\b([A-Za-z\\d_]+)\\b\\s+\\b(for)\\b\\s+\\b([A-Za-z\\d_]+)"},{match:"\\b(using)\\b",name:"keyword.control.using"}]},declaration:{patterns:[{include:"#declaration-contract"},{include:"#declaration-userType"},{include:"#declaration-interface"},{include:"#declaration-library"},{include:"#declaration-function"},{include:"#declaration-modifier"},{include:"#declaration-constructor"},{include:"#declaration-event"},{include:"#declaration-storage"},{include:"#declaration-error"}]},"declaration-constructor":{patterns:[{begin:"\\b(constructor)\\b",beginCaptures:{1:{name:"storage.type.constructor"}},end:"(?=\\{)",patterns:[{begin:"\\G\\s*(?=\\()",end:"(?=\\))",patterns:[{include:"#declaration-function-parameters"}]},{begin:"(?<=\\))",end:"(?=\\{)",patterns:[{include:"#type-modifier-access"},{include:"#function-call"}]}]},{captures:{1:{name:"storage.type.constructor"}},match:"\\b(constructor)\\b"}]},"declaration-contract":{patterns:[{begin:"\\b(contract)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",beginCaptures:{1:{name:"storage.type.contract"},2:{name:"entity.name.type.contract"},3:{name:"storage.modifier.is"}},end:"(?=\\{)",patterns:[{match:"\\b(\\w+)\\b",name:"entity.name.type.contract.extend"}]},{captures:{1:{name:"storage.type.contract"},2:{name:"entity.name.type.contract"}},match:"\\b(contract)(\\s+([A-Za-z_]\\w*))?\\b"}]},"declaration-enum":{patterns:[{begin:"\\b(enum)\\s+(\\w+)\\b",beginCaptures:{1:{name:"storage.type.enum"},2:{name:"entity.name.type.enum"}},end:"(?=\\})",patterns:[{match:"\\b(\\w+)\\b",name:"variable.other.enummember"},{include:"#punctuation"},{include:"#comment"}]},{captures:{1:{name:"storage.type.enum"},3:{name:"entity.name.type.enum"}},match:"\\b(enum)(\\s+([A-Za-z_]\\w*))?\\b"}]},"declaration-error":{captures:{1:{name:"storage.type.error"},3:{name:"entity.name.type.error"}},match:"\\b(error)(\\s+([A-Za-z_]\\w*))?\\b"},"declaration-event":{patterns:[{begin:"\\b(event)\\b(?:\\s+(\\w+)\\b)?",beginCaptures:{1:{name:"storage.type.event"},2:{name:"entity.name.type.event"}},end:"(?=\\))",patterns:[{include:"#type-primitive"},{captures:{1:{name:"storage.type.modifier.indexed"},2:{name:"variable.parameter.event"}},match:"\\b(?:(indexed)\\s)?(\\w+)(?:,\\s*|)"},{include:"#punctuation"}]},{captures:{1:{name:"storage.type.event"},3:{name:"entity.name.type.event"}},match:"\\b(event)(\\s+([A-Za-z_]\\w*))?\\b"}]},"declaration-function":{patterns:[{begin:"\\b(function)\\s+(\\w+)\\b",beginCaptures:{1:{name:"storage.type.function"},2:{name:"entity.name.function"}},end:"(?=\\{|;)",patterns:[{include:"#natspec"},{include:"#global"},{include:"#declaration-function-parameters"},{include:"#type-modifier-access"},{include:"#type-modifier-payable"},{include:"#type-modifier-immutable"},{include:"#type-modifier-extended-scope"},{include:"#control-flow"},{include:"#function-call"},{include:"#modifier-call"},{include:"#punctuation"}]},{captures:{1:{name:"storage.type.function"},2:{name:"entity.name.function"}},match:"\\b(function)\\s+([A-Za-z_]\\w*)\\b"}]},"declaration-function-parameters":{begin:"\\G\\s*(?=\\()",end:"(?=\\))",patterns:[{include:"#type-primitive"},{include:"#type-modifier-extended-scope"},{captures:{1:{name:"storage.type.struct"}},match:"\\b([A-Z]\\w*)\\b"},{include:"#variable"},{include:"#punctuation"},{include:"#comment"}]},"declaration-interface":{patterns:[{begin:"\\b(interface)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",beginCaptures:{1:{name:"storage.type.interface"},2:{name:"entity.name.type.interface"},3:{name:"storage.modifier.is"}},end:"(?=\\{)",patterns:[{match:"\\b(\\w+)\\b",name:"entity.name.type.interface.extend"}]},{captures:{1:{name:"storage.type.interface"},2:{name:"entity.name.type.interface"}},match:"\\b(interface)(\\s+([A-Za-z_]\\w*))?\\b"}]},"declaration-library":{captures:{1:{name:"storage.type.library"},3:{name:"entity.name.type.library"}},match:"\\b(library)(\\s+([A-Za-z_]\\w*))?\\b"},"declaration-modifier":{patterns:[{begin:"\\b(modifier)\\b\\s*(\\w+)",beginCaptures:{1:{name:"storage.type.function.modifier"},2:{name:"entity.name.function.modifier"}},end:"(?=\\{)",patterns:[{include:"#declaration-function-parameters"},{begin:"(?<=\\))",end:"(?=\\{)",patterns:[{include:"#declaration-function-parameters"},{include:"#type-modifier-access"},{include:"#type-modifier-payable"},{include:"#type-modifier-immutable"},{include:"#type-modifier-extended-scope"},{include:"#function-call"},{include:"#modifier-call"},{include:"#control-flow"}]}]},{captures:{1:{name:"storage.type.modifier"},3:{name:"entity.name.function"}},match:"\\b(modifier)(\\s+([A-Za-z_]\\w*))?\\b"}]},"declaration-storage":{patterns:[{include:"#declaration-storage-mapping"},{include:"#declaration-struct"},{include:"#declaration-enum"},{include:"#declaration-storage-field"}]},"declaration-storage-field":{patterns:[{include:"#comment"},{include:"#control"},{include:"#type-primitive"},{include:"#type-modifier-access"},{include:"#type-modifier-immutable"},{include:"#type-modifier-extend-scope"},{include:"#type-modifier-payable"},{include:"#type-modifier-constant"},{include:"#primitive"},{include:"#constant"},{include:"#operator"},{include:"#punctuation"}]},"declaration-storage-mapping":{patterns:[{begin:"\\b(mapping)\\b",beginCaptures:{1:{name:"storage.type.mapping"}},end:"(?=\\))",patterns:[{include:"#declaration-storage-mapping"},{include:"#type-primitive"},{include:"#punctuation"},{include:"#operator"}]},{match:"\\b(mapping)\\b",name:"storage.type.mapping"}]},"declaration-struct":{patterns:[{captures:{1:{name:"storage.type.struct"},3:{name:"entity.name.type.struct"}},match:"\\b(struct)(\\s+([A-Za-z_]\\w*))?\\b"},{begin:"\\b(struct)\\b\\s*(\\w+)?\\b\\s*(?=\\{)",beginCaptures:{1:{name:"storage.type.struct"},2:{name:"entity.name.type.struct"}},end:"(?=\\})",patterns:[{include:"#type-primitive"},{include:"#variable"},{include:"#punctuation"},{include:"#comment"}]}]},"declaration-userType":{captures:{1:{name:"storage.type.userType"},2:{name:"entity.name.type.userType"},3:{name:"storage.modifier.is"}},match:"\\b(type)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b"},"function-call":{captures:{1:{name:"entity.name.function"},2:{name:"punctuation.parameters.begin"}},match:"\\b([A-Za-z_]\\w*)\\s*(\\()"},global:{patterns:[{include:"#global-variables"},{include:"#global-functions"}]},"global-functions":{patterns:[{match:"\\b(require|assert|revert)\\b",name:"keyword.control.exceptions"},{match:"\\b(selfdestruct|suicide)\\b",name:"keyword.control.contract"},{match:"\\b(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\b",name:"support.function.math"},{match:"\\b(unicode)\\b",name:"support.function.string"},{match:"\\b(blockhash|gasleft)\\b",name:"variable.language.transaction"},{match:"\\b(type)\\b",name:"variable.language.type"}]},"global-variables":{patterns:[{match:"\\b(this)\\b",name:"variable.language.this"},{match:"\\b(super)\\b",name:"variable.language.super"},{match:"\\b(abi)\\b",name:"variable.language.builtin.abi"},{match:"\\b(msg\\.sender|msg|block|tx|now)\\b",name:"variable.language.transaction"},{match:"\\b(tx\\.origin|tx\\.gasprice|msg\\.data|msg\\.sig|msg\\.value)\\b",name:"variable.language.transaction"}]},"modifier-call":{patterns:[{include:"#function-call"},{match:"\\b(\\w+)\\b",name:"entity.name.function.modifier"}]},natspec:{patterns:[{begin:"/\\*\\*",end:"\\*/",name:"comment.block.documentation",patterns:[{include:"#natspec-tags"}]},{begin:"///",end:"$",name:"comment.block.documentation",patterns:[{include:"#natspec-tags"}]}]},"natspec-tag-author":{match:"(@author)\\b",name:"storage.type.author.natspec"},"natspec-tag-custom":{match:"(@custom:\\w*)\\b",name:"storage.type.dev.natspec"},"natspec-tag-dev":{match:"(@dev)\\b",name:"storage.type.dev.natspec"},"natspec-tag-inheritdoc":{match:"(@inheritdoc)\\b",name:"storage.type.author.natspec"},"natspec-tag-notice":{match:"(@notice)\\b",name:"storage.type.dev.natspec"},"natspec-tag-param":{captures:{1:{name:"storage.type.param.natspec"},3:{name:"variable.other.natspec"}},match:"(@param)(\\s+([A-Za-z_]\\w*))?\\b"},"natspec-tag-return":{captures:{1:{name:"storage.type.return.natspec"},3:{name:"variable.other.natspec"}},match:"(@return)(\\s+([A-Za-z_]\\w*))?\\b"},"natspec-tag-title":{match:"(@title)\\b",name:"storage.type.title.natspec"},"natspec-tags":{patterns:[{include:"#comment-todo"},{include:"#natspec-tag-title"},{include:"#natspec-tag-author"},{include:"#natspec-tag-notice"},{include:"#natspec-tag-dev"},{include:"#natspec-tag-param"},{include:"#natspec-tag-return"},{include:"#natspec-tag-custom"},{include:"#natspec-tag-inheritdoc"}]},number:{patterns:[{include:"#number-decimal"},{include:"#number-hex"},{include:"#number-scientific"}]},"number-decimal":{match:"\\b([0-9_]+(\\.[0-9_]+)?)\\b",name:"constant.numeric.decimal"},"number-hex":{match:"\\b(0[xX][a-fA-F0-9]+)\\b",name:"constant.numeric.hexadecimal"},"number-scientific":{match:"\\b(?:0\\.(?:0[0-9]|[0-9][0-9_]?)|[0-9][0-9_]*(?:\\.\\d{1,2})?)(?:e[+-]?[0-9_]+)?",name:"constant.numeric.scientific"},operator:{patterns:[{include:"#operator-logic"},{include:"#operator-mapping"},{include:"#operator-arithmetic"},{include:"#operator-binary"},{include:"#operator-assignment"}]},"operator-arithmetic":{match:"(\\+|\\-|\\/|\\*)",name:"keyword.operator.arithmetic"},"operator-assignment":{match:"(\\:?=)",name:"keyword.operator.assignment"},"operator-binary":{match:"(\\^|\\&|\\||<<|>>)",name:"keyword.operator.binary"},"operator-logic":{match:"(==|\\!=|<(?!<)|<=|>(?!>)|>=|\\&\\&|\\|\\||\\:(?!=)|\\?|\\!)",name:"keyword.operator.logic"},"operator-mapping":{match:"(=>)",name:"keyword.operator.mapping"},primitive:{patterns:[{include:"#number-decimal"},{include:"#number-hex"},{include:"#number-scientific"},{include:"#string"}]},punctuation:{patterns:[{match:";",name:"punctuation.terminator.statement"},{match:"\\.",name:"punctuation.accessor"},{match:",",name:"punctuation.separator"},{match:"\\{",name:"punctuation.brace.curly.begin"},{match:"\\}",name:"punctuation.brace.curly.end"},{match:"\\[",name:"punctuation.brace.square.begin"},{match:"\\]",name:"punctuation.brace.square.end"},{match:"\\(",name:"punctuation.parameters.begin"},{match:"\\)",name:"punctuation.parameters.end"}]},string:{patterns:[{match:'\\"(?:\\\\"|[^\\"])*\\"',name:"string.quoted.double"},{match:"\\'(?:\\\\'|[^\\'])*\\'",name:"string.quoted.single"}]},"type-modifier-access":{match:"\\b(internal|external|private|public)\\b",name:"storage.type.modifier.access"},"type-modifier-constant":{match:"\\b(constant)\\b",name:"storage.type.modifier.readonly"},"type-modifier-extended-scope":{match:"\\b(pure|view|inherited|indexed|storage|memory|virtual|calldata|override|abstract)\\b",name:"storage.type.modifier.extendedscope"},"type-modifier-immutable":{match:"\\b(immutable)\\b",name:"storage.type.modifier.readonly"},"type-modifier-payable":{match:"\\b(nonpayable|payable)\\b",name:"storage.type.modifier.payable"},"type-primitive":{patterns:[{begin:"\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b(?:\\[\\])(\\()",beginCaptures:{1:{name:"support.type.primitive"}},end:"(\\))",patterns:[{include:"#primitive"},{include:"#punctuation"},{include:"#global"},{include:"#variable"}]},{match:"\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b",name:"support.type.primitive"}]},variable:{patterns:[{captures:{1:{name:"variable.parameter.function"}},match:"\\b(\\_\\w+)\\b"},{captures:{1:{name:"support.variable.property"}},match:"(?:\\.)(\\w+)\\b"},{captures:{1:{name:"variable.parameter.other"}},match:"\\b(\\w+)\\b"}]}},scopeName:"source.solidity"});var t=[e];export{t as default}; diff --git a/assets/chunks/sparql.DJ46LgWq.js b/assets/chunks/sparql.DJ46LgWq.js new file mode 100644 index 000000000..ebe12efb9 --- /dev/null +++ b/assets/chunks/sparql.DJ46LgWq.js @@ -0,0 +1 @@ +import e from"./turtle.C15OxdQ5.js";const s=Object.freeze({displayName:"SPARQL",fileTypes:["rq","sparql","sq"],name:"sparql",patterns:[{include:"source.turtle"},{include:"#query-keyword-operators"},{include:"#functions"},{include:"#variables"},{include:"#expression-operators"}],repository:{"expression-operators":{match:"(?:\\|\\||&&|=|!=|<|>|<=|>=|\\*|/|\\+|-|\\||\\^|\\?|\\!)",name:"support.class.sparql"},functions:{match:"\\b(?i:concat|regex|asc|desc|bound|isiri|isuri|isblank|isliteral|isnumeric|str|lang|datatype|sameterm|langmatches|avg|count|group_concat|separator|max|min|sample|sum|iri|uri|bnode|strdt|uuid|struuid|strlang|strlen|substr|ucase|lcase|strstarts|strends|contains|strbefore|strafter|encode_for_uri|replace|abs|round|ceil|floor|rand|now|year|month|day|hours|minutes|seconds|timezone|tz|md5|sha1|sha256|sha384|sha512|coalesce|if)\\b",name:"support.function.sparql"},"query-keyword-operators":{match:"\\b(?i:define|select|distinct|reduced|from|named|construct|ask|describe|where|graph|having|bind|as|filter|optional|union|order|by|group|limit|offset|values|insert data|delete data|with|delete|insert|clear|silent|default|all|create|drop|copy|move|add|to|using|service|not exists|exists|not in|in|minus|load)\\b",name:"keyword.control.sparql"},variables:{match:"(?<!\\w)[?$]\\w+",name:"constant.variable.sparql.turtle"}},scopeName:"source.sparql",embeddedLangs:["turtle"]});var a=[...e,s];export{a as default}; diff --git a/assets/chunks/splunk.6XBPEST2.js b/assets/chunks/splunk.6XBPEST2.js new file mode 100644 index 000000000..9bbefed90 --- /dev/null +++ b/assets/chunks/splunk.6XBPEST2.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Splunk Query Language",fileTypes:["splunk","spl"],name:"splunk",patterns:[{comment:"Splunk Built-in functions",match:"(?<=(\\||\\[))([\\s]*)\\b(abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|append|appendcols|appendpipe|arules|associate|audit|autoregress|bucket|bucketdir|chart|cluster|collect|concurrency|contingency|convert|correlate|crawl|datamodel|dbinspect|dbxquery|dbxlookup|dedup|delete|delta|diff|dispatch|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|file|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geostats|head|highlight|history|input|inputcsv|inputlookup|iplocation|join|kmeans|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|metadata|metasearch|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\\b(?=[\\s])",name:"support.class.splunk_search"},{comment:"Splunk Eval functions",match:"\\b(abs|acos|acosh|asin|asinh|atan|atan2|atanh|case|cidrmatch|ceiling|coalesce|commands|cos|cosh|exact|exp|floor|hypot|if|in|isbool|isint|isnotnull|isnull|isnum|isstr|len|like|ln|log|lower|ltrim|match|max|md5|min|mvappend|mvcount|mvdedup|mvfilter|mvfind|mvindex|mvjoin|mvrange|mvsort|mvzip|now|null|nullif|pi|pow|printf|random|relative_time|replace|round|rtrim|searchmatch|sha1|sha256|sha512|sigfig|sin|sinh|spath|split|sqrt|strftime|strptime|substr|tan|tanh|time|tonumber|tostring|trim|typeof|upper|urldecode|validate)(?=\\()\\b",name:"support.function.splunk_search"},{comment:"Splunk Transforming functions",match:"\\b(avg|count|distinct_count|estdc|estdc_error|eval|max|mean|median|min|mode|percentile|range|stdev|stdevp|sum|sumsq|var|varp|first|last|list|values|earliest|earliest_time|latest|latest_time|per_day|per_hour|per_minute|per_second|rate)\\b",name:"support.function.splunk_search"},{comment:"Splunk Macro Names",match:"(?<=\\`)[\\w]+(?=\\(|\\`)",name:"entity.name.function.splunk_search"},{comment:"Digits",match:"\\b(\\d+)\\b",name:"constant.numeric.splunk_search"},{comment:"Escape Characters",match:"(\\\\\\\\|\\\\\\||\\\\\\*|\\\\\\=)",name:"contant.character.escape.splunk_search"},{comment:"Splunk Operators",match:"(\\|,)",name:"keyword.operator.splunk_search"},{comment:"Splunk Language Constants",match:"(?i)\\b(as|by|or|and|over|where|output|outputnew)\\b|(?-i)\\b(NOT|true|false)\\b",name:"constant.language.splunk_search"},{comment:"Splunk Macro Parameters",match:'(?<=\\(|,|[^=]\\s{300})([^\\(\\)\\",=]+)(?=\\)|,)',name:"variable.parameter.splunk_search"},{comment:"Splunk Variables",match:"([\\w\\.]+)(\\[\\]|\\{\\})?([\\s]*)(?=\\=)",name:"variable.splunk_search"},{comment:"Comparison or assignment",match:"=",name:"keyword.operator.splunk_search"},{begin:'(?<!\\\\)"',end:'(?<!\\\\)"',name:"string.quoted.double.splunk_search"},{begin:"(?<!\\\\)'",end:"(?<!\\\\)'",name:"string.quoted.single.splunk_search"},{begin:'query=\\"',end:'(?<!\\\\)"',name:"meta.embedded.block.sql"},{begin:"(?<!\\\\)```",end:"(?<!\\\\)```",name:"comment.block.splunk_search"},{begin:"`comment\\(",end:"\\)`",name:"comment.block.splunk_search"}],scopeName:"source.splunk_search",aliases:["spl"]});var a=[e];export{a as default}; diff --git a/assets/chunks/sql.DbK06e1c.js b/assets/chunks/sql.DbK06e1c.js new file mode 100644 index 000000000..9cfb80132 --- /dev/null +++ b/assets/chunks/sql.DbK06e1c.js @@ -0,0 +1,21 @@ +const e=Object.freeze({displayName:"SQL",name:"sql",patterns:[{match:"((?<!@)@)\\b(\\w+)\\b",name:"text.variable"},{match:"(\\[)[^\\]]*(\\])",name:"text.bracketed"},{include:"#comments"},{captures:{1:{name:"keyword.other.create.sql"},2:{name:"keyword.other.sql"},5:{name:"entity.name.function.sql"}},match:"(?i:^\\s*(create(?:\\s+or\\s+replace)?)\\s+(aggregate|conversion|database|domain|function|group|(unique\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\s+)(['\"`]?)(\\w+)\\4",name:"meta.create.sql"},{captures:{1:{name:"keyword.other.create.sql"},2:{name:"keyword.other.sql"}},match:"(?i:^\\s*(drop)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))",name:"meta.drop.sql"},{captures:{1:{name:"keyword.other.create.sql"},2:{name:"keyword.other.table.sql"},3:{name:"entity.name.function.sql"},4:{name:"keyword.other.cascade.sql"}},match:"(?i:\\s*(drop)\\s+(table)\\s+(\\w+)(\\s+cascade)?\\b)",name:"meta.drop.sql"},{captures:{1:{name:"keyword.other.create.sql"},2:{name:"keyword.other.table.sql"}},match:"(?i:^\\s*(alter)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\s+)",name:"meta.alter.sql"},{captures:{1:{name:"storage.type.sql"},2:{name:"storage.type.sql"},3:{name:"constant.numeric.sql"},4:{name:"storage.type.sql"},5:{name:"constant.numeric.sql"},6:{name:"storage.type.sql"},7:{name:"constant.numeric.sql"},8:{name:"constant.numeric.sql"},9:{name:"storage.type.sql"},10:{name:"constant.numeric.sql"},11:{name:"storage.type.sql"},12:{name:"storage.type.sql"},13:{name:"storage.type.sql"},14:{name:"constant.numeric.sql"},15:{name:"storage.type.sql"}},match:`(?xi) + + +\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\b + + +|\\b(bit\\svarying|character\\s(?:varying)?|tinyint|var\\schar|float|interval)\\((\\d+)\\) + + +|\\b(char|number|varchar\\d?)\\b(?:\\((\\d+)\\))? + + +|\\b(numeric|decimal)\\b(?:\\((\\d+),(\\d+)\\))? + + +|\\b(times?)\\b(?:\\((\\d+)\\))?(\\swith(?:out)?\\stime\\szone\\b)? + + +|\\b(timestamp)(?:(s|tz))?\\b(?:\\((\\d+)\\))?(\\s(with|without)\\stime\\szone\\b)? + +`},{match:"(?i:\\b((?:primary|foreign)\\s+key|references|on\\sdelete(\\s+cascade)?|nocheck|check|constraint|collate|default)\\b)",name:"storage.modifier.sql"},{match:"\\b\\d+\\b",name:"constant.numeric.sql"},{match:"(?i:\\b(select(\\s+(all|distinct))?|insert\\s+(ignore\\s+)?into|update|delete|from|set|where|group\\s+by|or|like|and|union(\\s+all)?|having|order\\s+by|limit|cross\\s+join|join|straight_join|(inner|(left|right|full)(\\s+outer)?)\\s+join|natural(\\s+(inner|(left|right|full)(\\s+outer)?))?\\s+join)\\b)",name:"keyword.other.DML.sql"},{match:"(?i:\\b(on|off|((is\\s+)?not\\s+)?null)\\b)",name:"keyword.other.DDL.create.II.sql"},{match:"(?i:\\bvalues\\b)",name:"keyword.other.DML.II.sql"},{match:"(?i:\\b(begin(\\s+work)?|start\\s+transaction|commit(\\s+work)?|rollback(\\s+work)?)\\b)",name:"keyword.other.LUW.sql"},{match:"(?i:\\b(grant(\\swith\\sgrant\\soption)?|revoke)\\b)",name:"keyword.other.authorization.sql"},{match:"(?i:\\bin\\b)",name:"keyword.other.data-integrity.sql"},{match:"(?i:^\\s*(comment\\s+on\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\s+.*?\\s+(is)\\s+)",name:"keyword.other.object-comments.sql"},{match:"(?i)\\bAS\\b",name:"keyword.other.alias.sql"},{match:"(?i)\\b(DESC|ASC)\\b",name:"keyword.other.order.sql"},{match:"\\*",name:"keyword.operator.star.sql"},{match:"[!<>]?=|<>|<|>",name:"keyword.operator.comparison.sql"},{match:"-|\\+|/",name:"keyword.operator.math.sql"},{match:"\\|\\|",name:"keyword.operator.concatenator.sql"},{captures:{1:{name:"support.function.aggregate.sql"}},match:"(?i)\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdev|stdevp|var|varp)\\b\\s*\\("},{captures:{1:{name:"support.function.analytic.sql"}},match:"(?i)\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\b\\s*\\("},{captures:{1:{name:"support.function.bitmanipulation.sql"}},match:"(?i)\\b(bit_count|get_bit|left_shift|right_shift|set_bit)\\b\\s*\\("},{captures:{1:{name:"support.function.conversion.sql"}},match:"(?i)\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\b\\s*\\("},{captures:{1:{name:"support.function.collation.sql"}},match:"(?i)\\b(collationproperty|tertiary_weights)\\b\\s*\\("},{captures:{1:{name:"support.function.cryptographic.sql"}},match:"(?i)\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\b\\s*\\("},{captures:{1:{name:"support.function.cursor.sql"}},match:"(?i)\\b(cursor_status)\\b\\s*\\("},{captures:{1:{name:"support.function.datetime.sql"}},match:"(?i)\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\b\\s*\\("},{captures:{1:{name:"support.function.datatype.sql"}},match:"(?i)\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\b\\s*\\("},{captures:{1:{name:"support.function.expression.sql"}},match:"(?i)\\b(coalesce|nullif)\\b\\s*\\("},{captures:{1:{name:"support.function.globalvar.sql"}},match:"(?<!@)@@(?i)\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\b\\s*\\("},{captures:{1:{name:"support.function.json.sql"}},match:"(?i)\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\b\\s*\\("},{captures:{1:{name:"support.function.logical.sql"}},match:"(?i)\\b(choose|iif|greatest|least)\\b\\s*\\("},{captures:{1:{name:"support.function.mathematical.sql"}},match:"(?i)\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\b\\s*\\("},{captures:{1:{name:"support.function.metadata.sql"}},match:"(?i)\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\b\\s*\\("},{captures:{1:{name:"support.function.ranking.sql"}},match:"(?i)\\b(rank|dense_rank|ntile|row_number)\\b\\s*\\("},{captures:{1:{name:"support.function.rowset.sql"}},match:"(?i)\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\b\\s*\\("},{captures:{1:{name:"support.function.security.sql"}},match:"(?i)\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\b\\s*\\("},{captures:{1:{name:"support.function.string.sql"}},match:"(?i)\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\b\\s*\\("},{captures:{1:{name:"support.function.system.sql"}},match:"(?i)\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\b\\s*\\("},{captures:{1:{name:"support.function.textimage.sql"}},match:"(?i)\\b(patindex|textptr|textvalid)\\b\\s*\\("},{captures:{1:{name:"constant.other.database-name.sql"},2:{name:"constant.other.table-name.sql"}},match:"(\\w+?)\\.(\\w+)"},{include:"#strings"},{include:"#regexps"},{match:"\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|connection|containment|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\s+or\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_fulltext_language|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filegrowth|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|for|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|incremental|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|match|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|nested_triggers|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|seconds|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|shortest_path|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|target_recovery_time|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|transform_noise_words|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|two_digit_year_cutoff|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|window|windows|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\b",name:"keyword.other.sql"},{captures:{1:{name:"punctuation.section.scope.begin.sql"},2:{name:"punctuation.section.scope.end.sql"}},comment:"Allow for special ↩ behavior",match:"(\\()(\\))",name:"meta.block.sql"}],repository:{"comment-block":{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.sql"}},end:"\\*/",name:"comment.block",patterns:[{include:"#comment-block"}]},comments:{patterns:[{begin:"(^[ \\t]+)?(?=--)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.sql"}},end:"(?!\\G)",patterns:[{begin:"--",beginCaptures:{0:{name:"punctuation.definition.comment.sql"}},end:"\\n",name:"comment.line.double-dash.sql"}]},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.sql"}},end:"(?!\\G)",patterns:[]},{include:"#comment-block"}]},regexps:{patterns:[{begin:"/(?=\\S.*/)",beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},end:"/",endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.regexp.sql",patterns:[{include:"#string_interpolation"},{match:"\\\\/",name:"constant.character.escape.slash.sql"}]},{begin:"%r\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},comment:"We should probably handle nested bracket pairs!?! -- Allan",end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.regexp.modr.sql",patterns:[{include:"#string_interpolation"}]}]},string_escape:{match:"\\\\.",name:"constant.character.escape.sql"},string_interpolation:{captures:{1:{name:"punctuation.definition.string.begin.sql"},3:{name:"punctuation.definition.string.end.sql"}},match:"(#\\{)([^\\}]*)(\\})",name:"string.interpolated.sql"},strings:{patterns:[{captures:{2:{name:"punctuation.definition.string.begin.sql"},3:{name:"punctuation.definition.string.end.sql"}},comment:"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",match:"(N)?(')[^']*(')",name:"string.quoted.single.sql"},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.quoted.single.sql",patterns:[{include:"#string_escape"}]},{captures:{1:{name:"punctuation.definition.string.begin.sql"},2:{name:"punctuation.definition.string.end.sql"}},comment:"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",match:"(`)[^`\\\\]*(`)",name:"string.quoted.other.backtick.sql"},{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.quoted.other.backtick.sql",patterns:[{include:"#string_escape"}]},{captures:{1:{name:"punctuation.definition.string.begin.sql"},2:{name:"punctuation.definition.string.end.sql"}},comment:"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",match:'(")[^"#]*(")',name:"string.quoted.double.sql"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.quoted.double.sql",patterns:[{include:"#string_interpolation"}]},{begin:"%\\{",beginCaptures:{0:{name:"punctuation.definition.string.begin.sql"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.sql"}},name:"string.other.quoted.brackets.sql",patterns:[{include:"#string_interpolation"}]}]}},scopeName:"source.sql"});var t=[e];export{t as default}; diff --git a/assets/chunks/ssh-config.BH1M7C1g.js b/assets/chunks/ssh-config.BH1M7C1g.js new file mode 100644 index 000000000..6660a2883 --- /dev/null +++ b/assets/chunks/ssh-config.BH1M7C1g.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"SSH Config",fileTypes:["ssh_config",".ssh/config","sshd_config"],name:"ssh-config",patterns:[{match:"\\b(A(cceptEnv|dd(ressFamily|KeysToAgent)|llow(AgentForwarding|Groups|StreamLocalForwarding|TcpForwarding|Users)|uth(enticationMethods|orized((Keys(Command(User)?|File)|Principals(Command(User)?|File)))))|B(anner|atchMode|ind(Address|Interface))|C(anonical(Domains|ize(FallbackLocal|Hostname|MaxDots|PermittedCNAMEs))|ertificateFile|hallengeResponseAuthentication|heckHostIP|hrootDirectory|iphers?|learAllForwardings|ientAlive(CountMax|Interval)|ompression(Level)?|onnect(Timeout|ionAttempts)|ontrolMaster|ontrolPath|ontrolPersist)|D(eny(Groups|Users)|isableForwarding|ynamicForward)|E(nableSSHKeysign|scapeChar|xitOnForwardFailure|xposeAuthInfo)|F(ingerprintHash|orceCommand|orward(Agent|X11(Timeout|Trusted)?))|G(atewayPorts|SSAPI(Authentication|CleanupCredentials|ClientIdentity|DelegateCredentials|KeyExchange|RenewalForcesRekey|ServerIdentity|StrictAcceptorCheck|TrustDns)|atewayPorts|lobalKnownHostsFile)|H(ashKnownHosts|ost(based(AcceptedKeyTypes|Authentication|KeyTypes|UsesNameFromPacketOnly)|Certificate|Key(Agent|Algorithms|Alias)?|Name))|I(dentit(iesOnly|y(Agent|File))|gnore(Rhosts|Unknown|UserKnownHosts)|nclude|PQoS)|K(bdInteractive(Authentication|Devices)|erberos(Authentication|GetAFSToken|OrLocalPasswd|TicketCleanup)|exAlgorithms)|L(istenAddress|ocal(Command|Forward)|oginGraceTime|ogLevel)|M(ACs|atch|ax(AuthTries|Sessions|Startups))|N(oHostAuthenticationForLocalhost|umberOfPasswordPrompts)|P(KCS11Provider|asswordAuthentication|ermit(EmptyPasswords|LocalCommand|Open|RootLogin|TTY|Tunnel|User(Environment|RC))|idFile|ort|referredAuthentications|rint(LastLog|Motd)|rotocol|roxy(Command|Jump|UseFdpass)|ubkey(AcceptedKeyTypes|Authentication))|R(Domain|SAAuthentication|ekeyLimit|emote(Command|Forward)|equestTTY|evoked(HostKeys|Keys)|hostsRSAAuthentication)|S(endEnv|erverAlive(CountMax|Interval)|treamLocalBind(Mask|Unlink)|trict(HostKeyChecking|Modes)|ubsystem|yslogFacility)|T(CPKeepAlive|rustedUserCAKeys|unnel(Device)?)|U(pdateHostKeys|se(BlacklistedKeys|DNS|Keychain|PAM|PrivilegedPort|r(KnownHostsFile)?))|V(erifyHostKeyDNS|ersionAddendum|isualHostKey)|X(11(DisplayOffset|Forwarding|UseLocalhost)|AuthLocation))\\b",name:"keyword.other.ssh-config"},{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ssh-config"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.ssh-config"}},end:"\\n",name:"comment.line.number-sign.ssh-config"}]},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ssh-config"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.ssh-config"}},end:"\\n",name:"comment.line.double-slash.ssh-config"}]},{captures:{1:{name:"storage.type.ssh-config"},2:{name:"entity.name.section.ssh-config"},3:{name:"meta.toc-list.ssh-config"}},match:"(?:^| |\\t)(Host)\\s+((.*))$"},{match:"\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b",name:"constant.numeric.ssh-config"},{match:"\\b[0-9]+\\b",name:"constant.numeric.ssh-config"},{match:"\\b(yes|no)\\b",name:"constant.language.ssh-config"},{match:"\\b[A-Z_]+\\b",name:"constant.language.ssh-config"}],scopeName:"source.ssh-config"});var n=[e];export{n as default}; diff --git a/assets/chunks/stata.DCIeX9IZ.js b/assets/chunks/stata.DCIeX9IZ.js new file mode 100644 index 000000000..6eede8fe4 --- /dev/null +++ b/assets/chunks/stata.DCIeX9IZ.js @@ -0,0 +1,3 @@ +import t from"./sql.DbK06e1c.js";const e=Object.freeze({displayName:"Stata",fileTypes:["do","ado","mata"],foldingStartMarker:"\\{\\s*$",foldingStopMarker:"^\\s*\\}",name:"stata",patterns:[{include:"#ascii-regex-functions"},{include:"#unicode-regex-functions"},{include:"#constants"},{include:"#functions"},{include:"#comments"},{include:"#subscripts"},{include:"#operators"},{include:"#macro-local"},{include:"#macro-global"},{include:"#string-compound"},{include:"#string-regular"},{include:"#builtin_variables"},{include:"#macro-commands"},{comment:"keywords that delimit flow conditionals",match:"\\b(if|else if|else)\\b",name:"keyword.control.conditional.stata"},{captures:{1:{name:"storage.type.scalar.stata"}},match:"^\\s*(sca(lar|la|l)?(\\s+de(fine|fin|fi|f)?)?)\\s+(?!(drop|dir?|l(ist|is|i)?)\\s+)"},{begin:"\\b(mer(ge|g)?)\\s+(1|m|n)(:)(1|m|n)",beginCaptures:{1:{name:"keyword.control.flow.stata"},3:{patterns:[{include:"#constants"},{match:"m|n",name:""}]},4:{name:"punctuation.separator.key-value"},5:{patterns:[{include:"#constants"},{match:"m|n",name:""}]}},end:"using",patterns:[{include:"#builtin_variables"},{include:"#macro-local"},{include:"#macro-global"},{include:"#comments"}]},{captures:{1:{name:"keyword.control.flow.stata"},2:{patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},3:{name:"keyword.control.flow.stata"}},match:"\\b(foreach)\\s+((?!in|of).+)\\s+(in|of var(list|lis|li|l)?|of new(list|lis|li|l)?|of num(list|lis|li|l)?)\\b"},{begin:"\\b(foreach)\\s+((?!in|of).+)\\s+(of loc(al|a)?|of glo(bal|ba|b)?)\\b\\s*",beginCaptures:{1:{name:"keyword.control.flow.stata"},2:{patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},3:{name:"keyword.control.flow.stata"}},end:"(?=\\s*\\{)",patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},{begin:"\\b(forvalues|forvalue|forvalu|forval|forva|forv)\\s*",beginCaptures:{1:{name:"keyword.control.flow.stata"}},end:"\\s*(=)\\s*([^\\{]+)\\s*|(?=\\n)",endCaptures:{1:{name:"keyword.operator.assignment.stata"},2:{patterns:[{include:"#constants"},{include:"#operators"},{include:"#macro-local"},{include:"#macro-global"}]}},patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},{comment:"keywords that delimit loops",match:"\\b(while|continue)\\b",name:"keyword.control.flow.stata"},{captures:{1:{name:"keyword.other.stata"}},comment:"keywords that haven't fit into other groups (yet).",match:"\\b(as|ass|asse|asser|assert)\\b"},{comment:"prefixes that require a colon",match:"\\b(by(sort|sor|so|s)?|statsby|rolling|bootstrap|jackknife|permute|simulate|svy|mi est(imate|imat|ima|im|i)?|nestreg|stepwise|xi|fp|mfp|vers(ion|io|i)?)\\b",name:"storage.type.function.stata"},{comment:"prefixes that don't need a colon",match:"\\b(qui(etly|etl|et|e)?|n(oisily|oisil|oisi|ois|oi|o)?|cap(ture|tur|tu|t)?)\\b:?",name:"keyword.control.flow.stata"},{captures:{1:{name:"storage.type.function.stata"},3:{name:"storage.type.function.stata"},7:{name:"entity.name.function.stata"}},match:"\\s*(pr(ogram|ogra|ogr|og|o)?)\\s+((di(r)?|drop|l(ist|is|i)?)\\s+)([\\w&&[^0-9]]\\w{0,31})"},{begin:"^\\s*(pr(ogram|ogra|ogr|og|o)?)\\s+(de(fine|fin|fi|f)?\\s+)?",beginCaptures:{1:{name:"storage.type.function.stata"},3:{name:"storage.type.function.stata"}},end:"(?=,|\\n|/)",patterns:[{include:"#macro-local"},{include:"#macro-global"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"entity.name.function.stata"},{match:"[^A-za-z_0-9,\\n/ ]+",name:"invalid.illegal.name.stata"}]},{captures:{1:"keyword.functions.data.stata.test"},match:"\\b(form(at|a)?)\\s*([\\w&&[^0-9]]\\w{0,31})*\\s*(%)(-)?(0)?([0-9]+)(.)([0-9]+)(e|f|g)(c)?"},{include:"#braces-with-error"},{begin:"(?=syntax)",end:"\\n",patterns:[{begin:"syntax",beginCaptures:{0:{name:"keyword.functions.program.stata"}},comment:"color before the comma",end:"(?=,|\\n)",patterns:[{begin:"///",end:"\\n",name:"comment.block.stata"},{match:"\\[",name:"punctuation.definition.parameters.begin.stata"},{match:"\\]",name:"punctuation.definition.parameters.end.stata"},{match:"\\b(varlist|varname|newvarlist|newvarname|namelist|name|anything)\\b",name:"entity.name.type.class.stata"},{captures:{2:{name:"entity.name.type.class.stata"},3:{name:"keyword.operator.arithmetic.stata"}},match:"\\b((if|in|using|fweight|aweight|pweight|iweight))\\b(/)?"},{captures:{1:{name:"keyword.operator.arithmetic.stata"},2:{name:"entity.name.type.class.stata"}},match:"(/)?(exp)"},{include:"#constants"},{include:"#operators"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#builtin_variables"}]},{begin:",",beginCaptures:{0:{name:"punctuation.definition.variable.begin.stata"}},comment:"things to color after the comma",end:"(?=\\n)",patterns:[{begin:"///",end:"\\n",name:"comment.block.stata"},{begin:"([^\\s\\[\\]]+)(\\()",beginCaptures:{1:{comment:"these are the names that become macros",patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},2:{name:"keyword.operator.parentheses.stata"}},comment:"color options with parentheses",end:"\\)",endCaptures:{0:{name:"keyword.operator.parentheses.stata"}},patterns:[{captures:{0:{name:"support.type.stata"}},comment:"the first word is often a type",match:"\\b(integer|intege|integ|inte|int|real|string|strin|stri|str)\\b"},{include:"#constants"},{include:"#operators"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#builtin_variables"}]},{include:"#macro-local-identifiers"},{include:"#constants"},{include:"#operators"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#builtin_variables"}]}]},{captures:{1:{name:"keyword.functions.data.stata"}},comment:"one-word commands",match:"\\b(sa(v|ve)|saveold|destring|tostring|u(se|s)?|note(s)?|form(at|a)?)\\b"},{comment:"programming commands",match:"\\b(exit|end)\\b",name:"keyword.functions.data.stata"},{captures:{1:{name:"keyword.functions.data.stata"},2:{patterns:[{include:"#macro-local"}]},4:{name:"invalid.illegal.name.stata"},5:{name:"keyword.operator.assignment.stata"}},match:"\\b(replace)\\s+([^=]+)\\s*((==)|(=))"},{captures:{1:{name:"keyword.functions.data.stata"},3:{name:"support.type.stata"},5:{patterns:[{include:"#reserved-names"},{include:"#macro-local"}]},7:{name:"invalid.illegal.name.stata"},8:{name:"keyword.operator.assignment.stata"}},match:"\\b(g(enerate|enerat|enera|ener|ene|en|e)?|egen)\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\s+)?([^=\\s]+)\\s*((==)|(=))"},{captures:{1:{name:"keyword.functions.data.stata"},3:{name:"support.type.stata"}},match:"\\b(set ty(pe|p)?)\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)?\\s+)\\b"},{captures:{1:{name:"keyword.functions.data.stata"},3:{name:"keyword.functions.data.stata"},6:{name:"punctuation.definition.string.begin.stata"},7:{patterns:[{include:"#string-compound"},{include:"#macro-local-escaped"},{include:"#macro-global-escaped"},{include:"#macro-local"},{include:"#macro-global"},{match:"[^`\\$]{81,}",name:"invalid.illegal.name.stata"},{match:".",name:"string.quoted.double.compound.stata"}]},8:{name:"punctuation.definition.string.begin.stata"}},match:'\\b(la(bel|be|b)?)\\s+(var(iable|iabl|iab|ia|i)?)\\s+([\\w&&[^0-9]]\\w{0,31})\\s+(`")(.+)("\')'},{captures:{1:{name:"keyword.functions.data.stata"},3:{name:"keyword.functions.data.stata"},6:{name:"punctuation.definition.string.begin.stata"},7:{patterns:[{include:"#macro-local-escaped"},{include:"#macro-global-escaped"},{include:"#macro-local"},{include:"#macro-global"},{match:"[^`\\$]{81,}",name:"invalid.illegal.name.stata"},{match:".",name:"string.quoted.double.stata"}]},8:{name:"punctuation.definition.string.begin.stata"}},match:'\\b(la(bel|be|b)?)\\s+(var(iable|iabl|iab|ia|i)?)\\s+([\\w&&[^0-9]]\\w{0,31})\\s+(")(.+)(")'},{captures:{1:{name:"keyword.functions.data.stata"},3:{name:"keyword.functions.data.stata"}},match:"\\b(la(bel|be|b)?)\\s+(da(ta|t)?|var(iable|iabl|iab|ia|i)?|de(f|fi|fin|fine)?|val(ues|ue|u)?|di(r)?|l(ist|is|i)?|copy|drop|save|lang(uage|uag|ua|u)?)\\b"},{begin:"\\b(drop|keep)\\b(?!\\s+(if|in)\\b)",beginCaptures:{1:{name:"keyword.functions.data.stata"}},end:"\\n",patterns:[{match:"\\b(if|in)\\b",name:"invalid.illegal.name.stata"},{include:"#comments"},{include:"#macro-local"},{include:"#macro-global"},{include:"#operators"}]},{captures:{1:{name:"keyword.functions.data.stata"},2:{name:"keyword.functions.data.stata"}},match:"\\b(drop|keep)\\s+(if|in)\\b"},{begin:"^\\s*mata:?\\s*$",comment:"won't match single-line Mata statements",end:"^\\s*end\\s*$\\n?",name:"meta.embedded.block.mata",patterns:[{match:"(?<![^$\\s])(version|pragma|if|else|for|while|do|break|continue|goto|return)(?=\\s)",name:"keyword.control.mata"},{captures:{1:{name:"storage.type.eltype.mata"},4:{name:"storage.type.orgtype.mata"}},match:"\\b(transmorphic|string|numeric|real|complex|(pointer(\\([^)]+\\))?))\\s+(matrix|vector|rowvector|colvector|scalar)\\b",name:"storage.type.mata"},{comment:"need to end with whitespace character here or last group doesn't match",match:"\\b(transmorphic|string|numeric|real|complex|(pointer(\\([^)]+\\))?))\\s",name:"storage.type.eltype.mata"},{match:"\\b(matrix|vector|rowvector|colvector|scalar)\\b",name:"storage.type.orgtype.mata"},{match:"\\!|\\+\\+|\\-\\-|\\&|\\'|\\?|\\\\|\\:\\:|\\,|\\.\\.|\\||\\=|\\=\\=|\\>\\=|\\<\\=|\\<|\\>|\\!\\=|\\#|\\+|\\-|\\*|\\^|\\/",name:"keyword.operator.mata"},{include:"$self"}]},{begin:"\\b(odbc)\\b",beginCaptures:{0:{name:"keyword.control.flow.stata"}},end:"\\n",patterns:[{begin:"///",end:"\\n",name:"comment.block.stata"},{begin:'(exec?)(\\(")',beginCaptures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"}},end:'"\\)',endCaptures:{0:{name:"punctuation.definition.parameters.end.stata"}},patterns:[{include:"source.sql"}]},{include:"$self"}]},{include:"#commands-other"}],repository:{"ascii-regex-character-class":{patterns:[{match:"\\\\[\\*\\+\\?\\-\\.\\^\\$\\|\\[\\]\\(\\)\\\\]",name:"constant.character.escape.backslash.stata"},{match:"\\.",name:"constant.character.character-class.stata"},{match:"\\\\.",name:"illegal.invalid.character-class.stata"},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.stata"},2:{name:"keyword.operator.negation.stata"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.stata"}},name:"constant.other.character-class.set.stata",patterns:[{include:"#ascii-regex-character-class"},{captures:{2:{name:"constant.character.escape.backslash.stata"},4:{name:"constant.character.escape.backslash.stata"}},match:"((\\\\.)|.)\\-((\\\\.)|[^\\]])",name:"constant.other.character-class.range.stata"}]}]},"ascii-regex-functions":{patterns:[{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#ascii-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{name:"invalid.illegal.punctuation.stata"},9:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexm with regular quotes i.e. " ',match:`\\b(regexm)(\\()([^,]+)(,)\\s*(")([^"]+)("(')?)\\s*(\\))`},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#ascii-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{name:"punctuation.definition.parameters.end.stata"}},comment:"color regexm with compound quotes",match:'\\b(regexm)(\\()([^,]+)(,)\\s*(`")([^"]+)("\')\\s*(\\))'},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#ascii-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{name:"invalid.illegal.punctuation.stata"},9:{patterns:[{match:",",name:"punctuation.definition.variable.begin.stata"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},10:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexr with regular quotes i.e. " ',match:`\\b(regexr)(\\()([^,]+)(,)\\s*(")([^"]+)("(')?)\\s*([^\\)]*)(\\))`},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#ascii-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{patterns:[{match:",",name:"punctuation.definition.variable.begin.stata"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},9:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexr with compound quotes i.e. `"text"\' ',match:'\\b(regexr)(\\()([^,]+)(,)\\s*(`")([^"]+)("\')\\s*([^\\)]*)(\\))'}]},"ascii-regex-internals":{patterns:[{match:"\\^",name:"keyword.control.anchor.stata"},{comment:"matched when not a global, but must be ascii",match:"\\$(?![a-zA-Z_\\{])",name:"keyword.control.anchor.stata"},{match:"[\\?\\+\\*]",name:"keyword.control.quantifier.stata"},{match:"\\|",name:"keyword.control.or.stata"},{begin:"(\\()(?=\\?|\\*|\\+)",beginCaptures:{1:{name:"keyword.operator.group.stata"}},contentName:"invalid.illegal.regexm.stata",end:"\\)",endCaptures:{0:{name:"keyword.operator.group.stata"}}},{begin:"(\\()",beginCaptures:{1:{name:"keyword.operator.group.stata"}},end:"(\\))",endCaptures:{1:{name:"keyword.operator.group.stata"}},patterns:[{include:"#ascii-regex-internals"}]},{include:"#ascii-regex-character-class"},{include:"#macro-local"},{include:"#macro-global"},{comment:"NOTE: Error if I have .+ No idea why but it works fine it seems with just .",match:".",name:"string.quoted.stata"}]},"braces-with-error":{patterns:[{begin:"(\\{)\\s*([^\\n]*)(?=\\n)",beginCaptures:{1:{name:"keyword.control.block.begin.stata"},2:{patterns:[{include:"#comments"},{match:"[^\\n]+",name:"illegal.invalid.name.stata"}]}},comment:"correct with nothing else on the line but whitespace; before and after; before; after; correct",end:'^\\s*(\\})\\s*$|^\\s*([^\\*"\\}]+)\\s+(\\})\\s*([^\\*"\\}/\\n]+)|^\\s*([^"\\*\\}]+)\\s+(\\})|\\s*(\\})\\s*([^"\\*\\}/\\n]+)|(\\})$',endCaptures:{1:{name:"keyword.control.block.end.stata"},2:{name:"invalid.illegal.name.stata"},3:{name:"keyword.control.block.end.stata"},4:{name:"invalid.illegal.name.stata"},5:{name:"invalid.illegal.name.stata"},6:{name:"keyword.control.block.end.stata"},7:{name:"keyword.control.block.end.stata"},8:{name:"invalid.illegal.name.stata"},9:{name:"keyword.control.block.end.stata"}},patterns:[{include:"$self"}]}]},"braces-without-error":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"keyword.control.block.begin.stata"}},end:"\\}",endCaptures:{0:{name:"keyword.control.block.end.stata"}}}]},builtin_types:{patterns:[{match:"\\b(byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\b",name:"support.type.stata"}]},builtin_variables:{patterns:[{match:"\\b(_b|_coef|_cons|_n|_N|_rc|_se)\\b",name:"variable.object.stata"}]},"commands-other":{patterns:[{comment:"Add on commands",match:"\\b(reghdfe|ivreghdfe|ivreg2|outreg|gcollapse|gcontract|gegen|gisid|glevelsof|gquantiles)\\b",name:"keyword.control.flow.stata"},{comment:"Built in commands",match:"\\b(about|ac|acprplot|ado|adopath|adoupdate|alpha|ameans|an|ano|anov|anova|anova_terms|anovadef|aorder|ap|app|appe|appen|append|arch|arch_dr|arch_estat|arch_p|archlm|areg|areg_p|args|arima|arima_dr|arima_estat|arima_p|asmprobit|asmprobit_estat|asmprobit_lf|asmprobit_mfx__dlg|asmprobit_p|avplot|avplots|bcskew0|bgodfrey|binreg|bip0_lf|biplot|bipp_lf|bipr_lf|bipr_p|biprobit|bitest|bitesti|bitowt|blogit|bmemsize|boot|bootsamp|boxco_l|boxco_p|boxcox|boxcox_p|bprobit|br|break|brier|bro|brow|brows|browse|brr|brrstat|bs|bsampl_w|bsample|bsqreg|bstat|bstrap|ca|ca_estat|ca_p|cabiplot|camat|canon|canon_estat|canon_p|caprojection|cat|cc|cchart|cci|cd|censobs_table|centile|cf|char|chdir|checkdlgfiles|checkestimationsample|checkhlpfiles|checksum|chelp|ci|cii|cl|class|classutil|clear|cli|clis|clist|clog|clog_lf|clog_p|clogi|clogi_sw|clogit|clogit_lf|clogit_p|clogitp|clogl_sw|cloglog|clonevar|clslistarray|cluster|cluster_measures|cluster_stop|cluster_tree|cluster_tree_8|clustermat|cmdlog|cnr|cnre|cnreg|cnreg_p|cnreg_sw|cnsreg|codebook|collaps4|collapse|colormult_nb|colormult_nw|compare|compress|conf|confi|confir|confirm|conren|cons|const|constr|constra|constrai|constrain|constraint|contract|copy|copyright|copysource|cor|corc|corr|corr2data|corr_anti|corr_kmo|corr_smc|corre|correl|correla|correlat|correlate|corrgram|cou|coun|count|cprplot|crc|cret|cretu|cretur|creturn|cross|cs|cscript|cscript_log|csi|ct|ct_is|ctset|ctst_st|cttost|cumsp|cumul|cusum|cutil|d|datasig|datasign|datasigna|datasignat|datasignatu|datasignatur|datasignature|datetof|db|dbeta|de|dec|deco|decod|decode|deff|des|desc|descr|descri|describ|describe|dfbeta|dfgls|dfuller|di|di_g|dir|dirstats|dis|discard|disp|disp_res|disp_s|displ|displa|display|do|doe|doed|doedi|doedit|dotplot|dprobit|drawnorm|ds|ds_util|dstdize|duplicates|durbina|dwstat|dydx|ed|edi|edit|eivreg|emdef|en|enc|enco|encod|encode|eq|erase|ereg|ereg_lf|ereg_p|ereg_sw|ereghet|ereghet_glf|ereghet_glf_sh|ereghet_gp|ereghet_ilf|ereghet_ilf_sh|ereghet_ip|eret|eretu|eretur|ereturn|err|erro|error|est|est_cfexist|est_cfname|est_clickable|est_expand|est_hold|est_table|est_unhold|est_unholdok|estat|estat_default|estat_summ|estat_vce_only|esti|estimates|etodow|etof|etomdy|expand|expandcl|fac|fact|facto|factor|factor_estat|factor_p|factor_pca_rotated|factor_rotate|factormat|fcast|fcast_compute|fcast_graph|fdades|fdadesc|fdadescr|fdadescri|fdadescrib|fdadescribe|fdasav|fdasave|fdause|fh_st|file|filefilter|fillin|find_hlp_file|findfile|findit|fit|fl|fli|flis|flist|fpredict|frac_adj|frac_chk|frac_cox|frac_ddp|frac_dis|frac_dv|frac_in|frac_mun|frac_pp|frac_pq|frac_pv|frac_wgt|frac_xo|fracgen|fracplot|fracpoly|fracpred|fron_ex|fron_hn|fron_p|fron_tn|fron_tn2|frontier|ftodate|ftoe|ftomdy|ftowdate|gamhet_glf|gamhet_gp|gamhet_ilf|gamhet_ip|gamma|gamma_d2|gamma_p|gamma_sw|gammahet|gdi_hexagon|gdi_spokes|genrank|genstd|genvmean|gettoken|gladder|glim_l01|glim_l02|glim_l03|glim_l04|glim_l05|glim_l06|glim_l07|glim_l08|glim_l09|glim_l10|glim_l11|glim_l12|glim_lf|glim_mu|glim_nw1|glim_nw2|glim_nw3|glim_p|glim_v1|glim_v2|glim_v3|glim_v4|glim_v5|glim_v6|glim_v7|glm|glm_p|glm_sw|glmpred|glogit|glogit_p|gmeans|gnbre_lf|gnbreg|gnbreg_p|gomp_lf|gompe_sw|gomper_p|gompertz|gompertzhet|gomphet_glf|gomphet_glf_sh|gomphet_gp|gomphet_ilf|gomphet_ilf_sh|gomphet_ip|gphdot|gphpen|gphprint|gprefs|gprobi_p|gprobit|gr|gr7|gr_copy|gr_current|gr_db|gr_describe|gr_dir|gr_draw|gr_draw_replay|gr_drop|gr_edit|gr_editviewopts|gr_example|gr_example2|gr_export|gr_print|gr_qscheme|gr_query|gr_read|gr_rename|gr_replay|gr_save|gr_set|gr_setscheme|gr_table|gr_undo|gr_use|graph|grebar|greigen|grmeanby|gs_fileinfo|gs_filetype|gs_graphinfo|gs_stat|gsort|gwood|h|hareg|hausman|haver|he|heck_d2|heckma_p|heckman|heckp_lf|heckpr_p|heckprob|hel|help|hereg|hetpr_lf|hetpr_p|hetprob|hettest|hexdump|hilite|hist|histogram|hlogit|hlu|hmeans|hotel|hotelling|hprobit|hreg|hsearch|icd9|icd9_ff|icd9p|iis|impute|imtest|inbase|include|inf|infi|infil|infile|infix|inp|inpu|input|ins|insheet|insp|inspe|inspec|inspect|integ|inten|intreg|intreg_p|intrg2_ll|intrg_ll|intrg_ll2|ipolate|iqreg|ir|irf|irf_create|irfm|iri|is_svy|is_svysum|isid|istdize|ivprobit|ivprobit_p|ivreg|ivreg_footnote|ivtob_lf|ivtobit|ivtobit_p|jacknife|jknife|jkstat|joinby|kalarma1|kap|kapmeier|kappa|kapwgt|kdensity|ksm|ksmirnov|ktau|kwallis|labelbook|ladder|levelsof|leverage|lfit|lfit_p|li|lincom|line|linktest|lis|list|lloghet_glf|lloghet_glf_sh|lloghet_gp|lloghet_ilf|lloghet_ilf_sh|lloghet_ip|llogi_sw|llogis_p|llogist|llogistic|llogistichet|lnorm_lf|lnorm_sw|lnorma_p|lnormal|lnormalhet|lnormhet_glf|lnormhet_glf_sh|lnormhet_gp|lnormhet_ilf|lnormhet_ilf_sh|lnormhet_ip|lnskew0|loadingplot|(?<!\\.)log|logi|logis_lf|logistic|logistic_p|logit|logit_estat|logit_p|loglogs|logrank|loneway|lookfor|lookup|lowess|lpredict|lrecomp|lroc|lrtest|ls|lsens|lsens_x|lstat|ltable|ltriang|lv|lvr2plot|m|ma|mac|macr|macro|makecns|man|manova|manovatest|mantel|mark|markin|markout|marksample|mat|mat_capp|mat_order|mat_put_rr|mat_rapp|mata|mata_clear|mata_describe|mata_drop|mata_matdescribe|mata_matsave|mata_matuse|mata_memory|mata_mlib|mata_mosave|mata_rename|mata_which|matalabel|matcproc|matlist|matname|matr|matri|matrix|matrix_input__dlg|matstrik|mcc|mcci|md0_|md1_|md1debug_|md2_|md2debug_|mds|mds_estat|mds_p|mdsconfig|mdslong|mdsmat|mdsshepard|mdytoe|mdytof|me_derd|mean|means|median|memory|memsize|mfp|mfx|mhelp|mhodds|minbound|mixed_ll|mixed_ll_reparm|mkassert|mkdir|mkmat|mkspline|ml|ml_adjs|ml_bhhhs|ml_c_d|ml_check|ml_clear|ml_cnt|ml_debug|ml_defd|ml_e0|ml_e0_bfgs|ml_e0_cycle|ml_e0_dfp|ml_e0i|ml_e1|ml_e1_bfgs|ml_e1_bhhh|ml_e1_cycle|ml_e1_dfp|ml_e2|ml_e2_cycle|ml_ebfg0|ml_ebfr0|ml_ebfr1|ml_ebh0q|ml_ebhh0|ml_ebhr0|ml_ebr0i|ml_ecr0i|ml_edfp0|ml_edfr0|ml_edfr1|ml_edr0i|ml_eds|ml_eer0i|ml_egr0i|ml_elf|ml_elf_bfgs|ml_elf_bhhh|ml_elf_cycle|ml_elf_dfp|ml_elfi|ml_elfs|ml_enr0i|ml_enrr0|ml_erdu0|ml_erdu0_bfgs|ml_erdu0_bhhh|ml_erdu0_bhhhq|ml_erdu0_cycle|ml_erdu0_dfp|ml_erdu0_nrbfgs|ml_exde|ml_footnote|ml_geqnr|ml_grad0|ml_graph|ml_hbhhh|ml_hd0|ml_hold|ml_init|ml_inv|ml_log|ml_max|ml_mlout|ml_mlout_8|ml_model|ml_nb0|ml_opt|ml_p|ml_plot|ml_query|ml_rdgrd|ml_repor|ml_s_e|ml_score|ml_searc|ml_technique|ml_unhold|mleval|mlf_|mlmatbysum|mlmatsum|mlog|mlogi|mlogit|mlogit_footnote|mlogit_p|mlopts|mlsum|mlvecsum|mnl0_|mor|more|mov|move|mprobit|mprobit_lf|mprobit_p|mrdu0_|mrdu1_|mvdecode|mvencode|mvreg|mvreg_estat|nbreg|nbreg_al|nbreg_lf|nbreg_p|nbreg_sw|nestreg|net|newey|newey_p|news|nl|nlcom|nlcom_p|nlexp2|nlexp2a|nlexp3|nlgom3|nlgom4|nlinit|nllog3|nllog4|nlog_rd|nlogit|nlogit_p|nlogitgen|nlogittree|nlpred|nobreak|notes_dlg|nptrend|numlabel|numlist|old_ver|olo|olog|ologi|ologi_sw|ologit|ologit_p|ologitp|on|one|onew|onewa|oneway|op_colnm|op_comp|op_diff|op_inv|op_str|opr|opro|oprob|oprob_sw|oprobi|oprobi_p|oprobit|oprobitp|opts_exclusive|order|orthog|orthpoly|ou|out|outf|outfi|outfil|outfile|outs|outsh|outshe|outshee|outsheet|ovtest|pac|palette|parse_dissim|pause|pca|pca_display|pca_estat|pca_p|pca_rotate|pcamat|pchart|pchi|pcorr|pctile|pentium|pergram|personal|peto_st|pkcollapse|pkcross|pkequiv|pkexamine|pkshape|pksumm|plugin|pnorm|poisgof|poiss_lf|poiss_sw|poisso_p|poisson|poisson_estat|post|postclose|postfile|postutil|pperron|prais|prais_e|prais_e2|prais_p|predict|predictnl|preserve|print|prob|probi|probit|probit_estat|probit_p|proc_time|procoverlay|procrustes|procrustes_estat|procrustes_p|profiler|prop|proportion|prtest|prtesti|pwcorr|pwd|qs|qby|qbys|qchi|qladder|qnorm|qqplot|qreg|qreg_c|qreg_p|qreg_sw|qu|quadchk|quantile|que|quer|query|range|ranksum|ratio|rchart|rcof|recast|recode|reg|reg3|reg3_p|regdw|regr|regre|regre_p2|regres|regres_p|regress|regress_estat|regriv_p|remap|ren|rena|renam|rename|renpfix|repeat|reshape|restore|ret|retu|retur|return|rmdir|robvar|roccomp|rocf_lf|rocfit|rocgold|rocplot|roctab|rologit|rologit_p|rot|rota|rotat|rotate|rotatemat|rreg|rreg_p|ru|run|runtest|rvfplot|rvpplot|safesum|sample|sampsi|savedresults|sc|scatter|scm_mine|sco|scob_lf|scob_p|scobi_sw|scobit|scor|score|scoreplot|scoreplot_help|scree|screeplot|screeplot_help|sdtest|sdtesti|se|search|separate|seperate|serrbar|serset|set|set_defaults|sfrancia|sh|she|shel|shell|shewhart|signestimationsample|signrank|signtest|simul|sktest|sleep|slogit|slogit_d2|slogit_p|smooth|snapspan|so|sor|sort|spearman|spikeplot|spikeplt|spline_x|split|sqreg|sqreg_p|sret|sretu|sretur|sreturn|ssc|st|st_ct|st_hc|st_hcd|st_hcd_sh|st_is|st_issys|st_note|st_promo|st_set|st_show|st_smpl|st_subid|stack|stbase|stci|stcox|stcox_estat|stcox_fr|stcox_fr_ll|stcox_p|stcox_sw|stcoxkm|stcstat|stcurv|stcurve|stdes|stem|stepwise|stfill|stgen|stir|stjoin|stmc|stmh|stphplot|stphtest|stptime|strate|streg|streg_sw|streset|sts|stset|stsplit|stsum|sttocc|sttoct|stvary|su|suest|sum|summ|summa|summar|summari|summariz|summarize|sunflower|sureg|survcurv|survsum|svar|svar_p|svmat|svy_disp|svy_dreg|svy_est|svy_est_7|svy_estat|svy_get|svy_gnbreg_p|svy_head|svy_header|svy_heckman_p|svy_heckprob_p|svy_intreg_p|svy_ivreg_p|svy_logistic_p|svy_logit_p|svy_mlogit_p|svy_nbreg_p|svy_ologit_p|svy_oprobit_p|svy_poisson_p|svy_probit_p|svy_regress_p|svy_sub|svy_sub_7|svy_x|svy_x_7|svy_x_p|svydes|svygen|svygnbreg|svyheckman|svyheckprob|svyintreg|svyintrg|svyivreg|svylc|svylog_p|svylogit|svymarkout|svymean|svymlog|svymlogit|svynbreg|svyolog|svyologit|svyoprob|svyoprobit|svyopts|svypois|svypoisson|svyprobit|svyprobt|svyprop|svyratio|svyreg|svyreg_p|svyregress|svyset|svytab|svytest|svytotal|sw|swilk|symmetry|symmi|symplot|sysdescribe|sysdir|sysuse|szroeter|ta|tab|tab1|tab2|tab_or|tabd|tabdi|tabdis|tabdisp|tabi|table|tabodds|tabstat|tabu|tabul|tabula|tabulat|tabulate|te|tes|test|testnl|testparm|teststd|tetrachoric|time_it|timer|tis|tob|tobi|tobit|tobit_p|tobit_sw|token|tokeni|tokeniz|tokenize|total|translate|translator|transmap|treat_ll|treatr_p|treatreg|trim|trnb_cons|trnb_mean|trpoiss_d2|trunc_ll|truncr_p|truncreg|tsappend|tset|tsfill|tsline|tsline_ex|tsreport|tsrevar|tsrline|tsset|tssmooth|tsunab|ttest|ttesti|tut_chk|tut_wait|tutorial|tw|tware_st|two|twoway|twoway__fpfit_serset|twoway__function_gen|twoway__histogram_gen|twoway__ipoint_serset|twoway__ipoints_serset|twoway__kdensity_gen|twoway__lfit_serset|twoway__normgen_gen|twoway__pci_serset|twoway__qfit_serset|twoway__scatteri_serset|twoway__sunflower_gen|twoway_ksm_serset|ty|typ|type|typeof|unab|unabbrev|unabcmd|update|uselabel|var|var_mkcompanion|var_p|varbasic|varfcast|vargranger|varirf|varirf_add|varirf_cgraph|varirf_create|varirf_ctable|varirf_describe|varirf_dir|varirf_drop|varirf_erase|varirf_graph|varirf_ograph|varirf_rename|varirf_set|varirf_table|varlmar|varnorm|varsoc|varstable|varstable_w|varstable_w2|varwle|vec|vec_fevd|vec_mkphi|vec_p|vec_p_w|vecirf_create|veclmar|veclmar_w|vecnorm|vecnorm_w|vecrank|vecstable|verinst|vers|versi|versio|version|view|viewsource|vif|vwls|wdatetof|webdescribe|webseek|webuse|wh|whelp|whi|which|wilc_st|wilcoxon|win|wind|windo|window|winexec|wntestb|wntestq|xchart|xcorr|xi|xmlsav|xmlsave|xmluse|xpose|xsh|xshe|xshel|xshell|xt_iis|xt_tis|xtab_p|xtabond|xtbin_p|xtclog|xtcloglog|xtcloglog_d2|xtcloglog_pa_p|xtcloglog_re_p|xtcnt_p|xtcorr|xtdata|xtdes|xtfront_p|xtfrontier|xtgee|xtgee_elink|xtgee_estat|xtgee_makeivar|xtgee_p|xtgee_plink|xtgls|xtgls_p|xthaus|xthausman|xtht_p|xthtaylor|xtile|xtint_p|xtintreg|xtintreg_d2|xtintreg_p|xtivreg|xtline|xtline_ex|xtlogit|xtlogit_d2|xtlogit_fe_p|xtlogit_pa_p|xtlogit_re_p|xtmixed|xtmixed_estat|xtmixed_p|xtnb_fe|xtnb_lf|xtnbreg|xtnbreg_pa_p|xtnbreg_refe_p|xtpcse|xtpcse_p|xtpois|xtpoisson|xtpoisson_d2|xtpoisson_pa_p|xtpoisson_refe_p|xtpred|xtprobit|xtprobit_d2|xtprobit_re_p|xtps_fe|xtps_lf|xtps_ren|xtps_ren_8|xtrar_p|xtrc|xtrc_p|xtrchh|xtrefe_p|yx|yxview__barlike_draw|yxview_area_draw|yxview_bar_draw|yxview_dot_draw|yxview_dropline_draw|yxview_function_draw|yxview_iarrow_draw|yxview_ilabels_draw|yxview_normal_draw|yxview_pcarrow_draw|yxview_pcbarrow_draw|yxview_pccapsym_draw|yxview_pcscatter_draw|yxview_pcspike_draw|yxview_rarea_draw|yxview_rbar_draw|yxview_rbarm_draw|yxview_rcap_draw|yxview_rcapsym_draw|yxview_rconnected_draw|yxview_rline_draw|yxview_rscatter_draw|yxview_rspike_draw|yxview_spike_draw|yxview_sunflower_draw|zap_s|zinb|zinb_llf|zinb_plf|zip|zip_llf|zip_p|zip_plf|zt_ct_5|zt_hc_5|zt_hcd_5|zt_is_5|zt_iss_5|zt_sho_5|zt_smp_5|ztnb|ztnb_p|ztp|ztp_p|prtab|prchange|eststo|estout|esttab|estadd|estpost|ivregress|xtreg|xtreg_be|xtreg_fe|xtreg_ml|xtreg_pa_p|xtreg_re|xtregar|xtrere_p|xtset|xtsf_ll|xtsf_llti|xtsum|xttab|xttest0|xttobit|xttobit_p|xttrans)\\b",name:"keyword.control.flow.stata"}]},comments:{patterns:[{include:"#comments-double-slash"},{include:"#comments-star"},{include:"#comments-block"},{include:"#comments-triple-slash"}]},"comments-block":{patterns:[{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.stata"}},end:"(\\*/\\s+\\*[^\\n]*)|(\\*/(?!\\*))",endCaptures:{0:{name:"punctuation.definition.comment.end.stata"}},name:"comment.block.stata",patterns:[{comment:"this ends and restarts a comment block. but need to catch this so that it doesn't start _another_ level of comment blocks",match:"\\*/\\*"},{include:"#docblockr-comment"},{include:"#comments-block"},{include:"#docstring"}]}]},"comments-double-slash":{patterns:[{begin:"(^//|(?<=\\s)//)(?!/)",captures:{0:{name:"punctuation.definition.comment.stata"}},end:"(?=\\n)",name:"comment.line.double-slash.stata",patterns:[{include:"#docblockr-comment"}]}]},"comments-star":{patterns:[{begin:"^\\s*(\\*)",captures:{0:{name:"punctuation.definition.comment.stata"}},comment:"TODO! need to except out the occasion that a * comes after a /// on the previous line. May be easiest to join with the comment.line.triple-slash.stata below",end:"(?=\\n)",name:"comment.line.star.stata",patterns:[{include:"#docblockr-comment"},{begin:"///",end:"\\n",name:"comment.line-continuation.stata"},{include:"#comments"}]}]},"comments-triple-slash":{patterns:[{begin:"(^///|(?<=\\s)///)",captures:{0:{name:"punctuation.definition.comment.stata"}},end:"(?=\\n)",name:"comment.line.triple-slash.stata",patterns:[{include:"#docblockr-comment"}]}]},constants:{patterns:[{include:"#factorvariables"},{match:"\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))(?=[^a-zA-Z_])",name:"constant.numeric.float.stata"},{match:"(?<=[^0-9a-zA-Z_])(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))",name:"constant.numeric.float.stata"},{match:"\\b(?i:(\\d+e[\\-\\+]?\\d+))",name:"constant.numeric.float.stata"},{match:"\\b(\\d+)\\b",name:"constant.numeric.integer.decimal.stata"},{match:"(?<![\\w])(\\.(?![\\./]))(?![\\w])",name:"constant.language.missing.stata"},{match:"\\b_all\\b",name:"constant.language.allvars.stata"}]},"docblockr-comment":{patterns:[{captures:{1:{name:"invalid.illegal.name.stata"}},match:"(?<!\\w)(@(error|ERROR|Error))\\b"},{captures:{1:{name:"keyword.docblockr.stata"}},match:"(?<!\\w)(@\\w+)\\b"}]},docstring:{patterns:[{begin:"'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:"'''",endCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},name:"string.quoted.docstring.stata"},{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},name:"string.quoted.docstring.stata"}]},factorvariables:{patterns:[{match:"\\b(i|c|o)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",name:"constant.language.factorvars.stata"},{captures:{0:{name:"constant.language.factorvars.stata"},3:{patterns:[{include:"#constants"}]}},match:"\\b(i?b)((\\d+)|n)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])"},{captures:{0:{name:"constant.language.factorvars.stata"},2:{name:"keyword.operator.parentheses.stata"},3:{patterns:[{include:"#constants"},{include:"#operators"}]},4:{name:"keyword.operator.parentheses.stata"}},match:"\\b(i?b)(\\()(#\\d+|first|last|freq)(\\))\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])"},{captures:{0:{name:"constant.language.factorvars.stata"},2:{patterns:[{include:"#constants"}]}},match:"\\b(i?o?)(\\d+)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])"},{captures:{1:{name:"constant.language.factorvars.stata"},2:{name:"keyword.operator.parentheses.stata"},3:{patterns:[{include:"$self"}]},4:{name:"keyword.operator.parentheses.stata"},5:{name:"constant.language.factorvars.stata"}},match:"\\b(i?o?)(\\()(.*?)(\\))(\\.)(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])"}]},functions:{patterns:[{begin:"\\b((abbrev|abs|acos|acosh|asin|asinh|atan|atan2|atanh|autocode|betaden|binomial|binomialp|binomialtail|binormalbofd|byteorder|c|cauchy|cauchyden|cauchytail|Cdhms|ceil|char|chi2|chi2den|chi2tail|Chms|cholesky|chop|clip|clock|Clock|cloglog|Cmdyhms|cofC|Cofc|cofd|Cofd|coleqnumb|collatorlocale|collatorversion|colnfreeparms|colnumb|colsof|comb|cond|corr|cos|cosh|daily|date|day|det|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|dhms|diag|diag0cnt|digamma|dofb|dofc|dofC|dofh|dofm|dofq|dofw|dofy|dow|doy|dunnettprob|e|el|epsdouble|epsfloat|exp|exponential|exponentialden|exponentialtail|F|Fden|fileexists|fileread|filereaderror|filewrite|float|floor|fmtwidth|Ftail|gammaden|gammap|gammaptail|get|hadamard|halfyear|halfyearly|hh|hhC|hms|hofd|hours|hypergeometric|hypergeometricp|I|ibeta|ibetatail|igaussian|igaussianden|igaussiantail|indexnot|inlist|inrange|int|inv|invbinomial|invbinomialtail|invcauchy|invcauchytail|invchi2|invchi2tail|invcloglog|invdunnettprob|invexponential|invexponentialtail|invF|invFtail|invgammap|invgammaptail|invibeta|invibetatail|invigaussian|invigaussiantail|invlaplace|invlaplacetail|invlogistic|invlogistictail|invlogit|invnbinomial|invnbinomialtail|invnchi2|invnchi2tail|invnF|invnFtail|invnibeta|invnormal|invnt|invnttail|invpoisson|invpoissontail|invsym|invt|invttail|invtukeyprob|invweibull|invweibullph|invweibullphtail|invweibulltail|irecode|issymmetric|itrim|J|laplace|laplaceden|laplacetail|length|ln|lncauchyden|lnfactorial|lngamma|lnigammaden|lnigaussianden|lniwishartden|lnlaplaceden|lnmvnormalden|lnnormal|lnnormalden|lnwishartden|log|log10|logistic|logisticden|logistictail|logit|lower|ltrim|matmissing|matrix|matuniform|max|maxbyte|maxdouble|maxfloat|maxint|maxlong|mdy|mdyhms|mi|min|minbyte|mindouble|minfloat|minint|minlong|minutes|missing|mm|mmC|mod|mofd|month|monthly|mreldif|msofhours|msofminutes|msofseconds|nbetaden|nbinomial|nbinomialp|nbinomialtail|nchi2|nchi2den|nchi2tail|nF|nFden|nFtail|nibeta|normal|normalden|npnchi2|npnF|npnt|nt|ntden|nttail|nullmat|plural|poisson|poissonp|poissontail|proper|qofd|quarter|quarterly|r|rbeta|rbinomial|rcauchy|rchi2|real|recode|regexs|reldif|replay|return|reverse|rexponential|rgamma|rhypergeometric|rigaussian|rlaplace|rlogistic|rnbinomial|rnormal|round|roweqnumb|rownfreeparms|rownumb|rowsof|rpoisson|rt|rtrim|runiform|runiformint|rweibull|rweibullph|s|scalar|seconds|sign|sin|sinh|smallestdouble|soundex|sqrt|ss|ssC|string|stritrim|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrpos|strrtrim|strtoname|strtrim|strupper|subinstr|subinword|substr|sum|sweep|t|tan|tanh|tc|tC|td|tden|th|tin|tm|tobytes|tq|trace|trigamma|trim|trunc|ttail|tukeyprob|tw|twithin|uchar|udstrlen|udsubstr|uisdigit|uisletter|upper|ustrcompare|ustrcompareex|ustrfix|ustrfrom|ustrinvalidcnt|ustrleft|ustrlen|ustrlower|ustrltrim|ustrnormalize|ustrpos|ustrregexs|ustrreverse|ustrright|ustrrpos|ustrrtrim|ustrsortkey|ustrsortkeyex|ustrtitle|ustrto|ustrtohex|ustrtoname|ustrtrim|ustrunescape|ustrupper|ustrword|ustrwordcount|usubinstr|usubstr|vec|vecdiag|week|weekly|weibull|weibullden|weibullph|weibullphden|weibullphtail|weibulltail|wofd|word|wordbreaklocale|wordcount|year|yearly|yh|ym|yofd|yq|yw)|([\\w&&[^0-9]]\\w{0,31}))(\\()",beginCaptures:{2:{name:"support.function.builtin.stata"},3:{name:"support.function.custom.stata"},4:{name:"punctuation.definition.parameters.begin.stata"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.stata"}},patterns:[{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{begin:"\\(",beginCaptures:{0:{name:"keyword.operator.parentheses.stata"}},end:"\\)",endCaptures:{0:{name:"keyword.operator.parentheses.stata"}},patterns:[{include:"#ascii-regex-functions"},{include:"#unicode-regex-functions"},{include:"#functions"},{include:"#subscripts"},{include:"#constants"},{include:"#comments"},{include:"#operators"},{include:"#macro-local"},{include:"#macro-global"},{include:"#string-compound"},{include:"#string-regular"},{include:"#builtin_variables"},{include:"#macro-commands"},{include:"#braces-without-error"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"}]},{include:"#ascii-regex-functions"},{include:"#unicode-regex-functions"},{include:"#functions"},{include:"#subscripts"},{include:"#constants"},{include:"#comments"},{include:"#operators"},{include:"#macro-local"},{include:"#macro-global"},{include:"#string-compound"},{include:"#string-regular"},{include:"#builtin_variables"},{include:"#macro-commands"},{include:"#braces-without-error"}]}]},"macro-commands":{patterns:[{begin:"\\b(loc(al|a)?)\\s+([\\w'`\\$\\(\\)\\{\\}]+)\\s*(?=:|=)",beginCaptures:{1:{name:"keyword.macro.stata"},3:{patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]}},end:"\\n",patterns:[{begin:"=",beginCaptures:{0:{name:"keyword.operator.arithmetic.stata"}},end:"(?=\\n)",patterns:[{include:"$self"}]},{begin:":",beginCaptures:{0:{name:"keyword.operator.arithmetic.stata"}},end:"(?=\\n)",patterns:[{include:"#macro-extended-functions"}]}]},{begin:"\\b(gl(obal|oba|ob|o)?)\\s+(?=[\\w`\\$])",beginCaptures:{1:{name:"keyword.macro.stata"}},end:'(\\})|(?=\\"|\\s|\\n|/|,|=)',patterns:[{include:"#reserved-names"},{match:"[\\w&&[^0-9_]]\\w{0,31}",name:"entity.name.type.class.stata"},{include:"#macro-local"},{include:"#macro-global"}]},{begin:"\\b(loc(al|a)?)\\s+(\\+\\+|\\-\\-)?(?=[\\w`\\$])",beginCaptures:{1:{name:"keyword.macro.stata"},3:{name:"keyword.operator.arithmetic.stata"}},end:'(?=\\"|\\s|\\n|/|,|=)',patterns:[{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},{begin:"\\b(tempvar|tempname|tempfile)\\s*(?=\\s)",beginCaptures:{1:{name:"keyword.macro.stata"}},end:"\\n",patterns:[{begin:"///",end:"\\n",name:"comment.block.stata"},{include:"#macro-local-identifiers"},{include:"#macro-local"},{include:"#macro-global"}]},{begin:"\\b(ma(cro|cr|c)?)\\s+(drop|l(ist|is|i)?)\\s*(?=\\s)",beginCaptures:{0:{name:"keyword.macro.stata"}},end:"\\n",patterns:[{begin:"///",end:"\\n",name:"comment.block.stata"},{match:"\\*",name:"keyword.operator.arithmetic.stata"},{include:"#constants"},{include:"#macro-global"},{include:"#macro-local"},{include:"#comments"},{match:"\\w{1,31}",name:"entity.name.type.class.stata"}]}]},"macro-extended-functions":{patterns:[{match:"\\b(properties)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(t(ype|yp|y)?|f(ormat|orma|orm|or|o)?|val(ue|u)?\\s+l(able|abl|ab|a)?|var(iable|iabl|iab|ia|i)?\\s+l(abel|abe|ab|a)?|data\\s+l(able|abl|ab|a)?|sort(edby|edb|ed|e)?|lab(el|e)?|maxlength|constraint|char)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(permname)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(adosubdir|dir|files?|dirs?|other|sysdir)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(env(ironment|ironmen|ironme|ironm|iron|iro|ir|i)?)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(all\\s+(globals|scalars|matrices)|((numeric|string)\\s+scalars))\\b",name:"keyword.macro.extendedfcn.stata"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"},2:{name:"keyword.macro.extendedfcn.stata"},3:{name:"entity.name.type.class.stata"}},match:"\\b(list)\\s+(uniq|dups|sort|clean|retok(enize|eniz|eni|en|e)?|sizeof)\\s+(\\w{1,32})"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"},2:{name:"entity.name.type.class.stata"},3:{name:"keyword.operator.list.stata"},4:{name:"entity.name.type.class.stata"}},match:"\\b(list)\\s+(\\w{1,32})\\s+(\\||&|\\-|===|==|in)\\s+(\\w{1,32})"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"},2:{name:"punctuation.definition.string.begin.stata"},3:{name:"string.quoted.double.stata"},4:{name:"punctuation.definition.string.end.stata"},5:{name:"keyword.macro.extendedfcn.stata"},6:{name:"entity.name.type.class.stata"}},match:'\\b(list\\s+posof)\\s+(")(\\w+)(")\\s+(in)\\s+(\\w{1,32})'},{match:"\\b(rown(ames|ame|am|a)?|coln(ames|ame|am|a)?|rowf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|colf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|roweq?|coleq?|rownumb|colnumb|roweqnumb|coleqnumb|rownfreeparms|colnfreeparms|rownlfs|colnlfs|rowsof|colsof|rowvarlist|colvarlist|rowlfnames|collfnames)\\b",name:"keyword.macro.extendedfcn.stata"},{match:"\\b(tsnorm)\\b",name:"keyword.macro.extendedfcn.stata"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"},7:{patterns:[{include:"#macro-local"},{include:"#macro-global"}]}},match:"\\b((copy|(ud|u)?strlen)\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\s+([^']+)"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"}},match:"\\b(word\\s+count)"},{captures:{1:{name:"keyword.macro.extendedfcn.stata"},2:{patterns:[{include:"#macro-local"},{include:"#constants"}]},3:{name:"keyword.macro.extendedfcn.stata"}},match:"(word|piece)\\s+([\\s`'\\w]+)\\s+(of)"},{begin:"\\b(subinstr\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\s+(\\w{1,32})",beginCaptures:{1:{name:"keyword.macro.extendedfcn.stata"},5:{name:"entity.name.type.class.stata"}},end:"(?=//|\\n)",patterns:[{include:"#macro-local"},{include:"#macro-global"},{include:"#string-compound"},{include:"#string-regular"},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{name:"keyword.macro.extendedfcn.stata"},4:{name:"entity.name.type.class.stata"},5:{name:"punctuation.definition.parameters.end.stata"}},match:"(count|coun|cou|co|c)(\\()(local|loca|loc|global|globa|glob|glo|gl)\\s+(\\w{1,32})(\\))"}]},{include:"#comments"},{include:"#macro-local"},{include:"#macro-global"},{include:"$self"}]},"macro-global":{patterns:[{begin:"(\\$)(\\{)",beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-global"},{include:"#comments-block"},{begin:"[^\\w]",end:"\\n|(?=})",name:"comment.line.stata"},{match:"\\w{1,32}",name:"entity.name.type.class.stata"}]},{begin:"\\$",beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:"(?!\\w)",endCaptures:{1:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-global"},{match:"[\\w&&[^0-9_]]\\w{0,31}|_\\w{1,31}",name:"entity.name.type.class.stata"}]}]},"macro-global-escaped":{patterns:[{begin:"(\\\\\\$)(\\\\\\{)?",beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:'(\\\\\\})|(?=\\"|\\s|\\n|/|,)',endCaptures:{1:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-global"},{match:"[\\w&&[^0-9_]]\\w{0,31}|_\\w{1,31}",name:"entity.name.type.class.stata"}]}]},"macro-local":{patterns:[{begin:"(`)(=)",beginCaptures:{1:{name:"punctuation.definition.string.begin.stata"},2:{name:"keyword.operator.comparison.stata"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"$self"}]},{begin:"(`)(:)",beginCaptures:{1:{name:"punctuation.definition.string.begin.stata"},2:{name:"keyword.operator.comparison.stata"}},contentName:"meta.macro-extended-function.stata",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-extended-functions"},{include:"#constants"},{include:"#string-compound"},{include:"#string-regular"}]},{begin:"(`)(macval)(\\()",beginCaptures:{1:{name:"punctuation.definition.string.begin.stata"},2:{name:"support.function.builtin.stata"},3:{name:"punctuation.definition.parameters.begin.stata"}},contentName:"meta.macro-extended-function.stata",end:"(\\))(')",endCaptures:{1:{name:"punctuation.definition.parameters.begin.stata"},2:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-global"},{match:"\\w{1,31}",name:"entity.name.type.class.stata"}]},{begin:'`(?!")',beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},patterns:[{match:"\\+\\+|\\-\\-",name:"keyword.operator.arithmetic.stata"},{include:"#macro-local"},{include:"#macro-global"},{include:"#comments-block"},{begin:"[^\\w]",end:"\\n|(?=')",name:"comment.line.stata"},{match:"\\w{1,31}",name:"entity.name.type.class.stata"}]}]},"macro-local-escaped":{patterns:[{begin:'\\\\`(?!")',beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},comment:"appropriately color macros that have embedded escaped `,', and $ characters for lazy evaluation",end:"\\\\'|'",endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},patterns:[{include:"#macro-local"},{include:"#macro-global"},{match:"\\w{1,31}",name:"entity.name.type.class.stata"}]}]},"macro-local-identifiers":{patterns:[{match:"[^\\w'`\\$\\(\\)\\s]",name:"invalid.illegal.name.stata"},{match:"\\w{32,}",name:"invalid.illegal.name.stata"},{match:"\\w{1,31}",name:"entity.name.type.class.stata"}]},operators:{patterns:[{comment:"++ and -- must come first to support ligatures",match:"\\+\\+|\\-\\-|\\+|\\-|\\*|\\^",name:"keyword.operator.arithmetic.stata"},{comment:"match division operator but not path separator",match:"(?<![\\w.&&[^0-9]])/(?![\\w.&&[^0-9]]|$)",name:"keyword.operator.arithmetic.stata"},{comment:"match division operator but not path separator",match:"(?<![\\w.&&[^0-9]])\\\\(?![\\w.&&[^0-9]]|$)",name:"keyword.operator.matrix.addrow.stata"},{match:"\\|\\|",name:"keyword.operator.graphcombine.stata"},{match:"\\&|\\|",name:"keyword.operator.logical.stata"},{match:"(?:<=|>=|:=|==|!=|~=|<|>|=|!!|!)",name:"keyword.operator.comparison.stata"},{match:"\\(|\\)",name:"keyword.operator.parentheses.stata"},{match:"(##|#)",name:"keyword.operator.factor-variables.stata"},{match:"%",name:"keyword.operator.format.stata"},{match:":",name:"punctuation.separator.key-value"},{match:"\\[",name:"punctuation.definition.parameters.begin.stata"},{match:"\\]",name:"punctuation.definition.parameters.end.stata"},{match:",",name:"punctuation.definition.variable.begin.stata"},{match:";",name:"keyword.operator.delimiter.stata"}]},"reserved-names":{patterns:[{match:"\\b(_all|_b|byte|_coef|_cons|double|float|if|in|int|long|_n|_N|_pi|_pred|_rc|_skip|str[0-9]+|strL|using|with)\\b",name:"invalid.illegal.name.stata"},{match:"[^\\w'`\\$\\(\\)\\s]",name:"invalid.illegal.name.stata"},{match:"[0-9][\\w]{31,}",name:"invalid.illegal.name.stata"},{match:"\\w{33,}",name:"invalid.illegal.name.stata"}]},"string-compound":{patterns:[{begin:'`"',beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:`"'|(?= +)`,endCaptures:{0:{name:"punctuation.definition.string.end.stata"}},name:"string.quoted.double.compound.stata",patterns:[{comment:'This must come before #string-regular and #string-compound to accurately color `"""\' in strings',match:'"',name:"string.quoted.double.compound.stata"},{comment:"see https://github.com/kylebarron/language-stata/issues/53",match:"```(?=[^']*\")",name:"meta.markdown.code.block.stata"},{include:"#string-regular"},{include:"#string-compound"},{include:"#macro-local-escaped"},{include:"#macro-global-escaped"},{include:"#macro-local"},{include:"#macro-global"}]}]},"string-regular":{patterns:[{begin:'(?<!`)"',beginCaptures:{0:{name:"punctuation.definition.string.begin.stata"}},end:`(")(')?|(?= +)`,endCaptures:{1:{name:"punctuation.definition.string.end.stata"},2:{name:"invalid.illegal.punctuation.stata"}},name:"string.quoted.double.stata",patterns:[{comment:"see https://github.com/kylebarron/language-stata/issues/53",match:"```(?=[^']*\")",name:"meta.markdown.code.block.stata"},{include:"#macro-local-escaped"},{include:"#macro-global-escaped"},{include:"#macro-local"},{include:"#macro-global"}]}]},subscripts:{patterns:[{begin:"(?<=[\\w'])(\\[)",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.stata"}},comment:"highlight expressions, like [_n], when using subscripts on a variable",end:"(\\])",endCaptures:{1:{name:"punctuation.definition.parameters.end.stata"}},name:"meta.subscripts.stata",patterns:[{include:"#macro-local"},{include:"#macro-global"},{include:"#builtin_variables"},{include:"#operators"},{include:"#constants"},{include:"#functions"}]}]},"unicode-regex-character-class":{patterns:[{match:"\\\\[wWsSdD]|\\.",name:"constant.character.character-class.stata"},{match:"\\\\.",name:"constant.character.escape.backslash.stata"},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.stata"},2:{name:"keyword.operator.negation.stata"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.stata"}},name:"constant.other.character-class.set.stata",patterns:[{include:"#unicode-regex-character-class"},{captures:{2:{name:"constant.character.escape.backslash.stata"},4:{name:"constant.character.escape.backslash.stata"}},match:"((\\\\.)|.)\\-((\\\\.)|[^\\]])",name:"constant.other.character-class.range.stata"}]}]},"unicode-regex-functions":{patterns:[{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#unicode-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{name:"invalid.illegal.punctuation.stata"},9:{patterns:[{include:"#constants"},{match:",",name:"punctuation.definition.variable.begin.stata"}]},10:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexm with regular quotes i.e. " ',match:`\\b(ustrregexm)(\\()([^,]+)(,)\\s*(")([^"]+)("(')?)([,0-9\\s]*)?\\s*(\\))`},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#unicode-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{patterns:[{include:"#constants"},{match:",",name:"punctuation.definition.variable.begin.stata"}]},9:{name:"punctuation.definition.parameters.end.stata"}},comment:"color regexm with compound quotes",match:'\\b(ustrregexm)(\\()([^,]+)(,)\\s*(`")([^"]+)("\')([,0-9\\s]*)?\\s*(\\))'},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#unicode-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{name:"invalid.illegal.punctuation.stata"},9:{patterns:[{match:",",name:"punctuation.definition.variable.begin.stata"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"},{include:"#constants"}]},10:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexr with regular quotes i.e. " ',match:`\\b(ustrregexrf|ustrregexra)(\\()([^,]+)(,)\\s*(")([^"]+)("(')?)\\s*([^\\)]*)(\\))`},{captures:{1:{name:"support.function.builtin.stata"},2:{name:"punctuation.definition.parameters.begin.stata"},3:{patterns:[{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments"}]},4:{name:"punctuation.definition.variable.begin.stata"},5:{name:"punctuation.definition.string.begin.stata"},6:{patterns:[{include:"#unicode-regex-internals"}]},7:{name:"punctuation.definition.string.end.stata"},8:{patterns:[{match:",",name:"punctuation.definition.variable.begin.stata"},{include:"#string-compound"},{include:"#string-regular"},{include:"#macro-local"},{include:"#macro-global"},{include:"#functions"},{match:"[\\w&&[^0-9]]\\w{0,31}",name:"variable.parameter.function.stata"},{include:"#comments-triple-slash"},{include:"#constants"}]},9:{name:"punctuation.definition.parameters.end.stata"}},comment:'color regexr with compound quotes i.e. `"text"\' ',match:'\\b(ustrregexrf|ustrregexra)(\\()([^,]+)(,)\\s*(`")([^"]+)("\')\\s*([^\\)]*)(\\))'}]},"unicode-regex-internals":{patterns:[{match:"\\\\[bBAZzG]|\\^",name:"keyword.control.anchor.stata"},{comment:"matched when not a global",match:"\\$(?![[\\w&&[^0-9_]][\\w]{0,31}|_[\\w]{1,31}\\{])",name:"keyword.control.anchor.stata"},{match:"\\\\[1-9][0-9]?",name:"keyword.other.back-reference.stata"},{match:"[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.stata"},{match:"\\|",name:"keyword.operator.or.stata"},{begin:"\\((?!\\?\\#|\\?=|\\?!|\\?<=|\\?<!)",end:"\\)",name:"keyword.operator.group.stata",patterns:[{include:"#unicode-regex-internals"}]},{begin:"\\(\\?\\#",end:"\\)",name:"comment.block.stata"},{comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",match:"(?<=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$",name:"comment.line.number-sign.stata"},{match:"\\(\\?[iLmsux]+\\)",name:"keyword.other.option-toggle.stata"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",beginCaptures:{1:{name:"keyword.operator.group.stata"},2:{name:"punctuation.definition.group.assertion.stata"},3:{name:"keyword.assertion.look-ahead.stata"},4:{name:"keyword.assertion.negative-look-ahead.stata"},5:{name:"keyword.assertion.look-behind.stata"},6:{name:"keyword.assertion.negative-look-behind.stata"}},end:"(\\))",endCaptures:{1:{name:"keyword.operator.group.stata"}},name:"meta.group.assertion.stata",patterns:[{include:"#unicode-regex-internals"}]},{begin:"(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",beginCaptures:{1:{name:"punctuation.definition.group.stata"},2:{name:"punctuation.definition.group.assertion.conditional.stata"},3:{name:"entity.name.section.back-reference.stata"}},comment:"we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.",end:"(\\))",name:"meta.group.assertion.conditional.stata",patterns:[{include:"#unicode-regex-internals"}]},{include:"#unicode-regex-character-class"},{include:"#macro-local"},{include:"#macro-global"},{comment:"NOTE: Error if I have .+ No idea why but it works fine it seems with just .",match:".",name:"string.quoted.stata"}]}},scopeName:"source.stata",embeddedLangs:["sql"]});var n=[...t,e];export{n as default}; diff --git a/assets/chunks/stylus.DSrLtGYv.js b/assets/chunks/stylus.DSrLtGYv.js new file mode 100644 index 000000000..caa1a3e0b --- /dev/null +++ b/assets/chunks/stylus.DSrLtGYv.js @@ -0,0 +1,15 @@ +const e=Object.freeze({displayName:"Stylus",fileTypes:["styl","stylus","css.styl","css.stylus"],name:"stylus",patterns:[{include:"#comment"},{include:"#at_rule"},{include:"#language_keywords"},{include:"#language_constants"},{include:"#variable_declaration"},{include:"#function"},{include:"#selector"},{include:"#declaration"},{captures:{1:{name:"punctuation.section.property-list.begin.css"},2:{name:"punctuation.section.property-list.end.css"}},match:"(\\{)(\\})",name:"meta.brace.curly.css"},{match:"\\{|\\}",name:"meta.brace.curly.css"},{include:"#numeric"},{include:"#string"},{include:"#operator"}],repository:{at_rule:{patterns:[{begin:"\\s*((@)(import|require))\\b\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.import.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.import.css",patterns:[{include:"#string"}]},{begin:"\\s*((@)(extend[s]?)\\b)\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.extend.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.extend.css",patterns:[{include:"#selector"}]},{captures:{1:{name:"keyword.control.at-rule.fontface.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)font-face)\\b",name:"meta.at-rule.fontface.stylus"},{captures:{1:{name:"keyword.control.at-rule.css.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)css)\\b",name:"meta.at-rule.css.stylus"},{begin:"\\s*((@)charset)\\b\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.charset.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",name:"meta.at-rule.charset.stylus",patterns:[{include:"#string"}]},{begin:"\\s*((@)keyframes)\\b\\s+([a-zA-Z_-][a-zA-Z0-9_-]*)",beginCaptures:{1:{name:"keyword.control.at-rule.keyframes.stylus"},2:{name:"punctuation.definition.keyword.stylus"},3:{name:"entity.name.function.keyframe.stylus"}},end:"\\s*((?=\\{|$|\\n))",name:"meta.at-rule.keyframes.stylus"},{begin:"(?=(\\b(\\d+%|from\\b|to\\b)))",end:"(?=(\\{|\\n))",name:"meta.at-rule.keyframes.stylus",patterns:[{match:"(\\b(\\d+%|from\\b|to\\b))",name:"entity.other.attribute-name.stylus"}]},{captures:{1:{name:"keyword.control.at-rule.media.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)media)\\b",name:"meta.at-rule.media.stylus"},{match:"(?:(?=\\w)(?<![\\w-]))(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?:(?<=\\w)(?![\\w-]))",name:"support.type.property-name.media-feature.media.css"},{match:"(?:(?=\\w)(?<![\\w-]))(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.media-type.media.css"},{match:"(?:(?=\\w)(?<![\\w-]))(portrait|landscape)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.media-property.media.css"}]},char_escape:{match:"\\\\(.)",name:"constant.character.escape.stylus"},color:{patterns:[{begin:"\\b(rgb|rgba|hsl|hsla)(\\()",beginCaptures:{1:{name:"support.function.color.css"},2:{name:"punctuation.section.function.css"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.css"}},name:"meta.function.color.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#property_variable"}]},{captures:{1:{name:"punctuation.definition.constant.css"}},match:"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b",name:"constant.other.color.rgb-value.css"},{comment:"http://www.w3.org/TR/CSS21/syndata.html#value-def-color",match:"\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",name:"support.constant.color.w3c-standard-color-name.css"},{comment:"http://www.w3.org/TR/css3-color/#svg-color",match:"\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",name:"support.constant.color.w3c-extended-color-name.css"}]},comment:{patterns:[{include:"#comment_block"},{include:"#comment_line"}]},comment_block:{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.css"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.css"}},name:"comment.block.css"},comment_line:{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.stylus"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.stylus"}},end:"(?=\\n)",name:"comment.line.double-slash.stylus"}]},declaration:{begin:"((?<=^)[^\\S\\n]+)|((?<=;)[^\\S\\n]*)|((?<=\\{)[^\\S\\n]*)",end:"(?=\\n)|(;)|(?=\\})|(\\n)",endCaptures:{2:{name:"punctuation.terminator.rule.css"}},name:"meta.property-list.css",patterns:[{match:`(?x) (?<![\\w-]) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] +|\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.css"},{include:"#language_keywords"},{include:"#language_constants"},{match:"(?:(?<=^)[^\\S\\n]+(\\n))"},{captures:{1:{name:"support.type.property-name.css"},2:{name:"punctuation.separator.key-value.css"},3:{name:"variable.section.css"}},match:"\\G\\s*(counter-reset|counter-increment)(?:(:)|[^\\S\\n])[^\\S\\n]*([a-zA-Z_-][a-zA-Z0-9_-]*)",name:"meta.property.counter.css"},{begin:"\\G\\s*(filter)(?:(:)|[^\\S\\n])[^\\S\\n]*",beginCaptures:{1:{name:"support.type.property-name.css"},2:{name:"punctuation.separator.key-value.css"}},end:"(?=\\n|;|\\}|$)",name:"meta.property.filter.css",patterns:[{include:"#function"},{include:"#property_values"}]},{include:"#property"},{include:"#interpolation"},{include:"$self"}]},font_name:{match:"(\\b(?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif)\\b)",name:"support.constant.font-name.css"},function:{begin:"(?=[a-zA-Z_-][a-zA-Z0-9_-]*\\()",end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.css"}},patterns:[{begin:"(format|url|local)(\\()",beginCaptures:{1:{name:"support.function.misc.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.css",patterns:[{match:"(?<=\\()[^\\)\\s]*(?=\\))",name:"string.css"},{include:"#string"},{include:"#variable"},{include:"#operator"},{match:"\\s*"}]},{captures:{1:{name:"support.function.misc.counter.css"},2:{name:"punctuation.section.function.css"},3:{name:"variable.section.css"}},match:"(counter)(\\()([a-zA-Z_-][a-zA-Z0-9_-]*)(?=\\))",name:"meta.function.misc.counter.css"},{begin:"(counters)(\\()",beginCaptures:{1:{name:"support.function.misc.counters.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.counters.css",patterns:[{match:"\\G[a-zA-Z_-][a-zA-Z0-9_-]*",name:"variable.section.css"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#string"},{include:"#interpolation"}]},{begin:"(attr)(\\()",beginCaptures:{1:{name:"support.function.misc.attr.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.attr.css",patterns:[{match:"\\G[a-zA-Z_-][a-zA-Z0-9_-]*",name:"entity.other.attribute-name.attribute.css"},{match:"(?<=[a-zA-Z0-9_-])\\s*\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\b",name:"support.type.attr.css"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#string"},{include:"#interpolation"}]},{begin:"(calc)(\\()",beginCaptures:{1:{name:"support.function.misc.calc.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.calc.css",patterns:[{include:"#property_values"}]},{begin:"(cubic-bezier)(\\()",beginCaptures:{1:{name:"support.function.timing.cubic-bezier.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.timing.cubic-bezier.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#interpolation"}]},{begin:"(steps)(\\()",beginCaptures:{1:{name:"support.function.timing.steps.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.timing.steps.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{match:"\\b(start|end)\\b",name:"support.constant.timing.steps.direction.css"},{include:"#interpolation"}]},{begin:"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(\\()",beginCaptures:{1:{name:"support.function.gradient.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.gradient.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#color"},{match:"\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\b",name:"support.constant.gradient.css"},{include:"#interpolation"}]},{begin:"(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\()",beginCaptures:{1:{name:"support.function.filter.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.filter.css",patterns:[{include:"#numeric"},{include:"#property_variable"},{include:"#interpolation"}]},{begin:"(drop-shadow)(\\()",beginCaptures:{1:{name:"support.function.filter.drop-shadow.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.filter.drop-shadow.css",patterns:[{include:"#numeric"},{include:"#color"},{include:"#property_variable"},{include:"#interpolation"}]},{begin:"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(\\()",beginCaptures:{1:{name:"support.function.transform.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.transform.css",patterns:[{include:"#numeric"},{include:"#property_variable"},{include:"#interpolation"}]},{match:"(url|local|format|counter|counters|attr|calc)(?=\\()",name:"support.function.misc.css"},{match:"(cubic-bezier|steps)(?=\\()",name:"support.function.timing.css"},{match:"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(?=\\()",name:"support.function.gradient.css"},{match:"(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\()",name:"support.function.filter.css"},{match:"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(?=\\()",name:"support.function.transform.css"},{begin:"([a-zA-Z_-][a-zA-Z0-9_-]*)(\\()",beginCaptures:{1:{name:"entity.name.function.stylus"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.stylus",patterns:[{match:`(?x) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] +|\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.argument.stylus"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#interpolation"},{include:"#property_values"}]},{match:"\\(",name:"punctuation.section.function.css"}]},interpolation:{begin:"(?:(\\{)[^\\S\\n]*)(?=[^;=]*[^\\S\\n]*\\})",beginCaptures:{1:{name:"meta.brace.curly"}},end:"(?:[^\\S\\n]*(\\}))|\\n|$",endCaptures:{1:{name:"meta.brace.curly"}},name:"meta.interpolation.stylus",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#string"},{include:"#operator"}]},language_constants:{match:"\\b(true|false|null)\\b",name:"constant.language.stylus"},language_keywords:{patterns:[{match:"(\\b|\\s)(return|else|for|unless|if|else)\\b",name:"keyword.control.stylus"},{match:"(\\b|\\s)(!important|in|is defined|is a)\\b",name:"keyword.other.stylus"},{match:"\\barguments\\b",name:"variable.language.stylus"}]},numeric:{patterns:[{captures:{1:{name:"keyword.other.unit.css"}},match:"(?x) (?<!\\w|-)(?:(?:-|\\+)?(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+)) ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\b|%)?",name:"constant.numeric.css"}]},operator:{patterns:[{match:"((?:\\?|:|!|~|\\+|(\\s-\\s)|(?:\\*)?\\*|\\/|%|(\\.)?\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=)|\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\b)",name:"keyword.operator.stylus"},{include:"#char_escape"}]},property:{begin:`(?x:\\G\\s*(?: +(-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)| +(writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)| +([a-zA-Z_-][a-zA-Z0-9_-]*) +)(?!([^\\S\\n]*&)|([^\\S\\n]*\\{))(?=:|([^\\S\\n]+[^\\s])))`,beginCaptures:{1:{name:"support.type.property-name.css"},2:{name:"support.type.property-name.svg.css"},3:{name:"support.function.mixin.stylus"}},end:"(;)|(?=\\n|\\}|$)",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"#property_value"}]},property_value:{begin:"\\G(?:(:)|(\\s))(\\s*)(?!&)",beginCaptures:{1:{name:"punctuation.separator.key-value.css"},2:{name:"punctuation.separator.key-value.css"}},end:"(?=\\n|;|\\})",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.property-value.css",patterns:[{include:"#property_values"},{match:"[^\\n]+?"}]},property_values:{patterns:[{include:"#function"},{include:"#comment"},{include:"#language_keywords"},{include:"#language_constants"},{match:"(?:(?=\\w)(?<![\\w-]))(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.css"},{match:"(?:(?=\\w)(?<![\\w-]))(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.svg.css"},{include:"#font_name"},{include:"#numeric"},{include:"#color"},{include:"#string"},{match:"\\!\\s*important",name:"keyword.other.important.css"},{include:"#operator"},{include:"#stylus_keywords"},{include:"#property_variable"}]},property_variable:{patterns:[{include:"#variable"},{match:"(?<!^)(\\@[a-zA-Z_-][a-zA-Z0-9_-]*)",name:"variable.property.stylus"}]},selector:{patterns:[{match:"(?:(?=\\w)(?<![\\w-]))(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rt|rtc|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)(?:(?<=\\w)(?![\\w-]))",name:"entity.name.tag.css"},{match:"(?:(?=\\w)(?<![\\w-]))(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?:(?<=\\w)(?![\\w-]))",name:"entity.name.tag.svg.css"},{match:"\\s*(\\,)\\s*",name:"meta.selector.stylus"},{match:"\\*",name:"meta.selector.stylus"},{captures:{2:{name:"entity.other.attribute-name.parent-selector-suffix.stylus"}},match:"\\s*(\\&)([a-zA-Z0-9_-]+)\\s*",name:"meta.selector.stylus"},{match:"\\s*(\\&)\\s*",name:"meta.selector.stylus"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(\\.)[a-zA-Z0-9_-]+",name:"entity.other.attribute-name.class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(#)[a-zA-Z][a-zA-Z0-9_-]*",name:"entity.other.attribute-name.id.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\b",name:"entity.other.attribute-name.pseudo-element.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\b",name:"entity.other.attribute-name.pseudo-class.ui-state.css"},{begin:"((:)not)(\\()",beginCaptures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.section.function.css"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.function.css"}},patterns:[{include:"#selector"}]},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.numeric.css"},5:{name:"punctuation.section.function.css"}},match:"((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\()(\\-?(?:\\d+n?|n)(?:\\+\\d+)?|even|odd)(\\))"},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"puncutation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.language.css"},5:{name:"punctuation.section.function.css"}},match:"((:)dir)\\s*(?:(\\()(ltr|rtl)?(\\)))?"},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"puncutation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.language.css"},6:{name:"punctuation.section.function.css"}},match:"((:)lang)\\s*(?:(\\()(\\w+(-\\w+)?)?(\\)))?"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)(active|hover|link|visited|focus)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(::)(shadow)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"},2:{name:"entity.other.attribute-name.attribute.css"},3:{name:"punctuation.separator.operator.css"},4:{name:"string.unquoted.attribute-value.css"},5:{name:"string.quoted.double.attribute-value.css"},6:{name:"punctuation.definition.string.begin.css"},7:{name:"punctuation.definition.string.end.css"},8:{name:"punctuation.definition.entity.css"}},match:`(?i)(\\[)\\s*(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)(?:\\s*([~|^$*]?=)\\s*(?:(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)|((?>(['"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(\\])`,name:"meta.attribute-selector.css"},{include:"#interpolation"},{include:"#variable"}]},string:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.css"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.css"}},name:"string.quoted.double.css",patterns:[{match:"\\\\([a-fA-F0-9]{1,6}|.)",name:"constant.character.escape.css"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.css"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.css"}},name:"string.quoted.single.css",patterns:[{match:"\\\\([a-fA-F0-9]{1,6}|.)",name:"constant.character.escape.css"}]}]},variable:{match:"(\\$[a-zA-Z_-][a-zA-Z0-9_-]*)",name:"variable.stylus"},variable_declaration:{begin:"^[^\\S\\n]*(\\$?[a-zA-Z_-][a-zA-Z0-9_-]*)[^\\S\\n]*(\\=|\\?\\=|\\:\\=)",beginCaptures:{1:{name:"variable.stylus"},2:{name:"keyword.operator.stylus"}},end:"(\\n)|(;)|(?=\\})",endCaptures:{2:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"#property_values"}]}},scopeName:"source.stylus",aliases:["styl"]});var t=[e];export{t as default}; diff --git a/assets/chunks/svelte.CpQM5Shq.js b/assets/chunks/svelte.CpQM5Shq.js new file mode 100644 index 000000000..aab95fe4f --- /dev/null +++ b/assets/chunks/svelte.CpQM5Shq.js @@ -0,0 +1 @@ +import e from"./javascript.Dch3xQiY.js";import t from"./typescript.DC8MraHL.js";import n from"./coffee.t_LrLW_f.js";import s from"./stylus.DSrLtGYv.js";import a from"./sass.CMDmr8et.js";import i from"./css.CbYhyuC0.js";import r from"./scss.Dr-_CcBd.js";import c from"./less.Du6_OKDb.js";import l from"./postcss.DXT9h7v2.js";import m from"./pug.BWq4yR4F.js";import o from"./markdown.BdfWgkoX.js";import"./html.CuK0VrWf.js";const d=Object.freeze({displayName:"Svelte",fileTypes:["svelte"],injections:{"L:(meta.script.svelte | meta.style.svelte) (meta.lang.js | meta.lang.javascript) - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.js",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.js"}]}]},"L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.ts",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.ts"}]}]},"L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.coffee",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.coffee"}]}]},"L:(source.ts, source.js, source.coffee)":{patterns:[{match:`(?<![_$./'"[:alnum:]])\\$(?=[_[:alpha:]][_$[:alnum:]]*)`,name:"punctuation.definition.variable.svelte"},{match:`(?<![_$./'"[:alnum:]])(\\$\\$)(?=props|restProps|slots)`,name:"punctuation.definition.variable.svelte"}]},"L:meta.script.svelte - meta.lang - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.js",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.js"}]}]},"L:meta.style.svelte - meta.lang - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.css",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.css"}]}]},"L:meta.style.svelte meta.lang.css - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.css",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.css"}]}]},"L:meta.style.svelte meta.lang.less - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.css.less",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.css.less"}]}]},"L:meta.style.svelte meta.lang.postcss - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.css.postcss",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.css.postcss"}]}]},"L:meta.style.svelte meta.lang.sass - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.sass",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.sass"}]}]},"L:meta.style.svelte meta.lang.scss - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.css.scss",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.css.scss"}]}]},"L:meta.style.svelte meta.lang.stylus - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"source.stylus",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"source.stylus"}]}]},"L:meta.template.svelte - meta.lang - (meta source)":{patterns:[{begin:"(?<=>)\\s",end:"(?=</template)",patterns:[{include:"#scope"}]}]},"L:meta.template.svelte meta.lang.pug - (meta source)":{patterns:[{begin:"(?<=>)(?!</)",contentName:"text.pug",end:"(?=</)",name:"meta.embedded.block.svelte",patterns:[{include:"text.pug"}]}]}},name:"svelte",patterns:[{include:"#scope"}],repository:{attributes:{patterns:[{include:"#attributes-directives"},{include:"#attributes-keyvalue"},{include:"#attributes-interpolated"}]},"attributes-directives":{begin:"(?<!<)(on|use|bind|transition|in|out|animate|let|class|style)(:)(?:((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*(?=\\s*=))|((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*))((\\|\\w+)*)",beginCaptures:{1:{patterns:[{include:"#attributes-directives-keywords"}]},2:{name:"punctuation.definition.keyword.svelte"},3:{patterns:[{include:"#attributes-directives-types-assigned"}]},4:{patterns:[{include:"#attributes-directives-types"}]},5:{patterns:[{match:"\\w+",name:"support.function.svelte"},{match:"\\|",name:"punctuation.separator.svelte"}]}},end:"(?=\\s*+[^=\\s])",name:"meta.directive.$1.svelte",patterns:[{begin:"=",beginCaptures:{0:{name:"punctuation.separator.key-value.svelte"}},end:"(?<=[^\\s=])(?!\\s*=)|(?=/?>)",patterns:[{include:"#attributes-value"}]}]},"attributes-directives-keywords":{patterns:[{match:"on|use|bind",name:"keyword.control.svelte"},{match:"transition|in|out|animate",name:"keyword.other.animation.svelte"},{match:"let",name:"storage.type.svelte"},{match:"class|style",name:"entity.other.attribute-name.svelte"}]},"attributes-directives-types":{patterns:[{match:"(?<=(on):).*$",name:"entity.name.type.svelte"},{match:"(?<=(bind):).*$",name:"variable.parameter.svelte"},{match:"(?<=(use|transition|in|out|animate):).*$",name:"variable.function.svelte"},{match:"(?<=(let|class|style):).*$",name:"variable.parameter.svelte"}]},"attributes-directives-types-assigned":{patterns:[{match:"(?<=(bind):)this$",name:"variable.language.svelte"},{match:"(?<=(bind):).*$",name:"entity.name.type.svelte"},{match:"(?<=(class):).*$",name:"entity.other.attribute-name.class.svelte"},{match:"(?<=(style):).*$",name:"support.type.property-name.svelte"},{include:"#attributes-directives-types"}]},"attributes-generics":{begin:`(generics)(=)(["'])`,beginCaptures:{1:{name:"entity.other.attribute-name.svelte"},2:{name:"punctuation.separator.key-value.svelte"},3:{name:"punctuation.definition.string.begin.svelte"}},contentName:"meta.embedded.expression.svelte source.ts",end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.svelte"}},patterns:[{include:"#type-parameters"}]},"attributes-interpolated":{begin:"(?<!:|=)\\s*({)",captures:{1:{name:"entity.other.attribute-name.svelte"}},contentName:"meta.embedded.expression.svelte source.ts",end:"(\\})",patterns:[{include:"source.ts"}]},"attributes-keyvalue":{begin:"((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*)",beginCaptures:{0:{patterns:[{match:"--.*",name:"support.type.property-name.svelte"},{match:".*",name:"entity.other.attribute-name.svelte"}]}},end:"(?=\\s*+[^=\\s])",name:"meta.attribute.$1.svelte",patterns:[{begin:"=",beginCaptures:{0:{name:"punctuation.separator.key-value.svelte"}},end:"(?<=[^\\s=])(?!\\s*=)|(?=/?>)",patterns:[{include:"#attributes-value"}]}]},"attributes-value":{patterns:[{include:"#interpolation"},{captures:{1:{name:"punctuation.definition.string.begin.svelte"},2:{name:"constant.numeric.decimal.svelte"},3:{name:"punctuation.definition.string.end.svelte"},4:{name:"constant.numeric.decimal.svelte"}},match:`(?:(['"])([0-9._]+[\\w%]{,4})(\\1))|(?:([0-9._]+[\\w%]{,4})(?=\\s|/?>))`},{match:"([^\\s\"'=<>`/]|/(?!>))+",name:"string.unquoted.svelte",patterns:[{include:"#interpolation"}]},{begin:`(['"])`,beginCaptures:{0:{name:"punctuation.definition.string.begin.svelte"}},end:"\\1",endCaptures:{0:{name:"punctuation.definition.string.end.svelte"}},name:"string.quoted.svelte",patterns:[{include:"#interpolation"}]}]},comments:{begin:"<!--",captures:{0:{name:"punctuation.definition.comment.svelte"}},end:"-->",name:"comment.block.svelte",patterns:[{begin:"(@)(component)",beginCaptures:{1:{name:"punctuation.definition.keyword.svelte"},2:{name:"storage.type.class.component.svelte keyword.declaration.class.component.svelte"}},contentName:"comment.block.documentation.svelte",end:"(?=-->)",patterns:[{captures:{0:{patterns:[{include:"text.html.markdown"}]}},match:".*?(?=-->)"},{include:"text.html.markdown"}]},{match:"\\G-?>|<!--(?!>)|<!-(?=-->)|--!>",name:"invalid.illegal.characters-not-allowed-here.svelte"}]},destructuring:{patterns:[{begin:"(?={)",end:"(?<=})",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts#object-binding-pattern"}]},{begin:"(?=\\[)",end:"(?<=\\])",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts#array-binding-pattern"}]}]},"destructuring-const":{patterns:[{begin:"(?={)",end:"(?<=})",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts#object-binding-pattern-const"}]},{begin:"(?=\\[)",end:"(?<=\\])",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts#array-binding-pattern-const"}]}]},interpolation:{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.svelte"}},contentName:"meta.embedded.expression.svelte source.ts",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.svelte"}},patterns:[{begin:"\\G\\s*(?={)",end:"(?<=})",patterns:[{include:"source.ts#object-literal"}]},{include:"source.ts"}]}]},scope:{patterns:[{include:"#comments"},{include:"#special-tags"},{include:"#tags"},{include:"#interpolation"},{begin:"(?<=>|})",end:"(?=<|{)",name:"text.svelte"}]},"special-tags":{patterns:[{include:"#special-tags-void"},{include:"#special-tags-block-begin"},{include:"#special-tags-block-end"}]},"special-tags-block-begin":{begin:"({)\\s*(#([a-z]*))",beginCaptures:{1:{name:"punctuation.definition.block.begin.svelte"},2:{patterns:[{include:"#special-tags-keywords"}]}},end:"(})",endCaptures:{0:{name:"punctuation.definition.block.end.svelte"}},name:"meta.special.$3.svelte meta.special.start.svelte",patterns:[{include:"#special-tags-modes"}]},"special-tags-block-end":{begin:"({)\\s*(/([a-z]*))",beginCaptures:{1:{name:"punctuation.definition.block.begin.svelte"},2:{patterns:[{include:"#special-tags-keywords"}]}},end:"(})",endCaptures:{1:{name:"punctuation.definition.block.end.svelte"}},name:"meta.special.$3.svelte meta.special.end.svelte"},"special-tags-keywords":{captures:{1:{name:"punctuation.definition.keyword.svelte"},2:{patterns:[{match:"if|else\\s+if|else",name:"keyword.control.conditional.svelte"},{match:"each|key",name:"keyword.control.svelte"},{match:"await|then|catch",name:"keyword.control.flow.svelte"},{match:"snippet",name:"keyword.control.svelte"},{match:"html",name:"keyword.other.svelte"},{match:"render",name:"keyword.other.svelte"},{match:"debug",name:"keyword.other.debugger.svelte"},{match:"const",name:"storage.type.svelte"}]}},match:"([#@/:])(else\\s+if|[a-z]*)"},"special-tags-modes":{patterns:[{begin:"(?<=(if|key|then|catch|snippet|html|render).*?)\\G",end:"(?=})",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts"}]},{begin:"(?<=const.*?)\\G",end:"(?=})",patterns:[{include:"#destructuring-const"},{begin:"\\G\\s*([_$[:alpha:]][_$[:alnum:]]+)\\s*",beginCaptures:{1:{name:"variable.other.constant.svelte"}},end:"(?=\\=)"},{begin:"(?=\\=)",end:"(?=})",name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts"}]}]},{begin:"(?<=each.*?)\\G",end:"(?=})",patterns:[{begin:"\\G\\s*?(?=\\S)",contentName:"meta.embedded.expression.svelte source.ts",end:"(?=(?:^\\s*|\\s+)(as))",patterns:[{include:"source.ts"}]},{begin:"(as)",beginCaptures:{1:{name:"keyword.control.as.svelte"}},end:"(?=})",patterns:[{include:"#destructuring"},{begin:"\\(",captures:{0:{name:"meta.brace.round.svelte"}},contentName:"meta.embedded.expression.svelte source.ts",end:"\\)|(?=})",patterns:[{include:"source.ts"}]},{captures:{1:{name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts"}]}},match:"(\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*)"},{match:",",name:"punctuation.separator.svelte"}]}]},{begin:"(?<=await.*?)\\G",end:"(?=})",patterns:[{begin:"\\G\\s*?(?=\\S)",contentName:"meta.embedded.expression.svelte source.ts",end:"\\s+(then)|(?=})",endCaptures:{1:{name:"keyword.control.flow.svelte"}},patterns:[{include:"source.ts"}]},{begin:"(?<=then\\b)",contentName:"meta.embedded.expression.svelte source.ts",end:"(?=})",patterns:[{include:"source.ts"}]}]},{begin:"(?<=debug.*?)\\G",end:"(?=})",patterns:[{captures:{0:{name:"meta.embedded.expression.svelte source.ts",patterns:[{include:"source.ts"}]}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{match:",",name:"punctuation.separator.svelte"}]}]},"special-tags-void":{begin:"({)\\s*((?:[@:])(else\\s+if|[a-z]*))",beginCaptures:{1:{name:"punctuation.definition.block.begin.svelte"},2:{patterns:[{include:"#special-tags-keywords"}]}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.end.svelte"}},name:"meta.special.$3.svelte",patterns:[{include:"#special-tags-modes"}]},tags:{patterns:[{include:"#tags-lang"},{include:"#tags-void"},{include:"#tags-general-end"},{include:"#tags-general-start"}]},"tags-end-node":{captures:{1:{name:"meta.tag.end.svelte punctuation.definition.tag.begin.svelte"},2:{name:"meta.tag.end.svelte",patterns:[{include:"#tags-name"}]},3:{name:"meta.tag.end.svelte punctuation.definition.tag.end.svelte"},4:{name:"meta.tag.start.svelte punctuation.definition.tag.end.svelte"}},match:"(</)(.*?)\\s*(>)|(/>)"},"tags-general-end":{begin:"(</)([^/\\s>]*)",beginCaptures:{1:{name:"meta.tag.end.svelte punctuation.definition.tag.begin.svelte"},2:{name:"meta.tag.end.svelte",patterns:[{include:"#tags-name"}]}},end:"(>)",endCaptures:{1:{name:"meta.tag.end.svelte punctuation.definition.tag.end.svelte"}},name:"meta.scope.tag.$2.svelte"},"tags-general-start":{begin:"(<)([^/\\s>/]*)",beginCaptures:{0:{patterns:[{include:"#tags-start-node"}]}},end:"(/?>)",endCaptures:{1:{name:"meta.tag.start.svelte punctuation.definition.tag.end.svelte"}},name:"meta.scope.tag.$2.svelte",patterns:[{include:"#tags-start-attributes"}]},"tags-lang":{begin:"<(script|style|template)",beginCaptures:{0:{patterns:[{include:"#tags-start-node"}]}},end:"</\\1\\s*>|/>",endCaptures:{0:{patterns:[{include:"#tags-end-node"}]}},name:"meta.$1.svelte",patterns:[{begin:`\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['"]|)(?:text/)?(\\w+)\\2)`,end:"(?=</|/>)",name:"meta.lang.$3.svelte",patterns:[{include:"#tags-lang-start-attributes"}]},{include:"#tags-lang-start-attributes"}]},"tags-lang-start-attributes":{begin:"\\G",end:"(?=/>)|>",endCaptures:{0:{name:"punctuation.definition.tag.end.svelte"}},name:"meta.tag.start.svelte",patterns:[{include:"#attributes-generics"},{include:"#attributes"}]},"tags-name":{patterns:[{captures:{1:{name:"keyword.control.svelte"},2:{name:"punctuation.definition.keyword.svelte"},3:{name:"entity.name.tag.svelte"}},match:"(svelte)(:)([a-z][\\w0-9:-]*)"},{match:"slot",name:"keyword.control.svelte"},{match:"[A-Z][a-zA-Z0-9_]*",name:"support.class.component.svelte"},{match:"[a-z][\\w0-9:]*-[\\w0-9:-]*",name:"meta.tag.custom.svelte entity.name.tag.svelte"},{match:"[a-z][\\w0-9:-]*",name:"entity.name.tag.svelte"}]},"tags-start-attributes":{begin:"\\G",end:"(?=/?>)",name:"meta.tag.start.svelte",patterns:[{include:"#attributes"}]},"tags-start-node":{captures:{1:{name:"punctuation.definition.tag.begin.svelte"},2:{patterns:[{include:"#tags-name"}]}},match:"(<)([^/\\s>/]*)",name:"meta.tag.start.svelte"},"tags-void":{begin:"(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\s|/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.svelte"},2:{name:"entity.name.tag.svelte"}},end:"/?>",endCaptures:{0:{name:"punctuation.definition.tag.begin.svelte"}},name:"meta.tag.void.svelte",patterns:[{include:"#attributes"}]},"type-parameters":{name:"meta.type.parameters.ts",patterns:[{include:"source.ts#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},{include:"source.ts#type"},{include:"source.ts#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.ts"}]}},scopeName:"source.svelte",embeddedLangs:["javascript","typescript","coffee","stylus","sass","css","scss","less","postcss","pug","markdown"]});var x=[...e,...t,...n,...s,...a,...i,...r,...c,...l,...m,...o,d];export{x as default}; diff --git a/assets/chunks/swift.Dez-Qvcc.js b/assets/chunks/swift.Dez-Qvcc.js new file mode 100644 index 000000000..3e481465d --- /dev/null +++ b/assets/chunks/swift.Dez-Qvcc.js @@ -0,0 +1,544 @@ +const e=Object.freeze({displayName:"Swift",name:"swift",patterns:[{include:"#root"}],repository:{"async-throws":{captures:{1:{name:"invalid.illegal.await-must-precede-throws.swift"},2:{name:"storage.modifier.exception.swift"},3:{name:"storage.modifier.async.swift"}},match:"\\b(?:(throws\\s+async|rethrows\\s+async)|(throws|rethrows)|(async))\\b"},attributes:{patterns:[{begin:"((@)available)(\\()",beginCaptures:{1:{name:"storage.modifier.attribute.swift"},2:{name:"punctuation.definition.attribute.swift"},3:{name:"punctuation.definition.arguments.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.attribute.available.swift",patterns:[{captures:{1:{name:"keyword.other.platform.os.swift"},2:{name:"constant.numeric.swift"}},match:"\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?"},{begin:"\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*",beginCaptures:{1:{name:"keyword.other.swift"},2:{name:"punctuation.separator.key-value.swift"}},end:"(?!\\G)",patterns:[{match:"\\b[0-9]+(?:\\.[0-9]+)*\\b",name:"constant.numeric.swift"}]},{begin:'\\b(message|renamed)\\s*(:)\\s*(?=")',beginCaptures:{1:{name:"keyword.other.swift"},2:{name:"punctuation.separator.key-value.swift"}},end:"(?!\\G)",patterns:[{include:"#literals"}]},{captures:{1:{name:"keyword.other.platform.all.swift"},2:{name:"keyword.other.swift"},3:{name:"invalid.illegal.character-not-allowed-here.swift"}},match:"(?:(\\*)|\\b(deprecated|unavailable|noasync)\\b)\\s*(.*?)(?=[,)])"}]},{begin:"((@)objc)(\\()",beginCaptures:{1:{name:"storage.modifier.attribute.swift"},2:{name:"punctuation.definition.attribute.swift"},3:{name:"punctuation.definition.arguments.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.attribute.objc.swift",patterns:[{captures:{1:{name:"invalid.illegal.missing-colon-after-selector-piece.swift"}},match:"\\w*(?::(?:\\w*:)*(\\w*))?",name:"entity.name.function.swift"}]},{begin:"(@)(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)",beginCaptures:{0:{name:"storage.modifier.attribute.swift"},1:{name:"punctuation.definition.attribute.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"}},comment:"any other attribute",end:"(?!\\G\\()",name:"meta.attribute.swift",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.arguments.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.arguments.attribute.swift",patterns:[{include:"#expressions"}]}]}]},"builtin-functions":{patterns:[{comment:"Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses",match:"(?<=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\s*[({])\\b",name:"support.function.swift"},{comment:"Member functions in the standard library in Swift 3",match:"(?<=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()",name:"support.function.swift"},{comment:"Member functions in the standard library in Swift 2 only",match:"(?<=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()",name:"support.function.swift"}]},"builtin-global-functions":{patterns:[{begin:"\\b(type)(\\()\\s*(of)(:)",beginCaptures:{1:{name:"support.function.dynamic-type.swift"},2:{name:"punctuation.definition.arguments.begin.swift"},3:{name:"support.variable.parameter.swift"},4:{name:"punctuation.separator.argument-label.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},patterns:[{include:"#expressions"}]},{comment:"Global functions available in Swift 3 which may be used with trailing closures and no parentheses",match:"\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b",name:"support.function.swift"},{comment:"Global functions available in Swift 3",match:"\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()",name:"support.function.swift"},{comment:"Global functions available in Swift 2 only",match:"\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()",name:"support.function.swift"}]},"builtin-properties":{patterns:[{comment:"The simpler (?<=\\bProcess\\.|\\bCommandLine\\.) breaks VS Code / Atom, see https://github.com/textmate/swift.tmbundle/issues/29",match:"(?<=^Process\\.|\\WProcess\\.|^CommandLine\\.|\\WCommandLine\\.)(arguments|argc|unsafeArgv)",name:"support.variable.swift"},{comment:"Properties in the standard library in Swift 3",match:"(?<=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b",name:"support.variable.swift"},{comment:"Properties in the standard library in Swift 2 only",match:"(?<=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b",name:"support.variable.swift"},{comment:"Enum cases in the standard library - note that there is some overlap between these and the properties",match:"(?<=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b",name:"support.variable.swift"}]},"builtin-types":{comment:"Types provided in the standard library",patterns:[{include:"#builtin-types-builtin-class-type"},{include:"#builtin-types-builtin-enum-type"},{include:"#builtin-types-builtin-protocol-type"},{include:"#builtin-types-builtin-struct-type"},{include:"#builtin-types-builtin-typealias"},{match:"\\bAny\\b",name:"support.type.any.swift"}]},"builtin-types-builtin-class-type":{comment:"Builtin class types",match:"\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b",name:"support.class.swift"},"builtin-types-builtin-enum-type":{patterns:[{comment:"CommandLine is an enum, but it acts like a constant",match:"\\b(?:CommandLine|Process(?=\\.))\\b",name:"support.constant.swift"},{comment:"The return type of a function that never returns",match:"\\bNever\\b",name:"support.constant.never.swift"},{comment:"Enum types in the standard library in Swift 3",match:"\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b",name:"support.type.swift"},{comment:"Enum types in the standard library in Swift 2 only",match:"\\b(?:MirrorDisposition|QuickLookObject)\\b",name:"support.type.swift"}]},"builtin-types-builtin-protocol-type":{patterns:[{comment:"Protocols in the standard library in Swift 3",match:"\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b",name:"support.type.swift"},{comment:"Protocols in the standard library in Swift 2 only",match:"\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b",name:"support.type.swift"}]},"builtin-types-builtin-struct-type":{patterns:[{comment:"Structs in the standard library in Swift 3",match:"\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b",name:"support.type.swift"},{comment:"Structs in the standard library in Swift 2 only",match:"\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b",name:"support.type.swift"}]},"builtin-types-builtin-typealias":{patterns:[{comment:"Typealiases in the standard library in Swift 3",match:"\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b",name:"support.type.swift"},{comment:"Typealiases in the standard library in Swift 2 only",match:"\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b",name:"support.type.swift"}]},"code-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.scope.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.scope.end.swift"}},patterns:[{include:"$self"}]},comments:{patterns:[{captures:{1:{name:"punctuation.definition.comment.swift"}},match:"\\A^(#!).*$\\n?",name:"comment.line.number-sign.swift"},{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.begin.swift"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.swift"}},name:"comment.block.documentation.swift",patterns:[{include:"#comments-nested"}]},{begin:"/\\*:",beginCaptures:{0:{name:"punctuation.definition.comment.begin.swift"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.swift"}},name:"comment.block.documentation.playground.swift",patterns:[{include:"#comments-nested"}]},{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.swift"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.swift"}},name:"comment.block.swift",patterns:[{include:"#comments-nested"}]},{match:"\\*/",name:"invalid.illegal.unexpected-end-of-block-comment.swift"},{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.swift"}},end:"(?!\\G)",patterns:[{begin:"///",beginCaptures:{0:{name:"punctuation.definition.comment.swift"}},end:"$",name:"comment.line.triple-slash.documentation.swift"},{begin:"//:",beginCaptures:{0:{name:"punctuation.definition.comment.swift"}},end:"$",name:"comment.line.double-slash.documentation.swift"},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.swift"}},end:"$",name:"comment.line.double-slash.swift"}]}]},"comments-nested":{begin:"/\\*",end:"\\*/",patterns:[{include:"#comments-nested"}]},"compiler-control":{patterns:[{begin:"^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",beginCaptures:{0:{name:"meta.preprocessor.conditional.swift"},1:{name:"punctuation.definition.preprocessor.swift"},2:{name:"keyword.control.import.preprocessor.conditional.swift"},3:{name:"constant.language.boolean.swift"}},contentName:"comment.block.preprocessor.swift",end:"(?=^\\s*(#(elseif|else|endif)\\b))"},{begin:"^\\s*(#)(if|elseif)\\s+",captures:{1:{name:"punctuation.definition.preprocessor.swift"},2:{name:"keyword.control.import.preprocessor.conditional.swift"}},end:"(?=\\s*(?://|/\\*))|$",name:"meta.preprocessor.conditional.swift",patterns:[{match:"(&&|\\|\\|)",name:"keyword.operator.logical.swift"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.swift"},{captures:{1:{name:"keyword.other.condition.swift"},2:{name:"punctuation.definition.parameters.begin.swift"},3:{name:"support.constant.platform.architecture.swift"},4:{name:"punctuation.definition.parameters.end.swift"}},match:"\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))"},{captures:{1:{name:"keyword.other.condition.swift"},2:{name:"punctuation.definition.parameters.begin.swift"},3:{name:"support.constant.platform.os.swift"},4:{name:"punctuation.definition.parameters.end.swift"}},match:"\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))"},{captures:{1:{name:"keyword.other.condition.swift"},2:{name:"punctuation.definition.parameters.begin.swift"},3:{name:"entity.name.type.module.swift"},4:{name:"punctuation.definition.parameters.end.swift"}},match:"\\b(canImport)\\s*(\\()([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(\\))"},{begin:"\\b(targetEnvironment)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.condition.swift"},2:{name:"punctuation.definition.parameters.begin.swift"}},end:"(\\))|$",endCaptures:{1:{name:"punctuation.definition.parameters.end.swift"}},patterns:[{match:"\\b(simulator|UIKitForMac)\\b",name:"support.constant.platform.environment.swift"}]},{begin:"\\b(swift|compiler)\\s*(\\()",beginCaptures:{1:{name:"keyword.other.condition.swift"},2:{name:"punctuation.definition.parameters.begin.swift"}},end:"(\\))|$",endCaptures:{1:{name:"punctuation.definition.parameters.end.swift"}},patterns:[{match:">=|<",name:"keyword.operator.comparison.swift"},{match:"\\b[0-9]+(?:\\.[0-9]+)*\\b",name:"constant.numeric.swift"}]}]},{captures:{1:{name:"punctuation.definition.preprocessor.swift"},2:{name:"keyword.control.import.preprocessor.conditional.swift"},3:{patterns:[{match:"\\S+",name:"invalid.illegal.character-not-allowed-here.swift"}]}},match:"^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",name:"meta.preprocessor.conditional.swift"},{captures:{1:{name:"punctuation.definition.preprocessor.swift"},2:{name:"keyword.control.import.preprocessor.sourcelocation.swift"},4:{name:"punctuation.definition.parameters.begin.swift"},5:{patterns:[{begin:'(file)\\s*(:)\\s*(?=")',beginCaptures:{1:{name:"support.variable.parameter.swift"},2:{name:"punctuation.separator.key-value.swift"}},end:"(?!\\G)",patterns:[{include:"#literals"}]},{captures:{1:{name:"support.variable.parameter.swift"},2:{name:"punctuation.separator.key-value.swift"},3:{name:"constant.numeric.integer.swift"}},match:"(line)\\s*(:)\\s*([0-9]+)"},{match:",",name:"punctuation.separator.parameters.swift"},{match:"\\S+",name:"invalid.illegal.character-not-allowed-here.swift"}]},6:{name:"punctuation.definition.parameters.begin.swift"},7:{patterns:[{match:"\\S+",name:"invalid.illegal.character-not-allowed-here.swift"}]}},match:"^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",name:"meta.preprocessor.sourcelocation.swift"}]},conditionals:{patterns:[{begin:"(?<!\\.)\\b(if|guard|switch|for)\\b",beginCaptures:{1:{patterns:[{include:"#keywords"}]}},end:"(?=\\{)",patterns:[{include:"#expressions-without-trailing-closures"}]},{begin:"(?<!\\.)\\b(while)\\b",beginCaptures:{1:{patterns:[{include:"#keywords"}]}},comment:"while can be the end of a repeat-while statement so doesn't necessarily have braces after it",end:"(?=\\{)|$",patterns:[{include:"#expressions-without-trailing-closures"}]}]},declarations:{patterns:[{include:"#declarations-function"},{include:"#declarations-function-initializer"},{include:"#declarations-function-subscript"},{include:"#declarations-typed-variable-declaration"},{include:"#declarations-import"},{include:"#declarations-operator"},{include:"#declarations-precedencegroup"},{include:"#declarations-protocol"},{include:"#declarations-type"},{include:"#declarations-extension"},{include:"#declarations-typealias"},{include:"#declarations-macro"}]},"declarations-available-types":{patterns:[{include:"#comments"},{include:"#builtin-types"},{include:"#attributes"},{match:"\\basync\\b",name:"storage.modifier.async.swift"},{match:"\\b(?:throws|rethrows)\\b",name:"storage.modifier.exception.swift"},{match:"\\bsome\\b",name:"keyword.other.operator.type.opaque.swift"},{match:"\\bany\\b",name:"keyword.other.operator.type.existential.swift"},{match:"\\b(?:repeat|each)\\b",name:"keyword.control.loop.swift"},{match:"\\b(?:inout|isolated|borrowing|consuming)\\b",name:"storage.modifier.swift"},{match:"\\bSelf\\b",name:"variable.language.swift"},{captures:{1:{name:"keyword.operator.type.function.swift"}},match:"(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])"},{captures:{1:{name:"keyword.operator.type.composition.swift"}},comment:"Swift 3: A & B",match:"(?<![/=\\-+!*%<>&|\\^~.])(&)(?![/=\\-+!*%<>&|\\^~.])"},{match:"[?!]",name:"keyword.operator.type.optional.swift"},{match:"\\.\\.\\.",name:"keyword.operator.function.variadic-parameter.swift"},{comment:"Swift 2: protocol<A, B>",match:"\\bprotocol\\b",name:"keyword.other.type.composition.swift"},{match:"(?<=\\.)(?:Protocol|Type)\\b",name:"keyword.other.type.metatype.swift"},{include:"#declarations-available-types-tuple-type"},{include:"#declarations-available-types-collection-type"},{include:"#declarations-generic-argument-clause"}]},"declarations-available-types-collection-type":{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.collection-type.begin.swift"}},comment:"array and dictionary types [Value] and [Key: Value]",end:"\\]|(?=[>){}])",endCaptures:{0:{name:"punctuation.section.collection-type.end.swift"}},patterns:[{include:"#declarations-available-types"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.key-value.swift"}},end:"(?=\\]|[>){}])",patterns:[{match:":",name:"invalid.illegal.extra-colon-in-dictionary-type.swift"},{include:"#declarations-available-types"}]}]},"declarations-available-types-tuple-type":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.tuple-type.begin.swift"}},end:"\\)|(?=[>\\]{}])",endCaptures:{0:{name:"punctuation.section.tuple-type.end.swift"}},patterns:[{include:"#declarations-available-types"}]},"declarations-extension":{begin:"\\b(extension)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",beginCaptures:{1:{name:"storage.type.$1.swift"},2:{name:"entity.name.type.swift",patterns:[{include:"#declarations-available-types"}]},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?<=\\})",name:"meta.definition.type.$1.swift",patterns:[{include:"#comments"},{comment:"SE-0143: Conditional Conformances",include:"#declarations-generic-where-clause"},{include:"#declarations-inheritance-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.type.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.type.end.swift"}},name:"meta.definition.type.body.swift",patterns:[{include:"$self"}]}]},"declarations-function":{begin:`(?x) +\\b +(func) +\\s+ +( +(?<q>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>) +| (?: +( +(?<oph> +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] +) +( +\\g<oph> +| (?<opc> +[\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)* +) +| ( \\. ( \\g<oph> | \\g<opc> | \\. )+ ) +) +) +\\s* +(?=\\(|<)`,beginCaptures:{1:{name:"storage.type.function.swift"},2:{name:"entity.name.function.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?<=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",name:"meta.definition.function.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#declarations-function-result"},{include:"#async-throws"},{comment:"Swift 3: generic constraints after the parameters and return type",include:"#declarations-generic-where-clause"},{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.section.function.begin.swift"}},end:"(\\})",endCaptures:{1:{name:"punctuation.section.function.end.swift"}},name:"meta.definition.function.body.swift",patterns:[{include:"$self"}]}]},"declarations-function-initializer":{begin:"(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",beginCaptures:{1:{name:"storage.type.function.swift",patterns:[{match:"(?<=[?!])[?!]+",name:"invalid.illegal.character-not-allowed-here.swift"}]}},end:"(?<=\\})|$",name:"meta.definition.function.initializer.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#async-throws"},{comment:"Swift 3: generic constraints after the parameters and return type",include:"#declarations-generic-where-clause"},{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.section.function.begin.swift"}},end:"(\\})",endCaptures:{1:{name:"punctuation.section.function.end.swift"}},name:"meta.definition.function.body.swift",patterns:[{include:"$self"}]}]},"declarations-function-result":{begin:"(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])\\s*",beginCaptures:{1:{name:"keyword.operator.function-result.swift"}},end:"(?!\\G)(?=\\{|\\bwhere\\b|;|=)|$",name:"meta.function-result.swift",patterns:[{include:"#declarations-available-types"}]},"declarations-function-subscript":{begin:"(?<!\\.)\\b(subscript)\\s*(?=\\(|<)",beginCaptures:{1:{name:"storage.type.function.swift"}},end:"(?<=\\})|$",name:"meta.definition.function.subscript.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#declarations-function-result"},{include:"#async-throws"},{include:"#declarations-generic-where-clause"},{begin:"(\\{)",beginCaptures:{1:{name:"punctuation.section.function.begin.swift"}},end:"(\\})",endCaptures:{1:{name:"punctuation.section.function.end.swift"}},name:"meta.definition.function.body.swift",patterns:[{include:"$self"}]}]},"declarations-generic-argument-clause":{begin:"<",beginCaptures:{0:{name:"punctuation.separator.generic-argument-clause.begin.swift"}},end:">|(?=[)\\]{}])",endCaptures:{0:{name:"punctuation.separator.generic-argument-clause.end.swift"}},name:"meta.generic-argument-clause.swift",patterns:[{include:"#declarations-available-types"}]},"declarations-generic-parameter-clause":{begin:"<",beginCaptures:{0:{name:"punctuation.separator.generic-parameter-clause.begin.swift"}},end:">|(?=[^\\w\\d:<>\\s,=&`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)",endCaptures:{0:{name:"punctuation.separator.generic-parameter-clause.end.swift"}},name:"meta.generic-parameter-clause.swift",patterns:[{include:"#comments"},{comment:"Swift 2: constraints inside the generic param list",include:"#declarations-generic-where-clause"},{match:"\\beach\\b",name:"keyword.control.loop.swift"},{captures:{1:{name:"variable.language.generic-parameter.swift"}},match:"\\b((?!\\d)\\w[\\w\\d]*)\\b"},{match:",",name:"punctuation.separator.generic-parameters.swift"},{begin:"(:)\\s*",beginCaptures:{1:{name:"punctuation.separator.generic-parameter-constraint.swift"}},end:"(?=[,>]|(?!\\G)\\bwhere\\b)",name:"meta.generic-parameter-constraint.swift",patterns:[{begin:"\\G",end:"(?=[,>]|(?!\\G)\\bwhere\\b)",name:"entity.other.inherited-class.swift",patterns:[{include:"#declarations-type-identifier"},{include:"#declarations-type-operators"}]}]}]},"declarations-generic-where-clause":{begin:"\\b(where)\\b\\s*",beginCaptures:{1:{name:"keyword.other.generic-constraint-introducer.swift"}},end:"(?!\\G)$|(?=[>{};\\n]|//|/\\*)",name:"meta.generic-where-clause.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-where-clause-requirement-list"}]},"declarations-generic-where-clause-requirement-list":{begin:"\\G|,\\s*",end:"(?=[,>{};\\n]|//|/\\*)",patterns:[{include:"#comments"},{include:"#constraint"},{include:"#declarations-available-types"},{begin:"(?<![/=\\-+!*%<>&|\\^~.])(==)(?![/=\\-+!*%<>&|\\^~.])",beginCaptures:{1:{name:"keyword.operator.generic-constraint.same-type.swift"}},end:"(?=\\s*[,>{};\\n]|//|/\\*)",name:"meta.generic-where-clause.same-type-requirement.swift",patterns:[{include:"#declarations-available-types"}]},{begin:"(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])",beginCaptures:{1:{name:"keyword.operator.generic-constraint.conforms-to.swift"}},end:"(?=\\s*[,>{};\\n]|//|/\\*)",name:"meta.generic-where-clause.conformance-requirement.swift",patterns:[{begin:"\\G\\s*",contentName:"entity.other.inherited-class.swift",end:"(?=\\s*[,>{};\\n]|//|/\\*)",patterns:[{include:"#declarations-available-types"}]}]}]},"declarations-import":{begin:"(?<!\\.)\\b(import)\\s+",beginCaptures:{1:{name:"keyword.control.import.swift"}},end:"(;)|$\\n?|(?=//|/\\*)",endCaptures:{1:{name:"punctuation.terminator.statement.swift"}},name:"meta.import.swift",patterns:[{begin:"\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|actor|enum|protocol|var|func)\\s+)?",beginCaptures:{1:{name:"storage.modifier.swift"}},end:"(?=;|$|//|/\\*)",patterns:[{captures:{1:{name:"punctuation.definition.identifier.swift"},2:{name:"punctuation.definition.identifier.swift"}},match:`(?x) +(?<=\\G|\\.) +(?<q>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)`,name:"entity.name.type.swift"},{match:`(?x) +(?<=\\G|\\.) +\\$[0-9]+`,name:"entity.name.type.swift"},{captures:{1:{patterns:[{match:"\\.",name:"invalid.illegal.dot-not-allowed-here.swift"}]}},match:`(?x) +(?<=\\G|\\.) +(?: +( +(?<oph> +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] +) +( +\\g<oph> +| (?<opc> +[\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)* +) +| ( \\. ( \\g<oph> | \\g<opc> | \\. )+ ) +) +(?=\\.|;|$|//|/\\*|\\s)`,name:"entity.name.type.swift"},{match:"\\.",name:"punctuation.separator.import.swift"},{begin:"(?!\\s*(;|$|//|/\\*))",end:"(?=\\s*(;|$|//|/\\*))",name:"invalid.illegal.character-not-allowed-here.swift"}]}]},"declarations-inheritance-clause":{begin:"(:)(?=\\s*\\{)|(:)\\s*",beginCaptures:{1:{name:"invalid.illegal.empty-inheritance-clause.swift"},2:{name:"punctuation.separator.inheritance-clause.swift"}},end:"(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",name:"meta.inheritance-clause.swift",patterns:[{begin:"\\bclass\\b",beginCaptures:{0:{name:"storage.type.class.swift"}},end:"(?=[={}]|(?!\\G)\\bwhere\\b)",patterns:[{include:"#comments"},{include:"#declarations-inheritance-clause-more-types"}]},{begin:"\\G",end:"(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",patterns:[{include:"#comments"},{include:"#declarations-inheritance-clause-inherited-type"},{include:"#declarations-inheritance-clause-more-types"},{include:"#declarations-type-operators"}]}]},"declarations-inheritance-clause-inherited-type":{begin:"(?=[`\\p{L}_])",end:"(?!\\G)",name:"entity.other.inherited-class.swift",patterns:[{include:"#declarations-type-identifier"}]},"declarations-inheritance-clause-more-types":{begin:",\\s*",end:"(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)",name:"meta.inheritance-list.more-types",patterns:[{include:"#comments"},{include:"#declarations-inheritance-clause-inherited-type"},{include:"#declarations-inheritance-clause-more-types"},{include:"#declarations-type-operators"}]},"declarations-macro":{begin:`(?x) +\\b +(macro) +\\s+ +((?<q>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)) +\\s* +(?=\\(|<|=)`,beginCaptures:{1:{name:"storage.type.function.swift"},2:{name:"entity.name.function.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"$|(?=;|//|/\\*|\\}|=)",name:"meta.definition.macro.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#declarations-function-result"},{include:"#async-throws"},{comment:"Swift 3: generic constraints after the parameters and return type",include:"#declarations-generic-where-clause"}]},"declarations-operator":{begin:`(?x) +(?: +\\b(prefix|infix|postfix) +\\s+ +)? +\\b +(operator) +\\s+ +( +( +(?<oph> +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] +) +( +\\g<oph> +| \\. +| (?<opc> +[\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)*+ +) +| ( \\. ( \\g<oph> | \\g<opc> | \\. )++ ) +) +\\s*`,beginCaptures:{1:{name:"storage.modifier.swift"},2:{name:"storage.type.function.operator.swift"},3:{name:"entity.name.function.operator.swift"},4:{comment:"workaround for https://github.com/microsoft/vscode-textmate/issues/140#issuecomment-1793610346",name:"entity.name.function.operator.swift",patterns:[{match:"\\.",name:"invalid.illegal.dot-not-allowed-here.swift"}]}},end:"(;)|$\\n?|(?=//|/\\*)",endCaptures:{1:{name:"punctuation.terminator.statement.swift"}},name:"meta.definition.operator.swift",patterns:[{include:"#declarations-operator-swift2"},{include:"#declarations-operator-swift3"},{match:"((?!$|;|//|/\\*)\\S)+",name:"invalid.illegal.character-not-allowed-here.swift"}]},"declarations-operator-swift2":{begin:"\\G(\\{)",beginCaptures:{1:{name:"punctuation.definition.operator.begin.swift"}},end:"(\\})",endCaptures:{1:{name:"punctuation.definition.operator.end.swift"}},patterns:[{include:"#comments"},{captures:{1:{name:"storage.modifier.swift"},2:{name:"keyword.other.operator.associativity.swift"}},match:"\\b(associativity)\\s+(left|right)\\b"},{captures:{1:{name:"storage.modifier.swift"},2:{name:"constant.numeric.integer.swift"}},match:"\\b(precedence)\\s+([0-9]+)\\b"},{captures:{1:{name:"storage.modifier.swift"}},match:"\\b(assignment)\\b"}]},"declarations-operator-swift3":{captures:{2:{name:"entity.other.inherited-class.swift",patterns:[{include:"#declarations-types-precedencegroup"}]},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},match:"\\G(:)\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"},"declarations-parameter-clause":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.swift"}},end:"(\\))(?:\\s*(async)\\b)?",endCaptures:{1:{name:"punctuation.definition.parameters.end.swift"},2:{name:"storage.modifier.async.swift"}},name:"meta.parameter-clause.swift",patterns:[{include:"#declarations-parameter-list"}]},"declarations-parameter-list":{patterns:[{captures:{1:{name:"entity.name.function.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"variable.parameter.function.swift"},5:{name:"punctuation.definition.identifier.swift"},6:{name:"punctuation.definition.identifier.swift"}},comment:"External parameter labels are considered part of the function name",match:"((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>))\\s+((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>))(?=\\s*:)"},{captures:{1:{name:"variable.parameter.function.swift"},2:{name:"entity.name.function.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},comment:"If no external label is given, the name is both the external label and the internal variable name",match:"(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)))(?=\\s*:)"},{begin:":\\s*(?!\\s)",end:"(?=[,)])",patterns:[{include:"#declarations-available-types"},{match:":",name:"invalid.illegal.extra-colon-in-parameter-list.swift"},{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.swift"}},comment:"a parameter's default value",end:"(?=[,)])",patterns:[{include:"#expressions"}]}]}]},"declarations-precedencegroup":{begin:"\\b(precedencegroup)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(?=\\{)",beginCaptures:{1:{name:"storage.type.precedencegroup.swift"},2:{name:"entity.name.type.precedencegroup.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?!\\G)",name:"meta.definition.precedencegroup.swift",patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.precedencegroup.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.precedencegroup.end.swift"}},patterns:[{include:"#comments"},{captures:{1:{name:"storage.modifier.swift"},2:{name:"entity.other.inherited-class.swift",patterns:[{include:"#declarations-types-precedencegroup"}]},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},match:"\\b(higherThan|lowerThan)\\s*:\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"},{captures:{1:{name:"storage.modifier.swift"},2:{name:"keyword.other.operator.associativity.swift"}},match:"\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?"},{captures:{1:{name:"storage.modifier.swift"},2:{name:"constant.language.boolean.swift"}},match:"\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?"}]}]},"declarations-protocol":{begin:"\\b(protocol)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",beginCaptures:{1:{name:"storage.type.$1.swift"},2:{name:"entity.name.type.$1.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?<=\\})",name:"meta.definition.type.protocol.swift",patterns:[{include:"#comments"},{include:"#declarations-inheritance-clause"},{comment:"SE-0142: Permit where clauses to constrain associated types",include:"#declarations-generic-where-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.type.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.type.end.swift"}},name:"meta.definition.type.body.swift",patterns:[{include:"#declarations-protocol-protocol-method"},{include:"#declarations-protocol-protocol-initializer"},{include:"#declarations-protocol-associated-type"},{include:"$self"}]}]},"declarations-protocol-associated-type":{begin:"\\b(associatedtype)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",beginCaptures:{1:{name:"keyword.other.declaration-specifier.swift"},2:{name:"variable.language.associatedtype.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?!\\G)$|(?=[;}]|$)",name:"meta.definition.associatedtype.swift",patterns:[{include:"#declarations-inheritance-clause"},{comment:"SE-0142: Permit where clauses to constrain associated types",include:"#declarations-generic-where-clause"},{include:"#declarations-typealias-assignment"}]},"declarations-protocol-protocol-initializer":{begin:"(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",beginCaptures:{1:{name:"storage.type.function.swift",patterns:[{match:"(?<=[?!])[?!]+",name:"invalid.illegal.character-not-allowed-here.swift"}]}},end:"$|(?=;|//|/\\*|\\})",name:"meta.definition.function.initializer.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#async-throws"},{comment:"Swift 3: generic constraints after the parameters and return type",include:"#declarations-generic-where-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.function.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.function.end.swift"}},name:"invalid.illegal.function-body-not-allowed-in-protocol.swift",patterns:[{include:"$self"}]}]},"declarations-protocol-protocol-method":{begin:`(?x) +\\b +(func) +\\s+ +( +(?<q>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>) +| (?: +( +(?<oph> +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] +) +( +\\g<oph> +| (?<opc> +[\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)* +) +| ( \\. ( \\g<oph> | \\g<opc> | \\. )+ ) +) +) +\\s* +(?=\\(|<)`,beginCaptures:{1:{name:"storage.type.function.swift"},2:{name:"entity.name.function.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"$|(?=;|//|/\\*|\\})",name:"meta.definition.function.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{include:"#declarations-parameter-clause"},{include:"#declarations-function-result"},{include:"#async-throws"},{comment:"Swift 3: generic constraints after the parameters and return type",include:"#declarations-generic-where-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.function.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.function.end.swift"}},name:"invalid.illegal.function-body-not-allowed-in-protocol.swift",patterns:[{include:"$self"}]}]},"declarations-type":{patterns:[{begin:"\\b(class(?!\\s+(?:func|var|let)\\b)|struct|actor)\\b\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",beginCaptures:{1:{name:"storage.type.$1.swift"},2:{name:"entity.name.type.$1.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?<=\\})",name:"meta.definition.type.$1.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{comment:"Swift 3: generic constraints after the generic param list",include:"#declarations-generic-where-clause"},{include:"#declarations-inheritance-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.type.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.type.end.swift"}},name:"meta.definition.type.body.swift",patterns:[{include:"$self"}]}]},{include:"#declarations-type-enum"}]},"declarations-type-enum":{begin:"\\b(enum)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",beginCaptures:{1:{name:"storage.type.$1.swift"},2:{name:"entity.name.type.$1.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?<=\\})",name:"meta.definition.type.$1.swift",patterns:[{include:"#comments"},{include:"#declarations-generic-parameter-clause"},{comment:"Swift 3: generic constraints after the generic param list",include:"#declarations-generic-where-clause"},{include:"#declarations-inheritance-clause"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.type.begin.swift"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.type.end.swift"}},name:"meta.definition.type.body.swift",patterns:[{include:"#declarations-type-enum-enum-case-clause"},{include:"$self"}]}]},"declarations-type-enum-associated-values":{begin:"\\G\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.swift"}},patterns:[{include:"#comments"},{begin:`(?x) +(?:(_)|((?<q1>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q1>)) +\\s+ +(((?<q2>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q2>)) +\\s*(:)`,beginCaptures:{1:{name:"entity.name.function.swift"},2:{name:"invalid.illegal.distinct-labels-not-allowed.swift"},5:{name:"variable.parameter.function.swift"},7:{name:"punctuation.separator.argument-label.swift"}},end:"(?=[,)\\]])",patterns:[{include:"#declarations-available-types"}]},{begin:"(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q>))\\s*(:)",beginCaptures:{1:{name:"entity.name.function.swift"},2:{name:"variable.parameter.function.swift"},4:{name:"punctuation.separator.argument-label.swift"}},end:"(?=[,)\\]])",patterns:[{include:"#declarations-available-types"}]},{begin:"(?![,)\\]])(?=\\S)",comment:"an element without a label (i.e. anything else)",end:"(?=[,)\\]])",patterns:[{include:"#declarations-available-types"},{match:":",name:"invalid.illegal.extra-colon-in-parameter-list.swift"}]}]},"declarations-type-enum-enum-case":{begin:"(?x)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",beginCaptures:{1:{name:"variable.other.enummember.swift"}},end:"(?<=\\))|(?![=(])",patterns:[{include:"#comments"},{include:"#declarations-type-enum-associated-values"},{include:"#declarations-type-enum-raw-value-assignment"}]},"declarations-type-enum-enum-case-clause":{begin:"\\b(case)\\b\\s*",beginCaptures:{1:{name:"storage.type.enum.case.swift"}},end:"(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])",patterns:[{include:"#comments"},{include:"#declarations-type-enum-enum-case"},{include:"#declarations-type-enum-more-cases"}]},"declarations-type-enum-more-cases":{begin:",\\s*",end:"(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])",name:"meta.enum-case.more-cases",patterns:[{include:"#comments"},{include:"#declarations-type-enum-enum-case"},{include:"#declarations-type-enum-more-cases"}]},"declarations-type-enum-raw-value-assignment":{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.swift"}},end:"(?!\\G)",patterns:[{include:"#comments"},{include:"#literals"}]},"declarations-type-identifier":{begin:"((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",beginCaptures:{1:{name:"meta.type-name.swift",patterns:[{include:"#builtin-types"}]},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"}},end:"(?!<)",patterns:[{begin:"(?=<)",end:"(?!\\G)",patterns:[{include:"#declarations-generic-argument-clause"}]}]},"declarations-type-operators":{patterns:[{captures:{1:{name:"keyword.operator.type.composition.swift"}},comment:"Swift 3: A & B",match:"(?<![/=\\-+!*%<>&|\\^~.])(&)(?![/=\\-+!*%<>&|\\^~.])"},{captures:{1:{name:"keyword.operator.type.requirement-suppression.swift"}},comment:"SE-0390: Noncopyable structs and enums",match:"(?<![/=\\-+!*%<>&|\\^~.])(~)(?![/=\\-+!*%<>&|\\^~.])"}]},"declarations-typealias":{begin:"\\b(typealias)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",beginCaptures:{1:{name:"keyword.other.declaration-specifier.swift"},2:{name:"entity.name.type.typealias.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.identifier.swift"}},end:"(?!\\G)$|(?=;|//|/\\*|$)",name:"meta.definition.typealias.swift",patterns:[{begin:"\\G(?=<)",end:"(?!\\G)",patterns:[{include:"#declarations-generic-parameter-clause"}]},{include:"#declarations-typealias-assignment"}]},"declarations-typealias-assignment":{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.swift"}},end:"(?!\\G)$|(?=;|//|/\\*|$)",patterns:[{include:"#declarations-available-types"}]},"declarations-typed-variable-declaration":{begin:`(?x) +\\b(?:(async)\\s+)?(let|var)\\b\\s+ +(?<q>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\\s* +:`,beginCaptures:{1:{name:"storage.modifier.async.swift"},2:{name:"keyword.other.declaration-specifier.swift"}},end:"(?=$|[={])",patterns:[{include:"#declarations-available-types"}]},"declarations-types-precedencegroup":{patterns:[{comment:"Precedence groups in the standard library",match:"\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b",name:"support.type.swift"}]},expressions:{comment:"trailing closures need to be parsed before other member references",patterns:[{include:"#expressions-without-trailing-closures-or-member-references"},{include:"#expressions-trailing-closure"},{include:"#member-reference"}]},"expressions-trailing-closure":{patterns:[{captures:{1:{name:"support.function.any-method.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"}},comment:"foo { body } -- a call with a trailing closure and no argument clause",match:"(#?(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))(?=\\s*\\{)",name:"meta.function-call.trailing-closure-only.swift"},{captures:{1:{name:"support.function.any-method.trailing-closure-label.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.separator.argument-label.swift"}},comment:"foo: { body } -- labeled-trailing-closure (SE-0279)",match:"((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(:)(?=\\s*\\{)"}]},"expressions-without-trailing-closures":{patterns:[{include:"#expressions-without-trailing-closures-or-member-references"},{include:"#member-references"}]},"expressions-without-trailing-closures-or-member-references":{patterns:[{include:"#comments"},{include:"#code-block"},{include:"#attributes"},{include:"#expressions-without-trailing-closures-or-member-references-closure-parameter"},{include:"#literals"},{include:"#operators"},{include:"#builtin-types"},{include:"#builtin-functions"},{include:"#builtin-global-functions"},{include:"#builtin-properties"},{include:"#expressions-without-trailing-closures-or-member-references-compound-name"},{include:"#conditionals"},{include:"#keywords"},{include:"#expressions-without-trailing-closures-or-member-references-availability-condition"},{include:"#expressions-without-trailing-closures-or-member-references-function-or-macro-call-expression"},{include:"#expressions-without-trailing-closures-or-member-references-macro-expansion"},{include:"#expressions-without-trailing-closures-or-member-references-subscript-expression"},{include:"#expressions-without-trailing-closures-or-member-references-parenthesized-expression"},{match:"\\b_\\b",name:"support.variable.discard-value.swift"}]},"expressions-without-trailing-closures-or-member-references-availability-condition":{begin:"\\B(#(?:un)?available)(\\()",beginCaptures:{1:{name:"support.function.availability-condition.swift"},2:{name:"punctuation.definition.arguments.begin.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},patterns:[{captures:{1:{name:"keyword.other.platform.os.swift"},2:{name:"constant.numeric.swift"}},match:"\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))"},{captures:{1:{name:"keyword.other.platform.all.swift"},2:{name:"invalid.illegal.character-not-allowed-here.swift"}},match:"(\\*)\\s*(.*?)(?=[,)])"},{match:"[^\\s,)]+",name:"invalid.illegal.character-not-allowed-here.swift"}]},"expressions-without-trailing-closures-or-member-references-closure-parameter":{match:"\\$[0-9]+",name:"variable.language.closure-parameter.swift"},"expressions-without-trailing-closures-or-member-references-compound-name":{captures:{1:{name:"entity.name.function.compound-name.swift"},2:{name:"punctuation.definition.entity.swift"},3:{name:"punctuation.definition.entity.swift"},4:{patterns:[{captures:{1:{name:"punctuation.definition.entity.swift"},2:{name:"punctuation.definition.entity.swift"}},match:"(?<q>`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>):",name:"entity.name.function.compound-name.swift"}]}},comment:"a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.",match:`(?x) +((?<q1>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>)) +\\( +( +( +((?<q2>\`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>)) +: +)+ +) +\\)`},"expressions-without-trailing-closures-or-member-references-expression-element-list":{patterns:[{include:"#comments"},{begin:"((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(:)",beginCaptures:{1:{name:"support.function.any-method.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.separator.argument-label.swift"}},comment:"an element with a label",end:"(?=[,)\\]])",patterns:[{include:"#expressions"}]},{begin:"(?![,)\\]])(?=\\S)",comment:"an element without a label (i.e. anything else)",end:"(?=[,)\\]])",patterns:[{include:"#expressions"}]}]},"expressions-without-trailing-closures-or-member-references-function-or-macro-call-expression":{patterns:[{begin:"(#?(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(\\()",beginCaptures:{1:{name:"support.function.any-method.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"},4:{name:"punctuation.definition.arguments.begin.swift"}},comment:"foo(args) -- a call whose callee is a highlightable name",end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.function-call.swift",patterns:[{include:"#expressions-without-trailing-closures-or-member-references-expression-element-list"}]},{begin:"(?<=[`\\])}>\\p{L}_\\p{N}\\p{M}])\\s*(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.swift"}},comment:"[Int](args) -- a call whose callee is a more complicated expression",end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.function-call.swift",patterns:[{include:"#expressions-without-trailing-closures-or-member-references-expression-element-list"}]}]},"expressions-without-trailing-closures-or-member-references-macro-expansion":{match:"(#(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",name:"support.function.any-method.swift"},"expressions-without-trailing-closures-or-member-references-parenthesized-expression":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.tuple.begin.swift"}},comment:'correctly matching closure expressions is too hard (depends on trailing "in") so we just tack on some basics to the end of parenthesized-expression',end:"(\\))\\s*((?:\\b(?:async|throws|rethrows)\\s)*)",endCaptures:{1:{name:"punctuation.section.tuple.end.swift"},2:{patterns:[{match:"\\brethrows\\b",name:"invalid.illegal.rethrows-only-allowed-on-function-declarations.swift"},{include:"#async-throws"}]}},patterns:[{include:"#expressions-without-trailing-closures-or-member-references-expression-element-list"}]},"expressions-without-trailing-closures-or-member-references-subscript-expression":{begin:"(?<=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.swift"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},name:"meta.subscript-expression.swift",patterns:[{include:"#expressions-without-trailing-closures-or-member-references-expression-element-list"}]},keywords:{patterns:[{match:"(?<!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b",name:"keyword.control.branch.swift"},{match:"(?<!\\.)\\b(?:continue|break|fallthrough|return)\\b",name:"keyword.control.transfer.swift"},{match:"(?<!\\.)\\b(?:while|for|in|each)\\b",name:"keyword.control.loop.swift"},{match:"\\bany\\b(?=\\s*`?[\\p{L}_])",name:"keyword.other.operator.type.existential.swift"},{captures:{1:{name:"keyword.control.loop.swift"},2:{name:"punctuation.whitespace.trailing.repeat.swift"}},comment:"extra scopes for repeat-while snippet",match:"(?<!\\.)\\b(repeat)\\b(\\s*)"},{match:"(?<!\\.)\\bdefer\\b",name:"keyword.control.defer.swift"},{captures:{1:{name:"invalid.illegal.try-must-precede-await.swift"},2:{name:"keyword.control.await.swift"}},match:"(?<!\\.)\\b(?:(await\\s+try)|(await))\\b"},{match:"(?<!\\.)\\b(?:catch|throw|try)\\b|\\btry[?!]\\B",name:"keyword.control.exception.swift"},{match:"(?<!\\.)\\b(?:throws|rethrows)\\b",name:"storage.modifier.exception.swift"},{captures:{1:{name:"keyword.control.exception.swift"},2:{name:"punctuation.whitespace.trailing.do.swift"}},comment:"extra scopes for do-catch snippet",match:"(?<!\\.)\\b(do)\\b(\\s*)"},{captures:{1:{name:"storage.modifier.async.swift"},2:{name:"keyword.other.declaration-specifier.swift"}},match:"(?<!\\.)\\b(?:(async)\\s+)?(let|var)\\b"},{match:"(?<!\\.)\\b(?:associatedtype|operator|typealias)\\b",name:"keyword.other.declaration-specifier.swift"},{match:"(?<!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct|actor)\\b(?=\\s*`?[\\p{L}_])",name:"storage.type.$1.swift"},{match:"(?<!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix|distributed|nonisolated|borrowing|consuming)\\b",name:"storage.modifier.swift"},{match:"\\binit[?!]|\\binit\\b|(?<!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b",name:"storage.type.function.swift"},{match:"(?<!\\.)\\b(?:fileprivate|private|internal|public|open|package)\\b",name:"keyword.other.declaration-specifier.accessibility.swift"},{comment:"matches weak, unowned, unowned(safe), unowned(unsafe)",match:"(?<!\\.)\\bunowned\\((?:safe|unsafe)\\)|(?<!\\.)\\b(?:weak|unowned)\\b",name:"keyword.other.capture-specifier.swift"},{captures:{1:{name:"keyword.other.type.swift"},2:{name:"keyword.other.type.metatype.swift"}},match:"(?<=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b"},{match:"(?<!\\.)\\b(?:super|self|Self)\\b",name:"variable.language.swift"},{match:"\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b",name:"support.variable.swift"},{match:"(?<!\\.)\\bimport\\b",name:"keyword.control.import.swift"},{comment:'SE-0366: "consume behaves as a contextual keyword. In order to avoid interfering with existing code that calls functions named consume, the operand to consume must begin with another identifier, and must consist of an identifier or postfix expression"',match:"(?<!\\.)\\bconsume(?=\\s+`?[\\p{L}_])",name:"keyword.control.consume.swift"},{comment:'SE-0377: "copy is a contextual keyword, parsed as an operator if it is immediately followed by an identifier on the same line, like the consume x operator before it"',match:"(?<!\\.)\\bcopy(?=\\s+`?[\\p{L}_])",name:"keyword.control.copy.swift"}]},literals:{patterns:[{include:"#literals-boolean"},{include:"#literals-numeric"},{include:"#literals-string"},{match:"\\bnil\\b",name:"constant.language.nil.swift"},{comment:'object "literals" used in playgrounds',match:"\\B#(colorLiteral|imageLiteral|fileLiteral)\\b",name:"support.function.object-literal.swift"},{match:"\\B#externalMacro\\b",name:"support.function.builtin-macro.swift"},{match:"\\B#keyPath\\b",name:"support.function.key-path.swift"},{begin:"\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?",beginCaptures:{1:{name:"support.function.selector-reference.swift"},2:{name:"punctuation.definition.arguments.begin.swift"},3:{name:"support.variable.parameter.swift"},4:{name:"punctuation.separator.argument-label.swift"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.swift"}},patterns:[{include:"#expressions"}]},{include:"#literals-regular-expression-literal"}]},"literals-boolean":{match:"\\b(true|false)\\b",name:"constant.language.boolean.swift"},"literals-numeric":{patterns:[{comment:"0.1, -4_2.5, 6.022e23, 10E-5",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])",name:"constant.numeric.float.decimal.swift"},{comment:"-0x1.ap2_3, 0x31p-4",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])",name:"constant.numeric.float.hexadecimal.swift"},{comment:"0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])",name:"invalid.illegal.numeric.float.invalid-exponent.swift"},{comment:"0x1.5w (note that 0x1.f may be a valid expression)",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*",name:"invalid.illegal.numeric.float.missing-exponent.swift"},{comment:"-.5, .2f (note that 1.-.5 may be a valid expression)",match:"(?<=\\s|^)\\-?\\.[0-9][\\w.]*",name:"invalid.illegal.numeric.float.missing-leading-zero.swift"},{comment:"0b_0_1, 0x_1p+3q",match:"(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+",name:"invalid.illegal.numeric.leading-underscore.swift"},{comment:"tuple positional member: not really a numeric literal, but not invalid",match:"(?<=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"},{comment:"0b010, 0b1_0",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])",name:"constant.numeric.integer.binary.swift"},{comment:"0o1, 0o7_3",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])",name:"constant.numeric.integer.octal.swift"},{comment:"02, 3_456",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])",name:"constant.numeric.integer.decimal.swift"},{comment:"0x4, 0xF_7",match:"(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])",name:"constant.numeric.integer.hexadecimal.swift"},{match:"(\\B\\-|\\b)[0-9][\\w.]*",name:"invalid.illegal.numeric.other.swift"}]},"literals-regular-expression-literal":{comment:"SE-0354 & SE-0355",patterns:[{begin:"(#+)/\\n",end:"/\\1",name:"string.regexp.block.swift",patterns:[{include:"#literals-regular-expression-literal-regex-guts"},{include:"#literals-regular-expression-literal-line-comment"}]},{captures:{0:{patterns:[{include:"#literals-regular-expression-literal-regex-guts"}]},1:{name:"punctuation.definition.string.begin.regexp.swift"},12:{name:"punctuation.definition.string.end.regexp.swift"},13:{name:"invalid.illegal.returns-not-allowed.regexp"}},comment:`Single-line regular expression literals must be matched all in one go + in order to avoid ambiguities with operators, and to adhere to certain + parsing rules in SE-0354/SE-0355, such as: + - A regex literal will not be parsed if it contains an unbalanced ). + - A regex may end with a space only if it began with an escaped space`,match:`(?x) +(((\\#+)?)/) +(?(3)|(?!/)) +(?(3)|(?!\\s)) +(\\\\\\s)? +(?<guts> +(?> +(?: +\\\\Q +(?:(?!\\\\E)(?!/\\2).)*+ +(?:\\\\E + +| (?(3)|(?<!\\s))(?=/\\2) +) +| \\\\. +| \\(\\?\\#[^)]*\\) +| \\(\\? + +\\{(?<g1>\\{)?+(?<g2>\\{)?+(?<g3>\\{)?+(?<g4>\\{)?+(?<g5>\\{)?+ +.+? +\\}(?(<g1>)\\})(?(<g2>)\\})(?(<g3>)\\})(?(<g4>)\\})(?(<g5>)\\}) +(?:\\[(?!\\d)\\w+\\])? +[X<>]? +\\) +| (?<class>\\[ (?:\\\\. | [^\\[\\]] | \\g<class>)+ \\]) +| \\(\\g<guts>?+\\) +| (?:(?!/\\2)[^()\\[\\\\])+ +)+ +) +)?+ +# may end with a space only if it is an extended literal or contains only a single escaped space +(?(3)|(?(5)(?<!\\s))) +(/\\2) +| \\#+/.+(\\n)`,name:"string.regexp.line.swift"}]},"literals-regular-expression-literal-backreference-or-subpattern":{comment:"These patterns are separated to work around issues like https://github.com/microsoft/vscode-textmate/issues/164",patterns:[{captures:{1:{name:"constant.character.escape.backslash.regexp"},2:{name:"variable.other.group-name.regexp"},3:{name:"keyword.operator.recursion-level.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"},5:{name:"constant.numeric.integer.decimal.regexp"},6:{name:"keyword.operator.recursion-level.regexp"},7:{name:"constant.numeric.integer.decimal.regexp"},8:{name:"constant.character.escape.backslash.regexp"}},comment:"'\\g{' NamedOrNumberRef '}'",match:"(?x)(\\\\g\\{) (?: ((?!\\d)\\w+) (?:([+-])(\\d+))? | ([+-]?\\d+) (?:([+-])(\\d+))? ) (\\})"},{captures:{1:{name:"constant.character.escape.backslash.regexp"},2:{name:"constant.numeric.integer.decimal.regexp"},3:{name:"keyword.operator.recursion-level.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"}},comment:"'\\g' NumberRef",match:"(?x)(\\\\g) ([+-]?\\d+) (?:([+-])(\\d+))?"},{captures:{1:{name:"constant.character.escape.backslash.regexp"},3:{name:"variable.other.group-name.regexp"},4:{name:"keyword.operator.recursion-level.regexp"},5:{name:"constant.numeric.integer.decimal.regexp"},6:{name:"constant.numeric.integer.decimal.regexp"},7:{name:"keyword.operator.recursion-level.regexp"},8:{name:"constant.numeric.integer.decimal.regexp"},9:{name:"constant.character.escape.backslash.regexp"}},comment:`'\\k<' NamedOrNumberRef '>' + "\\k'" NamedOrNumberRef "'" + '\\g<' NamedOrNumberRef '>' + "\\g'" NamedOrNumberRef "'"`,match:"(?x)(\\\\[gk](<)|\\\\[gk]') (?: ((?!\\d)\\w+) (?:([+-])(\\d+))? | ([+-]?\\d+) (?:([+-])(\\d+))? ) ((?(2)>|'))"},{captures:{1:{name:"constant.character.escape.backslash.regexp"},2:{name:"variable.other.group-name.regexp"},3:{name:"keyword.operator.recursion-level.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"},5:{name:"constant.character.escape.backslash.regexp"}},comment:"'\\k{' NamedRef '}'",match:"(?x)(\\\\k\\{) ((?!\\d)\\w+) (?:([+-])(\\d+))? (\\})"},{match:"\\\\[1-9][0-9]+",name:"keyword.other.back-reference.regexp"},{captures:{1:{name:"keyword.other.back-reference.regexp"},2:{name:"variable.other.group-name.regexp"},3:{name:"keyword.operator.recursion-level.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"},5:{name:"keyword.other.back-reference.regexp"}},comment:"'(?P=' NamedRef ')'",match:"(?x)(\\(\\?(?:P[=>]|&)) ((?!\\d)\\w+) (?:([+-])(\\d+))? (\\))"},{match:"\\(\\?R\\)",name:"keyword.other.back-reference.regexp"},{captures:{1:{name:"keyword.other.back-reference.regexp"},2:{name:"constant.numeric.integer.decimal.regexp"},3:{name:"keyword.operator.recursion-level.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"},5:{name:"keyword.other.back-reference.regexp"}},comment:"'(?' NumberRef ')'",match:"(?x)(\\(\\?) ([+-]?\\d+) (?:([+-])(\\d+))? (\\))"}]},"literals-regular-expression-literal-backtracking-directive-or-global-matching-option":{captures:{1:{name:"keyword.control.directive.regexp"},2:{name:"keyword.control.directive.regexp"},3:{name:"keyword.control.directive.regexp"},4:{name:"variable.language.tag.regexp"},5:{name:"keyword.control.directive.regexp"},6:{name:"keyword.operator.assignment.regexp"},7:{name:"constant.numeric.integer.decimal.regexp"},8:{name:"keyword.control.directive.regexp"},9:{name:"keyword.control.directive.regexp"}},match:`(?x) +(\\(\\*) +(?: +(ACCEPT|FAIL|F|MARK(?=:)|(?=:)|COMMIT|PRUNE|SKIP|THEN) +(?:(:)([^)]+))? +| (?:(LIMIT_(?:DEPTH|HEAP|MATCH))(=)(\\d+)) +| ( +CRLF | CR | ANYCRLF | ANY | LF | NUL +| BSR_ANYCRLF | BSR_UNICODE +| NOTEMPTY_ATSTART | NOTEMPTY +| NO_AUTO_POSSESS | NO_DOTSTAR_ANCHOR +| NO_JIT | NO_START_OPT | UTF | UCP +) +) +(\\))`},"literals-regular-expression-literal-callout":{captures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"keyword.control.callout.regexp"},3:{name:"constant.numeric.integer.decimal.regexp"},4:{name:"entity.name.function.callout.regexp"},5:{name:"entity.name.function.callout.regexp"},6:{name:"entity.name.function.callout.regexp"},7:{name:"entity.name.function.callout.regexp"},8:{name:"entity.name.function.callout.regexp"},9:{name:"entity.name.function.callout.regexp"},10:{name:"entity.name.function.callout.regexp"},11:{name:"entity.name.function.callout.regexp"},12:{name:"punctuation.definition.group.regexp"},13:{name:"punctuation.definition.group.regexp"},14:{name:"keyword.control.callout.regexp"},15:{name:"entity.name.function.callout.regexp"},16:{name:"variable.language.tag-name.regexp"},17:{name:"punctuation.definition.group.regexp"},18:{name:"punctuation.definition.group.regexp"},19:{name:"keyword.control.callout.regexp"},26:{name:"variable.language.tag-name.regexp"},27:{name:"keyword.control.callout.regexp"},28:{name:"punctuation.definition.group.regexp"}},match:`(?x) +# PCRECallout +(\\()(?<keyw>\\?C) +(?: +(?<num>\\d+) +| \`(?<name>(?:[^\`]|\`\`)*)\` +| '(?<name>(?:[^']|'')*)' +| "(?<name>(?:[^"]|"")*)" +| \\^(?<name>(?:[^\\^]|\\^\\^)*)\\^ +| %(?<name>(?:[^%]|%%)*)% +| \\#(?<name>(?:[^#]|\\#\\#)*)\\# +| \\$(?<name>(?:[^$]|\\$\\$)*)\\$ +| \\{(?<name>(?:[^}]|\\}\\})*)\\} +)? +(\\)) +# NamedCallout +| (\\()(?<keyw>\\*) +(?<name>(?!\\d)\\w+) +(?:\\[(?<tag>(?!\\d)\\w+)\\])? +(?:\\{ [^,}]+ (?:,[^,}]+)* \\})? +(\\)) +# InterpolatedCallout +| (\\()(?<keyw>\\?) + +(\\{(?<g1>\\{)?+(?<g2>\\{)?+(?<g3>\\{)?+(?<g4>\\{)?+(?<g5>\\{)?+) .+? \\}(?(<g1>)\\})(?(<g2>)\\})(?(<g3>)\\})(?(<g4>)\\})(?(<g5>)\\}) +(?:\\[(?<tag>(?!\\d)\\w+)\\])? +(?<keyw>[X<>]?) +(\\))`,name:"meta.callout.regexp"},"literals-regular-expression-literal-character-properties":{captures:{1:{name:"support.variable.character-property.regexp"},2:{name:"punctuation.definition.character-class.regexp"},3:{name:"support.variable.character-property.regexp"},4:{name:"punctuation.definition.character-class.regexp"}},match:`(?x) +\\\\[pP]\\{ ([\\s\\w-]+(?:=[\\s\\w-]+)?) \\} +| (\\[:) ([\\s\\w-]+(?:=[\\s\\w-]+)?) (:\\])`,name:"constant.other.character-class.set.regexp"},"literals-regular-expression-literal-custom-char-class":{patterns:[{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{include:"#literals-regular-expression-literal-custom-char-class-members"}]}]},"literals-regular-expression-literal-custom-char-class-members":{comment:"TODO: should also include atoms?",patterns:[{comment:"\\b inside a character class represents a backspace",match:"\\\\b",name:"constant.character.escape.backslash.regexp"},{include:"#literals-regular-expression-literal-custom-char-class"},{include:"#literals-regular-expression-literal-quote"},{include:"#literals-regular-expression-literal-set-operators"},{include:"#literals-regular-expression-literal-unicode-scalars"},{include:"#literals-regular-expression-literal-character-properties"}]},"literals-regular-expression-literal-group-option-toggle":{comment:'A matching option sequence may be part of an "isolated group" which has an implicit scope that wraps the remaining elements of the current group',match:`(?x) +\\(\\? +(?: +\\^(?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* +| (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})+ +| (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* - (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* +) +\\)`,name:"keyword.other.option-toggle.regexp"},"literals-regular-expression-literal-group-or-conditional":{patterns:[{begin:"(\\()(\\?~)",beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"keyword.control.conditional.absent.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.absent.regexp",patterns:[{include:"#literals-regular-expression-literal-regex-guts"}]},{begin:`(?x) +# KnownConditionalStart +(\\() (?<cond>\\?\\() +(?: +(?<NumberRef> (?<num>[+-]?\\d+)(?:(?<op>[+-])(?<num>\\d+))? ) +| (?<cond>R) \\g<NumberRef>? +| (?<cond>R&) (?<NamedRef> (?<name>(?!\\d)\\w+) (?:(?<op>[+-])(?<num>\\d+))? ) +| (?<cond><) (?:\\g<NamedRef>|\\g<NumberRef>) (?<cond>>) +| (?<cond>') (?:\\g<NamedRef>|\\g<NumberRef>) (?<cond>') +| (?<cond>DEFINE) +| (?<cond>VERSION)(?<compar>>?=)(?<num>\\d+\\.\\d+) +) +(?<cond>\\)) +| (\\()(?<cond>\\?)(?=\\()`,beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"keyword.control.conditional.regexp"},4:{name:"constant.numeric.integer.decimal.regexp"},5:{name:"keyword.operator.recursion-level.regexp"},6:{name:"constant.numeric.integer.decimal.regexp"},7:{name:"keyword.control.conditional.regexp"},8:{name:"keyword.control.conditional.regexp"},10:{name:"variable.other.group-name.regexp"},11:{name:"keyword.operator.recursion-level.regexp"},12:{name:"constant.numeric.integer.decimal.regexp"},13:{name:"keyword.control.conditional.regexp"},14:{name:"keyword.control.conditional.regexp"},15:{name:"keyword.control.conditional.regexp"},16:{name:"keyword.control.conditional.regexp"},17:{name:"keyword.control.conditional.regexp"},18:{name:"keyword.control.conditional.regexp"},19:{name:"keyword.operator.comparison.regexp"},20:{name:"constant.numeric.integer.decimal.regexp"},21:{name:"keyword.control.conditional.regexp"},22:{name:"punctuation.definition.group.regexp"},23:{name:"keyword.control.conditional.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.conditional.regexp",patterns:[{include:"#literals-regular-expression-literal-regex-guts"}]},{begin:`(?x) +(\\() +( + +(\\?) +(?: +([:|>=!*] | <[=!*]) + +| P?< (?:((?!\\d)\\w+) (-))? ((?!\\d)\\w+) > +| ' (?:((?!\\d)\\w+) (-))? ((?!\\d)\\w+) ' + +| (?: +\\^(?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* +| (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})+ +| (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* - (?:[iJmnsUxwDPSW]|xx|y\\{[gw]\\})* +): +) + +| \\*( +atomic +|pla|positive_lookahead +|nla|negative_lookahead +|plb|positive_lookbehind +|nlb|negative_lookbehind +|napla|non_atomic_positive_lookahead +|naplb|non_atomic_positive_lookbehind +|sr|script_run +|asr|atomic_script_run +): +)?+`,beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"keyword.other.group-options.regexp"},3:{name:"punctuation.definition.group.regexp"},4:{name:"punctuation.definition.group.regexp"},5:{name:"variable.other.group-name.regexp"},6:{name:"keyword.operator.balancing-group.regexp"},7:{name:"variable.other.group-name.regexp"},8:{name:"variable.other.group-name.regexp"},9:{name:"keyword.operator.balancing-group.regexp"},10:{name:"variable.other.group-name.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#literals-regular-expression-literal-regex-guts"}]}]},"literals-regular-expression-literal-line-comment":{captures:{1:{name:"punctuation.definition.comment.regexp"}},match:"(\\#).*$",name:"comment.line.regexp"},"literals-regular-expression-literal-quote":{begin:"\\\\Q",beginCaptures:{0:{name:"constant.character.escape.backslash.regexp"}},end:"\\\\E|(\\n)",endCaptures:{0:{name:"constant.character.escape.backslash.regexp"},1:{name:"invalid.illegal.returns-not-allowed.regexp"}},name:"string.quoted.other.regexp.swift"},"literals-regular-expression-literal-regex-guts":{patterns:[{include:"#literals-regular-expression-literal-quote"},{begin:"\\(\\?\\#",beginCaptures:{0:{name:"punctuation.definition.comment.begin.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.comment.end.regexp"}},name:"comment.block.regexp"},{begin:"<\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.regexp"}},end:"\\}>",endCaptures:{0:{name:"punctuation.section.embedded.end.regexp"}},name:"meta.embedded.expression.regexp"},{include:"#literals-regular-expression-literal-unicode-scalars"},{include:"#literals-regular-expression-literal-character-properties"},{match:"[$^]|\\\\[AbBGyYzZ]|\\\\K",name:"keyword.control.anchor.regexp"},{include:"#literals-regular-expression-literal-backtracking-directive-or-global-matching-option"},{include:"#literals-regular-expression-literal-callout"},{include:"#literals-regular-expression-literal-backreference-or-subpattern"},{match:"\\.|\\\\[CdDhHNORsSvVwWX]",name:"constant.character.character-class.regexp"},{match:"\\\\c.",name:"constant.character.entity.control-character.regexp"},{match:"\\\\[^c]",name:"constant.character.escape.backslash.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{match:"[*+?]",name:"keyword.operator.quantifier.regexp"},{match:"\\{\\s*\\d+\\s*(?:,\\s*\\d*\\s*)?\\}|\\{\\s*,\\s*\\d+\\s*\\}",name:"keyword.operator.quantifier.regexp"},{include:"#literals-regular-expression-literal-custom-char-class"},{include:"#literals-regular-expression-literal-group-option-toggle"},{include:"#literals-regular-expression-literal-group-or-conditional"}]},"literals-regular-expression-literal-set-operators":{patterns:[{match:"&&",name:"keyword.operator.intersection.regexp.swift"},{match:"--",name:"keyword.operator.subtraction.regexp.swift"},{match:"\\~\\~",name:"keyword.operator.symmetric-difference.regexp.swift"}]},"literals-regular-expression-literal-unicode-scalars":{match:`(?x) +\\\\u\\{\\s*(?:[0-9a-fA-F]+\\s*)+\\} +| \\\\u[0-9a-fA-F]{4} +| \\\\x\\{[0-9a-fA-F]+\\} +| \\\\x[0-9a-fA-F]{0,2} +| \\\\U[0-9a-fA-F]{8} +| \\\\o\\{[0-7]+\\} +| \\\\0[0-7]{0,3} +| \\\\N\\{(?:U\\+[0-9a-fA-F]{1,8} | [\\s\\w-]+)\\}`,name:"constant.character.numeric.regexp"},"literals-string":{patterns:[{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.swift"}},comment:"SE-0168: Multi-Line String Literals",end:'"""(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.block.swift",patterns:[{match:'\\G.+(?=""")|\\G.+',name:"invalid.illegal.content-after-opening-delimiter.swift"},{match:"\\\\\\s*\\n",name:"constant.character.escape.newline.swift"},{include:"#literals-string-string-guts"},{comment:'Allow \\("""...""") to appear inside a block string',match:'\\S((?!\\\\\\().)*(?=""")',name:"invalid.illegal.content-before-closing-delimiter.swift"}]},{begin:'#"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.swift"}},end:'"""#(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.block.raw.swift",patterns:[{match:'\\G.+(?=""")|\\G.+',name:"invalid.illegal.content-after-opening-delimiter.swift"},{match:"\\\\#\\s*\\n",name:"constant.character.escape.newline.swift"},{include:"#literals-string-raw-string-guts"},{comment:'Allow \\("""...""") to appear inside a block string',match:'\\S((?!\\\\#\\().)*(?=""")',name:"invalid.illegal.content-before-closing-delimiter.swift"}]},{begin:'(##+)"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.swift"}},end:'"""\\1(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.block.raw.swift",patterns:[{match:'\\G.+(?=""")|\\G.+',name:"invalid.illegal.content-after-opening-delimiter.swift"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.swift"}},end:'"(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.single-line.swift",patterns:[{match:"\\r|\\n",name:"invalid.illegal.returns-not-allowed.swift"},{include:"#literals-string-string-guts"}]},{begin:'(##+)"',beginCaptures:{0:{name:"punctuation.definition.string.begin.raw.swift"}},comment:"SE-0168: raw string literals (more than one #, grammar limitations prevent us from supporting escapes)",end:'"\\1(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.raw.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.single-line.raw.swift",patterns:[{match:"\\r|\\n",name:"invalid.illegal.returns-not-allowed.swift"}]},{begin:'#"',beginCaptures:{0:{name:"punctuation.definition.string.begin.raw.swift"}},comment:"SE-0168: raw string literals (one #, escapes supported)",end:'"#(#*)',endCaptures:{0:{name:"punctuation.definition.string.end.raw.swift"},1:{name:"invalid.illegal.extra-closing-delimiter.swift"}},name:"string.quoted.double.single-line.raw.swift",patterns:[{match:"\\r|\\n",name:"invalid.illegal.returns-not-allowed.swift"},{include:"#literals-string-raw-string-guts"}]}]},"literals-string-raw-string-guts":{comment:"the same as #string-guts but with # in escapes",patterns:[{match:`\\\\#[0\\\\tnr"']`,name:"constant.character.escape.swift"},{match:"\\\\#u\\{[0-9a-fA-F]{1,8}\\}",name:"constant.character.escape.unicode.swift"},{begin:"\\\\#\\(",beginCaptures:{0:{name:"punctuation.section.embedded.begin.swift"}},contentName:"source.swift",end:"(\\))",endCaptures:{0:{name:"punctuation.section.embedded.end.swift"},1:{name:"source.swift"}},name:"meta.embedded.line.swift",patterns:[{include:"$self"},{begin:"\\(",comment:"Nested parens",end:"\\)"}]},{match:"\\\\#.",name:"invalid.illegal.escape-not-recognized"}]},"literals-string-string-guts":{patterns:[{match:`\\\\[0\\\\tnr"']`,name:"constant.character.escape.swift"},{match:"\\\\u\\{[0-9a-fA-F]{1,8}\\}",name:"constant.character.escape.unicode.swift"},{begin:"\\\\\\(",beginCaptures:{0:{name:"punctuation.section.embedded.begin.swift"}},contentName:"source.swift",end:"(\\))",endCaptures:{0:{name:"punctuation.section.embedded.end.swift"},1:{name:"source.swift"}},name:"meta.embedded.line.swift",patterns:[{include:"$self"},{begin:"\\(",comment:"Nested parens",end:"\\)"}]},{match:"\\\\.",name:"invalid.illegal.escape-not-recognized"}]},"member-reference":{patterns:[{captures:{1:{name:"variable.other.swift"},2:{name:"punctuation.definition.identifier.swift"},3:{name:"punctuation.definition.identifier.swift"}},match:"(?<=\\.)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"}]},operators:{patterns:[{comment:"Type casting",match:"\\b(is\\b|as([!?]\\B|\\b))",name:"keyword.operator.type-casting.swift"},{begin:`(?x) +(?= +(?<oph> +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] +) +| \\. +( +\\g<oph> +| \\. +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)`,comment:"This rule helps us speed up the matching.",end:"(?!\\G)",patterns:[{captures:{0:{patterns:[{match:"\\G(\\+\\+|\\-\\-)$",name:"keyword.operator.increment-or-decrement.swift"},{match:"\\G(\\+|\\-)$",name:"keyword.operator.arithmetic.unary.swift"},{match:"\\G!$",name:"keyword.operator.logical.not.swift"},{match:"\\G~$",name:"keyword.operator.bitwise.not.swift"},{match:".+",name:"keyword.operator.custom.prefix.swift"}]}},comment:"Prefix unary operator",match:`(?x) +\\G + +(?<=^|[\\s(\\[{,;:]) +( +(?!(//|/\\*|\\*/)) +( +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++ +(?![\\s)\\]},;:]|\\z)`},{captures:{0:{patterns:[{match:"\\G(\\+\\+|\\-\\-)$",name:"keyword.operator.increment-or-decrement.swift"},{match:"\\G!$",name:"keyword.operator.increment-or-decrement.swift"},{match:".+",name:"keyword.operator.custom.postfix.swift"}]}},comment:"Postfix unary operator",match:`(?x) +\\G + +(?<!^|[\\s(\\[{,;:]) +( +(?!(//|/\\*|\\*/)) +( +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++ +(?=[\\s)\\]},;:]|\\z)`},{captures:{0:{patterns:[{match:"\\G=$",name:"keyword.operator.assignment.swift"},{match:"\\G(\\+|\\-|\\*|/|%|<<|>>|&|\\^|\\||&&|\\|\\|)=$",name:"keyword.operator.assignment.compound.swift"},{match:"\\G(\\+|\\-|\\*|/)$",name:"keyword.operator.arithmetic.swift"},{match:"\\G&(\\+|\\-|\\*)$",name:"keyword.operator.arithmetic.overflow.swift"},{match:"\\G%$",name:"keyword.operator.arithmetic.remainder.swift"},{match:"\\G(==|!=|>|<|>=|<=|~=)$",name:"keyword.operator.comparison.swift"},{match:"\\G\\?\\?$",name:"keyword.operator.coalescing.swift"},{match:"\\G(&&|\\|\\|)$",name:"keyword.operator.logical.swift"},{match:"\\G(&|\\||\\^|<<|>>)$",name:"keyword.operator.bitwise.swift"},{match:"\\G(===|!==)$",name:"keyword.operator.bitwise.swift"},{match:"\\G\\?$",name:"keyword.operator.ternary.swift"},{match:".+",name:"keyword.operator.custom.infix.swift"}]}},comment:"Infix operator",match:`(?x) +\\G + +( +(?!(//|/\\*|\\*/)) +( +[/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++`},{captures:{0:{patterns:[{match:".+",name:"keyword.operator.custom.prefix.dot.swift"}]}},comment:"Dot prefix unary operator",match:`(?x) +\\G + +(?<=^|[\\s(\\[{,;:]) +\\. +( +(?!(//|/\\*|\\*/)) +( +\\. +| [/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++ +(?![\\s)\\]},;:]|\\z)`},{captures:{0:{patterns:[{match:".+",name:"keyword.operator.custom.postfix.dot.swift"}]}},comment:"Dot postfix unary operator",match:`(?x) +\\G + +(?<!^|[\\s(\\[{,;:]) +\\. +( +(?!(//|/\\*|\\*/)) +( +\\. +| [/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++ +(?=[\\s)\\]},;:]|\\z)`},{captures:{0:{patterns:[{match:"\\G\\.\\.[.<]$",name:"keyword.operator.range.swift"},{match:".+",name:"keyword.operator.custom.infix.dot.swift"}]}},comment:"Dot infix operator",match:`(?x) +\\G + +\\. +( +(?!(//|/\\*|\\*/)) +( +\\. +| [/=\\-+!*%<>&|^~?] +| [\\x{00A1}-\\x{00A7}] +| [\\x{00A9}\\x{00AB}] +| [\\x{00AC}\\x{00AE}] +| [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}] +| [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}] +| [\\x{2030}-\\x{203E}] +| [\\x{2041}-\\x{2053}] +| [\\x{2055}-\\x{205E}] +| [\\x{2190}-\\x{23FF}] +| [\\x{2500}-\\x{2775}] +| [\\x{2794}-\\x{2BFF}] +| [\\x{2E00}-\\x{2E7F}] +| [\\x{3001}-\\x{3003}] +| [\\x{3008}-\\x{3030}] + +| [\\x{0300}-\\x{036F}] +| [\\x{1DC0}-\\x{1DFF}] +| [\\x{20D0}-\\x{20FF}] +| [\\x{FE00}-\\x{FE0F}] +| [\\x{FE20}-\\x{FE2F}] +| [\\x{E0100}-\\x{E01EF}] +) +)++`}]},{match:":",name:"keyword.operator.ternary.swift"}]},root:{patterns:[{include:"#compiler-control"},{include:"#declarations"},{include:"#expressions"}]}},scopeName:"source.swift"});var n=[e];export{n as default}; diff --git a/assets/chunks/synthwave-84.BBDuFDsq.js b/assets/chunks/synthwave-84.BBDuFDsq.js new file mode 100644 index 000000000..310e6f967 --- /dev/null +++ b/assets/chunks/synthwave-84.BBDuFDsq.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#171520","activityBar.dropBackground":"#34294f66","activityBar.foreground":"#ffffffCC","activityBarBadge.background":"#f97e72","activityBarBadge.foreground":"#2a2139","badge.background":"#2a2139","badge.foreground":"#ffffff","breadcrumbPicker.background":"#232530","button.background":"#614D85","debugToolBar.background":"#463465","diffEditor.insertedTextBackground":"#0beb9935","diffEditor.removedTextBackground":"#fe445035","dropdown.background":"#232530","dropdown.listBackground":"#2a2139","editor.background":"#262335","editor.findMatchBackground":"#D18616bb","editor.findMatchHighlightBackground":"#D1861655","editor.findRangeHighlightBackground":"#34294f1a","editor.hoverHighlightBackground":"#463564","editor.lineHighlightBorder":"#7059AB66","editor.rangeHighlightBackground":"#49549539","editor.selectionBackground":"#ffffff20","editor.selectionHighlightBackground":"#ffffff20","editor.wordHighlightBackground":"#34294f88","editor.wordHighlightStrongBackground":"#34294f88","editorBracketMatch.background":"#34294f66","editorBracketMatch.border":"#495495","editorCodeLens.foreground":"#ffffff7c","editorCursor.background":"#241b2f","editorCursor.foreground":"#f97e72","editorError.foreground":"#fe4450","editorGroup.border":"#495495","editorGroup.dropBackground":"#4954954a","editorGroupHeader.tabsBackground":"#241b2f","editorGutter.addedBackground":"#206d4bd6","editorGutter.deletedBackground":"#fa2e46a4","editorGutter.modifiedBackground":"#b893ce8f","editorIndentGuide.activeBackground":"#A148AB80","editorIndentGuide.background":"#444251","editorLineNumber.activeForeground":"#ffffffcc","editorLineNumber.foreground":"#ffffff73","editorOverviewRuler.addedForeground":"#09f7a099","editorOverviewRuler.border":"#34294fb3","editorOverviewRuler.deletedForeground":"#fe445099","editorOverviewRuler.errorForeground":"#fe4450dd","editorOverviewRuler.findMatchForeground":"#D1861699","editorOverviewRuler.modifiedForeground":"#b893ce99","editorOverviewRuler.warningForeground":"#72f1b8cc","editorRuler.foreground":"#A148AB80","editorSuggestWidget.highlightForeground":"#f97e72","editorSuggestWidget.selectedBackground":"#ffffff36","editorWarning.foreground":"#72f1b8cc","editorWidget.background":"#171520DC","editorWidget.border":"#ffffff22","editorWidget.resizeBorder":"#ffffff44",errorForeground:"#fe4450","extensionButton.prominentBackground":"#f97e72","extensionButton.prominentHoverBackground":"#ff7edb",focusBorder:"#1f212b",foreground:"#ffffff","gitDecoration.addedResourceForeground":"#72f1b8cc","gitDecoration.deletedResourceForeground":"#fe4450","gitDecoration.ignoredResourceForeground":"#ffffff59","gitDecoration.modifiedResourceForeground":"#b893ceee","gitDecoration.untrackedResourceForeground":"#72f1b8","input.background":"#2a2139","inputOption.activeBorder":"#ff7edb99","inputValidation.errorBackground":"#fe445080","inputValidation.errorBorder":"#fe445000","list.activeSelectionBackground":"#ffffff20","list.activeSelectionForeground":"#ffffff","list.dropBackground":"#34294f66","list.errorForeground":"#fe4450E6","list.focusBackground":"#ffffff20","list.focusForeground":"#ffffff","list.highlightForeground":"#f97e72","list.hoverBackground":"#37294d99","list.hoverForeground":"#ffffff","list.inactiveFocusBackground":"#2a213999","list.inactiveSelectionBackground":"#ffffff20","list.inactiveSelectionForeground":"#ffffff","list.warningForeground":"#72f1b8bb","menu.background":"#463465","minimapGutter.addedBackground":"#09f7a099","minimapGutter.deletedBackground":"#fe4450","minimapGutter.modifiedBackground":"#b893ce","panelTitle.activeBorder":"#f97e72","peekView.border":"#495495","peekViewEditor.background":"#232530","peekViewEditor.matchHighlightBackground":"#D18616bb","peekViewResult.background":"#232530","peekViewResult.matchHighlightBackground":"#D1861655","peekViewResult.selectionBackground":"#2a213980","peekViewTitle.background":"#232530","pickerGroup.foreground":"#f97e72ea","progressBar.background":"#f97e72","scrollbar.shadow":"#2a2139","scrollbarSlider.activeBackground":"#9d8bca20","scrollbarSlider.background":"#9d8bca30","scrollbarSlider.hoverBackground":"#9d8bca50","selection.background":"#ffffff20","sideBar.background":"#241b2f","sideBar.dropBackground":"#34294f4c","sideBar.foreground":"#ffffff99","sideBarSectionHeader.background":"#241b2f","sideBarSectionHeader.foreground":"#ffffffca","statusBar.background":"#241b2f","statusBar.debuggingBackground":"#f97e72","statusBar.debuggingForeground":"#08080f","statusBar.foreground":"#ffffff80","statusBar.noFolderBackground":"#241b2f","statusBarItem.prominentBackground":"#2a2139","statusBarItem.prominentHoverBackground":"#34294f","tab.activeBorder":"#880088","tab.border":"#241b2f00","tab.inactiveBackground":"#262335","terminal.ansiBlue":"#03edf9","terminal.ansiBrightBlue":"#03edf9","terminal.ansiBrightCyan":"#03edf9","terminal.ansiBrightGreen":"#72f1b8","terminal.ansiBrightMagenta":"#ff7edb","terminal.ansiBrightRed":"#fe4450","terminal.ansiBrightYellow":"#fede5d","terminal.ansiCyan":"#03edf9","terminal.ansiGreen":"#72f1b8","terminal.ansiMagenta":"#ff7edb","terminal.ansiRed":"#fe4450","terminal.ansiYellow":"#f3e70f","terminal.foreground":"#ffffff","terminal.selectionBackground":"#ffffff20","terminalCursor.background":"#ffffff","terminalCursor.foreground":"#03edf9","textLink.activeForeground":"#ff7edb","textLink.foreground":"#f97e72","titleBar.activeBackground":"#241b2f","titleBar.inactiveBackground":"#241b2f","walkThrough.embeddedEditorBackground":"#232530","widget.shadow":"#2a2139"},displayName:"Synthwave '84",name:"synthwave-84",semanticHighlighting:!0,tokenColors:[{scope:["comment","string.quoted.docstring.multi.python","string.quoted.docstring.multi.python punctuation.definition.string.begin.python","string.quoted.docstring.multi.python punctuation.definition.string.end.python"],settings:{fontStyle:"italic",foreground:"#848bbd"}},{scope:["string.quoted","string.template","punctuation.definition.string"],settings:{foreground:"#ff8b39"}},{scope:"string.template meta.embedded.line",settings:{foreground:"#b6b1b1"}},{scope:["variable","entity.name.variable"],settings:{foreground:"#ff7edb"}},{scope:"variable.language",settings:{fontStyle:"bold",foreground:"#fe4450"}},{scope:"variable.parameter",settings:{fontStyle:"italic"}},{scope:["storage.type","storage.modifier"],settings:{foreground:"#fede5d"}},{scope:"constant",settings:{foreground:"#f97e72"}},{scope:"string.regexp",settings:{foreground:"#f97e72"}},{scope:"constant.numeric",settings:{foreground:"#f97e72"}},{scope:"constant.language",settings:{foreground:"#f97e72"}},{scope:"constant.character.escape",settings:{foreground:"#36f9f6"}},{scope:"entity.name",settings:{foreground:"#fe4450"}},{scope:"entity.name.tag",settings:{foreground:"#72f1b8"}},{scope:["punctuation.definition.tag"],settings:{foreground:"#36f9f6"}},{scope:"entity.other.attribute-name",settings:{foreground:"#fede5d"}},{scope:"entity.other.attribute-name.html",settings:{fontStyle:"italic",foreground:"#fede5d"}},{scope:["entity.name.type","meta.attribute.class.html"],settings:{foreground:"#fe4450"}},{scope:"entity.other.inherited-class",settings:{foreground:"#D50"}},{scope:["entity.name.function","variable.function"],settings:{foreground:"#36f9f6"}},{scope:["keyword.control.export.js","keyword.control.import.js"],settings:{foreground:"#72f1b8"}},{scope:["constant.numeric.decimal.js"],settings:{foreground:"#2EE2FA"}},{scope:"keyword",settings:{foreground:"#fede5d"}},{scope:"keyword.control",settings:{foreground:"#fede5d"}},{scope:"keyword.operator",settings:{foreground:"#fede5d"}},{scope:["keyword.operator.new","keyword.operator.expression","keyword.operator.logical"],settings:{foreground:"#fede5d"}},{scope:"keyword.other.unit",settings:{foreground:"#f97e72"}},{scope:"support",settings:{foreground:"#fe4450"}},{scope:"support.function",settings:{foreground:"#36f9f6"}},{scope:"support.variable",settings:{foreground:"#ff7edb"}},{scope:["meta.object-literal.key","support.type.property-name"],settings:{foreground:"#ff7edb"}},{scope:"punctuation.separator.key-value",settings:{foreground:"#b6b1b1"}},{scope:"punctuation.section.embedded",settings:{foreground:"#fede5d"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end"],settings:{foreground:"#72f1b8"}},{scope:["support.type.property-name.css","support.type.property-name.json"],settings:{foreground:"#72f1b8"}},{scope:"switch-block.expr.js",settings:{foreground:"#72f1b8"}},{scope:"variable.other.constant.property.js, variable.other.property.js",settings:{foreground:"#2ee2fa"}},{scope:"constant.other.color",settings:{foreground:"#f97e72"}},{scope:"support.constant.font-name",settings:{foreground:"#f97e72"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#36f9f6"}},{scope:["entity.other.attribute-name.pseudo-element","entity.other.attribute-name.pseudo-class"],settings:{foreground:"#D50"}},{scope:"support.function.misc.css",settings:{foreground:"#fe4450"}},{scope:["markup.heading","entity.name.section"],settings:{foreground:"#ff7edb"}},{scope:["text.html","keyword.operator.assignment"],settings:{foreground:"#ffffffee"}},{scope:"markup.quote",settings:{fontStyle:"italic",foreground:"#b6b1b1cc"}},{scope:"beginning.punctuation.definition.list",settings:{foreground:"#ff7edb"}},{scope:"markup.underline.link",settings:{foreground:"#D50"}},{scope:"string.other.link.description",settings:{foreground:"#f97e72"}},{scope:"meta.function-call.generic.python",settings:{foreground:"#36f9f6"}},{scope:"variable.parameter.function-call.python",settings:{foreground:"#72f1b8"}},{scope:"storage.type.cs",settings:{foreground:"#fe4450"}},{scope:"entity.name.variable.local.cs",settings:{foreground:"#ff7edb"}},{scope:["entity.name.variable.field.cs","entity.name.variable.property.cs"],settings:{foreground:"#ff7edb"}},{scope:"constant.other.placeholder.c",settings:{fontStyle:"italic",foreground:"#72f1b8"}},{scope:["keyword.control.directive.include.c","keyword.control.directive.define.c"],settings:{foreground:"#72f1b8"}},{scope:"storage.modifier.c",settings:{foreground:"#fe4450"}},{scope:"source.cpp keyword.operator",settings:{foreground:"#fede5d"}},{scope:"constant.other.placeholder.cpp",settings:{fontStyle:"italic",foreground:"#72f1b8"}},{scope:["keyword.control.directive.include.cpp","keyword.control.directive.define.cpp"],settings:{foreground:"#72f1b8"}},{scope:"storage.modifier.specifier.const.cpp",settings:{foreground:"#fe4450"}},{scope:["source.elixir support.type.elixir","source.elixir meta.module.elixir entity.name.class.elixir"],settings:{foreground:"#36f9f6"}},{scope:"source.elixir entity.name.function",settings:{foreground:"#72f1b8"}},{scope:["source.elixir constant.other.symbol.elixir","source.elixir constant.other.keywords.elixir"],settings:{foreground:"#36f9f6"}},{scope:"source.elixir punctuation.definition.string",settings:{foreground:"#72f1b8"}},{scope:["source.elixir variable.other.readwrite.module.elixir","source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"],settings:{foreground:"#72f1b8"}},{scope:"source.elixir .punctuation.binary.elixir",settings:{fontStyle:"italic",foreground:"#ff7edb"}},{scope:["entity.global.clojure"],settings:{fontStyle:"bold",foreground:"#36f9f6"}},{scope:["storage.control.clojure"],settings:{fontStyle:"italic",foreground:"#36f9f6"}},{scope:["meta.metadata.simple.clojure","meta.metadata.map.clojure"],settings:{fontStyle:"italic",foreground:"#fe4450"}},{scope:["meta.quoted-expression.clojure"],settings:{fontStyle:"italic"}},{scope:["meta.symbol.clojure"],settings:{foreground:"#ff7edbff"}},{scope:"source.go",settings:{foreground:"#ff7edbff"}},{scope:"source.go meta.function-call.go",settings:{foreground:"#36f9f6"}},{scope:["source.go keyword.package.go","source.go keyword.import.go","source.go keyword.function.go","source.go keyword.type.go","source.go keyword.const.go","source.go keyword.var.go","source.go keyword.map.go","source.go keyword.channel.go","source.go keyword.control.go"],settings:{foreground:"#fede5d"}},{scope:["source.go storage.type","source.go keyword.struct.go","source.go keyword.interface.go"],settings:{foreground:"#72f1b8"}},{scope:["source.go constant.language.go","source.go constant.other.placeholder.go","source.go variable"],settings:{foreground:"#2EE2FA"}},{scope:["markup.underline.link.markdown","markup.inline.raw.string.markdown"],settings:{fontStyle:"italic",foreground:"#72f1b8"}},{scope:["string.other.link.title.markdown"],settings:{foreground:"#fede5d"}},{scope:["markup.heading.markdown","entity.name.section.markdown"],settings:{fontStyle:"bold",foreground:"#ff7edb"}},{scope:["markup.italic.markdown"],settings:{fontStyle:"italic",foreground:"#2EE2FA"}},{scope:["markup.bold.markdown"],settings:{fontStyle:"bold",foreground:"#2EE2FA"}},{scope:["punctuation.definition.quote.begin.markdown","markup.quote.markdown"],settings:{foreground:"#72f1b8"}},{scope:["source.dart","source.python","source.scala"],settings:{foreground:"#ff7edbff"}},{scope:["string.interpolated.single.dart"],settings:{foreground:"#f97e72"}},{scope:["variable.parameter.dart"],settings:{foreground:"#72f1b8"}},{scope:["constant.numeric.dart"],settings:{foreground:"#2EE2FA"}},{scope:["variable.parameter.scala"],settings:{foreground:"#2EE2FA"}},{scope:["meta.template.expression.scala"],settings:{foreground:"#72f1b8"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/system-verilog.BscxmKrE.js b/assets/chunks/system-verilog.BscxmKrE.js new file mode 100644 index 000000000..a47748267 --- /dev/null +++ b/assets/chunks/system-verilog.BscxmKrE.js @@ -0,0 +1,8 @@ +const e=Object.freeze({displayName:"SystemVerilog",fileTypes:["v","vh","sv","svh"],name:"system-verilog",patterns:[{include:"#comments"},{include:"#strings"},{include:"#typedef-enum-struct-union"},{include:"#typedef"},{include:"#functions"},{include:"#keywords"},{include:"#tables"},{include:"#function-task"},{include:"#module-declaration"},{include:"#class-declaration"},{include:"#enum-struct-union"},{include:"#sequence"},{include:"#all-types"},{include:"#module-parameters"},{include:"#module-no-parameters"},{include:"#port-net-parameter"},{include:"#system-tf"},{include:"#assertion"},{include:"#bind-directive"},{include:"#cast-operator"},{include:"#storage-scope"},{include:"#attributes"},{include:"#imports"},{include:"#operators"},{include:"#constants"},{include:"#identifiers"},{include:"#selects"}],repository:{"all-types":{patterns:[{include:"#built-ins"},{include:"#modifiers"}]},assertion:{captures:{1:{name:"entity.name.goto-label.php"},2:{name:"keyword.operator.systemverilog"},3:{name:"keyword.sva.systemverilog"}},match:"\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*(:)[ \\t\\r\\n]*(assert|assume|cover|restrict)\\b"},attributes:{begin:"(?<!@[ \\t\\r\\n]?)\\(\\*",beginCaptures:{0:{name:"punctuation.attribute.rounds.begin"}},end:"\\*\\)",endCaptures:{0:{name:"punctuation.attribute.rounds.end"}},name:"meta.attribute.systemverilog",patterns:[{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"keyword.operator.assignment.systemverilog"}},match:"([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\r\\n]*(=)[ \\t\\r\\n]*)?"},{include:"#constants"},{include:"#strings"}]},"base-grammar":{patterns:[{include:"#all-types"},{include:"#comments"},{include:"#operators"},{include:"#constants"},{include:"#strings"},{captures:{1:{name:"storage.type.interface.systemverilog"}},match:"[ \\t\\r\\n]*\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]+[a-zA-Z_][a-zA-Z0-9_,= \\t\\n]*"},{include:"#storage-scope"}]},"bind-directive":{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.type.module.systemverilog"}},match:"[ \\t\\r\\n]*\\b(bind)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$\\.]*)\\b",name:"meta.definition.systemverilog"},"built-ins":{patterns:[{match:"[ \\t\\r\\n]*\\b(bit|logic|reg)\\b",name:"storage.type.vector.systemverilog"},{match:"[ \\t\\r\\n]*\\b(byte|shortint|int|longint|integer|time|genvar)\\b",name:"storage.type.atom.systemverilog"},{match:"[ \\t\\r\\n]*\\b(shortreal|real|realtime)\\b",name:"storage.type.notint.systemverilog"},{match:"[ \\t\\r\\n]*\\b(supply[01]|tri|triand|trior|trireg|tri[01]|uwire|wire|wand|wor)\\b",name:"storage.type.net.systemverilog"},{match:"[ \\t\\r\\n]*\\b(genvar|var|void|signed|unsigned|string|const|process)\\b",name:"storage.type.built-in.systemverilog"},{match:"[ \\t\\r\\n]*\\b(uvm_(?:root|transaction|component|monitor|driver|test|env|object|agent|sequence_base|sequence_item|sequence_state|sequencer|sequencer_base|sequence|component_registry|analysis_imp|analysis_port|analysis_export|config_db|active_passive_enum|phase|verbosity|tlm_analysis_fifo|tlm_fifo|report_server|objection|recorder|domain|reg_field|reg_block|reg|bitstream_t|radix_enum|printer|packer|comparer|scope_stack))\\b",name:"storage.type.uvm.systemverilog"}]},"cast-operator":{captures:{1:{patterns:[{include:"#built-ins"},{include:"#constants"},{match:"[a-zA-Z_][a-zA-Z0-9_$]*",name:"storage.type.user-defined.systemverilog"}]},2:{name:"keyword.operator.cast.systemverilog"}},match:"[ \\t\\r\\n]*([0-9]+|[a-zA-Z_][a-zA-Z0-9_$]*)(')(?=\\()",name:"meta.cast.systemverilog"},"class-declaration":{begin:"[ \\t\\r\\n]*\\b(virtual[ \\t\\r\\n]+)?(class)(?:[ \\t\\r\\n]+(static|automatic))?[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*)(?:[ \\t\\r\\n]+(extends|implements)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*))?",beginCaptures:{1:{name:"storage.modifier.systemverilog"},2:{name:"storage.type.class.systemverilog"},3:{name:"storage.modifier.systemverilog"},4:{name:"entity.name.type.class.systemverilog"},5:{name:"keyword.control.systemverilog"},6:{name:"entity.name.type.class.systemverilog"}},end:";",endCaptures:{0:{name:"punctuation.definition.class.end.systemverilog"}},name:"meta.class.systemverilog",patterns:[{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.type.class.systemverilog"},3:{name:"entity.name.type.class.systemverilog"}},match:"[ \\t\\r\\n]+\\b(extends|implements)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*)(?:[ \\t\\r\\n]*,[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$:]*))*"},{captures:{1:{name:"storage.type.userdefined.systemverilog"},2:{name:"keyword.operator.param.systemverilog"}},match:"[ \\t\\r\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*(#)\\(",name:"meta.typedef.class.systemverilog"},{include:"#port-net-parameter"},{include:"#base-grammar"},{include:"#module-binding"},{include:"#identifiers"}]},comments:{patterns:[{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.systemverilog"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.systemverilog"}},name:"comment.block.systemverilog",patterns:[{include:"#fixme-todo"}]},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.systemverilog"}},end:"$\\n?",name:"comment.line.double-slash.systemverilog",patterns:[{include:"#fixme-todo"}]}]},"compiler-directives":{name:"meta.preprocessor.systemverilog",patterns:[{captures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"string.regexp.systemverilog"}},match:"(`)(else|endif|endcelldefine|celldefine|nounconnected_drive|resetall|undefineall|end_keywords|__FILE__|__LINE__)\\b"},{captures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"string.regexp.systemverilog"},3:{name:"variable.other.constant.preprocessor.systemverilog"}},match:"(`)(ifdef|ifndef|elsif|define|undef|pragma)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b"},{captures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"string.regexp.systemverilog"}},match:"(`)(include|timescale|default_nettype|unconnected_drive|line|begin_keywords)\\b"},{begin:"(`)(protected)\\b",beginCaptures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"string.regexp.systemverilog"}},end:"(`)(endprotected)\\b",endCaptures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"string.regexp.systemverilog"}},name:"meta.crypto.systemverilog"},{captures:{1:{name:"punctuation.definition.directive.systemverilog"},2:{name:"variable.other.constant.preprocessor.systemverilog"}},match:"(`)([a-zA-Z_][a-zA-Z0-9_$]*)\\b"}]},constants:{patterns:[{match:"(\\b[1-9][0-9_]*)?'([sS]?[bB][ \\t\\r\\n]*[0-1xXzZ?][0-1_xXzZ?]*|[sS]?[oO][ \\t\\r\\n]*[0-7xXzZ?][0-7_xXzZ?]*|[sS]?[dD][ \\t\\r\\n]*[0-9xXzZ?][0-9_xXzZ?]*|[sS]?[hH][ \\t\\r\\n]*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\+|-)?[0-9]+)?(?!'|\\w)",name:"constant.numeric.systemverilog"},{match:"'[01xXzZ]",name:"constant.numeric.bit.systemverilog"},{match:"\\b(?:\\d[\\d_\\.]*(?<!\\.)(?:e|E)(?:\\+|-)?[0-9]+)\\b",name:"constant.numeric.exp.systemverilog"},{match:"\\b(?:\\d[\\d_\\.]*(?!(?:[\\d\\.]|[ \\t\\r\\n]*(?:e|E|fs|ps|ns|us|ms|s))))\\b",name:"constant.numeric.decimal.systemverilog"},{match:"\\b(?:\\d[\\d\\.]*[ \\t\\r\\n]*(?:fs|ps|ns|us|ms|s))\\b",name:"constant.numeric.time.systemverilog"},{include:"#compiler-directives"},{match:"\\b(?:this|super|null)\\b",name:"constant.language.systemverilog"},{match:"\\b([A-Z][A-Z0-9_]*)\\b",name:"constant.other.net.systemverilog"},{match:"\\b(?<!\\.)([A-Z0-9_]+)(?!\\.)\\b",name:"constant.numeric.parameter.uppercase.systemverilog"},{match:"\\.\\*",name:"keyword.operator.quantifier.regexp"}]},"enum-struct-union":{begin:"[ \\t\\r\\n]*\\b(enum|struct|union(?:[ \\t\\r\\n]+tagged)?|class|interface[ \\t\\r\\n]+class)(?:[ \\t\\r\\n]+(?!packed|signed|unsigned)([a-zA-Z_][a-zA-Z0-9_$]*)?(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?))?(?:[ \\t\\r\\n]+(packed))?(?:[ \\t\\r\\n]+(signed|unsigned))?(?=[ \\t\\r\\n]*(?:{|$))",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{patterns:[{include:"#built-ins"}]},3:{patterns:[{include:"#selects"}]},4:{name:"storage.modifier.systemverilog"},5:{name:"storage.modifier.systemverilog"}},end:"(?<=})[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*|(?<=^|[ \\t\\r\\n])\\\\[!-~]+(?=$|[ \\t\\r\\n]))(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?)[ \\t\\r\\n]*[,;]",endCaptures:{1:{patterns:[{include:"#identifiers"}]},2:{patterns:[{include:"#selects"}]}},name:"meta.enum-struct-union.systemverilog",patterns:[{include:"#keywords"},{include:"#base-grammar"},{include:"#identifiers"}]},"fixme-todo":{patterns:[{match:"(?i:fixme)",name:"invalid.broken.fixme.systemverilog"},{match:"(?i:todo)",name:"invalid.unimplemented.todo.systemverilog"}]},"function-task":{begin:"[ \\t\\r\\n]*(?:\\b(virtual)[ \\t\\r\\n]+)?(?:\\b(function|task)\\b)(?:[ \\t\\r\\n]+\\b(static|automatic)\\b)?",beginCaptures:{1:{name:"storage.modifier.systemverilog"},2:{name:"storage.type.function.systemverilog"},3:{name:"storage.modifier.systemverilog"}},end:";",endCaptures:{0:{name:"punctuation.definition.function.end.systemverilog"}},name:"meta.function.systemverilog",patterns:[{captures:{1:{name:"support.type.scope.systemverilog"},2:{name:"keyword.operator.scope.systemverilog"},3:{patterns:[{include:"#built-ins"},{match:"[a-zA-Z_][a-zA-Z0-9_$]*",name:"storage.type.user-defined.systemverilog"}]},4:{patterns:[{include:"#modifiers"}]},5:{patterns:[{include:"#selects"}]},6:{name:"entity.name.function.systemverilog"}},match:"[ \\t\\r\\n]*(?:\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::))?([a-zA-Z_][a-zA-Z0-9_$]*\\b[ \\t\\r\\n]+)?(?:\\b(signed|unsigned)\\b[ \\t\\r\\n]*)?(?:(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])[ \\t\\r\\n]*)?(?:\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b[ \\t\\r\\n]*)(?=\\(|;)"},{include:"#keywords"},{include:"#port-net-parameter"},{include:"#base-grammar"},{include:"#identifiers"}]},functions:{match:"[ \\t\\r\\n]*\\b(?!while|for|if|iff|else|case|casex|casez)([a-zA-Z_][a-zA-Z0-9_$]*)(?=[ \\t\\r\\n]*\\()",name:"entity.name.function.systemverilog"},identifiers:{patterns:[{match:"\\b[a-zA-Z_][a-zA-Z0-9_$]*\\b",name:"variable.other.identifier.systemverilog"},{match:"(?<=^|[ \\t\\r\\n])\\\\[!-~]+(?=$|[ \\t\\r\\n])",name:"string.regexp.identifier.systemverilog"}]},imports:{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"support.type.scope.systemverilog"},3:{name:"keyword.operator.scope.systemverilog"},4:{patterns:[{include:"#operators"},{include:"#identifiers"}]}},match:"[ \\t\\r\\n]*\\b(import|export)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*|\\*)[ \\t\\r\\n]*(::)[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*|\\*)[ \\t\\r\\n]*(,|;)",name:"meta.import.systemverilog"},keywords:{patterns:[{captures:{1:{name:"keyword.other.systemverilog"}},match:"[ \\t\\r\\n]*\\b(edge|negedge|posedge|cell|config|defparam|design|disable|endgenerate|endspecify|event|generate|ifnone|incdir|instance|liblist|library|noshowcancelled|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|use|vectored)\\b"},{include:"#sv-control"},{include:"#sv-control-begin"},{include:"#sv-control-end"},{include:"#sv-definition"},{include:"#sv-cover-cross"},{include:"#sv-std"},{include:"#sv-option"},{include:"#sv-local"},{include:"#sv-rand"}]},modifiers:{match:"[ \\t\\r\\n]*\\b(?:(?:un)?signed|packed|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b",name:"storage.modifier.systemverilog"},"module-binding":{begin:"\\.([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*\\(",beginCaptures:{1:{name:"support.function.port.systemverilog"}},end:"\\),?",name:"meta.port.binding.systemverilog",patterns:[{include:"#constants"},{include:"#comments"},{include:"#operators"},{include:"#strings"},{include:"#constants"},{include:"#storage-scope"},{include:"#cast-operator"},{include:"#system-tf"},{match:"\\bvirtual\\b",name:"storage.modifier.systemverilog"},{include:"#identifiers"}]},"module-declaration":{begin:"[ \\t\\r\\n]*\\b((?:macro)?module|interface|program|package|modport)[ \\t\\r\\n]+(?:(static|automatic)[ \\t\\r\\n]+)?([a-zA-Z_][a-zA-Z0-9_$]*)\\b",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{name:"storage.modifier.systemverilog"},3:{name:"entity.name.type.module.systemverilog"}},end:";",endCaptures:{0:{name:"punctuation.definition.module.end.systemverilog"}},name:"meta.module.systemverilog",patterns:[{include:"#parameters"},{include:"#port-net-parameter"},{include:"#imports"},{include:"#base-grammar"},{include:"#system-tf"},{include:"#identifiers"}]},"module-no-parameters":{begin:"[ \\t\\r\\n]*\\b(?:(bind|pullup|pulldown)[ \\t\\r\\n]+(?:([a-zA-Z_][a-zA-Z0-9_$\\.]*)[ \\t\\r\\n]+)?)?((?:\\b(?:and|nand|or|nor|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|r?tran|r?tranif[01])\\b|[a-zA-Z_][a-zA-Z0-9_$]*))[ \\t\\r\\n]+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?)[ \\t\\r\\n]*(?=\\(|$)(?!;)",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.type.module.systemverilog"},3:{name:"entity.name.type.module.systemverilog"},4:{name:"variable.other.module.systemverilog"},5:{patterns:[{include:"#selects"}]}},end:"\\)(?:[ \\t\\r\\n]*(;))?",endCaptures:{1:{name:"punctuation.module.instantiation.end.systemverilog"}},name:"meta.module.no_parameters.systemverilog",patterns:[{include:"#module-binding"},{include:"#comments"},{include:"#operators"},{include:"#constants"},{include:"#strings"},{include:"#port-net-parameter"},{match:"\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b(?=[ \\t\\r\\n]*(\\(|$))",name:"variable.other.module.systemverilog"},{include:"#identifiers"}]},"module-parameters":{begin:"[ \\t\\r\\n]*\\b(?:(bind)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$\\.]*)[ \\t\\r\\n]+)?([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]+(?!intersect|and|or|throughout|within)(?=#[^#])",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.type.module.systemverilog"},3:{name:"entity.name.type.module.systemverilog"}},end:"\\)(?:[ \\t\\r\\n]*(;))?",endCaptures:{1:{name:"punctuation.module.instantiation.end.systemverilog"}},name:"meta.module.parameters.systemverilog",patterns:[{match:"\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b(?=[ \\t\\r\\n]*\\()",name:"variable.other.module.systemverilog"},{include:"#module-binding"},{include:"#parameters"},{include:"#comments"},{include:"#operators"},{include:"#constants"},{include:"#strings"},{include:"#port-net-parameter"},{match:"\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b(?=[ \\t\\r\\n]*$)",name:"variable.other.module.systemverilog"},{include:"#identifiers"}]},operators:{patterns:[{match:"\\+=|-=|/=|\\*=|%=|&=|\\|=|\\^=|>>>=|>>=|<<<=|<<=|<=|=",name:"keyword.operator.assignment.systemverilog"},{match:"\\+\\+",name:"keyword.operator.increment.systemverilog"},{match:"--",name:"keyword.operator.decrement.systemverilog"},{match:"\\+|-|\\*\\*|\\*|/|%",name:"keyword.operator.arithmetic.systemverilog"},{match:"!|&&|\\|\\|",name:"keyword.operator.logical.systemverilog"},{match:"<<<|<<|>>>|>>",name:"keyword.operator.bitwise.shift.systemverilog"},{match:"~&|~\\||~|\\^~|~\\^|&|\\||\\^|{|'{|}|:|\\?",name:"keyword.operator.bitwise.systemverilog"},{match:"<=|<|>=|>|==\\?|!=\\?|===|!==|==|!=",name:"keyword.operator.comparison.systemverilog"},{match:"@|##|#|->|<->",name:"keyword.operator.channel.systemverilog"},{match:"\\b(?:dist|inside|with|intersect|and|or|throughout|within|first_match)\\b|:=|:/|\\|->|\\|=>|->>|\\*>|#-#|#=#|&&&",name:"keyword.operator.logical.systemverilog"}]},parameters:{begin:"[ \\t\\r\\n]*(#)[ \\t\\r\\n]*(\\()",beginCaptures:{1:{name:"keyword.operator.channel.systemverilog"},2:{name:"punctuation.section.parameters.begin"}},end:"(\\))[ \\t\\r\\n]*(?=;|\\(|[a-zA-Z_]|\\\\|$)",endCaptures:{1:{name:"punctuation.section.parameters.end"}},name:"meta.parameters.systemverilog",patterns:[{include:"#port-net-parameter"},{include:"#comments"},{include:"#constants"},{include:"#operators"},{include:"#strings"},{include:"#system-tf"},{include:"#functions"},{match:"\\bvirtual\\b",name:"storage.modifier.systemverilog"},{include:"#module-binding"}]},"port-net-parameter":{patterns:[{captures:{1:{name:"support.type.direction.systemverilog"},2:{name:"storage.type.net.systemverilog"},3:{name:"support.type.scope.systemverilog"},4:{name:"keyword.operator.scope.systemverilog"},5:{patterns:[{include:"#built-ins"},{match:"[a-zA-Z_][a-zA-Z0-9_$]*",name:"storage.type.user-defined.systemverilog"}]},6:{patterns:[{include:"#modifiers"}]},7:{patterns:[{include:"#selects"}]},8:{patterns:[{include:"#constants"},{include:"#identifiers"}]},9:{patterns:[{include:"#selects"}]}},match:",?[ \\t\\r\\n]*(?:\\b(output|input|inout|ref)\\b[ \\t\\r\\n]*)?(?:\\b(localparam|parameter|var|supply[01]|tri|triand|trior|trireg|tri[01]|uwire|wire|wand|wor)\\b[ \\t\\r\\n]*)?(?:\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::))?(?:([a-zA-Z_][a-zA-Z0-9_$]*)\\b[ \\t\\r\\n]*)?(?:\\b(signed|unsigned)\\b[ \\t\\r\\n]*)?(?:(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])[ \\t\\r\\n]*)?(?<!(?<!#)[:&|=+\\-*/%?><^!~\\(][ \\t\\r\\n]*)\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?[ \\t\\r\\n]*(?=,|;|=|\\)|/|$)",name:"meta.port-net-parameter.declaration.systemverilog"}]},selects:{begin:"\\[",beginCaptures:{0:{name:"punctuation.slice.brackets.begin"}},end:"\\]",endCaptures:{0:{name:"punctuation.slice.brackets.end"}},name:"meta.brackets.select.systemverilog",patterns:[{match:"\\$(?![a-z])",name:"constant.language.systemverilog"},{include:"#system-tf"},{include:"#constants"},{include:"#operators"},{include:"#cast-operator"},{include:"#storage-scope"},{match:"[a-zA-Z_][a-zA-Z0-9_$]*",name:"variable.other.identifier.systemverilog"}]},sequence:{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.function.systemverilog"}},match:"[ \\t\\r\\n]*\\b(sequence)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b",name:"meta.sequence.systemverilog"},"storage-scope":{captures:{1:{name:"support.type.scope.systemverilog"},2:{name:"keyword.operator.scope.systemverilog"}},match:"\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::)",name:"meta.scope.systemverilog"},strings:{patterns:[{begin:'`?"',beginCaptures:{0:{name:"punctuation.definition.string.begin.systemverilog"}},end:'"`?',endCaptures:{0:{name:"punctuation.definition.string.end.systemverilog"}},name:"string.quoted.double.systemverilog",patterns:[{match:'\\\\(?:[nt\\\\"vfa]|[0-7]{3}|x[0-9a-fA-F]{2})',name:"constant.character.escape.systemverilog"},{match:`(?x)% +(\\d+\\$)? +['\\-+0 +[,;:_]? +((-?\\d+)|\\*(-?\\d+\\$)?)? +(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? +(hh|h|ll|l|j|z|t|L)? +[xXhHdDoObBcClLvVmMpPsStTuUzZeEfFgG%]`,name:"constant.character.format.placeholder.systemverilog"},{match:"%",name:"invalid.illegal.placeholder.systemverilog"},{include:"#fixme-todo"}]},{begin:"(?<=include)[ \\t\\r\\n]*(<)",beginCaptures:{1:{name:"punctuation.definition.string.begin.systemverilog"}},end:">",endCaptures:{0:{name:"punctuation.definition.string.end.systemverilog"}},name:"string.quoted.other.lt-gt.include.systemverilog"}]},"sv-control":{captures:{1:{name:"keyword.control.systemverilog"}},match:"[ \\t\\r\\n]*\\b(initial|always|always_comb|always_ff|always_latch|final|assign|deassign|force|release|wait|forever|repeat|alias|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|clocking|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|matches|solve|before|expect|cross|ref|srandom|struct|chandle|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|wait_order|triggered|randsequence|context|pure|wildcard|new|forkjoin|unique|unique0|priority)\\b"},"sv-control-begin":{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"punctuation.definition.label.systemverilog"},3:{name:"entity.name.section.systemverilog"}},match:"[ \\t\\r\\n]*\\b(begin|fork)\\b(?:[ \\t\\r\\n]*(:)[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?",name:"meta.item.begin.systemverilog"},"sv-control-end":{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"punctuation.definition.label.systemverilog"},3:{name:"entity.name.section.systemverilog"}},match:"[ \\t\\r\\n]*\\b(end|endmodule|endinterface|endprogram|endchecker|endclass|endpackage|endconfig|endfunction|endtask|endproperty|endsequence|endgroup|endprimitive|endclocking|endgenerate|join|join_any|join_none)\\b(?:[ \\t\\r\\n]*(:)[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?",name:"meta.item.end.systemverilog"},"sv-cover-cross":{captures:{2:{name:"entity.name.type.class.systemverilog"},3:{name:"keyword.operator.other.systemverilog"},4:{name:"keyword.control.systemverilog"}},match:"(([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*(:))?[ \\t\\r\\n]*(coverpoint|cross)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)",name:"meta.definition.systemverilog"},"sv-definition":{captures:{1:{name:"keyword.control.systemverilog"},2:{name:"entity.name.type.class.systemverilog"}},match:"[ \\t\\r\\n]*\\b(primitive|package|constraint|interface|covergroup|program)[ \\t\\r\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b",name:"meta.definition.systemverilog"},"sv-local":{captures:{1:{name:"keyword.other.systemverilog"}},match:"[ \\t\\r\\n]*\\b(const|static|protected|virtual|localparam|parameter|local)\\b"},"sv-option":{captures:{1:{name:"keyword.cover.systemverilog"}},match:"[ \\t\\r\\n]*\\b(option)\\."},"sv-rand":{match:"[ \\t\\r\\n]*\\b(?:rand|randc)\\b",name:"storage.type.rand.systemverilog"},"sv-std":{match:"\\b(std)\\b::",name:"support.class.systemverilog"},"system-tf":{match:"\\$[a-zA-Z0-9_$][a-zA-Z0-9_$]*\\b",name:"support.function.systemverilog"},tables:{begin:"[ \\t\\r\\n]*\\b(table)\\b",beginCaptures:{1:{name:"keyword.table.systemverilog.begin"}},end:"[ \\t\\r\\n]*\\b(endtable)\\b",endCaptures:{1:{name:"keyword.table.systemverilog.end"}},name:"meta.table.systemverilog",patterns:[{include:"#comments"},{match:"\\b[01xXbBrRfFpPnN]\\b",name:"constant.language.systemverilog"},{match:"[-*?]",name:"constant.language.systemverilog"},{captures:{1:{name:"constant.language.systemverilog"}},match:"\\(([01xX?]{2})\\)"},{match:":",name:"punctuation.definition.label.systemverilog"},{include:"#operators"},{include:"#constants"},{include:"#strings"},{include:"#identifiers"}]},typedef:{begin:"[ \\t\\r\\n]*\\b(?:(typedef)[ \\t\\r\\n]+)(?:([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\r\\n]+\\b(signed|unsigned)\\b)?(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?))?(?=[ \\t\\r\\n]*[a-zA-Z_\\\\])",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{patterns:[{include:"#built-ins"},{match:"\\bvirtual\\b",name:"storage.modifier.systemverilog"}]},3:{patterns:[{include:"#modifiers"}]},4:{patterns:[{include:"#selects"}]}},end:";",endCaptures:{0:{name:"punctuation.definition.typedef.end.systemverilog"}},name:"meta.typedef.systemverilog",patterns:[{include:"#identifiers"},{include:"#selects"}]},"typedef-enum-struct-union":{begin:"[ \\t\\r\\n]*\\b(typedef)[ \\t\\r\\n]+(enum|struct|union(?:[ \\t\\r\\n]+tagged)?|class|interface[ \\t\\r\\n]+class)(?:[ \\t\\r\\n]+(?!packed|signed|unsigned)([a-zA-Z_][a-zA-Z0-9_$]*)?(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?))?(?:[ \\t\\r\\n]+(packed))?(?:[ \\t\\r\\n]+(signed|unsigned))?(?=[ \\t\\r\\n]*(?:{|$))",beginCaptures:{1:{name:"keyword.control.systemverilog"},2:{name:"keyword.control.systemverilog"},3:{patterns:[{include:"#built-ins"}]},4:{patterns:[{include:"#selects"}]},5:{name:"storage.modifier.systemverilog"},6:{name:"storage.modifier.systemverilog"}},end:"(?<=})[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*|(?<=^|[ \\t\\r\\n])\\\\[!-~]+(?=$|[ \\t\\r\\n]))(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?)[ \\t\\r\\n]*[,;]",endCaptures:{1:{name:"storage.type.systemverilog"},2:{patterns:[{include:"#selects"}]}},name:"meta.typedef-enum-struct-union.systemverilog",patterns:[{include:"#port-net-parameter"},{include:"#keywords"},{include:"#base-grammar"},{include:"#identifiers"}]}},scopeName:"source.systemverilog"});var t=[e];export{t as default}; diff --git a/assets/chunks/systemd.CuJfdYLG.js b/assets/chunks/systemd.CuJfdYLG.js new file mode 100644 index 000000000..3f793ad4a --- /dev/null +++ b/assets/chunks/systemd.CuJfdYLG.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Systemd Units",name:"systemd",patterns:[{include:"#comments"},{begin:"^\\s*(InaccessableDirectories|InaccessibleDirectories|ReadOnlyDirectories|ReadWriteDirectories|Capabilities|TableId|UseDomainName|IPv6AcceptRouterAdvertisements|SysVStartPriority|StartLimitInterval|RequiresOverridable|RequisiteOverridable|PropagateReloadTo|PropagateReloadFrom|OnFailureIsolate|BindTo)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"invalid.deprecated"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",patterns:[{include:"#comments"},{include:"#variables"},{include:"#quotedString"},{include:"#booleans"},{include:"#timeSpans"},{include:"#sizes"},{include:"#numbers"}]},{begin:"^\\s*(Environment)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{captures:{1:{name:"variable.parameter"},2:{name:"keyword.operator.assignment"}},match:`(?<=\\G|[\\s"'])([A-Za-z0-9\\_]+)(=)(?=[^\\s"'])`},{include:"#variables"},{include:"#booleans"},{include:"#numbers"}]},{begin:"^\\s*(OnCalendar)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#variables"},{include:"#calendarShorthands"},{include:"#numbers"}]},{begin:"^\\s*(CapabilityBoundingSet|AmbientCapabilities|AddCapability|DropCapability)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#capabilities"}]},{begin:"^\\s*(Restart)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#variables"},{include:"#restartOptions"}]},{begin:"^\\s*(Type)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#variables"},{include:"#typeOptions"}]},{begin:"^\\s*(Exec(?:Start(?:Pre|Post)?|Reload|Stop(?:Post)?))\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#executablePrefixes"},{include:"#variables"},{include:"#quotedString"},{include:"#booleans"},{include:"#numbers"}]},{begin:"^\\s*([\\w\\-\\.]+)\\s*(=)[ \\t]*",beginCaptures:{1:{name:"entity.name.tag"},2:{name:"keyword.operator.assignment"}},end:"(?<!\\\\)\\n",name:"meta.config-entry.systemd",patterns:[{include:"#comments"},{include:"#variables"},{include:"#quotedString"},{include:"#booleans"},{include:"#timeSpans"},{include:"#sizes"},{include:"#numbers"}]},{include:"#sections"}],repository:{booleans:{patterns:[{match:"\\b(?<![-\\/\\.])(true|false|on|off|yes|no)(?![-\\/\\.])\\b",name:"constant.language"}]},calendarShorthands:{patterns:[{match:"\\b(?:minute|hour|dai|month|week|quarter|semiannual)ly\\b",name:"constant.language"}]},capabilities:{patterns:[{match:"\\b(?:CAP_(?:AUDIT_CONTROL|AUDIT_READ|AUDIT_WRITE|BLOCK_SUSPEND|BPF|CHECKPOINT_RESTORE|CHOWN|DAC_OVERRIDE|DAC_READ_SEARCH|FOWNER|FSETID|IPC_LOCK|IPC_OWNER|KILL|LEASE|LINUX_IMMUTABLE|MAC_ADMIN|MAC_OVERRIDE|MKNOD|NET_ADMIN|NET_BIND_SERVICE|NET_BROADCAST|NET_RAW|PERFMON|SETFCAP|SETGID|SETPCAP|SETUID|SYS_ADMIN|SYS_BOOT|SYS_CHROOT|SYS_MODULE|SYS_NICE|SYS_PACCT|SYS_PTRACE|SYS_RAWIO|SYS_RESOURCE|SYS_TIME|SYS_TTY_CONFIG|SYSLOG|WAKE_ALARM))\\b",name:"constant.other.systemd"}]},comments:{patterns:[{match:"^\\s*[#;].*\\n",name:"comment.line.number-sign"}]},executablePrefixes:{patterns:[{match:"\\G([@\\-\\:]+(?:\\+|\\!\\!?)?|(?:\\+|\\!\\!?)[@\\-\\:]*)",name:"keyword.operator.prefix.systemd"}]},numbers:{patterns:[{match:"(?<=\\s|=)\\d+(?:\\.\\d+)?(?=[\\s:]|$)",name:"constant.numeric"}]},quotedString:{patterns:[{begin:"(?<=\\G|\\s)'",end:"['\\n]",name:"string.quoted.single",patterns:[{match:`\\\\(?:[abfnrtvs\\\\"'\\n]|x[0-9A-Fa-f]{2}|[0-8]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})`,name:"constant.character.escape"}]},{begin:'(?<=\\G|\\s)"',end:'["\\n]',name:"string.quoted.double",patterns:[{match:`\\\\(?:[abfnrtvs\\\\"'\\n]|x[0-9A-Fa-f]{2}|[0-8]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})`,name:"constant.character.escape"}]}]},restartOptions:{patterns:[{match:"\\b(no|always|on\\-(?:success|failure|abnormal|abort|watchdog))\\b",name:"constant.language"}]},sections:{patterns:[{match:"^\\s*\\[(Address|Automount|BFIFO|BareUDP|BatmanAdvanced|Bond|Bridge|BridgeFDB|BridgeMDB|BridgeVLAN|CAKE|CAN|Container|Content|ControlledDelay|Coredump|D-BUS Service|DHCP|DHCPPrefixDelegation|DHCPServer|DHCPServerStaticLease|DHCPv4|DHCPv6|DHCPv6PrefixDelegation|DeficitRoundRobinScheduler|DeficitRoundRobinSchedulerClass|Distribution|EnhancedTransmissionSelection|Exec|FairQueueing|FairQueueingControlledDelay|Files|FlowQueuePIE|FooOverUDP|GENEVE|GenericRandomEarlyDetection|HeavyHitterFilter|HierarchyTokenBucket|HierarchyTokenBucketClass|Home|IOCost|IPVLAN|IPVTAP|IPoIB|IPv6AcceptRA|IPv6AddressLabel|IPv6PREF64Prefix|IPv6Prefix|IPv6PrefixDelegation|IPv6RoutePrefix|IPv6SendRA|Image|Install|Journal|Kube|L2TP|L2TPSession|LLDP|Link|Login|MACVLAN|MACVTAP|MACsec|MACsecReceiveAssociation|MACsecReceiveChannel|MACsecTransmitAssociation|Manager|Match|Mount|Neighbor|NetDev|Network|NetworkEmulator|NextHop|OOM|Output|PFIFO|PFIFOFast|PFIFOHeadDrop|PIE|PStore|Packages|Partition|Path|Peer|Pod|QDisc|QuickFairQueueing|QuickFairQueueingClass|Remote|Resolve|Route|RoutingPolicyRule|SR-IOV|Scope|Service|Sleep|Socket|Source|StochasticFairBlue|StochasticFairnessQueueing|Swap|Tap|Target|Time|Timer|TokenBucketFilter|TrafficControlQueueingDiscipline|Transfer|TrivialLinkEqualizer|Tun|Tunnel|UKI|Unit|Upload|VLAN|VRF|VXCAN|VXLAN|Volume|WLAN|WireGuard|WireGuardPeer|Xfrm)\\]",name:"entity.name.section"},{match:"\\s*\\[[\\w-]+\\]",name:"entity.name.unknown-section"}]},sizes:{patterns:[{match:"(?<=\\s|=)\\d+(?:\\.\\d+)?[KMGT](?=[\\s:]|$)",name:"constant.numeric"},{match:"(?<==)infinity(?=[\\s:]|$)",name:"constant.numeric"}]},timeSpans:{patterns:[{match:"\\b(?:\\d+(?:[uμ]s(?:ec)?|ms(?:ec)?|s(?:ec|econds?)?|m(?:in|inutes?)?|h(?:r|ours?)?|d(?:ays?)?|w(?:eeks)?|M|months?|y(?:ears?)?)){1,}\\b",name:"constant.numeric"}]},typeOptions:{patterns:[{match:"\\b(?:simple|exec|forking|oneshot|dbus|notify(?:-reload)?|idle|unicast|local|broadcast|anycast|multicast|blackhole|unreachable|prohibit|throw|nat|xresolve|blackhole|unreachable|prohibit|ad-hoc|station|ap(?:-vlan)?|wds|monitor|mesh-point|p2p-(?:client|go|device)|ocb|nan)\\b",name:"constant.language"}]},variables:{patterns:[{captures:{1:{name:"punctuation.definition.variable.systemd"},2:{name:"variable.other"}},match:"(\\$)([A-Za-z0-9\\_]+)\\b"},{captures:{1:{name:"punctuation.definition.variable.systemd"},2:{name:"variable.other"},3:{name:"punctuation.definition.variable.systemd"}},match:"(\\$\\{)([A-Za-z0-9\\_]+)(\\})"},{match:"%%",name:"constant.other.placeholder"},{match:"%[aAbBCEfgGhHiIjJlLmMnNopPsStTuUvVwW]\\b",name:"constant.other.placeholder"}]}},scopeName:"source.systemd"});var n=[e];export{n as default}; diff --git a/assets/chunks/tasl.BxwAa5i0.js b/assets/chunks/tasl.BxwAa5i0.js new file mode 100644 index 000000000..79e75548e --- /dev/null +++ b/assets/chunks/tasl.BxwAa5i0.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Tasl",fileTypes:["tasl"],name:"tasl",patterns:[{include:"#comment"},{include:"#namespace"},{include:"#type"},{include:"#class"},{include:"#edge"}],repository:{class:{begin:"(?:^\\s*)(class)\\b",beginCaptures:{1:{name:"keyword.control.tasl.class"}},end:"$",patterns:[{include:"#key"},{include:"#export"},{include:"#expression"}]},comment:{captures:{1:{name:"punctuation.definition.comment.tasl"}},match:"(#).*$",name:"comment.line.number-sign.tasl"},component:{begin:"->",beginCaptures:{0:{name:"punctuation.separator.tasl.component"}},end:"$",patterns:[{include:"#expression"}]},coproduct:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.block.tasl.coproduct"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.block.tasl.coproduct"}},patterns:[{include:"#comment"},{include:"#term"},{include:"#option"}]},datatype:{match:"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",name:"string.regexp"},edge:{begin:"(?:^\\s*)(edge)\\b",beginCaptures:{1:{name:"keyword.control.tasl.edge"}},end:"$",patterns:[{include:"#key"},{include:"#export"},{match:"=/",name:"punctuation.separator.tasl.edge.source"},{match:"/=>",name:"punctuation.separator.tasl.edge.target"},{match:"=>",name:"punctuation.separator.tasl.edge"},{include:"#expression"}]},export:{match:"::",name:"keyword.operator.tasl.export"},expression:{patterns:[{include:"#literal"},{include:"#uri"},{include:"#product"},{include:"#coproduct"},{include:"#reference"},{include:"#optional"},{include:"#identifier"}]},identifier:{captures:{1:{name:"variable"}},match:"([a-zA-Z][a-zA-Z0-9]*)\\b"},key:{match:"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",name:"markup.bold entity.name.class"},literal:{patterns:[{include:"#datatype"}]},namespace:{captures:{1:{name:"keyword.control.tasl.namespace"},2:{patterns:[{include:"#namespaceURI"},{match:"[a-zA-Z][a-zA-Z0-9]*\\b",name:"entity.name"}]}},match:"(?:^\\s*)(namespace)\\b(.*)"},namespaceURI:{match:"[a-z]+:[a-zA-Z0-9-._~:\\/?#\\[\\]@!$&'()*+,;%=]+",name:"markup.underline.link"},option:{begin:"<-",beginCaptures:{0:{name:"punctuation.separator.tasl.option"}},end:"$",patterns:[{include:"#expression"}]},optional:{begin:"\\?",beginCaptures:{0:{name:"keyword.operator"}},end:"$",patterns:[{include:"#expression"}]},product:{begin:"{",beginCaptures:{0:{name:"punctuation.definition.block.tasl.product"}},end:"}",endCaptures:{0:{name:"punctuation.definition.block.tasl.product"}},patterns:[{include:"#comment"},{include:"#term"},{include:"#component"}]},reference:{captures:{1:{name:"markup.bold keyword.operator"},2:{patterns:[{include:"#key"}]}},match:"(\\*)\\s*(.*)"},term:{match:"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",name:"entity.other.tasl.key"},type:{begin:"(?:^\\s*)(type)\\b",beginCaptures:{1:{name:"keyword.control.tasl.type"}},end:"$",patterns:[{include:"#expression"}]},uri:{match:"<>",name:"variable.other.constant"}},scopeName:"source.tasl"});var n=[e];export{n as default}; diff --git a/assets/chunks/tcl.C_8Fx7bH.js b/assets/chunks/tcl.C_8Fx7bH.js new file mode 100644 index 000000000..3ea06589d --- /dev/null +++ b/assets/chunks/tcl.C_8Fx7bH.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Tcl",fileTypes:["tcl"],foldingStartMarker:"\\{\\s*$",foldingStopMarker:"^\\s*\\}",name:"tcl",patterns:[{begin:"(?<=^|;)\\s*((#))",beginCaptures:{1:{name:"comment.line.number-sign.tcl"},2:{name:"punctuation.definition.comment.tcl"}},contentName:"comment.line.number-sign.tcl",end:"\\n",patterns:[{match:"(\\\\\\\\|\\\\\\n)"}]},{captures:{1:{name:"keyword.control.tcl"}},match:"(?<=^|[\\[{;])\\s*(if|while|for|catch|default|return|break|continue|switch|exit|foreach|try|throw)\\b"},{captures:{1:{name:"keyword.control.tcl"}},match:"(?<=^|})\\s*(then|elseif|else)\\b"},{captures:{1:{name:"keyword.other.tcl"},2:{name:"entity.name.function.tcl"}},match:"(?<=^|{)\\s*(proc)\\s+([^\\s]+)"},{captures:{1:{name:"keyword.other.tcl"}},match:"(?<=^|[\\[{;])\\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\\b"},{begin:"(?<=^|[\\[{;])\\s*(regexp|regsub)\\b\\s*",beginCaptures:{1:{name:"keyword.other.tcl"}},comment:"special-case regexp/regsub keyword in order to handle the expression",end:"[\\n;\\]]",patterns:[{match:"\\\\(?:.|\\n)",name:"constant.character.escape.tcl"},{comment:"switch for regexp",match:"-\\w+\\s*"},{applyEndPatternLast:1,begin:"--\\s*",comment:"end of switches",end:"",patterns:[{include:"#regexp"}]},{include:"#regexp"}]},{include:"#escape"},{include:"#variable"},{include:"#operator"},{include:"#numeric"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.tcl"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.tcl"}},name:"string.quoted.double.tcl",patterns:[{include:"#escape"},{include:"#variable"},{include:"#embedded"}]}],repository:{"bare-string":{begin:'(?:^|(?<=\\s))"',comment:"matches a single quote-enclosed word without scoping",end:'"([^\\s\\]]*)',endCaptures:{1:{name:"invalid.illegal.tcl"}},patterns:[{include:"#escape"},{include:"#variable"}]},braces:{begin:"(?:^|(?<=\\s))\\{",comment:"matches a single brace-enclosed word",end:"\\}([^\\s\\]]*)",endCaptures:{1:{name:"invalid.illegal.tcl"}},patterns:[{match:"\\\\[{}\\n]",name:"constant.character.escape.tcl"},{include:"#inner-braces"}]},embedded:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.embedded.begin.tcl"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.embedded.end.tcl"}},name:"source.tcl.embedded",patterns:[{include:"source.tcl"}]},escape:{match:"\\\\(\\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\\n)",name:"constant.character.escape.tcl"},"inner-braces":{begin:"\\{",comment:"matches a nested brace in a brace-enclosed word",end:"\\}",patterns:[{match:"\\\\[{}\\n]",name:"constant.character.escape.tcl"},{include:"#inner-braces"}]},numeric:{match:"(?<![a-zA-Z])([+-]?([0-9]*[.])?[0-9]+f?)(?![\\.a-zA-Z])",name:"constant.numeric.tcl"},operator:{match:"(?<= |\\d)(-|\\+|~|&{1,2}|\\|{1,2}|<{1,2}|>{1,2}|\\*{1,2}|!|%|\\/|<=|>=|={1,2}|!=|\\^)(?= |\\d)",name:"keyword.operator.tcl"},regexp:{begin:"(?=\\S)(?![\\n;\\]])",comment:"matches a single word, named as a regexp, then swallows the rest of the command",end:"(?=[\\n;\\]])",patterns:[{begin:"(?=[^ \\t\\n;])",end:"(?=[ \\t\\n;])",name:"string.regexp.tcl",patterns:[{include:"#braces"},{include:"#bare-string"},{include:"#escape"},{include:"#variable"}]},{begin:"[ \\t]",comment:"swallow the rest of the command",end:"(?=[\\n;\\]])",patterns:[{include:"#variable"},{include:"#embedded"},{include:"#escape"},{include:"#braces"},{include:"#string"}]}]},string:{applyEndPatternLast:1,begin:'(?:^|(?<=\\s))(?=")',comment:"matches a single quote-enclosed word with scoping",end:"",name:"string.quoted.double.tcl",patterns:[{include:"#bare-string"}]},variable:{captures:{1:{name:"punctuation.definition.variable.tcl"}},match:"(\\$)((?:[a-zA-Z0-9_]|::)+(\\([^\\)]+\\))?|\\{[^\\}]*\\})",name:"support.function.tcl"}},scopeName:"source.tcl"});var t=[e];export{t as default}; diff --git a/assets/chunks/terraform.DBeuZS66.js b/assets/chunks/terraform.DBeuZS66.js new file mode 100644 index 000000000..99ddc2e85 --- /dev/null +++ b/assets/chunks/terraform.DBeuZS66.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Terraform",fileTypes:["tf","tfvars"],name:"terraform",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#block"},{include:"#expressions"}],repository:{attribute_access:{begin:"\\.(?!\\*)",beginCaptures:{0:{name:"keyword.operator.accessor.hcl"}},comment:"Matches traversal attribute access such as .attr",end:"[[:alpha:]][\\w-]*|\\d*",endCaptures:{0:{patterns:[{comment:"Attribute name",match:"(?!null|false|true)[[:alpha:]][\\w-]*",name:"variable.other.member.hcl"},{comment:"Optional attribute index",match:"\\d+",name:"constant.numeric.integer.hcl"}]}}},attribute_definition:{captures:{1:{name:"punctuation.section.parens.begin.hcl"},2:{name:"variable.other.readwrite.hcl"},3:{name:"punctuation.section.parens.end.hcl"},4:{name:"keyword.operator.assignment.hcl"}},comment:'Identifier "=" with optional parens',match:"(\\()?(\\b(?!null\\b|false\\b|true\\b)[[:alpha:]][[:alnum:]_-]*)(\\))?\\s*(\\=(?!\\=|\\>))\\s*",name:"variable.declaration.hcl"},attribute_splat:{begin:"\\.",beginCaptures:{0:{name:"keyword.operator.accessor.hcl"}},comment:"Legacy attribute-only splat",end:"\\*",endCaptures:{0:{name:"keyword.operator.splat.hcl"}}},block:{begin:'([\\w][\\-\\w]*)([\\s\\"\\-\\w]*)(\\{)',beginCaptures:{1:{patterns:[{comment:"Known block type",match:"\\bdata|check|import|locals|module|output|provider|resource|terraform|variable\\b",name:"entity.name.type.terraform"},{comment:"Unknown block type",match:"\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b",name:"entity.name.type.hcl"}]},2:{patterns:[{comment:"Block label",match:'[\\"\\-\\w]+',name:"variable.other.enummember.hcl"}]},3:{name:"punctuation.section.block.begin.hcl"}},comment:'This will match Terraform blocks like `resource "aws_instance" "web" {` or `module {`',end:"\\}",endCaptures:{0:{name:"punctuation.section.block.end.hcl"}},name:"meta.block.hcl",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#block"},{include:"#expressions"}]},block_inline_comments:{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.hcl"}},comment:"Inline comments start with the /* sequence and end with the */ sequence, and may have any characters within except the ending sequence. An inline comment is considered equivalent to a whitespace sequence",end:"\\*/",name:"comment.block.hcl"},brackets:{begin:"\\[",beginCaptures:{0:{name:"punctuation.section.brackets.begin.hcl"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.brackets.end.hcl"}},patterns:[{comment:"Splat operator",match:"\\*",name:"keyword.operator.splat.hcl"},{include:"#comma"},{include:"#comments"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{include:"#expressions"},{include:"#local_identifiers"}]},char_escapes:{comment:"Character Escapes",match:'\\\\[nrt"\\\\]|\\\\u(\\h{8}|\\h{4})',name:"constant.character.escape.hcl"},comma:{comment:"Commas - used in certain expressions",match:"\\,",name:"punctuation.separator.hcl"},comments:{patterns:[{include:"#hash_line_comments"},{include:"#double_slash_line_comments"},{include:"#block_inline_comments"}]},double_slash_line_comments:{begin:"//",captures:{0:{name:"punctuation.definition.comment.hcl"}},comment:"Line comments start with // sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",end:"$\\n?",name:"comment.line.double-slash.hcl"},expressions:{patterns:[{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#brackets"},{include:"#objects"},{include:"#attribute_access"},{include:"#attribute_splat"},{include:"#functions"},{include:"#parens"}]},for_expression_body:{patterns:[{comment:"in keyword",match:"\\bin\\b",name:"keyword.operator.word.hcl"},{comment:"if keyword",match:"\\bif\\b",name:"keyword.control.conditional.hcl"},{match:"\\:",name:"keyword.operator.hcl"},{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},functions:{begin:"([:\\-\\w]+)(\\()",beginCaptures:{1:{patterns:[{match:"\\b(core::)?(abs|abspath|alltrue|anytrue|base64decode|base64encode|base64gzip|base64sha256|base64sha512|basename|bcrypt|can|ceil|chomp|chunklist|cidrhost|cidrnetmask|cidrsubnet|cidrsubnets|coalesce|coalescelist|compact|concat|contains|csvdecode|dirname|distinct|element|endswith|file|filebase64|filebase64sha256|filebase64sha512|fileexists|filemd5|fileset|filesha1|filesha256|filesha512|flatten|floor|format|formatdate|formatlist|indent|index|join|jsondecode|jsonencode|keys|length|log|lookup|lower|matchkeys|max|md5|merge|min|nonsensitive|one|parseint|pathexpand|plantimestamp|pow|range|regex|regexall|replace|reverse|rsadecrypt|sensitive|setintersection|setproduct|setsubtract|setunion|sha1|sha256|sha512|signum|slice|sort|split|startswith|strcontains|strrev|substr|sum|templatefile|textdecodebase64|textencodebase64|timeadd|timecmp|timestamp|title|tobool|tolist|tomap|tonumber|toset|tostring|transpose|trim|trimprefix|trimspace|trimsuffix|try|upper|urlencode|uuid|uuidv5|values|yamldecode|yamlencode|zipmap)\\b",name:"support.function.builtin.terraform"},{match:"\\bprovider::[[:alpha:]][\\w_-]*::[[:alpha:]][\\w_-]*\\b",name:"support.function.provider.terraform"}]},2:{name:"punctuation.section.parens.begin.hcl"}},comment:"Built-in function calls",end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.hcl"}},name:"meta.function-call.hcl",patterns:[{include:"#comments"},{include:"#expressions"},{include:"#comma"}]},hash_line_comments:{begin:"#",captures:{0:{name:"punctuation.definition.comment.hcl"}},comment:"Line comments start with # sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",end:"$\\n?",name:"comment.line.number-sign.hcl"},hcl_type_keywords:{comment:"Type keywords known to HCL.",match:"\\b(any|string|number|bool|list|set|map|tuple|object)\\b",name:"storage.type.hcl"},heredoc:{begin:"(\\<\\<\\-?)\\s*(\\w+)\\s*$",beginCaptures:{1:{name:"keyword.operator.heredoc.hcl"},2:{name:"keyword.control.heredoc.hcl"}},comment:"String Heredoc",end:"^\\s*\\2\\s*$",endCaptures:{0:{name:"keyword.control.heredoc.hcl"}},name:"string.unquoted.heredoc.hcl",patterns:[{include:"#string_interpolation"}]},inline_for_expression:{captures:{1:{name:"keyword.control.hcl"},2:{patterns:[{match:"\\=\\>",name:"storage.type.function.hcl"},{include:"#for_expression_body"}]}},match:"(for)\\b(.*)\\n"},inline_if_expression:{begin:"(if)\\b",beginCaptures:{1:{name:"keyword.control.conditional.hcl"}},end:"\\n",patterns:[{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},language_constants:{comment:"Language Constants",match:"\\b(true|false|null)\\b",name:"constant.language.hcl"},literal_values:{patterns:[{include:"#numeric_literals"},{include:"#language_constants"},{include:"#string_literals"},{include:"#heredoc"},{include:"#hcl_type_keywords"},{include:"#named_value_references"}]},local_identifiers:{comment:"Local Identifiers",match:"\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b",name:"variable.other.readwrite.hcl"},named_value_references:{comment:"Constant values available only to Terraform.",match:"\\b(var|local|module|data|path|terraform)\\b",name:"variable.other.readwrite.terraform"},numeric_literals:{patterns:[{captures:{1:{name:"punctuation.separator.exponent.hcl"}},comment:"Integer, no fraction, optional exponent",match:"\\b\\d+([Ee][+-]?)\\d+\\b",name:"constant.numeric.float.hcl"},{captures:{1:{name:"punctuation.separator.decimal.hcl"},2:{name:"punctuation.separator.exponent.hcl"}},comment:"Integer, fraction, optional exponent",match:"\\b\\d+(\\.)\\d+(?:([Ee][+-]?)\\d+)?\\b",name:"constant.numeric.float.hcl"},{comment:"Integers",match:"\\b\\d+\\b",name:"constant.numeric.integer.hcl"}]},object_for_expression:{begin:"(\\{)\\s?(for)\\b",beginCaptures:{1:{name:"punctuation.section.braces.begin.hcl"},2:{name:"keyword.control.hcl"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.braces.end.hcl"}},patterns:[{match:"\\=\\>",name:"storage.type.function.hcl"},{include:"#for_expression_body"}]},object_key_values:{patterns:[{include:"#comments"},{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#heredoc"},{include:"#functions"}]},objects:{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.braces.begin.hcl"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.braces.end.hcl"}},name:"meta.braces.hcl",patterns:[{include:"#comments"},{include:"#objects"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{captures:{1:{name:"meta.mapping.key.hcl variable.other.readwrite.hcl"},2:{name:"keyword.operator.assignment.hcl",patterns:[{match:"\\=\\>",name:"storage.type.function.hcl"}]}},comment:"Literal, named object key",match:"\\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*)\\s*(\\=\\>?)\\s*"},{captures:{0:{patterns:[{include:"#named_value_references"}]},1:{name:"meta.mapping.key.hcl string.quoted.double.hcl"},2:{name:"punctuation.definition.string.begin.hcl"},3:{name:"punctuation.definition.string.end.hcl"},4:{name:"keyword.operator.hcl"}},comment:"String object key",match:'\\b((").*("))\\s*(\\=)\\s*'},{begin:"^\\s*\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.hcl"}},comment:"Computed object key (any expression between parens)",end:"(\\))\\s*(=|:)\\s*",endCaptures:{1:{name:"punctuation.section.parens.end.hcl"},2:{name:"keyword.operator.hcl"}},name:"meta.mapping.key.hcl",patterns:[{include:"#named_value_references"},{include:"#attribute_access"}]},{include:"#object_key_values"}]},operators:{patterns:[{match:"\\>\\=",name:"keyword.operator.hcl"},{match:"\\<\\=",name:"keyword.operator.hcl"},{match:"\\=\\=",name:"keyword.operator.hcl"},{match:"\\!\\=",name:"keyword.operator.hcl"},{match:"\\+",name:"keyword.operator.arithmetic.hcl"},{match:"\\-",name:"keyword.operator.arithmetic.hcl"},{match:"\\*",name:"keyword.operator.arithmetic.hcl"},{match:"\\/",name:"keyword.operator.arithmetic.hcl"},{match:"\\%",name:"keyword.operator.arithmetic.hcl"},{match:"\\&\\&",name:"keyword.operator.logical.hcl"},{match:"\\|\\|",name:"keyword.operator.logical.hcl"},{match:"\\!",name:"keyword.operator.logical.hcl"},{match:"\\>",name:"keyword.operator.hcl"},{match:"\\<",name:"keyword.operator.hcl"},{match:"\\?",name:"keyword.operator.hcl"},{match:"\\.\\.\\.",name:"keyword.operator.hcl"},{match:"\\:",name:"keyword.operator.hcl"},{match:"\\=\\>",name:"keyword.operator.hcl"}]},parens:{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.hcl"}},comment:"Parens - matched *after* function syntax",end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.hcl"}},patterns:[{include:"#comments"},{include:"#expressions"}]},string_interpolation:{begin:"(?<![%$])([%$]{)",beginCaptures:{1:{name:"keyword.other.interpolation.begin.hcl"}},comment:"String interpolation",end:"\\}",endCaptures:{0:{name:"keyword.other.interpolation.end.hcl"}},name:"meta.interpolation.hcl",patterns:[{comment:"Trim left whitespace",match:"\\~\\s",name:"keyword.operator.template.left.trim.hcl"},{comment:"Trim right whitespace",match:"\\s\\~",name:"keyword.operator.template.right.trim.hcl"},{comment:"if/else/endif and for/in/endfor directives",match:"\\b(if|else|endif|for|in|endfor)\\b",name:"keyword.control.hcl"},{include:"#expressions"},{include:"#local_identifiers"}]},string_literals:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.hcl"}},comment:"Strings",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.hcl"}},name:"string.quoted.double.hcl",patterns:[{include:"#string_interpolation"},{include:"#char_escapes"}]},tuple_for_expression:{begin:"(\\[)\\s?(for)\\b",beginCaptures:{1:{name:"punctuation.section.brackets.begin.hcl"},2:{name:"keyword.control.hcl"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.brackets.end.hcl"}},patterns:[{include:"#for_expression_body"}]}},scopeName:"source.hcl.terraform",aliases:["tf","tfvars"]});var n=[e];export{n as default}; diff --git a/assets/chunks/tex.-C-BpcSB.js b/assets/chunks/tex.-C-BpcSB.js new file mode 100644 index 000000000..6de9f6e8d --- /dev/null +++ b/assets/chunks/tex.-C-BpcSB.js @@ -0,0 +1 @@ +import e from"./r.BXfENWL6.js";const t=Object.freeze({displayName:"TeX",name:"tex",patterns:[{begin:"(?<=^\\s*)((\\\\)iffalse)",beginCaptures:{1:{name:"keyword.control.tex"},2:{name:"punctuation.definition.keyword.tex"}},contentName:"comment.line.percentage.tex",end:"(?<=^\\s*)((\\\\)(?:else|fi))",endCaptures:{1:{name:"keyword.control.tex"},2:{name:"punctuation.definition.keyword.tex"}},patterns:[{include:"#comment"},{include:"#conditionals"}]},{captures:{1:{name:"punctuation.definition.keyword.tex"}},match:"(\\\\)(backmatter|csname|else|endcsname|fi|frontmatter|mainmatter|unless|if(case|cat|csname|defined|dim|eof|false|fontchar|hbox|hmode|inner|mmode|num|odd|true|vbox|vmode|void|x)?)(?![a-zA-Z@])",name:"keyword.control.tex"},{captures:{1:{name:"keyword.control.catcode.tex"},2:{name:"punctuation.definition.keyword.tex"},3:{name:"punctuation.separator.key-value.tex"},4:{name:"constant.numeric.category.tex"}},match:"((\\\\)catcode)`(?:\\\\)?.(=)(\\d+)",name:"meta.catcode.tex"},{include:"#comment"},{match:"[\\[\\]]",name:"punctuation.definition.brackets.tex"},{begin:"(\\$\\$|\\$)",beginCaptures:{1:{name:"punctuation.definition.string.begin.tex"}},end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.tex"}},name:"meta.math.block.tex support.class.math.block.tex",patterns:[{match:"\\\\\\$",name:"constant.character.escape.tex"},{include:"#math"},{include:"$self"}]},{match:"\\\\\\\\",name:"keyword.control.newline.tex"},{captures:{1:{name:"punctuation.definition.function.tex"}},match:"(\\\\)(?:[,;]|(?:[\\p{Alphabetic}@]+(?:(?:_[\\p{Alphabetic}@]+)*:[NncVvoxefTFpwD]*)?))",name:"support.function.general.tex"},{captures:{1:{name:"punctuation.definition.keyword.tex"}},match:"(\\\\)[^a-zA-Z@]",name:"constant.character.escape.tex"}],repository:{braces:{begin:"(?<!\\\\)\\{",beginCaptures:{0:{name:"punctuation.group.begin.tex"}},end:"(?<!\\\\)\\}",endCaptures:{0:{name:"punctuation.group.end.tex"}},name:"meta.group.braces.tex",patterns:[{include:"#braces"}]},comment:{begin:"(^[ \\t]+)?(?=%)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.tex"}},end:"(?!\\G)",patterns:[{begin:"%:?",beginCaptures:{0:{name:"punctuation.definition.comment.tex"}},end:"$\\n?",name:"comment.line.percentage.tex"},{begin:"^(%!TEX) (\\S*) =",beginCaptures:{1:{name:"punctuation.definition.comment.tex"}},end:"$\\n?",name:"comment.line.percentage.directive.tex"}]},conditionals:{begin:"(?<=^\\s*)\\\\if[a-z]*",end:"(?<=^\\s*)\\\\fi",patterns:[{include:"#comment"},{include:"#conditionals"}]},math:{patterns:[{begin:"((\\\\)(?:text|mbox))(\\{)",beginCaptures:{1:{name:"constant.other.math.tex"},2:{name:"punctuation.definition.function.tex"},3:{name:"punctuation.definition.arguments.begin.tex meta.text.normal.tex"}},contentName:"meta.text.normal.tex",end:"\\}",endCaptures:{0:{name:"punctuation.definition.arguments.end.tex meta.text.normal.tex"}},patterns:[{include:"#math"},{include:"$self"}]},{match:"\\\\{|\\\\}",name:"punctuation.math.bracket.pair.tex"},{match:"\\\\(left|right|((big|bigg|Big|Bigg)[lr]?))([\\(\\[\\<\\>\\]\\)\\.\\|]|\\\\[{}|]|\\\\[lr]?[Vv]ert|\\\\[lr]angle)",name:"punctuation.math.bracket.pair.big.tex"},{captures:{1:{name:"punctuation.definition.constant.math.tex"}},match:"(\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?![a-zA-Z@])",name:"constant.character.math.tex"},{captures:{1:{name:"punctuation.definition.constant.math.tex"}},match:"(\\\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\\b",name:"constant.character.math.tex"},{captures:{1:{name:"punctuation.definition.constant.math.tex"}},match:"(\\\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\\b",name:"constant.other.math.tex"},{begin:"((\\\\)Sexpr(\\{))",beginCaptures:{1:{name:"support.function.sexpr.math.tex"},2:{name:"punctuation.definition.function.math.tex"},3:{name:"punctuation.section.embedded.begin.math.tex"}},contentName:"support.function.sexpr.math.tex",end:"(((\\})))",endCaptures:{1:{name:"support.function.sexpr.math.tex"},2:{name:"punctuation.section.embedded.end.math.tex"},3:{name:"source.r"}},name:"meta.embedded.line.r",patterns:[{begin:"\\G(?!\\})",end:"(?=\\})",name:"source.r",patterns:[{include:"source.r"}]}]},{captures:{1:{name:"punctuation.definition.constant.math.tex"}},match:"(\\\\)(?!begin\\{|verb)([A-Za-z]+)",name:"constant.other.general.math.tex"},{match:"(?<!\\\\)\\{",name:"punctuation.math.begin.bracket.curly.tex"},{match:"(?<!\\\\)\\}",name:"punctuation.math.end.bracket.curly.tex"},{match:"(?<!\\\\)\\(",name:"punctuation.math.begin.bracket.round.tex"},{match:"(?<!\\\\)\\)",name:"punctuation.math.end.bracket.round.tex"},{match:"(([0-9]*[\\.][0-9]+)|[0-9]+)",name:"constant.numeric.math.tex"},{match:"[\\+\\*/_\\^-]",name:"punctuation.math.operator.tex"}]}},scopeName:"text.tex",embeddedLangs:["r"]});var n=[...e,t];export{n as default}; diff --git a/assets/chunks/theme.Dbfa4Io4.js b/assets/chunks/theme.Dbfa4Io4.js new file mode 100644 index 000000000..964024f0e --- /dev/null +++ b/assets/chunks/theme.Dbfa4Io4.js @@ -0,0 +1,8 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPAlgoliaSearchBox.DUbQw8jp.js","assets/chunks/framework.BkavzUpE.js","assets/chunks/index.D8X3TFxX.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as l,r as c,n as N,a as D,t as I,b as k,w as v,e as f,T as fe,_ as g,u as Re,i as We,f as Ye,g as me,h as b,j as C,k as q,l as d,m as i,p as B,q as E,s as K,v as de,x as G,y as ee,z as te,A as we,B as Je,C as Xe,D as z,F as M,E as H,G as Ie,H as se,I as _,J as W,K as Te,L as oe,M as Q,N as ne,O as Qe,P as Ne,Q as Ze,R as xe,S as Ce,U as ae,V as et,W as tt,X as Me,Y as Ae,Z as He,$ as st,a0 as ot,a1 as nt,a2 as at,a3 as rt,a4 as it,a5 as lt,a6 as ct,a7 as ut,a8 as Le}from"./framework.BkavzUpE.js";const dt=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),l("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),pt={key:0,class:"VPBackdrop"},vt=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),k(fe,{name:"fade"},{default:v(()=>[e.show?(a(),l("div",pt)):f("",!0)]),_:1}))}}),ht=g(vt,[["__scopeId","data-v-54a304ca"]]),V=Re;function ft(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function pe(s){return/^\//.test(s)?s:`/${s}`}function _e(s){const{pathname:e,search:t,hash:n,protocol:o}=new URL(s,"http://a.com");if(We(s)||s.startsWith("#")||!o.startsWith("http")||!Ye(e))return s;const{site:r}=V(),u=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return me(u)}function Y({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r,hash:u}=V(),p=b(()=>{var y,$;return{index:n.value,label:(y=t.value.locales[n.value])==null?void 0:y.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:b(()=>Object.entries(t.value.locales).flatMap(([y,$])=>s&&p.value.label===$.label?[]:{index:y,text:$.label,link:mt($.link||(y==="root"?"/":`/${y}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(p.value.link.length-1),!t.value.cleanUrls)+u.value})),currentLang:p}}function mt(s,e,t,n){return e?s.replace(/\/$/,"")+pe(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const _t=s=>(B("data-v-d1e76dde"),s=s(),E(),s),gt={class:"NotFound"},kt={class:"code"},bt={class:"title"},$t=_t(()=>d("div",{class:"divider"},null,-1)),yt={class:"quote"},Lt={class:"action"},Pt=["href","aria-label"],St=m({__name:"NotFound",setup(s){const{site:e}=V(),{localeLinks:t}=Y({removeCurrent:!1}),n=C({link:"/",index:"root"});q(()=>{const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");t.value.length&&(n.value=t.value.find(({link:u})=>u.startsWith(r))||t.value[0])});const o=b(()=>{var r,u,p,h;return{code:404,title:"PAGE NOT FOUND",quote:"But if you don't change your direction, and if you keep looking, you may end up where you are heading.",linkLabel:"go to home",linkText:"Take me home",...n.value.index==="root"?(r=e.value.themeConfig)==null?void 0:r.notFound:(h=(p=(u=e.value.locales)==null?void 0:u[n.value.index])==null?void 0:p.themeConfig)==null?void 0:h.notFound}});return(r,u)=>(a(),l("div",gt,[d("p",kt,I(o.value.code),1),d("h1",bt,I(o.value.title),1),$t,d("blockquote",yt,I(o.value.quote),1),d("div",Lt,[d("a",{class:"link",href:i(me)(n.value.link),"aria-label":o.value.linkLabel},I(o.value.linkText),9,Pt)])]))}}),Vt=g(St,[["__scopeId","data-v-d1e76dde"]]);function Be(s,e){if(Array.isArray(s))return Z(s);if(s==null)return[];e=pe(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(pe(o))),n=t?s[t]:[];return Array.isArray(n)?Z(n):Z(n.items,n.base)}function wt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function It(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ve(s,e){return Array.isArray(e)?e.some(t=>ve(s,t)):K(s,e.link)?!0:e.items?ve(s,e.items):!1}function Z(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Z(n.items,o)),n})}function O(){const{frontmatter:s,page:e,theme:t}=V(),n=de("(min-width: 960px)"),o=C(!1),r=b(()=>{const A=t.value.sidebar,T=e.value.relativePath;return A?Be(A,T):[]}),u=C(r.value);G(r,(A,T)=>{JSON.stringify(A)!==JSON.stringify(T)&&(u.value=r.value)});const p=b(()=>s.value.sidebar!==!1&&u.value.length>0&&s.value.layout!=="home"),h=b(()=>y?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),y=b(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),$=b(()=>p.value&&n.value),L=b(()=>p.value?wt(u.value):[]);function P(){o.value=!0}function w(){o.value=!1}function S(){o.value?w():P()}return{isOpen:o,sidebar:u,sidebarGroups:L,hasSidebar:p,hasAside:y,leftAside:h,isSidebarEnabled:$,open:P,close:w,toggle:S}}function Tt(s,e){let t;ee(()=>{t=s.value?document.activeElement:void 0}),q(()=>{window.addEventListener("keyup",n)}),te(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function Nt(s){const{page:e,hash:t}=V(),n=C(!1),o=b(()=>s.value.collapsed!=null),r=b(()=>!!s.value.link),u=C(!1),p=()=>{u.value=K(e.value.relativePath,s.value.link)};G([e,s,t],p),q(p);const h=b(()=>u.value?!0:s.value.items?ve(e.value.relativePath,s.value.items):!1),y=b(()=>!!(s.value.items&&s.value.items.length));ee(()=>{n.value=!!(o.value&&s.value.collapsed)}),we(()=>{(u.value||h.value)&&(n.value=!1)});function $(){o.value&&(n.value=!n.value)}return{collapsed:n,collapsible:o,isLink:r,isActiveLink:u,hasActiveLink:h,hasChildren:y,toggle:$}}function Ct(){const{hasSidebar:s}=O(),e=de("(min-width: 960px)"),t=de("(min-width: 1280px)");return{isAsideEnabled:b(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const he=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ge(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:Mt(t),link:"#"+t.id,level:n}});return At(e,s)}function Mt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function At(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(u=>u.level>=n&&u.level<=o),he.length=0;for(const{element:u,link:p}of s)he.push({element:u,link:p});const r=[];e:for(let u=0;u<s.length;u++){const p=s[u];if(u===0)r.push(p);else{for(let h=u-1;h>=0;h--){const y=s[h];if(y.level<p.level){(y.children||(y.children=[])).push(p);continue e}}r.push(p)}}return r}function Ht(s,e){const{isAsideEnabled:t}=Ct(),n=ft(r,100);let o=null;q(()=>{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Je(()=>{u(location.hash)}),te(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=window.scrollY,h=window.innerHeight,y=document.body.offsetHeight,$=Math.abs(p+h-y)<1,L=he.map(({element:w,link:S})=>({link:S,top:Bt(w)})).filter(({top:w})=>!Number.isNaN(w)).sort((w,S)=>w.top-S.top);if(!L.length){u(null);return}if(p<1){u(null);return}if($){u(L[L.length-1].link);return}let P=null;for(const{link:w,top:S}of L){if(S>p+Xe()+4)break;P=w}u(P)}function u(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const h=o;h?(h.classList.add("active"),e.value.style.top=h.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Bt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}const Et=["href","title"],Dt=m({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const n=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(n));o==null||o.focus({preventScroll:!0})}return(t,n)=>{const o=z("VPDocOutlineItem",!0);return a(),l("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),l(M,null,H(t.headers,({children:r,link:u,title:p})=>(a(),l("li",null,[d("a",{class:"outline-link",href:u,onClick:e,title:p},I(p),9,Et),r!=null&&r.length?(a(),k(o,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),De=g(Dt,[["__scopeId","data-v-53c99d69"]]),Ft={class:"content"},Ot={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},jt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),n=Ie([]);se(()=>{n.value=ge(e.value.outline??t.value.outline)});const o=C(),r=C();return Ht(o,r),(u,p)=>(a(),l("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[d("div",Ft,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",Ot,I(i(Ee)(i(t))),1),_(De,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Ut=g(jt,[["__scopeId","data-v-269d7ea7"]]),Gt={class:"VPDocAsideCarbonAds"},Kt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),l("div",Gt,[_(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),qt=s=>(B("data-v-cb998dce"),s=s(),E(),s),zt={class:"VPDocAside"},Rt=qt(()=>d("div",{class:"spacer"},null,-1)),Wt=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,n)=>(a(),l("div",zt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),_(Ut),c(t.$slots,"aside-outline-after",{},void 0,!0),Rt,c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Kt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Yt=g(Wt,[["__scopeId","data-v-cb998dce"]]);function Jt(){const{theme:s,page:e}=V();return b(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Xt(){const{page:s,theme:e,frontmatter:t}=V();return b(()=>{var y,$,L,P,w,S,A,T;const n=Be(e.value.sidebar,s.value.relativePath),o=It(n),r=Qt(o,j=>j.link.replace(/[?#].*$/,"")),u=r.findIndex(j=>K(s.value.relativePath,j.link)),p=((y=e.value.docFooter)==null?void 0:y.prev)===!1&&!t.value.prev||t.value.prev===!1,h=(($=e.value.docFooter)==null?void 0:$.next)===!1&&!t.value.next||t.value.next===!1;return{prev:p?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((L=r[u-1])==null?void 0:L.docFooterText)??((P=r[u-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((w=r[u-1])==null?void 0:w.link)},next:h?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((S=r[u+1])==null?void 0:S.docFooterText)??((A=r[u+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((T=r[u+1])==null?void 0:T.link)}}})}function Qt(s,e){const t=new Set;return s.filter(n=>{const o=e(n);return t.has(o)?!1:t.add(o)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.tag??(e.href?"a":"span")),n=b(()=>e.href&&Te.test(e.href));return(o,r)=>(a(),k(W(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?i(_e)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Zt={class:"VPLastUpdated"},xt=["datetime"],es=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=V(),r=b(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=b(()=>r.value.toISOString()),p=C("");return q(()=>{ee(()=>{var h,y,$;p.value=new Intl.DateTimeFormat((y=(h=e.value.lastUpdated)==null?void 0:h.formatOptions)!=null&&y.forceLocale?o.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(h,y)=>{var $;return a(),l("p",Zt,[D(I((($=i(e).lastUpdated)==null?void 0:$.text)||i(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:u.value},I(p.value),9,xt)])}}}),ts=g(es,[["__scopeId","data-v-19a7ae4e"]]),Fe=s=>(B("data-v-5941af80"),s=s(),E(),s),ss={key:0,class:"VPDocFooter"},os={key:0,class:"edit-info"},ns={key:0,class:"edit-link"},as=Fe(()=>d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),rs={key:1,class:"last-updated"},is={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},ls=Fe(()=>d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),cs={class:"pager"},us=["innerHTML"],ds=["innerHTML"],ps={class:"pager"},vs=["innerHTML"],hs=["innerHTML"],fs=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=Jt(),r=Xt(),u=b(()=>e.value.editLink&&n.value.editLink!==!1),p=b(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),h=b(()=>u.value||p.value||r.value.prev||r.value.next);return(y,$)=>{var L,P,w,S;return h.value?(a(),l("footer",ss,[c(y.$slots,"doc-footer-before",{},void 0,!0),u.value||p.value?(a(),l("div",os,[u.value?(a(),l("div",ns,[_(F,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:v(()=>[as,D(" "+I(i(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),l("div",rs,[_(ts)])):f("",!0)])):f("",!0),(L=i(r).prev)!=null&&L.link||(P=i(r).next)!=null&&P.link?(a(),l("nav",is,[ls,d("div",cs,[(w=i(r).prev)!=null&&w.link?(a(),k(F,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:v(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,us),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,ds)]}),_:1},8,["href"])):f("",!0)]),d("div",ps,[(S=i(r).next)!=null&&S.link?(a(),k(F,{key:0,class:"pager-link next",href:i(r).next.link},{default:v(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,vs),d("span",{class:"title",innerHTML:i(r).next.text},null,8,hs)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ms=g(fs,[["__scopeId","data-v-5941af80"]]),_s=s=>(B("data-v-e6f2a212"),s=s(),E(),s),gs={class:"container"},ks=_s(()=>d("div",{class:"aside-curtain"},null,-1)),bs={class:"aside-container"},$s={class:"aside-content"},ys={class:"content"},Ls={class:"content-container"},Ps={class:"main"},Ss=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=oe(),{hasSidebar:n,hasAside:o,leftAside:r}=O(),u=b(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,h)=>{const y=z("Content");return a(),l("div",{class:N(["VPDoc",{"has-sidebar":i(n),"has-aside":i(o)}])},[c(p.$slots,"doc-top",{},void 0,!0),d("div",gs,[i(o)?(a(),l("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[ks,d("div",bs,[d("div",$s,[_(Yt,null,{"aside-top":v(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),d("div",ys,[d("div",Ls,[c(p.$slots,"doc-before",{},void 0,!0),d("main",Ps,[_(y,{class:N(["vp-doc",[u.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(ms,null,{"doc-footer-before":v(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(p.$slots,"doc-after",{},void 0,!0)])])]),c(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Vs=g(Ss,[["__scopeId","data-v-e6f2a212"]]),ws=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.href&&Te.test(e.href)),n=b(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),k(W(n.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?i(_e)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[D(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Is=g(ws,[["__scopeId","data-v-c9cf0e3c"]]),Ts=["src","alt"],Ns=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=z("VPImage",!0);return e.image?(a(),l(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(me)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Ts)):(a(),l(M,{key:1},[_(n,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(n,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),x=g(Ns,[["__scopeId","data-v-ab19afbb"]]),Cs=s=>(B("data-v-b10c5094"),s=s(),E(),s),Ms={class:"container"},As={class:"main"},Hs={key:0,class:"name"},Bs=["innerHTML"],Es=["innerHTML"],Ds=["innerHTML"],Fs={key:0,class:"actions"},Os={key:0,class:"image"},js={class:"image-container"},Us=Cs(()=>d("div",{class:"image-bg"},null,-1)),Gs=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),l("div",{class:N(["VPHero",{"has-image":t.image||i(e)}])},[d("div",Ms,[d("div",As,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),l("h1",Hs,[d("span",{innerHTML:t.name,class:"clip"},null,8,Bs)])):f("",!0),t.text?(a(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,Es)):f("",!0),t.tagline?(a(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Ds)):f("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),l("div",Fs,[(a(!0),l(M,null,H(t.actions,o=>(a(),l("div",{key:o.link,class:"action"},[_(Is,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),l("div",Os,[d("div",js,[Us,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Ks=g(Gs,[["__scopeId","data-v-b10c5094"]]),qs=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,n)=>i(e).hero?(a(),k(Ks,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),zs=s=>(B("data-v-bd37d1a2"),s=s(),E(),s),Rs={class:"box"},Ws={key:0,class:"icon"},Ys=["innerHTML"],Js=["innerHTML"],Xs=["innerHTML"],Qs={key:4,class:"link-text"},Zs={class:"link-text-value"},xs=zs(()=>d("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),eo=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),k(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[d("article",Rs,[typeof e.icon=="object"&&e.icon.wrap?(a(),l("div",Ws,[_(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Ys)):f("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Js),e.details?(a(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Xs)):f("",!0),e.linkText?(a(),l("div",Qs,[d("p",Zs,[D(I(e.linkText)+" ",1),xs])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),to=g(eo,[["__scopeId","data-v-bd37d1a2"]]),so={key:0,class:"VPFeatures"},oo={class:"container"},no={class:"items"},ao=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=b(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),l("div",so,[d("div",oo,[d("div",no,[(a(!0),l(M,null,H(n.features,r=>(a(),l("div",{key:r.title,class:N(["item",[t.value]])},[_(to,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),ro=g(ao,[["__scopeId","data-v-b1eea84a"]]),io=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,n)=>i(e).features?(a(),k(ro,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),lo=m({__name:"VPHomeContent",setup(s){const{width:e}=Qe({includeScrollbar:!1});return(t,n)=>(a(),l("div",{class:"vp-doc container",style:Ne(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),co=g(lo,[["__scopeId","data-v-d59ac166"]]),uo={class:"VPHome"},po=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,n)=>{const o=z("Content");return a(),l("div",uo,[c(t.$slots,"home-hero-before",{},void 0,!0),_(qs,null,{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),_(io),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),k(co,{key:0},{default:v(()=>[_(o)]),_:1})):(a(),k(o,{key:1}))])}}}),vo=g(po,[["__scopeId","data-v-07b1ad08"]]),ho={},fo={class:"VPPage"};function mo(s,e){const t=z("Content");return a(),l("div",fo,[c(s.$slots,"page-top"),_(t),c(s.$slots,"page-bottom")])}const _o=g(ho,[["render",mo]]),go=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=O();return(o,r)=>(a(),l("div",{class:N(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[_(Vt)],!0):i(t).layout==="page"?(a(),k(_o,{key:1},{"page-top":v(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),k(vo,{key:2},{"home-hero-before":v(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),k(W(i(t).layout),{key:3})):(a(),k(Vs,{key:4},{"doc-top":v(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ko=g(go,[["__scopeId","data-v-9a6c75ad"]]),bo={class:"container"},$o=["innerHTML"],yo=["innerHTML"],Lo=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=O();return(o,r)=>i(e).footer&&i(t).footer!==!1?(a(),l("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(n)}])},[d("div",bo,[i(e).footer.message?(a(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,$o)):f("",!0),i(e).footer.copyright?(a(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,yo)):f("",!0)])],2)):f("",!0)}}),Po=g(Lo,[["__scopeId","data-v-566314d4"]]);function So(){const{theme:s,frontmatter:e}=V(),t=Ie([]),n=b(()=>t.value.length>0);return se(()=>{t.value=ge(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:n}}const Vo=s=>(B("data-v-883964e0"),s=s(),E(),s),wo={class:"menu-text"},Io=Vo(()=>d("span",{class:"vpi-chevron-right icon"},null,-1)),To={class:"header"},No={class:"outline"},Co=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),n=C(!1),o=C(0),r=C(),u=C();function p(L){var P;(P=r.value)!=null&&P.contains(L.target)||(n.value=!1)}G(n,L=>{if(L){document.addEventListener("click",p);return}document.removeEventListener("click",p)}),Ze("Escape",()=>{n.value=!1}),se(()=>{n.value=!1});function h(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function y(L){L.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),xe(()=>{n.value=!1}))}function $(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(L,P)=>(a(),l("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[L.headers.length>0?(a(),l("button",{key:0,onClick:h,class:N({open:n.value})},[d("span",wo,I(i(Ee)(i(t))),1),Io],2)):(a(),l("button",{key:1,onClick:$},I(i(t).returnToTopLabel||"Return to top"),1)),_(fe,{name:"flyout"},{default:v(()=>[n.value?(a(),l("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:y},[d("div",To,[d("a",{class:"top-link",href:"#",onClick:$},I(i(t).returnToTopLabel||"Return to top"),1)]),d("div",No,[_(De,{headers:L.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Mo=g(Co,[["__scopeId","data-v-883964e0"]]),Ao=s=>(B("data-v-2488c25a"),s=s(),E(),s),Ho={class:"container"},Bo=["aria-expanded"],Eo=Ao(()=>d("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=O(),{headers:o}=So(),{y:r}=Ce(),u=C(0);q(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),se(()=>{o.value=ge(t.value.outline??e.value.outline)});const p=b(()=>o.value.length===0),h=b(()=>p.value&&!n.value),y=b(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:p.value,fixed:h.value}));return($,L)=>i(t).layout!=="home"&&(!h.value||i(r)>=u.value)?(a(),l("div",{key:0,class:N(y.value)},[d("div",Ho,[i(n)?(a(),l("button",{key:0,class:"menu","aria-expanded":$.open,"aria-controls":"VPSidebarNav",onClick:L[0]||(L[0]=P=>$.$emit("open-menu"))},[Eo,d("span",Do,I(i(e).sidebarMenuLabel||"Menu"),1)],8,Bo)):f("",!0),_(Mo,{headers:i(o),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Oo=g(Fo,[["__scopeId","data-v-2488c25a"]]);function jo(){const s=C(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=oe();return G(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Uo={},Go={class:"VPSwitch",type:"button",role:"switch"},Ko={class:"check"},qo={key:0,class:"icon"};function zo(s,e){return a(),l("button",Go,[d("span",Ko,[s.$slots.default?(a(),l("span",qo,[c(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Ro=g(Uo,[["render",zo],["__scopeId","data-v-b4ccac88"]]),Oe=s=>(B("data-v-7df97737"),s=s(),E(),s),Wo=Oe(()=>d("span",{class:"vpi-sun sun"},null,-1)),Yo=Oe(()=>d("span",{class:"vpi-moon moon"},null,-1)),Jo=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),n=ne("toggle-appearance",()=>{e.value=!e.value}),o=b(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,u)=>(a(),k(Ro,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:v(()=>[Wo,Yo]),_:1},8,["title","aria-checked","onClick"]))}}),ke=g(Jo,[["__scopeId","data-v-7df97737"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),l("div",Xo,[_(ke)])):f("",!0)}}),Zo=g(Qo,[["__scopeId","data-v-283b26e9"]]),be=C();let je=!1,ce=0;function xo(s){const e=C(!1);if(ae){!je&&en(),ce++;const t=G(be,n=>{var o,r,u;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(u=s.onBlur)==null||u.call(s))});te(()=>{t(),ce--,ce||tn()})}return et(e)}function en(){document.addEventListener("focusin",Ue),je=!0,be.value=document.activeElement}function tn(){document.removeEventListener("focusin",Ue)}function Ue(){be.value=document.activeElement}const sn={class:"VPMenuLink"},on=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),l("div",sn,[_(F,{class:N({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),re=g(on,[["__scopeId","data-v-f51f088d"]]),nn={class:"VPMenuGroup"},an={key:0,class:"title"},rn=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",nn,[e.text?(a(),l("p",an,I(e.text),1)):f("",!0),(a(!0),l(M,null,H(e.items,n=>(a(),l(M,null,["link"in n?(a(),k(re,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),ln=g(rn,[["__scopeId","data-v-a6b0397c"]]),cn={class:"VPMenu"},un={key:0,class:"items"},dn=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),l("div",cn,[e.items?(a(),l("div",un,[(a(!0),l(M,null,H(e.items,n=>(a(),l(M,{key:n.text},["link"in n?(a(),k(re,{key:0,item:n},null,8,["item"])):(a(),k(ln,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),pn=g(dn,[["__scopeId","data-v-e42ed9b3"]]),vn=s=>(B("data-v-af5898d3"),s=s(),E(),s),hn=["aria-expanded","aria-label"],fn={key:0,class:"text"},mn=["innerHTML"],_n=vn(()=>d("span",{class:"vpi-chevron-down text-icon"},null,-1)),gn={key:1,class:"vpi-more-horizontal icon"},kn={class:"menu"},bn=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=C(!1),t=C();xo({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=u=>e.value=!0),onMouseleave:r[2]||(r[2]=u=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=u=>e.value=!e.value)},[o.button||o.icon?(a(),l("span",fn,[o.icon?(a(),l("span",{key:0,class:N([o.icon,"option-icon"])},null,2)):f("",!0),o.button?(a(),l("span",{key:1,innerHTML:o.button},null,8,mn)):f("",!0),_n])):(a(),l("span",gn))],8,hn),d("div",kn,[_(pn,{items:o.items},{default:v(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=g(bn,[["__scopeId","data-v-af5898d3"]]),$n=["href","aria-label","innerHTML"],yn=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=b(()=>typeof e.icon=="object"?e.icon.svg:`<span class="vpi-social-${e.icon}" />`);return(n,o)=>(a(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,$n))}}),Ln=g(yn,[["__scopeId","data-v-358b6670"]]),Pn={class:"VPSocialLinks"},Sn=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),l("div",Pn,[(a(!0),l(M,null,H(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),k(Ln,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=g(Sn,[["__scopeId","data-v-e71e869c"]]),Vn={key:0,class:"group translations"},wn={class:"trans-title"},In={key:1,class:"group"},Tn={class:"item appearance"},Nn={class:"label"},Cn={class:"appearance-action"},Mn={key:2,class:"group"},An={class:"item social-links"},Hn=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:o}=Y({correspondingLink:!0}),r=b(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(u,p)=>r.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[i(n).length&&i(o).label?(a(),l("div",Vn,[d("p",wn,I(i(o).label),1),(a(!0),l(M,null,H(i(n),h=>(a(),k(re,{key:h.link,item:h},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(a(),l("div",In,[d("div",Tn,[d("p",Nn,I(i(t).darkModeSwitchLabel||"Appearance"),1),d("div",Cn,[_(ke)])])])):f("",!0),i(t).socialLinks?(a(),l("div",Mn,[d("div",An,[_(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Bn=g(Hn,[["__scopeId","data-v-8e87c032"]]),En=s=>(B("data-v-6bee1efd"),s=s(),E(),s),Dn=["aria-expanded"],Fn=En(()=>d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)),On=[Fn],jn=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),l("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},On,10,Dn))}}),Un=g(jn,[["__scopeId","data-v-6bee1efd"]]),Gn=["innerHTML"],Kn=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),k(F,{class:N({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[d("span",{innerHTML:t.item.text},null,8,Gn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),qn=g(Kn,[["__scopeId","data-v-08fbf4b6"]]),zn=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),n=r=>"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),o=b(()=>n(e.item));return(r,u)=>(a(),k($e,{class:N({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||o.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Rn=s=>(B("data-v-f732b5d0"),s=s(),E(),s),Wn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Yn=Rn(()=>d("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Jn=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,n)=>i(e).nav?(a(),l("nav",Wn,[Yn,(a(!0),l(M,null,H(i(e).nav,o=>(a(),l(M,{key:o.text},["link"in o?(a(),k(qn,{key:0,item:o},null,8,["item"])):(a(),k(zn,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-f732b5d0"]]);function Qn(s){const{localeIndex:e,theme:t}=V();function n(o){var S,A,T;const r=o.split("."),u=(S=t.value.search)==null?void 0:S.options,p=u&&typeof u=="object",h=p&&((T=(A=u.locales)==null?void 0:A[e.value])==null?void 0:T.translations)||null,y=p&&u.translations||null;let $=h,L=y,P=s;const w=r.pop();for(const j of r){let U=null;const R=P==null?void 0:P[j];R&&(U=P=R);const ie=L==null?void 0:L[j];ie&&(U=L=ie);const le=$==null?void 0:$[j];le&&(U=$=le),R||(P=U),ie||(L=U),le||($=U)}return($==null?void 0:$[w])??(L==null?void 0:L[w])??(P==null?void 0:P[w])??""}return n}const Zn=["aria-label"],xn={class:"DocSearch-Button-Container"},ea=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ta={class:"DocSearch-Button-Placeholder"},sa=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Pe=m({__name:"VPNavBarSearchButton",setup(s){const t=Qn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,o)=>(a(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[d("span",xn,[ea,d("span",ta,I(i(t)("button.buttonText")),1)]),sa],8,Zn))}}),oa={class:"VPNavBarSearch"},na={id:"local-search"},aa={key:1,id:"docsearch"},ra=m({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=tt(()=>Me(()=>import("./VPAlgoliaSearchBox.DUbQw8jp.js"),__vite__mapDeps([0,1]))),{theme:n}=V(),o=C(!1),r=C(!1),u=()=>{const P="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{var A;const S=document.createElement("link");S.id=P,S.rel="preconnect",S.href=`https://${(((A=n.value.search)==null?void 0:A.options)??n.value.algolia).appId}-dsn.algolia.net`,S.crossOrigin="",document.head.appendChild(S)})};q(()=>{u();const P=S=>{(S.key.toLowerCase()==="k"&&(S.metaKey||S.ctrlKey)||!y(S)&&S.key==="/")&&(S.preventDefault(),p(),w())},w=()=>{window.removeEventListener("keydown",P)};window.addEventListener("keydown",P),te(w)});function p(){o.value||(o.value=!0,setTimeout(h,16))}function h(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function y(P){const w=P.target,S=w.tagName;return w.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const $=C(!1),L="algolia";return(P,w)=>{var S;return a(),l("div",oa,[i(L)==="local"?(a(),l(M,{key:0},[$.value?(a(),k(i(e),{key:0,onClose:w[0]||(w[0]=A=>$.value=!1)})):f("",!0),d("div",na,[_(Pe,{onClick:w[1]||(w[1]=A=>$.value=!0)})])],64)):i(L)==="algolia"?(a(),l(M,{key:1},[o.value?(a(),k(i(t),{key:0,algolia:((S=i(n).search)==null?void 0:S.options)??i(n).algolia,onVnodeBeforeMount:w[2]||(w[2]=A=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),l("div",aa,[_(Pe,{onClick:p})]))],64)):f("",!0)])}}}),ia=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),la=g(ia,[["__scopeId","data-v-ef6192dc"]]),ca=["href","rel","target"],ua={key:1},da={key:2},pa=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:n}=O(),{currentLang:o}=Y(),r=b(()=>{var h;return typeof t.value.logoLink=="string"?t.value.logoLink:(h=t.value.logoLink)==null?void 0:h.link}),u=b(()=>{var h;return typeof t.value.logoLink=="string"||(h=t.value.logoLink)==null?void 0:h.rel}),p=b(()=>{var h;return typeof t.value.logoLink=="string"||(h=t.value.logoLink)==null?void 0:h.target});return(h,y)=>(a(),l("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(n)}])},[d("a",{class:"title",href:r.value??i(_e)(i(o).link),rel:u.value,target:p.value},[c(h.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),k(x,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(a(),l("span",ua,I(i(t).siteTitle),1)):i(t).siteTitle===void 0?(a(),l("span",da,I(i(e).title),1)):f("",!0),c(h.$slots,"nav-bar-title-after",{},void 0,!0)],8,ca)],2))}}),va=g(pa,[["__scopeId","data-v-0ad69264"]]),ha={class:"items"},fa={class:"title"},ma=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:n}=Y({correspondingLink:!0});return(o,r)=>i(t).length&&i(n).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:v(()=>[d("div",ha,[d("p",fa,I(i(n).label),1),(a(!0),l(M,null,H(i(t),u=>(a(),k(re,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),_a=g(ma,[["__scopeId","data-v-acee064b"]]),ga=s=>(B("data-v-844edcde"),s=s(),E(),s),ka={class:"wrapper"},ba={class:"container"},$a={class:"title"},ya={class:"content"},La={class:"content-body"},Pa=ga(()=>d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1)),Sa=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Ce(),{hasSidebar:t}=O(),{frontmatter:n}=V(),o=C({});return we(()=>{o.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(r,u)=>(a(),l("div",{class:N(["VPNavBar",o.value])},[d("div",ka,[d("div",ba,[d("div",$a,[_(va,null,{"nav-bar-title-before":v(()=>[c(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",ya,[d("div",La,[c(r.$slots,"nav-bar-content-before",{},void 0,!0),_(ra,{class:"search"}),_(Xn,{class:"menu"}),_(_a,{class:"translations"}),_(Zo,{class:"appearance"}),_(la,{class:"social-links"}),_(Bn,{class:"extra"}),c(r.$slots,"nav-bar-content-after",{},void 0,!0),_(Un,{class:"hamburger",active:r.isScreenOpen,onClick:u[0]||(u[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),Pa],2))}}),Va=g(Sa,[["__scopeId","data-v-844edcde"]]),wa={key:0,class:"VPNavScreenAppearance"},Ia={class:"text"},Ta=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(n,o)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),l("div",wa,[d("p",Ia,I(i(t).darkModeSwitchLabel||"Appearance"),1),_(ke)])):f("",!0)}}),Na=g(Ta,[["__scopeId","data-v-338d9b48"]]),Ca=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),k(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Ma=g(Ca,[["__scopeId","data-v-1a934d60"]]),Aa=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),k(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ge=g(Aa,[["__scopeId","data-v-aea78dd1"]]),Ha={class:"VPNavScreenMenuGroupSection"},Ba={key:0,class:"title"},Ea=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),l("div",Ha,[e.text?(a(),l("p",Ba,I(e.text),1)):f("",!0),(a(!0),l(M,null,H(e.items,n=>(a(),k(Ge,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Da=g(Ea,[["__scopeId","data-v-f60dbfa7"]]),Fa=s=>(B("data-v-d2212c70"),s=s(),E(),s),Oa=["aria-controls","aria-expanded"],ja=["innerHTML"],Ua=Fa(()=>d("span",{class:"vpi-plus button-icon"},null,-1)),Ga=["id"],Ka={key:1,class:"group"},qa=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=C(!1),n=b(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,u)=>(a(),l("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[d("span",{class:"button-text",innerHTML:r.text},null,8,ja),Ua],8,Oa),d("div",{id:n.value,class:"items"},[(a(!0),l(M,null,H(r.items,p=>(a(),l(M,{key:p.text},["link"in p?(a(),l("div",{key:p.text,class:"item"},[_(Ge,{item:p},null,8,["item"])])):(a(),l("div",Ka,[_(Da,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Ga)],2))}}),za=g(qa,[["__scopeId","data-v-d2212c70"]]),Ra={key:0,class:"VPNavScreenMenu"},Wa=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,n)=>i(e).nav?(a(),l("nav",Ra,[(a(!0),l(M,null,H(i(e).nav,o=>(a(),l(M,{key:o.text},["link"in o?(a(),k(Ma,{key:0,item:o},null,8,["item"])):(a(),k(za,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ya=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Ke=s=>(B("data-v-516e4bc3"),s=s(),E(),s),Ja=Ke(()=>d("span",{class:"vpi-languages icon lang"},null,-1)),Xa=Ke(()=>d("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Qa={class:"list"},Za=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),n=C(!1);function o(){n.value=!n.value}return(r,u)=>i(e).length&&i(t).label?(a(),l("div",{key:0,class:N(["VPNavScreenTranslations",{open:n.value}])},[d("button",{class:"title",onClick:o},[Ja,D(" "+I(i(t).label)+" ",1),Xa]),d("ul",Qa,[(a(!0),l(M,null,H(i(e),p=>(a(),l("li",{key:p.link,class:"item"},[_(F,{class:"link",href:p.link},{default:v(()=>[D(I(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),xa=g(Za,[["__scopeId","data-v-516e4bc3"]]),er={class:"container"},tr=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=C(null),t=Ae(ae?document.body:null);return(n,o)=>(a(),k(fe,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:v(()=>[n.open?(a(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",er,[c(n.$slots,"nav-screen-content-before",{},void 0,!0),_(Wa,{class:"menu"}),_(xa,{class:"translations"}),_(Na,{class:"appearance"}),_(Ya,{class:"social-links"}),c(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),sr=g(tr,[["__scopeId","data-v-57cce842"]]),or={key:0,class:"VPNav"},nr=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=jo(),{frontmatter:o}=V(),r=b(()=>o.value.navbar!==!1);return He("close-screen",t),ee(()=>{ae&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(u,p)=>r.value?(a(),l("header",or,[_(Va,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":v(()=>[c(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(sr,{open:i(e)},{"nav-screen-content-before":v(()=>[c(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),ar=g(nr,[["__scopeId","data-v-7ad780c2"]]),qe=s=>(B("data-v-c24f735a"),s=s(),E(),s),rr=["role","tabindex"],ir=qe(()=>d("div",{class:"indicator"},null,-1)),lr=qe(()=>d("span",{class:"vpi-chevron-right caret-icon"},null,-1)),cr=[lr],ur={key:1,class:"items"},dr=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:u,hasChildren:p,toggle:h}=Nt(b(()=>e.item)),y=b(()=>p.value?"section":"div"),$=b(()=>o.value?"a":"div"),L=b(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=b(()=>o.value?void 0:"button"),w=b(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":u.value}]);function S(T){"key"in T&&T.key!=="Enter"||!e.item.link&&h()}function A(){e.item.link&&h()}return(T,j)=>{const U=z("VPSidebarItem",!0);return a(),k(W(y.value),{class:N(["VPSidebarItem",w.value])},{default:v(()=>[T.item.text?(a(),l("div",Q({key:0,class:"item",role:P.value},st(T.item.items?{click:S,keydown:S}:{},!0),{tabindex:T.item.items&&0}),[ir,T.item.link?(a(),k(F,{key:0,tag:$.value,class:"link",href:T.item.link,rel:T.item.rel,target:T.item.target},{default:v(()=>[(a(),k(W(L.value),{class:"text",innerHTML:T.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(W(L.value),{key:1,class:"text",innerHTML:T.item.text},null,8,["innerHTML"])),T.item.collapsed!=null&&T.item.items&&T.item.items.length?(a(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:ot(A,["enter"]),tabindex:"0"},cr,32)):f("",!0)],16,rr)):f("",!0),T.item.items&&T.item.items.length?(a(),l("div",ur,[T.depth<5?(a(!0),l(M,{key:0},H(T.item.items,R=>(a(),k(U,{key:R.text,item:R,depth:T.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),pr=g(dr,[["__scopeId","data-v-c24f735a"]]),ze=s=>(B("data-v-4871f9f5"),s=s(),E(),s),vr=ze(()=>d("div",{class:"curtain"},null,-1)),hr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},fr=ze(()=>d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),mr=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=O(),n=s,o=C(null),r=Ae(ae?document.body:null);return G([n,o],()=>{var u;n.open?(r.value=!0,(u=o.value)==null||u.focus()):r.value=!1},{immediate:!0,flush:"post"}),(u,p)=>i(t)?(a(),l("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=nt(()=>{},["stop"]))},[vr,d("nav",hr,[fr,c(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),l(M,null,H(i(e),h=>(a(),l("div",{key:h.text,class:"group"},[_(pr,{item:h,depth:0},null,8,["item"])]))),128)),c(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),_r=g(mr,[["__scopeId","data-v-4871f9f5"]]),gr=m({__name:"VPSkipLink",setup(s){const e=oe(),t=C();G(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const u=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",u)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",u),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),l(M,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),kr=g(gr,[["__scopeId","data-v-c8291ffa"]]),br=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=O(),o=oe();G(()=>o.path,n),Tt(e,n);const{frontmatter:r}=V(),u=at(),p=b(()=>!!u["home-hero-image"]);return He("hero-image-slot-exists",p),(h,y)=>{const $=z("Content");return i(r).layout!==!1?(a(),l("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(h.$slots,"layout-top",{},void 0,!0),_(kr),_(ht,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),_(ar,null,{"nav-bar-title-before":v(()=>[c(h.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(h.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(h.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(h.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(h.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(h.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(Oo,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),_(_r,{open:i(e)},{"sidebar-nav-before":v(()=>[c(h.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(h.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(ko,null,{"page-top":v(()=>[c(h.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(h.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(h.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(h.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(h.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(h.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(h.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(h.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(h.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(h.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(h.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(h.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(h.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(h.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(h.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(h.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(h.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Po),c(h.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k($,{key:1}))}}}),$r=g(br,[["__scopeId","data-v-d8b57b2d"]]),Se={Layout:$r,enhanceApp:({app:s})=>{s.component("Badge",dt)}},J={groups:{default:{vue:"Vue"},vue:{setup:"Composition API",options:"Options API"},"vue-bundler":{"vue-cli":"Vue CLI",vite:"Vite"}}},X=rt({}),yr={props:{name:{type:String,default:"default"},isolated:{type:Boolean,default:!1},languages:{type:Object,required:!1}},data(){return{selectedLanguage:null,actualLanguages:{}}},computed:{localStorageKey(){return`vuepress-plugin-code-switcher@${this.name}`}},methods:{switchLanguage(s){if(this.isolated)return this.selectedLanguage=s;typeof localStorage<"u"&&localStorage.setItem(this.localStorageKey,s),X[this.name]=s},setConfiguredDefaultLanguages(){this.languages?this.actualLanguages=this.languages:J&&J.groups&&J.groups[this.name]&&(this.actualLanguages=J.groups[this.name]),this.selectedLanguage=Object.keys(this.actualLanguages)[0],X[this.name]||(X[this.name]=this.selectedLanguage)}},created(){if(!this.isolated){if(this.setConfiguredDefaultLanguages(),!this.actualLanguages)throw new Error('You must specify either the "languages" prop or use the "groups" option when configuring the plugin.');if(typeof localStorage<"u"){let s=localStorage.getItem(this.localStorageKey);s&&Object.keys(this.actualLanguages).indexOf(s)!==-1&&(this.selectedLanguage=s)}it(()=>this.selectedLanguage=X[this.name])}}},Lr={class:"code-tabs"},Pr={key:0,class:"code-tabs__nav"},Sr={class:"code-tabs__ul"},Vr=["aria-pressed","aria-expanded","onClick"],wr={key:1,class:"code-tabs__nav"},Ir=["aria-selected"];function Tr(s,e,t,n,o,r){return a(),l("div",Lr,[Object.keys(o.actualLanguages).length>1?(a(),l("div",Pr,[d("ul",Sr,[(a(!0),l(M,null,H(o.actualLanguages,(u,p)=>(a(),l("li",{key:p,class:"code-tabs__li"},[d("button",{class:N(["code-tabs__nav-tab",{"code-tabs__nav-tab-active":o.selectedLanguage===p}]),"aria-pressed":o.selectedLanguage===p,"aria-expanded":o.selectedLanguage===p,onClick:h=>r.switchLanguage(p)},I(u),11,Vr)]))),128))])])):(a(),l("div",wr,"  ")),(a(!0),l(M,null,H(o.actualLanguages,(u,p)=>lt((a(),l("div",{key:p,class:N(["code-tabs-item",{"code-tabs-item__active":o.selectedLanguage===p}]),"aria-selected":o.selectedLanguage===p},[c(s.$slots,p)],10,Ir)),[[ct,p===o.selectedLanguage]])),128))])}const Nr=g(yr,[["render",Tr]]);var ue=new Map;async function Cr(s){const e=await Me(()=>import("./index.D8X3TFxX.js"),__vite__mapDeps([2,1]));return{highlighter:await e.getHighlighter({themes:["dark-plus"],langs:[s]}),shiki:e}}function Mr(s){if(ue.has(s))return ue.get(s);const e=Cr(s);return ue.set(s,e),e}const Ar=m({props:{def:{type:String,required:!0},lang:{type:String,default:"c#"},ctor:{type:[Number,String],default:null},noClass:{type:Boolean,default:!1},id:{type:String,default:null},idPrefix:{type:String,default:"member"}},data(){return{idAttr:"",html:""}},async serverPrefetch(){await this.renderHtml()},beforeMount(){var s,e;this.html=(s=this.$el)==null?void 0:s.innerHTML,this.idAttr=(e=this.$el)==null?void 0:e.id,this.html||this.$watch("def",()=>this.renderHtml(),{immediate:!0})},methods:{async renderHtml(){var s=null;this.ctor&&(s="// Also settable via constructor parameter #"+this.ctor,(this.lang=="c#"||this.lang=="csharp")&&!this.def.match(/\bset\b/)&&(s="// ONLY settable via constructor parameter #"+this.ctor));const e=(this.noClass?"":"public class x {")+(s?` +`+s:"")+` +`+this.def+(this.noClass?"":` +}`);if(this.id)this.idAttr=this.id;else if(this.lang=="ts"){const r=/(?:(?:readonly|public|static|protected|private|abstract|export) )*((?:namespace )?[\w$-]+)/.exec(this.def);this.idAttr=r?this.idPrefix+"-"+r[1]:null}else if(this.lang=="c#"){const r=/ (\w+)(?:<|\(| \{|$)/.exec(this.def);this.idAttr=r?this.idPrefix+"-"+r[1]:null}if(!this.idAttr)throw new Error("Unable to compute id for Prop "+this.def);this.idAttr=this.idAttr.toLowerCase().replace(/[ &<>"']/g,"-").replace(/\$/g,"_");const{highlighter:t}=await Mr(this.lang),n=this.noClass;let o=t.codeToHtml(e,{lang:this.lang,theme:"dark-plus",transformers:[{tokens(r){n||(r.shift(),r.pop())}}]});this.html=`<a class="header-anchor" href="#${this.idAttr}" aria-hidden="true"></a>${o}`}}}),Hr=["innerHTML","id"],Br=["id"],Er={class:"shiki",style:{"line-height":"1.18","padding-top":"1px","padding-bottom":"4px"}};function Dr(s,e,t,n,o,r){return s.html?(a(),l("h4",{key:0,innerHTML:s.html,class:"code-prop",id:s.idAttr},null,8,Hr)):(a(),l("h4",{key:1,class:"code-prop",id:s.idAttr},[d("pre",Er,[D(" "),d("code",null,` + `+I(s.def)+` + `,1),D(` + `)])],8,Br))}const Fr=g(Ar,[["render",Dr]]),Or="/Coalesce/intellitect-text-white.svg",jr="/Coalesce/intellitect-text-black.svg",Ur={},Gr={class:"vp-doc intellitect-footer"},Kr=ut('<hr style="margin:70px 0;"><div class="content"><a href="https://www.intellitect.com"><img class="dark-only" src="'+Or+'"><img class="light-only" src="'+jr+'"></a><p> Coalesce is a free and open-source framework created by <a href="https://intellitect.com" target="_blank" rel="noreferrer"> IntelliTect </a> to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington. </p><p> If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at <a href="mailto:info@intellitect.com">info@intellitect.com</a> — we'd love to start a conversation! <a href="https://intellitect.com/our-clients/" target="_blank" rel="noreferrer"> Our clients </a> range from Fortune 100 companies to local small businesses and non-profits. </p></div>',2),qr=[Kr];function zr(s,e){return a(),l("footer",Gr,qr)}const Ve=g(Ur,[["render",zr]]),Wr={extends:Se,Layout:()=>Le(Se.Layout,null,{"doc-bottom":()=>Le(Ve,{class:"page-footer"})}),enhanceApp({app:s,router:e,siteData:t}){s.component("CodeTabs",Nr),s.component("Prop",Fr),s.component("SiteFooter",Ve)}};export{Wr as R,V as u}; diff --git a/assets/chunks/tokyo-night.eJfcURhx.js b/assets/chunks/tokyo-night.eJfcURhx.js new file mode 100644 index 000000000..249125b00 --- /dev/null +++ b/assets/chunks/tokyo-night.eJfcURhx.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.background":"#16161e","activityBar.border":"#16161e","activityBar.foreground":"#787c99","activityBar.inactiveForeground":"#3b3e52","activityBarBadge.background":"#3d59a1","activityBarBadge.foreground":"#fff","badge.background":"#7e83b230","badge.foreground":"#acb0d0","breadcrumb.activeSelectionForeground":"#a9b1d6","breadcrumb.background":"#16161e","breadcrumb.focusForeground":"#a9b1d6","breadcrumb.foreground":"#515670","breadcrumbPicker.background":"#16161e","button.background":"#3d59a1dd","button.foreground":"#ffffff","button.hoverBackground":"#3d59a1AA","button.secondaryBackground":"#3b3e52","charts.blue":"#7aa2f7","charts.foreground":"#9AA5CE","charts.green":"#41a6b5","charts.lines":"#16161e","charts.orange":"#ff9e64","charts.purple":"#9d7cd8","charts.red":"#f7768e","charts.yellow":"#e0af68","debugConsole.errorForeground":"#bb616b","debugConsole.infoForeground":"#787c99","debugConsole.sourceForeground":"#787c99","debugConsole.warningForeground":"#c49a5a","debugConsoleInputIcon.foreground":"#73daca","debugExceptionWidget.background":"#101014","debugExceptionWidget.border":"#963c47","debugIcon.breakpointDisabledForeground":"#414761","debugIcon.breakpointForeground":"#db4b4b","debugIcon.breakpointUnverifiedForeground":"#c24242","debugTokenExpression.boolean":"#ff9e64","debugTokenExpression.error":"#bb616b","debugTokenExpression.name":"#7dcfff","debugTokenExpression.number":"#ff9e64","debugTokenExpression.string":"#9ece6a","debugTokenExpression.value":"#9aa5ce","debugToolBar.background":"#101014","debugView.stateLabelBackground":"#14141b","debugView.stateLabelForeground":"#787c99","debugView.valueChangedHighlight":"#3d59a1aa",descriptionForeground:"#515670","diffEditor.diagonalFill":"#292e42","diffEditor.insertedLineBackground":"#41a6b520","diffEditor.insertedTextBackground":"#41a6b520","diffEditor.removedLineBackground":"#db4b4b22","diffEditor.removedTextBackground":"#db4b4b22","diffEditorGutter.insertedLineBackground":"#41a6b525","diffEditorGutter.removedLineBackground":"#db4b4b22","diffEditorOverview.insertedForeground":"#41a6b525","diffEditorOverview.removedForeground":"#db4b4b22","dropdown.background":"#14141b","dropdown.foreground":"#787c99","dropdown.listBackground":"#14141b","editor.background":"#1a1b26","editor.findMatchBackground":"#3d59a166","editor.findMatchBorder":"#e0af68","editor.findMatchHighlightBackground":"#3d59a166","editor.findRangeHighlightBackground":"#515c7e33","editor.focusedStackFrameHighlightBackground":"#73daca20","editor.foldBackground":"#1111174a","editor.foreground":"#a9b1d6","editor.inactiveSelectionBackground":"#515c7e25","editor.lineHighlightBackground":"#1e202e","editor.rangeHighlightBackground":"#515c7e20","editor.selectionBackground":"#515c7e4d","editor.selectionHighlightBackground":"#515c7e44","editor.stackFrameHighlightBackground":"#E2BD3A20","editor.wordHighlightBackground":"#515c7e44","editor.wordHighlightStrongBackground":"#515c7e55","editorBracketHighlight.foreground1":"#698cd6","editorBracketHighlight.foreground2":"#68b3de","editorBracketHighlight.foreground3":"#9a7ecc","editorBracketHighlight.foreground4":"#25aac2","editorBracketHighlight.foreground5":"#80a856","editorBracketHighlight.foreground6":"#c49a5a","editorBracketHighlight.unexpectedBracket.foreground":"#db4b4b","editorBracketMatch.background":"#16161e","editorBracketMatch.border":"#42465d","editorBracketPairGuide.activeBackground1":"#698cd6","editorBracketPairGuide.activeBackground2":"#68b3de","editorBracketPairGuide.activeBackground3":"#9a7ecc","editorBracketPairGuide.activeBackground4":"#25aac2","editorBracketPairGuide.activeBackground5":"#80a856","editorBracketPairGuide.activeBackground6":"#c49a5a","editorCodeLens.foreground":"#51597d","editorCursor.foreground":"#c0caf5","editorError.foreground":"#db4b4b","editorGhostText.foreground":"#646e9c","editorGroup.border":"#101014","editorGroup.dropBackground":"#1e202e","editorGroupHeader.border":"#101014","editorGroupHeader.noTabsBackground":"#16161e","editorGroupHeader.tabsBackground":"#16161e","editorGroupHeader.tabsBorder":"#101014","editorGutter.addedBackground":"#164846","editorGutter.deletedBackground":"#823c41","editorGutter.modifiedBackground":"#394b70","editorHint.foreground":"#0da0ba","editorHoverWidget.background":"#16161e","editorHoverWidget.border":"#101014","editorIndentGuide.activeBackground":"#363b54","editorIndentGuide.background":"#1e202e","editorInfo.foreground":"#0da0ba","editorLightBulb.foreground":"#e0af68","editorLightBulbAutoFix.foreground":"#e0af68","editorLineNumber.activeForeground":"#737aa2","editorLineNumber.foreground":"#363b54","editorLink.activeForeground":"#acb0d0","editorMarkerNavigation.background":"#16161e","editorOverviewRuler.addedForeground":"#164846","editorOverviewRuler.border":"#101014","editorOverviewRuler.bracketMatchForeground":"#101014","editorOverviewRuler.deletedForeground":"#703438","editorOverviewRuler.errorForeground":"#db4b4b","editorOverviewRuler.findMatchForeground":"#a9b1d644","editorOverviewRuler.infoForeground":"#1abc9c","editorOverviewRuler.modifiedForeground":"#394b70","editorOverviewRuler.rangeHighlightForeground":"#a9b1d644","editorOverviewRuler.selectionHighlightForeground":"#a9b1d622","editorOverviewRuler.warningForeground":"#e0af68","editorOverviewRuler.wordHighlightForeground":"#bb9af755","editorOverviewRuler.wordHighlightStrongForeground":"#bb9af766","editorPane.background":"#16161e","editorRuler.foreground":"#101014","editorSuggestWidget.background":"#16161e","editorSuggestWidget.border":"#101014","editorSuggestWidget.highlightForeground":"#6183bb","editorSuggestWidget.selectedBackground":"#20222c","editorWarning.foreground":"#e0af68","editorWhitespace.foreground":"#363b54","editorWidget.background":"#16161e","editorWidget.foreground":"#787c99","editorWidget.resizeBorder":"#545c7e33",errorForeground:"#515670","extensionBadge.remoteBackground":"#3d59a1","extensionBadge.remoteForeground":"#ffffff","extensionButton.prominentBackground":"#3d59a1DD","extensionButton.prominentForeground":"#ffffff","extensionButton.prominentHoverBackground":"#3d59a1AA",focusBorder:"#545c7e33",foreground:"#787c99","gitDecoration.addedResourceForeground":"#449dab","gitDecoration.conflictingResourceForeground":"#e0af68cc","gitDecoration.deletedResourceForeground":"#914c54","gitDecoration.ignoredResourceForeground":"#515670","gitDecoration.modifiedResourceForeground":"#6183bb","gitDecoration.renamedResourceForeground":"#449dab","gitDecoration.stageDeletedResourceForeground":"#914c54","gitDecoration.stageModifiedResourceForeground":"#6183bb","gitDecoration.untrackedResourceForeground":"#449dab","gitlens.gutterBackgroundColor":"#16161e","gitlens.gutterForegroundColor":"#787c99","gitlens.gutterUncommittedForegroundColor":"#7aa2f7","gitlens.trailingLineForegroundColor":"#646e9c","icon.foreground":"#787c99","input.background":"#14141b","input.border":"#0f0f14","input.foreground":"#a9b1d6","input.placeholderForeground":"#787c998A","inputOption.activeBackground":"#3d59a144","inputOption.activeForeground":"#c0caf5","inputValidation.errorBackground":"#85353e","inputValidation.errorBorder":"#963c47","inputValidation.errorForeground":"#bbc2e0","inputValidation.infoBackground":"#3d59a15c","inputValidation.infoBorder":"#3d59a1","inputValidation.infoForeground":"#bbc2e0","inputValidation.warningBackground":"#c2985b","inputValidation.warningBorder":"#e0af68","inputValidation.warningForeground":"#000000","list.activeSelectionBackground":"#202330","list.activeSelectionForeground":"#a9b1d6","list.deemphasizedForeground":"#787c99","list.dropBackground":"#1e202e","list.errorForeground":"#bb616b","list.focusBackground":"#1c1d29","list.focusForeground":"#a9b1d6","list.highlightForeground":"#668ac4","list.hoverBackground":"#13131a","list.hoverForeground":"#a9b1d6","list.inactiveSelectionBackground":"#1c1d29","list.inactiveSelectionForeground":"#a9b1d6","list.invalidItemForeground":"#c97018","list.warningForeground":"#c49a5a","listFilterWidget.background":"#101014","listFilterWidget.noMatchesOutline":"#a6333f","listFilterWidget.outline":"#3d59a1","menu.background":"#16161e","menu.border":"#101014","menu.foreground":"#787c99","menu.selectionBackground":"#1e202e","menu.selectionForeground":"#a9b1d6","menu.separatorBackground":"#101014","menubar.selectionBackground":"#1e202e","menubar.selectionBorder":"#1b1e2e","menubar.selectionForeground":"#a9b1d6","merge.currentContentBackground":"#007a7544","merge.currentHeaderBackground":"#41a6b525","merge.incomingContentBackground":"#3d59a144","merge.incomingHeaderBackground":"#3d59a1aa","mergeEditor.change.background":"#41a6b525","mergeEditor.change.word.background":"#41a6b540","mergeEditor.conflict.handled.minimapOverViewRuler":"#449dab","mergeEditor.conflict.handledFocused.border":"#41a6b565","mergeEditor.conflict.handledUnfocused.border":"#41a6b525","mergeEditor.conflict.unhandled.minimapOverViewRuler":"#e0af68","mergeEditor.conflict.unhandledFocused.border":"#e0af68b0","mergeEditor.conflict.unhandledUnfocused.border":"#e0af6888","minimapGutter.addedBackground":"#1C5957","minimapGutter.deletedBackground":"#944449","minimapGutter.modifiedBackground":"#425882","notebook.cellBorderColor":"#101014","notebook.cellEditorBackground":"#16161e","notebook.cellStatusBarItemHoverBackground":"#1c1d29","notebook.editorBackground":"#1a1b26","notebook.focusedCellBorder":"#29355a","notificationCenterHeader.background":"#101014","notificationLink.foreground":"#6183bb","notifications.background":"#101014","notificationsErrorIcon.foreground":"#bb616b","notificationsInfoIcon.foreground":"#0da0ba","notificationsWarningIcon.foreground":"#bba461","panel.background":"#16161e","panel.border":"#101014","panelInput.border":"#16161e","panelTitle.activeBorder":"#16161e","panelTitle.activeForeground":"#787c99","panelTitle.inactiveForeground":"#42465d","peekView.border":"#101014","peekViewEditor.background":"#16161e","peekViewEditor.matchHighlightBackground":"#3d59a166","peekViewResult.background":"#101014","peekViewResult.fileForeground":"#787c99","peekViewResult.lineForeground":"#a9b1d6","peekViewResult.matchHighlightBackground":"#3d59a166","peekViewResult.selectionBackground":"#3d59a133","peekViewResult.selectionForeground":"#a9b1d6","peekViewTitle.background":"#101014","peekViewTitleDescription.foreground":"#787c99","peekViewTitleLabel.foreground":"#a9b1d6","pickerGroup.border":"#101014","pickerGroup.foreground":"#a9b1d6","progressBar.background":"#3d59a1","sash.hoverBorder":"#29355a","scrollbar.shadow":"#00000033","scrollbarSlider.activeBackground":"#868bc422","scrollbarSlider.background":"#868bc415","scrollbarSlider.hoverBackground":"#868bc410","selection.background":"#515c7e40","settings.headerForeground":"#6183bb","sideBar.background":"#16161e","sideBar.border":"#101014","sideBar.dropBackground":"#1e202e","sideBar.foreground":"#787c99","sideBarSectionHeader.background":"#16161e","sideBarSectionHeader.border":"#101014","sideBarSectionHeader.foreground":"#a9b1d6","sideBarTitle.foreground":"#787c99","statusBar.background":"#16161e","statusBar.border":"#101014","statusBar.debuggingBackground":"#16161e","statusBar.debuggingForeground":"#787c99","statusBar.foreground":"#787c99","statusBar.noFolderBackground":"#16161e","statusBarItem.activeBackground":"#101014","statusBarItem.hoverBackground":"#20222c","statusBarItem.prominentBackground":"#101014","statusBarItem.prominentHoverBackground":"#20222c","tab.activeBackground":"#16161e","tab.activeBorder":"#3d59a1","tab.activeForeground":"#a9b1d6","tab.activeModifiedBorder":"#1a1b26","tab.border":"#101014","tab.hoverForeground":"#a9b1d6","tab.inactiveBackground":"#16161e","tab.inactiveForeground":"#787c99","tab.inactiveModifiedBorder":"#1f202e","tab.lastPinnedBorder":"#222333","tab.unfocusedActiveBorder":"#1f202e","tab.unfocusedActiveForeground":"#a9b1d6","tab.unfocusedHoverForeground":"#a9b1d6","tab.unfocusedInactiveForeground":"#787c99","terminal.ansiBlack":"#363b54","terminal.ansiBlue":"#7aa2f7","terminal.ansiBrightBlack":"#363b54","terminal.ansiBrightBlue":"#7aa2f7","terminal.ansiBrightCyan":"#7dcfff","terminal.ansiBrightGreen":"#41a6b5","terminal.ansiBrightMagenta":"#bb9af7","terminal.ansiBrightRed":"#f7768e","terminal.ansiBrightWhite":"#acb0d0","terminal.ansiBrightYellow":"#e0af68","terminal.ansiCyan":"#7dcfff","terminal.ansiGreen":"#73daca","terminal.ansiMagenta":"#bb9af7","terminal.ansiRed":"#f7768e","terminal.ansiWhite":"#787c99","terminal.ansiYellow":"#e0af68","terminal.background":"#16161e","terminal.foreground":"#787c99","terminal.selectionBackground":"#515c7e4d","textBlockQuote.background":"#16161e","textCodeBlock.background":"#16161e","textLink.activeForeground":"#7dcfff","textLink.foreground":"#6183bb","textPreformat.foreground":"#9699a8","textSeparator.foreground":"#363b54","titleBar.activeBackground":"#16161e","titleBar.activeForeground":"#787c99","titleBar.border":"#101014","titleBar.inactiveBackground":"#16161e","titleBar.inactiveForeground":"#787c99","toolbar.activeBackground":"#202330","toolbar.hoverBackground":"#202330","tree.indentGuidesStroke":"#2b2b3b","walkThrough.embeddedEditorBackground":"#16161e","widget.shadow":"#ffffff00","window.activeBorder":"#0d0f17","window.inactiveBorder":"#0d0f17"},displayName:"Tokyo Night",name:"tokyo-night",semanticTokenColors:{"*.defaultLibrary":{foreground:"#2ac3de"},parameter:{foreground:"#d9d4cd"},"parameter.declaration":{foreground:"#e0af68"},"property.declaration":{foreground:"#73daca"},"property.defaultLibrary":{foreground:"#2ac3de"},variable:{foreground:"#c0caf5"},"variable.declaration":{foreground:"#bb9af7"},"variable.defaultLibrary":{foreground:"#2ac3de"}},tokenColors:[{scope:["comment","meta.var.expr storage.type","keyword.control.flow","keyword.control.return","meta.directive.vue punctuation.separator.key-value.html","meta.directive.vue entity.other.attribute-name.html","tag.decorator.js entity.name.tag.js","tag.decorator.js punctuation.definition.tag.js","storage.modifier"],settings:{fontStyle:"italic"}},{scope:["keyword.control.flow.block-scalar.literal","keyword.control.flow.python"],settings:{fontStyle:""}},{scope:["comment","comment.block.documentation","punctuation.definition.comment","comment.block.documentation punctuation"],settings:{foreground:"#51597d"}},{scope:["keyword.operator.assignment.jsdoc","comment.block.documentation variable","comment.block.documentation storage","comment.block.documentation keyword","comment.block.documentation support","comment.block.documentation markup","comment.block.documentation markup.inline.raw.string.markdown","meta.other.type.phpdoc.php keyword.other.type.php","meta.other.type.phpdoc.php support.other.namespace.php","meta.other.type.phpdoc.php punctuation.separator.inheritance.php","meta.other.type.phpdoc.php support.class","keyword.other.phpdoc.php","log.date"],settings:{foreground:"#5a638c"}},{scope:["meta.other.type.phpdoc.php support.class","comment.block.documentation storage.type","comment.block.documentation punctuation.definition.block.tag","comment.block.documentation entity.name.type.instance"],settings:{foreground:"#646e9c"}},{scope:["variable.other.constant","punctuation.definition.constant","constant.language","constant.numeric","support.constant","constant.other.caps"],settings:{foreground:"#ff9e64"}},{scope:["string","constant.other.symbol","constant.other.key","meta.attribute-selector","string constant.character"],settings:{fontStyle:"",foreground:"#9ece6a"}},{scope:["constant.other.color","constant.other.color.rgb-value.hex punctuation.definition.constant"],settings:{foreground:"#9aa5ce"}},{scope:["invalid","invalid.illegal"],settings:{foreground:"#ff5370"}},{scope:"invalid.deprecated",settings:{foreground:"#bb9af7"}},{scope:"storage.type",settings:{foreground:"#bb9af7"}},{scope:["meta.var.expr storage.type","storage.modifier"],settings:{foreground:"#9d7cd8"}},{scope:["punctuation.definition.template-expression","punctuation.section.embedded","meta.embedded.line.tag.smarty","support.constant.handlebars","punctuation.section.tag.twig"],settings:{foreground:"#7dcfff"}},{scope:["keyword.control.smarty","keyword.control.twig","support.constant.handlebars keyword.control","keyword.operator.comparison.twig","keyword.blade","entity.name.function.blade"],settings:{foreground:"#0db9d7"}},{scope:["keyword.operator.spread","keyword.operator.rest"],settings:{fontStyle:"bold",foreground:"#f7768e"}},{scope:["keyword.operator","keyword.control.as","keyword.other","keyword.operator.bitwise.shift","punctuation","expression.embbeded.vue punctuation.definition.tag","text.html.twig meta.tag.inline.any.html","meta.tag.template.value.twig meta.function.arguments.twig","meta.directive.vue punctuation.separator.key-value.html","punctuation.definition.constant.markdown","punctuation.definition.string","punctuation.support.type.property-name","text.html.vue-html meta.tag","meta.attribute.directive","punctuation.definition.keyword","punctuation.terminator.rule","punctuation.definition.entity","punctuation.separator.inheritance.php","keyword.other.template","keyword.other.substitution","entity.name.operator","meta.property-list punctuation.separator.key-value","meta.at-rule.mixin punctuation.separator.key-value","meta.at-rule.function variable.parameter.url"],settings:{foreground:"#89ddff"}},{scope:["keyword.control.module.js","keyword.control.import","keyword.control.export","keyword.control.from","keyword.control.default","meta.import keyword.other"],settings:{foreground:"#7dcfff"}},{scope:["keyword","keyword.control","keyword.other.important"],settings:{foreground:"#bb9af7"}},{scope:"keyword.other.DML",settings:{foreground:"#7dcfff"}},{scope:["keyword.operator.logical","storage.type.function","keyword.operator.bitwise","keyword.operator.ternary","keyword.operator.comparison","keyword.operator.relational","keyword.operator.or.regexp"],settings:{foreground:"#bb9af7"}},{scope:"entity.name.tag",settings:{foreground:"#f7768e"}},{scope:["entity.name.tag support.class.component","meta.tag.custom entity.name.tag","meta.tag.other.unrecognized.html.derivative entity.name.tag","meta.tag"],settings:{foreground:"#de5971"}},{scope:"punctuation.definition.tag",settings:{foreground:"#ba3c97"}},{scope:["constant.other.php","variable.other.global.safer","variable.other.global.safer punctuation.definition.variable","variable.other.global","variable.other.global punctuation.definition.variable","constant.other"],settings:{foreground:"#e0af68"}},{scope:["variable","support.variable","string constant.other.placeholder","variable.parameter.handlebars","variable.other.object","meta.fstring","meta.function-call meta.function-call.arguments"],settings:{foreground:"#c0caf5"}},{scope:"meta.array.literal variable",settings:{foreground:"#7dcfff"}},{scope:["meta.object-literal.key","entity.name.type.hcl","string.alias.graphql","string.unquoted.graphql","string.unquoted.alias.graphql","meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js","meta.field.declaration.ts variable.object.property","meta.block entity.name.label"],settings:{foreground:"#73daca"}},{scope:["variable.other.property","support.variable.property","support.variable.property.dom","meta.function-call variable.other.object.property"],settings:{foreground:"#7dcfff"}},{scope:"variable.other.object.property",settings:{foreground:"#c0caf5"}},{scope:"meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.objectliteral meta.object.member meta.object-literal.key",settings:{foreground:"#41a6b5"}},{scope:"source.cpp meta.block variable.other",settings:{foreground:"#f7768e"}},{scope:"support.other.variable",settings:{foreground:"#f7768e"}},{scope:["meta.class-method.js entity.name.function.js","entity.name.method.js","variable.function.constructor","keyword.other.special-method","storage.type.cs"],settings:{foreground:"#7aa2f7"}},{scope:["entity.name.function","variable.other.enummember","meta.function-call","meta.function-call entity.name.function","variable.function","meta.definition.method entity.name.function","meta.object-literal entity.name.function"],settings:{foreground:"#7aa2f7"}},{scope:["variable.parameter.function.language.special","variable.parameter","meta.function.parameters punctuation.definition.variable","meta.function.parameter variable"],settings:{foreground:"#e0af68"}},{scope:["keyword.other.type.php","storage.type.php","constant.character","constant.escape","keyword.other.unit"],settings:{foreground:"#bb9af7"}},{scope:["meta.definition.variable variable.other.constant","meta.definition.variable variable.other.readwrite","variable.declaration.hcl variable.other.readwrite.hcl","meta.mapping.key.hcl variable.other.readwrite.hcl","variable.other.declaration"],settings:{foreground:"#bb9af7"}},{scope:"entity.other.inherited-class",settings:{fontStyle:"",foreground:"#bb9af7"}},{scope:["support.class","support.type","variable.other.readwrite.alias","support.orther.namespace.use.php","meta.use.php","support.other.namespace.php","support.type.sys-types","support.variable.dom","support.constant.math","support.type.object.module","support.constant.json","entity.name.namespace","meta.import.qualifier","variable.other.constant.object"],settings:{foreground:"#0db9d7"}},{scope:"entity.name",settings:{foreground:"#c0caf5"}},{scope:"support.function",settings:{foreground:"#0db9d7"}},{scope:["source.css support.type.property-name","source.sass support.type.property-name","source.scss support.type.property-name","source.less support.type.property-name","source.stylus support.type.property-name","source.postcss support.type.property-name","support.type.property-name.css","support.type.vendored.property-name","support.type.map.key"],settings:{foreground:"#7aa2f7"}},{scope:["support.constant.font-name","meta.definition.variable"],settings:{foreground:"#9ece6a"}},{scope:["entity.other.attribute-name.class","meta.at-rule.mixin.scss entity.name.function.scss"],settings:{foreground:"#9ece6a"}},{scope:"entity.other.attribute-name.id",settings:{foreground:"#fc7b7b"}},{scope:"entity.name.tag.css",settings:{foreground:"#0db9d7"}},{scope:["entity.other.attribute-name.pseudo-class punctuation.definition.entity","entity.other.attribute-name.pseudo-element punctuation.definition.entity","entity.other.attribute-name.class punctuation.definition.entity","entity.name.tag.reference"],settings:{foreground:"#e0af68"}},{scope:"meta.property-list",settings:{foreground:"#9abdf5"}},{scope:["meta.property-list meta.at-rule.if","meta.at-rule.return variable.parameter.url","meta.property-list meta.at-rule.else"],settings:{foreground:"#ff9e64"}},{scope:["entity.other.attribute-name.parent-selector-suffix punctuation.definition.entity.css"],settings:{foreground:"#73daca"}},{scope:"meta.property-list meta.property-list",settings:{foreground:"#9abdf5"}},{scope:["meta.at-rule.mixin keyword.control.at-rule.mixin","meta.at-rule.include entity.name.function.scss","meta.at-rule.include keyword.control.at-rule.include"],settings:{foreground:"#bb9af7"}},{scope:["keyword.control.at-rule.include punctuation.definition.keyword","keyword.control.at-rule.mixin punctuation.definition.keyword","meta.at-rule.include keyword.control.at-rule.include","keyword.control.at-rule.extend punctuation.definition.keyword","meta.at-rule.extend keyword.control.at-rule.extend","entity.other.attribute-name.placeholder.css punctuation.definition.entity.css","meta.at-rule.media keyword.control.at-rule.media","meta.at-rule.mixin keyword.control.at-rule.mixin","meta.at-rule.function keyword.control.at-rule.function","keyword.control punctuation.definition.keyword"],settings:{foreground:"#9d7cd8"}},{scope:"meta.property-list meta.at-rule.include",settings:{foreground:"#c0caf5"}},{scope:"support.constant.property-value",settings:{foreground:"#ff9e64"}},{scope:["entity.name.module.js","variable.import.parameter.js","variable.other.class.js"],settings:{foreground:"#c0caf5"}},{scope:"variable.language",settings:{foreground:"#f7768e"}},{scope:"variable.other punctuation.definition.variable",settings:{foreground:"#c0caf5"}},{scope:["source.js constant.other.object.key.js string.unquoted.label.js","variable.language.this punctuation.definition.variable","keyword.other.this"],settings:{foreground:"#f7768e"}},{scope:["entity.other.attribute-name","text.html.basic entity.other.attribute-name.html","text.html.basic entity.other.attribute-name"],settings:{foreground:"#bb9af7"}},{scope:"text.html constant.character.entity",settings:{foreground:"#0DB9D7"}},{scope:["entity.other.attribute-name.id.html","meta.directive.vue entity.other.attribute-name.html"],settings:{foreground:"#bb9af7"}},{scope:"source.sass keyword.control",settings:{foreground:"#7aa2f7"}},{scope:["entity.other.attribute-name.pseudo-class","entity.other.attribute-name.pseudo-element","entity.other.attribute-name.placeholder","meta.property-list meta.property-value"],settings:{foreground:"#bb9af7"}},{scope:"markup.inserted",settings:{foreground:"#449dab"}},{scope:"markup.deleted",settings:{foreground:"#914c54"}},{scope:"markup.changed",settings:{foreground:"#6183bb"}},{scope:"string.regexp",settings:{foreground:"#b4f9f8"}},{scope:"punctuation.definition.group",settings:{foreground:"#f7768e"}},{scope:["constant.other.character-class.regexp"],settings:{foreground:"#bb9af7"}},{scope:["constant.other.character-class.set.regexp","punctuation.definition.character-class.regexp"],settings:{foreground:"#e0af68"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#89ddff"}},{scope:"constant.character.escape.backslash",settings:{foreground:"#c0caf5"}},{scope:"constant.character.escape",settings:{foreground:"#89ddff"}},{scope:["tag.decorator.js entity.name.tag.js","tag.decorator.js punctuation.definition.tag.js"],settings:{foreground:"#7aa2f7"}},{scope:"keyword.other.unit",settings:{foreground:"#f7768e"}},{scope:["source.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#7aa2f7"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#0db9d7"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#7dcfff"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#bb9af7"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#e0af68"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#0db9d7"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#73daca"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#f7768e"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#9ece6a"}},{scope:"punctuation.definition.list_item.markdown",settings:{foreground:"#9abdf5"}},{scope:["meta.block","meta.brace","punctuation.definition.block","punctuation.definition.use","punctuation.definition.class","punctuation.definition.begin.bracket","punctuation.definition.end.bracket","punctuation.definition.switch-expression.begin.bracket","punctuation.definition.switch-expression.end.bracket","punctuation.definition.section.switch-block.begin.bracket","punctuation.definition.section.switch-block.end.bracket","punctuation.definition.group.shell","punctuation.definition.parameters","punctuation.definition.arguments","punctuation.definition.dictionary","punctuation.definition.array","punctuation.section"],settings:{foreground:"#9abdf5"}},{scope:["meta.embedded.block"],settings:{foreground:"#c0caf5"}},{scope:["meta.tag JSXNested","meta.jsx.children","text.html","text.log"],settings:{foreground:"#9aa5ce"}},{scope:"text.html.markdown markup.inline.raw.markdown",settings:{foreground:"#bb9af7"}},{scope:"text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown",settings:{foreground:"#4E5579"}},{scope:["heading.1.markdown entity.name","heading.1.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#89ddff"}},{scope:["heading.2.markdown entity.name","heading.2.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#61bdf2"}},{scope:["heading.3.markdown entity.name","heading.3.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#7aa2f7"}},{scope:["heading.4.markdown entity.name","heading.4.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#6d91de"}},{scope:["heading.5.markdown entity.name","heading.5.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#9aa5ce"}},{scope:["heading.6.markdown entity.name","heading.6.markdown punctuation.definition.heading.markdown"],settings:{fontStyle:"bold",foreground:"#747ca1"}},{scope:["markup.italic","markup.italic punctuation"],settings:{fontStyle:"italic",foreground:"#c0caf5"}},{scope:["markup.bold","markup.bold punctuation"],settings:{fontStyle:"bold",foreground:"#c0caf5"}},{scope:["markup.bold markup.italic","markup.bold markup.italic punctuation"],settings:{fontStyle:"bold italic",foreground:"#c0caf5"}},{scope:["markup.underline","markup.underline punctuation"],settings:{fontStyle:"underline"}},{scope:"markup.quote punctuation.definition.blockquote.markdown",settings:{foreground:"#4e5579"}},{scope:"markup.quote",settings:{fontStyle:"italic"}},{scope:["string.other.link","markup.underline.link","constant.other.reference.link.markdown","string.other.link.description.title.markdown"],settings:{foreground:"#73daca"}},{scope:["markup.fenced_code.block.markdown","markup.inline.raw.string.markdown","variable.language.fenced.markdown"],settings:{foreground:"#89ddff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#51597d"}},{scope:"markup.table",settings:{foreground:"#c0cefc"}},{scope:"token.info-token",settings:{foreground:"#0db9d7"}},{scope:"token.warn-token",settings:{foreground:"#ffdb69"}},{scope:"token.error-token",settings:{foreground:"#db4b4b"}},{scope:"token.debug-token",settings:{foreground:"#b267e6"}},{scope:"entity.tag.apacheconf",settings:{foreground:"#f7768e"}},{scope:["meta.preprocessor"],settings:{foreground:"#73daca"}},{scope:"source.env",settings:{foreground:"#7aa2f7"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/toml.BT9ZzGyQ.js b/assets/chunks/toml.BT9ZzGyQ.js new file mode 100644 index 000000000..a3fe0f178 --- /dev/null +++ b/assets/chunks/toml.BT9ZzGyQ.js @@ -0,0 +1,69 @@ +const n=Object.freeze({displayName:"TOML",fileTypes:["toml"],name:"toml",patterns:[{include:"#comments"},{include:"#groups"},{include:"#key_pair"},{include:"#invalid"}],repository:{comments:{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.toml"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.toml"}},end:"\\n",name:"comment.line.number-sign.toml"}]},groups:{patterns:[{captures:{1:{name:"punctuation.definition.section.begin.toml"},2:{patterns:[{match:"[^\\s.]+",name:"entity.name.section.toml"}]},3:{name:"punctuation.definition.section.begin.toml"}},match:"^\\s*(\\[)([^\\[\\]]*)(\\])",name:"meta.group.toml"},{captures:{1:{name:"punctuation.definition.section.begin.toml"},2:{patterns:[{match:"[^\\s.]+",name:"entity.name.section.toml"}]},3:{name:"punctuation.definition.section.begin.toml"}},match:"^\\s*(\\[\\[)([^\\[\\]]*)(\\]\\])",name:"meta.group.double.toml"}]},invalid:{match:"\\S+(\\s*(?=\\S))?",name:"invalid.illegal.not-allowed-here.toml"},key_pair:{patterns:[{begin:"([A-Za-z0-9_-]+)\\s*(=)\\s*",captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:'((")(.*?)("))\\s*(=)\\s*',captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.definition.variable.begin.toml"},3:{patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"},{match:'"',name:"invalid.illegal.not-allowed-here.toml"}]},4:{name:"punctuation.definition.variable.end.toml"},5:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:"((')([^']*)('))\\s*(=)\\s*",captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.definition.variable.begin.toml"},4:{name:"punctuation.definition.variable.end.toml"},5:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:`(?x) +( +( +(?: +[A-Za-z0-9_-]+ +| " (?:[^"\\\\]|\\\\.)* " +| ' [^']* ' +) +(?: +\\s* \\. \\s* +| (?= \\s* =) +) +){2,} +) +\\s*(=)\\s* +`,captures:{1:{name:"variable.other.key.toml",patterns:[{match:"\\.",name:"punctuation.separator.variable.toml"},{captures:{1:{name:"punctuation.definition.variable.begin.toml"},2:{patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"}]},3:{name:"punctuation.definition.variable.end.toml"}},match:'(")((?:[^"\\\\]|\\\\.)*)(")'},{captures:{1:{name:"punctuation.definition.variable.begin.toml"},2:{name:"punctuation.definition.variable.end.toml"}},match:"(')[^']*(')"}]},3:{name:"punctuation.separator.key-value.toml"}},comment:"Dotted key",end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]}]},primatives:{patterns:[{begin:'\\G"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:'"{3,5}',endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.triple.double.toml",patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\\\n]',name:"invalid.illegal.escape.toml"}]},{begin:'\\G"',beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.double.toml",patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"}]},{begin:"\\G'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:"'{3,5}",endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.triple.single.toml"},{begin:"\\G'",beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.single.toml"},{match:`\\G(?x) +[0-9]{4} +- +(0[1-9]|1[012]) +- +(?!00|3[2-9])[0-3][0-9] +( +[Tt ] +(?!2[5-9])[0-2][0-9] +: +[0-5][0-9] +: +(?!6[1-9])[0-6][0-9] +(\\.[0-9]+)? +( +Z +| [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9] +)? +)? +`,name:"constant.other.date.toml"},{match:`\\G(?x) +(?!2[5-9])[0-2][0-9] +: +[0-5][0-9] +: +(?!6[1-9])[0-6][0-9] +(\\.[0-9]+)? +`,name:"constant.other.time.toml"},{match:"\\G(true|false)",name:"constant.language.boolean.toml"},{match:"\\G0x\\h(\\h|_\\h)*",name:"constant.numeric.hex.toml"},{match:"\\G0o[0-7]([0-7]|_[0-7])*",name:"constant.numeric.octal.toml"},{match:"\\G0b[01]([01]|_[01])*",name:"constant.numeric.binary.toml"},{match:"\\G[+-]?(inf|nan)",name:"constant.numeric.toml"},{match:`(?x) +\\G +( +[+-]? +( +0 +| ([1-9](([0-9]|_[0-9])+)?) +) +) +(?=[.eE]) +( +\\. +([0-9](([0-9]|_[0-9])+)?) +)? +( +[eE] +([+-]?[0-9](([0-9]|_[0-9])+)?) +)? +`,name:"constant.numeric.float.toml"},{match:`(?x) +\\G +( +[+-]? +( +0 +| ([1-9](([0-9]|_[0-9])+)?) +) +) +`,name:"constant.numeric.integer.toml"},{begin:"\\G\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.toml"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.toml"}},name:"meta.array.toml",patterns:[{begin:`(?=["'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\[|\\{)`,end:",|(?=])",endCaptures:{0:{name:"punctuation.separator.array.toml"}},patterns:[{include:"#primatives"},{include:"#comments"},{include:"#invalid"}]},{include:"#comments"},{include:"#invalid"}]},{begin:"\\G\\{",beginCaptures:{0:{name:"punctuation.definition.inline-table.begin.toml"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.inline-table.end.toml"}},name:"meta.inline-table.toml",patterns:[{begin:"(?=\\S)",end:",|(?=})",endCaptures:{0:{name:"punctuation.separator.inline-table.toml"}},patterns:[{include:"#key_pair"}]},{include:"#comments"}]}]}},scopeName:"source.toml"});var e=[n];export{e as default}; diff --git a/assets/chunks/tsv.DnLUQrgA.js b/assets/chunks/tsv.DnLUQrgA.js new file mode 100644 index 000000000..e0dd753ea --- /dev/null +++ b/assets/chunks/tsv.DnLUQrgA.js @@ -0,0 +1 @@ +const t=Object.freeze({displayName:"TSV",fileTypes:["tsv","tab"],name:"tsv",patterns:[{captures:{1:{name:"rainbow1"},2:{name:"keyword.rainbow2"},3:{name:"entity.name.function.rainbow3"},4:{name:"comment.rainbow4"},5:{name:"string.rainbow5"},6:{name:"variable.parameter.rainbow6"},7:{name:"constant.numeric.rainbow7"},8:{name:"entity.name.type.rainbow8"},9:{name:"markup.bold.rainbow9"},10:{name:"invalid.rainbow10"}},match:"([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)([^\\t]*\\t?)",name:"rainbowgroup"}],scopeName:"text.tsv"});var a=[t];export{a as default}; diff --git a/assets/chunks/tsx.BlxWTfDV.js b/assets/chunks/tsx.BlxWTfDV.js new file mode 100644 index 000000000..cf98b7630 --- /dev/null +++ b/assets/chunks/tsx.BlxWTfDV.js @@ -0,0 +1,699 @@ +const e=Object.freeze({displayName:"TSX",name:"tsx",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"},"after-operator-block-as-object-literal":{begin:"(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.objectliteral.tsx",patterns:[{include:"#object-member"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.array.tsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.tsx"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.array.tsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.tsx"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.tsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.tsx"}},name:"meta.array.literal.tsx",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.tsx"},2:{name:"variable.parameter.tsx"}},match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",name:"meta.arrow.tsx"},{begin:`(?x) (?: +(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync) +)? ((?<![})!\\]])\\s* +(?= + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +) +)`,beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.tsx",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.tsx"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.tsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.return.type.arrow.tsx",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"async-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.async.tsx"},"binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern"},{include:"#array-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"}]},"binding-element-const":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern-const"},{include:"#array-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"}]},"boolean-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.true.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.false.tsx"}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},cast:{patterns:[{include:"#jsx"}]},"class-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.type.class.tsx"}},end:"(?<=\\})",name:"meta.class.tsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.class.tsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"storage.type.class.tsx"}},end:"(?<=\\})",name:"meta.class.tsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},patterns:[{include:"#comment"},{include:"#decorator"},{begin:"(?<=:)\\s*",end:"(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#field-declaration"},{include:"#string"},{include:"#type-annotation"},{include:"#variable-initializer"},{include:"#access-modifier"},{include:"#property-accessor"},{include:"#async-modifier"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},"class-or-interface-heritage":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.tsx"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{include:"#type-parameters"},{include:"#expressionWithoutIdentifiers"},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)"},{captures:{1:{name:"entity.other.inherited-class.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#expressionPunctuations"}]},comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.tsx"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.tsx"}},name:"comment.block.documentation.tsx",patterns:[{include:"#docblock"}]},{begin:"(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",beginCaptures:{1:{name:"punctuation.definition.comment.tsx"},2:{name:"storage.type.internaldeclaration.tsx"},3:{name:"punctuation.decorator.internaldeclaration.tsx"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.tsx"}},name:"comment.block.tsx"},{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.tsx"},2:{name:"comment.line.double-slash.tsx"},3:{name:"punctuation.definition.comment.tsx"},4:{name:"storage.type.internaldeclaration.tsx"},5:{name:"punctuation.decorator.internaldeclaration.tsx"}},contentName:"comment.line.double-slash.tsx",end:"(?=$)"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.trycatch.tsx"},{captures:{1:{name:"keyword.control.loop.tsx"},2:{name:"entity.name.label.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.loop.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.tsx"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.switch.tsx"},{include:"#if-statement"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.conditional.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.with.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.other.debugger.tsx"}]},"decl-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.block.tsx",patterns:[{include:"#statements"}]},declaration:{patterns:[{include:"#decorator"},{include:"#var-expr"},{include:"#function-declaration"},{include:"#class-declaration"},{include:"#interface-declaration"},{include:"#enum-declaration"},{include:"#namespace-declaration"},{include:"#type-alias-declaration"},{include:"#import-equals-declaration"},{include:"#import-declaration"},{include:"#export-declaration"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"}]},decorator:{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.tsx"}},end:"(?=\\s)",name:"meta.decorator.tsx",patterns:[{include:"#expression"}]},"destructuring-const":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.tsx",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.tsx",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-parameter":{patterns:[{begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.object.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.tsx"}},name:"meta.parameter.object-binding-pattern.tsx",patterns:[{include:"#parameter-object-binding-element"}]},{begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.array.tsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.tsx"}},name:"meta.paramter.array-binding-pattern.tsx",patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"destructuring-parameter-rest":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"variable.parameter.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.tsx",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.tsx",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-variable-rest":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"meta.definition.variable.tsx variable.other.readwrite.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable-rest-const":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"meta.definition.variable.tsx variable.other.constant.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},directives:{begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.tsx"}},end:"(?=$)",name:"comment.line.triple-slash.directive.tsx",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.tsx"},2:{name:"entity.name.tag.directive.tsx"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.tsx"}},name:"meta.tag.tsx",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.tsx"},{match:"=",name:"keyword.operator.assignment.tsx"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"(</)caption(>)|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.tsx"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.tsx"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|satisfies|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.type.enum.tsx"},5:{name:"entity.name.type.enum.tsx"}},end:"(?<=\\})",name:"meta.enum.declaration.tsx",patterns:[{include:"#comment"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},patterns:[{include:"#comment"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{0:{name:"variable.other.enummember.tsx"}},end:"(?=,|\\}|$)",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},{begin:"(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",end:"(?=,|\\}|$)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#comment"},{include:"#variable-initializer"}]},{include:"#punctuation-comma"}]}]},"export-declaration":{patterns:[{captures:{1:{name:"keyword.control.export.tsx"},2:{name:"keyword.control.as.tsx"},3:{name:"storage.type.namespace.tsx"},4:{name:"entity.name.type.module.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"keyword.control.type.tsx"},3:{name:"keyword.operator.assignment.tsx"},4:{name:"keyword.control.default.tsx"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.default.tsx",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"keyword.control.type.tsx"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.tsx",patterns:[{include:"#import-export-declaration"}]}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)"},{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"entity.name.function.tsx variable.language.this.tsx"},4:{name:"entity.name.function.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"variable.parameter.tsx variable.language.this.tsx"},4:{name:"variable.parameter.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)"},{include:"#type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.tsx"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-operators":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.flow.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",beginCaptures:{1:{name:"keyword.control.flow.tsx"}},end:"\\*",endCaptures:{0:{name:"keyword.generator.asterisk.tsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.control.flow.tsx"},2:{name:"keyword.generator.asterisk.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.delete.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.in.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.of.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.instanceof.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.new.tsx"},{include:"#typeof-operator"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.void.tsx"},{captures:{1:{name:"keyword.control.as.tsx"},2:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.tsx"},2:{name:"keyword.control.satisfies.tsx"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{match:"\\.\\.\\.",name:"keyword.operator.spread.tsx"},{match:"\\*=|(?<!\\()/=|%=|\\+=|\\-=",name:"keyword.operator.assignment.compound.tsx"},{match:"\\&=|\\^=|<<=|>>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.tsx"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.tsx"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.tsx"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.tsx"},{captures:{1:{name:"keyword.operator.logical.tsx"},2:{name:"keyword.operator.assignment.compound.tsx"},3:{name:"keyword.operator.arithmetic.tsx"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.tsx"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.tsx"},{match:"\\=",name:"keyword.operator.assignment.tsx"},{match:"--",name:"keyword.operator.decrement.tsx"},{match:"\\+\\+",name:"keyword.operator.increment.tsx"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.tsx"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.tsx"},2:{name:"keyword.operator.arithmetic.tsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.tsx"},2:{name:"keyword.operator.arithmetic.tsx"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#jsx"},{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},"field-declaration":{begin:`(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))`,beginCaptures:{1:{name:"storage.modifier.tsx"}},end:`(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,name:"meta.field.declaration.tsx",patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{captures:{1:{name:"meta.definition.property.tsx entity.name.function.tsx"},2:{name:"keyword.operator.optional.tsx"},3:{name:"keyword.operator.definiteassignment.tsx"}},match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.tsx variable.object.property.tsx"},{match:"\\?",name:"keyword.operator.optional.tsx"},{match:"\\!",name:"keyword.operator.definiteassignment.tsx"}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.tsx"}},end:"(?<=\\))",patterns:[{include:"#comment"},{match:"await",name:"keyword.control.loop.tsx"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#var-expr"},{include:"#expression"},{include:"#punctuation-semicolon"}]}]},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{match:"\\*",name:"keyword.generator.asterisk.tsx"}]},"function-call":{patterns:[{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",name:"meta.function-call.tsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.tsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.tsx punctuation.accessor.optional.tsx"},{match:"\\!",name:"meta.function-call.tsx keyword.operator.definiteassignment.tsx"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tsx"}]},"function-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.async.tsx"},4:{name:"storage.type.function.tsx"},5:{name:"keyword.generator.asterisk.tsx"},6:{name:"meta.definition.function.tsx entity.name.function.tsx"}},end:"(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})",name:"meta.function.tsx",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"storage.modifier.async.tsx"},2:{name:"storage.type.function.tsx"},3:{name:"keyword.generator.asterisk.tsx"},4:{name:"meta.definition.function.tsx entity.name.function.tsx"}},end:"(?=;)|(?<=\\})",name:"meta.function.expression.tsx",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.function.tsx entity.name.function.tsx"},"function-parameters":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.tsx"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.tsx"}},name:"meta.parameters.tsx",patterns:[{include:"#function-parameters-body"}]},"function-parameters-body":{patterns:[{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{include:"#parameter-name"},{include:"#parameter-type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.tsx"}]},identifiers:{patterns:[{include:"#object-identifiers"},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"entity.name.function.tsx"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"variable.other.constant.property.tsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"variable.other.property.tsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.tsx"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.tsx"}]},"if-statement":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",end:"(?=;|$|\\})",patterns:[{include:"#comment"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.conditional.tsx"},2:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression"}]},{begin:"(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.tsx"},2:{name:"keyword.other.tsx"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"import-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"keyword.control.import.tsx"},4:{name:"keyword.control.type.tsx"}},end:"(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",name:"meta.import.tsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#string"},{begin:`(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,end:"\\bfrom\\b",endCaptures:{0:{name:"keyword.control.from.tsx"}},patterns:[{include:"#import-export-declaration"}]},{include:"#import-export-declaration"}]},"import-equals-declaration":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"keyword.control.import.tsx"},4:{name:"keyword.control.type.tsx"},5:{name:"variable.other.readwrite.alias.tsx"},6:{name:"keyword.operator.assignment.tsx"},7:{name:"keyword.control.require.tsx"},8:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},name:"meta.import-equals.external.tsx",patterns:[{include:"#comment"},{include:"#string"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"keyword.control.import.tsx"},4:{name:"keyword.control.type.tsx"},5:{name:"variable.other.readwrite.alias.tsx"},6:{name:"keyword.operator.assignment.tsx"}},end:"(?=;|$|^)",name:"meta.import-equals.internal.tsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.readwrite.tsx"}]}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(with)|(assert))\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.with.tsx"},2:{name:"keyword.control.assert.tsx"},3:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},patterns:[{include:"#comment"},{include:"#string"},{match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object-literal.key.tsx"},{match:":",name:"punctuation.separator.key-value.tsx"}]},"import-export-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.block.tsx",patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{captures:{1:{name:"keyword.control.type.tsx"},2:{name:"keyword.control.default.tsx"},3:{name:"constant.language.import-export-all.tsx"},4:{name:"variable.other.readwrite.tsx"},5:{name:"keyword.control.as.tsx"},6:{name:"keyword.control.default.tsx"},7:{name:"variable.other.readwrite.alias.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))"},{include:"#punctuation-comma"},{match:"\\*",name:"constant.language.import-export-all.tsx"},{match:"\\b(default)\\b",name:"keyword.control.default.tsx"},{captures:{1:{name:"keyword.control.type.tsx"},2:{name:"variable.other.readwrite.alias.tsx"}},match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{match:"\\bfrom\\b",name:"keyword.control.from.tsx"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"indexer-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"meta.brace.square.tsx"},3:{name:"variable.parameter.tsx"}},end:"(\\])\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.tsx"},2:{name:"keyword.operator.optional.tsx"}},name:"meta.indexer.declaration.tsx",patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",beginCaptures:{1:{name:"keyword.operator.type.modifier.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"meta.brace.square.tsx"},4:{name:"entity.name.type.tsx"},5:{name:"keyword.operator.expression.in.tsx"}},end:"(\\])([+-])?\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.tsx"},2:{name:"keyword.operator.type.modifier.tsx"},3:{name:"keyword.operator.optional.tsx"}},name:"meta.indexer.mappedtype.declaration.tsx",patterns:[{captures:{1:{name:"keyword.control.as.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+"},{include:"#type"}]},"inline-tags":{patterns:[{captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}},match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",name:"constant.other.description.jsdoc"},{begin:"({)((@)(?:link(?:code|plain)?|tutorial))\\s*",beginCaptures:{1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"},2:{name:"storage.type.class.jsdoc"},3:{name:"punctuation.definition.inline.tag.jsdoc"}},end:"}|(?=\\*/)",endCaptures:{0:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},name:"entity.name.type.instance.jsdoc",patterns:[{captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"},{captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"}]}]},"instanceof-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.expression.instanceof.tsx"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",patterns:[{include:"#type"}]},"interface-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.type.interface.tsx"}},end:"(?<=\\})",name:"meta.interface.tsx",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.interface.tsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},jsdoctype:{patterns:[{begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},contentName:"entity.name.type.instance.jsdoc",end:"((}))\\s*|(?=\\*/)",endCaptures:{1:{name:"entity.name.type.instance.jsdoc"},2:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},patterns:[{include:"#brackets"}]}]},jsx:{patterns:[{include:"#jsx-tag-without-attributes-in-expression"},{include:"#jsx-tag-in-expression"}]},"jsx-children":{patterns:[{include:"#jsx-tag-without-attributes"},{include:"#jsx-tag"},{include:"#jsx-evaluated-code"},{include:"#jsx-entities"}]},"jsx-entities":{patterns:[{captures:{1:{name:"punctuation.definition.entity.tsx"},3:{name:"punctuation.definition.entity.tsx"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.tsx"}]},"jsx-evaluated-code":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.tsx"}},contentName:"meta.embedded.expression.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.tsx"}},patterns:[{include:"#expression"}]},"jsx-string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.tsx"}},name:"string.quoted.double.tsx",patterns:[{include:"#jsx-entities"}]},"jsx-string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.tsx"}},name:"string.quoted.single.tsx",patterns:[{include:"#jsx-entities"}]},"jsx-tag":{begin:"(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",end:"(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",endCaptures:{1:{name:"punctuation.definition.tag.end.tsx"},2:{name:"punctuation.definition.tag.begin.tsx"},3:{name:"entity.name.tag.namespace.tsx"},4:{name:"punctuation.separator.namespace.tsx"},5:{name:"entity.name.tag.tsx"},6:{name:"support.class.component.tsx"},7:{name:"punctuation.definition.tag.end.tsx"}},name:"meta.tag.tsx",patterns:[{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.tsx"},2:{name:"entity.name.tag.namespace.tsx"},3:{name:"punctuation.separator.namespace.tsx"},4:{name:"entity.name.tag.tsx"},5:{name:"support.class.component.tsx"}},end:"(?=[/]?>)",patterns:[{include:"#comment"},{include:"#type-arguments"},{include:"#jsx-tag-attributes"}]},{begin:"(>)",beginCaptures:{1:{name:"punctuation.definition.tag.end.tsx"}},contentName:"meta.jsx.children.tsx",end:"(?=</)",patterns:[{include:"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{match:`=(?=\\s*(?:'|"|{|/\\*|//|\\n))`,name:"keyword.operator.assignment.tsx"},"jsx-tag-attribute-name":{captures:{1:{name:"entity.other.attribute-name.namespace.tsx"},2:{name:"punctuation.separator.namespace.tsx"},3:{name:"entity.other.attribute-name.tsx"}},match:`(?x) +\\s* +(?:([_$[:alpha:]][-_$[:alnum:].]*)(:))? +([_$[:alpha:]][-_$[:alnum:]]*) +(?=\\s|=|/?>|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.tsx",patterns:[{include:"#comment"},{include:"#jsx-tag-attribute-name"},{include:"#jsx-tag-attribute-assignment"},{include:"#jsx-string-double-quoted"},{include:"#jsx-string-single-quoted"},{include:"#jsx-evaluated-code"},{include:"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.tsx"},"jsx-tag-in-expression":{begin:`(?x) +(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* +(?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) +(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))`,end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",patterns:[{include:"#jsx-tag"}]},"jsx-tag-without-attributes":{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.tsx"},2:{name:"entity.name.tag.namespace.tsx"},3:{name:"punctuation.separator.namespace.tsx"},4:{name:"entity.name.tag.tsx"},5:{name:"support.class.component.tsx"},6:{name:"punctuation.definition.tag.end.tsx"}},contentName:"meta.jsx.children.tsx",end:"(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.tsx"},2:{name:"entity.name.tag.namespace.tsx"},3:{name:"punctuation.separator.namespace.tsx"},4:{name:"entity.name.tag.tsx"},5:{name:"support.class.component.tsx"},6:{name:"punctuation.definition.tag.end.tsx"}},name:"meta.tag.without-attributes.tsx",patterns:[{include:"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{begin:"(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",patterns:[{include:"#jsx-tag-without-attributes"}]},label:{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",beginCaptures:{1:{name:"entity.name.label.tsx"},2:{name:"punctuation.separator.label.tsx"}},end:"(?<=\\})",patterns:[{include:"#decl-block"}]},{captures:{1:{name:"entity.name.label.tsx"},2:{name:"punctuation.separator.label.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},literal:{patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#array-literal"},{include:"#this-literal"},{include:"#super-literal"}]},"method-declaration":{patterns:[{begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.modifier.async.tsx"},5:{name:"storage.type.tsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.modifier.async.tsx"},5:{name:"keyword.operator.new.tsx"},6:{name:"keyword.generator.asterisk.tsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.modifier.tsx"},4:{name:"storage.modifier.async.tsx"},5:{name:"storage.type.property.tsx"},6:{name:"keyword.generator.asterisk.tsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.method.tsx entity.name.function.tsx"},{match:"\\?",name:"keyword.operator.optional.tsx"}]},"namespace-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.namespace.tsx"}},end:"(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.namespace.declaration.tsx",patterns:[{include:"#comment"},{include:"#string"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.type.module.tsx"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"new-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.tsx"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",name:"new.expr.tsx",patterns:[{include:"#expression"}]},"null-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.null.tsx"},"numeric-literal":{patterns:[{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",name:"constant.numeric.hex.tsx"},{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",name:"constant.numeric.binary.tsx"},{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",name:"constant.numeric.octal.tsx"},{captures:{0:{name:"constant.numeric.decimal.tsx"},1:{name:"meta.delimiter.decimal.period.tsx"},2:{name:"storage.type.numeric.bigint.tsx"},3:{name:"meta.delimiter.decimal.period.tsx"},4:{name:"storage.type.numeric.bigint.tsx"},5:{name:"meta.delimiter.decimal.period.tsx"},6:{name:"storage.type.numeric.bigint.tsx"},7:{name:"storage.type.numeric.bigint.tsx"},8:{name:"meta.delimiter.decimal.period.tsx"},9:{name:"storage.type.numeric.bigint.tsx"},10:{name:"meta.delimiter.decimal.period.tsx"},11:{name:"storage.type.numeric.bigint.tsx"},12:{name:"meta.delimiter.decimal.period.tsx"},13:{name:"storage.type.numeric.bigint.tsx"},14:{name:"storage.type.numeric.bigint.tsx"}},match:`(?x) +(?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$)`}]},"numericConstant-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.nan.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.infinity.tsx"}]},"object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element"}]},{include:"#object-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-const":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element-const"}]},{include:"#object-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-propertyName":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.tsx"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.object.property.tsx"}]},"object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.object.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.tsx"}},patterns:[{include:"#object-binding-element"}]},"object-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.object.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.tsx"}},patterns:[{include:"#object-binding-element-const"}]},"object-identifiers":{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))",name:"support.class.tsx"},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"variable.other.constant.object.property.tsx"},4:{name:"variable.other.object.property.tsx"}},match:`(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?: +(\\#?[[:upper:]][_$[:digit:][:upper:]]*) | +(\\#?[_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"variable.other.constant.object.tsx"},2:{name:"variable.other.object.tsx"}},match:`(?x)(?: +([[:upper:]][_$[:digit:][:upper:]]*) | +([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.objectliteral.tsx",patterns:[{include:"#object-member"}]},"object-literal-method-declaration":{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.tsx"},2:{name:"storage.type.property.tsx"},3:{name:"keyword.generator.asterisk.tsx"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.tsx"},2:{name:"storage.type.property.tsx"},3:{name:"keyword.generator.asterisk.tsx"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#function-body"}]},{captures:{0:{name:"meta.object-literal.key.tsx"},1:{name:"constant.numeric.decimal.tsx"}},match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.tsx"},{captures:{0:{name:"meta.object-literal.key.tsx"},1:{name:"entity.name.function.tsx"}},match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.tsx"},{captures:{0:{name:"meta.object-literal.key.tsx"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.tsx"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.tsx"}},end:"(?=,|\\})",name:"meta.object.member.tsx",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.tsx"},{captures:{1:{name:"keyword.control.as.tsx"},2:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",name:"meta.object.member.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.tsx"},2:{name:"keyword.control.satisfies.tsx"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",name:"meta.object.member.tsx",patterns:[{include:"#type"}]},{begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.tsx",patterns:[{include:"#expression"}]},{begin:":",beginCaptures:{0:{name:"meta.object-literal.key.tsx punctuation.separator.key-value.tsx"}},end:"(?=,|\\})",name:"meta.object.member.tsx",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.tsx"},2:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.array.tsx"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.tsx"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)"},{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"entity.name.function.tsx variable.language.this.tsx"},4:{name:"entity.name.function.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"variable.parameter.tsx variable.language.this.tsx"},4:{name:"variable.parameter.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)"}]},"parameter-object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"parameter-object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"punctuation.definition.binding-pattern.object.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.tsx"}},patterns:[{include:"#parameter-object-binding-element"}]},"parameter-type-annotation":{patterns:[{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?=[,)])|(?==[^>])",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"}},contentName:"meta.arrow.tsx meta.return.type.arrow.tsx",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.type.property.tsx"},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.tsx"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.tsx"},"qstring-double":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:'(")|((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.tsx"},2:{name:"invalid.illegal.newline.tsx"}},name:"string.quoted.double.tsx",patterns:[{include:"#string-character-escape"}]},"qstring-single":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.string.end.tsx"},2:{name:"invalid.illegal.newline.tsx"}},name:"string.quoted.single.tsx",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{begin:"(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.tsx"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.tsx"},2:{name:"keyword.other.tsx"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]},{begin:"((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.tsx"},2:{name:"keyword.other.tsx"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrnvf]|\\.",name:"constant.other.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},regexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}},match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"punctuation.definition.group.assertion.regexp"},3:{name:"meta.assertion.look-ahead.regexp"},4:{name:"meta.assertion.negative-look-ahead.regexp"},5:{name:"meta.assertion.look-behind.regexp"},6:{name:"meta.assertion.negative-look-behind.regexp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.regexp"}},name:"meta.group.assertion.regexp",patterns:[{include:"#regexp"}]},{begin:"\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",name:"meta.return.type.tsx",patterns:[{include:"#return-type-core"}]},{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.return.type.tsx",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.tsx"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.tsx"},"single-line-comment-consuming-line-ending":{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.tsx"},2:{name:"comment.line.double-slash.tsx"},3:{name:"punctuation.definition.comment.tsx"},4:{name:"storage.type.internaldeclaration.tsx"},5:{name:"punctuation.decorator.internaldeclaration.tsx"}},contentName:"comment.line.double-slash.tsx",end:"(?=^)"},statements:{patterns:[{include:"#declaration"},{include:"#control-statement"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#label"},{include:"#expression"},{include:"#punctuation-semicolon"},{include:"#string"},{include:"#comment"}]},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{match:"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",name:"constant.character.escape.tsx"},"super-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",name:"variable.language.super.tsx"},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))",name:"keyword.operator.expression.import.tsx"}]},"support-objects":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)",name:"variable.language.arguments.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)",name:"support.class.promise.tsx"},{captures:{1:{name:"keyword.control.import.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"},4:{name:"support.variable.property.importmeta.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)"},{captures:{1:{name:"keyword.operator.new.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"},4:{name:"support.variable.property.target.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)"},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"support.variable.property.tsx"},4:{name:"support.constant.tsx"}},match:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?: +(?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) +| +(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`},{captures:{1:{name:"support.type.object.module.tsx"},2:{name:"support.type.object.module.tsx"},3:{name:"punctuation.accessor.tsx"},4:{name:"punctuation.accessor.optional.tsx"},5:{name:"support.type.object.module.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)"}]},"switch-statement":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"switch-statement.expr.tsx",patterns:[{include:"#comment"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.switch.tsx"},2:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},name:"switch-expression.expr.tsx",patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"(?=\\})",name:"switch-block.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.tsx"}},end:"(?=:)",name:"case-clause.expr.tsx",patterns:[{include:"#expression"}]},{begin:"(:)\\s*(\\{)",beginCaptures:{1:{name:"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"},2:{name:"meta.block.tsx punctuation.definition.block.tsx"}},contentName:"meta.block.tsx",end:"\\}",endCaptures:{0:{name:"meta.block.tsx punctuation.definition.block.tsx"}},patterns:[{include:"#statements"}]},{captures:{0:{name:"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"}},match:"(:)"},{include:"#statements"}]}]},template:{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.tsx"},2:{name:"string.template.tsx punctuation.definition.string.template.begin.tsx"}},contentName:"string.template.tsx",end:"`",endCaptures:{0:{name:"string.template.tsx punctuation.definition.string.template.end.tsx"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.tsx"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.tsx"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.tsx"}},contentName:"meta.embedded.line.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.tsx"}},name:"meta.template.expression.tsx",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.tsx"},2:{name:"string.template.tsx punctuation.definition.string.template.begin.tsx"}},contentName:"string.template.tsx",end:"`",endCaptures:{0:{name:"string.template.tsx punctuation.definition.string.template.end.tsx"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.tsx"}},contentName:"meta.embedded.line.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.tsx"}},name:"meta.template.expression.tsx",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.tsx"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.tsx"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)",name:"variable.language.this.tsx"},type:{patterns:[{include:"#comment"},{include:"#type-string"},{include:"#numeric-literal"},{include:"#type-primitive"},{include:"#type-builtin-literals"},{include:"#type-parameters"},{include:"#type-tuple"},{include:"#type-object"},{include:"#type-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*"},{include:"#type-name"}]},"type-alias-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.type.tsx"},4:{name:"entity.name.type.alias.tsx"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.type.declaration.tsx",patterns:[{include:"#comment"},{include:"#type-parameters"},{begin:"(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.assignment.tsx"},2:{name:"keyword.control.intrinsic.tsx"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.tsx"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]}]},"type-annotation":{patterns:[{begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.tsx"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.tsx"}},name:"meta.type.parameters.tsx",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"}]},"type-builtin-literals":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.builtin.tsx"},"type-conditional":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.tsx"}},end:"(?<=:)",patterns:[{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.tsx"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.tsx"}},patterns:[{include:"#type"}]},{include:"#type"}]}]},"type-fn-type-parameters":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",beginCaptures:{1:{name:"meta.type.constructor.tsx storage.modifier.tsx"},2:{name:"meta.type.constructor.tsx keyword.control.new.tsx"}},end:"(?<=>)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.control.new.tsx"}},end:"(?<=\\))",name:"meta.type.constructor.tsx",patterns:[{include:"#function-parameters"}]},{begin:`(?x)( +(?= +[(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +) +) +)`,end:"(?<=\\))",name:"meta.type.function.tsx",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.tsx"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",name:"meta.type.function.return.tsx",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.tsx"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.tsx",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.tsx"},2:{name:"entity.name.type.tsx"},3:{name:"keyword.operator.expression.extends.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.tsx"}]},"type-name":{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"},4:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},contentName:"meta.type.parameters.tsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.tsx"},2:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},contentName:"meta.type.parameters.tsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.tsx"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.object.type.tsx",patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.tsx"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.tsx"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.tsx"}},end:"(?=\\S)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.keyof.tsx"},{match:"(\\?|\\:)",name:"keyword.operator.ternary.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()",name:"keyword.operator.expression.import.tsx"}]},"type-parameters":{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.tsx"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.tsx"}},name:"meta.type.parameters.tsx",patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"},{include:"#type"},{include:"#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.tsx"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},name:"meta.type.paren.cover.tsx",patterns:[{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"entity.name.function.tsx variable.language.this.tsx"},4:{name:"entity.name.function.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`},{captures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.operator.rest.tsx"},3:{name:"variable.parameter.tsx variable.language.this.tsx"},4:{name:"variable.parameter.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)"},{include:"#type-annotation"},{match:",",name:"punctuation.separator.parameter.tsx"},{include:"#type"}]},"type-predicate-operator":{patterns:[{captures:{1:{name:"keyword.operator.type.asserts.tsx"},2:{name:"variable.parameter.tsx variable.language.this.tsx"},3:{name:"variable.parameter.tsx"},4:{name:"keyword.operator.expression.is.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{captures:{1:{name:"keyword.operator.type.asserts.tsx"},2:{name:"variable.parameter.tsx variable.language.this.tsx"},3:{name:"variable.parameter.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.type.asserts.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.is.tsx"}]},"type-primitive":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.primitive.tsx"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"type-tuple":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.tsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.tsx"}},name:"meta.type.tuple.tsx",patterns:[{match:"\\.\\.\\.",name:"keyword.operator.rest.tsx"},{captures:{1:{name:"entity.name.label.tsx"},2:{name:"keyword.operator.optional.tsx"},3:{name:"punctuation.separator.label.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)"},{include:"#type"},{include:"#punctuation-comma"}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.tsx"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.undefined.tsx"},"var-expr":{patterns:[{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",name:"meta.var.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?=\\S)"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.tsx"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",name:"meta.var.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?=\\S)"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.tsx"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))",name:"meta.var.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?=\\S)"},{include:"#var-single-const"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*((?!\\S)|(?=\\/\\/))",beginCaptures:{1:{name:"punctuation.separator.comma.tsx"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-const":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.constant.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | +( +[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] +) | +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.tsx entity.name.function.tsx"},2:{name:"keyword.operator.definiteassignment.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.constant.tsx"},2:{name:"keyword.operator.definiteassignment.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.readwrite.tsx"},2:{name:"keyword.operator.definiteassignment.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"variable-initializer":{patterns:[{begin:"(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.tsx"}},end:"(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#expression"}]},{begin:"(?<!=|!)(=)(?!=)",beginCaptures:{1:{name:"keyword.operator.assignment.tsx"}},end:"(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",patterns:[{include:"#expression"}]}]}},scopeName:"source.tsx"});var n=[e];export{n as default}; diff --git a/assets/chunks/turtle.C15OxdQ5.js b/assets/chunks/turtle.C15OxdQ5.js new file mode 100644 index 000000000..57d3af149 --- /dev/null +++ b/assets/chunks/turtle.C15OxdQ5.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Turtle",fileTypes:["turtle","ttl","acl"],name:"turtle",patterns:[{include:"#rule-constraint"},{include:"#iriref"},{include:"#prefix"},{include:"#prefixed-name"},{include:"#comment"},{include:"#special-predicate"},{include:"#literals"},{include:"#language-tag"}],repository:{boolean:{match:"\\b(?i:true|false)\\b",name:"constant.language.sparql"},comment:{match:"#.*$",name:"comment.line.number-sign.turtle"},integer:{match:"[+-]?(?:\\d+|[0-9]+\\.[0-9]*|\\.[0-9]+(?:[eE][+-]?\\d+)?)",name:"constant.numeric.turtle"},iriref:{match:'<[^\\x20-\\x20<>"{}|^`\\\\]*>',name:"entity.name.type.iriref.turtle"},"language-tag":{captures:{1:{name:"entity.name.class.turtle"}},match:"@(\\w+)",name:"meta.string-literal-language-tag.turtle"},literals:{patterns:[{include:"#string"},{include:"#numeric"},{include:"#boolean"}]},numeric:{patterns:[{include:"#integer"}]},prefix:{match:"(?i:@?base|@?prefix)\\s",name:"keyword.operator.turtle"},"prefixed-name":{captures:{1:{name:"storage.type.PNAME_NS.turtle"},2:{name:"support.variable.PN_LOCAL.turtle"}},match:"(\\w*:)(\\w*)",name:"constant.complex.turtle"},"rule-constraint":{begin:'(rule:content) (""")',beginCaptures:{1:{patterns:[{include:"#prefixed-name"}]},2:{name:"string.quoted.triple.turtle"}},end:'"""',endCaptures:{0:{name:"string.quoted.triple.turtle"}},name:"meta.rule-constraint.turtle",patterns:[{include:"source.srs"}]},"single-dquote-string-literal":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.turtle"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.turtle"}},name:"string.quoted.double.turtle",patterns:[{include:"#string-character-escape"}]},"single-squote-string-literal":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.turtle"}},end:"'",endCaptures:{1:{name:"punctuation.definition.string.end.turtle"},2:{name:"invalid.illegal.newline.turtle"}},name:"string.quoted.single.turtle",patterns:[{include:"#string-character-escape"}]},"special-predicate":{captures:{1:{name:"keyword.control.turtle"}},match:"\\s(a)\\s",name:"meta.specialPredicate.turtle"},string:{patterns:[{include:"#triple-squote-string-literal"},{include:"#triple-dquote-string-literal"},{include:"#single-squote-string-literal"},{include:"#single-dquote-string-literal"},{include:"#triple-tick-string-literal"}]},"string-character-escape":{match:"\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",name:"constant.character.escape.turtle"},"triple-dquote-string-literal":{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.turtle"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.turtle"}},name:"string.quoted.triple.turtle",patterns:[{include:"#string-character-escape"}]},"triple-squote-string-literal":{begin:"'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.turtle"}},end:"'''",endCaptures:{0:{name:"punctuation.definition.string.end.turtle"}},name:"string.quoted.triple.turtle",patterns:[{include:"#string-character-escape"}]},"triple-tick-string-literal":{begin:"```",beginCaptures:{0:{name:"punctuation.definition.string.begin.turtle"}},end:"```",endCaptures:{0:{name:"punctuation.definition.string.end.turtle"}},name:"string.quoted.triple.turtle",patterns:[{include:"#string-character-escape"}]}},scopeName:"source.turtle"});var t=[e];export{t as default}; diff --git a/assets/chunks/twig.C7WLmjjl.js b/assets/chunks/twig.C7WLmjjl.js new file mode 100644 index 000000000..d452ded5b --- /dev/null +++ b/assets/chunks/twig.C7WLmjjl.js @@ -0,0 +1,40 @@ +import t from"./css.CbYhyuC0.js";import e from"./javascript.Dch3xQiY.js";import n from"./scss.Dr-_CcBd.js";import i from"./php.DEqKwr-6.js";import a from"./python.DwuVtWc2.js";import s from"./ruby.BYVeyLWu.js";import"./html.CuK0VrWf.js";import"./xml.BzTcx3OS.js";import"./java.ClXEvkw9.js";import"./sql.DbK06e1c.js";import"./json.CupVZNk8.js";import"./c.RCJZWN-0.js";import"./shellscript.BZfs-ost.js";import"./lua.CHJYZA-p.js";const r=Object.freeze({displayName:"Twig",fileTypes:["twig","html.twig"],firstLineMatch:"<!(?i:DOCTYPE)|<(?i:html)|<\\?(?i:php)|\\{\\{|\\{%|\\{#",foldingStartMarker:`(?x) + (<(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)\\b.*?> + |<!--(?!.*--\\s*>) + |^<!--\\ \\#tminclude\\ (?>.*?-->)$ + |\\{%\\s+(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim) + )`,foldingStopMarker:`(?x) + (</(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)> + |^(?!.*?<!--).*?--\\s*> + |^<!--\\ end\\ tminclude\\ -->$ + |\\{%\\s+end(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim) + )`,name:"twig",patterns:[{begin:"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\2>)",beginCaptures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.html"}},end:"(>(<)/)(\\2)(>)",endCaptures:{1:{name:"punctuation.definition.tag.html"},2:{name:"meta.scope.between-tag-pair.html"},3:{name:"entity.name.tag.html"},4:{name:"punctuation.definition.tag.html"}},name:"meta.tag.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(<\\?)(xml)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.xml.html"}},end:"(\\?>)",name:"meta.tag.preprocessor.xml.html",patterns:[{include:"#tag-generic-attribute"},{include:"#string-double-quoted"},{include:"#string-single-quoted"}]},{begin:"<!--",captures:{0:{name:"punctuation.definition.comment.html"}},end:"--\\s*>",name:"comment.block.html",patterns:[{match:"--",name:"invalid.illegal.bad-comments-or-CDATA.html"},{include:"#embedded-code"}]},{begin:"<!",captures:{0:{name:"punctuation.definition.tag.html"}},end:">",name:"meta.tag.sgml.html",patterns:[{begin:"(?i:DOCTYPE)",captures:{1:{name:"entity.name.tag.doctype.html"}},end:"(?=>)",name:"meta.tag.sgml.doctype.html",patterns:[{match:'"[^">]*"',name:"string.quoted.double.doctype.identifiers-and-DTDs.html"}]},{begin:"\\[CDATA\\[",end:"]](?=>)",name:"constant.other.inline-data.html"},{match:"(\\s*)(?!--|>)\\S(\\s*)",name:"invalid.illegal.bad-comments-or-CDATA.html"}]},{include:"#embedded-code"},{begin:"(?:^\\s+)?(<)((?i:style))\\b(?![^>]*/>)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.style.html"},3:{name:"punctuation.definition.tag.html"}},end:"(</)((?i:style))(>)(?:\\s*\\n)?",name:"source.css.embedded.html",patterns:[{include:"#tag-stuff"},{begin:"(>)",beginCaptures:{1:{name:"punctuation.definition.tag.html"}},end:"(?=</(?i:style))",patterns:[{include:"#embedded-code"},{include:"source.css"}]}]},{begin:"(?:^\\s+)?(<)((?i:script))\\b(?![^>]*/>)",beginCaptures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.script.html"}},end:"(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",endCaptures:{2:{name:"punctuation.definition.tag.html"}},name:"source.js.embedded.html",patterns:[{include:"#tag-stuff"},{begin:"(?<!</(?:script|SCRIPT))(>)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.script.html"}},end:"(</)((?i:script))",patterns:[{captures:{1:{name:"punctuation.definition.comment.js"}},match:"(//).*?((?=<\/script)|$\\n?)",name:"comment.line.double-slash.js"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.js"}},end:"\\*/|(?=<\/script)",name:"comment.block.js"},{include:"#php"},{include:"#twig-print-tag"},{include:"#twig-statement-tag"},{include:"#twig-comment-tag"},{include:"source.js"}]}]},{begin:`(?ix) + +(?<=\\{\\%\\sjs\\s\\%\\}|\\{\\%\\sincludejs\\s\\%\\}) +`,comment:'Add JS support to set tags that use the pattern "css" in their name',end:"(?ix)(?=\\{\\%\\sendjs\\s\\%\\}|\\{\\%\\sendincludejs\\s\\%\\})",name:"source.js.embedded.twig",patterns:[{include:"source.js"}]},{begin:`(?ix) +(?<=\\{\\%\\scss\\s\\%\\}|\\{\\%\\sincludecss\\s\\%\\}|\\{\\%\\sincludehirescss\\s\\%\\}) +`,comment:'Add CSS support to set tags that use the pattern "css" in their name',end:"(?ix)(?=\\{\\%\\sendcss\\s\\%\\}|\\{\\%\\sendincludecss\\s\\%\\}|\\{\\%\\sendincludehirescss\\s\\%\\})",name:"source.css.embedded.twig",patterns:[{include:"source.css"}]},{begin:`(?ix) +(?<=\\{\\%\\sscss\\s\\%\\}|\\{\\%\\sincludescss\\s\\%\\}|\\{\\%\\sincludehiresscss\\s\\%\\}) +`,comment:'Add SCSS support to set tags that use the pattern "scss" in their name',end:"(?ix)(?=\\{\\%\\sendscss\\s\\%\\}|\\{\\%\\sendincludescss\\s\\%\\}|\\{\\%\\sendincludehiresscss\\s\\%\\})",name:"source.css.scss.embedded.twig",patterns:[{include:"source.css.scss"}]},{begin:"(</?)((?i:body|head|html)\\b)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.structure.any.html"}},end:"(>)",name:"meta.tag.structure.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.block.any.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.block.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.inline.any.html"}},end:"((?: ?/)?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)([a-zA-Z0-9:]+)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.other.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.html",patterns:[{include:"#tag-stuff"}]},{include:"#entities"},{match:"<>",name:"invalid.illegal.incomplete.html"},{match:"<",name:"invalid.illegal.bad-angle-bracket.html"},{include:"#twig-print-tag"},{include:"#twig-statement-tag"},{include:"#twig-comment-tag"}],repository:{"embedded-code":{patterns:[{include:"#ruby"},{include:"#php"},{include:"#twig-print-tag"},{include:"#twig-statement-tag"},{include:"#twig-comment-tag"},{include:"#python"}]},entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.html"},{match:"&",name:"invalid.illegal.bad-ampersand.html"}]},php:{begin:"(?=(^\\s*)?<\\?)",end:"(?!(^\\s*)?<\\?)",patterns:[{include:"source.php"}]},python:{begin:"(?:^\\s*)<\\?python(?!.*\\?>)",end:"\\?>(?:\\s*$\\n)?",name:"source.python.embedded.html",patterns:[{include:"source.python"}]},ruby:{patterns:[{begin:"<%+#",captures:{0:{name:"punctuation.definition.comment.erb"}},end:"%>",name:"comment.block.erb"},{begin:"<%+(?!>)=?",captures:{0:{name:"punctuation.section.embedded.ruby"}},end:"-?%>",name:"source.ruby.embedded.html",patterns:[{captures:{1:{name:"punctuation.definition.comment.ruby"}},match:"(#).*?(?=-?%>)",name:"comment.line.number-sign.ruby"},{include:"source.ruby"}]},{begin:"<\\?r(?!>)=?",captures:{0:{name:"punctuation.section.embedded.ruby.nitro"}},end:"-?\\?>",name:"source.ruby.nitro.embedded.html",patterns:[{captures:{1:{name:"punctuation.definition.comment.ruby.nitro"}},match:"(#).*?(?=-?\\?>)",name:"comment.line.number-sign.ruby.nitro"},{include:"source.ruby"}]}]},"string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.double.html",patterns:[{include:"#embedded-code"},{include:"#entities"}]},"string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.single.html",patterns:[{include:"#embedded-code"},{include:"#entities"}]},"tag-generic-attribute":{match:"\\b([a-zA-Z\\-:]+)",name:"entity.other.attribute-name.html"},"tag-id-attribute":{begin:"\\b(id)\\b\\s*(=)",captures:{1:{name:"entity.other.attribute-name.id.html"},2:{name:"punctuation.separator.key-value.html"}},end:`(?<='|")`,name:"meta.attribute-with-value.id.html",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},contentName:"meta.toc-list.id.html",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.double.html",patterns:[{include:"#embedded-code"},{include:"#entities"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},contentName:"meta.toc-list.id.html",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.single.html",patterns:[{include:"#embedded-code"},{include:"#entities"}]}]},"tag-stuff":{patterns:[{include:"#tag-id-attribute"},{include:"#tag-generic-attribute"},{include:"#string-double-quoted"},{include:"#string-single-quoted"},{include:"#embedded-code"}]},"twig-arrays":{begin:"(?<=[\\s\\(\\{\\[:,])\\[",beginCaptures:{0:{name:"punctuation.section.array.begin.twig"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.array.end.twig"}},name:"meta.array.twig",patterns:[{include:"#twig-arrays"},{include:"#twig-hashes"},{include:"#twig-constants"},{include:"#twig-operators"},{include:"#twig-strings"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{match:",",name:"punctuation.separator.object.twig"}]},"twig-comment-tag":{begin:"\\{#-?",beginCaptures:{0:{name:"punctuation.definition.comment.begin.twig"}},end:"-?#\\}",endCaptures:{0:{name:"punctuation.definition.comment.end.twig"}},name:"comment.block.twig"},"twig-constants":{patterns:[{match:"(?i)(?<=[\\s\\[\\(\\{:,])(?:true|false|null|none)(?=[\\s\\)\\]\\}\\,])",name:"constant.language.twig"},{match:"(?<=[\\s\\[\\(\\{:,]|\\.\\.|\\*\\*)[0-9]+(?:\\.[0-9]+)?(?=[\\s\\)\\]\\}\\,]|\\.\\.|\\*\\*)",name:"constant.numeric.twig"}]},"twig-filters":{captures:{1:{name:"support.function.twig"}},match:`(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\"]\\|)|\\{%\\sfilter\\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\\s\\|\\]\\}\\):,]|\\.\\.|\\*\\*)`},"twig-filters-ud":{captures:{1:{name:"meta.function-call.other.twig"}},match:`(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\"]\\|)|\\{%\\sfilter\\s)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)`},"twig-filters-warg":{begin:`(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\"]\\|)|\\{%\\sfilter\\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\\()`,beginCaptures:{1:{name:"support.function.twig"},2:{name:"punctuation.definition.parameters.begin.twig"}},contentName:"meta.function.arguments.twig",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.twig"}},patterns:[{include:"#twig-constants"},{include:"#twig-operators"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"},{include:"#twig-hashes"}]},"twig-filters-warg-ud":{begin:`(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\"]\\|)|\\{%\\sfilter\\s)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(\\()`,beginCaptures:{1:{name:"meta.function-call.other.twig"},2:{name:"punctuation.definition.parameters.begin.twig"}},contentName:"meta.function.arguments.twig",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.twig"}},patterns:[{include:"#twig-constants"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"},{include:"#twig-hashes"}]},"twig-functions":{captures:{1:{name:"support.function.twig"}},match:"(?<=is\\s)(defined|empty|even|iterable|odd)"},"twig-functions-warg":{begin:"(?<=[\\s\\(\\[\\{:,])(attribute|block|constant|cycle|date|divisible by|dump|include|max|min|parent|random|range|same as|source|template_from_string)(\\()",beginCaptures:{1:{name:"support.function.twig"},2:{name:"punctuation.definition.parameters.begin.twig"}},contentName:"meta.function.arguments.twig",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.twig"}},patterns:[{include:"#twig-constants"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"}]},"twig-hashes":{begin:"(?<=[\\s\\(\\{\\[:,])\\{",beginCaptures:{0:{name:"punctuation.section.hash.begin.twig"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.hash.end.twig"}},name:"meta.hash.twig",patterns:[{include:"#twig-hashes"},{include:"#twig-arrays"},{include:"#twig-constants"},{include:"#twig-operators"},{include:"#twig-strings"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{match:":",name:"punctuation.separator.key-value.twig"},{match:",",name:"punctuation.separator.object.twig"}]},"twig-keywords":{match:"(?<=\\s)((?:end)?(?:autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with)(?=\\s)",name:"keyword.control.twig"},"twig-macros":{begin:`(?x) +(?<=[\\s\\(\\[\\{:,]) +([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*) +(?: +(\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*) +)? +(\\() +`,beginCaptures:{1:{name:"meta.function-call.twig"},2:{name:"punctuation.separator.property.twig"},3:{name:"variable.other.property.twig"},4:{name:"punctuation.definition.parameters.begin.twig"}},contentName:"meta.function.arguments.twig",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.twig"}},patterns:[{include:"#twig-constants"},{include:"#twig-operators"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"},{include:"#twig-hashes"}]},"twig-objects":{captures:{1:{name:"variable.other.twig"}},match:"(?<=[\\s\\{\\[\\(:,])([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(?=[\\s\\}\\[\\]\\(\\)\\.\\|,:])"},"twig-operators":{patterns:[{captures:{1:{name:"keyword.operator.arithmetic.twig"}},match:"(?<=\\s)(\\+|-|//?|%|\\*\\*?)(?=\\s)"},{captures:{1:{name:"keyword.operator.assignment.twig"}},match:"(?<=\\s)(=|~)(?=\\s)"},{captures:{1:{name:"keyword.operator.bitwise.twig"}},match:"(?<=\\s)(b-(?:and|or|xor))(?=\\s)"},{captures:{1:{name:"keyword.operator.comparison.twig"}},match:"(?<=\\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\\s)"},{captures:{1:{name:"keyword.operator.logical.twig"}},match:"(?<=\\s)(\\?|:|\\?:|\\?\\?|and|not|or)(?=\\s)"},{captures:{0:{name:"keyword.operator.other.twig"}},match:`(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)'"])\\.\\.(?=[a-zA-Z0-9_\\x{7f}-\\x{ff}'"])`},{captures:{0:{name:"keyword.operator.other.twig"}},match:`(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\}\\)'"])\\|(?=[a-zA-Z_\\x{7f}-\\x{ff}])`}]},"twig-print-tag":{begin:"\\{\\{-?",beginCaptures:{0:{name:"punctuation.section.tag.twig"}},end:"-?\\}\\}",endCaptures:{0:{name:"punctuation.section.tag.twig"}},name:"meta.tag.template.value.twig",patterns:[{include:"#twig-constants"},{include:"#twig-operators"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"},{include:"#twig-hashes"}]},"twig-properties":{patterns:[{captures:{1:{name:"punctuation.separator.property.twig"},2:{name:"variable.other.property.twig"}},match:`(?x) +(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}]) +(\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*) +(?=[\\.\\s\\|\\[\\)\\]\\}:,]) +`},{begin:`(?x) +(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}]) +(\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*) +(\\() +`,beginCaptures:{1:{name:"punctuation.separator.property.twig"},2:{name:"variable.other.property.twig"},3:{name:"punctuation.definition.parameters.begin.twig"}},contentName:"meta.function.arguments.twig",end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.twig"}},patterns:[{include:"#twig-constants"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-strings"},{include:"#twig-arrays"}]},{captures:{1:{name:"punctuation.section.array.begin.twig"},2:{name:"variable.other.property.twig"},3:{name:"punctuation.section.array.end.twig"},4:{name:"punctuation.section.array.begin.twig"},5:{name:"variable.other.property.twig"},6:{name:"punctuation.section.array.end.twig"},7:{name:"punctuation.section.array.begin.twig"},8:{name:"variable.other.property.twig"},9:{name:"punctuation.section.array.end.twig"}},match:`(?x) +(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]]) +(?: +(\\[)('[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*')(\\]) +|(\\[)("[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*")(\\]) +|(\\[)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(\\]) +) +`}]},"twig-statement-tag":{begin:"\\{%-?",beginCaptures:{0:{name:"punctuation.section.tag.twig"}},end:"-?%\\}",endCaptures:{0:{name:"punctuation.section.tag.twig"}},name:"meta.tag.template.block.twig",patterns:[{include:"#twig-constants"},{include:"#twig-keywords"},{include:"#twig-operators"},{include:"#twig-functions-warg"},{include:"#twig-functions"},{include:"#twig-macros"},{include:"#twig-filters-warg"},{include:"#twig-filters"},{include:"#twig-filters-warg-ud"},{include:"#twig-filters-ud"},{include:"#twig-objects"},{include:"#twig-properties"},{include:"#twig-strings"},{include:"#twig-arrays"},{include:"#twig-hashes"}]},"twig-strings":{patterns:[{begin:"(?:(?<!\\\\)|(?<=\\\\\\\\))'",beginCaptures:{0:{name:"punctuation.definition.string.begin.twig"}},end:"(?:(?<!\\\\)|(?<=\\\\\\\\))'",endCaptures:{0:{name:"punctuation.definition.string.end.twig"}},name:"string.quoted.single.twig"},{begin:'(?:(?<!\\\\)|(?<=\\\\\\\\))"',beginCaptures:{0:{name:"punctuation.definition.string.begin.twig"}},end:'(?:(?<!\\\\)|(?<=\\\\\\\\))"',endCaptures:{0:{name:"punctuation.definition.string.end.twig"}},name:"string.quoted.double.twig"}]}},scopeName:"text.html.twig",embeddedLangs:["css","javascript","scss","php","python","ruby"]});var C=[...t,...e,...n,...i,...a,...s,r];export{C as default}; diff --git a/assets/chunks/typescript.DC8MraHL.js b/assets/chunks/typescript.DC8MraHL.js new file mode 100644 index 000000000..c1284f05d --- /dev/null +++ b/assets/chunks/typescript.DC8MraHL.js @@ -0,0 +1,666 @@ +const e=Object.freeze({displayName:"TypeScript",name:"typescript",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},"after-operator-block-as-object-literal":{begin:"(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.objectliteral.ts",patterns:[{include:"#object-member"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.array.literal.ts",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.ts"},2:{name:"variable.parameter.ts"}},match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",name:"meta.arrow.ts"},{begin:`(?x) (?: +(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync) +)? ((?<![})!\\]])\\s* +(?= + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +) +)`,beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.ts",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.return.type.arrow.ts",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"async-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.async.ts"},"binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern"},{include:"#array-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"}]},"binding-element-const":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern-const"},{include:"#array-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"}]},"boolean-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.true.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.false.ts"}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},cast:{patterns:[{captures:{1:{name:"meta.brace.angle.ts"},2:{name:"storage.modifier.ts"},3:{name:"meta.brace.angle.ts"}},match:"\\s*(<)\\s*(const)\\s*(>)",name:"cast.expr.ts"},{begin:"(?:(?<!\\+\\+|--)(?<=^return|[^\\._$[:alnum:]]return|^throw|[^\\._$[:alnum:]]throw|^yield|[^\\._$[:alnum:]]yield|^await|[^\\._$[:alnum:]]await|^default|[^\\._$[:alnum:]]default|[=(,:>*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!<?\\=)(?!\\s*$)",beginCaptures:{1:{name:"meta.brace.angle.ts"}},end:"(\\>)",endCaptures:{1:{name:"meta.brace.angle.ts"}},name:"cast.expr.ts",patterns:[{include:"#type"}]},{begin:"(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",beginCaptures:{1:{name:"meta.brace.angle.ts"}},end:"(\\>)",endCaptures:{1:{name:"meta.brace.angle.ts"}},name:"cast.expr.ts",patterns:[{include:"#type"}]}]},"class-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.type.class.ts"}},end:"(?<=\\})",name:"meta.class.ts",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.class.ts"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.type.class.ts"}},end:"(?<=\\})",name:"meta.class.ts",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},patterns:[{include:"#comment"},{include:"#decorator"},{begin:"(?<=:)\\s*",end:"(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#field-declaration"},{include:"#string"},{include:"#type-annotation"},{include:"#variable-initializer"},{include:"#access-modifier"},{include:"#property-accessor"},{include:"#async-modifier"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},"class-or-interface-heritage":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.ts"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{include:"#type-parameters"},{include:"#expressionWithoutIdentifiers"},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)"},{captures:{1:{name:"entity.other.inherited-class.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#expressionPunctuations"}]},comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.ts"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.ts"}},name:"comment.block.documentation.ts",patterns:[{include:"#docblock"}]},{begin:"(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",beginCaptures:{1:{name:"punctuation.definition.comment.ts"},2:{name:"storage.type.internaldeclaration.ts"},3:{name:"punctuation.decorator.internaldeclaration.ts"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.ts"}},name:"comment.block.ts"},{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ts"},2:{name:"comment.line.double-slash.ts"},3:{name:"punctuation.definition.comment.ts"},4:{name:"storage.type.internaldeclaration.ts"},5:{name:"punctuation.decorator.internaldeclaration.ts"}},contentName:"comment.line.double-slash.ts",end:"(?=$)"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.trycatch.ts"},{captures:{1:{name:"keyword.control.loop.ts"},2:{name:"entity.name.label.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.loop.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.ts"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.switch.ts"},{include:"#if-statement"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.conditional.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.with.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.other.debugger.ts"}]},"decl-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.block.ts",patterns:[{include:"#statements"}]},declaration:{patterns:[{include:"#decorator"},{include:"#var-expr"},{include:"#function-declaration"},{include:"#class-declaration"},{include:"#interface-declaration"},{include:"#enum-declaration"},{include:"#namespace-declaration"},{include:"#type-alias-declaration"},{include:"#import-equals-declaration"},{include:"#import-declaration"},{include:"#export-declaration"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"}]},decorator:{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.ts"}},end:"(?=\\s)",name:"meta.decorator.ts",patterns:[{include:"#expression"}]},"destructuring-const":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.ts",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.ts",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-parameter":{patterns:[{begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.object.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.ts"}},name:"meta.parameter.object-binding-pattern.ts",patterns:[{include:"#parameter-object-binding-element"}]},{begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},name:"meta.paramter.array-binding-pattern.ts",patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"destructuring-parameter-rest":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"variable.parameter.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.ts",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.ts",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-variable-rest":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"meta.definition.variable.ts variable.other.readwrite.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable-rest-const":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"meta.definition.variable.ts variable.other.constant.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},directives:{begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.ts"}},end:"(?=$)",name:"comment.line.triple-slash.directive.ts",patterns:[{begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.ts"},2:{name:"entity.name.tag.directive.ts"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.ts"}},name:"meta.tag.ts",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.ts"},{match:"=",name:"keyword.operator.assignment.ts"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},match:`(?x) +((@)author) +\\s+ +( +[^@\\s<>*/] +(?:[^@<>*/]|\\*[^/])* +) +(?: +\\s* +(<) +([^>\\s]+) +(>) +)?`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) +\\s+ (as) \\s+ +((?:[^@\\s*/]|\\*[^/])+)`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},contentName:"constant.other.description.jsdoc",end:"(</)caption(>)|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.ts"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + +( +(?=https?://) +(?:[^\\s*]|\\*[^/])+ +) +| + +( +(?! + +https?:// +| + +(?:\\[[^\\[\\]]*\\])? +{@(?:link|linkcode|linkplain|tutorial)\\b +) + +(?:[^@\\s*/]|\\*[^/])+ +) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( +[A-Za-z_$] +[\\w$.\\[\\]]* +(?: +\\s* , \\s* +[A-Za-z_$] +[\\w$.\\[\\]]* +)* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( +(@) +(?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( +[A-Za-z_$] +[\\w$.\\[\\]]* +)`},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.ts"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}},match:`(?x) +(\\[)\\s* +[\\w$]+ +(?: +(?:\\[\\])? +\\. +[\\w$]+ +)* +(?: +\\s* +(=) +\\s* +( + +(?> +"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | +'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | +\\[ (?:(?:\\*(?!/))|[^*])*? \\] | +(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* +)* +) +)? +\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( +(@) +(?:define|enum|exception|export|extends|lends|implements|modifies +|namespace|private|protected|returns?|satisfies|suppress|this|throws|type +|yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( +(@) +(?:alias|augments|callback|constructs|emits|event|fires|exports? +|extends|external|function|func|host|lends|listens|interface|memberof!? +|method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( +(?: +[^{}@\\s*] | \\*[^/] +)+ +)`},{begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}},match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.type.enum.ts"},5:{name:"entity.name.type.enum.ts"}},end:"(?<=\\})",name:"meta.enum.declaration.ts",patterns:[{include:"#comment"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},patterns:[{include:"#comment"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{0:{name:"variable.other.enummember.ts"}},end:"(?=,|\\}|$)",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},{begin:"(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",end:"(?=,|\\}|$)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#comment"},{include:"#variable-initializer"}]},{include:"#punctuation-comma"}]}]},"export-declaration":{patterns:[{captures:{1:{name:"keyword.control.export.ts"},2:{name:"keyword.control.as.ts"},3:{name:"storage.type.namespace.ts"},4:{name:"entity.name.type.module.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"keyword.control.type.ts"},3:{name:"keyword.operator.assignment.ts"},4:{name:"keyword.control.default.ts"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.default.ts",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"keyword.control.type.ts"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.ts",patterns:[{include:"#import-export-declaration"}]}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)"},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"entity.name.function.ts variable.language.this.ts"},4:{name:"entity.name.function.ts"},5:{name:"keyword.operator.optional.ts"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)"},{include:"#type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.ts"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-operators":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.flow.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",beginCaptures:{1:{name:"keyword.control.flow.ts"}},end:"\\*",endCaptures:{0:{name:"keyword.generator.asterisk.ts"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.control.flow.ts"},2:{name:"keyword.generator.asterisk.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.delete.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.in.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.of.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.instanceof.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.new.ts"},{include:"#typeof-operator"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.void.ts"},{captures:{1:{name:"keyword.control.as.ts"},2:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.ts"},2:{name:"keyword.control.satisfies.ts"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{match:"\\.\\.\\.",name:"keyword.operator.spread.ts"},{match:"\\*=|(?<!\\()/=|%=|\\+=|\\-=",name:"keyword.operator.assignment.compound.ts"},{match:"\\&=|\\^=|<<=|>>=|>>>=|\\|=",name:"keyword.operator.assignment.compound.bitwise.ts"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.ts"},{match:"===|!==|==|!=",name:"keyword.operator.comparison.ts"},{match:"<=|>=|<>|<|>",name:"keyword.operator.relational.ts"},{captures:{1:{name:"keyword.operator.logical.ts"},2:{name:"keyword.operator.assignment.compound.ts"},3:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",name:"keyword.operator.logical.ts"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.ts"},{match:"\\=",name:"keyword.operator.assignment.ts"},{match:"--",name:"keyword.operator.decrement.ts"},{match:"\\+\\+",name:"keyword.operator.increment.ts"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.arithmetic.ts"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},expressionWithoutIdentifiers:{patterns:[{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},"field-declaration":{begin:`(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))`,beginCaptures:{1:{name:"storage.modifier.ts"}},end:`(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,name:"meta.field.declaration.ts",patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{captures:{1:{name:"meta.definition.property.ts entity.name.function.ts"},2:{name:"keyword.operator.optional.ts"},3:{name:"keyword.operator.definiteassignment.ts"}},match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.ts variable.object.property.ts"},{match:"\\?",name:"keyword.operator.optional.ts"},{match:"\\!",name:"keyword.operator.definiteassignment.ts"}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.ts"}},end:"(?<=\\))",patterns:[{include:"#comment"},{match:"await",name:"keyword.control.loop.ts"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#var-expr"},{include:"#expression"},{include:"#punctuation-semicolon"}]}]},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{match:"\\*",name:"keyword.generator.asterisk.ts"}]},"function-call":{patterns:[{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",name:"meta.function-call.ts",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.ts",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.ts punctuation.accessor.optional.ts"},{match:"\\!",name:"meta.function-call.ts keyword.operator.definiteassignment.ts"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.ts"}]},"function-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.async.ts"},4:{name:"storage.type.function.ts"},5:{name:"keyword.generator.asterisk.ts"},6:{name:"meta.definition.function.ts entity.name.function.ts"}},end:"(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})",name:"meta.function.ts",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.function.ts"},3:{name:"keyword.generator.asterisk.ts"},4:{name:"meta.definition.function.ts entity.name.function.ts"}},end:"(?=;)|(?<=\\})",name:"meta.function.expression.ts",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.function.ts entity.name.function.ts"},"function-parameters":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.ts"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.ts"}},name:"meta.parameters.ts",patterns:[{include:"#function-parameters-body"}]},"function-parameters-body":{patterns:[{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{include:"#parameter-name"},{include:"#parameter-type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.ts"}]},identifiers:{patterns:[{include:"#object-identifiers"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"entity.name.function.ts"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +))`},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.constant.property.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.property.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.ts"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ts"}]},"if-statement":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",end:"(?=;|$|\\})",patterns:[{include:"#comment"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.conditional.ts"},2:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression"}]},{begin:"(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ts"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"keyword.other.ts"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"import-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"keyword.control.import.ts"},4:{name:"keyword.control.type.ts"}},end:"(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",name:"meta.import.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#string"},{begin:`(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,end:"\\bfrom\\b",endCaptures:{0:{name:"keyword.control.from.ts"}},patterns:[{include:"#import-export-declaration"}]},{include:"#import-export-declaration"}]},"import-equals-declaration":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"keyword.control.import.ts"},4:{name:"keyword.control.type.ts"},5:{name:"variable.other.readwrite.alias.ts"},6:{name:"keyword.operator.assignment.ts"},7:{name:"keyword.control.require.ts"},8:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},name:"meta.import-equals.external.ts",patterns:[{include:"#comment"},{include:"#string"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"keyword.control.import.ts"},4:{name:"keyword.control.type.ts"},5:{name:"variable.other.readwrite.alias.ts"},6:{name:"keyword.operator.assignment.ts"}},end:"(?=;|$|^)",name:"meta.import-equals.internal.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.readwrite.ts"}]}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(with)|(assert))\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.with.ts"},2:{name:"keyword.control.assert.ts"},3:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},patterns:[{include:"#comment"},{include:"#string"},{match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object-literal.key.ts"},{match:":",name:"punctuation.separator.key-value.ts"}]},"import-export-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.block.ts",patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{captures:{1:{name:"keyword.control.type.ts"},2:{name:"keyword.control.default.ts"},3:{name:"constant.language.import-export-all.ts"},4:{name:"variable.other.readwrite.ts"},5:{name:"keyword.control.as.ts"},6:{name:"keyword.control.default.ts"},7:{name:"variable.other.readwrite.alias.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))"},{include:"#punctuation-comma"},{match:"\\*",name:"constant.language.import-export-all.ts"},{match:"\\b(default)\\b",name:"keyword.control.default.ts"},{captures:{1:{name:"keyword.control.type.ts"},2:{name:"variable.other.readwrite.alias.ts"}},match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{match:"\\bfrom\\b",name:"keyword.control.from.ts"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"indexer-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"meta.brace.square.ts"},3:{name:"variable.parameter.ts"}},end:"(\\])\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.ts"},2:{name:"keyword.operator.optional.ts"}},name:"meta.indexer.declaration.ts",patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",beginCaptures:{1:{name:"keyword.operator.type.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"meta.brace.square.ts"},4:{name:"entity.name.type.ts"},5:{name:"keyword.operator.expression.in.ts"}},end:"(\\])([+-])?\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.ts"},2:{name:"keyword.operator.type.modifier.ts"},3:{name:"keyword.operator.optional.ts"}},name:"meta.indexer.mappedtype.declaration.ts",patterns:[{captures:{1:{name:"keyword.control.as.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+"},{include:"#type"}]},"inline-tags":{patterns:[{captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}},match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",name:"constant.other.description.jsdoc"},{begin:"({)((@)(?:link(?:code|plain)?|tutorial))\\s*",beginCaptures:{1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"},2:{name:"storage.type.class.jsdoc"},3:{name:"punctuation.definition.inline.tag.jsdoc"}},end:"}|(?=\\*/)",endCaptures:{0:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},name:"entity.name.type.instance.jsdoc",patterns:[{captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"},{captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"}]}]},"instanceof-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.expression.instanceof.ts"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",patterns:[{include:"#type"}]},"interface-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.type.interface.ts"}},end:"(?<=\\})",name:"meta.interface.ts",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.interface.ts"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},jsdoctype:{patterns:[{begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},contentName:"entity.name.type.instance.jsdoc",end:"((}))\\s*|(?=\\*/)",endCaptures:{1:{name:"entity.name.type.instance.jsdoc"},2:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},patterns:[{include:"#brackets"}]}]},label:{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",beginCaptures:{1:{name:"entity.name.label.ts"},2:{name:"punctuation.separator.label.ts"}},end:"(?<=\\})",patterns:[{include:"#decl-block"}]},{captures:{1:{name:"entity.name.label.ts"},2:{name:"punctuation.separator.label.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},literal:{patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#array-literal"},{include:"#this-literal"},{include:"#super-literal"}]},"method-declaration":{patterns:[{begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.modifier.async.ts"},5:{name:"storage.type.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.modifier.async.ts"},5:{name:"keyword.operator.new.ts"},6:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.modifier.ts"},4:{name:"storage.modifier.async.ts"},5:{name:"storage.type.property.ts"},6:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.method.ts entity.name.function.ts"},{match:"\\?",name:"keyword.operator.optional.ts"}]},"namespace-declaration":{begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.namespace.ts"}},end:"(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.namespace.declaration.ts",patterns:[{include:"#comment"},{include:"#string"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.type.module.ts"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"new-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.ts"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",name:"new.expr.ts",patterns:[{include:"#expression"}]},"null-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.null.ts"},"numeric-literal":{patterns:[{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",name:"constant.numeric.hex.ts"},{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",name:"constant.numeric.binary.ts"},{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",name:"constant.numeric.octal.ts"},{captures:{0:{name:"constant.numeric.decimal.ts"},1:{name:"meta.delimiter.decimal.period.ts"},2:{name:"storage.type.numeric.bigint.ts"},3:{name:"meta.delimiter.decimal.period.ts"},4:{name:"storage.type.numeric.bigint.ts"},5:{name:"meta.delimiter.decimal.period.ts"},6:{name:"storage.type.numeric.bigint.ts"},7:{name:"storage.type.numeric.bigint.ts"},8:{name:"meta.delimiter.decimal.period.ts"},9:{name:"storage.type.numeric.bigint.ts"},10:{name:"meta.delimiter.decimal.period.ts"},11:{name:"storage.type.numeric.bigint.ts"},12:{name:"meta.delimiter.decimal.period.ts"},13:{name:"storage.type.numeric.bigint.ts"},14:{name:"storage.type.numeric.bigint.ts"}},match:`(?x) +(?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$)`}]},"numericConstant-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.nan.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.infinity.ts"}]},"object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element"}]},{include:"#object-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-const":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element-const"}]},{include:"#object-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-propertyName":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.ts"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.object.property.ts"}]},"object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.object.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.ts"}},patterns:[{include:"#object-binding-element"}]},"object-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.object.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.ts"}},patterns:[{include:"#object-binding-element-const"}]},"object-identifiers":{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))",name:"support.class.ts"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.constant.object.property.ts"},4:{name:"variable.other.object.property.ts"}},match:`(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?: +(\\#?[[:upper:]][_$[:digit:][:upper:]]*) | +(\\#?[_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"variable.other.constant.object.ts"},2:{name:"variable.other.object.ts"}},match:`(?x)(?: +([[:upper:]][_$[:digit:][:upper:]]*) | +([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.objectliteral.ts",patterns:[{include:"#object-member"}]},"object-literal-method-declaration":{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.property.ts"},3:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.property.ts"},3:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#function-body"}]},{captures:{0:{name:"meta.object-literal.key.ts"},1:{name:"constant.numeric.decimal.ts"}},match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ts"},{captures:{0:{name:"meta.object-literal.key.ts"},1:{name:"entity.name.function.ts"}},match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,name:"meta.object.member.ts"},{captures:{0:{name:"meta.object-literal.key.ts"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ts"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ts"}},end:"(?=,|\\})",name:"meta.object.member.ts",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ts"},{captures:{1:{name:"keyword.control.as.ts"},2:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",name:"meta.object.member.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.ts"},2:{name:"keyword.control.satisfies.ts"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",name:"meta.object.member.ts",patterns:[{include:"#type"}]},{begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ts",patterns:[{include:"#expression"}]},{begin:":",beginCaptures:{0:{name:"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},end:"(?=,|\\})",name:"meta.object.member.ts",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.array.ts"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.ts"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)"},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"entity.name.function.ts variable.language.this.ts"},4:{name:"entity.name.function.ts"},5:{name:"keyword.operator.optional.ts"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)"}]},"parameter-object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?: +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| +(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| +(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"parameter-object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.ts"},2:{name:"punctuation.definition.binding-pattern.object.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.ts"}},patterns:[{include:"#parameter-object-binding-element"}]},"parameter-type-annotation":{patterns:[{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?=[,)])|(?==[^>])",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"}},contentName:"meta.arrow.ts meta.return.type.arrow.ts",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.type.property.ts"},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.ts"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.ts"},"qstring-double":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.ts"}},end:'(")|((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"invalid.illegal.newline.ts"}},name:"string.quoted.double.ts",patterns:[{include:"#string-character-escape"}]},"qstring-single":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.ts"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"invalid.illegal.newline.ts"}},name:"string.quoted.single.ts",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{begin:"(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.ts"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"keyword.other.ts"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]},{begin:"((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.ts"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.ts"},2:{name:"keyword.other.ts"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrnvf]|\\.",name:"constant.other.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},regexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}},match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"punctuation.definition.group.assertion.regexp"},3:{name:"meta.assertion.look-ahead.regexp"},4:{name:"meta.assertion.negative-look-ahead.regexp"},5:{name:"meta.assertion.look-behind.regexp"},6:{name:"meta.assertion.negative-look-behind.regexp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.regexp"}},name:"meta.group.assertion.regexp",patterns:[{include:"#regexp"}]},{begin:"\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#regexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}},match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",name:"meta.return.type.ts",patterns:[{include:"#return-type-core"}]},{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.return.type.ts",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.ts"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.ts"},"single-line-comment-consuming-line-ending":{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.ts"},2:{name:"comment.line.double-slash.ts"},3:{name:"punctuation.definition.comment.ts"},4:{name:"storage.type.internaldeclaration.ts"},5:{name:"punctuation.decorator.internaldeclaration.ts"}},contentName:"comment.line.double-slash.ts",end:"(?=^)"},statements:{patterns:[{include:"#declaration"},{include:"#control-statement"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#label"},{include:"#expression"},{include:"#punctuation-semicolon"},{include:"#string"},{include:"#comment"}]},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{match:"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)",name:"constant.character.escape.ts"},"super-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",name:"variable.language.super.ts"},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))",name:"keyword.operator.expression.import.ts"}]},"support-objects":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)",name:"variable.language.arguments.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)",name:"support.class.promise.ts"},{captures:{1:{name:"keyword.control.import.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"},4:{name:"support.variable.property.importmeta.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)"},{captures:{1:{name:"keyword.operator.new.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"},4:{name:"support.variable.property.target.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"support.variable.property.ts"},4:{name:"support.constant.ts"}},match:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?: +(?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) +| +(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`},{captures:{1:{name:"support.type.object.module.ts"},2:{name:"support.type.object.module.ts"},3:{name:"punctuation.accessor.ts"},4:{name:"punctuation.accessor.optional.ts"},5:{name:"support.type.object.module.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)"}]},"switch-statement":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"switch-statement.expr.ts",patterns:[{include:"#comment"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.switch.ts"},2:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},name:"switch-expression.expr.ts",patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"(?=\\})",name:"switch-block.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.ts"}},end:"(?=:)",name:"case-clause.expr.ts",patterns:[{include:"#expression"}]},{begin:"(:)\\s*(\\{)",beginCaptures:{1:{name:"case-clause.expr.ts punctuation.definition.section.case-statement.ts"},2:{name:"meta.block.ts punctuation.definition.block.ts"}},contentName:"meta.block.ts",end:"\\}",endCaptures:{0:{name:"meta.block.ts punctuation.definition.block.ts"}},patterns:[{include:"#statements"}]},{captures:{0:{name:"case-clause.expr.ts punctuation.definition.section.case-statement.ts"}},match:"(:)"},{include:"#statements"}]}]},template:{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"},2:{name:"string.template.ts punctuation.definition.string.template.begin.ts"}},contentName:"string.template.ts",end:"`",endCaptures:{0:{name:"string.template.ts punctuation.definition.string.template.end.ts"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.ts"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"},2:{name:"string.template.ts punctuation.definition.string.template.begin.ts"}},contentName:"string.template.ts",end:"`",endCaptures:{0:{name:"string.template.ts punctuation.definition.string.template.end.ts"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.ts"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.ts"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)",name:"variable.language.this.ts"},type:{patterns:[{include:"#comment"},{include:"#type-string"},{include:"#numeric-literal"},{include:"#type-primitive"},{include:"#type-builtin-literals"},{include:"#type-parameters"},{include:"#type-tuple"},{include:"#type-object"},{include:"#type-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*"},{include:"#type-name"}]},"type-alias-declaration":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.type.ts"},4:{name:"entity.name.type.alias.ts"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.type.declaration.ts",patterns:[{include:"#comment"},{include:"#type-parameters"},{begin:"(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.assignment.ts"},2:{name:"keyword.control.intrinsic.ts"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.ts"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]}]},"type-annotation":{patterns:[{begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"}]},"type-builtin-literals":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.builtin.ts"},"type-conditional":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.ts"}},end:"(?<=:)",patterns:[{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.ts"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.ts"}},patterns:[{include:"#type"}]},{include:"#type"}]}]},"type-fn-type-parameters":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",beginCaptures:{1:{name:"meta.type.constructor.ts storage.modifier.ts"},2:{name:"meta.type.constructor.ts keyword.control.new.ts"}},end:"(?<=>)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.control.new.ts"}},end:"(?<=\\))",name:"meta.type.constructor.ts",patterns:[{include:"#function-parameters"}]},{begin:`(?x)( +(?= +[(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +) +) +)`,end:"(?<=\\))",name:"meta.type.function.ts",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.ts"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",name:"meta.type.function.return.ts",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.ts",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.ts"},2:{name:"entity.name.type.ts"},3:{name:"keyword.operator.expression.extends.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.ts"}]},"type-name":{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"},4:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},contentName:"meta.type.parameters.ts",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.ts"},2:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},contentName:"meta.type.parameters.ts",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.ts"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.object.type.ts",patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ts"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?=\\S)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.keyof.ts"},{match:"(\\?|\\:)",name:"keyword.operator.ternary.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()",name:"keyword.operator.expression.import.ts"}]},"type-parameters":{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},{include:"#type"},{include:"#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.ts"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},name:"meta.type.paren.cover.ts",patterns:[{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"entity.name.function.ts variable.language.this.ts"},4:{name:"entity.name.function.ts"},5:{name:"keyword.operator.optional.ts"}},match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`},{captures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.operator.rest.ts"},3:{name:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)"},{include:"#type-annotation"},{match:",",name:"punctuation.separator.parameter.ts"},{include:"#type"}]},"type-predicate-operator":{patterns:[{captures:{1:{name:"keyword.operator.type.asserts.ts"},2:{name:"variable.parameter.ts variable.language.this.ts"},3:{name:"variable.parameter.ts"},4:{name:"keyword.operator.expression.is.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{captures:{1:{name:"keyword.operator.type.asserts.ts"},2:{name:"variable.parameter.ts variable.language.this.ts"},3:{name:"variable.parameter.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.type.asserts.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.is.ts"}]},"type-primitive":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.primitive.ts"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"type-tuple":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.type.tuple.ts",patterns:[{match:"\\.\\.\\.",name:"keyword.operator.rest.ts"},{captures:{1:{name:"entity.name.label.ts"},2:{name:"keyword.operator.optional.ts"},3:{name:"punctuation.separator.label.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)"},{include:"#type"},{include:"#punctuation-comma"}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.ts"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.undefined.ts"},"var-expr":{patterns:[{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",name:"meta.var.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?=\\S)"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.ts"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",name:"meta.var.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?=\\S)"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.ts"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))",name:"meta.var.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?=\\S)"},{include:"#var-single-const"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*((?!\\S)|(?=\\/\\/))",beginCaptures:{1:{name:"punctuation.separator.comma.ts"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-const":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s* +# function assignment | +(=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( +(<) | +([(]\\s*( +([)]) | +(\\.\\.\\.) | +([_$[:alnum:]]+\\s*( +([:,?=])| +([)]\\s*=>) +)) +)) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( +((async\\s+)?( +(function\\s*[(<*]) | +(function\\s+) | +([_$[:alpha:]][_$[:alnum:]]*\\s*=>) +)) | +((async\\s*)?( +((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* +( +([)]\\s*:) | +((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) +) +) | + +# arrow function possible to detect only with => on same line +( +(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? +\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) +(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? +\\s*=> +) +)) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts entity.name.function.ts"},2:{name:"keyword.operator.definiteassignment.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts"},2:{name:"keyword.operator.definiteassignment.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.readwrite.ts"},2:{name:"keyword.operator.definiteassignment.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"variable-initializer":{patterns:[{begin:"(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.ts"}},end:"(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#expression"}]},{begin:"(?<!=|!)(=)(?!=)",beginCaptures:{1:{name:"keyword.operator.assignment.ts"}},end:"(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",patterns:[{include:"#expression"}]}]}},scopeName:"source.ts",aliases:["ts"]});var n=[e];export{n as default}; diff --git a/assets/chunks/typst.I4qd5QHW.js b/assets/chunks/typst.I4qd5QHW.js new file mode 100644 index 000000000..5a34ac5cc --- /dev/null +++ b/assets/chunks/typst.I4qd5QHW.js @@ -0,0 +1,10 @@ +const t=Object.freeze({displayName:"Typst",name:"typst",patterns:[{include:"#markup"}],repository:{arguments:{patterns:[{match:"\\b[[:alpha:]_][[:alnum:]_-]*(?=:)",name:"variable.parameter.typst"},{include:"#code"}]},code:{patterns:[{include:"#common"},{begin:"{",captures:{0:{name:"punctuation.definition.block.code.typst"}},end:"}",name:"meta.block.code.typst",patterns:[{include:"#code"}]},{begin:"\\[",captures:{0:{name:"punctuation.definition.block.content.typst"}},end:"\\]",name:"meta.block.content.typst",patterns:[{include:"#markup"}]},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.typst"}},end:` +`,name:"comment.line.double-slash.typst"},{match:":",name:"punctuation.separator.colon.typst"},{match:",",name:"punctuation.separator.comma.typst"},{match:"=>|\\.\\.",name:"keyword.operator.typst"},{match:"==|!=|<=|<|>=|>",name:"keyword.operator.relational.typst"},{match:"\\+=|-=|\\*=|/=|=",name:"keyword.operator.assignment.typst"},{match:"\\+|\\*|/|(?<![[:alpha:]_][[:alnum:]_-]*)-(?![:alnum:]_-]*[[:alpha:]_])",name:"keyword.operator.arithmetic.typst"},{match:"\\b(and|or|not)\\b",name:"keyword.operator.word.typst"},{match:"\\b(let|as|in|set|show)\\b",name:"keyword.other.typst"},{match:"\\b(if|else)\\b",name:"keyword.control.conditional.typst"},{match:"\\b(for|while|break|continue)\\b",name:"keyword.control.loop.typst"},{match:"\\b(import|include|export)\\b",name:"keyword.control.import.typst"},{match:"\\b(return)\\b",name:"keyword.control.flow.typst"},{include:"#constants"},{comment:"Function name",match:"\\b[[:alpha:]_][[:alnum:]_-]*!?(?=\\[|\\()",name:"entity.name.function.typst"},{comment:"Function name",match:"(?<=\\bshow\\s*)\\b[[:alpha:]_][[:alnum:]_-]*(?=\\s*[:.])",name:"entity.name.function.typst"},{begin:"(?<=\\b[[:alpha:]_][[:alnum:]_-]*!?)\\(",captures:{0:{name:"punctuation.definition.group.typst"}},comment:"Function arguments",end:"\\)",patterns:[{include:"#arguments"}]},{match:"\\b[[:alpha:]_][[:alnum:]_-]*\\b",name:"variable.other.typst"},{begin:"\\(",captures:{0:{name:"punctuation.definition.group.typst"}},end:"\\)|(?=;)",name:"meta.group.typst",patterns:[{include:"#code"}]}]},comments:{patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.typst"}},end:"\\*/",name:"comment.block.typst",patterns:[{include:"#comments"}]},{begin:"(?<!:)//",beginCaptures:{0:{name:"punctuation.definition.comment.typst"}},end:` +`,name:"comment.line.double-slash.typst",patterns:[{include:"#comments"}]}]},common:{patterns:[{include:"#comments"}]},constants:{patterns:[{match:"\\bnone\\b",name:"constant.language.none.typst"},{match:"\\bauto\\b",name:"constant.language.auto.typst"},{match:"\\b(true|false)\\b",name:"constant.language.boolean.typst"},{match:"\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?(mm|pt|cm|in|em)\\b",name:"constant.numeric.length.typst"},{match:"\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?(rad|deg)\\b",name:"constant.numeric.angle.typst"},{match:"\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?%",name:"constant.numeric.percentage.typst"},{match:"\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?fr",name:"constant.numeric.fr.typst"},{match:"\\b\\d+\\b",name:"constant.numeric.integer.typst"},{match:"\\b(\\d*)?\\.?\\d+([eE][+-]?\\d+)?\\b",name:"constant.numeric.float.typst"},{begin:'"',captures:{0:{name:"punctuation.definition.string.typst"}},end:'"',name:"string.quoted.double.typst",patterns:[{match:'\\\\([\\\\"nrt]|u\\{?[0-9a-zA-Z]*\\}?)',name:"constant.character.escape.string.typst"}]},{begin:"\\$",captures:{0:{name:"punctuation.definition.string.math.typst"}},end:"\\$",name:"string.other.math.typst"}]},markup:{patterns:[{include:"#common"},{match:"\\\\([\\\\/\\[\\]{}#*_=~`$-.]|u\\{[0-9a-zA-Z]*\\}?)",name:"constant.character.escape.content.typst"},{match:"\\\\",name:"punctuation.definition.linebreak.typst"},{match:"~",name:"punctuation.definition.nonbreaking-space.typst"},{match:"-\\?",name:"punctuation.definition.shy.typst"},{match:"---",name:"punctuation.definition.em-dash.typst"},{match:"--",name:"punctuation.definition.en-dash.typst"},{match:"\\.\\.\\.",name:"punctuation.definition.ellipsis.typst"},{match:":([a-zA-Z0-9]+:)+",name:"constant.symbol.typst"},{begin:"(^\\*|\\*$|((?<=\\W|_)\\*)|(\\*(?=\\W|_)))",captures:{0:{name:"punctuation.definition.bold.typst"}},end:`(^\\*|\\*$|((?<=\\W|_)\\*)|(\\*(?=\\W|_)))| +|(?=\\])`,name:"markup.bold.typst",patterns:[{include:"#markup"}]},{begin:"(^_|_$|((?<=\\W|_)_)|(_(?=\\W|_)))",captures:{0:{name:"punctuation.definition.italic.typst"}},end:`(^_|_$|((?<=\\W|_)_)|(_(?=\\W|_)))| +|(?=\\])`,name:"markup.italic.typst",patterns:[{include:"#markup"}]},{match:"https?://[0-9a-zA-Z~/%#&=',;\\.\\+\\?]*",name:"markup.underline.link.typst"},{begin:"`{3,}",captures:{0:{name:"punctuation.definition.raw.typst"}},end:"\\0",name:"markup.raw.block.typst"},{begin:"`",captures:{0:{name:"punctuation.definition.raw.typst"}},end:"`",name:"markup.raw.inline.typst"},{begin:"\\$",captures:{0:{name:"punctuation.definition.string.math.typst"}},end:"\\$",name:"string.other.math.typst"},{begin:"^\\s*=+\\s+",beginCaptures:{0:{name:"punctuation.definition.heading.typst"}},contentName:"entity.name.section.typst",end:` +|(?=<)`,name:"markup.heading.typst",patterns:[{include:"#markup"}]},{match:"^\\s*-\\s+",name:"punctuation.definition.list.unnumbered.typst"},{match:"^\\s*([0-9]*\\.|\\+)\\s+",name:"punctuation.definition.list.numbered.typst"},{captures:{1:{name:"punctuation.definition.list.description.typst"},2:{name:"markup.list.term.typst"}},match:"^\\s*(/)\\s+([^:]*:)"},{captures:{1:{name:"punctuation.definition.label.typst"}},match:"<[[:alpha:]_][[:alnum:]_-]*>",name:"entity.other.label.typst"},{captures:{1:{name:"punctuation.definition.reference.typst"}},match:"(@)[[:alpha:]_][[:alnum:]_-]*",name:"entity.other.reference.typst"},{begin:"(#)(let|set|show)\\b",beginCaptures:{0:{name:"keyword.other.typst"},1:{name:"punctuation.definition.keyword.typst"}},end:` +|(;)|(?=])`,endCaptures:{1:{name:"punctuation.terminator.statement.typst"}},patterns:[{include:"#code"}]},{captures:{1:{name:"punctuation.definition.keyword.typst"}},match:"(#)(as|in)\\b",name:"keyword.other.typst"},{begin:"((#)if|(?<=(}|])\\s*)else)\\b",beginCaptures:{0:{name:"keyword.control.conditional.typst"},2:{name:"punctuation.definition.keyword.typst"}},end:` +|(?=])|(?<=}|])`,patterns:[{include:"#code"}]},{begin:"(#)(for|while)\\b",beginCaptures:{0:{name:"keyword.control.loop.typst"},1:{name:"punctuation.definition.keyword.typst"}},end:` +|(?=])|(?<=}|])`,patterns:[{include:"#code"}]},{captures:{1:{name:"punctuation.definition.keyword.typst"}},match:"(#)(break|continue)\\b",name:"keyword.control.loop.typst"},{begin:"(#)(import|include|export)\\b",beginCaptures:{0:{name:"keyword.control.import.typst"},1:{name:"punctuation.definition.keyword.typst"}},end:` +|(;)|(?=])`,endCaptures:{1:{name:"punctuation.terminator.statement.typst"}},patterns:[{include:"#code"}]},{captures:{1:{name:"punctuation.definition.keyword.typst"}},match:"(#)(return)\\b",name:"keyword.control.flow.typst"},{captures:{2:{name:"punctuation.definition.function.typst"}},comment:"Function name",match:"((#)[[:alpha:]_][[:alnum:]_-]*!?)(?=\\[|\\()",name:"entity.name.function.typst"},{begin:"(?<=#[[:alpha:]_][[:alnum:]_-]*!?)\\(",captures:{0:{name:"punctuation.definition.group.typst"}},comment:"Function arguments",end:"\\)",patterns:[{include:"#arguments"}]},{captures:{1:{name:"punctuation.definition.variable.typst"}},match:"(#)[[:alpha:]_][.[:alnum:]_-]*",name:"entity.other.interpolated.typst"},{begin:"#",end:"\\s",name:"meta.block.content.typst",patterns:[{include:"#code"}]}]}},scopeName:"source.typst",aliases:["typ"]});var n=[t];export{n as default}; diff --git a/assets/chunks/v.C2TBxDwV.js b/assets/chunks/v.C2TBxDwV.js new file mode 100644 index 000000000..6fa117a8b --- /dev/null +++ b/assets/chunks/v.C2TBxDwV.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"V",fileTypes:[".v",".vh",".vsh",".vv","v.mod"],name:"v",patterns:[{include:"#comments"},{include:"#function-decl"},{include:"#as-is"},{include:"#attributes"},{include:"#assignment"},{include:"#module-decl"},{include:"#import-decl"},{include:"#hash-decl"},{include:"#brackets"},{include:"#builtin-fix"},{include:"#escaped-fix"},{include:"#operators"},{include:"#function-limited-overload-decl"},{include:"#function-extend-decl"},{include:"#function-exist"},{include:"#generic"},{include:"#constants"},{include:"#type"},{include:"#enum"},{include:"#interface"},{include:"#struct"},{include:"#keywords"},{include:"#storage"},{include:"#numbers"},{include:"#strings"},{include:"#types"},{include:"#punctuations"},{include:"#variable-assign"},{include:"#function-decl"}],repository:{"as-is":{begin:"\\s+(as|is)\\s+",beginCaptures:{1:{name:"keyword.$1.v"}},end:"([\\w.]*)",endCaptures:{1:{name:"entity.name.alias.v"}}},assignment:{captures:{1:{patterns:[{include:"#operators"}]}},match:"\\s+((?:\\:|\\+|\\-|\\*|/|\\%|\\&|\\||\\^)?=)\\s+",name:"meta.definition.variable.v"},attributes:{captures:{1:{name:"meta.function.attribute.v"},2:{name:"punctuation.definition.begin.bracket.square.v"},3:{name:"storage.modifier.attribute.v"},4:{name:"punctuation.definition.end.bracket.square.v"}},match:"^\\s*((\\[)(deprecated|unsafe|console|heap|manualfree|typedef|live|inline|flag|ref_only|direct_array_access|callconv)(\\]))",name:"meta.definition.attribute.v"},brackets:{patterns:[{begin:"{",beginCaptures:{0:{name:"punctuation.definition.bracket.curly.begin.v"}},end:"}",endCaptures:{0:{name:"punctuation.definition.bracket.curly.end.v"}},patterns:[{include:"$self"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.bracket.round.begin.v"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.bracket.round.end.v"}},patterns:[{include:"$self"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.bracket.square.begin.v"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.bracket.square.end.v"}},patterns:[{include:"$self"}]}]},"builtin-fix":{patterns:[{patterns:[{match:"(const)(?=\\s*\\()",name:"storage.modifier.v"},{match:"\\b(fn|type|enum|struct|union|interface|map|assert|sizeof|typeof|__offsetof)\\b(?=\\s*\\()",name:"keyword.$1.v"}]},{patterns:[{match:"(\\$if|\\$else)(?=\\s*\\()",name:"keyword.control.v"},{match:"\\b(as|in|is|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b(?=\\s*\\()",name:"keyword.control.v"}]},{patterns:[{captures:{1:{name:"storage.type.numeric.v"}},match:"(?<!.)(i?(?:8|16|nt|64|128)|u?(?:16|32|64|128)|f?(?:32|64))(?=\\s*\\()",name:"meta.expr.numeric.cast.v"},{captures:{1:{name:"storage.type.$1.v"}},match:"(bool|byte|byteptr|charptr|voidptr|string|rune|size_t|[ui]size)(?=\\s*\\()",name:"meta.expr.bool.cast.v"}]}]},comments:{patterns:[{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.v"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.v"}},name:"comment.block.documentation.v",patterns:[{include:"#comments"}]},{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.begin.v"}},end:"$",name:"comment.line.double-slash.v"}]},constants:{match:"\\b(true|false|none)\\b",name:"constant.language.v"},enum:{captures:{1:{name:"storage.modifier.$1.v"},2:{name:"storage.type.enum.v"},3:{name:"entity.name.enum.v"}},match:"^\\s*(?:(pub)?\\s+)?(enum)\\s+(?:\\w+\\.)?(\\w*)",name:"meta.definition.enum.v"},"function-decl":{captures:{1:{name:"storage.modifier.v"},2:{name:"keyword.fn.v"},3:{name:"entity.name.function.v"},4:{patterns:[{include:"#generic"}]}},match:"^(\\bpub\\b\\s+)?(\\bfn\\b)\\s+(?:\\([^\\)]+\\)\\s+)?(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",name:"meta.definition.function.v"},"function-exist":{captures:{0:{name:"meta.function.call.v"},1:{patterns:[{include:"#illegal-name"},{match:"\\w+",name:"entity.name.function.v"}]},2:{patterns:[{include:"#generic"}]}},match:"(\\w+)((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?(?=\\s*\\()",name:"meta.support.function.v"},"function-extend-decl":{captures:{1:{name:"storage.modifier.v"},2:{name:"keyword.fn.v"},3:{name:"punctuation.definition.bracket.round.begin.v"},4:{patterns:[{include:"#brackets"},{include:"#storage"},{include:"#generic"},{include:"#types"},{include:"#punctuation"}]},5:{name:"punctuation.definition.bracket.round.end.v"},6:{patterns:[{include:"#illegal-name"},{match:"\\w+",name:"entity.name.function.v"}]},7:{patterns:[{include:"#generic"}]}},match:"^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",name:"meta.definition.function.v"},"function-limited-overload-decl":{captures:{1:{name:"storage.modifier.v"},2:{name:"keyword.fn.v"},3:{name:"punctuation.definition.bracket.round.begin.v"},4:{patterns:[{include:"#brackets"},{include:"#storage"},{include:"#generic"},{include:"#types"},{include:"#punctuation"}]},5:{name:"punctuation.definition.bracket.round.end.v"},6:{patterns:[{include:"#operators"}]},7:{name:"punctuation.definition.bracket.round.begin.v"},8:{patterns:[{include:"#brackets"},{include:"#storage"},{include:"#generic"},{include:"#types"},{include:"#punctuation"}]},9:{name:"punctuation.definition.bracket.round.end.v"},10:{patterns:[{include:"#illegal-name"},{match:"\\w+",name:"entity.name.function.v"}]}},match:"^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*([\\+\\-\\*\\/])?\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)",name:"meta.definition.function.v"},generic:{patterns:[{captures:{1:{name:"punctuation.definition.bracket.angle.begin.v"},2:{patterns:[{include:"#illegal-name"},{match:"\\w+",name:"entity.name.generic.v"}]},3:{name:"punctuation.definition.bracket.angle.end.v"}},match:"(?<=[\\w\\s+])(\\<)(\\w+)(\\>)",name:"meta.definition.generic.v"}]},"hash-decl":{begin:"^\\s*(#)",end:"$",name:"markup.bold.v"},"illegal-name":{match:"\\d\\w+",name:"invalid.illegal.v"},"import-decl":{begin:"^\\s*(import)\\s+",beginCaptures:{1:{name:"keyword.import.v"}},end:"([\\w.]+)",endCaptures:{1:{name:"entity.name.import.v"}},name:"meta.import.v"},interface:{captures:{1:{name:"storage.modifier.$1.v"},2:{name:"keyword.interface.v"},3:{patterns:[{include:"#illegal-name"},{match:"\\w+",name:"entity.name.interface.v"}]}},match:"^\\s*(?:(pub)?\\s+)?(interface)\\s+(\\w*)",name:"meta.definition.interface.v"},keywords:{patterns:[{match:"(\\$if|\\$else)",name:"keyword.control.v"},{match:"(?<!@)\\b(as|it|is|in|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b",name:"keyword.control.v"},{match:"(?<!@)\\b(fn|type|typeof|enum|struct|interface|map|assert|sizeof|__offsetof)\\b",name:"keyword.$1.v"}]},"module-decl":{begin:"^\\s*(module)\\s+",beginCaptures:{1:{name:"keyword.module.v"}},end:"([\\w.]+)",endCaptures:{1:{name:"entity.name.module.v"}},name:"meta.module.v"},numbers:{patterns:[{match:"([0-9]+(_?))+(\\.)([0-9]+[eE][-+]?[0-9]+)",name:"constant.numeric.exponential.v"},{match:"([0-9]+(_?))+(\\.)([0-9]+)",name:"constant.numeric.float.v"},{match:"(?:0b)(?:(?:[0-1]+)(?:_?))+",name:"constant.numeric.binary.v"},{match:"(?:0o)(?:(?:[0-7]+)(?:_?))+",name:"constant.numeric.octal.v"},{match:"(?:0x)(?:(?:[0-9a-fA-F]+)(?:_?))+",name:"constant.numeric.hex.v"},{match:"(?:(?:[0-9]+)(?:[_]?))+",name:"constant.numeric.integer.v"}]},operators:{patterns:[{match:"(\\+|\\-|\\*|\\/|\\%|\\+\\+|\\-\\-|\\>\\>|\\<\\<)",name:"keyword.operator.arithmetic.v"},{match:"(\\=\\=|\\!\\=|\\>|\\<|\\>\\=|\\<\\=)",name:"keyword.operator.relation.v"},{match:"(\\:\\=|\\=|\\+\\=|\\-\\=|\\*\\=|\\/\\=|\\%\\=|\\&\\=|\\|\\=|\\^\\=|\\~\\=|\\&\\&\\=|\\|\\|\\=|\\>\\>\\=|\\<\\<\\=)",name:"keyword.operator.assignment.v"},{match:"(\\&|\\||\\^|\\~|<(?!<)|>(?!>))",name:"keyword.operator.bitwise.v"},{match:"(\\&\\&|\\|\\||\\!)",name:"keyword.operator.logical.v"},{match:"\\?",name:"keyword.operator.optional.v"}]},punctuation:{patterns:[{match:"\\.",name:"punctuation.delimiter.period.dot.v"},{match:",",name:"punctuation.delimiter.comma.v"},{match:":",name:"punctuation.separator.key-value.colon.v"},{match:";",name:"punctuation.definition.other.semicolon.v"},{match:"\\?",name:"punctuation.definition.other.questionmark.v"},{match:"#",name:"punctuation.hash.v"}]},punctuations:{patterns:[{match:"(?:\\.)",name:"punctuation.accessor.v"},{match:"(?:,)",name:"punctuation.separator.comma.v"}]},storage:{match:"\\b(const|mut|pub)\\b",name:"storage.modifier.v"},"string-escaped-char":{patterns:[{match:`\\\\([0-7]{3}|[\\$abfnrtv\\\\'"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})`,name:"constant.character.escape.v"},{match:`\\\\[^0-7\\$xuUabfnrtv\\'"]`,name:"invalid.illegal.unknown-escape.v"}]},"string-interpolation":{captures:{1:{patterns:[{match:"\\$\\d[\\.\\w]+",name:"invalid.illegal.v"},{match:"\\$([\\.\\w]+|\\{.*?\\})",name:"variable.other.interpolated.v"}]}},match:"(\\$([\\w.]+|\\{.*?\\}))",name:"meta.string.interpolation.v"},"string-placeholder":{match:"%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGsp]",name:"constant.other.placeholder.v"},strings:{patterns:[{begin:"`",end:"`",name:"string.quoted.rune.v",patterns:[{include:"#string-escaped-char"},{include:"#string-interpolation"},{include:"#string-placeholder"}]},{begin:"(r)'",beginCaptures:{1:{name:"storage.type.string.v"}},end:"'",name:"string.quoted.raw.v",patterns:[{include:"#string-interpolation"},{include:"#string-placeholder"}]},{begin:'(r)"',beginCaptures:{1:{name:"storage.type.string.v"}},end:'"',name:"string.quoted.raw.v",patterns:[{include:"#string-interpolation"},{include:"#string-placeholder"}]},{begin:"(c?)'",beginCaptures:{1:{name:"storage.type.string.v"}},end:"'",name:"string.quoted.v",patterns:[{include:"#string-escaped-char"},{include:"#string-interpolation"},{include:"#string-placeholder"}]},{begin:'(c?)"',beginCaptures:{1:{name:"storage.type.string.v"}},end:'"',name:"string.quoted.v",patterns:[{include:"#string-escaped-char"},{include:"#string-interpolation"},{include:"#string-placeholder"}]}]},struct:{patterns:[{begin:"^\\s*(?:(mut|pub(?:\\s+mut)?|__global)\\s+)?(struct|union)\\s+([\\w.]+)\\s*|({)",beginCaptures:{1:{name:"storage.modifier.$1.v"},2:{name:"storage.type.struct.v"},3:{name:"entity.name.type.v"},4:{name:"punctuation.definition.bracket.curly.begin.v"}},end:"\\s*|(})",endCaptures:{1:{name:"punctuation.definition.bracket.curly.end.v"}},name:"meta.definition.struct.v",patterns:[{include:"#struct-access-modifier"},{captures:{1:{name:"variable.other.property.v"},2:{patterns:[{include:"#numbers"},{include:"#brackets"},{include:"#types"},{match:"\\w+",name:"storage.type.other.v"}]},3:{name:"keyword.operator.assignment.v"},4:{patterns:[{include:"$self"}]}},match:"\\b(\\w+)\\s+([\\w\\[\\]\\*&.]+)(?:\\s*(=)\\s*((?:.(?=$|//|/\\*))*+))?"},{include:"#types"},{include:"$self"}]},{captures:{1:{name:"storage.modifier.$1.v"},2:{name:"storage.type.struct.v"},3:{name:"entity.name.struct.v"}},match:"^\\s*(?:(mut|pub(?:\\s+mut)?|__global))\\s+?(struct)\\s+(?:\\s+([\\w.]+))?",name:"meta.definition.struct.v"}]},"struct-access-modifier":{captures:{1:{name:"storage.modifier.$1.v"},2:{name:"punctuation.separator.struct.key-value.v"}},match:"(?<=\\s|^)(mut|pub(?:\\s+mut)?|__global)(:|\\b)"},type:{captures:{1:{name:"storage.modifier.$1.v"},2:{name:"storage.type.type.v"},3:{patterns:[{include:"#illegal-name"},{include:"#types"},{match:"\\w+",name:"entity.name.type.v"}]},4:{patterns:[{include:"#illegal-name"},{include:"#types"},{match:"\\w+",name:"entity.name.type.v"}]}},match:"^\\s*(?:(pub)?\\s+)?(type)\\s+(\\w*)\\s+(?:\\w+\\.+)?(\\w*)",name:"meta.definition.type.v"},types:{patterns:[{match:"(?<!\\.)\\b(i(8|16|nt|64|128)|u(8|16|32|64|128)|f(32|64))\\b",name:"storage.type.numeric.v"},{match:"(?<!\\.)\\b(bool|byte|byteptr|charptr|voidptr|string|ustring|rune)\\b",name:"storage.type.$1.v"}]},"variable-assign":{captures:{0:{patterns:[{match:"[a-zA-Z_]\\w*",name:"variable.other.assignment.v"},{include:"#punctuation"}]}},match:"[a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*(?=\\s*(?:=|:=))"}},scopeName:"source.v"});var n=[e];export{n as default}; diff --git a/assets/chunks/vb.beD-FUib.js b/assets/chunks/vb.beD-FUib.js new file mode 100644 index 000000000..1f8fb4106 --- /dev/null +++ b/assets/chunks/vb.beD-FUib.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Visual Basic",name:"vb",patterns:[{match:"\\n",name:"meta.ending-space"},{include:"#round-brackets"},{begin:"^(?=\\t)",end:"(?=[^\\t])",name:"meta.leading-space",patterns:[{captures:{1:{name:"meta.odd-tab.tabs"},2:{name:"meta.even-tab.tabs"}},match:"(\\t)(\\t)?"}]},{begin:"^(?= )",end:"(?=[^ ])",name:"meta.leading-space",patterns:[{captures:{1:{name:"meta.odd-tab.spaces"},2:{name:"meta.even-tab.spaces"}},match:"( )( )?"}]},{captures:{1:{name:"storage.type.function.asp"},2:{name:"entity.name.function.asp"},3:{name:"punctuation.definition.parameters.asp"},4:{name:"variable.parameter.function.asp"},5:{name:"punctuation.definition.parameters.asp"}},match:"^\\s*((?i:function|sub))\\s*([a-zA-Z_]\\w*)\\s*(\\()([^)]*)(\\)).*\\n?",name:"meta.function.asp"},{begin:"(^[ \\t]+)?(?=')",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.asp"}},end:"(?!\\G)",patterns:[{begin:"'",beginCaptures:{0:{name:"punctuation.definition.comment.asp"}},end:"\\n",name:"comment.line.apostrophe.asp"}]},{match:"(?i:\\b(If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b)",name:"keyword.control.asp"},{match:"(?i:\\b(Mod|And|Not|Or|Xor|as)\\b)",name:"keyword.operator.asp"},{captures:{1:{name:"storage.type.asp"},2:{name:"variable.other.bfeac.asp"},3:{name:"meta.separator.comma.asp"}},match:"(?i:(dim)\\s*(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)\\s*(,?)))",name:"variable.other.dim.asp"},{match:"(?i:\\s*\\b(Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End Sub|End Function|End Class|End Property|Public Property|Private Property|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\\b\\s*)",name:"storage.type.asp"},{match:"(?i:\\b(Private|Public|Default)\\b)",name:"storage.modifier.asp"},{match:"(?i:\\s*\\b(Empty|False|Nothing|Null|True)\\b)",name:"constant.language.asp"},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.asp"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.asp"}},name:"string.quoted.double.asp",patterns:[{match:'""',name:"constant.character.escape.apostrophe.asp"}]},{captures:{1:{name:"punctuation.definition.variable.asp"}},match:"(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*",name:"variable.other.asp"},{match:"(?i:\\b(Application|ObjectContext|Request|Response|Server|Session)\\b)",name:"support.class.asp"},{match:"(?i:\\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b)",name:"support.class.collection.asp"},{match:"(?i:\\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b)",name:"support.constant.asp"},{match:"(?i:\\b(Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b)",name:"support.function.asp"},{match:"(?i:\\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b)",name:"support.function.event.asp"},{match:"(?i:(?<=as )(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b))",name:"support.type.vb.asp"},{match:"(?i:\\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b)",name:"support.function.vb.asp"},{match:"-?\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b",name:"constant.numeric.asp"},{match:"(?i:\\b(vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b)",name:"support.type.vb.asp"},{captures:{1:{name:"entity.name.function.asp"}},match:"(?i:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))",name:"support.function.asp"},{match:"(?i:((?<=(\\+|=|-|\\&|\\\\|/|<|>|\\(|,))\\s*\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?!(\\(|\\.))|\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?=\\s*(\\+|=|-|\\&|\\\\|/|<|>|\\(|\\)))))",name:"variable.other.asp"},{match:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(in|instanceof|new|delete|typeof|void)\\b",name:"keyword.operator.js"}],repository:{"round-brackets":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.round-brackets.begin.asp"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.round-brackets.end.asp"}},name:"meta.round-brackets",patterns:[{include:"source.asp.vb.net"}]}},scopeName:"source.asp.vb.net",aliases:["cmd"]});var a=[e];export{a as default}; diff --git a/assets/chunks/verilog.DVfdqzEq.js b/assets/chunks/verilog.DVfdqzEq.js new file mode 100644 index 000000000..f4ea58d51 --- /dev/null +++ b/assets/chunks/verilog.DVfdqzEq.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Verilog",fileTypes:["v","vh"],name:"verilog",patterns:[{include:"#comments"},{include:"#module_pattern"},{include:"#keywords"},{include:"#constants"},{include:"#strings"},{include:"#operators"}],repository:{comments:{patterns:[{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.verilog"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.verilog"}},end:"\\n",name:"comment.line.double-slash.verilog"}]},{begin:"/\\*",end:"\\*/",name:"comment.block.c-style.verilog"}]},constants:{patterns:[{match:"`(?!(celldefine|endcelldefine|default_nettype|define|undef|ifdef|ifndef|else|endif|include|resetall|timescale|unconnected_drive|nounconnected_drive))[a-z_A-Z][a-zA-Z0-9_$]*",name:"variable.other.constant.verilog"},{match:"[0-9]*'[bBoOdDhH][a-fA-F0-9_xXzZ]+\\b",name:"constant.numeric.sized_integer.verilog"},{captures:{1:{name:"constant.numeric.integer.verilog"},2:{name:"punctuation.separator.range.verilog"},3:{name:"constant.numeric.integer.verilog"}},match:"\\b(\\d+)(:)(\\d+)\\b",name:"meta.block.numeric.range.verilog"},{match:"\\b\\d[\\d_]*(?i:e\\d+)?\\b",name:"constant.numeric.integer.verilog"},{match:"\\b\\d+\\.\\d+(?i:e\\d+)?\\b",name:"constant.numeric.real.verilog"},{match:"#\\d+",name:"constant.numeric.delay.verilog"},{match:"\\b[01xXzZ]+\\b",name:"constant.numeric.logic.verilog"}]},instantiation_patterns:{patterns:[{include:"#keywords"},{begin:"^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s+([a-zA-Z][a-zA-Z0-9_]*)(?<!begin|if)\\s*(?=\\(|$)",beginCaptures:{1:{name:"entity.name.tag.module.reference.verilog"},2:{name:"entity.name.tag.module.identifier.verilog"}},end:";",endCaptures:{0:{name:"punctuation.terminator.expression.verilog"}},name:"meta.block.instantiation.parameterless.verilog",patterns:[{include:"#comments"},{include:"#constants"},{include:"#strings"}]},{begin:"^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s*(#)(?=\\s*\\()",beginCaptures:{1:{name:"entity.name.tag.module.reference.verilog"}},end:";",endCaptures:{0:{name:"punctuation.terminator.expression.verilog"}},name:"meta.block.instantiation.with.parameters.verilog",patterns:[{include:"#parenthetical_list"},{match:"[a-zA-Z][a-zA-Z0-9_]*",name:"entity.name.tag.module.identifier.verilog"}]}]},keywords:{patterns:[{match:"\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case[xz]?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",name:"keyword.other.verilog"},{match:"^\\s*`((cell)?define|default_(decay_time|nettype|trireg_strength)|delay_mode_(path|unit|zero)|ifdef|ifndef|include|end(if|celldefine)|else|(no)?unconnected_drive|resetall|timescale|undef)\\b",name:"keyword.other.compiler.directive.verilog"},{match:"\\$(f(open|close)|readmem(b|h)|timeformat|printtimescale|stop|finish|(s|real)?time|realtobits|bitstoreal|rtoi|itor|(f)?(display|write(h|b)))\\b",name:"support.function.system.console.tasks.verilog"},{match:"\\$(random|dist_(chi_square|erlang|exponential|normal|poisson|t|uniform))\\b",name:"support.function.system.random_number.tasks.verilog"},{match:"\\$((a)?sync\\$((n)?and|(n)or)\\$(array|plane))\\b",name:"support.function.system.pld_modeling.tasks.verilog"},{match:"\\$(q_(initialize|add|remove|full|exam))\\b",name:"support.function.system.stochastic.tasks.verilog"},{match:"\\$(hold|nochange|period|recovery|setup(hold)?|skew|width)\\b",name:"support.function.system.timing.tasks.verilog"},{match:"\\$(dump(file|vars|off|on|all|limit|flush))\\b",name:"support.function.system.vcd.tasks.verilog"},{match:"\\$(countdrivers|list|input|scope|showscopes|(no)?(key|log)|reset(_count|_value)?|(inc)?save|restart|showvars|getpattern|sreadmem(b|h)|scale)",name:"support.function.non-standard.tasks.verilog"}]},module_pattern:{patterns:[{begin:"\\b(module)\\s+([a-zA-Z][a-zA-Z0-9_]*)",beginCaptures:{1:{name:"storage.type.module.verilog"},2:{name:"entity.name.type.module.verilog"}},end:"\\bendmodule\\b",endCaptures:{0:{name:"storage.type.module.verilog"}},name:"meta.block.module.verilog",patterns:[{include:"#comments"},{include:"#keywords"},{include:"#constants"},{include:"#strings"},{include:"#instantiation_patterns"},{include:"#operators"}]}]},operators:{patterns:[{match:"\\+|-|\\*|/|%|(<|>)=?|(!|=)?==?|!|&&?|\\|\\|?|\\^?~|~\\^?",name:"keyword.operator.verilog"}]},parenthetical_list:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.list.verilog"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.list.verilog"}},name:"meta.block.parenthetical_list.verilog",patterns:[{include:"#parenthetical_list"},{include:"#comments"},{include:"#keywords"},{include:"#constants"},{include:"#strings"}]}]},strings:{patterns:[{begin:'"',end:'"',name:"string.quoted.double.verilog",patterns:[{match:"\\\\.",name:"constant.character.escape.verilog"}]}]}},scopeName:"source.verilog"});var n=[e];export{n as default}; diff --git a/assets/chunks/vesper.BSB_bK09.js b/assets/chunks/vesper.BSB_bK09.js new file mode 100644 index 000000000..8040f8d7f --- /dev/null +++ b/assets/chunks/vesper.BSB_bK09.js @@ -0,0 +1 @@ +var t=Object.freeze({colors:{"activityBar.background":"#101010","activityBar.foreground":"#A0A0A0","activityBarBadge.background":"#FFC799","activityBarBadge.foreground":"#000","badge.background":"#FFC799","badge.foreground":"#000","button.background":"#FFC799","button.foreground":"#000","button.hoverBackground":"#FFCFA8","diffEditor.insertedLineBackground":"#99FFE415","diffEditor.insertedTextBackground":"#99FFE415","diffEditor.removedLineBackground":"#FF808015","diffEditor.removedTextBackground":"#FF808015","editor.background":"#101010","editor.foreground":"#FFF","editor.selectionBackground":"#FFFFFF25","editor.selectionHighlightBackground":"#FFFFFF25","editorBracketHighlight.foreground1":"#A0A0A0","editorBracketHighlight.foreground2":"#A0A0A0","editorBracketHighlight.foreground3":"#A0A0A0","editorBracketHighlight.foreground4":"#A0A0A0","editorBracketHighlight.foreground5":"#A0A0A0","editorBracketHighlight.foreground6":"#A0A0A0","editorBracketHighlight.unexpectedBracket.foreground":"#FF8080","editorError.foreground":"#FF8080","editorGroupHeader.tabsBackground":"#101010","editorGutter.addedBackground":"#99FFE4","editorGutter.deletedBackground":"#FF8080","editorGutter.modifiedBackground":"#FFC799","editorHoverWidget.background":"#161616","editorHoverWidget.border":"#282828","editorInlayHint.background":"#1C1C1C","editorInlayHint.foreground":"#A0A0A0","editorLineNumber.foreground":"#505050","editorOverviewRuler.border":"#101010","editorWarning.foreground":"#FFC799","editorWidget.background":"#101010",focusBorder:"#FFC799","icon.foreground":"#A0A0A0","input.background":"#1C1C1C","list.activeSelectionBackground":"#232323","list.activeSelectionForeground":"#FFC799","list.errorForeground":"#FF8080","list.highlightForeground":"#FFC799","list.hoverBackground":"#282828","list.inactiveSelectionBackground":"#232323","scrollbarSlider.background":"#34343480","scrollbarSlider.hoverBackground":"#343434","selection.background":"#666","settings.modifiedItemIndicator":"#FFC799","sideBar.background":"#101010","sideBarSectionHeader.background":"#101010","sideBarSectionHeader.foreground":"#A0A0A0","sideBarTitle.foreground":"#A0A0A0","statusBar.background":"#101010","statusBar.debuggingBackground":"#FF7300","statusBar.debuggingForeground":"#FFF","statusBar.foreground":"#A0A0A0","statusBarItem.remoteBackground":"#FFC799","statusBarItem.remoteForeground":"#000","tab.activeBackground":"#161616","tab.border":"#101010","tab.inactiveBackground":"#101010","textLink.activeForeground":"#FFCFA8","textLink.foreground":"#FFC799","titleBar.activeBackground":"#101010","titleBar.activeForeground":"#7E7E7E","titleBar.inactiveBackground":"#101010","titleBar.inactiveForeground":"#707070"},displayName:"Vesper",name:"vesper",tokenColors:[{scope:["comment","punctuation.definition.comment"],settings:{foreground:"#8b8b8b94"}},{scope:["variable","string constant.other.placeholder","entity.name.tag"],settings:{foreground:"#FFF"}},{scope:["constant.other.color"],settings:{foreground:"#FFF"}},{scope:["invalid","invalid.illegal"],settings:{foreground:"#FF8080"}},{scope:["keyword","storage.type","storage.modifier"],settings:{foreground:"#A0A0A0"}},{scope:["keyword.control","constant.other.color","punctuation.definition.tag","punctuation.separator.inheritance.php","punctuation.definition.tag.html","punctuation.definition.tag.begin.html","punctuation.definition.tag.end.html","punctuation.section.embedded","keyword.other.template","keyword.other.substitution"],settings:{foreground:"#A0A0A0"}},{scope:["entity.name.tag","meta.tag.sgml","markup.deleted.git_gutter"],settings:{foreground:"#FFC799"}},{scope:["entity.name.function","variable.function","support.function","keyword.other.special-method"],settings:{foreground:"#FFC799"}},{scope:["meta.block variable.other"],settings:{foreground:"#FFF"}},{scope:["support.other.variable","string.other.link"],settings:{foreground:"#FFF"}},{scope:["constant.numeric","support.constant","constant.character","constant.escape","keyword.other.unit","keyword.other","constant.language.boolean"],settings:{foreground:"#FFC799"}},{scope:["string","constant.other.symbol","constant.other.key","meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js"],settings:{foreground:"#99FFE4"}},{scope:["entity.name","support.type","support.class","support.other.namespace.use.php","meta.use.php","support.other.namespace.php","markup.changed.git_gutter","support.type.sys-types"],settings:{foreground:"#FFC799"}},{scope:["source.css support.type.property-name","source.sass support.type.property-name","source.scss support.type.property-name","source.less support.type.property-name","source.stylus support.type.property-name","source.postcss support.type.property-name","source.postcss support.type.property-name","support.type.vendored.property-name.css","source.css.scss entity.name.tag","variable.parameter.keyframe-list.css","meta.property-name.css","variable.parameter.url.scss","meta.property-value.scss","meta.property-value.css"],settings:{foreground:"#FFF"}},{scope:["entity.name.module.js","variable.import.parameter.js","variable.other.class.js"],settings:{foreground:"#FF8080"}},{scope:["variable.language"],settings:{foreground:"#A0A0A0"}},{scope:["entity.name.method.js"],settings:{foreground:"#FFFF"}},{scope:["meta.class-method.js entity.name.function.js","variable.function.constructor"],settings:{foreground:"#FFFF"}},{scope:["entity.other.attribute-name","meta.property-list.scss","meta.attribute-selector.scss","meta.property-value.css","entity.other.keyframe-offset.css","meta.selector.css","entity.name.tag.reference.scss","entity.name.tag.nesting.css","punctuation.separator.key-value.css"],settings:{foreground:"#A0A0A0"}},{scope:["text.html.basic entity.other.attribute-name.html","text.html.basic entity.other.attribute-name"],settings:{foreground:"#FFC799"}},{scope:["entity.other.attribute-name.class","entity.other.attribute-name.id","meta.attribute-selector.scss","variable.parameter.misc.css"],settings:{foreground:"#FFC799"}},{scope:["source.sass keyword.control","meta.attribute-selector.scss"],settings:{foreground:"#99FFE4"}},{scope:["markup.inserted"],settings:{foreground:"#99FFE4"}},{scope:["markup.deleted"],settings:{foreground:"#FF8080"}},{scope:["markup.changed"],settings:{foreground:"#A0A0A0"}},{scope:["string.regexp"],settings:{foreground:"#A0A0A0"}},{scope:["constant.character.escape"],settings:{foreground:"#A0A0A0"}},{scope:["*url*","*link*","*uri*"],settings:{fontStyle:"underline"}},{scope:["tag.decorator.js entity.name.tag.js","tag.decorator.js punctuation.definition.tag.js"],settings:{foreground:"#FFFF"}},{scope:["source.js constant.other.object.key.js string.unquoted.label.js"],settings:{fontStyle:"italic",foreground:"#FF8080"}},{scope:["source.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"],settings:{foreground:"#FFC799"}},{scope:["text.html.markdown","punctuation.definition.list_item.markdown"],settings:{foreground:"#FFF"}},{scope:["text.html.markdown markup.inline.raw.markdown"],settings:{foreground:"#A0A0A0"}},{scope:["text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown"],settings:{foreground:"#FFF"}},{scope:["markdown.heading","markup.heading | markup.heading entity.name","markup.heading.markdown punctuation.definition.heading.markdown","markup.heading","markup.inserted.git_gutter"],settings:{foreground:"#FFC799"}},{scope:["markup.italic"],settings:{fontStyle:"italic",foreground:"#FFF"}},{scope:["markup.bold","markup.bold string"],settings:{fontStyle:"bold",foreground:"#FFF"}},{scope:["markup.bold markup.italic","markup.italic markup.bold","markup.quote markup.bold","markup.bold markup.italic string","markup.italic markup.bold string","markup.quote markup.bold string"],settings:{fontStyle:"bold",foreground:"#FFF"}},{scope:["markup.underline"],settings:{fontStyle:"underline",foreground:"#FFC799"}},{scope:["markup.quote punctuation.definition.blockquote.markdown"],settings:{foreground:"#FFF"}},{scope:["markup.quote"]},{scope:["string.other.link.title.markdown"],settings:{foreground:"#FFFF"}},{scope:["string.other.link.description.title.markdown"],settings:{foreground:"#A0A0A0"}},{scope:["constant.other.reference.link.markdown"],settings:{foreground:"#FFC799"}},{scope:["markup.raw.block"],settings:{foreground:"#A0A0A0"}},{scope:["markup.raw.block.fenced.markdown"],settings:{foreground:"#00000050"}},{scope:["punctuation.definition.fenced.markdown"],settings:{foreground:"#00000050"}},{scope:["markup.raw.block.fenced.markdown","variable.language.fenced.markdown","punctuation.section.class.end"],settings:{foreground:"#FFF"}},{scope:["variable.language.fenced.markdown"],settings:{foreground:"#FFF"}},{scope:["meta.separator"],settings:{fontStyle:"bold",foreground:"#65737E"}},{scope:["markup.table"],settings:{foreground:"#FFF"}}],type:"dark"});export{t as default}; diff --git a/assets/chunks/vhdl.QZ3jNtnE.js b/assets/chunks/vhdl.QZ3jNtnE.js new file mode 100644 index 000000000..8c2a4a6de --- /dev/null +++ b/assets/chunks/vhdl.QZ3jNtnE.js @@ -0,0 +1,515 @@ +const n=Object.freeze({displayName:"VHDL",fileTypes:["vhd","vhdl","vho","vht"],name:"vhdl",patterns:[{include:"#block_processing"},{include:"#cleanup"}],repository:{architecture_pattern:{patterns:[{begin:`(?x) + + +\\b((?i:architecture))\\s+ + + +(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\s)\\s+ + + +((?i:of))\\s+ + + +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*(?i:is))\\b +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.type.architecture.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"},7:{name:"entity.name.type.entity.reference.vhdl"},8:{name:"invalid.illegal.invalid.identifier.vhdl"}},end:`(?x) + +\\b((?i:end)) + + +(\\s+((?i:architecture)))? + + +(\\s+((\\3)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.type.architecture.end.vhdl"},7:{name:"invalid.illegal.mismatched.identifier.vhdl"}},name:"support.block.architecture",patterns:[{include:"#block_pattern"},{include:"#function_definition_pattern"},{include:"#procedure_definition_pattern"},{include:"#component_pattern"},{include:"#if_pattern"},{include:"#process_pattern"},{include:"#type_pattern"},{include:"#record_pattern"},{include:"#for_pattern"},{include:"#entity_instantiation_pattern"},{include:"#component_instantiation_pattern"},{include:"#cleanup"}]}]},attribute_list:{patterns:[{begin:"\\'\\(",beginCaptures:{0:{name:"punctuation.vhdl"}},end:"\\)",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_list"},{include:"#cleanup"}]}]},block_pattern:{patterns:[{begin:`(?x) + +^\\s* + +( +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* +)? + +(\\s*(?i:block)) +`,beginCaptures:{2:{name:"meta.block.block.name"},3:{name:"keyword.language.vhdl"},4:{name:"keyword.language.vhdl"}},end:`(?x) + +((?i:end\\s+block)) + + +(\\s+((\\2)|(.+?)))? + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},2:{name:"meta.block.block.end"},5:{name:"invalid.illegal.mismatched.identifier.vhdl"}},name:"meta.block.block",patterns:[{include:"#control_patterns"},{include:"#cleanup"}]}]},block_processing:{patterns:[{include:"#package_pattern"},{include:"#package_body_pattern"},{include:"#entity_pattern"},{include:"#architecture_pattern"}]},case_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +( +( +([a-zA-Z][a-zA-Z0-9_]*) +|(.+?) +) +\\s*:\\s* +)? + + +\\b((?i:case))\\b +`,beginCaptures:{3:{name:"entity.name.tag.case.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end))\\s* + + +(\\s+(((?i:case))|(.*?))) + + +(\\s+((\\2)|(.*?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},4:{name:"keyword.language.vhdl"},5:{name:"invalid.illegal.case.required.vhdl"},8:{name:"entity.name.tag.case.end.vhdl"},9:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#control_patterns"},{include:"#cleanup"}]}]},cleanup:{patterns:[{include:"#comments"},{include:"#constants_numeric"},{include:"#strings"},{include:"#attribute_list"},{include:"#syntax_highlighting"}]},comments:{patterns:[{match:"--.*$\\n?",name:"comment.line.double-dash.vhdl"}]},component_instantiation_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* + + +([a-zA-Z][a-zA-Z0-9_]*)\\b + + + +(?=\\s*($|generic|port)) +`,beginCaptures:{1:{name:"entity.name.section.component_instantiation.vhdl"},2:{name:"punctuation.vhdl"},3:{name:"entity.name.tag.component.reference.vhdl"}},end:";",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_list"},{include:"#cleanup"}]}]},component_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +\\b((?i:component))\\s+ + + +(([a-zA-Z_][a-zA-Z0-9_]*)\\s*|(.+?))(?=\\b(?i:is|port)\\b|$|--) + + +(\\b((?i:is\\b)))? +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.type.component.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},6:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end))\\s+ + + +(((?i:component\\b))|(.+?))(?=\\s*|;) + + +(\\s+((\\3)|(.+?)))?(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},4:{name:"invalid.illegal.component.keyword.required.vhdl"},7:{name:"entity.name.type.component.end.vhdl"},8:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#generic_list_pattern"},{include:"#port_list_pattern"},{include:"#comments"}]}]},constants_numeric:{patterns:[{match:"\\b([+\\-]?[\\d_]+\\.[\\d_]+([eE][+\\-]?[\\d_]+)?)\\b",name:"constant.numeric.floating_point.vhdl"},{match:"\\b\\d+#[\\h_]+#\\b",name:"constant.numeric.base_pound_number_pound.vhdl"},{match:"\\b[\\d_]+([eE][\\d_]+)?\\b",name:"constant.numeric.integer.vhdl"},{match:'[xX]"[0-9a-fA-F_uUxXzZwWlLhH\\-]+"',name:"constant.numeric.quoted.double.string.hex.vhdl"},{match:'[oO]"[0-7_uUxXzZwWlLhH\\-]+"',name:"constant.numeric.quoted.double.string.octal.vhdl"},{match:'[bB]?"[01_uUxXzZwWlLhH\\-]+"',name:"constant.numeric.quoted.double.string.binary.vhdl"},{captures:{1:{name:"invalid.illegal.quoted.double.string.vhdl"}},match:'([bBoOxX]".+?")',name:"constant.numeric.quoted.double.string.illegal.vhdl"},{match:"'[01uUxXzZwWlLhH\\-]'",name:"constant.numeric.quoted.single.std_logic"}]},control_patterns:{patterns:[{include:"#case_pattern"},{include:"#if_pattern"},{include:"#for_pattern"},{include:"#while_pattern"}]},entity_instantiation_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* + + +(((?i:use))\\s+)? + + +((?i:entity))\\s+ + + +( +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?)) +(\\.) +)? + + +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?)) + + +(?=\\s*(\\(|$|(?i:port|generic))) + + +( + +\\s*(\\()\\s* + + +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*\\)) + + +\\s*(\\)) +)? +`,beginCaptures:{1:{name:"entity.name.section.entity_instantiation.vhdl"},2:{name:"punctuation.vhdl"},4:{name:"keyword.language.vhdl"},5:{name:"keyword.language.vhdl"},8:{name:"entity.name.tag.library.reference.vhdl"},9:{name:"invalid.illegal.invalid.identifier.vhdl"},10:{name:"punctuation.vhdl"},12:{name:"entity.name.tag.entity.reference.vhdl"},13:{name:"invalid.illegal.invalid.identifier.vhdl"},16:{name:"punctuation.vhdl"},18:{name:"entity.name.tag.architecture.reference.vhdl"},19:{name:"invalid.illegal.invalid.identifier.vhdl"},21:{name:"punctuation.vhdl"}},end:";",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_list"},{include:"#cleanup"}]}]},entity_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +((?i:entity\\b))\\s+ + + +(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))(?=\\s) +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.type.entity.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"}},end:`(?x) + + +\\b((?i:end\\b)) + + +(\\s+((?i:entity)))? + + +(\\s+((\\3)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.type.entity.end.vhdl"},7:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#comments"},{include:"#generic_list_pattern"},{include:"#port_list_pattern"},{include:"#cleanup"}]}]},for_pattern:{patterns:[{begin:`(?x) + +^\\s* +( + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* +)? + + +(?!(?i:wait\\s*)) + + +\\b((?i:for))\\b + + +(?!\\s*(?i:all)) + +`,beginCaptures:{2:{name:"entity.name.tag.for.generate.begin.vhdl"},3:{name:"punctuation.vhdl"},4:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end))\\s+ +( + +((?i:generate|loop)) + + +|(\\S+) +)\\b + + +(\\s+((\\2)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},4:{name:"invalid.illegal.loop.or.generate.required.vhdl"},7:{name:"entity.name.tag.for.generate.end.vhdl"},8:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#control_patterns"},{include:"#entity_instantiation_pattern"},{include:"#component_pattern"},{include:"#component_instantiation_pattern"},{include:"#process_pattern"},{include:"#cleanup"}]}]},function_definition_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +((?i:impure)?\\s*(?i:function))\\s+ + +( + +([a-zA-Z][a-zA-Z\\d_]*) + +|("\\S+") + +|(\\\\.+\\\\) + +|(.+?) +) + + +(?=\\s* +( +\\( +|(?i:\\breturn\\b) +) +) +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.function.function.begin.vhdl"},4:{name:"entity.name.function.function.begin.vhdl"},5:{name:"entity.name.function.function.begin.vhdl"},6:{name:"invalid.illegal.invalid.identifier.vhdl"}},end:`(?x) + +^\\s* + + +((?i:end)) + + +(\\s+((?i:function)))? + + +(\\s+((\\3|\\4|\\5)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.function.function.end.vhdl"},7:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#control_patterns"},{include:"#parenthetical_list"},{include:"#type_pattern"},{include:"#record_pattern"},{include:"#cleanup"}]}]},function_prototype_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +((?i:impure)?\\s*(?i:function))\\s+ + +( + +([a-zA-Z][a-zA-Z\\d_]*) + +|("\\S+") + +|(\\\\.+\\\\) + +|(.+?) +) + + +(?=\\s* +( +\\( +|(?i:\\breturn\\b) +) +) +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.function.function.prototype.vhdl"},4:{name:"entity.name.function.function.prototype.vhdl"},5:{name:"entity.name.function.function.prototype.vhdl"},6:{name:"invalid.illegal.function.name.vhdl"}},end:"(?<=;)",patterns:[{begin:"\\b(?i:return)(?=\\s+[^;]+\\s*;)",beginCaptures:{0:{name:"keyword.language.vhdl"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.function_prototype.vhdl"}},patterns:[{include:"#parenthetical_list"},{include:"#cleanup"}]},{include:"#parenthetical_list"},{include:"#cleanup"}]}]},generic_list_pattern:{patterns:[{begin:"\\b(?i:generic)\\b",beginCaptures:{0:{name:"keyword.language.vhdl"}},end:";",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_list"}]}]},if_pattern:{patterns:[{begin:`(?x) +( + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* +)? + + +\\b((?i:if))\\b +`,beginCaptures:{2:{name:"entity.name.tag.if.generate.begin.vhdl"},3:{name:"punctuation.vhdl"},4:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end))\\s+ + +( +( + +((?i:generate|if)) + + +|(\\S+) +)\\b +( +\\s+ +( + +(\\2) + + +|(.+?) +) +)? +)? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},4:{name:"keyword.language.vhdl"},5:{name:"invalid.illegal.if.or.generate.required.vhdl"},8:{name:"entity.name.tag.if.generate.end.vhdl"},9:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#control_patterns"},{include:"#process_pattern"},{include:"#entity_instantiation_pattern"},{include:"#component_pattern"},{include:"#component_instantiation_pattern"},{include:"#cleanup"}]}]},keywords:{patterns:[{match:"'(?i:active|ascending|base|delayed|driving|driving_value|event|high|image|instance|instance_name|last|last_value|left|leftof|length|low|path|path_name|pos|pred|quiet|range|reverse|reverse_range|right|rightof|simple|simple_name|stable|succ|transaction|val|value)\\b",name:"keyword.attributes.vhdl"},{match:"\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|context|deallocate|disconnect|downto|else|elsif|end|entity|exit|file|for|force|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|protected|pure|range|record|register|reject|release|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\b",name:"keyword.language.vhdl"},{match:"\\b(?i:std|ieee|work|standard|textio|std_logic_1164|std_logic_arith|std_logic_misc|std_logic_signed|std_logic_textio|std_logic_unsigned|numeric_bit|numeric_std|math_complex|math_real|vital_primitives|vital_timing)\\b",name:"standard.library.language.vhdl"},{match:"(\\+|\\-|<=|=|=>|:=|>=|>|<|/|\\||&|(\\*{1,2}))",name:"keyword.operator.vhdl"}]},package_body_pattern:{patterns:[{begin:`(?x) + +\\b((?i:package))\\s+ + + +((?i:body))\\s+ + + +(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+ + + +((?i:is))\\b +`,beginCaptures:{1:{name:"keyword.language.vhdl"},2:{name:"keyword.language.vhdl"},4:{name:"entity.name.section.package_body.begin.vhdl"},5:{name:"invalid.illegal.invalid.identifier.vhdl"},6:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end\\b)) + + +(\\s+((?i:package))\\s+((?i:body)))? + + +(\\s+((\\4)|(.+?)))?(?=\\s*;)`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},4:{name:"keyword.language.vhdl"},7:{name:"entity.name.section.package_body.end.vhdl"},8:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#protected_body_pattern"},{include:"#function_definition_pattern"},{include:"#procedure_definition_pattern"},{include:"#type_pattern"},{include:"#subtype_pattern"},{include:"#record_pattern"},{include:"#cleanup"}]}]},package_pattern:{patterns:[{begin:`(?x) + +\\b((?i:package))\\s+ + + +(?!(?i:body)) + + +(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+ + + +((?i:is))\\b +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.section.package.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end\\b)) + + +(\\s+((?i:package)))? + + +(\\s+((\\2)|(.+?)))?(?=\\s*;)`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.section.package.end.vhdl"},7:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#protected_pattern"},{include:"#function_prototype_pattern"},{include:"#procedure_prototype_pattern"},{include:"#type_pattern"},{include:"#subtype_pattern"},{include:"#record_pattern"},{include:"#component_pattern"},{include:"#cleanup"}]}]},parenthetical_list:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.vhdl"}},end:"(?<=\\))",patterns:[{begin:`(?=['"a-zA-Z0-9])`,end:"(;|\\)|,)",endCaptures:{0:{name:"punctuation.vhdl"}},name:"source.vhdl",patterns:[{include:"#comments"},{include:"#parenthetical_pair"},{include:"#cleanup"}]},{match:"\\)",name:"invalid.illegal.unexpected.parenthesis.vhdl"},{include:"#cleanup"}]}]},parenthetical_pair:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.vhdl"}},end:"\\)",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_pair"},{include:"#cleanup"}]}]},port_list_pattern:{patterns:[{begin:"\\b(?i:port)\\b",beginCaptures:{0:{name:"keyword.language.vhdl"}},end:"(?<=\\))\\s*;",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#parenthetical_list"}]}]},procedure_definition_pattern:{patterns:[{begin:`(?x) + +^\\s* + + +((?i:procedure))\\s+ + +( + +([a-zA-Z][a-zA-Z\\d_]*) + +|("\\S+") + +|(.+?) +) + + +(?=\\s*(\\(|(?i:is))) +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.function.procedure.begin.vhdl"},4:{name:"entity.name.function.procedure.begin.vhdl"},5:{name:"invalid.illegal.invalid.identifier.vhdl"}},end:`(?x) + +^\\s* + + +((?i:end)) + + +(\\s+((?i:procedure)))? + + +(\\s+((\\3|\\4)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.function.procedure.end.vhdl"},7:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#parenthetical_list"},{include:"#control_patterns"},{include:"#type_pattern"},{include:"#record_pattern"},{include:"#cleanup"}]}]},procedure_prototype_pattern:{patterns:[{begin:`(?x) +\\b((?i:procedure))\\s+ +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?)) +(?=\\s*(\\(|;)) +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.function.procedure.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"}},end:";",endCaptures:{0:{name:"punctual.vhdl"}},patterns:[{include:"#parenthetical_list"}]}]},process_pattern:{patterns:[{begin:`(?x) + +^\\s* + +( + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* +)? + + +( +(?:postponed\\s+)? +(?i:process\\b) +) +`,beginCaptures:{2:{name:"entity.name.section.process.begin.vhdl"},3:{name:"punctuation.vhdl"},4:{name:"keyword.language.vhdl"}},end:`(?x) + +((?i:end)) + + +(\\s+( +(?:postponed\\s+)? +(?i:process) +)) + + +(\\s+((\\2)|(.+?)))? + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},6:{name:"entity.name.section.process.end.vhdl"},7:{name:"invalid.illegal.invalid.identifier.vhdl"}},patterns:[{include:"#control_patterns"},{include:"#cleanup"}]}]},protected_body_pattern:{patterns:[{begin:`(?x) +\\b((?i:type))\\s+ + + +(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+ + +\\b((?i:is\\s+protected\\s+body))\\s+ +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.section.protected_body.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"}},end:`(?x) +\\b((?i:end\\s+protected\\s+body)) + + +(\\s+((\\3)|(.+?)))? + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},4:{name:"entity.name.section.protected_body.end.vhdl"},5:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#function_definition_pattern"},{include:"#procedure_definition_pattern"},{include:"#type_pattern"},{include:"#subtype_pattern"},{include:"#record_pattern"},{include:"#cleanup"}]}]},protected_pattern:{patterns:[{begin:`(?x) +\\b((?i:type))\\s+ + + +(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+ + +\\b((?i:is\\s+protected))\\s+ + + +(?!(?i:body)) +`,beginCaptures:{1:{name:"keyword.language.vhdls"},3:{name:"entity.name.section.protected.begin.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"}},end:`(?x) +\\b((?i:end\\s+protected)) + + +(\\s+((\\3)|(.+?)))? + + +(?!(?i:body)) + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},4:{name:"entity.name.section.protected.end.vhdl"},5:{name:"invalid.illegal.mismatched.identifier.vhdl"}},patterns:[{include:"#function_prototype_pattern"},{include:"#procedure_prototype_pattern"},{include:"#type_pattern"},{include:"#subtype_pattern"},{include:"#record_pattern"},{include:"#component_pattern"},{include:"#cleanup"}]}]},punctuation:{patterns:[{match:"(\\.|,|:|;|\\(|\\))",name:"punctuation.vhdl"}]},record_pattern:{patterns:[{begin:"\\b(?i:record)\\b",beginCaptures:{0:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end)) + + +\\s+((?i:record)) + + +(\\s+(([a-zA-Z][a-zA-Z\\d_]*)|(.*?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},2:{name:"keyword.language.vhdl"},5:{name:"entity.name.type.record.vhdl"},6:{name:"invalid.illegal.invalid.identifier.vhdl"}},patterns:[{include:"#cleanup"}]},{include:"#cleanup"}]},strings:{patterns:[{match:"'.'",name:"string.quoted.single.vhdl"},{begin:'"',end:'"',name:"string.quoted.double.vhdl",patterns:[{match:"\\\\.",name:"constant.character.escape.vhdl"}]},{begin:"\\\\",end:"\\\\",name:"string.other.backslash.vhdl"}]},subtype_pattern:{patterns:[{begin:`(?x) + +\\b((?i:subtype))\\s+ + + +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\s+ + + +((?i:is))\\b +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.type.subtype.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},5:{name:"keyword.language.vhdl"}},end:";",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#cleanup"}]}]},support_constants:{patterns:[{match:"\\b(?i:math_1_over_e|math_1_over_pi|math_1_over_sqrt_2|math_2_pi|math_3_pi_over_2|math_deg_to_rad|math_e|math_log10_of_e|math_log2_of_e|math_log_of_10|math_log_of_2|math_pi|math_pi_over_2|math_pi_over_3|math_pi_over_4|math_rad_to_deg|math_sqrt_2|math_sqrt_pi)\\b",name:"support.constant.ieee.math_real.vhdl"},{match:"\\b(?i:math_cbase_1|math_cbase_j|math_czero|positive_real|principal_value)\\b",name:"support.constant.ieee.math_complex.vhdl"},{match:"\\b(?i:true|false)\\b",name:"support.constant.std.standard.vhdl"}]},support_functions:{patterns:[{match:"\\b(?i:finish|stop|resolution_limit)\\b",name:"support.function.std.env.vhdl"},{match:"\\b(?i:readline|read|writeline|write|endfile|endline)\\b",name:"support.function.std.textio.vhdl"},{match:"\\b(?i:rising_edge|falling_edge|to_bit|to_bitvector|to_stdulogic|to_stdlogicvector|to_stdulogicvector|is_x)\\b",name:"support.function.ieee.std_logic_1164.vhdl"},{match:"\\b(?i:shift_left|shift_right|rotate_left|rotate_right|resize|to_integer|to_unsigned|to_signed)\\b",name:"support.function.ieee.numeric_std.vhdl"},{match:"\\b(?i:arccos(h?)|arcsin(h?)|arctan|arctanh|cbrt|ceil|cos|cosh|exp|floor|log10|log2|log|realmax|realmin|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",name:"support.function.ieee.math_real.vhdl"},{match:"\\b(?i:arg|cmplx|complex_to_polar|conj|get_principal_value|polar_to_complex)\\b",name:"support.function.ieee.math_complex.vhdl"}]},support_types:{patterns:[{match:"\\b(?i:boolean|bit|character|severity_level|integer|real|time|delay_length|now|natural|positive|string|bit_vector|file_open_kind|file_open_status|fs|ps|ns|us|ms|sec|min|hr|severity_level|note|warning|error|failure)\\b",name:"support.type.std.standard.vhdl"},{match:"\\b(?i:line|text|side|width|input|output)\\b",name:"support.type.std.textio.vhdl"},{match:"\\b(?i:std_logic|std_ulogic|std_logic_vector|std_ulogic_vector)\\b",name:"support.type.ieee.std_logic_1164.vhdl"},{match:"\\b(?i:signed|unsigned)\\b",name:"support.type.ieee.numeric_std.vhdl"},{match:"\\b(?i:complex|complex_polar)\\b",name:"support.type.ieee.math_complex.vhdl"}]},syntax_highlighting:{patterns:[{include:"#keywords"},{include:"#punctuation"},{include:"#support_constants"},{include:"#support_types"},{include:"#support_functions"}]},type_pattern:{patterns:[{begin:`(?x) + +\\b((?i:type))\\s+ + + +(([a-zA-Z][a-zA-Z0-9_]*)|(.+?)) + +( + +(?=\\s*;) + + +|(\\s+((?i:is))) +)\\b +`,beginCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"entity.name.type.type.vhdl"},4:{name:"invalid.illegal.invalid.identifier.vhdl"},7:{name:"keyword.language.vhdl"}},end:";",endCaptures:{0:{name:"punctuation.vhdl"}},patterns:[{include:"#record_pattern"},{include:"#cleanup"}]}]},while_pattern:{patterns:[{begin:`(?x) + +^\\s* +( + +([a-zA-Z][a-zA-Z0-9_]*) + + +\\s*(:)\\s* +)? + + +\\b((?i:while))\\b +`,beginCaptures:{2:{name:""},3:{name:"punctuation.vhdl"},4:{name:"keyword.language.vhdl"}},end:`(?x) + +\\b((?i:end))\\s+ +( + +((?i:loop)) + + +|(\\S+) +)\\b + + +(\\s+((\\2)|(.+?)))? + + +(?=\\s*;) +`,endCaptures:{1:{name:"keyword.language.vhdl"},3:{name:"keyword.language.vhdl"},4:{name:"invalid.illegal.loop.keyword.required.vhdl"},7:{name:"entity.name.tag.while.loop.vhdl"},8:{name:"invalid.illegal.mismatched.identifier"}},patterns:[{include:"#control_patterns"},{include:"#cleanup"}]}]}},scopeName:"source.vhdl"});var e=[n];export{e as default}; diff --git a/assets/chunks/viml.BLluXI4E.js b/assets/chunks/viml.BLluXI4E.js new file mode 100644 index 000000000..554c10483 --- /dev/null +++ b/assets/chunks/viml.BLluXI4E.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Vim Script",name:"viml",patterns:[{include:"#comment"},{include:"#constant"},{include:"#entity"},{include:"#keyword"},{include:"#punctuation"},{include:"#storage"},{include:"#strings"},{include:"#support"},{include:"#variable"},{include:"#syntax"},{include:"#commands"},{include:"#option"},{include:"#map"}],repository:{commands:{patterns:[{match:"\\bcom(\\s|\\!)",name:"storage.other.command.viml"},{match:"\\bau(\\s|\\!)",name:"storage.other.command.viml"},{match:"-bang",name:"storage.other.command.bang.viml"},{match:"-nargs=[*+0-9]+",name:"storage.other.command.args.viml"},{match:"-complete=\\S+",name:"storage.other.command.completion.viml"},{begin:"(aug(roup)?)",end:"(augroup\\sEND|$)",name:"support.function.augroup.viml"}]},comment:{patterns:[{begin:'((\\s+)?""")',end:'^(?!")',name:"comment.block.documentation.viml"},{match:'^"\\svim:.*',name:"comment.block.modeline.viml"},{begin:'(\\s+"\\s+)(?!")',end:"$",name:"comment.line.viml",patterns:[{match:"\\{\\{\\{\\d?$",name:"comment.line.foldmarker.viml"},{match:"\\}\\}\\}\\d?",name:"comment.line.foldmarker.viml"}]},{begin:'^(\\s+)?"',end:"$",name:"comment.line.viml",patterns:[{match:"\\{\\{\\{\\d?$",name:"comment.line.foldmarker.viml"},{match:"\\}\\}\\}\\d?",name:"comment.line.foldmarker.viml"}]}]},constant:{patterns:[{match:"\\b(true|false)\\b",name:"constant.language.boolean.viml"},{match:"\\b([0-9]+)\\b",name:"constant.numeric.viml"}]},entity:{patterns:[{match:"(([absg]\\:)?[a-zA-Z0-9_#.]{2,})\\b(?=\\()",name:"entity.name.function.viml"}]},keyword:{patterns:[{match:"\\b(if|while|for|return|au(g|group)|else(if|)?|do|in)\\b",name:"keyword.control.viml"},{match:"\\b(end|endif|endfor|endwhile)\\s|$",name:"keyword.control.viml"},{match:"\\b(break|continue|try|catch|endtry|finally|finish|throw|range)\\b",name:"keyword.control.viml"},{match:"\\b(fun|func|function|endfunction|endfunc)\\b",name:"keyword.function.viml"},{match:"\\b(normal|silent)\\b",name:"keyword.other.viml"},{include:"#operators"}]},map:{patterns:[{begin:"(\\<)",beginCaptures:{1:{name:"punctuation.definition.map.viml"}},end:"(\\>|\\s)",endCaptures:{1:{name:"punctuation.definition.map.viml"}},patterns:[{match:"(?<=:\\s)(.+)",name:"constant.character.map.rhs.viml"},{match:"(?i:(bang|buffer|expr|nop|plug|sid|silent))",name:"constant.character.map.special.viml"},{match:"(?i:([adcms]-\\w))",name:"constant.character.map.key.viml"},{match:"(?i:(F[0-9]+))",name:"constant.character.map.key.fn.viml"},{match:"(?i:(bs|bar|cr|del|down|esc|left|right|space|tab|up|leader))",name:"constant.character.map.viml"}]},{match:"(\\b([cinostvx]?(nore)?map)\\b)",name:"storage.type.map.viml"}]},operators:{patterns:[{match:"([#+?!=~\\\\])",name:"keyword.operator.viml"},{match:" ([:\\-.]|[&|]{2})( |$)",name:"keyword.operator.viml"},{match:"([.]{3})",name:"keyword.operator.viml"},{match:"( [<>] )",name:"keyword.operator.viml"},{match:"(>=)",name:"keyword.operator.viml"}]},option:{patterns:[{match:"&?\\b(al|aleph|anti|antialias|arab|arabic|arshape|arabicshape|ari|allowrevins|akm|altkeymap|ambw|ambiwidth|acd|autochdir|ai|autoindent|ar|autoread|aw|autowrite|awa|autowriteall|bg|background|bs|backspace|bk|backup|bkc|backupcopy|bdir|backupdir|bex|backupext|bsk|backupskip|bdlay|balloondelay|beval|ballooneval|bevalterm|balloonevalterm|bexpr|balloonexpr|bo|belloff|bin|binary|bomb|brk|breakat|bri|breakindent|briopt|breakindentopt|bsdir|browsedir|bh|bufhidden|bl|buflisted|bt|buftype|cmp|casemap|cd|cdpath|cedit|ccv|charconvert|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|cb|clipboard|ch|cmdheight|cwh|cmdwinheight|cc|colorcolumn|co|columns|com|comments|cms|commentstring|cp|compatible|cpt|complete|cocu|concealcursor|cole|conceallevel|cfu|completefunc|cot|completeopt|cf|confirm|ci|copyindent|cpo|cpoptions|cm|cryptmethod|cspc|cscopepathcomp|csprg|cscopeprg|csqf|cscopequickfix|csre|cscoperelative|cst|cscopetag|csto|cscopetagorder|csverb|cscopeverbose|crb|cursorbind|cuc|cursorcolumn|cul|cursorline|debug|def|define|deco|delcombine|dict|dictionary|diff|dex|diffexpr|dip|diffopt|dg|digraph|dir|directory|dy|display|ead|eadirection|ed|edcompatible|emo|emoji|enc|encoding|eol|endofline|ea|equalalways|ep|equalprg|eb|errorbells|ef|errorfile|efm|errorformat|ek|esckeys|ei|eventignore|et|expandtab|ex|exrc|fenc|fileencoding|fencs|fileencodings|ff|fileformat|ffs|fileformats|fic|fileignorecase|ft|filetype|fcs|fillchars|fixeol|fixendofline|fk|fkmap|fcl|foldclose|fdc|foldcolumn|fen|foldenable|fde|foldexpr|fdi|foldignore|fdl|foldlevel|fdls|foldlevelstart|fmr|foldmarker|fdm|foldmethod|fml|foldminlines|fdn|foldnestmax|fdo|foldopen|fdt|foldtext|fex|formatexpr|fo|formatoptions|flp|formatlistpat|fp|formatprg|fs|fsync|gd|gdefault|gfm|grepformat|gp|grepprg|gcr|guicursor|gfn|guifont|gfs|guifontset|gfw|guifontwide|ghr|guiheadroom|go|guioptions|guipty|gtl|guitablabel|gtt|guitabtooltip|hf|helpfile|hh|helpheight|hlg|helplang|hid|hidden|hl|highlight|hi|history|hk|hkmap|hkp|hkmapp|hls|hlsearch|icon|iconstring|ic|ignorecase|imaf|imactivatefunc|imak|imactivatekey|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|imsf|imstatusfunc|imst|imstyle|inc|include|inex|includeexpr|is|incsearch|inde|indentexpr|indk|indentkeys|inf|infercase|im|insertmode|isf|isfname|isi|isident|isk|iskeyword|isp|isprint|js|joinspaces|key|kmp|keymap|km|keymodel|kp|keywordprg|lmap|langmap|lm|langmenu|lnr|langnoremap|lrm|langremap|ls|laststatus|lz|lazyredraw|lbr|linebreak|lines|lsp|linespace|lisp|lw|lispwords|list|lcs|listchars|lpl|loadplugins|luadll|macatsui|magic|mef|makeef|menc|makeencoding|mp|makeprg|mps|matchpairs|mat|matchtime|mco|maxcombine|mfd|maxfuncdepth|mmd|maxmapdepth|mm|maxmem|mmp|maxmempattern|mmt|maxmemtot|mis|menuitems|msm|mkspellmem|ml|modeline|mls|modelines|ma|modifiable|mod|modified|more|mouse|mousef|mousefocus|mh|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mzschemedll|mzschemegcdll|mzq|mzquantum|nf|nrformats|nu|number|nuw|numberwidth|ofu|omnifunc|odev|opendevice|opfunc|operatorfunc|pp|packpath|para|paragraphs|paste|pt|pastetoggle|pex|patchexpr|pm|patchmode|pa|path|perldll|pi|preserveindent|pvh|previewheight|pvw|previewwindow|pdev|printdevice|penc|printencoding|pexpr|printexpr|pfn|printfont|pheader|printheader|pmbcs|printmbcharset|pmbfn|printmbfont|popt|printoptions|prompt|ph|pumheight|pythonthreedll|pythondll|pyx|pyxversion|qe|quoteescape|ro|readonly|rdt|redrawtime|re|regexpengine|rnu|relativenumber|remap|rop|renderoptions|report|rs|restorescreen|ri|revins|rl|rightleft|rlc|rightleftcmd|rubydll|ru|ruler|ruf|rulerformat|rtp|runtimepath|scr|scroll|scb|scrollbind|sj|scrolljump|so|scrolloff|sbo|scrollopt|sect|sections|secure|sel|selection|slm|selectmode|ssop|sessionoptions|sh|shell|shcf|shellcmdflag|sp|shellpipe|shq|shellquote|srr|shellredir|ssl|shellslash|stmp|shelltemp|st|shelltype|sxq|shellxquote|sxe|shellxescape|sr|shiftround|sw|shiftwidth|shm|shortmess|sn|shortname|sbr|showbreak|sc|showcmd|sft|showfulltag|sm|showmatch|smd|showmode|stal|showtabline|ss|sidescroll|siso|sidescrolloff|scl|signcolumn|scs|smartcase|si|smartindent|sta|smarttab|sts|softtabstop|spell|spc|spellcapcheck|spf|spellfile|spl|spelllang|sps|spellsuggest|sb|splitbelow|spr|splitright|sol|startofline|stl|statusline|su|suffixes|sua|suffixesadd|swf|swapfile|sws|swapsync|swb|switchbuf|smc|synmaxcol|syn|syntax|tal|tabline|tpm|tabpagemax|ts|tabstop|tbs|tagbsearch|tc|tagcase|tl|taglength|tr|tagrelative|tag|tags|tgst|tagstack|tcldll|term|tbidi|termbidi|tenc|termencoding|tgc|termguicolors|tk|termkey|tms|termsize|terse|ta|textauto|tx|textmode|tw|textwidth|tsr|thesaurus|top|tildeop|to|timeout|tm|timeoutlen|title|titlelen|titleold|titlestring|tb|toolbar|tbis|toolbariconsize|ttimeout|ttm|ttimeoutlen|tbi|ttybuiltin|tf|ttyfast|ttym|ttymouse|tsl|ttyscroll|tty|ttytype|udir|undodir|udf|undofile|ul|undolevels|ur|undoreload|uc|updatecount|ut|updatetime|vbs|verbose|vfile|verbosefile|vdir|viewdir|vop|viewoptions|vi|viminfo|vif|viminfofile|ve|virtualedit|vb|visualbell|warn|wiv|weirdinvert|ww|whichwrap|wc|wildchar|wcm|wildcharm|wig|wildignore|wic|wildignorecase|wmnu|wildmenu|wim|wildmode|wop|wildoptions|wak|winaltkeys|wi|window|wh|winheight|wfh|winfixheight|wfw|winfixwidth|wmh|winminheight|wmw|winminwidth|winptydll|wiw|winwidth|wrap|wm|wrapmargin|ws|wrapscan|write|wa|writeany|wb|writebackup|wd|writedelay)\\b",name:"support.type.option.viml"},{match:"&?\\b(aleph|allowrevins|altkeymap|ambiwidth|autochdir|arabic|arabicshape|autoindent|autoread|autowrite|autowriteall|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|belloff|binary|bomb|breakat|breakindent|breakindentopt|browsedir|bufhidden|buflisted|buftype|casemap|cdpath|cedit|charconvert|cindent|cinkeys|cinoptions|cinwords|clipboard|cmdheight|cmdwinheight|colorcolumn|columns|comments|commentstring|complete|completefunc|completeopt|concealcursor|conceallevel|confirm|copyindent|cpoptions|cscopepathcomp|cscopeprg|cscopequickfix|cscoperelative|cscopetag|cscopetagorder|cscopeverbose|cursorbind|cursorcolumn|cursorline|debug|define|delcombine|dictionary|diff|diffexpr|diffopt|digraph|directory|display|eadirection|encoding|endofline|equalalways|equalprg|errorbells|errorfile|errorformat|eventignore|expandtab|exrc|fileencoding|fileencodings|fileformat|fileformats|fileignorecase|filetype|fillchars|fixendofline|fkmap|foldclose|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldopen|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fsync|gdefault|grepformat|grepprg|guicursor|guifont|guifontset|guifontwide|guioptions|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hidden|hlsearch|history|hkmap|hkmapp|icon|iconstring|ignorecase|imcmdline|imdisable|iminsert|imsearch|include|includeexpr|incsearch|indentexpr|indentkeys|infercase|insertmode|isfname|isident|iskeyword|isprint|joinspaces|keymap|keymodel|keywordprg|langmap|langmenu|langremap|laststatus|lazyredraw|linebreak|lines|linespace|lisp|lispwords|list|listchars|loadplugins|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|menuitems|mkspellmem|modeline|modelines|modifiable|modified|more|mouse|mousefocus|mousehide|mousemodel|mouseshape|mousetime|nrformats|number|numberwidth|omnifunc|opendevice|operatorfunc|packpath|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|perldll|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pumheight|pythondll|pythonthreedll|quoteescape|readonly|redrawtime|regexpengine|relativenumber|remap|report|revins|rightleft|rightleftcmd|rubydll|ruler|rulerformat|runtimepath|scroll|scrollbind|scrolljump|scrolloff|scrollopt|sections|secure|selection|selectmode|sessionoptions|shada|shell|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shellxescape|shellxquote|shiftround|shiftwidth|shortmess|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|sidescroll|sidescrolloff|signcolumn|smartcase|smartindent|smarttab|softtabstop|spell|spellcapcheck|spellfile|spelllang|spellsuggest|splitbelow|splitright|startofline|statusline|suffixes|suffixesadd|swapfile|switchbuf|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|tagcase|taglength|tagrelative|tags|tagstack|term|termbidi|terse|textwidth|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|ttimeout|ttimeoutlen|ttytype|undodir|undofile|undolevels|undoreload|updatecount|updatetime|verbose|verbosefile|viewdir|viewoptions|virtualedit|visualbell|warn|whichwrap|wildchar|wildcharm|wildignore|wildignorecase|wildmenu|wildmode|wildoptions|winaltkeys|window|winheight|winfixheight|winfixwidth|winminheight|winminwidth|winwidth|wrap|wrapmargin|wrapscan|write|writeany|writebackup|writedelay)\\b",name:"support.type.option.viml"},{match:"&?\\b(al|ari|akm|ambw|acd|arab|arshape|ai|ar|aw|awa|bg|bs|bk|bkc|bdir|bex|bsk|bdlay|beval|bexpr|bo|bin|bomb|brk|bri|briopt|bsdir|bh|bl|bt|cmp|cd|cedit|ccv|cin|cink|cino|cinw|cb|ch|cwh|cc|co|com|cms|cpt|cfu|cot|cocu|cole|cf|ci|cpo|cspc|csprg|csqf|csre|cst|csto|cpo|crb|cuc|cul|debug|def|deco|dict|diff|dex|dip|dg|dir|dy|ead|enc|eol|ea|ep|eb|ef|efm|ei|et|ex|fenc|fencs|ff|ffs|fic|ft|fcs|fixeol|fk|fcl|fdc|fen|fde|fdi|fdl|fdls|fmr|fdm|fml|fdn|fdo|fdt|fex|flp|fo|fp|fs|gd|gfm|gp|gcr|gfn|gfs|gfw|go|gtl|gtt|hf|hh|hlg|hid|hls|hi|hk|hkp|icon|iconstring|ic|imc|imd|imi|ims|inc|inex|is|inde|indk|inf|im|isf|isi|isk|isp|js|kmp|km|kp|lmap|lm|lrm|ls|lz|lbr|lines|lsp|lisp|lw|list|lcs|lpl|magic|mef|mp|mps|mat|mco|mfd|mmd|mm|mmp|mmt|mis|msm|ml|mls|ma|mod|more|mouse|mousef|mh|mousem|mouses|mouset|nf|nu|nuw|ofu|odev|opfunc|pp|para|paste|pt|pex|pm|pa|perldll|pi|pvh|pvw|pdev|penc|pexpr|pfn|pheader|pmbcs|pmbfn|popt|prompt|ph|pythondll|pythonthreedlll|qe|ro|rdt|re|rnu|remap|report|ri|rl|rlc|rubydll|ru|ruf|rtp|scr|scb|sj|so|sbo|sect|secure|sel|slm|ssop|sd|sh|shcf|sp|shq|srr|ssl|stmp|sxe|sxq|sr|sw|shm|sbr|sc|sft|sm|smd|stal|ss|siso|scl|scs|si|sta|sts|spell|spc|spf|spl|sps|sb|spr|sol|stl|su|sua|swf|swb|smc|syn|tal|tpm|ts|tbs|tc|tl|tr|tag|tgst|term|tbidi|terse|tw|tsr|top|to|tm|title|titlelen|titleold|titlestring|ttimeout|ttm|tty|udir|udf|ul|ur|uc|ut|vbs|vfile|vdir|vop|ve|vb|warn|ww|wc|wcm|wig|wic|wmnu|wim|wop|wak|wi|wh|wfh|wfw|wmh|wmw|wiw|wrap|wm|ws|write|wa|wb|wd)\\b",name:"support.type.option.shortname.viml"},{match:"\\b(noanti|noantialias|noarab|noarabic|noarshape|noarabicshape|noari|noallowrevins|noakm|noaltkeymap|noacd|noautochdir|noai|noautoindent|noar|noautoread|noaw|noautowrite|noawa|noautowriteall|nobk|nobackup|nobeval|noballooneval|nobevalterm|noballoonevalterm|nobin|nobinary|nobomb|nobri|nobreakindent|nobl|nobuflisted|nocin|nocindent|nocp|nocompatible|nocf|noconfirm|noci|nocopyindent|nocsre|nocscoperelative|nocst|nocscopetag|nocsverb|nocscopeverbose|nocrb|nocursorbind|nocuc|nocursorcolumn|nocul|nocursorline|nodeco|nodelcombine|nodiff|nodg|nodigraph|noed|noedcompatible|noemo|noemoji|noeol|noendofline|noea|noequalalways|noeb|noerrorbells|noek|noesckeys|noet|noexpandtab|noex|noexrc|nofic|nofileignorecase|nofixeol|nofixendofline|nofk|nofkmap|nofen|nofoldenable|nofs|nofsync|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkp|nohkmapp|nohls|nohlsearch|noicon|noic|noignorecase|noimc|noimcmdline|noimd|noimdisable|nois|noincsearch|noinf|noinfercase|noim|noinsertmode|nojs|nojoinspaces|nolnr|nolangnoremap|nolrm|nolangremap|nolz|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|nolpl|noloadplugins|nomacatsui|nomagic|noml|nomodeline|noma|nomodifiable|nomod|nomodified|nomore|nomousef|nomousefocus|nomh|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopvw|nopreviewwindow|noprompt|noro|noreadonly|nornu|norelativenumber|nors|norestorescreen|nori|norevins|norl|norightleft|noru|noruler|noscb|noscrollbind|nosecure|nossl|noshellslash|nostmp|noshelltemp|nosr|noshiftround|nosn|noshortname|nosc|noshowcmd|nosft|noshowfulltag|nosm|noshowmatch|nosmd|noshowmode|noscs|nosmartcase|nosi|nosmartindent|nosta|nosmarttab|nospell|nosb|nosplitbelow|nospr|nosplitright|nosol|nostartofline|noswf|noswapfile|notbs|notagbsearch|notr|notagrelative|notgst|notagstack|notbidi|notermbidi|notgc|notermguicolors|noterse|nota|notextauto|notx|notextmode|notop|notildeop|noto|notimeout|notitle|nottimeout|notbi|nottybuiltin|notf|nottyfast|noudf|noundofile|novb|novisualbell|nowarn|nowiv|noweirdinvert|nowic|nowildignorecase|nowmnu|nowildmenu|nowfh|nowinfixheight|nowfw|nowinfixwidth|nowrapscan|nowrap|nows|nowrite|nowa|nowriteany|nowb|nowritebackup)\\b",name:"support.type.option.off.viml"}]},punctuation:{patterns:[{match:"([()])",name:"punctuation.parens.viml"},{match:"([,])",name:"punctuation.comma.viml"}]},storage:{patterns:[{match:"\\b(call|let|unlet)\\b",name:"storage.viml"},{match:"\\b(abort|autocmd)\\b",name:"storage.viml"},{match:"\\b(set(l|local)?)\\b",name:"storage.viml"},{match:"\\b(com(mand)?)\\b",name:"storage.viml"},{match:"\\b(color(scheme)?)\\b",name:"storage.viml"},{match:"\\b(Plug|Plugin)\\b",name:"storage.plugin.viml"}]},strings:{patterns:[{begin:'"',end:'("|$)',name:"string.quoted.double.viml",patterns:[]},{begin:"'",end:"('|$)",name:"string.quoted.single.viml",patterns:[]},{match:"/(\\\\\\\\|\\\\/|[^\\n/])*/",name:"string.regexp.viml"}]},support:{patterns:[{match:"(add|call|delete|empty|extend|get|has|isdirectory|join|printf)(?=\\()",name:"support.function.viml"},{match:"\\b(echo(m|hl)?|exe(cute)?|redir|redraw|sleep|so(urce)?|wincmd|setf)\\b",name:"support.function.viml"},{match:"(v\\:(beval_col|beval_bufnr|beval_lnum|beval_text|beval_winnr|char|charconvert_from|charconvert_to|cmdarg|cmdbang|count|count1|ctype|dying|errmsg|exception|fcs_reason|fcs_choice|fname_in|fname_out|fname_new|fname_diff|folddashes|foldlevel|foldend|foldstart|insertmode|key|lang|lc_time|lnum|mouse_win|mouse_lnum|mouse_col|oldfiles|operator|prevcount|profiling|progname|register|scrollstart|servername|searchforward|shell_error|statusmsg|swapname|swapchoice|swapcommand|termresponse|this_session|throwpoint|val|version|warningmsg|windowid))",name:"support.type.builtin.vim-variable.viml"},{match:"(&(cpo|isk|omnifunc|paste|previewwindow|rtp|tags|term|wrap))",name:"support.type.builtin.viml"},{match:"(&(shell(cmdflag|redir)?))",name:"support.type.builtin.viml"},{match:"\\<args\\>",name:"support.variable.args.viml"},{match:"\\b(None|ErrorMsg|WarningMsg)\\b",name:"support.type.syntax.viml"},{match:"\\b(BufNewFile|BufReadPre|BufRead|BufReadPost|BufReadCmd|FileReadPre|FileReadPost|FileReadCmd|FilterReadPre|FilterReadPost|StdinReadPre|StdinReadPost|BufWrite|BufWritePre|BufWritePost|BufWriteCmd|FileWritePre|FileWritePost|FileWriteCmd|FileAppendPre|FileAppendPost|FileAppendCmd|FilterWritePre|FilterWritePost|BufAdd|BufCreate|BufDelete|BufWipeout|BufFilePre|BufFilePost|BufEnter|BufLeave|BufWinEnter|BufWinLeave|BufUnload|BufHidden|BufNew|SwapExists|TermOpen|TermClose|FileType|Syntax|OptionSet|VimEnter|GUIEnter|GUIFailed|TermResponse|QuitPre|VimLeavePre|VimLeave|DirChanged|FileChangedShell|FileChangedShellPost|FileChangedRO|ShellCmdPost|ShellFilterPost|CmdUndefined|FuncUndefined|SpellFileMissing|SourcePre|SourceCmd|VimResized|FocusGained|FocusLost|CursorHold|CursorHoldI|CursorMoved|CursorMovedI|WinNew|WinEnter|WinLeave|TabEnter|TabLeave|TabNew|TabNewEntered|TabClosed|CmdlineEnter|CmdlineLeave|CmdwinEnter|CmdwinLeave|InsertEnter|InsertChange|InsertLeave|InsertCharPre|TextYankPost|TextChanged|TextChangedI|ColorScheme|RemoteReply|QuickFixCmdPre|QuickFixCmdPost|SessionLoadPost|MenuPopup|CompleteDone|User)\\b",name:"support.type.event.viml"},{match:"\\b(Comment|Constant|String|Character|Number|Boolean|Float|Identifier|Function|Statement|Conditional|Repeat|Label|Operator|Keyword|Exception|PreProc|Include|Define|Macro|PreCondit|Type|StorageClass|Structure|Typedef|Special|SpecialChar|Tag|Delimiter|SpecialComment|Debug|Underlined|Ignore|Error|Todo)\\b",name:"support.type.syntax-group.viml"}]},syntax:{patterns:[{match:"syn(tax)? case (ignore|match)",name:"keyword.control.syntax.viml"},{match:"syn(tax)? (clear|enable|include|off|on|manual|sync)",name:"keyword.control.syntax.viml"},{match:"\\b(contained|display|excludenl|fold|keepend|oneline|skipnl|skipwhite|transparent)\\b",name:"keyword.other.syntax.viml"},{match:"\\b(add|containedin|contains|matchgroup|nextgroup)\\=",name:"keyword.other.syntax.viml"},{captures:{1:{name:"keyword.other.syntax-range.viml"},3:{name:"string.regexp.viml"}},match:"((start|skip|end)\\=)(\\+\\S+\\+\\s)?"},{captures:{0:{name:"support.type.syntax.viml"},1:{name:"storage.syntax.viml"},3:{name:"variable.other.syntax-scope.viml"},4:{name:"storage.modifier.syntax.viml"}},match:"(syn|syntax)\\s+(cluster|keyword|match|region)(\\s+\\w+\\s+)(contained)?",patterns:[]},{captures:{1:{name:"storage.highlight.viml"},2:{name:"storage.modifier.syntax.viml"},3:{name:"support.function.highlight.viml"},4:{name:"variable.other.viml"},5:{name:"variable.other.viml"}},match:"(hi|highlight)(?:\\s+)(def|default)(?:\\s+)(link)(?:\\s+)(\\w+)(?:\\s+)(\\w+)",patterns:[]}]},variable:{patterns:[{match:"https?://\\S+",name:"variable.other.link.viml"},{match:"(?<=\\()([a-zA-Z]+)(?=\\))",name:"variable.parameter.viml"},{match:"\\b([absgl]:[a-zA-Z0-9_.#]+)\\b(?!\\()",name:"variable.other.viml"}]}},scopeName:"source.viml",aliases:["vim","vimscript"]});var n=[e];export{n as default}; diff --git a/assets/chunks/vitesse-black.CDJL3WWm.js b/assets/chunks/vitesse-black.CDJL3WWm.js new file mode 100644 index 000000000..e8111bec1 --- /dev/null +++ b/assets/chunks/vitesse-black.CDJL3WWm.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#4d9375","activityBar.background":"#000","activityBar.border":"#191919","activityBar.foreground":"#dbd7cacc","activityBar.inactiveForeground":"#dedcd550","activityBarBadge.background":"#bfbaaa","activityBarBadge.foreground":"#000","badge.background":"#dedcd590","badge.foreground":"#000","breadcrumb.activeSelectionForeground":"#eeeeee18","breadcrumb.background":"#121212","breadcrumb.focusForeground":"#dbd7cacc","breadcrumb.foreground":"#959da5","breadcrumbPicker.background":"#000","button.background":"#4d9375","button.foreground":"#000","button.hoverBackground":"#4d9375","checkbox.background":"#121212","checkbox.border":"#2f363d","debugToolBar.background":"#000",descriptionForeground:"#dedcd590","diffEditor.insertedTextBackground":"#4d937550","diffEditor.removedTextBackground":"#ab595950","dropdown.background":"#000","dropdown.border":"#191919","dropdown.foreground":"#dbd7cacc","dropdown.listBackground":"#121212","editor.background":"#000","editor.findMatchBackground":"#e6cc7722","editor.findMatchHighlightBackground":"#e6cc7744","editor.focusedStackFrameHighlightBackground":"#b808","editor.foldBackground":"#eeeeee10","editor.foreground":"#dbd7cacc","editor.inactiveSelectionBackground":"#eeeeee10","editor.lineHighlightBackground":"#121212","editor.selectionBackground":"#eeeeee18","editor.selectionHighlightBackground":"#eeeeee10","editor.stackFrameHighlightBackground":"#a707","editor.wordHighlightBackground":"#1c6b4805","editor.wordHighlightStrongBackground":"#1c6b4810","editorBracketHighlight.foreground1":"#5eaab5","editorBracketHighlight.foreground2":"#4d9375","editorBracketHighlight.foreground3":"#d4976c","editorBracketHighlight.foreground4":"#d9739f","editorBracketHighlight.foreground5":"#e6cc77","editorBracketHighlight.foreground6":"#6394bf","editorBracketMatch.background":"#4d937520","editorError.foreground":"#cb7676","editorGroup.border":"#191919","editorGroupHeader.tabsBackground":"#000","editorGroupHeader.tabsBorder":"#191919","editorGutter.addedBackground":"#4d9375","editorGutter.commentRangeForeground":"#dedcd550","editorGutter.deletedBackground":"#cb7676","editorGutter.foldingControlForeground":"#dedcd590","editorGutter.modifiedBackground":"#6394bf","editorHint.foreground":"#4d9375","editorIndentGuide.activeBackground":"#ffffff30","editorIndentGuide.background":"#ffffff15","editorInfo.foreground":"#6394bf","editorInlayHint.background":"#00000000","editorInlayHint.foreground":"#444444","editorLineNumber.activeForeground":"#bfbaaa","editorLineNumber.foreground":"#dedcd550","editorOverviewRuler.border":"#111","editorStickyScroll.background":"#121212","editorStickyScrollHover.background":"#121212","editorWarning.foreground":"#d4976c","editorWhitespace.foreground":"#ffffff15","editorWidget.background":"#000",errorForeground:"#cb7676",focusBorder:"#00000000",foreground:"#dbd7cacc","gitDecoration.addedResourceForeground":"#4d9375","gitDecoration.conflictingResourceForeground":"#d4976c","gitDecoration.deletedResourceForeground":"#cb7676","gitDecoration.ignoredResourceForeground":"#dedcd550","gitDecoration.modifiedResourceForeground":"#6394bf","gitDecoration.submoduleResourceForeground":"#dedcd590","gitDecoration.untrackedResourceForeground":"#5eaab5","input.background":"#121212","input.border":"#191919","input.foreground":"#dbd7cacc","input.placeholderForeground":"#dedcd590","inputOption.activeBackground":"#dedcd550","list.activeSelectionBackground":"#121212","list.activeSelectionForeground":"#dbd7cacc","list.focusBackground":"#121212","list.highlightForeground":"#4d9375","list.hoverBackground":"#121212","list.hoverForeground":"#dbd7cacc","list.inactiveFocusBackground":"#000","list.inactiveSelectionBackground":"#121212","list.inactiveSelectionForeground":"#dbd7cacc","menu.separatorBackground":"#191919","notificationCenterHeader.background":"#000","notificationCenterHeader.foreground":"#959da5","notifications.background":"#000","notifications.border":"#191919","notifications.foreground":"#dbd7cacc","notificationsErrorIcon.foreground":"#cb7676","notificationsInfoIcon.foreground":"#6394bf","notificationsWarningIcon.foreground":"#d4976c","panel.background":"#000","panel.border":"#191919","panelInput.border":"#2f363d","panelTitle.activeBorder":"#4d9375","panelTitle.activeForeground":"#dbd7cacc","panelTitle.inactiveForeground":"#959da5","peekViewEditor.background":"#000","peekViewEditor.matchHighlightBackground":"#ffd33d33","peekViewResult.background":"#000","peekViewResult.matchHighlightBackground":"#ffd33d33","pickerGroup.border":"#191919","pickerGroup.foreground":"#dbd7cacc","problemsErrorIcon.foreground":"#cb7676","problemsInfoIcon.foreground":"#6394bf","problemsWarningIcon.foreground":"#d4976c","progressBar.background":"#4d9375","quickInput.background":"#000","quickInput.foreground":"#dbd7cacc","quickInputList.focusBackground":"#121212","scrollbar.shadow":"#0000","scrollbarSlider.activeBackground":"#dedcd550","scrollbarSlider.background":"#dedcd510","scrollbarSlider.hoverBackground":"#dedcd550","settings.headerForeground":"#dbd7cacc","settings.modifiedItemIndicator":"#4d9375","sideBar.background":"#000","sideBar.border":"#191919","sideBar.foreground":"#bfbaaa","sideBarSectionHeader.background":"#000","sideBarSectionHeader.border":"#191919","sideBarSectionHeader.foreground":"#dbd7cacc","sideBarTitle.foreground":"#dbd7cacc","statusBar.background":"#000","statusBar.border":"#191919","statusBar.debuggingBackground":"#121212","statusBar.debuggingForeground":"#bfbaaa","statusBar.foreground":"#bfbaaa","statusBar.noFolderBackground":"#000","statusBarItem.prominentBackground":"#121212","tab.activeBackground":"#000","tab.activeBorder":"#191919","tab.activeBorderTop":"#dedcd590","tab.activeForeground":"#dbd7cacc","tab.border":"#191919","tab.hoverBackground":"#121212","tab.inactiveBackground":"#000","tab.inactiveForeground":"#959da5","tab.unfocusedActiveBorder":"#191919","tab.unfocusedActiveBorderTop":"#191919","tab.unfocusedHoverBackground":"#000","terminal.ansiBlack":"#393a34","terminal.ansiBlue":"#6394bf","terminal.ansiBrightBlack":"#777777","terminal.ansiBrightBlue":"#6394bf","terminal.ansiBrightCyan":"#5eaab5","terminal.ansiBrightGreen":"#4d9375","terminal.ansiBrightMagenta":"#d9739f","terminal.ansiBrightRed":"#cb7676","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#e6cc77","terminal.ansiCyan":"#5eaab5","terminal.ansiGreen":"#4d9375","terminal.ansiMagenta":"#d9739f","terminal.ansiRed":"#cb7676","terminal.ansiWhite":"#dbd7ca","terminal.ansiYellow":"#e6cc77","terminal.foreground":"#dbd7cacc","terminal.selectionBackground":"#eeeeee18","textBlockQuote.background":"#000","textBlockQuote.border":"#191919","textCodeBlock.background":"#000","textLink.activeForeground":"#4d9375","textLink.foreground":"#4d9375","textPreformat.foreground":"#d1d5da","textSeparator.foreground":"#586069","titleBar.activeBackground":"#000","titleBar.activeForeground":"#bfbaaa","titleBar.border":"#121212","titleBar.inactiveBackground":"#000","titleBar.inactiveForeground":"#959da5","tree.indentGuidesStroke":"#2f363d","welcomePage.buttonBackground":"#2f363d","welcomePage.buttonHoverBackground":"#444d56"},displayName:"Vitesse Black",name:"vitesse-black",semanticHighlighting:!0,semanticTokenColors:{class:"#7f8ac7",interface:"#5d99a9",namespace:"#db889a",property:"#b8a965",type:"#5d99a9"},tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#758575dd"}},{scope:["delimiter.bracket","delimiter","invalid.illegal.character-not-allowed-here.html","keyword.operator.rest","keyword.operator.spread","keyword.operator.type.annotation","keyword.operator.relational","keyword.operator.assignment","meta.brace","meta.tag.block.any.html","meta.tag.inline.any.html","meta.tag.structure.input.void.html","meta.type.annotation","meta.embedded.block.github-actions-expression","storage.type.function.arrow","keyword.operator.type","meta.objectliteral.ts","punctuation"],settings:{foreground:"#444444"}},{scope:["constant","entity.name.constant","variable.language","meta.definition.variable"],settings:{foreground:"#c99076"}},{scope:["entity","entity.name"],settings:{foreground:"#80a665"}},{scope:"variable.parameter.function",settings:{foreground:"#dbd7cacc"}},{scope:["entity.name.tag","tag.html"],settings:{foreground:"#4d9375"}},{scope:"entity.name.function",settings:{foreground:"#80a665"}},{scope:["keyword","storage.type.class.jsdoc"],settings:{foreground:"#4d9375"}},{scope:["storage","storage.type","support.type.builtin","constant.language.undefined","constant.language.null"],settings:{foreground:"#cb7676"}},{scope:["text.html.derivative","storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#dbd7cacc"}},{scope:["string","string punctuation.section.embedded source","attribute.value"],settings:{foreground:"#c98a7d"}},{scope:["punctuation.definition.string","punctuation.support.type.property-name"],settings:{foreground:"#c98a7d99"}},{scope:"support",settings:{foreground:"#b8a965"}},{scope:["property","meta.property-name","meta.object-literal.key","entity.name.tag.yaml","attribute.name"],settings:{foreground:"#b8a965"}},{scope:["entity.other.attribute-name","invalid.deprecated.entity.other.attribute-name.html"],settings:{foreground:"#bd976a"}},{scope:["variable","identifier"],settings:{foreground:"#bd976a"}},{scope:["support.type.primitive","entity.name.type"],settings:{foreground:"#5DA994"}},{scope:"namespace",settings:{foreground:"#db889a"}},{scope:["keyword.operator","keyword.operator.assignment.compound","meta.var.expr.ts"],settings:{foreground:"#cb7676"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"carriage-return",settings:{background:"#f97583",content:"^M",fontStyle:"italic underline",foreground:"#24292e"}},{scope:"message.error",settings:{foreground:"#fdaeb7"}},{scope:"string variable",settings:{foreground:"#c98a7d"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#c4704f"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#c98a7d"}},{scope:"string.regexp constant.character.escape",settings:{foreground:"#e6cc77"}},{scope:["support.constant"],settings:{foreground:"#c99076"}},{scope:["constant.numeric","number"],settings:{foreground:"#4C9A91"}},{scope:["keyword.other.unit"],settings:{foreground:"#cb7676"}},{scope:["constant.language.boolean","constant.language"],settings:{foreground:"#4d9375"}},{scope:"meta.module-reference",settings:{foreground:"#4d9375"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#d4976c"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#4d9375"}},{scope:"markup.quote",settings:{foreground:"#5d99a9"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#dbd7cacc"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#dbd7cacc"}},{scope:"markup.raw",settings:{foreground:"#4d9375"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#86181d",foreground:"#fdaeb7"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#144620",foreground:"#85e89d"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#c24e00",foreground:"#ffab70"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#79b8ff",foreground:"#2f363d"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#b392f0"}},{scope:"meta.diff.header",settings:{foreground:"#79b8ff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#79b8ff"}},{scope:"meta.output",settings:{foreground:"#79b8ff"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#d1d5da"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#fdaeb7"}},{scope:["constant.other.reference.link","string.other.link","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown"],settings:{foreground:"#c98a7d"}},{scope:["markup.underline.link.markdown","markup.underline.link.image.markdown"],settings:{fontStyle:"underline",foreground:"#dedcd590"}},{scope:["type.identifier"],settings:{foreground:"#7f8ac7"}},{scope:["entity.other.attribute-name.html.vue"],settings:{foreground:"#80a665"}},{scope:["invalid.illegal.unrecognized-tag.html"],settings:{fontStyle:"normal"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/vitesse-dark.V_y36BGi.js b/assets/chunks/vitesse-dark.V_y36BGi.js new file mode 100644 index 000000000..e40748f4e --- /dev/null +++ b/assets/chunks/vitesse-dark.V_y36BGi.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#4d9375","activityBar.background":"#121212","activityBar.border":"#191919","activityBar.foreground":"#dbd7caee","activityBar.inactiveForeground":"#dedcd550","activityBarBadge.background":"#bfbaaa","activityBarBadge.foreground":"#121212","badge.background":"#dedcd590","badge.foreground":"#121212","breadcrumb.activeSelectionForeground":"#eeeeee18","breadcrumb.background":"#181818","breadcrumb.focusForeground":"#dbd7caee","breadcrumb.foreground":"#959da5","breadcrumbPicker.background":"#121212","button.background":"#4d9375","button.foreground":"#121212","button.hoverBackground":"#4d9375","checkbox.background":"#181818","checkbox.border":"#2f363d","debugToolBar.background":"#121212",descriptionForeground:"#dedcd590","diffEditor.insertedTextBackground":"#4d937550","diffEditor.removedTextBackground":"#ab595950","dropdown.background":"#121212","dropdown.border":"#191919","dropdown.foreground":"#dbd7caee","dropdown.listBackground":"#181818","editor.background":"#121212","editor.findMatchBackground":"#e6cc7722","editor.findMatchHighlightBackground":"#e6cc7744","editor.focusedStackFrameHighlightBackground":"#b808","editor.foldBackground":"#eeeeee10","editor.foreground":"#dbd7caee","editor.inactiveSelectionBackground":"#eeeeee10","editor.lineHighlightBackground":"#181818","editor.selectionBackground":"#eeeeee18","editor.selectionHighlightBackground":"#eeeeee10","editor.stackFrameHighlightBackground":"#a707","editor.wordHighlightBackground":"#1c6b4805","editor.wordHighlightStrongBackground":"#1c6b4810","editorBracketHighlight.foreground1":"#5eaab5","editorBracketHighlight.foreground2":"#4d9375","editorBracketHighlight.foreground3":"#d4976c","editorBracketHighlight.foreground4":"#d9739f","editorBracketHighlight.foreground5":"#e6cc77","editorBracketHighlight.foreground6":"#6394bf","editorBracketMatch.background":"#4d937520","editorError.foreground":"#cb7676","editorGroup.border":"#191919","editorGroupHeader.tabsBackground":"#121212","editorGroupHeader.tabsBorder":"#191919","editorGutter.addedBackground":"#4d9375","editorGutter.commentRangeForeground":"#dedcd550","editorGutter.deletedBackground":"#cb7676","editorGutter.foldingControlForeground":"#dedcd590","editorGutter.modifiedBackground":"#6394bf","editorHint.foreground":"#4d9375","editorIndentGuide.activeBackground":"#ffffff30","editorIndentGuide.background":"#ffffff15","editorInfo.foreground":"#6394bf","editorInlayHint.background":"#00000000","editorInlayHint.foreground":"#666666","editorLineNumber.activeForeground":"#bfbaaa","editorLineNumber.foreground":"#dedcd550","editorOverviewRuler.border":"#111","editorStickyScroll.background":"#181818","editorStickyScrollHover.background":"#181818","editorWarning.foreground":"#d4976c","editorWhitespace.foreground":"#ffffff15","editorWidget.background":"#121212",errorForeground:"#cb7676",focusBorder:"#00000000",foreground:"#dbd7caee","gitDecoration.addedResourceForeground":"#4d9375","gitDecoration.conflictingResourceForeground":"#d4976c","gitDecoration.deletedResourceForeground":"#cb7676","gitDecoration.ignoredResourceForeground":"#dedcd550","gitDecoration.modifiedResourceForeground":"#6394bf","gitDecoration.submoduleResourceForeground":"#dedcd590","gitDecoration.untrackedResourceForeground":"#5eaab5","input.background":"#181818","input.border":"#191919","input.foreground":"#dbd7caee","input.placeholderForeground":"#dedcd590","inputOption.activeBackground":"#dedcd550","list.activeSelectionBackground":"#181818","list.activeSelectionForeground":"#dbd7caee","list.focusBackground":"#181818","list.highlightForeground":"#4d9375","list.hoverBackground":"#181818","list.hoverForeground":"#dbd7caee","list.inactiveFocusBackground":"#121212","list.inactiveSelectionBackground":"#181818","list.inactiveSelectionForeground":"#dbd7caee","menu.separatorBackground":"#191919","notificationCenterHeader.background":"#121212","notificationCenterHeader.foreground":"#959da5","notifications.background":"#121212","notifications.border":"#191919","notifications.foreground":"#dbd7caee","notificationsErrorIcon.foreground":"#cb7676","notificationsInfoIcon.foreground":"#6394bf","notificationsWarningIcon.foreground":"#d4976c","panel.background":"#121212","panel.border":"#191919","panelInput.border":"#2f363d","panelTitle.activeBorder":"#4d9375","panelTitle.activeForeground":"#dbd7caee","panelTitle.inactiveForeground":"#959da5","peekViewEditor.background":"#121212","peekViewEditor.matchHighlightBackground":"#ffd33d33","peekViewResult.background":"#121212","peekViewResult.matchHighlightBackground":"#ffd33d33","pickerGroup.border":"#191919","pickerGroup.foreground":"#dbd7caee","problemsErrorIcon.foreground":"#cb7676","problemsInfoIcon.foreground":"#6394bf","problemsWarningIcon.foreground":"#d4976c","progressBar.background":"#4d9375","quickInput.background":"#121212","quickInput.foreground":"#dbd7caee","quickInputList.focusBackground":"#181818","scrollbar.shadow":"#0000","scrollbarSlider.activeBackground":"#dedcd550","scrollbarSlider.background":"#dedcd510","scrollbarSlider.hoverBackground":"#dedcd550","settings.headerForeground":"#dbd7caee","settings.modifiedItemIndicator":"#4d9375","sideBar.background":"#121212","sideBar.border":"#191919","sideBar.foreground":"#bfbaaa","sideBarSectionHeader.background":"#121212","sideBarSectionHeader.border":"#191919","sideBarSectionHeader.foreground":"#dbd7caee","sideBarTitle.foreground":"#dbd7caee","statusBar.background":"#121212","statusBar.border":"#191919","statusBar.debuggingBackground":"#181818","statusBar.debuggingForeground":"#bfbaaa","statusBar.foreground":"#bfbaaa","statusBar.noFolderBackground":"#121212","statusBarItem.prominentBackground":"#181818","tab.activeBackground":"#121212","tab.activeBorder":"#191919","tab.activeBorderTop":"#dedcd590","tab.activeForeground":"#dbd7caee","tab.border":"#191919","tab.hoverBackground":"#181818","tab.inactiveBackground":"#121212","tab.inactiveForeground":"#959da5","tab.unfocusedActiveBorder":"#191919","tab.unfocusedActiveBorderTop":"#191919","tab.unfocusedHoverBackground":"#121212","terminal.ansiBlack":"#393a34","terminal.ansiBlue":"#6394bf","terminal.ansiBrightBlack":"#777777","terminal.ansiBrightBlue":"#6394bf","terminal.ansiBrightCyan":"#5eaab5","terminal.ansiBrightGreen":"#4d9375","terminal.ansiBrightMagenta":"#d9739f","terminal.ansiBrightRed":"#cb7676","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#e6cc77","terminal.ansiCyan":"#5eaab5","terminal.ansiGreen":"#4d9375","terminal.ansiMagenta":"#d9739f","terminal.ansiRed":"#cb7676","terminal.ansiWhite":"#dbd7ca","terminal.ansiYellow":"#e6cc77","terminal.foreground":"#dbd7caee","terminal.selectionBackground":"#eeeeee18","textBlockQuote.background":"#121212","textBlockQuote.border":"#191919","textCodeBlock.background":"#121212","textLink.activeForeground":"#4d9375","textLink.foreground":"#4d9375","textPreformat.foreground":"#d1d5da","textSeparator.foreground":"#586069","titleBar.activeBackground":"#121212","titleBar.activeForeground":"#bfbaaa","titleBar.border":"#181818","titleBar.inactiveBackground":"#121212","titleBar.inactiveForeground":"#959da5","tree.indentGuidesStroke":"#2f363d","welcomePage.buttonBackground":"#2f363d","welcomePage.buttonHoverBackground":"#444d56"},displayName:"Vitesse Dark",name:"vitesse-dark",semanticHighlighting:!0,semanticTokenColors:{class:"#7f8ac7",interface:"#5d99a9",namespace:"#db889a",property:"#b8a965",type:"#5d99a9"},tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#758575dd"}},{scope:["delimiter.bracket","delimiter","invalid.illegal.character-not-allowed-here.html","keyword.operator.rest","keyword.operator.spread","keyword.operator.type.annotation","keyword.operator.relational","keyword.operator.assignment","meta.brace","meta.tag.block.any.html","meta.tag.inline.any.html","meta.tag.structure.input.void.html","meta.type.annotation","meta.embedded.block.github-actions-expression","storage.type.function.arrow","keyword.operator.type","meta.objectliteral.ts","punctuation"],settings:{foreground:"#666666"}},{scope:["constant","entity.name.constant","variable.language","meta.definition.variable"],settings:{foreground:"#c99076"}},{scope:["entity","entity.name"],settings:{foreground:"#80a665"}},{scope:"variable.parameter.function",settings:{foreground:"#dbd7caee"}},{scope:["entity.name.tag","tag.html"],settings:{foreground:"#4d9375"}},{scope:"entity.name.function",settings:{foreground:"#80a665"}},{scope:["keyword","storage.type.class.jsdoc"],settings:{foreground:"#4d9375"}},{scope:["storage","storage.type","support.type.builtin","constant.language.undefined","constant.language.null"],settings:{foreground:"#cb7676"}},{scope:["text.html.derivative","storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#dbd7caee"}},{scope:["string","string punctuation.section.embedded source","attribute.value"],settings:{foreground:"#c98a7d"}},{scope:["punctuation.definition.string","punctuation.support.type.property-name"],settings:{foreground:"#c98a7d99"}},{scope:"support",settings:{foreground:"#b8a965"}},{scope:["property","meta.property-name","meta.object-literal.key","entity.name.tag.yaml","attribute.name"],settings:{foreground:"#b8a965"}},{scope:["entity.other.attribute-name","invalid.deprecated.entity.other.attribute-name.html"],settings:{foreground:"#bd976a"}},{scope:["variable","identifier"],settings:{foreground:"#bd976a"}},{scope:["support.type.primitive","entity.name.type"],settings:{foreground:"#5DA994"}},{scope:"namespace",settings:{foreground:"#db889a"}},{scope:["keyword.operator","keyword.operator.assignment.compound","meta.var.expr.ts"],settings:{foreground:"#cb7676"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#fdaeb7"}},{scope:"carriage-return",settings:{background:"#f97583",content:"^M",fontStyle:"italic underline",foreground:"#24292e"}},{scope:"message.error",settings:{foreground:"#fdaeb7"}},{scope:"string variable",settings:{foreground:"#c98a7d"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#c4704f"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#c98a7d"}},{scope:"string.regexp constant.character.escape",settings:{foreground:"#e6cc77"}},{scope:["support.constant"],settings:{foreground:"#c99076"}},{scope:["constant.numeric","number"],settings:{foreground:"#4C9A91"}},{scope:["keyword.other.unit"],settings:{foreground:"#cb7676"}},{scope:["constant.language.boolean","constant.language"],settings:{foreground:"#4d9375"}},{scope:"meta.module-reference",settings:{foreground:"#4d9375"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#d4976c"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#4d9375"}},{scope:"markup.quote",settings:{foreground:"#5d99a9"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#dbd7caee"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#dbd7caee"}},{scope:"markup.raw",settings:{foreground:"#4d9375"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#86181d",foreground:"#fdaeb7"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#144620",foreground:"#85e89d"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#c24e00",foreground:"#ffab70"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#79b8ff",foreground:"#2f363d"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#b392f0"}},{scope:"meta.diff.header",settings:{foreground:"#79b8ff"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#79b8ff"}},{scope:"meta.output",settings:{foreground:"#79b8ff"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#d1d5da"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#fdaeb7"}},{scope:["constant.other.reference.link","string.other.link","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown"],settings:{foreground:"#c98a7d"}},{scope:["markup.underline.link.markdown","markup.underline.link.image.markdown"],settings:{fontStyle:"underline",foreground:"#dedcd590"}},{scope:["type.identifier"],settings:{foreground:"#7f8ac7"}},{scope:["entity.other.attribute-name.html.vue"],settings:{foreground:"#80a665"}},{scope:["invalid.illegal.unrecognized-tag.html"],settings:{fontStyle:"normal"}}],type:"dark"});export{e as default}; diff --git a/assets/chunks/vitesse-light.BGq4KZyx.js b/assets/chunks/vitesse-light.BGq4KZyx.js new file mode 100644 index 000000000..57a478184 --- /dev/null +++ b/assets/chunks/vitesse-light.BGq4KZyx.js @@ -0,0 +1 @@ +var e=Object.freeze({colors:{"activityBar.activeBorder":"#1c6b48","activityBar.background":"#ffffff","activityBar.border":"#f0f0f0","activityBar.foreground":"#393a34","activityBar.inactiveForeground":"#393a3450","activityBarBadge.background":"#4e4f47","activityBarBadge.foreground":"#ffffff","badge.background":"#393a3490","badge.foreground":"#ffffff","breadcrumb.activeSelectionForeground":"#22222218","breadcrumb.background":"#f7f7f7","breadcrumb.focusForeground":"#393a34","breadcrumb.foreground":"#6a737d","breadcrumbPicker.background":"#ffffff","button.background":"#1c6b48","button.foreground":"#ffffff","button.hoverBackground":"#1c6b48","checkbox.background":"#f7f7f7","checkbox.border":"#d1d5da","debugToolBar.background":"#ffffff",descriptionForeground:"#393a3490","diffEditor.insertedTextBackground":"#1c6b4830","diffEditor.removedTextBackground":"#ab595940","dropdown.background":"#ffffff","dropdown.border":"#f0f0f0","dropdown.foreground":"#393a34","dropdown.listBackground":"#f7f7f7","editor.background":"#ffffff","editor.findMatchBackground":"#e6cc7744","editor.findMatchHighlightBackground":"#e6cc7766","editor.focusedStackFrameHighlightBackground":"#fff5b1","editor.foldBackground":"#22222210","editor.foreground":"#393a34","editor.inactiveSelectionBackground":"#22222210","editor.lineHighlightBackground":"#f7f7f7","editor.selectionBackground":"#22222218","editor.selectionHighlightBackground":"#22222210","editor.stackFrameHighlightBackground":"#fffbdd","editor.wordHighlightBackground":"#1c6b4805","editor.wordHighlightStrongBackground":"#1c6b4810","editorBracketHighlight.foreground1":"#2993a3","editorBracketHighlight.foreground2":"#1e754f","editorBracketHighlight.foreground3":"#a65e2b","editorBracketHighlight.foreground4":"#a13865","editorBracketHighlight.foreground5":"#bda437","editorBracketHighlight.foreground6":"#296aa3","editorBracketMatch.background":"#1c6b4820","editorError.foreground":"#ab5959","editorGroup.border":"#f0f0f0","editorGroupHeader.tabsBackground":"#ffffff","editorGroupHeader.tabsBorder":"#f0f0f0","editorGutter.addedBackground":"#1e754f","editorGutter.commentRangeForeground":"#393a3450","editorGutter.deletedBackground":"#ab5959","editorGutter.foldingControlForeground":"#393a3490","editorGutter.modifiedBackground":"#296aa3","editorHint.foreground":"#1e754f","editorIndentGuide.activeBackground":"#00000030","editorIndentGuide.background":"#00000015","editorInfo.foreground":"#296aa3","editorInlayHint.background":"#00000000","editorInlayHint.foreground":"#999999","editorLineNumber.activeForeground":"#4e4f47","editorLineNumber.foreground":"#393a3450","editorOverviewRuler.border":"#fff","editorStickyScroll.background":"#f7f7f7","editorStickyScrollHover.background":"#f7f7f7","editorWarning.foreground":"#a65e2b","editorWhitespace.foreground":"#00000015","editorWidget.background":"#ffffff",errorForeground:"#ab5959",focusBorder:"#00000000",foreground:"#393a34","gitDecoration.addedResourceForeground":"#1e754f","gitDecoration.conflictingResourceForeground":"#a65e2b","gitDecoration.deletedResourceForeground":"#ab5959","gitDecoration.ignoredResourceForeground":"#393a3450","gitDecoration.modifiedResourceForeground":"#296aa3","gitDecoration.submoduleResourceForeground":"#393a3490","gitDecoration.untrackedResourceForeground":"#2993a3","input.background":"#f7f7f7","input.border":"#f0f0f0","input.foreground":"#393a34","input.placeholderForeground":"#393a3490","inputOption.activeBackground":"#393a3450","list.activeSelectionBackground":"#f7f7f7","list.activeSelectionForeground":"#393a34","list.focusBackground":"#f7f7f7","list.highlightForeground":"#1c6b48","list.hoverBackground":"#f7f7f7","list.hoverForeground":"#393a34","list.inactiveFocusBackground":"#ffffff","list.inactiveSelectionBackground":"#f7f7f7","list.inactiveSelectionForeground":"#393a34","menu.separatorBackground":"#f0f0f0","notificationCenterHeader.background":"#ffffff","notificationCenterHeader.foreground":"#6a737d","notifications.background":"#ffffff","notifications.border":"#f0f0f0","notifications.foreground":"#393a34","notificationsErrorIcon.foreground":"#ab5959","notificationsInfoIcon.foreground":"#296aa3","notificationsWarningIcon.foreground":"#a65e2b","panel.background":"#ffffff","panel.border":"#f0f0f0","panelInput.border":"#e1e4e8","panelTitle.activeBorder":"#1c6b48","panelTitle.activeForeground":"#393a34","panelTitle.inactiveForeground":"#6a737d","peekViewEditor.background":"#ffffff","peekViewResult.background":"#ffffff","pickerGroup.border":"#f0f0f0","pickerGroup.foreground":"#393a34","problemsErrorIcon.foreground":"#ab5959","problemsInfoIcon.foreground":"#296aa3","problemsWarningIcon.foreground":"#a65e2b","progressBar.background":"#1c6b48","quickInput.background":"#ffffff","quickInput.foreground":"#393a34","quickInputList.focusBackground":"#f7f7f7","scrollbar.shadow":"#6a737d33","scrollbarSlider.activeBackground":"#393a3450","scrollbarSlider.background":"#393a3410","scrollbarSlider.hoverBackground":"#393a3450","settings.headerForeground":"#393a34","settings.modifiedItemIndicator":"#1c6b48","sideBar.background":"#ffffff","sideBar.border":"#f0f0f0","sideBar.foreground":"#4e4f47","sideBarSectionHeader.background":"#ffffff","sideBarSectionHeader.border":"#f0f0f0","sideBarSectionHeader.foreground":"#393a34","sideBarTitle.foreground":"#393a34","statusBar.background":"#ffffff","statusBar.border":"#f0f0f0","statusBar.debuggingBackground":"#f7f7f7","statusBar.debuggingForeground":"#4e4f47","statusBar.foreground":"#4e4f47","statusBar.noFolderBackground":"#ffffff","statusBarItem.prominentBackground":"#f7f7f7","tab.activeBackground":"#ffffff","tab.activeBorder":"#f0f0f0","tab.activeBorderTop":"#393a3490","tab.activeForeground":"#393a34","tab.border":"#f0f0f0","tab.hoverBackground":"#f7f7f7","tab.inactiveBackground":"#ffffff","tab.inactiveForeground":"#6a737d","tab.unfocusedActiveBorder":"#f0f0f0","tab.unfocusedActiveBorderTop":"#f0f0f0","tab.unfocusedHoverBackground":"#ffffff","terminal.ansiBlack":"#121212","terminal.ansiBlue":"#296aa3","terminal.ansiBrightBlack":"#aaaaaa","terminal.ansiBrightBlue":"#296aa3","terminal.ansiBrightCyan":"#2993a3","terminal.ansiBrightGreen":"#1e754f","terminal.ansiBrightMagenta":"#a13865","terminal.ansiBrightRed":"#ab5959","terminal.ansiBrightWhite":"#dddddd","terminal.ansiBrightYellow":"#bda437","terminal.ansiCyan":"#2993a3","terminal.ansiGreen":"#1e754f","terminal.ansiMagenta":"#a13865","terminal.ansiRed":"#ab5959","terminal.ansiWhite":"#dbd7ca","terminal.ansiYellow":"#bda437","terminal.foreground":"#393a34","terminal.selectionBackground":"#22222218","textBlockQuote.background":"#ffffff","textBlockQuote.border":"#f0f0f0","textCodeBlock.background":"#ffffff","textLink.activeForeground":"#1c6b48","textLink.foreground":"#1c6b48","textPreformat.foreground":"#586069","textSeparator.foreground":"#d1d5da","titleBar.activeBackground":"#ffffff","titleBar.activeForeground":"#4e4f47","titleBar.border":"#f7f7f7","titleBar.inactiveBackground":"#ffffff","titleBar.inactiveForeground":"#6a737d","tree.indentGuidesStroke":"#e1e4e8","welcomePage.buttonBackground":"#f6f8fa","welcomePage.buttonHoverBackground":"#e1e4e8"},displayName:"Vitesse Light",name:"vitesse-light",semanticHighlighting:!0,semanticTokenColors:{class:"#5a6aa6",interface:"#2e808f",namespace:"#b05a78",property:"#998418",type:"#2e808f"},tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"#a0ada0"}},{scope:["delimiter.bracket","delimiter","invalid.illegal.character-not-allowed-here.html","keyword.operator.rest","keyword.operator.spread","keyword.operator.type.annotation","keyword.operator.relational","keyword.operator.assignment","meta.brace","meta.tag.block.any.html","meta.tag.inline.any.html","meta.tag.structure.input.void.html","meta.type.annotation","meta.embedded.block.github-actions-expression","storage.type.function.arrow","keyword.operator.type","meta.objectliteral.ts","punctuation"],settings:{foreground:"#999999"}},{scope:["constant","entity.name.constant","variable.language","meta.definition.variable"],settings:{foreground:"#a65e2b"}},{scope:["entity","entity.name"],settings:{foreground:"#59873a"}},{scope:"variable.parameter.function",settings:{foreground:"#393a34"}},{scope:["entity.name.tag","tag.html"],settings:{foreground:"#1e754f"}},{scope:"entity.name.function",settings:{foreground:"#59873a"}},{scope:["keyword","storage.type.class.jsdoc"],settings:{foreground:"#1e754f"}},{scope:["storage","storage.type","support.type.builtin","constant.language.undefined","constant.language.null"],settings:{foreground:"#ab5959"}},{scope:["text.html.derivative","storage.modifier.package","storage.modifier.import","storage.type.java"],settings:{foreground:"#393a34"}},{scope:["string","string punctuation.section.embedded source","attribute.value"],settings:{foreground:"#b56959"}},{scope:["punctuation.definition.string","punctuation.support.type.property-name"],settings:{foreground:"#b5695999"}},{scope:"support",settings:{foreground:"#998418"}},{scope:["property","meta.property-name","meta.object-literal.key","entity.name.tag.yaml","attribute.name"],settings:{foreground:"#998418"}},{scope:["entity.other.attribute-name","invalid.deprecated.entity.other.attribute-name.html"],settings:{foreground:"#b07d48"}},{scope:["variable","identifier"],settings:{foreground:"#b07d48"}},{scope:["support.type.primitive","entity.name.type"],settings:{foreground:"#2e8f82"}},{scope:"namespace",settings:{foreground:"#b05a78"}},{scope:["keyword.operator","keyword.operator.assignment.compound","meta.var.expr.ts"],settings:{foreground:"#ab5959"}},{scope:"invalid.broken",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.deprecated",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.illegal",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"invalid.unimplemented",settings:{fontStyle:"italic",foreground:"#b31d28"}},{scope:"carriage-return",settings:{background:"#d73a49",content:"^M",fontStyle:"italic underline",foreground:"#fafbfc"}},{scope:"message.error",settings:{foreground:"#b31d28"}},{scope:"string variable",settings:{foreground:"#b56959"}},{scope:["source.regexp","string.regexp"],settings:{foreground:"#ab5e3f"}},{scope:["string.regexp.character-class","string.regexp constant.character.escape","string.regexp source.ruby.embedded","string.regexp string.regexp.arbitrary-repitition"],settings:{foreground:"#b56959"}},{scope:"string.regexp constant.character.escape",settings:{foreground:"#bda437"}},{scope:["support.constant"],settings:{foreground:"#a65e2b"}},{scope:["constant.numeric","number"],settings:{foreground:"#2f798a"}},{scope:["keyword.other.unit"],settings:{foreground:"#ab5959"}},{scope:["constant.language.boolean","constant.language"],settings:{foreground:"#1e754f"}},{scope:"meta.module-reference",settings:{foreground:"#1c6b48"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#a65e2b"}},{scope:["markup.heading","markup.heading entity.name"],settings:{fontStyle:"bold",foreground:"#1c6b48"}},{scope:"markup.quote",settings:{foreground:"#2e808f"}},{scope:"markup.italic",settings:{fontStyle:"italic",foreground:"#393a34"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#393a34"}},{scope:"markup.raw",settings:{foreground:"#1c6b48"}},{scope:["markup.deleted","meta.diff.header.from-file","punctuation.definition.deleted"],settings:{background:"#ffeef0",foreground:"#b31d28"}},{scope:["markup.inserted","meta.diff.header.to-file","punctuation.definition.inserted"],settings:{background:"#f0fff4",foreground:"#22863a"}},{scope:["markup.changed","punctuation.definition.changed"],settings:{background:"#ffebda",foreground:"#e36209"}},{scope:["markup.ignored","markup.untracked"],settings:{background:"#005cc5",foreground:"#f6f8fa"}},{scope:"meta.diff.range",settings:{fontStyle:"bold",foreground:"#6f42c1"}},{scope:"meta.diff.header",settings:{foreground:"#005cc5"}},{scope:"meta.separator",settings:{fontStyle:"bold",foreground:"#005cc5"}},{scope:"meta.output",settings:{foreground:"#005cc5"}},{scope:["brackethighlighter.tag","brackethighlighter.curly","brackethighlighter.round","brackethighlighter.square","brackethighlighter.angle","brackethighlighter.quote"],settings:{foreground:"#586069"}},{scope:"brackethighlighter.unmatched",settings:{foreground:"#b31d28"}},{scope:["constant.other.reference.link","string.other.link","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown"],settings:{foreground:"#b56959"}},{scope:["markup.underline.link.markdown","markup.underline.link.image.markdown"],settings:{fontStyle:"underline",foreground:"#393a3490"}},{scope:["type.identifier"],settings:{foreground:"#5a6aa6"}},{scope:["entity.other.attribute-name.html.vue"],settings:{foreground:"#59873a"}},{scope:["invalid.illegal.unrecognized-tag.html"],settings:{fontStyle:"normal"}}],type:"light"});export{e as default}; diff --git a/assets/chunks/vue-html.B4wQFpQy.js b/assets/chunks/vue-html.B4wQFpQy.js new file mode 100644 index 000000000..cd5884046 --- /dev/null +++ b/assets/chunks/vue-html.B4wQFpQy.js @@ -0,0 +1 @@ +import t from"./vue.DT8Wph6y.js";import e from"./javascript.Dch3xQiY.js";import"./html.CuK0VrWf.js";import"./css.CbYhyuC0.js";import"./markdown.BdfWgkoX.js";import"./pug.BWq4yR4F.js";import"./sass.CMDmr8et.js";import"./scss.Dr-_CcBd.js";import"./stylus.DSrLtGYv.js";import"./coffee.t_LrLW_f.js";import"./less.Du6_OKDb.js";import"./typescript.DC8MraHL.js";import"./jsx.CsyrCbsw.js";import"./tsx.BlxWTfDV.js";import"./json.CupVZNk8.js";import"./jsonc.DYI1rfmx.js";import"./json5.Bh8mriwU.js";import"./yaml.C5gCGmDW.js";import"./toml.BT9ZzGyQ.js";import"./graphql.C4V4xKFR.js";import"./html-derivative.fiapQfxX.js";const n=Object.freeze({displayName:"Vue HTML",fileTypes:[],name:"vue-html",patterns:[{include:"source.vue#vue-interpolations"},{begin:"(<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"support.class.component.html"}},end:"(>)(<)(/)(\\2)(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"},2:{name:"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"},3:{name:"punctuation.definition.tag.begin.html"},4:{name:"support.class.component.html"},5:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.html"}},end:"(>)(<)(/)(\\2)(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"},2:{name:"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"},3:{name:"punctuation.definition.tag.begin.html"},4:{name:"entity.name.tag.html"},5:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(<\\?)(xml)",captures:{1:{name:"punctuation.definition.tag.html"},2:{name:"entity.name.tag.xml.html"}},end:"(\\?>)",name:"meta.tag.preprocessor.xml.html",patterns:[{include:"#tag-generic-attribute"},{include:"#string-double-quoted"},{include:"#string-single-quoted"}]},{begin:"<!--",captures:{0:{name:"punctuation.definition.comment.html"}},end:"-->",name:"comment.block.html"},{begin:"<!",captures:{0:{name:"punctuation.definition.tag.html"}},end:">",name:"meta.tag.sgml.html",patterns:[{begin:"(?i:DOCTYPE)",captures:{1:{name:"entity.name.tag.doctype.html"}},end:"(?=>)",name:"meta.tag.sgml.doctype.html",patterns:[{match:'"[^">]*"',name:"string.quoted.double.doctype.identifiers-and-DTDs.html"}]},{begin:"\\[CDATA\\[",end:"]](?=>)",name:"constant.other.inline-data.html"},{match:"(\\s*)(?!--|>)\\S(\\s*)",name:"invalid.illegal.bad-comments-or-CDATA.html"}]},{begin:"(</?)([A-Z][a-zA-Z0-9:-]*\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"support.class.component.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.block.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)([a-z][a-zA-Z0-9:-]*\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.block.any.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.block.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)((?i:body|head|html)\\b)",captures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.structure.any.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.structure.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.block.any.html"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.block.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\\b)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.inline.any.html"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.inline.any.html",patterns:[{include:"#tag-stuff"}]},{begin:"(</?)([a-zA-Z0-9:-]+)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"},2:{name:"entity.name.tag.other.html"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.other.html",patterns:[{include:"#tag-stuff"}]},{include:"#entities"},{match:"<>",name:"invalid.illegal.incomplete.html"},{match:"<",name:"invalid.illegal.bad-angle-bracket.html"}],repository:{entities:{patterns:[{captures:{1:{name:"punctuation.definition.entity.html"},3:{name:"punctuation.definition.entity.html"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.html"},{match:"&",name:"invalid.illegal.bad-ampersand.html"}]},"string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.double.html",patterns:[{include:"source.vue#vue-interpolations"},{include:"#entities"}]},"string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.single.html",patterns:[{include:"source.vue#vue-interpolations"},{include:"#entities"}]},"tag-generic-attribute":{match:"(?<=[^=])\\b([a-zA-Z0-9:\\-_]+)",name:"entity.other.attribute-name.html"},"tag-id-attribute":{begin:"\\b(id)\\b\\s*(=)",captures:{1:{name:"entity.other.attribute-name.id.html"},2:{name:"punctuation.separator.key-value.html"}},end:`(?!\\G)(?<='|"|[^\\s<>/])`,name:"meta.attribute-with-value.id.html",patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},contentName:"meta.toc-list.id.html",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.double.html",patterns:[{include:"source.vue#vue-interpolations"},{include:"#entities"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},contentName:"meta.toc-list.id.html",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"string.quoted.single.html",patterns:[{include:"source.vue#vue-interpolations"},{include:"#entities"}]},{captures:{0:{name:"meta.toc-list.id.html"}},match:`(?<==)(?:[^\\s<>/'"]|/(?!>))+`,name:"string.unquoted.html"}]},"tag-stuff":{patterns:[{include:"#vue-directives"},{include:"#tag-id-attribute"},{include:"#tag-generic-attribute"},{include:"#string-double-quoted"},{include:"#string-single-quoted"},{include:"#unquoted-attribute"}]},"unquoted-attribute":{match:`(?<==)(?:[^\\s<>/'"]|/(?!>))+`,name:"string.unquoted.html"},"vue-directives":{begin:"(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",captures:{1:{name:"entity.other.attribute-name.html"},2:{name:"punctuation.separator.key-value.html"},3:{name:"entity.other.attribute-name.html"},4:{name:"entity.other.attribute-name.html"},5:{name:"entity.other.attribute-name.html"},6:{name:"punctuation.separator.key-value.html"}},end:"(?<='|\")|(?=[\\s<>`])",name:"meta.directive.vue",patterns:[{begin:"`",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:"`",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"source.directive.vue",patterns:[{include:"source.js#expression"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"source.directive.vue",patterns:[{include:"source.js#expression"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.html"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.html"}},name:"source.directive.vue",patterns:[{include:"source.js#expression"}]}]}},scopeName:"text.html.vue-html",embeddedLangs:["vue","javascript"]});var z=[...t,...e,n];export{z as default}; diff --git a/assets/chunks/vue.DT8Wph6y.js b/assets/chunks/vue.DT8Wph6y.js new file mode 100644 index 000000000..6055ae788 --- /dev/null +++ b/assets/chunks/vue.DT8Wph6y.js @@ -0,0 +1,6 @@ +import t from"./html.CuK0VrWf.js";import n from"./markdown.BdfWgkoX.js";import a from"./pug.BWq4yR4F.js";import i from"./stylus.DSrLtGYv.js";import s from"./sass.CMDmr8et.js";import u from"./css.CbYhyuC0.js";import m from"./scss.Dr-_CcBd.js";import r from"./less.Du6_OKDb.js";import e from"./javascript.Dch3xQiY.js";import o from"./typescript.DC8MraHL.js";import c from"./jsx.CsyrCbsw.js";import l from"./tsx.BlxWTfDV.js";import d from"./json.CupVZNk8.js";import g from"./jsonc.DYI1rfmx.js";import p from"./json5.Bh8mriwU.js";import b from"./yaml.C5gCGmDW.js";import v from"./toml.BT9ZzGyQ.js";import f from"./graphql.C4V4xKFR.js";import h from"./html-derivative.fiapQfxX.js";import"./coffee.t_LrLW_f.js";const y=Object.freeze({fileTypes:[],injectTo:["text.html.markdown"],injectionSelector:"L:text.html.markdown",name:"markdown-vue",patterns:[{include:"#vue-code-block"}],repository:{"vue-code-block":{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vue)((\\s+|:|,|\\{|\\?)[^`~]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{include:"source.vue"}]}},scopeName:"markdown.vue.codeblock"});var C=[y];const $=Object.freeze({fileTypes:[],injectTo:["source.vue","text.html.markdown","text.html.derivative","text.pug"],injectionSelector:"L:meta.tag -meta.attribute -meta.ng-binding -entity.name.tag.pug -attribute_value -source.tsx -source.js.jsx, L:meta.element -meta.attribute",name:"vue-directives",patterns:[{include:"source.vue#vue-directives"}],scopeName:"vue.directives"});var j=[$];const x=Object.freeze({fileTypes:[],injectTo:["source.vue","text.html.markdown","text.html.derivative","text.pug"],injectionSelector:"L:text.pug -comment -string.comment, L:text.html.derivative -comment.block, L:text.html.markdown -comment.block",name:"vue-interpolations",patterns:[{include:"source.vue#vue-interpolations"}],scopeName:"vue.interpolations"});var k=[x];const z=Object.freeze({fileTypes:[],injectTo:["source.vue"],injectionSelector:"L:source.css -comment, L:source.postcss -comment, L:source.sass -comment, L:source.stylus -comment",name:"vue-sfc-style-variable-injection",patterns:[{include:"#vue-sfc-style-variable-injection"}],repository:{"vue-sfc-style-variable-injection":{begin:"\\b(v-bind)\\s*\\(",beginCaptures:{1:{name:"entity.name.function"}},end:"\\)",name:"vue.sfc.style.variable.injection.v-bind",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"}},end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"source.ts.embedded.html.vue",patterns:[{include:"source.js"}]},{include:"source.js"}]}},scopeName:"vue.sfc.style.variable.injection",embeddedLangs:["javascript"]});var A=[...e,z];const Z=Object.freeze({displayName:"Vue",name:"vue",patterns:[{include:"text.html.basic#comment"},{include:"#self-closing-tag"},{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},patterns:[{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)md\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.html.markdown",patterns:[{include:"text.html.markdown"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)html\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.html.derivative",patterns:[{include:"#html-stuff"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)pug\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.pug",patterns:[{include:"text.pug"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)stylus\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.stylus",patterns:[{include:"source.stylus"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)postcss\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.postcss",patterns:[{include:"source.postcss"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)sass\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.sass",patterns:[{include:"source.sass"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)css\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css",patterns:[{include:"source.css"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)scss\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css.scss",patterns:[{include:"source.css.scss"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)less\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css.less",patterns:[{include:"source.css.less"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)js\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.js",patterns:[{include:"source.js"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)ts\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.ts",patterns:[{include:"source.ts"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)jsx\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.js.jsx",patterns:[{include:"source.js.jsx"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)tsx\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.tsx",patterns:[{include:"source.tsx"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)json\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json",patterns:[{include:"source.json"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)jsonc\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json.comments",patterns:[{include:"source.json.comments"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)json5\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json5",patterns:[{include:"source.json5"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)yaml\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.yaml",patterns:[{include:"source.yaml"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)toml\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.toml",patterns:[{include:"source.toml"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)(gql|graphql)\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.graphql",patterns:[{include:"source.graphql"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)vue\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.vue",patterns:[{include:"source.vue"}]}]},{begin:"(template)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/template\\b)",name:"text.html.derivative",patterns:[{include:"#html-stuff"}]}]},{begin:"(script)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/script\\b)",name:"source.js",patterns:[{include:"source.js"}]}]},{begin:"(style)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/style\\b)",name:"source.css",patterns:[{include:"source.css"}]}]},{begin:"([a-zA-Z0-9:-]+)",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text"}]}]}],repository:{"html-stuff":{patterns:[{include:"#template-tag"},{include:"text.html.derivative"},{include:"text.html.basic"}]},"self-closing-tag":{begin:"(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},end:"(/>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"self-closing-tag",patterns:[{include:"#tag-stuff"}]},"tag-stuff":{begin:"\\G",end:"(?=/>)|(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.tag-stuff",patterns:[{include:"#vue-directives"},{include:"text.html.basic#attribute"}]},"template-tag":{patterns:[{include:"#template-tag-1"},{include:"#template-tag-2"}]},"template-tag-1":{begin:"(<)(template)\\b(>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"},3:{name:"punctuation.definition.tag.end.html.vue"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.template-tag.start",patterns:[{begin:"\\G",end:"(?=/>)|((</)(template)\\b)",endCaptures:{2:{name:"punctuation.definition.tag.begin.html.vue"},3:{name:"entity.name.tag.$3.html.vue"}},name:"meta.template-tag.end",patterns:[{include:"#html-stuff"}]}]},"template-tag-2":{begin:"(<)(template)\\b",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.template-tag.start",patterns:[{begin:"\\G",end:"(?=/>)|((</)(template)\\b)",endCaptures:{2:{name:"punctuation.definition.tag.begin.html.vue"},3:{name:"entity.name.tag.$3.html.vue"}},name:"meta.template-tag.end",patterns:[{include:"#tag-stuff"},{include:"#html-stuff"}]}]},"vue-directives":{patterns:[{include:"#vue-directives-control"},{include:"#vue-directives-style-attr"},{include:"#vue-directives-original"},{include:"#vue-directives-generic-attr"}]},"vue-directives-control":{begin:"(v-for)|(v-if|v-else-if|v-else)",captures:{1:{name:"keyword.control.loop.vue"},2:{name:"keyword.control.conditional.vue"}},end:"(?=\\s*+[^=\\s])",name:"meta.attribute.directive.control.vue",patterns:[{include:"#vue-directives-expression"}]},"vue-directives-expression":{patterns:[{begin:"(=)\\s*('|\"|`)",beginCaptures:{1:{name:"punctuation.separator.key-value.html.vue"},2:{name:"punctuation.definition.string.begin.html.vue"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},patterns:[{begin:"(?<=('|\"|`))",end:"(?=\\1)",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]},{begin:"(=)\\s*(?=[^'\"`])",beginCaptures:{1:{name:"punctuation.separator.key-value.html.vue"}},end:"(?=(\\s|>|\\/>))",patterns:[{begin:"(?=[^'\"`])",end:"(?=(\\s|>|\\/>))",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]}]},"vue-directives-generic-attr":{begin:"\\b(generic)\\s*(=)",captures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.separator.key-value.html.vue"}},end:`(?<='|")`,name:"meta.attribute.generic.vue",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.html.vue"}},comment:"https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"meta.type.parameters.vue",patterns:[{include:"source.ts#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},{include:"source.ts#type"},{include:"source.ts#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.ts"}]}]},"vue-directives-original":{begin:"(?:\\b(v-)|([:\\.])|(@)|(#))(\\[?)([\\w\\-]*)(\\]?)(?:\\.([\\w\\-]*))*",beginCaptures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.attribute-shorthand.bind.html.vue"},3:{name:"punctuation.attribute-shorthand.event.html.vue"},4:{name:"punctuation.attribute-shorthand.slot.html.vue"},5:{name:"punctuation.separator.key-value.html.vue"},6:{name:"entity.other.attribute-name.html.vue"},7:{name:"punctuation.separator.key-value.html.vue"},8:{name:"entity.other.attribute-name.html.vue"},9:{name:"punctuation.separator.key-value.html.vue"}},end:"(?=\\s*+[^=\\s])",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"meta.attribute.directive.vue",patterns:[{include:"#vue-directives-expression"}]},"vue-directives-style-attr":{begin:"\\b(style)\\s*(=)",captures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.separator.key-value.html.vue"}},end:`(?<='|")`,name:"meta.attribute.style.vue",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.html.vue"}},comment:"Copy from source.css#rule-list-innards",end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"source.css.embedded.html.vue",patterns:[{include:"source.css#comment-block"},{include:"source.css#escapes"},{include:"source.css#font-features"},{match:`(?x) (?<![\\w-]) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] +|\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.css"},{begin:"(?<![-a-zA-Z])(?=[-a-zA-Z])",end:"$|(?![-a-zA-Z])",name:"meta.property-name.css",patterns:[{include:"source.css#property-names"}]},{begin:"(:)\\s*",beginCaptures:{1:{name:"punctuation.separator.key-value.css"}},comment:"Modify end to fix #199. TODO: handle ' character.",contentName:"meta.property-value.css",end:`\\s*(;)|\\s*(?='|")`,endCaptures:{1:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"source.css#comment-block"},{include:"source.css#property-values"}]},{match:";",name:"punctuation.terminator.rule.css"}]}]},"vue-interpolations":{patterns:[{begin:"(\\{\\{)",beginCaptures:{1:{name:"punctuation.definition.interpolation.begin.html.vue"}},end:"(\\}\\})",endCaptures:{1:{name:"punctuation.definition.interpolation.end.html.vue"}},name:"expression.embedded.vue",patterns:[{begin:"\\G",end:"(?=\\}\\})",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]}]}},scopeName:"source.vue",embeddedLangs:["html","markdown","pug","stylus","sass","css","scss","less","javascript","typescript","jsx","tsx","json","jsonc","json5","yaml","toml","graphql","html-derivative","markdown-vue","vue-directives","vue-interpolations","vue-sfc-style-variable-injection"]});var Q=[...t,...n,...a,...i,...s,...u,...m,...r,...e,...o,...c,...l,...d,...g,...p,...b,...v,...f,...h,...C,...j,...k,...A,Z];export{Q as default}; diff --git a/assets/chunks/vyper.o-cPXEvd.js b/assets/chunks/vyper.o-cPXEvd.js new file mode 100644 index 000000000..ad940a3f5 --- /dev/null +++ b/assets/chunks/vyper.o-cPXEvd.js @@ -0,0 +1,575 @@ +const e=Object.freeze({displayName:"Vyper",name:"vyper",patterns:[{include:"#statement"},{include:"#expression"},{include:"#reserved-names-vyper"}],repository:{"annotated-parameter":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (:) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.annotation.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"},{match:"=(?!=)",name:"keyword.operator.assignment.python"}]},"assignment-operator":{match:`(?x) +<<= | >>= | //= | \\*\\*= +| \\+= | -= | /= | @= +| \\*= | %= | ~= | \\^= | &= | \\|= +| =(?!=) +`,name:"keyword.operator.assignment.python"},backticks:{begin:"\\`",end:"(?:\\`|(?<!\\\\)(\\n))",name:"invalid.deprecated.backtick.python",patterns:[{include:"#expression"}]},"builtin-callables":{patterns:[{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#builtin-exceptions"},{include:"#builtin-functions"},{include:"#builtin-types"}]},"builtin-exceptions":{match:`(?x) (?<!\\.) \\b( +( +Arithmetic | Assertion | Attribute | Buffer | BlockingIO +| BrokenPipe | ChildProcess +| (Connection (Aborted | Refused | Reset)?) +| EOF | Environment | FileExists | FileNotFound +| FloatingPoint | IO | Import | Indentation | Index | Interrupted +| IsADirectory | NotADirectory | Permission | ProcessLookup +| Timeout +| Key | Lookup | Memory | Name | NotImplemented | OS | Overflow +| Reference | Runtime | Recursion | Syntax | System +| Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)? +| Value | Windows | ZeroDivision | ModuleNotFound +) Error +| +((Pending)?Deprecation | Runtime | Syntax | User | Future | Import +| Unicode | Bytes | Resource +)? Warning +| +SystemExit | Stop(Async)?Iteration +| KeyboardInterrupt +| GeneratorExit | (Base)?Exception +)\\b +`,name:"support.type.exception.python"},"builtin-functions":{patterns:[{match:`(?x) +(?<!\\.) \\b( +__import__ | abs | all | any | ascii | bin | breakpoint | callable +| chr | compile | copyright | credits | delattr | dir | divmod +| enumerate | eval | exec | exit | filter | format | getattr +| globals | hasattr | hash | help | hex | id | input +| isinstance | issubclass | iter | len | license | locals | map +| max | memoryview | min | next | oct | open | ord | pow | print +| quit | range | reload | repr | reversed | round +| setattr | sorted | sum | vars | zip +)\\b +`,name:"support.function.builtin.python"},{match:`(?x) +(?<!\\.) \\b( +file | reduce | intern | raw_input | unicode | cmp | basestring +| execfile | long | xrange +)\\b +`,name:"variable.legacy.builtin.python"},{match:`(?x) +(?<!\\.) \\b( +_abi_encode | floor | ceil | convert | slice | len | concat | sha256 | method_id | keccak256 | ecrecover | ecadd | ecmul | extract32 | as_wei_value | raw_call | blockhash | bitwise_and | bitwise_or | bitwise_xor | bitwise_not | uint256_addmod | uint256_mulmod | pow_mod256 | sqrt | shift | create_forwarder_to | min | max | empty | abs )\\b +`,name:"support.function.builtin.vyper"},{match:`(?x) +(?<!\\.) \\b( +send | selfdestruct | raw_call | raw_log | create_forwarder_to )\\b +`,name:"support.function.builtin.lowlevel.vyper"},{match:`(?x) +(?<!\\.) \\b( +event )\\b +`,name:"support.type.event.vyper"},{match:`(?x) +(?<!\\.) \\b( +map | struct | HashMap )\\b +`,name:"support.type.reference.vyper"},{match:`(?x) +(?<!\\.) \\b( +private | nonreentrant | constant | event | internal | view | pure )\\b +`,name:"support.function.builtin.modifiers.safe.vyper"},{match:`(?x) +(?<!\\.) \\b( +public | payable | modifying | external )\\b +`,name:"support.function.builtin.modifiers.unsafe.vyper"}]},"builtin-possible-callables":{patterns:[{include:"#builtin-callables"},{include:"#magic-names"}]},"builtin-types":{patterns:[{match:`(?x) +(?<!\\.) \\b( +bool | bytearray | bytes | classmethod | complex | dict +| float | frozenset | int | list | object | property +| set | slice | staticmethod | str | tuple | type + +(?# Although 'super' is not a type, it's related to types, +and is special enough to be highlighted differently from +other built-ins) +| super +)\\b +`,name:"support.type.python"},{match:`(?x) +(?<!\\.) \\b( +bytes32 | bytearray | wei_value | timestamp | int256 | uint8 | uint256 | decimal | timedelta | string | int128 | address | bool | bytes )\\b +`,name:"support.type.basetype.vyper"},{match:`(?x) +(?<!\\.) \\b( +finney | gwei | range | def | ____init____ | timedelta | babbage | zero_address | raise | external | empty_bytes32 | assert | continue | wei | ada | min_int256 | min_int128 | chainid | max_decimal | default | indexed | selfdestruct | lovelace | immutable | throw | kwei | max_int128 | while | constant | ___default___ | balance | twei | codesize | false | max_int256 | _default_ | init | mwei | if | ____default____ | true | payable | internal | until | this | nonpayable | pass | public | nonreentrant | blockhash | max_uint256 | shannon | none | units | _init_ | ___init___ | is_contract | for | zero_wei | min_decimal | szabo | timestamp | ether | pwei | send )\\b +`,name:"support.type.keywords.vyper"},{match:`(?x) +(?<!\\.) \\b( +shannon | finney | gwei | twei | kwei | wei | lovelace | ether | szabo | pwei | babbage | mwei | ada + +(?# Although 'super' is not a type, it's related to types, +and is special enough to be highlighted differently from +other built-ins) +| super +)\\b +`,name:"support.type.unit.vyper"},{match:`(?x) +(?<!\\.) \\b( +ZERO_ADDRESS | EMPTY_BYTES32 | MAX_INT128 | MIN_INT128 | MAX_DECIMAL | MIN_DECIMAL | MAX_UINT256 + +(?# Although 'super' is not a type, it's related to types, +and is special enough to be highlighted differently from +other built-ins) +| super +)\\b +`,name:"support.type.constant.vyper"},{match:`(?x) +(?<!\\.) \\b( +implements )\\b +`,name:"entity.other.inherited-class.interface.vyper"}]},"call-wrapper-inheritance":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:"same as a function call, but in inheritance context",end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#inheritance-name"},{include:"#function-arguments"}]},"class-declaration":{patterns:[{begin:`(?x) +\\s*(class)\\s+ +(?= +[[:alpha:]_]\\w* \\s* (:|\\() +) +`,beginCaptures:{1:{name:"storage.type.class.python"}},end:"(:)",endCaptures:{1:{name:"punctuation.section.class.begin.python"}},name:"meta.class.python",patterns:[{include:"#class-name"},{include:"#class-inheritance"}]}]},"class-inheritance":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.inheritance.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.inheritance.end.python"}},name:"meta.class.inheritance.python",patterns:[{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.arguments.python"},{match:",",name:"punctuation.separator.inheritance.python"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{match:"\\bmetaclass\\b",name:"support.type.metaclass.python"},{include:"#illegal-names"},{include:"#class-kwarg"},{include:"#call-wrapper-inheritance"},{include:"#expression-base"},{include:"#member-access-class"},{include:"#inheritance-identifier"}]},"class-kwarg":{captures:{1:{name:"entity.other.inherited-class.python variable.parameter.class.python"},2:{name:"keyword.operator.assignment.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\s*(=)(?!=) +`},"class-name":{patterns:[{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.type.class.python"}]},codetags:{captures:{1:{name:"keyword.codetag.notation.python"}},match:"(?:\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b)"},comments:{patterns:[{begin:`(?x) +(?: +\\# \\s* (type:) +\\s*+ (?# we want \`\\s*+\` which is possessive quantifier since +we do not actually want to backtrack when matching +whitespace here) +(?! $ | \\#) +) +`,beginCaptures:{0:{name:"meta.typehint.comment.python"},1:{name:"comment.typehint.directive.notation.python"}},contentName:"meta.typehint.comment.python",end:"(?:$|(?=\\#))",name:"comment.line.number-sign.python",patterns:[{match:`(?x) +\\G ignore +(?= \\s* (?: $ | \\#)) +`,name:"comment.typehint.ignore.notation.python"},{match:`(?x) +(?<!\\.)\\b( +bool | bytes | float | int | object | str +| List | Dict | Iterable | Sequence | Set +| FrozenSet | Callable | Union | Tuple +| Any | None +)\\b +`,name:"comment.typehint.type.notation.python"},{match:"([\\[\\]\\(\\),\\.\\=\\*]|(->))",name:"comment.typehint.punctuation.notation.python"},{match:"([[:alpha:]_]\\w*)",name:"comment.typehint.variable.notation.python"}]},{include:"#comments-base"}]},"comments-base":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($)",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-double-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:'($|(?="""))',name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"comments-string-single-three":{begin:"(\\#)",beginCaptures:{1:{name:"punctuation.definition.comment.python"}},end:"($|(?='''))",name:"comment.line.number-sign.python",patterns:[{include:"#codetags"}]},"curly-braces":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dict.begin.python"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.dict.end.python"}},patterns:[{match:":",name:"punctuation.separator.dict.python"},{include:"#expression"}]},decorator:{begin:`(?x) +^\\s* +((@)) \\s* (?=[[:alpha:]_]\\w*) +`,beginCaptures:{1:{name:"entity.name.function.decorator.python"},2:{name:"punctuation.definition.decorator.python"}},end:`(?x) +( \\) ) + +(?: (.*?) (?=\\s*(?:\\#|$)) ) +| (?=\\n|\\#) +`,endCaptures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"invalid.illegal.decorator.python"}},name:"meta.function.decorator.python",patterns:[{include:"#decorator-name"},{include:"#function-arguments"}]},"decorator-name":{patterns:[{include:"#builtin-callables"},{include:"#illegal-object-name"},{captures:{2:{name:"punctuation.separator.period.python"}},match:`(?x) +([[:alpha:]_]\\w*) | (\\.) +`,name:"entity.name.function.decorator.python"},{include:"#line-continuation"},{captures:{1:{name:"invalid.illegal.decorator.python"}},match:`(?x) +\\s* ([^([:alpha:]\\s_\\.#\\\\] .*?) (?=\\#|$) +`,name:"invalid.illegal.decorator.python"}]},docstring:{patterns:[{begin:`(\\'\\'\\'|\\"\\"\\")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.python"}},end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.python"}},name:"string.quoted.docstring.multi.python",patterns:[{include:"#docstring-prompt"},{include:"#codetags"},{include:"#docstring-guts-unicode"}]},{begin:`([rR])(\\'\\'\\'|\\"\\"\\")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"}},name:"string.quoted.docstring.raw.multi.python",patterns:[{include:"#string-consume-escape"},{include:"#docstring-prompt"},{include:"#codetags"}]},{begin:`(\\'|\\")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.python"}},end:"(\\1)|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.docstring.single.python",patterns:[{include:"#codetags"},{include:"#docstring-guts-unicode"}]},{begin:`([rR])(\\'|\\")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.docstring.raw.single.python",patterns:[{include:"#string-consume-escape"},{include:"#codetags"}]}]},"docstring-guts-unicode":{patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"docstring-prompt":{captures:{1:{name:"keyword.control.flow.python"}},match:`(?x) +(?: +(?:^|\\G) \\s* (?# '\\G' is necessary for ST) +((?:>>>|\\.\\.\\.) \\s) (?=\\s*\\S) +) +`},"docstring-statement":{begin:`^(?=\\s*[rR]?(\\'\\'\\'|\\"\\"\\"|\\'|\\"))`,comment:"the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring",end:`((?<=\\1)|^)(?!\\s*[rR]?(\\'\\'\\'|\\"\\"\\"|\\'|\\"))`,patterns:[{include:"#docstring"}]},"double-one-fregexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-expression":{patterns:[{include:"#fregexp-base-expression"},{include:"#double-one-regexp-character-set"},{include:"#double-one-regexp-comments"},{include:"#regexp-flags"},{include:"#double-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-one-fregexp-lookahead"},{include:"#double-one-fregexp-lookahead-negative"},{include:"#double-one-fregexp-lookbehind"},{include:"#double-one-fregexp-lookbehind-negative"},{include:"#double-one-fregexp-conditional"},{include:"#double-one-fregexp-parentheses-non-capturing"},{include:"#double-one-fregexp-parentheses"}]},"double-one-fregexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-fregexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-fregexp-expression"}]},"double-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-one-regexp-character-set"},{include:"#double-one-regexp-comments"},{include:"#regexp-flags"},{include:"#double-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-one-regexp-lookahead"},{include:"#double-one-regexp-lookahead-negative"},{include:"#double-one-regexp-lookbehind"},{include:"#double-one-regexp-lookbehind-negative"},{include:"#double-one-regexp-conditional"},{include:"#double-one-regexp-parentheses-non-capturing"},{include:"#double-one-regexp-parentheses"}]},"double-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="))|((?=(?<!\\\\)\\n))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-one-regexp-expression"}]},"double-three-fregexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-expression":{patterns:[{include:"#fregexp-base-expression"},{include:"#double-three-regexp-character-set"},{include:"#double-three-regexp-comments"},{include:"#regexp-flags"},{include:"#double-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-three-fregexp-lookahead"},{include:"#double-three-fregexp-lookahead-negative"},{include:"#double-three-fregexp-lookbehind"},{include:"#double-three-fregexp-lookbehind-negative"},{include:"#double-three-fregexp-conditional"},{include:"#double-three-fregexp-parentheses-non-capturing"},{include:"#double-three-fregexp-parentheses"},{include:"#comments-string-double-three"}]},"double-three-fregexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-fregexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-fregexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:'(\\]|(?="""))',endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"double-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"double-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#double-three-regexp-character-set"},{include:"#double-three-regexp-comments"},{include:"#regexp-flags"},{include:"#double-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#double-three-regexp-lookahead"},{include:"#double-three-regexp-lookahead-negative"},{include:"#double-three-regexp-lookbehind"},{include:"#double-three-regexp-lookbehind-negative"},{include:"#double-three-regexp-conditional"},{include:"#double-three-regexp-parentheses-non-capturing"},{include:"#double-three-regexp-parentheses"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},"double-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:'(\\)|(?="""))',endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#double-three-regexp-expression"},{include:"#comments-string-double-three"}]},ellipsis:{match:"\\.\\.\\.",name:"constant.other.ellipsis.python"},"escape-sequence":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| [0-7]{1,3} +| [\\\\"'abfnrtv] +) +`,name:"constant.character.escape.python"},"escape-sequence-unicode":{patterns:[{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +| N\\{[\\w\\s]+?\\} +) +`,name:"constant.character.escape.python"}]},expression:{comment:"All valid Python expressions",patterns:[{include:"#expression-base"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"expression-bare":{comment:"valid Python expressions w/o comments and line continuation",patterns:[{include:"#backticks"},{include:"#illegal-anno"},{include:"#literal"},{include:"#regexp"},{include:"#string"},{include:"#lambda"},{include:"#generator"},{include:"#illegal-operator"},{include:"#operator"},{include:"#curly-braces"},{include:"#item-access"},{include:"#list"},{include:"#odd-function-call"},{include:"#round-braces"},{include:"#function-call"},{include:"#builtin-functions"},{include:"#builtin-types"},{include:"#builtin-exceptions"},{include:"#magic-names"},{include:"#special-names"},{include:"#illegal-names"},{include:"#special-variables"},{include:"#ellipsis"},{include:"#punctuation"},{include:"#line-continuation"},{include:"#special-variables-types"}]},"expression-base":{comment:"valid Python expressions with comments and line continuation",patterns:[{include:"#comments"},{include:"#expression-bare"},{include:"#line-continuation"}]},"f-expression":{comment:"All valid Python expressions, except comments and line continuation",patterns:[{include:"#expression-bare"},{include:"#member-access"},{comment:"Tokenize identifiers to help linters",match:"(?x) \\b ([[:alpha:]_]\\w*) \\b"}]},"fregexp-base-expression":{patterns:[{include:"#fregexp-quantifier"},{include:"#fstring-formatting-braces"},{match:"\\{.*?\\}"},{include:"#regexp-base-common"}]},"fregexp-double-one-line":{begin:'\\b(([uU]r)|([fF]r)|(r[fF]?))(")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(")|(?<!\\\\)(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.interpolated.python string.regexp.quoted.single.python",patterns:[{include:"#double-one-fregexp-expression"}]},"fregexp-double-three-line":{begin:'\\b(([uU]r)|([fF]r)|(r[fF]?))(""")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.interpolated.python string.regexp.quoted.multi.python",patterns:[{include:"#double-three-fregexp-expression"}]},"fregexp-quantifier":{match:`(?x) +\\{\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\}\\} +`,name:"keyword.operator.quantifier.regexp"},"fregexp-single-one-line":{begin:"\\b(([uU]r)|([fF]r)|(r[fF]?))(\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\')|(?<!\\\\)(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.interpolated.python string.regexp.quoted.single.python",patterns:[{include:"#single-one-fregexp-expression"}]},"fregexp-single-three-line":{begin:"\\b(([uU]r)|([fF]r)|(r[fF]?))(\\'\\'\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\'\\'\\')",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.interpolated.python string.regexp.quoted.multi.python",patterns:[{include:"#single-three-fregexp-expression"}]},"fstring-fnorm-quoted-multi-line":{begin:`(\\b[fF])([bBuU])?('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-fnorm-quoted-single-line":{begin:`(\\b[fF])([bBuU])?((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},2:{name:"invalid.illegal.prefix.python"},3:{name:"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-formatting":{patterns:[{include:"#fstring-formatting-braces"},{include:"#fstring-formatting-singe-brace"}]},"fstring-formatting-braces":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},2:{name:"invalid.illegal.brace.python"},3:{name:"constant.character.format.placeholder.other.python"}},comment:"empty braces are illegal",match:"({)(\\s*?)(})"},{match:"({{|}})",name:"constant.character.escape.python"}]},"fstring-formatting-singe-brace":{match:"(}(?!}))",name:"invalid.illegal.brace.python"},"fstring-guts":{patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#fstring-formatting"}]},"fstring-illegal-multi-brace":{patterns:[{include:"#impossible"}]},"fstring-illegal-single-brace":{begin:"(\\{)(?=[^\\n}]*$\\n?)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"it is illegal to have a multiline brace inside a single-line string",end:"(\\})|(?=\\n)",endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-multi-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\}) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-multi"},{include:"#f-expression"}]},"fstring-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.multi.python"},"fstring-normf-quoted-multi-line":{begin:`(\\b[bBuU])([fF])('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.multi.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.multi.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-multi-core"}]},"fstring-normf-quoted-single-line":{begin:`(\\b[bBuU])([fF])((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"string.interpolated.python string.quoted.single.python storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python string.quoted.single.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-single-core"}]},"fstring-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#fstring-formatting"}]},"fstring-raw-multi-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|'''|""") +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.multi.python"},"fstring-raw-quoted-multi-line":{begin:`(\\b(?:[R][fF]|[fF][R]))('''|""")`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.multi.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{include:"#fstring-raw-multi-core"}]},"fstring-raw-quoted-single-line":{begin:`(\\b(?:[R][fF]|[fF][R]))((['"]))`,beginCaptures:{1:{name:"string.interpolated.python string.quoted.raw.single.python storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python string.quoted.raw.single.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"},2:{name:"invalid.illegal.newline.python"}},name:"meta.fstring.python",patterns:[{include:"#fstring-raw-guts"},{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{include:"#fstring-raw-single-core"}]},"fstring-raw-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.raw.single.python"},"fstring-single-brace":{begin:"(\\{)",beginCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},comment:"value interpolation using { ... }",end:`(?x) +(\\})|(?=\\n) +`,endCaptures:{1:{name:"constant.character.format.placeholder.other.python"}},patterns:[{include:"#fstring-terminator-single"},{include:"#f-expression"}]},"fstring-single-core":{match:`(?x) +(.+?) +( +(?# .* and .*? in multi-line match need special handling of +newlines otherwise SublimeText and Atom will match slightly +differently. + +The guard for newlines has to be separate from the +lookahead because of special $ matching rule.) +($\\n?) +| +(?=[\\\\\\}\\{]|(['"])|((?<!\\\\)\\n)) +) +(?# due to how multiline regexps are matched we need a special case +for matching a newline character) +| \\n +`,name:"string.interpolated.python string.quoted.single.python"},"fstring-terminator-multi":{patterns:[{match:"(![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +(![rsa])? +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-multi-tail"}]},"fstring-terminator-multi-tail":{begin:"(![rsa])?(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})",patterns:[{include:"#fstring-illegal-multi-brace"},{include:"#fstring-multi-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"fstring-terminator-single":{patterns:[{match:"(![rsa])(?=})",name:"storage.type.format.python"},{captures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},match:`(?x) +(![rsa])? +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=}) +`},{include:"#fstring-terminator-single-tail"}]},"fstring-terminator-single-tail":{begin:"(![rsa])?(:)(?=.*?{)",beginCaptures:{1:{name:"storage.type.format.python"},2:{name:"storage.type.format.python"}},end:"(?=})|(?=\\n)",patterns:[{include:"#fstring-illegal-single-brace"},{include:"#fstring-single-brace"},{match:"([bcdeEfFgGnosxX%])(?=})",name:"storage.type.format.python"},{match:"(\\.\\d+)",name:"storage.type.format.python"},{match:"(,)",name:"storage.type.format.python"},{match:"(\\d+)",name:"storage.type.format.python"},{match:"(\\#)",name:"storage.type.format.python"},{match:"([-+ ])",name:"storage.type.format.python"},{match:"([<>=^])",name:"storage.type.format.python"},{match:"(\\w)",name:"storage.type.format.python"}]},"function-arguments":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.function-call.arguments.python",end:"(?=\\))(?!\\)\\s*\\()",patterns:[{match:"(,)",name:"punctuation.separator.arguments.python"},{captures:{1:{name:"keyword.operator.unpacking.arguments.python"}},match:`(?x) +(?:(?<=[,(])|^) \\s* (\\*{1,2}) +`},{include:"#lambda-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function-call.python"},2:{name:"keyword.operator.assignment.python"}},match:"\\b([[:alpha:]_]\\w*)\\s*(=)(?!=)"},{match:"=(?!=)",name:"keyword.operator.assignment.python"},{include:"#expression"},{captures:{1:{name:"punctuation.definition.arguments.end.python"},2:{name:"punctuation.definition.arguments.begin.python"}},match:"\\s*(\\))\\s*(\\()"}]},"function-call":{begin:`(?x) +\\b(?= +([[:alpha:]_]\\w*) \\s* (\\() +) +`,comment:'Regular function call of the type "name(args)"',end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.function-call.python",patterns:[{include:"#special-variables"},{include:"#function-name"},{include:"#function-arguments"}]},"function-declaration":{begin:`(?x) +\\s* +(?:\\b(async) \\s+)? \\b(def)\\s+ +(?= +[[:alpha:]_][[:word:]]* \\s* \\( +) +`,beginCaptures:{1:{name:"storage.type.function.async.python"},2:{name:"storage.type.function.python"}},end:`(:|(?=[#'"\\n]))`,endCaptures:{1:{name:"punctuation.section.function.begin.python"}},name:"meta.function.python",patterns:[{include:"#function-def-name"},{include:"#parameters"},{include:"#line-continuation"},{include:"#return-annotation"}]},"function-def-name":{patterns:[{match:`(?x) +\\b (__default__) \\b +`,name:"entity.name.function.fallback.vyper"},{match:`(?x) +\\b (__init__) \\b +`,name:"entity.name.function.constructor.vyper"},{include:"#illegal-object-name"},{include:"#builtin-possible-callables"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"entity.name.function.python"}]},"function-name":{patterns:[{include:"#builtin-possible-callables"},{comment:"Some color schemas support meta.function-call.generic scope",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.function-call.generic.python"}]},generator:{begin:"\\bfor\\b",beginCaptures:{0:{name:"keyword.control.flow.python"}},comment:`Match "for ... in" construct used in generators and for loops to +correctly identify the "in" as a control flow keyword. +`,end:"\\bin\\b",endCaptures:{0:{name:"keyword.control.flow.python"}},patterns:[{include:"#expression"}]},"illegal-anno":{match:"->",name:"invalid.illegal.annotation.python"},"illegal-names":{captures:{1:{name:"keyword.control.flow.python"},2:{name:"keyword.control.import.python"}},match:`(?x) +\\b(?: +( +and | assert | async | await | break | class | continue | def +| del | elif | else | except | finally | for | from | global +| if | in | is | (?<=\\.)lambda | lambda(?=\\s*[\\.=]) +| nonlocal | not | or | pass | raise | return | try | while | with +| yield +) | ( +as | import +) +)\\b +`},"illegal-object-name":{comment:`It's illegal to name class or function "True"`,match:"\\b(True|False|None)\\b",name:"keyword.illegal.name.python"},"illegal-operator":{patterns:[{match:"&&|\\|\\||--|\\+\\+",name:"invalid.illegal.operator.python"},{match:"[?$]",name:"invalid.illegal.operator.python"},{comment:"We don't want `!` to flash when we're typing `!=`",match:"!\\b",name:"invalid.illegal.operator.python"}]},import:{comment:"Import statements used to correctly mark `from`, `import`, and `as`\n",patterns:[{begin:"\\b(?<!\\.)(from)\\b(?=.+import)",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$|(?=import)",patterns:[{match:"\\.+",name:"punctuation.separator.period.python"},{include:"#expression"}]},{begin:"\\b(?<!\\.)(import)\\b",beginCaptures:{1:{name:"keyword.control.import.python"}},end:"$",patterns:[{match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{include:"#expression"}]}]},impossible:{comment:"This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.",match:"$.^"},"inheritance-identifier":{captures:{1:{name:"entity.other.inherited-class.python"}},match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`},"inheritance-name":{patterns:[{include:"#lambda-incomplete"},{include:"#builtin-possible-callables"},{include:"#inheritance-identifier"}]},"item-access":{patterns:[{begin:`(?x) +\\b(?= +[[:alpha:]_]\\w* \\s* \\[ +) +`,end:"(\\])",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},name:"meta.item-access.python",patterns:[{include:"#item-name"},{include:"#item-index"},{include:"#expression"}]}]},"item-index":{begin:"(\\[)",beginCaptures:{1:{name:"punctuation.definition.arguments.begin.python"}},contentName:"meta.item-access.arguments.python",end:"(?=\\])",patterns:[{match:":",name:"punctuation.separator.slice.python"},{include:"#expression"}]},"item-name":{patterns:[{include:"#special-variables"},{include:"#builtin-functions"},{include:"#special-names"},{match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.indexed-name.python"},{include:"#special-variables-types"}]},lambda:{patterns:[{captures:{1:{name:"keyword.control.flow.python"}},match:"((?<=\\.)lambda|lambda(?=\\s*[\\.=]))"},{captures:{1:{name:"storage.type.function.lambda.python"}},match:"\\b(lambda)\\s*?(?=[,\\n]|$)"},{begin:`(?x) +\\b (lambda) \\b +`,beginCaptures:{1:{name:"storage.type.function.lambda.python"}},contentName:"meta.function.lambda.parameters.python",end:"(:)|(\\n)",endCaptures:{1:{name:"punctuation.section.function.lambda.begin.python"}},name:"meta.lambda-function.python",patterns:[{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-nested-incomplete"},{include:"#illegal-names"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:"([[:alpha:]_]\\w*)\\s*(?:(,)|(?=:|$))"},{include:"#comments"},{include:"#backticks"},{include:"#illegal-anno"},{include:"#lambda-parameter-with-default"},{include:"#line-continuation"},{include:"#illegal-operator"}]}]},"lambda-incomplete":{match:"\\blambda(?=\\s*[,)])",name:"storage.type.function.lambda.python"},"lambda-nested-incomplete":{match:"\\blambda(?=\\s*[:,)])",name:"storage.type.function.lambda.python"},"lambda-parameter-with-default":{begin:`(?x) +\\b +([[:alpha:]_]\\w*) \\s* (=) +`,beginCaptures:{1:{name:"variable.parameter.function.language.python"},2:{name:"keyword.operator.python"}},end:"(,)|(?=:|$)",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"line-continuation":{patterns:[{captures:{1:{name:"punctuation.separator.continuation.line.python"},2:{name:"invalid.illegal.line.continuation.python"}},match:"(\\\\)\\s*(\\S.*$\\n?)"},{begin:"(\\\\)\\s*$\\n?",beginCaptures:{1:{name:"punctuation.separator.continuation.line.python"}},end:`(?x) +(?=^\\s*$) +| +(?! (\\s* [rR]? (\\'\\'\\'|\\"\\"\\"|\\'|\\")) +| +(\\G $) (?# '\\G' is necessary for ST) +) +`,patterns:[{include:"#regexp"},{include:"#string"}]}]},list:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.list.begin.python"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.list.end.python"}},patterns:[{include:"#expression"}]},literal:{patterns:[{match:"\\b(True|False|None|NotImplemented|Ellipsis)\\b",name:"constant.language.python"},{include:"#number"}]},"loose-default":{begin:"(=)",beginCaptures:{1:{name:"keyword.operator.python"}},end:"(,)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.parameters.python"}},patterns:[{include:"#expression"}]},"magic-function-names":{captures:{1:{name:"support.function.magic.python"}},comment:`these methods have magic interpretation by python and are generally called +indirectly through syntactic constructs +`,match:`(?x) +\\b( +__(?: +abs | add | aenter | aexit | aiter | and | anext | await +| bool | call | ceil | cmp | coerce | complex | contains +| copy | deepcopy | del | delattr | delete | delitem +| delslice | dir | div | divmod | enter | eq | exit | float +| floor | floordiv | format | ge | get | getattr +| getattribute | getinitargs | getitem | getnewargs +| getslice | getstate | gt | hash | hex | iadd | iand | idiv +| ifloordiv | ilshift | imod | imul | index | init +| instancecheck | int | invert | ior | ipow | irshift | isub +| iter | itruediv | ixor | le | len | long | lshift | lt +| missing | mod | mul | ne | neg | new | next | nonzero | oct | or +| pos | pow | radd | rand | rdiv | rdivmod | reduce +| reduce_ex | repr | reversed | rfloordiv | rlshift | rmod +| rmul | ror | round | rpow | rrshift | rshift | rsub +| rtruediv | rxor | set | setattr | setitem | setslice +| setstate | sizeof | str | sub | subclasscheck | truediv +| trunc | unicode | xor | matmul | rmatmul | imatmul +| init_subclass | set_name | fspath | bytes | prepare +)__ +)\\b +`},"magic-names":{patterns:[{include:"#magic-function-names"},{include:"#magic-variable-names"}]},"magic-variable-names":{captures:{1:{name:"support.variable.magic.python"}},comment:"magic variables which a class/module may have.",match:`(?x) +\\b( +__(?: +all | bases | builtins | class | class_getitem | code | debug +| defaults | dict | doc | file | func | kwdefaults | members +| metaclass | methods | module | mro | mro_entries | name +| qualname | post_init | self | signature | slots | subclasses +| version | weakref | wrapped | annotations | classcell +| spec | path | package | future | traceback +)__ +)\\b +`},"member-access":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:`(?x) + + +(?<=\\S)(?=\\W) | + + +(^|(?<=\\s))(?=[^\\\\\\w\\s]) | +$ +`,name:"meta.member.access.python",patterns:[{include:"#function-call"},{include:"#member-access-base"},{include:"#member-access-attribute"}]},"member-access-attribute":{comment:"Highlight attribute access in otherwise non-specialized cases.",match:`(?x) +\\b ([[:alpha:]_]\\w*) \\b +`,name:"meta.attribute.python"},"member-access-base":{patterns:[{include:"#magic-names"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#special-names"},{include:"#line-continuation"},{include:"#item-access"},{include:"#special-variables-types"}]},"member-access-class":{begin:"(\\.)\\s*(?!\\.)",beginCaptures:{1:{name:"punctuation.separator.period.python"}},end:"(?<=\\S)(?=\\W)|$",name:"meta.member.access.python",patterns:[{include:"#call-wrapper-inheritance"},{include:"#member-access-base"},{include:"#inheritance-identifier"}]},number:{name:"constant.numeric.python",patterns:[{include:"#number-float"},{include:"#number-dec"},{include:"#number-hex"},{include:"#number-oct"},{include:"#number-bin"},{include:"#number-long"},{match:"\\b[0-9]+\\w+",name:"invalid.illegal.name.python"}]},"number-bin":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[bB]) (_?[01])+ +\\b +`,name:"constant.numeric.bin.python"},"number-dec":{captures:{1:{name:"storage.type.imaginary.number.python"},2:{name:"invalid.illegal.dec.python"}},match:`(?x) +(?<![\\w\\.])(?: +[1-9](?: _?[0-9] )* +| +0+ +| +[0-9](?: _?[0-9] )* ([jJ]) +| +0 ([0-9]+)(?![eE\\.]) +)\\b +`,name:"constant.numeric.dec.python"},"number-float":{captures:{1:{name:"storage.type.imaginary.number.python"}},match:`(?x) +(?<! \\w)(?: +(?: +\\.[0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )* +| +[0-9](?: _?[0-9] )* \\. +) (?: [eE][+-]?[0-9](?: _?[0-9] )* )? +| +[0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* ) +)([jJ])?\\b +`,name:"constant.numeric.float.python"},"number-hex":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[xX]) (_?[0-9a-fA-F])+ +\\b +`,name:"constant.numeric.hex.python"},"number-long":{captures:{2:{name:"storage.type.number.python"}},comment:"this is to support python2 syntax for long ints",match:`(?x) +(?<![\\w\\.]) +([1-9][0-9]* | 0) ([lL]) +\\b +`,name:"constant.numeric.bin.python"},"number-oct":{captures:{1:{name:"storage.type.number.python"}},match:`(?x) +(?<![\\w\\.]) +(0[oO]) (_?[0-7])+ +\\b +`,name:"constant.numeric.oct.python"},"odd-function-call":{begin:`(?x) +(?<= \\] | \\) ) \\s* +(?=\\() +`,comment:`A bit obscured function call where there may have been an +arbitrary number of other operations to get the function. +E.g. "arr[idx](args)" +`,end:"(\\))",endCaptures:{1:{name:"punctuation.definition.arguments.end.python"}},patterns:[{include:"#function-arguments"}]},operator:{captures:{1:{name:"keyword.operator.logical.python"},2:{name:"keyword.control.flow.python"},3:{name:"keyword.operator.bitwise.python"},4:{name:"keyword.operator.arithmetic.python"},5:{name:"keyword.operator.comparison.python"}},match:`(?x) +\\b(?<!\\.) +(?: +(and | or | not | in | is) (?# 1) +| +(for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2) +) +(?!\\s*:)\\b + +| (<< | >> | & | \\| | \\^ | ~) (?# 3) + +| (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4) + +| (!= | == | >= | <= | < | >) (?# 5) +`},"parameter-special":{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"variable.parameter.function.language.special.self.python"},3:{name:"variable.parameter.function.language.special.cls.python"},4:{name:"punctuation.separator.parameters.python"}},match:`(?x) +\\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\))) +`},parameters:{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.parameters.begin.python"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.parameters.end.python"}},name:"meta.function.parameters.python",patterns:[{match:"(\\*\\*|\\*)",name:"keyword.operator.unpacking.parameter.python"},{include:"#lambda-incomplete"},{include:"#illegal-names"},{include:"#illegal-object-name"},{include:"#parameter-special"},{captures:{1:{name:"variable.parameter.function.language.python"},2:{name:"punctuation.separator.parameters.python"}},match:`(?x) +([[:alpha:]_]\\w*) +\\s* (?: (,) | (?=[)#\\n=])) +`},{include:"#comments"},{include:"#loose-default"},{include:"#annotated-parameter"}]},punctuation:{patterns:[{match:":",name:"punctuation.separator.colon.python"},{match:",",name:"punctuation.separator.element.python"}]},regexp:{patterns:[{include:"#regexp-single-three-line"},{include:"#regexp-double-three-line"},{include:"#regexp-single-one-line"},{include:"#regexp-double-one-line"},{include:"#fregexp-single-three-line"},{include:"#fregexp-double-three-line"},{include:"#fregexp-single-one-line"},{include:"#fregexp-double-one-line"}]},"regexp-backreference":{captures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"},2:{name:"entity.name.tag.named.backreference.regexp"},3:{name:"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"}},match:`(?x) +(\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\)) +`,name:"meta.backreference.named.regexp"},"regexp-backreference-number":{captures:{1:{name:"entity.name.tag.backreference.regexp"}},match:"(\\\\[1-9]\\d?)",name:"meta.backreference.regexp"},"regexp-base-common":{patterns:[{match:"\\.",name:"support.other.match.any.regexp"},{match:"\\^",name:"support.other.match.begin.regexp"},{match:"\\$",name:"support.other.match.end.regexp"},{match:"[+*?]\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.disjunction.regexp"},{include:"#regexp-escape-sequence"}]},"regexp-base-expression":{patterns:[{include:"#regexp-quantifier"},{include:"#regexp-base-common"}]},"regexp-charecter-set-escapes":{patterns:[{match:"\\\\[abfnrtv\\\\]",name:"constant.character.escape.regexp"},{include:"#regexp-escape-special"},{match:"\\\\([0-7]{1,3})",name:"constant.character.escape.regexp"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-escape-catchall"}]},"regexp-double-one-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(")|(?<!\\\\)(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#double-one-regexp-expression"}]},"regexp-double-three-line":{begin:'\\b(([uU]r)|([bB]r)|(r[bB]?))(""")',beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:'(""")',endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#double-three-regexp-expression"}]},"regexp-escape-catchall":{match:"\\\\(.|\\n)",name:"constant.character.escape.regexp"},"regexp-escape-character":{match:`(?x) +\\\\ ( +x[0-9A-Fa-f]{2} +| 0[0-7]{1,2} +| [0-7]{3} +) +`,name:"constant.character.escape.regexp"},"regexp-escape-sequence":{patterns:[{include:"#regexp-escape-special"},{include:"#regexp-escape-character"},{include:"#regexp-escape-unicode"},{include:"#regexp-backreference-number"},{include:"#regexp-escape-catchall"}]},"regexp-escape-special":{match:"\\\\([AbBdDsSwWZ])",name:"support.other.escape.special.regexp"},"regexp-escape-unicode":{match:`(?x) +\\\\ ( +u[0-9A-Fa-f]{4} +| U[0-9A-Fa-f]{8} +) +`,name:"constant.character.unicode.regexp"},"regexp-flags":{match:"\\(\\?[aiLmsux]+\\)",name:"storage.modifier.flag.regexp"},"regexp-quantifier":{match:`(?x) +\\{( +\\d+ | \\d+,(\\d+)? | ,\\d+ +)\\} +`,name:"keyword.operator.quantifier.regexp"},"regexp-single-one-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\')|(?<!\\\\)(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.single.python",patterns:[{include:"#single-one-regexp-expression"}]},"regexp-single-three-line":{begin:"\\b(([uU]r)|([bB]r)|(r[bB]?))(\\'\\'\\')",beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"storage.type.string.python"},5:{name:"punctuation.definition.string.begin.python"}},end:"(\\'\\'\\')",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.regexp.quoted.multi.python",patterns:[{include:"#single-three-regexp-expression"}]},"reserved-names-vyper":{match:`(?x) +\\b (finney | gwei | range | def | ____init____ | timedelta | babbage | zero_address | raise | external | empty_bytes32 | assert | continue | wei | ada | min_int256 | min_int128 | chainid | max_decimal | default | indexed | selfdestruct | lovelace | immutable | throw | kwei | max_int128 | while | constant | ___default___ | balance | twei | codesize | false | max_int256 | _default_ | init | mwei | if | ____default____ | true | payable | internal | until | this | nonpayable | pass | public | nonreentrant | blockhash | max_uint256 | shannon | none | units | _init_ | ___init___ | is_contract | for | zero_wei | min_decimal | szabo | timestamp | ether | pwei | send) \\b +`,name:"name.reserved.vyper"},"return-annotation":{begin:"(->)",beginCaptures:{1:{name:"punctuation.separator.annotation.result.python"}},end:"(?=:)",patterns:[{include:"#expression"}]},"round-braces":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.begin.python"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.end.python"}},patterns:[{include:"#expression"}]},semicolon:{patterns:[{match:"\\;$",name:"invalid.deprecated.semicolon.python"}]},"single-one-fregexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-expression":{patterns:[{include:"#fregexp-base-expression"},{include:"#single-one-regexp-character-set"},{include:"#single-one-regexp-comments"},{include:"#regexp-flags"},{include:"#single-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-one-fregexp-lookahead"},{include:"#single-one-fregexp-lookahead-negative"},{include:"#single-one-fregexp-lookbehind"},{include:"#single-one-fregexp-lookbehind-negative"},{include:"#single-one-fregexp-conditional"},{include:"#single-one-fregexp-parentheses-non-capturing"},{include:"#single-one-fregexp-parentheses"}]},"single-one-fregexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-fregexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-fregexp-expression"}]},"single-one-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-one-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-one-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-one-regexp-character-set"},{include:"#single-one-regexp-comments"},{include:"#regexp-flags"},{include:"#single-one-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-one-regexp-lookahead"},{include:"#single-one-regexp-lookahead-negative"},{include:"#single-one-regexp-lookbehind"},{include:"#single-one-regexp-lookbehind-negative"},{include:"#single-one-regexp-conditional"},{include:"#single-one-regexp-parentheses-non-capturing"},{include:"#single-one-regexp-parentheses"}]},"single-one-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-one-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-one-regexp-expression"}]},"single-three-fregexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-expression":{patterns:[{include:"#fregexp-base-expression"},{include:"#single-three-regexp-character-set"},{include:"#single-three-regexp-comments"},{include:"#regexp-flags"},{include:"#single-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-three-fregexp-lookahead"},{include:"#single-three-fregexp-lookahead-negative"},{include:"#single-three-fregexp-lookbehind"},{include:"#single-three-fregexp-lookbehind-negative"},{include:"#single-three-fregexp-conditional"},{include:"#single-three-fregexp-parentheses-non-capturing"},{include:"#single-three-fregexp-parentheses"},{include:"#comments-string-single-three"}]},"single-three-fregexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-fregexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-fregexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-character-set":{patterns:[{match:`(?x) +\\[ \\^? \\] (?! .*?\\]) +`},{begin:"(\\[)(\\^)?(\\])?",beginCaptures:{1:{name:"punctuation.character.set.begin.regexp constant.other.set.regexp"},2:{name:"keyword.operator.negation.regexp"},3:{name:"constant.character.set.regexp"}},end:"(\\]|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.character.set.end.regexp constant.other.set.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.character.set.regexp",patterns:[{include:"#regexp-charecter-set-escapes"},{match:"[^\\n]",name:"constant.character.set.regexp"}]}]},"single-three-regexp-comments":{begin:"\\(\\?#",beginCaptures:{0:{name:"punctuation.comment.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"punctuation.comment.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"comment.regexp",patterns:[{include:"#codetags"}]},"single-three-regexp-conditional":{begin:"(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",beginCaptures:{0:{name:"keyword.operator.conditional.regexp"},1:{name:"punctuation.parenthesis.conditional.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-expression":{patterns:[{include:"#regexp-base-expression"},{include:"#single-three-regexp-character-set"},{include:"#single-three-regexp-comments"},{include:"#regexp-flags"},{include:"#single-three-regexp-named-group"},{include:"#regexp-backreference"},{include:"#single-three-regexp-lookahead"},{include:"#single-three-regexp-lookahead-negative"},{include:"#single-three-regexp-lookbehind"},{include:"#single-three-regexp-lookbehind-negative"},{include:"#single-three-regexp-conditional"},{include:"#single-three-regexp-parentheses-non-capturing"},{include:"#single-three-regexp-parentheses"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead":{begin:"(\\()\\?=",beginCaptures:{0:{name:"keyword.operator.lookahead.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookahead-negative":{begin:"(\\()\\?!",beginCaptures:{0:{name:"keyword.operator.lookahead.negative.regexp"},1:{name:"punctuation.parenthesis.lookahead.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind":{begin:"(\\()\\?<=",beginCaptures:{0:{name:"keyword.operator.lookbehind.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-lookbehind-negative":{begin:"(\\()\\?<!",beginCaptures:{0:{name:"keyword.operator.lookbehind.negative.regexp"},1:{name:"punctuation.parenthesis.lookbehind.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-named-group":{begin:`(?x) +(\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>) +`,beginCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},2:{name:"entity.name.tag.named.group.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},2:{name:"invalid.illegal.newline.python"}},name:"meta.named.regexp",patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses":{begin:"\\(",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"single-three-regexp-parentheses-non-capturing":{begin:"\\(\\?:",beginCaptures:{0:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},end:"(\\)|(?=\\'\\'\\'))",endCaptures:{1:{name:"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},2:{name:"invalid.illegal.newline.python"}},patterns:[{include:"#single-three-regexp-expression"},{include:"#comments-string-single-three"}]},"special-names":{match:`(?x) +\\b + + + + + +( +_* [[:upper:]] [_\\d]* [[:upper:]] +) +[[:upper:]\\d]* (_\\w*)? +\\b +`,name:"constant.other.caps.python"},"special-variables":{captures:{1:{name:"variable.language.special.self.python"},2:{name:"variable.language.special.cls.python"}},match:`(?x) +\\b (?<!\\.) (?: +(self) | (cls) +)\\b +`},"special-variables-types":{patterns:[{match:`(?x) +(?<!\\.) \\b( +log )\\b +`,name:"variable.language.special.log.vyper"},{match:`(?x) +(?<!\\.) \\b( +msg )\\b +`,name:"variable.language.special.msg.vyper"},{match:`(?x) +(?<!\\.) \\b( +block )\\b +`,name:"variable.language.special.block.vyper"}]},statement:{patterns:[{include:"#import"},{include:"#class-declaration"},{include:"#function-declaration"},{include:"#generator"},{include:"#statement-keyword"},{include:"#assignment-operator"},{include:"#decorator"},{include:"#docstring-statement"},{include:"#semicolon"}]},"statement-keyword":{patterns:[{match:"\\b((async\\s+)?\\s*def)\\b",name:"storage.type.function.python"},{comment:`if \`as\` is eventually followed by \`:\` or line continuation +it's probably control flow like: + with foo as bar, \\ + Foo as Bar: + try: + do_stuff() + except Exception as e: + pass +`,match:"\\b(?<!\\.)as\\b(?=.*[:\\\\])",name:"keyword.control.flow.python"},{comment:"other legal use of `as` is in an import",match:"\\b(?<!\\.)as\\b",name:"keyword.control.import.python"},{match:`(?x) +\\b(?<!\\.)( +async | continue | del | assert | break | finally | for +| from | elif | else | if | except | pass | raise +| return | try | while | with +)\\b +`,name:"keyword.control.flow.python"},{match:`(?x) +\\b(?<!\\.)( +global | nonlocal +)\\b +`,name:"storage.modifier.declaration.python"},{match:"\\b(?<!\\.)(class)\\b",name:"storage.type.class.python"}]},string:{patterns:[{include:"#string-quoted-multi-line"},{include:"#string-quoted-single-line"},{include:"#string-bin-quoted-multi-line"},{include:"#string-bin-quoted-single-line"},{include:"#string-raw-quoted-multi-line"},{include:"#string-raw-quoted-single-line"},{include:"#string-raw-bin-quoted-multi-line"},{include:"#string-raw-bin-quoted-single-line"},{include:"#fstring-fnorm-quoted-multi-line"},{include:"#fstring-fnorm-quoted-single-line"},{include:"#fstring-normf-quoted-multi-line"},{include:"#fstring-normf-quoted-single-line"},{include:"#fstring-raw-quoted-multi-line"},{include:"#fstring-raw-quoted-single-line"}]},"string-bin-quoted-multi-line":{begin:`(\\b[bB])('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.multi.python",patterns:[{include:"#string-entity"}]},"string-bin-quoted-single-line":{begin:`(\\b[bB])((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.binary.single.python",patterns:[{include:"#string-entity"}]},"string-brace-formatting":{patterns:[{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{{ | }} +| (?: +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +( : \\w? [<>=^]? [-+ ]? \\#? +\\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )? +}) +) +`,name:"meta.format.brace.python"},{captures:{1:{name:"constant.character.format.placeholder.other.python"},3:{name:"storage.type.format.python"},4:{name:"storage.type.format.python"}},match:`(?x) +( +{ +\\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'"]+\\])* +(![rsa])? +(:) +[^'"{}\\n]* (?: +\\{ [^'"}\\n]*? \\} [^'"{}\\n]* +)* +} +) +`,name:"meta.format.brace.python"}]},"string-consume-escape":{match:`\\\\['"\\n\\\\]`},"string-entity":{patterns:[{include:"#escape-sequence"},{include:"#string-line-continuation"},{include:"#string-formatting"}]},"string-formatting":{captures:{1:{name:"constant.character.format.placeholder.other.python"}},match:`(?x) +( +% (\\([\\w\\s]*\\))? +[-+#0 ]* +(\\d+|\\*)? (\\.(\\d+|\\*))? +([hlL])? +[diouxXeEfFgGcrsab%] +) +`,name:"meta.format.percent.python"},"string-line-continuation":{match:"\\\\$",name:"constant.language.python"},"string-multi-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"}]},"string-multi-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!'''|""") ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-multi-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-multi-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!'''|""") [^!:\\.\\[}\\w] +) +.*?(?!'''|""") +\\} +) +`,comment:"odd format or format-like syntax",end:`(?='''|""")`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-quoted-multi-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?('''|""")`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-unicode"},{include:"#string-multi-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-quoted-single-line":{begin:`(?:\\b([rR])(?=[uU]))?([uU])?((['"]))`,beginCaptures:{1:{name:"invalid.illegal.prefix.python"},2:{name:"storage.type.string.python"},3:{name:"punctuation.definition.string.begin.python"}},end:"(\\3)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-unicode"},{include:"#string-single-bad-brace2-formatting-unicode"},{include:"#string-unicode-guts"}]},"string-raw-bin-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-raw-bin-quoted-multi-line":{begin:`(\\b(?:R[bB]|[bB]R))('''|""")`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.multi.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-bin-quoted-single-line":{begin:`(\\b(?:R[bB]|[bB]R))((['"]))`,beginCaptures:{1:{name:"storage.type.string.python"},2:{name:"punctuation.definition.string.begin.python"}},end:"(\\2)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.binary.single.python",patterns:[{include:"#string-raw-bin-guts"}]},"string-raw-guts":{patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"},{include:"#string-brace-formatting"}]},"string-raw-quoted-multi-line":{begin:`\\b(([uU]R)|(R))('''|""")`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.multi.python",patterns:[{include:"#string-multi-bad-brace1-formatting-raw"},{include:"#string-multi-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-raw-quoted-single-line":{begin:`\\b(([uU]R)|(R))((['"]))`,beginCaptures:{2:{name:"invalid.deprecated.prefix.python"},3:{name:"storage.type.string.python"},4:{name:"punctuation.definition.string.begin.python"}},end:"(\\4)|((?<!\\\\)\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.python"},2:{name:"invalid.illegal.newline.python"}},name:"string.quoted.raw.single.python",patterns:[{include:"#string-single-bad-brace1-formatting-raw"},{include:"#string-single-bad-brace2-formatting-raw"},{include:"#string-raw-guts"}]},"string-single-bad-brace1-formatting-raw":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"}]},"string-single-bad-brace1-formatting-unicode":{begin:`(?x) +(?= \\{% +( .*? (?!(['"])|((?<!\\\\)\\n)) ) +%\\} +) +`,comment:"template using {% ... %}",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#escape-sequence"},{include:"#string-line-continuation"}]},"string-single-bad-brace2-formatting-raw":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#string-consume-escape"},{include:"#string-formatting"}]},"string-single-bad-brace2-formatting-unicode":{begin:`(?x) +(?!\\{\\{) +(?= \\{ ( +\\w*? (?!(['"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w] +) +.*?(?!(['"])|((?<!\\\\)\\n)) +\\} +) +`,comment:"odd format or format-like syntax",end:`(?=(['"])|((?<!\\\\)\\n))`,patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"}]},"string-unicode-guts":{patterns:[{include:"#escape-sequence-unicode"},{include:"#string-entity"},{include:"#string-brace-formatting"}]}},scopeName:"source.vyper",aliases:["vy"]});var n=[e];export{n as default}; diff --git a/assets/chunks/wasm.Cicx_DS6.js b/assets/chunks/wasm.Cicx_DS6.js new file mode 100644 index 000000000..f2a84858b --- /dev/null +++ b/assets/chunks/wasm.Cicx_DS6.js @@ -0,0 +1 @@ +const t=Object.freeze({displayName:"WebAssembly",name:"wasm",patterns:[{include:"#comments"},{include:"#strings"},{include:"#instructions"},{include:"#types"},{include:"#modules"},{include:"#constants"},{include:"#invalid"}],repository:{comments:{patterns:[{captures:{1:{name:"punctuation.definition.comment.wat"}},comment:"Line comment",match:"(;;).*$",name:"comment.line.wat"},{begin:"\\(;",beginCaptures:{0:{name:"punctuation.definition.comment.wat"}},comment:"Block comment",end:";\\)",endCaptures:{0:{name:"punctuation.definition.comment.wat"}},name:"comment.block.wat"}]},constants:{patterns:[{comment:"Fixed-width SIMD",patterns:[{captures:{1:{name:"support.type.wat"}},comment:"Vector literal (i8x16) [simd]",match:"\\b(i8x16)(?:\\s+0x[0-9a-fA-F]{1,2}){16}\\b",name:"constant.numeric.vector.wat"},{captures:{1:{name:"support.type.wat"}},comment:"Vector literal (i16x8) [simd]",match:"\\b(i16x8)(?:\\s+0x[0-9a-fA-F]{1,4}){8}\\b",name:"constant.numeric.vector.wat"},{captures:{1:{name:"support.type.wat"}},comment:"Vector literal (i32x4) [simd]",match:"\\b(i32x4)(?:\\s+0x[0-9a-fA-F]{1,8}){4}\\b",name:"constant.numeric.vector.wat"},{captures:{1:{name:"support.type.wat"}},comment:"Vector literal (i64x2) [simd]",match:"\\b(i64x2)(?:\\s+0x[0-9a-fA-F]{1,16}){2}\\b",name:"constant.numeric.vector.wat"}]},{comment:"MVP",patterns:[{comment:"Floating point literal",match:"[+-]?\\b[0-9][0-9]*(?:\\.[0-9][0-9]*)?(?:[eE][+-]?[0-9]+)?\\b",name:"constant.numeric.float.wat"},{comment:"Floating point hexadecimal literal",match:"[+-]?\\b0x([0-9a-fA-F]*\\.[0-9a-fA-F]+|[0-9a-fA-F]+\\.?)[Pp][+-]?[0-9]+\\b",name:"constant.numeric.float.wat"},{comment:"Floating point infinity",match:"[+-]?\\binf\\b",name:"constant.numeric.float.wat"},{comment:"Floating point literal (NaN)",match:"[+-]?\\bnan:0x[0-9a-fA-F][0-9a-fA-F]*\\b",name:"constant.numeric.float.wat"},{comment:"Integer literal",match:"[+-]?\\b(?:0x[0-9a-fA-F][0-9a-fA-F]*|\\d[\\d]*)\\b",name:"constant.numeric.integer.wat"}]}]},instructions:{patterns:[{comment:"Non-trapping float-to-int conversions",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Conversion instruction [nontrapping-float-to-int-conversions]",match:"\\b(i32|i64)\\.trunc_sat_f(?:32|64)_[su]\\b",name:"keyword.operator.word.wat"}]},{comment:"Sign-extension operators",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Numeric instruction (i32) [sign-extension-ops]",match:"\\b(i32)\\.(?:extend(?:8|16)_s)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Numeric instruction (i64) [sign-extension-ops]",match:"\\b(i64)\\.(?:extend(?:8|16|32)_s)\\b",name:"keyword.operator.word.wat"}]},{comment:"Bulk memory operations",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Memory instruction [bulk-memory-operations]",match:"\\b(memory)\\.(?:copy|fill|init|drop)\\b",name:"keyword.operator.word.wat"}]},{comment:"Fixed-width SIMD",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (v128) [simd]",match:"\\b(v128)\\.(?:const|and|or|xor|not|andnot|bitselect|load|store)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (i8x16) [simd]",match:"\\b(i8x16)\\.(?:shuffle|swizzle|splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|narrow_i16x8_[su])\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (i16x8) [simd]",match:"\\b(i16x8)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su])\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (i32x4) [simd]",match:"\\b(i32x4)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane|load16x4_[su]|trunc_sat_f32x4_[su]|widen_(low|high)_i16x8_[su])\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (i64x2) [simd]",match:"\\b(i64x2)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|extract_lane|load32x2_[su])\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (f32x4) [simd]",match:"\\b(f32x4)\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt|convert_i32x4_[su])\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (f64x2) [simd]",match:"\\b(f64x2)\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (v8x16) [simd]",match:"\\b(v8x16)\\.(?:load_splat|shuffle|swizzle)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (v16x8) [simd]",match:"\\b(v16x8)\\.load_splat\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (v32x4) [simd]",match:"\\b(v32x4)\\.load_splat\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Vector instruction (v64x2) [simd]",match:"\\b(v64x2)\\.load_splat\\b",name:"keyword.operator.word.wat"}]},{comment:"Threads",patterns:[{captures:{1:{name:"support.class.wat"},2:{name:"support.class.wat"},3:{name:"support.class.wat"},4:{name:"support.class.wat"}},comment:"Atomic instruction (i32) [threads]",match:"\\b(i32)\\.(atomic)\\.(?:load(?:8_u|16_u)?|store(?:8|16)?|wait|(rmw)\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16)\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"},2:{name:"support.class.wat"},3:{name:"support.class.wat"},4:{name:"support.class.wat"}},comment:"Atomic instruction (i64) [threads]",match:"\\b(i64)\\.(atomic)\\.(?:load(?:8_u|16_u|32_u)?|store(?:8|16|32)?|wait|(rmw)\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16|rmw32)\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Atomic instruction [threads]",match:"\\b(atomic)\\.(?:notify|fence)\\b",name:"keyword.operator.word.wat"},{comment:"Shared modifier [threads]",match:"\\bshared\\b",name:"storage.modifier.wat"}]},{comment:"Reference types",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Reference instruction [reference-types]",match:"\\b(ref)\\.(?:null|is_null|func|extern)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Table instruction [reference-types]",match:"\\b(table)\\.(?:get|size|grow|fill|init|copy)\\b",name:"keyword.operator.word.wat"},{comment:"Type name [reference-types]",match:"\\b(?:externref|funcref|nullref)\\b",name:"entity.name.type.wat"}]},{comment:"Tail Call",patterns:[{comment:"Control instruction [tail-call]",match:"\\breturn_call(?:_indirect)?\\b",name:"keyword.control.wat"}]},{comment:"Exception handling",patterns:[{comment:"Control instruction [exception-handling]",match:"\\b(?:try|catch|throw|rethrow|br_on_exn)\\b",name:"keyword.control.wat"},{comment:"Module element [exception-handling]",match:"(?<=\\()event\\b",name:"storage.type.wat"}]},{comment:"Binaryen extensions",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Pseudo stack instruction [binaryen]",match:"\\b(i32|i64|f32|f64|externref|funcref|nullref|exnref)\\.(?:push|pop)\\b",name:"keyword.operator.word.wat"}]},{comment:"MVP",patterns:[{captures:{1:{name:"support.class.type.wat"}},comment:"Memory instruction (i32) [mvp]",match:"\\b(i32)\\.(?:load|load(?:8|16)(?:_[su])?|store(?:8|16)?)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Memory instruction (i64) [mvp]",match:"\\b(i64)\\.(?:load|load(?:8|16|32)(?:_[su])?|store(?:8|16|32)?)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Memory instruction (f32/f64) [mvp]",match:"\\b(f32|f64)\\.(?:load|store)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.memory.wat"}},comment:"Memory instruction [mvp]",match:"\\b(memory)\\.(?:size|grow)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"entity.other.attribute-name.wat"}},comment:"Memory instruction attribute [mvp]",match:"\\b(offset|align)=\\b"},{captures:{1:{name:"support.class.local.wat"}},comment:"Variable instruction (local) [mvp]",match:"\\b(local)\\.(?:get|set|tee)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.global.wat"}},comment:"Variable instruction (global) [mvp]",match:"\\b(global)\\.(?:get|set)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Numeric instruction (i32/i64) [mvp]",match:"\\b(i32|i64)\\.(const|eqz|eq|ne|lt_[su]|gt_[su]|le_[su]|ge_[su]|clz|ctz|popcnt|add|sub|mul|div_[su]|rem_[su]|and|or|xor|shl|shr_[su]|rotl|rotr)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Numeric instruction (f32/f64) [mvp]",match:"\\b(f32|f64)\\.(const|eq|ne|lt|gt|le|ge|abs|neg|ceil|floor|trunc|nearest|sqrt|add|sub|mul|div|min|max|copysign)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Conversion instruction (i32) [mvp]",match:"\\b(i32)\\.(wrap_i64|trunc_(f32|f64)_[su]|reinterpret_f32)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Conversion instruction (i64) [mvp]",match:"\\b(i64)\\.(extend_i32_[su]|trunc_f(32|64)_[su]|reinterpret_f64)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Conversion instruction (f32) [mvp]",match:"\\b(f32)\\.(convert_i(32|64)_[su]|demote_f64|reinterpret_i32)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.type.wat"}},comment:"Conversion instruction (f64) [mvp]",match:"\\b(f64)\\.(convert_i(32|64)_[su]|promote_f32|reinterpret_i64)\\b",name:"keyword.operator.word.wat"},{comment:"Control instruction [mvp]",match:"\\b(?:unreachable|nop|block|loop|if|then|else|end|br|br_if|br_table|return|call|call_indirect)\\b",name:"keyword.control.wat"},{comment:"Parametric instruction [mvp]",match:"\\b(?:drop|select)\\b",name:"keyword.operator.word.wat"}]},{comment:"GC Instructions",patterns:[{captures:{1:{name:"support.class.wat"}},comment:"Reference Instructions [GC]",match:"\\b(ref)\\.(?:eq|test|cast)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Struct Instructions [GC]",match:"\\b(struct)\\.(?:new_canon|new_canon_default|get|get_s|get_u|set)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Array Instructions [GC]",match:"\\b(array)\\.(?:new_canon|new_canon_default|get|get_s|get_u|set|len|new_canon_fixed|new_canon_data|new_canon_elem)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"i31 Instructions [GC]",match:"\\b(i31)\\.(?:new|get_s|get_u)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Branch Instructions [GC]",match:"\\b(?:br_on_non_null|br_on_cast|br_on_cast_fail)\\b",name:"keyword.operator.word.wat"},{captures:{1:{name:"support.class.wat"}},comment:"Reference Instructions [GC]",match:"\\b(extern)\\.(?:internalize|externalize)\\b",name:"keyword.operator.word.wat"}]}]},invalid:{patterns:[{match:"[^\\s()]+",name:"invalid.wat"}]},modules:{patterns:[{comment:"Bulk memory operations",patterns:[{captures:{1:{name:"storage.modifier.wat"}},comment:"Passive modifier [bulk-memory-operations]",match:"(?<=\\(data)\\s+(passive)\\b"}]},{comment:"MVP",patterns:[{comment:"Module element [mvp]",match:"(?<=\\()(?:module|import|export|memory|data|table|elem|start|func|type|param|result|global|local)\\b",name:"storage.type.wat"},{captures:{1:{name:"storage.modifier.wat"}},comment:"Mutable global modifier [mvp]",match:"(?<=\\()\\s*(mut)\\b",name:"storage.modifier.wat"},{captures:{1:{name:"entity.name.function.wat"}},comment:"Function name [mvp]",match:"(?<=\\(func|\\(start|call|return_call|ref\\.func)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)"},{begin:"\\)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)",beginCaptures:{1:{name:"entity.name.function.wat"}},comment:"Function name(s) (elem) [mvp]",end:"\\)",patterns:[{match:"(?<=\\s)\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*",name:"entity.name.function.wat"}]},{captures:{1:{name:"support.type.function.wat"}},comment:"Function type [mvp]",match:"(?<=\\(type)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)"},{comment:"Variable name or branch label [mvp]",match:"\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*\\b",name:"variable.other.wat"}]}]},strings:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin"}},comment:"String literal",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end"}},name:"string.quoted.double.wat",patterns:[{match:`\\\\(n|t|\\\\|'|"|[0-9a-fA-F]{2})`,name:"constant.character.escape.wat"}]},types:{patterns:[{comment:"Fixed-width SIMD",patterns:[{comment:"Type name [simd]",match:"\\bv128\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"Reference types",patterns:[{comment:"Type name [reference-types]",match:"\\b(?:externref|funcref|nullref)\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"Exception handling",patterns:[{comment:"Type name [exception-handling]",match:"\\bexnref\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"MVP",patterns:[{comment:"Type name [mvp]",match:"\\b(?:i32|i64|f32|f64)\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"GC Types",patterns:[{comment:"Type name [GC]",match:"\\b(?:i8|i16|ref|funcref|externref|anyref|eqref|i31ref|nullfuncref|nullexternref|structref|arrayref|nullref)\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"GC Heap Types",patterns:[{comment:"Type name [GC]",match:"\\b(?:type|func|extern|any|eq|nofunc|noextern|struct|array|none)\\b(?!\\.)",name:"entity.name.type.wat"}]},{comment:"GC Structured and sub Types",patterns:[{comment:"Type name [GC]",match:"\\b(?:struct|array|sub|final|rec|field|mut)\\b(?!\\.)",name:"entity.name.type.wat"}]}]}},scopeName:"source.wat"});var e=[t];export{e as default}; diff --git a/assets/chunks/wasm.CsTmP73Z.js b/assets/chunks/wasm.CsTmP73Z.js new file mode 100644 index 000000000..96ed770f4 --- /dev/null +++ b/assets/chunks/wasm.CsTmP73Z.js @@ -0,0 +1 @@ +var Q=Uint8Array.from(atob("AGFzbQEAAAABoQEWYAJ/fwF/YAF/AX9gA39/fwF/YAR/f39/AX9gAX8AYAV/f39/fwF/YAN/f38AYAJ/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAAF/YAl/f39/f39/f38Bf2AIf39/f39/f38Bf2AAAGAEf39/fwBgA39+fwF+YAZ/fH9/f38Bf2AAAXxgBn9/f39/fwBgAnx/AXxgAn5/AX9gBX9/f39/AAJ1BANlbnYVZW1zY3JpcHRlbl9tZW1jcHlfYmlnAAYDZW52EmVtc2NyaXB0ZW5fZ2V0X25vdwARFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUAAwNlbnYWZW1zY3JpcHRlbl9yZXNpemVfaGVhcAABA9MB0QENBAABAAECAgsCAAIEBAACAQEAAQMCAwkCBgUDBQgCAwwMAwkJAwgDAQIFAwMEAQUHCwgCAgsABQUBAgQCBgIAAQACBAIABwMHBgcAAwACAAICAAQBAgcAAgUCAAEBBgYABgQACAUICQsJDAAAAAAAAAACAgIDAAIDAgADAQABAAACBQICAAESAQEEAgIGAgUDAQUAAgEBAAoBAAEAAwMCAAACBgIOAgEPAQEBChMCBQkGAQ4UFRAHAwIBAAEECggCAQgIBwcNAQQABwABCgQBBQQFAXABMzMFBwEBgAKAgAIGDgJ/AUHQj9MCC38BQQALB5QCDwZtZW1vcnkCABFfX3dhc21fY2FsbF9jdG9ycwAEGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBABBfX2Vycm5vX2xvY2F0aW9uALABB29tYWxsb2MAwAEFb2ZyZWUAwQEQZ2V0TGFzdE9uaWdFcnJvcgDCARFjcmVhdGVPbmlnU2Nhbm5lcgDEAQ9mcmVlT25pZ1NjYW5uZXIAxQEYZmluZE5leHRPbmlnU2Nhbm5lck1hdGNoAMYBG2ZpbmROZXh0T25pZ1NjYW5uZXJNYXRjaERiZwDHAQlzdGFja1NhdmUA0QEMc3RhY2tSZXN0b3JlANIBCnN0YWNrQWxsb2MA0wEMZHluQ2FsbF9qaWppANQBCVIBAEEBCzIFCgsPHC9vcHRxcnN1ugG7Ab0BBgcICYABfoEBggGDAX97fIUBmwF9hAFvnAFvnQGeAZ8BoAGhAZIBogGYAZcBowGkAaUBqwGqAawB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ACADNgIEIA0oAgBBATYCCEEADwsgACgCDCABEE8iA0EASARAIAMPCyACIAIoAowBIgVBAWo2AowBIAFBOxBRIgQNCyABKAIIIANBBWo2AgQgAUHNABBRIgQNCyABKAIIIAU2AgQgASgCCEEANgIIIAAoAgwgASACEEIiBA0LIAFBPhBRIgAhBCAADQsgASgCCCAFNgIEIAFBPRBRIgAhBCAADQsgAUE5EFEPCyMAQRBrIgkkAAJAIAAoAhQgACgCGEYEQCACIAIoAowBIgdBAWo2AowBAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBkEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgVFDQIgASAFNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBjYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHNADYCACABKAIIIAc2AgQgASgCCEEANgIIAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBkEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgVFDQIgASAFNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBjYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHKADYCACABKAIIIAAoAhQ2AgQgASgCCEEANgIIIAEoAghBATYCDCAAKAIMIAEgAhBCIgMNAQJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIQQAhAyAAQQA2AhAgAEIANwIIIABCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQcwANgIAIAEoAgggBzYCBCABKAIIQQA2AggMAQsgACgCICIDBEAgAyABIAkgAkEAEF0iA0EASA0BAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiB0EATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgZFDQIgASAGNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBzYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHJADYCACABKAIIQQAgCSgCAGs2AgQgACgCICABIAIQQiIDDQELIAIgAigCjAEiB0EBajYCjAECQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiBUUNASABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc4ANgIAIAEoAghBAjYCBCABKAIIIAc2AggCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiBUUNASABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc8ANgIAIAEoAghBBDYCBCACIAIoAowBIgZBAWo2AowBAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHNADYCACABKAIIIAY2AgQgASgCCEEANgIIAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE7NgIAIAEoAghBAjYCBAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgVBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIIRQ0BIAEgCDYCACABKAIEIARBA3QQzQEiBEUNASABIAU2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOjYCACABKAIIQQM2AgQCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCEUNASABIAg2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc8ANgIAIAEoAghBAjYCBCABKAIIIAc2AgggASgCCEEANgIMAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE5NgIAIAFBygAQUSIDDQAgACgCGCEDIAEoAgggACgCFCIENgIEIAEoAghBfyADIARrIANBf0YbNgIIIAEoAghBAjYCDCABQcsAEFEiAw0AIAAoAgwgASACEEIiAw0AIAFBKBBRIgMNACABKAIIQQE2AgQgAUHMABBRIgMNACABKAIIIAY2AgQgASgCCEEANgIIIAFBzwAQUSIDDQAgASgCCEECNgIEIAEoAgggBzYCCCABKAIIQQE2AgxBACEDCyAJQRBqJAAgAw8LIwBBEGsiCiQAIAAoAgwgARBPIQggACgCGCEGIAAoAhQhBSACIAIoAowBIgdBAWo2AowBIAEoAhAhBCABKAIMIQMCQCAFIAZGBEACQCADIARJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAwtBeyEDIAEoAgAgBEEobBDNASIFRQ0CIAEgBTYCACABKAIEIARBA3QQzQEiBEUNAiABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzQA2AgAgASgCCCAHNgIEIAEoAghBADYCCAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAwtBeyEDIAEoAgAgBEEobBDNASIFRQ0CIAEgBTYCACABKAIEIARBA3QQzQEiBEUNAiABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOzYCACABKAIIIAhBBGo2AgQCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAMLQXshAyABKAIAIARBKGwQzQEiBUUNAiABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQIgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQcoANgIAIAEoAgggACgCFDYCBCABKAIIQQA2AgggASgCCEEBNgIMIAAoAgwgASACEEIiAw0BAkAgASgCDCIAIAEoAhAiAkkNACACRQ0AIAJBAXQiAEEATARAQXUhAwwDC0F7IQMgASgCACACQShsEM0BIgRFDQIgASAENgIAIAEoAgQgAkEDdBDNASICRQ0CIAEgADYCECABIAI2AgQgASgCDCEACyABIABBAWo2AgwgASABKAIAIABBFGxqIgA2AgggAEEANgIQIABCADcCCCAAQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE+NgIAIAEoAgggBzYCBAJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIIABBADYCECAAQgA3AgggAEIANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOTYCAAJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIQQAhAyAAQQA2AhAgAEIANwIIIABCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQT02AgAMAQsCQCADIARJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIFRQ0BIAEgBTYCACABKAIEIARBA3QQzQEiBEUNASABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzgA2AgAgASgCCEECNgIEIAEoAgggBzYCCAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIFRQ0BIAEgBTYCACABKAIEIARBA3QQzQEiBEUNASABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzwA2AgAgASgCCEEENgIEIAIgAigCjAEiBkEBajYCjAECQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCUUNASABIAk2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc0ANgIAIAEoAgggBjYCBCABKAIIQQA2AggCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCUUNASABIAk2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQTs2AgAgASgCCCAIQQhqNgIEIAAoAiAiAwRAIAMgARBPIQMgASgCCCIEIAMgBCgCBGpBAWo2AgQgACgCICABIAogAkEAEF0iA0EASA0BAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIghFDQIgASAINgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHJADYCACABKAIIQQAgCigCAGs2AgQgACgCICABIAIQQiIDDQELAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHKADYCACAAKAIYIQMgASgCCCAA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AgANACAAKAIwDQAgACgCDCECIAAgAEEYaiIENgIMIAAgBCAAKAIQIAJrajYCEAsgBSgCAA0BIAUoAjANASAFKAIMIQAgBSAFQRhqIgI2AgwgBSACIAUoAhAgAGtqNgIQIAMQEAwGCyAGQcACaiIFIABBMGoiAikCADcDACAGQbgCaiIEIABBKGoiASkCADcDACAGQbACaiIJIABBIGoiCykCADcDACAGQagCaiIHIABBGGoiCikCADcDACAGQaACaiIOIABBEGoiDSkCADcDACAGQZgCaiIQIABBCGoiDCkCADcDACAGIAApAgA3A5ACIAIgA0EwaiIVKQIANwIAIAEgA0EoaiICKQIANwIAIAsgA0EgaiIBKQIANwIAIAogA0EYaiILKQIANwIAIA0gA0EQaiIKKQIANwIAIAwgA0EIaiINKQIANwIAIAAgAykCADcCACAVIAUpAwA3AgAgAiAEKQMANwIAIAEgCSkDADcCACALIAcpAwA3AgAgCiAOKQMANwIAIA0gECkDADcCACADIAYpA5ACNwIAAkAgACgCAA0AIAAoAjANACAAKAIMIQUgACAAQRhqIgI2AgwgACACIAAoAhAgBWtqNgIQCyADKAIADQAgAygCMA0AIAMoAgwhBSADIANBGGoiADYCDCADIAAgAygCECAFa2o2AhALIAMQEAwECyAGQcACaiIFIABBMGoiAikCADcDACAGQbgCaiIEIABBKGoiAykCADcDACAGQbACaiIBIABBIGoiCSkCADcDACAGQagCaiILIABBGGoiBykCADcDACAGQaACaiIKIABBEGoiDikCADcDACAGQZgCaiINIABBCGoiECkCADcDACAGIAApAgA3A5ACIAIgCEEwaiIMKQIANwIAIAMgCEEoaiICKQIANwIAIAkgCEEgaiIDKQIANwIAIAcgCEEYaiIJKQIANwIAIA4gCEEQaiIHKQIANwIAIBAgCEEIaiIOKQIANwIAIAAgCCkCADcCACAMIAUpAwA3AgAgAiAEKQMANwIAIAMgASkDADcCACAJIAspAwA3AgAgByAKKQMANwIAIA4gDSkDADcCACAIIAYpA5ACNwIAAkAgACgCAA0AIAAoAjANACAAKAIMIQUgACAAQRhqIgI2AgwgACACIAAoAhAgBWtqNgIQCwJAIAgoAgANACAIKAIwDQAgCCgC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QQFrQQZ0aiIBKAIAIAUoAhhHBEAgAUIANwIAIAFCADcCOCABQgA3AjAgAUIANwIoIAFCADcCICABQgA3AhggAUIANwIQIAFCADcCCCABIAUoAhg2AgALIAEoAghBACABKAIEGyECCyAAKAIIIgFBAEwNACAAKAIoKAIoIgUoAhwiBiABQQFrIghBBnRqIgEoAgAgBSgCGEcEQCABQgA3AgAgAUIANwI4IAFCADcCMCABQgA3AiggAUIANwIgIAFCADcCGCABQgA3AhAgAUIANwIIIAEgBSgCGDYCAAsCQCABKAIERQRAIAAoAgwgACgCCBAOIgFFDQIgASgCBEEBRw0CIAEoAkQiAyABKAJIIgUgBygCRCgCFBEAACEIQQAhBiAFIAMgBygCRCgCABEBACADaiIBSwRAIAEgBSAHKAJEKAIUEQAAIQZBmH4hAyABIAcoAkQoAgARAQAgAWogBUcNAwtBmH4hAwJ/AkACQAJAAkAgCEEhaw4eAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHAgADBwtBACAGQT1GDQMaDAYLQQEgBkE9Rg0CGgwFC0EEIAZBPUYNARogBg0EQQIMAQtBBSAGQT1GDQAaIAYNA0EDCyEBQWIhAyAAKAIIIgdBAEwNAiAAKAIoKAIoIgMoAhwgB0EGdGpBQGoiAEEBNgIEIAAgBTYCDCAAIAE2AgggACADKAIYNgIADAELIAYgCEEGdGooAgghAQtBACEAAkACQAJAAkACQAJAAkAgAQ4GAAECAwQFBgsgAiAERiEADAULIAIgBEchAAwECyACIARKIQAMAwsgAiAESCEADAILIAIgBE4hAAwBCyACIARMIQALIABBAXMhAwsgAws/AQF/AkAgACgCDCIAIAIgAWsiA2oQywEiAkUNACACIAEgAxCmASEBIABBAEwNACABIANqQQAgABCoARoLIAILJgAgAiABIAIgACgCOBEAACIBSwR/IAEgACgCABEBACABagUgAQsLHgEBfyABIAJJBH8gASACQQFrIAAoAjgRAAAFIAMLCzsAAkAgAkUNAANAIANBAEwEQCACDwsgASACTw0BIANBAWshAyABIAJBAWsgACgCOBEAACICDQALC0EAC2gBBH8gASECA0ACQCACLQAADQAgACgCDCIDQQFHBEAgAiEEIANBAkgNAQNAIAQtAAENAiAEQQFqIQQgA0ECSiEFIANBAWshAyAFDQALCyACIAFrDwsgAiAAKAIAEQEAIAJqIQIMAAsAC3UBBH8jAEEQayIAJAACQANAIAAgBEEDdEHQJWoiAygCBCIFNgIMIAMoAgAiBiAAQQxqQQEgAiABEQMAIgMNASAAIAY2AgwgBSAAQQxqQQEgAiABEQMAIgMNASAEQQFqIgRBGkcNAAtBACEDCyAAQRBqJAAgAwtOAEEgIQACfyABLQAAIgJBwQBrQf8BcUEaTwRAQWAhAEEAIAJB4QBrQf8BcUEZSw0BGgsgA0KBgICAEDcCACADIAAgAS0AAGo2AghBAQsLBABBfgscAAJ/IAAgAUkEQEEBIAAtAABBCkYNARoLQQALCyUAIAMgASgCAC0AAEHQH2otAAA6AAAgASABKAIAQQFqNgIAQQELBABBAQsHACAALQAACw4AQQFB8HwgAEGAAkkbCwsAIAEgADoAAEEBCwQAIAELzgEBBn8gASACSQRAIAEhAwNAIAVBAWohBSADIAAoAgARAQAgA2oiAyACSQ0ACwtBAEHAmhFqIQMgBEHHCWohBANAAkAgBSADIgYuAQgiB0cNACAFIQggASEDAkAgB0EATA0AA0AgAiADSwRAIAMgAiAAKAIUEQAAIAQtAABHDQMgBEEBaiEEIAMgACgCABEBACADaiEDIAhBAUshByAIQQFrIQggBw0BDAILCyAELQAADQELIAYoAgQPCyAGQQxqIQMgBigCDCIEDQALQaF+C2gBAX8CQCAEQQBKBEADQCABIAJPBEAgAy0AAA8LIAEgAiAAKAIUEQAAIQUgAy0AACAFayIFDQIgA0EBaiEDIAEgACgCABEBACABaiEBIARBAUshBSAEQQFrIQQgBQ0ACwtBACEFCyAFCy4BAX8gASACIAAoAhQRAAAiAEH/AE0EfyAAQQF0QdAhai8BAEEMdkEBcQUgAwsLPgEDfwJAIAJBAEwNAANAIAAgA0ECdCIFaigCACABIAVqKAIARgRAIAIgA0EBaiIDRw0BDAILC0F/IQQLIAQLJwEBfyAAIAFBA20iAkECdGooAgBBECABIAJBA2xrQQN0a3ZB/wFxC7YIAQF/Qc0JIQECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB9ANqDvQDTU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkxOTktKMzZOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTklIR0ZFRENCQUA/Pj08Ozo5ODc1NE4yMTAvLi0sKyopKE5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4nJiUkIyIhIB8eHRwbGhkYThcWFRQTEhFOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4QTk5OTk5ODw4NTgcGBQQDDAsKCU5OTk4IAk4BAE9OC0GzDA8LQbMNDwtBjQ4PC0GEDw8LQfAPDwtByRAPC0G+EQ8LQf8RDwtBwBIPC0HnEg8LQZYTDwtBuhMPC0HkEw8LQf4TDwtBvBQPC0GEFQ8LQZcVDwtBrhUPC0HNFQ8LQewVDwtBnhYPC0HyFg8LQYoXDwtBoBcPC0G5Fw8LQdUXDwtB9BcPC0GYGA8LQbsYDwtB7BgPC0GgJw8LQcUnDwtB3CcPC0H4Jw8LQZ8oDwtBtCgPC0HLKA8LQeAoDwtB+ygPC0GaKQ8LQb0pDwtBzCkPC0HsKQ8LQZgqDwtBsioPC0HlKg8LQZIrDwtBsisPC0HJKw8LQeUrDwtBliwPC0GoLA8LQcAsDwtB2SwPC0HsLA8LQYUtDwtBmS0P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AUYNAQsLIAILoQEBBH9BASEEAkAgACABTw0AA0BBACEEIAAtAAAiAkHAAXFBgAFGDQEgAEEBaiEDAkAgAkHAAWtBNEsEQCADIQAMAQsgAEECIAJBAnRBkIoRaigCACICIAJBAkwbIgVqIQBBASECA0AgASADRg0DIAMtAABBwAFxQYABRw0DIANBAWohAyACQQFqIgIgBUcNAAsLIAAgAUkNAAtBASEECyAEC4AEAQN/IAJBgARPBEAgACABIAIQACAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvoAgECfwJAIAAgAUYNACABIAAgAmoiA2tBACACQQF0a00EQCAAIAEgAhCmARoPCyAAIAFzQQNxIQQCQAJAIAAgAUkEQCAEBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgBA0AIANBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsi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AmogASACQf////8Hc0obIQELIAAgA0EBajYCACABIQIgAywAARCvAQ0ACyABC7YEAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgABAgUDBAYHCAkKCwwNDg8QERILIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAiADEQcACwuDAQIDfwF+AkAgAEKAgICAEFQEQCAAIQUMAQsDQCABQQFrIgEgACAAQgqAIgVCCn59p0EwcjoAACAAQv////+fAVYhAiAFIQAgAg0ACwsgBaciAgRAA0AgAUEBayIBIAIgAkEKbiIDQQpsa0EwcjoAACACQQlLIQQgAyECIAQNAAsLIAELcgEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABQf8BcSACIANrIgNBgAIgA0GAAkkiAhsQqAEaIAJFBEADQCAAIAVBgAIQtQEgA0GAAmsiA0H/AUsNAAsLIAAgBSADELUBCyAFQYACaiQAC8kYAxJ/AXwCfiMAQbAEayIKJAAgCkEANgIsAkAgAb0iGUIAUwRA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IQsgBUEgcSEIIAooAiwhByAGQQJrIg0gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQkgCkEQaiEHA0AgByIGAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdB4JURai0AACAIcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAZBAWoiByAKQRBqa0EBRw0AAkAgCQ0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAGQS46AAEgBkECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQlB/f///wcgCyASIA1rIhBqIgZrIANIDQAgAEEgIAICfwJAIANFDQAgByAKQRBqayIIQQJrIANODQAgA0ECagwBCyAHIApBEGprIggLIgcgBmoiBiAEELkBIAAgDiALELUBIABBMCACIAYgBEGAgARzELkBIAAgCkEQaiAIELUBIABBMCAHIAhrQQBBABC5ASAAIA0gEBC1ASAAQSAgAiAGIARBgMAAcxC5ASAGIAIgAiAGSBshCQsgCkGwBGokACAJC40FAgZ+An8gASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIQQgASkDCCEFIwBBIGsiACQAAkAgBUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCAFQgSGIARCPIiEIQMgBEL//////////w+DIgRCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAEQoCAgICAgICACFINASACIANCAYN8IQIMAQsgBFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCAFQgSGIARCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgFBkfcASQ0AIABBEGohCSAEIQIgBUL///////8/g0KAgICAgIDAAIQiAyEGAkAgAUGB9wBrIghBwABxBEAgAiAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAkgAjcDACAJIAY3AwgCQEGB+AAgAWsiAUHAAHEEQCADIAFBQGqtiCEEQgAhAwwBCyABRQ0AIANBwAAgAWuthiAEIAGtIgKIhCEEIAMgAoghAwsgACAENwMAIAAgAzcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACACIAVCgICAgICAgICAf4OEvzkDAAugAQECfyMAQaABayIEJABBfyEFIAQgAUEBa0EAIAEbNgKUASAEIAAgBEGeAWogARsiADYCkAEgBEEAQZABEKgBIgRBfzYCTCAEQRA2AiQgBEF/NgJQIAQgBEGfAWo2AiwgBCAEQZABajYCVAJAIAFBAEgEQEHoyhJBPTYCAAwBCyAAQQA6AAAgBCACIANBDkEPELMBIQULIARBoAFqJAAgBQurAQEEfyAAKAJUIgMoAgQiBSAAKAIUIAAoAhwiBmsiBCAEIAVLGyIEBEAgAygCACAGIAQQpgEaIAMgAygCACAEajYCACADIAMoAgQgBGsiBTYCBAsgAygCACEEIAUgAiACIAVLGyIFBEAgBCABIAUQpgEaIAMgAygCACAFaiIENgIAIAMgAygCBCAFazYCBAsgBEEAOgAAIAAgACgCLCIDNgIcIAAgAzYCFCACCxYAIABFBEBBAA8LQejKEiAANgIAQX8LogIAIABFBEBBAA8LAn8CQCAABH8gAUH/AE0NAQJAQfzLEigCACgCAEUEQCABQYB/cUGAvwNGDQNB6MoSQRk2AgAMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBAwEC0HoyhJBGTYCAAtBfwVBAQsMAQsgACABOgAAQQELCwcAIAAQywELBwAgABDMAQu9BQEJfyMAQRBrIggkACAIQZjMEjYCAEGUzBIoAgAhByMAQYABayIBJAAgASAINgJcAkAgB0GhfkcgB0HcAWpBBk9xRQRAIAEgASgCXCICQQRqNgJcAn9BACACKAIAIgAoAgQiAkUNABogACgCCCEEIAAoAgAiBigCDEECTgRAA0ACQCACIARPDQACfyACIAQgBigCFBEAACIAQYABTwRAAkAgAEGAgARJDQAgA0ERSg0AIAEgAEEYdjYCMCABQeAAaiADaiIFQQVBqzIgAUEwahCpASABIABBEHZB/wFxNgIgIAVBBGpBA0GmMiABQSBqEKkBIAEgAEEIdkH/AXE2AhAgBUEGakEDQaYyIAFBEGoQqQEgASAAQf8BcTYCACAFQQhqQQNBpjIgARCpASADQQpqDAILIANBFUoNAiABIABBCHZB/wFxNgJQIAFB4ABqIANqIgVBBUGrMiABQdAAahCpASABIABB/wFxNgJAIAVBBGpBA0GmMiABQUBrEKkBIANBBmoMAQsgAUHgAGogA2ogADoAACADQQFqCyEDIAIgBigCABEBACACaiECIANBG0gNAQsLIAIgBEkMAQsgAUHgAGogAkEbIAQgAmsiACAAQRtOGyIDEKYBGiAAQRtKCyEFIAcQigEhAkGwzBIhAANAAkACQCACLQAAIgRBJUcEQCAERQ0BDAILIAJBAWohBiACLQABIgRB7gBHBEAgBiECDAILIAAgAUHgAGogAxCmASADaiEAIAUEQCAAQaIyLwAAOwAAIABBpDItAAA6AAIgAEEDaiEACyAGQQFqIQIMAgsgAEEAOgAADAMLIAAgBDoAACAAQQFqIQAgAkEBaiECDAALAAtBlL0SIAcQigEiABB6IQJBsMwSIAAgAhCmASACakEAOgAACyABQYABaiQAIAhBEGokAEGwzBIL4wEBAX8CQAJAAkACfyAALQAQBEBBACEBIABBDGogACgCCCACIAIgA2oiBiACIARqIAYgACgCDCAFEG1BAE4NARpBACEGDAMLAkAgACgCFCABRw0AIAAoAhwgBUcNACAAKAIYIARKDQAgAC0AIEUEQEEADwsgACgCDCIGKAIIKAIAIARODQQLIAAgBTYCHCAAIAQ2AhggACABNgIUQQAhASAAKAIIIAIgAiADaiIGIAIgBGogBiAAKAIMIAUQbUEASA0BIABBDGoLKAIAIQZBASEBDAELQQAhBgsgACABOgAgCyAGC7gzARp/IwBBEGsiGCQAIAJBAnQiChDLASEbIAoQywEhGSACQQBK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JyB3aXRob3V0IGVzY2FwZQBXb3JkAEFscGhhAEVVQy1DTgBGQUlMAChudWxsKQAARgBBAEkATAAAAEYAQQBJAEwAAAAAYWJvcnQAQmxhbmsAIyVkAEFscGhhAFsATUlTTUFUQ0gAAE0ASQBTAE0AQQBUAEMASAAAAE0ASQBTAE0AQQBUAEMASAAAAAAtMFgrMFggMFgtMHgrMHggMHgAZmFpbCB0byBtZW1vcnkgYWxsb2NhdGlvbgBDbnRybABIaXJhZ2FuYQBNQVgALQBPTklHLU1PTklUT1I6ICUtNHMgJXMgYXQ6ICVkIFslZCAtICVkXSBsZW46ICVkCgAATQBBAFgAAABNAEEAWAAAAABEaWdpdABtYXRjaC1zdGFjayBsaW1pdCBvdmVyAEFsbnVtAGluZgBjaGFyYWN0ZXIgY2xhc3MgaGFzICclcycgd2l0aG91dCBlc2NhcGUARVJST1IAPT4AAEUAUgBSAE8AUgAAAEUAUgBSAE8AUgAAAABwYXJzZSBkZXB0aCBsaW1pdCBvdmVyAGFsbnVtAEdyYXBoAEthdGFrYW5hAENPVU5UAElORgA8PQAAQwBPAFUATgBUAAAAQwBPAFUATgBUAAAAAExvd2VyAHJldHJ5LWxpbWl0LWluLW1hdGNoIG92ZXIAbmFuAGFscGhhAFRPVEFMX0NPVU5UAEFTQ0lJAABUAE8AVABBAEwAXwBDAE8AVQBOAFQAAABUAE8AVABBAEwAXwBDAE8AVQBOAFQAAAAAUHJpbnQAWERpZ2l0AHJldHJ5LWxpbWl0LWluLXNlYXJjaCBvdmVyAGJsYW5rAENNUABOQU4AAEMATQBQAAAAQwBNAFAAAAAAUHVuY3QAc3ViZXhwLWNhbGwtbGltaXQtaW4tc2VhcmNoIG92ZXIAY250cmwAQ250cmwALgBkaWdpdABCbGFuawBTcGFjZQB1bmRlZmluZWQgdHlwZSAoYnVnKQBQdW5jdABVcHBlcgBncmFwaABpbnRlcm5hbCBwYXJzZXIgZXJyb3IgKGJ1ZykAUHJpbnQAWERpZ2l0AGxvd2VyAHN0YWNrIGVycm9yIChidWcpAHByaW50AFVwcGVyAEFTQ0lJAHVuZGVmaW5lZCBieXRlY29kZSAoYnVnKQBwdW5jdABTcGFjZQBXb3JkAHVuZXhwZWN0ZWQgYnl0ZWNvZGUgKGJ1ZykAZGVmYXVsdCBtdWx0aWJ5dGUtZW5jb2RpbmcgaXMgbm90IHNldABMb3dlcgBzcGFjZQB1cHBlcgBHcmFwaABjYW4ndCBjb252ZXJ0IHRvIHdpZGUtY2hhciBvbiBzcGVjaWZpZWQgbXVsdGlieXRlLWVuY29kaW5nAHhkaWdpdABEaWdpdABmYWlsIHRvIGluaXRpYWxpemUAaW52YWxpZCBhcmd1bWVudABhc2NpaQBlbmQgcGF0dGVybiBhdCBsZWZ0IGJyYWNlAHdvcmQAZW5kIHBhdHRlcm4gYXQgbGVmdCBicmFja2V0ADpdAGVtcHR5IGNoYXItY2xhc3MAcmVkdW5kYW50IG5lc3RlZCByZXBlYXQgb3BlcmF0b3IAcHJlbWF0dXJlIGVuZCBvZiBjaGFyLWNsYXNzAG5lc3RlZCByZXBlYXQgb3BlcmF0b3IgJXMgYW5kICVzIHdhcyByZXBsYWNlZCB3aXRoICclcycAZW5kIHBhdHRlcm4gYXQgZXNjYXBlAD8AZW5kIHBhdHRlcm4gYXQgbWV0YQAqAGVuZCBwYXR0ZXJuIGF0IGNvbnRyb2wAKwBpbnZhbGlkIG1ldGEtY29kZSBzeW50YXgAPz8AaW52YWxpZCBjb250cm9sLWNvZGUgc3ludGF4ACo/AGNoYXItY2xhc3MgdmFsdWUgYXQgZW5kIG9mIHJhbmdlACs/AGNoYXItY2xhc3MgdmFsdWUgYXQgc3RhcnQgb2YgcmFuZ2UAdW5tYXRjaGVkIHJhbmdlIHNwZWNpZmllciBpbiBjaGFyLWNsYXNzACsgYW5kID8/AHRhcmdldCBvZiByZXBlYXQgb3BlcmF0b3IgaXMgbm90IHNwZWNpZmllZAArPyBhbmQgPwAPAAAADgAAAHQ+AwB8PgMA6AP0AU0B+gDIAKcAjwB9AG8AZABbAFMATQBHAEMAPwA7ADgANQAyADAALQArACoAKAAmACUAJAAiACEAIAAfAB4AHQAdABwAGwAaABoAGQAYABgAFwAXABYAFgAVABUAFAAUABQAEwATABMAEgASABIAEQARABEAEAAQABAAEAAPAA8ADwAPAA4ADgAOAA4ADgAOAA0ADQANAA0ADQANAAwADAAMAAwADAAMAAsACwALAAsACwALAAsACwALAAoACgAKAAoACgBBgBsL0AgFAAEAAQABAAEAAQABAAEAAQAKAAoAAQABAAoAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEADAAEAAcABAAEAAQABAAEAAQABQAFAAUABQAFAAUABQAGAAYABgAGAAYABgAGAAYABgAGAAUABQAFAAUABQAFAAUABgAGAAYABgAHAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAUABgAFAAUABQAFAAYABgAGAAYABwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAFAAUABQAFAAEAVAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAAxAAAALwAAADAAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAKgAAACkAAAArAAAALQAAACwAAAAuAAAAUwAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAAOQAAADoAAAA7AAAAPAAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABIAAAASQAAAFIAAABRAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/whACEAIQAhACEAIQAhACEAIQAxCCUIIQghCCEIIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACECEQqBBoEGgQaBBoEGgQaBBoEGgQaBBoEGgQaBBoEGgQbB4sHiweLB4sHiweLB4sHiweLB4oEGgQaBBoEGgQaBBoEGifKJ8onyifKJ8onyidKJ0onSidKJ0onSidKJ0onSidKJ0onSidKJ0onSidKJ0onSidKJ0oEGgQaBBoEGgUaBB4njieOJ44njieOJ44nDicOJw4nDicOJw4nDicOJw4nDicOJw4nDicOJw4nDicOJw4nDicKBBoEGgQaBBCEAAQdAlC+UMQQAAAGEAAABCAAAAYgAAAEMAAABjAAAARAAAAGQAAABFAAAAZQAAAEYAAABmAAAARwAAAGcAAABIAAAAaAAAAEkAAABpAAAASgAAAGoAAABLAAAAawAAAEwAAABsAAAATQAAAG0AAABOAAAAbgAAAE8AAABvAAAAUAAAAHAAAABRAAAAcQAAAFIAAAByAAAAUwAAAHMAAABUAAAAdAAAAFUAAAB1AAAAVgAAAHYAAABXAAAAdwAAAFgAAAB4AAAAWQAAAHkAAABaAAAAegAAAHRhcmdldCBvZiByZXBlYXQgb3BlcmF0b3IgaXMgaW52YWxpZABuZXN0ZWQgcmVwZWF0IG9wZXJhdG9yAHVubWF0Y2hlZCBjbG9zZSBwYXJlbnRoZXNpcwBlbmQgcGF0dGVybiB3aXRoIHVubWF0Y2hlZCBwYXJlbnRoZXNpcwBlbmQgcGF0dGVybiBpbiBncm91cAB1bmRlZmluZWQgZ3JvdXAgb3B0aW9uAGludmFsaWQgZ3JvdXAgb3B0aW9uAGludmFsaWQgUE9TSVggYnJhY2tldCB0eXBlAGludmFsaWQgcGF0dGVybiBpbiBsb29rLWJlaGluZABpbnZhbGlkIHJlcGVhdCByYW5nZSB7bG93ZXIsdXBwZXJ9AHRvbyBiaWcgbnVtYmVyAHRvbyBiaWcgbnVtYmVyIGZvciByZXBlYXQgcmFuZ2UAdXBwZXIgaXMgc21hbGxlciB0aGFuIGxvd2VyIGluIHJlcGVhdCByYW5nZQBlbXB0eSByYW5nZSBpbiBjaGFyIGNsYXNzAG1pc21hdGNoIG11bHRpYnl0ZSBjb2RlIGxlbmd0aCBpbiBjaGFyLWNsYXNzIHJhbmdlAHRvbyBtYW55IG11bHRpYnl0ZSBjb2RlIHJhbmdlcyBhcmUgc3BlY2lmaWVkAHRvbyBzaG9ydCBtdWx0aWJ5dGUgY29kZSBzdHJpbmcAdG9vIGJpZyBiYWNrcmVmIG51bWJlcgBpbnZhbGlkIGJhY2tyZWYgbnVtYmVyL25hbWUAbnVtYmVyZWQgYmFja3JlZi9jYWxsIGlzIG5vdCBhbGxvd2VkLiAodXNlIG5hbWUpAHRvbyBtYW55IGNhcHR1cmVzAHRvbyBiaWcgd2lkZS1jaGFyIHZhbHVlAHRvbyBsb25nIHdpZGUtY2hhciB2YWx1ZQB1bmRlZmluZWQgb3BlcmF0b3IAaW52YWxpZCBjb2RlIHBvaW50IHZhbHVlAGdyb3VwIG5hbWUgaXMgZW1wdHkAaW52YWxpZCBncm91cCBuYW1lIDwlbj4AaW52YWxpZCBjaGFyIGluIGdyb3VwIG5hbWUgPCVuPgB1bmRlZmluZWQgbmFtZSA8JW4+IHJlZmVyZW5jZQB1bmRlZmluZWQgZ3JvdXAgPCVuPiByZWZlcmVuY2UAbXVsdGlwbGV4IGRlZmluZWQgbmFtZSA8JW4+AG11bHRpcGxleCBkZWZpbml0aW9uIG5hbWUgPCVuPiBjYWxsAG5ldmVyIGVuZGluZyByZWN1cnNpb24AZ3JvdXAgbnVtYmVyIGlzIHRvbyBiaWcgZm9yIGNhcHR1cmUgaGlzdG9yeQBpbnZhbGlkIGNoYXJhY3RlciBwcm9wZXJ0eSBuYW1lIHslbn0AaW52YWxpZCBpZi1lbHNlIHN5bnRheABpbnZhbGlkIGFic2VudCBncm91cCBwYXR0ZXJuAGludmFsaWQgYWJzZW50IGdyb3VwIGdlbmVyYXRvciBwYXR0ZXJuAGludmFsaWQgY2FsbG91dCBwYXR0ZXJuAGludmFsaWQgY2FsbG91dCBuYW1lAHVuZGVmaW5lZCBjYWxsb3V0IG5hbWUAaW52YWxpZCBjYWxsb3V0IGJvZHkAaW52YWxpZCBjYWxsb3V0IHRhZyBuYW1lAGludmFsaWQgY2FsbG91dCBhcmcAbm90IHN1cHBvcnRlZCBlbmNvZGluZyBjb21iaW5hdGlvbgBpbnZhbGlkIGNvbWJpbmF0aW9uIG9mIG9wdGlvbnMAdmVyeSBpbmVmZmljaWVudCBwYXR0ZXJuAGxpYnJhcnkgaXMg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ALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdgoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADxCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAAB3CwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAPoLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAAB3DAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8gwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE8NAABUDQAAYw0AAGYNAAB/DQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAAD0DQAAAQ4A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AKoAAACqAAAAtQAAALUAAAC6AAAAugAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAAOAEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAAuAIAAMACAADBAgAA4AIAAOQCAABFAwAARQMAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHoDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPwDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGAFAACIBQAA0BAAAPoQAAD9EAAA/xAAAPgTAAD9EwAAgBwAAIgcAAAAHQAAvx0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacA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XR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAxB8AAMYfAADTHwAA1h8AANsfAADdHwAA7x8AAPIfAAD0HwAA9h8AAP4fAAAAIAAAJyAAACogAABkIAAAZiAAAHEgAAB0IAAAjiAAAJAgAACcIAAAoCAAAMAgAADQIAAA8CAAAAAhAACLIQAAkCEAACYkAABAJAAASiQAAGAkAABzKwAAdisAAJUrAACXKwAA8ywAAPksAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAHAtAAB/LQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAAXS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAAADAAAD8wAABBMAAAljAAAJkwAAD/MAAABTEAAC8xAAAxMQAAjjEAAJAxAADjMQAA8DEAAB4yAAAgMgAAjKQAAJCkAADGpAAA0KQAACumAABApgAA96YAAACnAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZpwAA8qcAACyoAAAwqAAAOagAAECoAAB3qAAAgKgAAMWoAADOqAAA2agAAOCoAABTqQAAX6kAAHypAACAqQAAzakAAM+pAADZqQAA3qkAAP6pAAAAqgAANqoAAECqAABNqgAAUKoAAFmqAABcqgAAwqoAANuqAAD2qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABrqwAAcKsAAO2rAADwqwAA+asAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAADgAABt+gAAcPoAANn6AAAA+wAABvsAABP7AAAX+wAAHfsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AADC+wAA0/sAAI/9AACS/QAAx/0AAM/9AADP/QAA8P0AABn+AAAg/gAAUv4AAFT+AABm/gAAaP4AAGv+AABw/gAAdP4AAHb+AAD8/gAA//4AAP/+AAAB/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAA4P8AAOb/AADo/wAA7v8AAPn/AAD9/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQAAAQEAAgEBAAcBAQAzAQEANwEBAI4BAQCQAQEAnAEBAKABAQCgAQEA0AEBAP0BAQCAAgEAnAIBAKACAQDQAgEA4AIBAPsCAQAAAwEAIwMBAC0DAQBKAwEAUAMBAHoDAQCAAwEAnQMBAJ8DAQDDAwEAyAMBANUDAQAABAEAnQQBAKAEAQCpBAEAsAQBANMEAQDYBAEA+wQBAAAFAQAnBQEAMAUBAGMFAQBvBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAAAYBADYHAQBABwEAVQcBAGAHAQBnBwEAgAcBAIUHAQCHBwEAsAcBALIHAQC6BwEAAAgBAAUIAQAICAEACAgBAAoIAQA1CAEANwgBADgIAQA8CAEAPAgBAD8IAQBVCAEAVwgBAJ4IAQCnCAEArwgBAOAIAQDyCAEA9AgBAPUIAQD7CAEAGwkBAB8JAQA5CQEAPwkBAD8JAQCACQEAtwkBALwJAQDPCQEA0gkBAAMKAQAFCgEABgoBAAwKAQATCgEAFQoBABcKAQAZCgEANQoBADgKAQA6CgEAPwoBAEgKAQBQCgEAWAoBAGAKAQCfCgEAwAoBAOYKAQDrCgEA9goBAAALAQA1CwEAOQsBAFULAQBYCwEAcgsBAHgLAQCRCwEAmQsBAJwLAQCpCwEArwsBAAAMAQBIDAEAgAwBALIMAQDADAEA8gwBAPoMAQAnDQEAMA0BADkNAQBgDgEAfg4BAIAOAQCpDgEAqw4BAK0OAQCwDgEAsQ4BAAAPAQAnDwEAMA8BAFkPAQBwDwEAiQ8BALAPAQDLDwEA4A8BAPYPAQAAEAEATRABAFIQAQB1EAEAfxABAMIQAQDNEAEAzRABANAQAQDoEAEA8BABAPkQAQAAEQEANBEBADYRAQBHEQEAUBEBAHYRAQCAEQEA3xEBAOERAQD0EQEAABIBABESAQATEgEAPhIBAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKkSAQCwEgEA6hIBAPASAQD5EgEAABMBAAMTAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA7EwEARBMBAEcTAQBIEwEASxMBAE0TAQBQEwEAUBMBAFcTAQBXEwEAXRMBAGMTAQBmEwEAbBMBAHATAQB0EwEAABQBAFsUAQBdFAEAYRQBAIAUAQDHFAEA0BQBANkUAQCAFQEAtRUBALgVAQDdFQEAABYBAEQWAQBQFgEAWRYBAGAWAQBsFgEAgBYBALkWAQDAFgEAyRYBAAAXAQAaFwEAHRcBACsXAQAwFwEARhcBAAAYAQA7GAEAoBgBAPIYAQD/GAEABhkBAAkZAQAJGQEADBkBABMZAQAVGQEAFhkBABgZAQA1GQEANxkBADgZAQA7GQEARhkBAFAZAQBZGQEAoBkBAKcZAQCqGQEA1xkBANoZAQDkGQEAABoBAEcaAQBQGgEAohoBALAaAQD4GgEAABwBAAgcAQAKHAEANhwBADgcAQBFHAEAUBwBAGwcAQBwHAEAjxwBAJIcAQCnHAEAqRwBALYcAQAAHQEABh0BAAgdAQAJHQEACx0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEcdAQBQHQEAWR0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAjh0BAJAdAQCRHQEAkx0BAJgdAQCgHQEAqR0BAOAeAQD4HgEAsB8BALAfAQDAHwEA8R8BAP8fAQCZIwEAACQBAG4kAQBwJAEAdCQBAIAkAQBDJQEAkC8BAPIvAQAAMAEALjQBADA0AQA4NAEAAEQBAEZGAQAAaAEAOGoBAEBqAQBeagEAYGoBAGlqAQBuagEAvmoBAMBqAQDJagEA0GoBAO1qAQDwagEA9WoBAABrAQBFawEAUGsBAFlrAQBbawEAYWsBAGNrAQB3awEAfWsBAI9rAQBAbgEAmm4BAABvAQBKbwEAT28BAIdvAQCPbwEAn28BAOBvAQDkbwEA8G8BAPFvAQAAcAEA94cBAACIAQDVjAEAAI0BAAiNAQDwrwEA868BAPWvAQD7rwEA/a8BAP6vAQAAsAEAIrEBAFCxAQBSsQEAZLEBAGexAQBwsQEA+7IBAAC8AQBqvAEAcLwBAHy8AQCAvAEAiLwBAJC8AQCZvAEAnLwBAKO8AQAAzwEALc8BADDPAQBGzwEAUM8BAMPPAQAA0AEA9dABAADRAQAm0QEAKdEBAOrRAQAA0gEARdIBAODSAQDz0gEAANMBAFbTAQBg0wEAeNMBAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMvXAQDO1wEAi9oBAJvaAQCf2gEAodoBAK/aAQAA3wEAHt8BAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQAA4QEALOEBADDhAQA94QEAQOEBAEnhAQBO4QEAT+EBAJDiAQCu4gEAwOIBAPniAQD/4gEA/+IBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQDH6AEA1ugBAADpAQBL6QEAUOkBAFnpAQBe6QEAX+kBAHHsAQC07AEAAe0BAD3tAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQDw7gEA8e4BAADwAQAr8AEAMPABAJPwAQCg8AEArvABALHwAQC/8AEAwfABAM/wAQDR8AEA9fABAADxAQCt8QEA5vEBAALyAQAQ8gEAO/IBAEDyAQBI8gEAUPIBAFHyAQBg8gEAZfIBAADzAQDX9gEA3fYBAOz2AQDw9gEA/PYBAAD3AQBz9wEAgPcBANj3AQDg9wEA6/cBAPD3AQDw9wEAAPgBAAv4AQAQ+AEAR/gBAFD4AQBZ+AEAYPgBAIf4AQCQ+AEArfgBALD4AQCx+AEAAPkBAFP6AQBg+gEAbfoBAHD6AQB0+gEAePoBAHz6AQCA+gEAhvoBAJD6AQCs+gEAsPoBALr6AQDA+gEAxfoBAND6AQDZ+gEA4PoBAOf6AQDw+gEA9voBAAD7AQCS+wEAlPsBAMr7AQDw+wEA+fsBAAAAAgDfpgIAAKcCADi3AgBAtwIAHbgCACC4AgChzgIAsM4CAODrAgAA+AIAHfoCAAAAAwBKEwMAAQAOAAEADgAgAA4AfwAOAAABDgDvAQ4AAAAPAP3/DwAAABAA/f8QAEHAywMLwgy9AAAAIQAAACMAAAAlAAAAKgAAACwAAAAvAAAAOgAAADsAAAA/AAAAQAAAAFsAAABdAAAAXwAAAF8AAAB7AAAAewAAAH0AAAB9AAAAoQAAAKEAAACnAAAApwAAAKsAAACrAAAAtgAAALcAAAC7AAAAuwAAAL8AAAC/AAAAfgMAAH4DAACHAwAAhwMAAFoFAABfBQAAiQUAAIoFAAC+BQAAvgUAAMAFAADABQAAwwUAAMMFAADGBQAAxgUAAPMFAAD0BQAACQYAAAoGAAAMBgAADQYAABsGAAAbBgAAHQYAAB8GAABqBgAAbQYAANQGAADUBgAAAAcAAA0HAAD3BwAA+QcAADAIAAA+CAAAXggAAF4IAABkCQAAZQkAAHAJAABwCQAA/QkAAP0JAAB2CgAAdgoAAPAKAADwCgAAdwwAAHcMAACEDAAAhAwAAPQNAAD0DQAATw4AAE8OAABaDgAAWw4AAAQPAAASDwAAFA8AABQPAAA6DwAAPQ8AAIUPAACFDwAA0A8AANQPAADZDwAA2g8AAEoQAABPEAAA+xAAAPsQAABgEwAAaBMAAAAUAAAAFAAAbhYAAG4WAACbFgAAnBYAAOsWAADtFgAANRcAADYXAADUFwAA1hcAANgXAADaFwAAABgAAAoYAABEGQAARRkAAB4aAAAfGgAAoBoAAKYaAACoGgAArRoAAFobAABgGwAAfRsAAH4bAAD8GwAA/xsAADscAAA/HAAAfhwAAH8cAADAHAAAxxwAANMcAADTHAAAECAAACcgAAAwIAAAQyAAAEUgAABRIAAAUyAAAF4gAAB9IAAAfiAAAI0gAACOIAAACCMAAAsjAAApIwAAKiMAAGgnAAB1JwAAxScAAMYnAADmJwAA7ycAAIMpAACYKQAA2CkAANspAAD8KQAA/SkAAPksAAD8LAAA/iwAAP8sAABwLQAAcC0AAAAuAAAuLgAAMC4AAE8uAABSLgAAXS4AAAEwAAADMAAACDAAABEwAAAUMAAAHzAAADAwAAAwMAAAPTAAAD0wAACgMAAAoDAAAPswAAD7MAAA/qQAAP+kAAANpgAAD6YAAHOmAABzpgAAfqYAAH6mAADypgAA96YAAHSoAAB3qAAAzqgAAM+oAAD4qAAA+qgAAPyoAAD8qAAALqkAAC+pAABfqQAAX6kAAMGpAADNqQAA3qkAAN+pAABcqgAAX6oAAN6qAADfqgAA8KoAAPGqAADrqwAA66sAAD79AAA//QAAEP4AABn+AAAw/gAAUv4AAFT+AABh/gAAY/4AAGP+AABo/gAAaP4AAGr+AABr/gAAAf8AAAP/AAAF/wAACv8AAAz/AAAP/wAAGv8AABv/AAAf/wAAIP8AADv/AAA9/wAAP/8AAD//AABb/wAAW/8AAF3/AABd/wAAX/8AAGX/AAAAAQEAAgEBAJ8DAQCfAwEA0AMBANADAQBvBQEAbwUBAFcIAQBXCAEAHwkBAB8JAQA/CQEAPwkBAFAKAQBYCgEAfwoBAH8KAQDwCgEA9goBADkLAQA/CwEAmQsBAJwLAQCtDgEArQ4BAFUPAQBZDwEAhg8BAIkPAQBHEAEATRABALsQAQC8EAEAvhABAMEQAQBAEQEAQxEBAHQRAQB1EQEAxREBAMgRAQDNEQEAzREBANsRAQDbEQEA3REBAN8RAQA4EgEAPRIBAKkSAQCpEgEASxQBAE8UAQBaFAEAWxQBAF0UAQBdFAEAxhQBAMYUAQDBFQEA1xUBAEEWAQBDFgEAYBYBAGwWAQC5FgEAuRYBADwXAQA+FwEAOxgBADsYAQBEGQEARhkBAOIZAQDiGQEAPxoBAEYaAQCaGgEAnBoBAJ4aAQCiGgEAQRwBAEUcAQBwHAEAcRwBAPceAQD4HgEA/x8BAP8fAQBwJAEAdCQBAPEvAQDyLwEAbmoBAG9qAQD1agEA9WoBADdrAQA7awEARGsBAERrAQCXbgEAmm4BAOJvAQDibwEAn7wBAJ+8AQCH2gEAi9oBAF7pAQBf6QEAAAAAAAoAAAAJAAAADQAAACAAAAAgAAAAhQAAAIUAAACgAAAAoAAAAIAWAACAFgAAACAAAAogAAAoIAAAKSAAAC8gAAAvIAAAXyAAAF8gAAAAMAAAADAAQZDYAwuzWIsCAABBAAAAWgAAAMAAAADWAAAA2AAAAN4AAAAAAQAAAAEAAAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxAEAAMcBAADHAQAAygEAAMoBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPEBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADUAQAZ1AEANNQBAE3UAQBo1AEAgdQBAJzUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAtdQBANDUAQDp1AEABNUBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQA41QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAbNUBAIXVAQCg1QEAudUBANTVAQDt1QEACNYBACHWAQA81gEAVdYBAHDWAQCJ1gEAqNYBAMDWAQDi1gEA+tYBABzXAQA01wEAVtcBAG7XAQCQ1wEAqNcBAMrXAQDK1wEAAOkBACHpAQAw8QEASfEBAFDxAQBp8QEAcPEBAInxAQAAAAAAAwAAADAAAAA5AAAAQQAAAEYAAABhAAAAZgAAAAAAAAD2AgAAMAAAADkAAABBAAAAWgAAAF8AAABfAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAgwQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACYCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8gwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzQ4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANkZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIgcAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAAPyAAAEAgAABUIAAAVCAAAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAANAgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAALyEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAALYkAADpJAAAACwAAOQsAADrLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAAB/LQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAA/y0AAC8uAAAvLgAABTAAAAcwAAAhMAAALzAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJkwAACaMAAAnTAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAArpgAAQKYAAHKmAAB0pgAAfaYAAH+mAADxpgAAF6cAAB+nAAAipwAAiKcAAIunAADKpwAA0KcA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AIQDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAAvBQAAMQUAAFYFAABZBQAAigUAAI0FAACPBQAAkQUAAMcFAADQBQAA6gUAAO8FAAD0BQAAAAYAAA0HAAAPBwAASgcAAE0HAACxBwAAwAcAAPoHAAD9BwAALQgAADAIAAA+CAAAQAgAAFsIAABeCAAAXggAAGAIAABqCAAAcAgAAI4IAACQCAAAkQgAAJgIAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdgoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADxCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAAB3CwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAPoLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAAB3DAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwA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AMUJAADGCQAAyQkAAMoJAADPCQAA1gkAANgJAADbCQAA3gkAAN4JAADkCQAA5QkAAP8JAAAACgAABAoAAAQKAAALCgAADgoAABEKAAASCgAAKQoAACkKAAAxCgAAMQoAADQKAAA0CgAANwoAADcKAAA6CgAAOwoAAD0KAAA9CgAAQwoAAEYKAABJCgAASgoAAE4KAABQCgAAUgoAAFgKAABdCgAAXQoAAF8KAABlCgAAdwoAAIAKAACECgAAhAoAAI4KAACOCgAAkgoAAJIKAACpCgAAqQoAALEKAACxCgAAtAoAALQKAAC6CgAAuwoAAMYKAADGCgAAygoAAMoKAADOCgAAzwoAANEKAADfCgAA5AoAAOUKAADyCgAA+AoAAAALAAAACwAABAsAAAQLAAANCwAADgsAABELAAASCwAAKQsAACkLAAAxCwAAMQsAADQLAAA0CwAAOgsAADsLAABFCwAARgsAAEkLAABKCwAATgsAAFQLAABYCwAAWwsAAF4LAABeCwAAZAsAAGULAAB4CwAAgQsAAIQLAACECwAAiwsAAI0LAACRCwAAkQsAAJYLAACYCwAAmwsAAJsLAACdCwAAnQsAAKALAACiCwAApQsAAKcLAACrCwAArQsAALoLAAC9CwAAwwsAAMULAADJCwAAyQsAAM4LAADPCwAA0QsAANYLAADYCwAA5QsAAPsLAAD/CwAADQwAAA0MAAARDAAAEQwAACkMAAApDAAAOgwAADsMAABFDAAARQwAAEkMAABJDAAATgwAAFQMAABXDAAAVwwAAFsMAABcDAAAXgwAAF8MAABkDAAAZQwAAHAMAAB2DAAAjQwAAI0MAACRDAAAkQwAAKkMAACpDAAAtAwAALQMAAC6DAAAuwwAAMUMAADFDAAAyQwAAMkMAADODAAA1AwAANcMAADcDAAA3wwAAN8MAADkDAAA5QwAAPAMAADwDAAA8wwAAP8MAAANDQAADQ0AABENAAARDQAARQ0AAEUNAABJDQAASQ0AAFANAABTDQAAZA0AAGUNAACADQAAgA0AAIQNAACEDQAAlw0AAJkNAACyDQAAsg0AALwNAAC8DQAAvg0AAL8NAADHDQAAyQ0AAMsNAADODQAA1Q0AANUNAADXDQAA1w0AAOANAADlDQAA8A0AAPENAAD1DQAAAA4AADsOAAA+DgAAXA4A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AQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAH8BAAB/AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxQEAAMcBAADIAQAAygEAAMsBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPIBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABFAwAARQMAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAwgMAAMIDAADPAwAA0QMAANUDAADWAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA8AMAAPEDAAD0AwAA9QMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAhwUAAIcFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAAD4EwAA/RMAAIAcAACIHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJoeAACbHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIAfAACvHwAAsh8AALQfAAC3HwAAvB8AAMIfAADEHwAAxx8AAMwfAADYHwAA2x8AAOgfAADsHwAA8h8AAPQfAAD3HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADpAQAh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AABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACIHwAAjx8AAJgfAACfHwAAqB8AAK8fAAC4HwAAvB8AAMgfAADMHwAA2B8AANsfAADoHwAA7B8AAPgfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEan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AAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA9qcAAPanAABTqwAAU6sAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAIukBAEPpAQBBoOQGC8cncwIAAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACaAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxQEAAMYBAADIAQAAyQEAAMsBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPIBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAAzAgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAVAIAAFYCAABXAgAAWQIAAFkCAABbAgAAXAIAAGACAABhAgAAYwIAAGMCAABlAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAtB8AALYfAAC3HwAAvB8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADMHwAAzB8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAD8HwAA/B8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANenAADXpwAA2acAANmnAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAi6QEAQ+kBAAAAAAADAAAAoBMAAPUTAAD4EwAA/RMAAHCrAAC/qwAAAQAAALAPAQDLDwEAQfCLBwvTK7oCAAB4AwAAeQMAAIADAACDAwAAiwMAAIsDAACNAwAAjQMAAKIDAACiAwAAMAUAADAFAABXBQAAWAUAAIsFAACMBQAAkAUAAJAFAADIBQAAzwUAAOsFAADuBQAA9QUAAP8FAAAOBwAADgcAAEsHAABMBwAAsgcAAL8HAAD7BwAA/AcAAC4IAAAvCAAAPwgAAD8IAABcCAAAXQgAAF8IAABfCAAA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CQAAggkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAL8JAADACQAAxwkAAMgJAADLCQAAzAkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAOYJAAD9CQAAAwoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABACgAAWQoAAFwKAABeCgAAXgoAAGYKAABvCgAAcgoAAHQKAAB2CgAAdgoAAIMKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAMAKAADJCgAAyQoAAMsKAADMCgAA0AoAANAKAADgCgAA4QoAAOYKAADxCgAA+QoAAPkKAAACCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAQAsAAEALAABHCwAASAsAAEsLAABMCwAAXAsAAF0LAABfCwAAYQsAAGYLAAB3CwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC/CwAAvwsAAMELAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA5gsAAPoLAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABBDAAARAwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAGYMAABvDAAAdwwAAIAMAACCDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL4MAADADAAAwQwAAMMMAADEDAAAxwwAAMgMAADKDAAAywwAAN0MAADeDAAA4AwAAOEMAADmDAAA7wwAAPEMAADyDAAAAg0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAAA/DQAAQA0AAEYNAABIDQAASg0AAEwNAABODQAATw0AAFQNAABWDQAAWA0AAGENAABmDQAAfw0AAIINAACDDQAAhQ0AAJYNAACa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CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdQoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADvCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAABvCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANALAADQCwAA1wsAANcLAADmCwAA7wsAAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPIMAAAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABODQAAVA0AAFcNAABfDQAAYw0AAGYNAABvDQAAeg0AAH8NAACBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADKDQAAyg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPMNAAABDgAAOg4AAEAOAABODgAAUA4AAFkOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AAL0OAADADgAAxA4AAMYOAADG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vx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAhCEAAIQhAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABxLAAAcSwAAHMsAAB0LAAAdiwAAHssAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADkLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAMacAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAcacAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAA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AACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqn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ADAFAABXBQAAWAUAAIsFAACMBQAAkAUAAJAFAADIBQAAzwUAAOsFAADuBQAA9QUAAP8FAAAOBwAADgcAAEsHAABMBwAAsgcAAL8HAAD7BwAA/AcAAC4IAAAvCAAAPwgAAD8IAABcCAAAXQgAAF8IAABfCAAAawgAAG8IAACPCAAAjwgAAJIIAACXCAAAhAkAAIQJAACNCQAAjgkAAJEJAACSCQAAqQkAAKkJAACxCQAAsQkAALMJAAC1CQAAugkAALsJAADFCQAAxgkAAMkJAADKCQAAzwkAANYJAADYCQAA2wkAAN4JAADeCQAA5AkAAOUJAAD/CQAAAAoAAAQKAAAECgAACwoAAA4KAAARCgAAEgoAACkKAAApCgAAMQoAADEKAAA0CgAANAoAADcKAAA3CgAAOgoAADsKAAA9CgAAPQoAAEMKAABGCgAASQoAAEoKAABOCgAAUAoAAFIKAABYCgAAXQoAAF0KAABfCgAAZQoAAHcKAACACgAAhAoAAIQKAACOCgAAjgoAAJIKAACSCgAAqQoAAKkKAACxCgAAsQoAALQKAAC0CgAAugoAALsKAADGCgAAxgoAAMoKAADKCgAAzgoAAM8KAADRCgAA3woAAOQKAADlCgAA8goAAPgKAAAACwAAAAsAAAQLAAAECwAADQsAAA4LAAARCwAAEgsAACkLAAApCwAAMQsAADELAAA0CwAANAsAADoLAAA7CwAARQsAAEYLAABJCwAASgsAAE4LAABUCwAAWAsAAFsLAABeCwAAXgsAAGQLAABlCwAAeAsAAIELAACECwAAhAsAAIsLAACNCwAAkQsAAJELAACWCwAAmAsAAJsLAACbCwAAnQsAAJ0LAACgCwAAogsAAKULAACnCwAAqwsAAK0LAAC6CwAAvQsAAMMLAADFCwAAyQsAAMkLAADOCwAAzwsAANELAADWCwAA2AsAAOULAAD7CwAA/wsAAA0MAAANDAAAEQwAABEMAAApDAAAKQwAADoMAAA7DAAARQwAAEUMAABJDAAASQwAAE4MAABUDAAAVwwAAFcMAABbDAAAXAwAAF4MAABfDAAAZAwAAGUMAABwDAAAdgwAAI0MAACNDAAAkQwAAJEMAACpDAAAqQwAALQMAAC0DAAAugwAALsMAADFDAAAxQwAAMkMAADJDAAAzgwAANQMAADXDAAA3AwA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AD0AAwH//wAAQgCdAEcADQH//wAA//8AAP//AAD//wAA//8AAP//AABMACQB//8AAFIANwD//wAA//8AAFUAlwD//wAA//8AAP//AABYAIcA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXABWAP//AABhANIA//8AAP//AAD//wAAZACBAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABsAI0A//8AAHEAJwB2ACcA//8AAP//AAB9ANMAgACaAP//AAD//wAAjQBaAP//AACSAM4A//8AAP//AACVAJkA//8AAKEA2AGuAFMAswBaAP//AAD//wAA//8AALkAoQC9AKEA//8AAMIAdADHAJwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADMAI0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzgCUANMALQD//wAA//8AAP//AAD//wAA2ADIAf//AAD//wAA4gDbAf//AAD//wAA//8AAO8AHgH//wAA//8AAP//AAD//wAA+gATAgABGAL//wAA//8AAP//AAAHASUA//8AAP//AAD//wAA//8AAP//AAD//wAACQHtAf//AAD//wAAEgE4AP//AAD//wAAGQGRAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACEBNwH//wAA//8AAP//AAD//wAAKwEIAv//AAD//wAA//8AAP//AAA1AW0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADoBGQL//wAA//8AAP//AABdAUQB//8AAP//AABlASYA//8AAGoB1AD//wAAhQGFAIgBkwD//wAA//8AAP//AAD//wAA//8AAP//AACNAcwAogE/AaoBvwH//wAAswHcAf//AAC9AY0AywEMAv//AAD//wAA//8AAP//AADsAZsA//8AAP//AAD//wAA//8AAP//AADxAegB/gG1AAMC+wEKAhgB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABoCPAH//wAA//8AAP//AAD//wAA//8AACUC7wH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALwKPAP//AAD//wAA//8AADcCYgH//wAA//8AAP//AAD//wAAQAJ8AP//AABDApQA//8AAP//AAD//wAAUAILAv//AAD//wAA//8AAP//AAD//wAA//8AAFwClgD//wAA//8AAF8CKwD//wAA//8AAP//AABiAgACdAIRAf//AAD//wAA//8AAIICFgD//wAA//8AAIcC1wCNAmwA//8AAP//AACSAiUB//8AAP//AAD//wAA//8AAP//AAD//wAAngIWAP//AACnAgUCsQIGAv//AADAAjkA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADFAswA//8AAP//AAD//wAA//8AAMgCbwDeAn4A//8AAP//AAD//wAA4wJ+AP//AADpAtkA//8AAP//AADsAiMB//8AAP//AAD//wAA//8AAP//AAD//wAA9QJKAf//AAD//wAABAOBAQ8DHAEaAzQB//8AACEDnwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAKAPrAf//AAD//wAA//8AADEDEwE0A5kA//8AAP//AAD//wAA//8AAP//AAD//wAAOQPSAP//AAD//wAA//8AAEwDOgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABPAyEB//8AAFgD1AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXAP6Af//AAD//wAA//8AAP//AABkA9UA//8AAP//AABnA5EA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGwDIAL//wAA//8AAP//AAD//wAAfAOaAIEDnwD//wAAhgN0AP//AACPA2sA//8AAJQDbwD//wAA//8AAP//AACZAw0B//8AAP//AACgA34B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAwwMLAc8DIgD//wAA//8AAP//AAD//wAA1AMOAP//AADaAzcA//8AAP//AADlAxUA//8AAP//AADsA6AB/wPjAf//AAD//wAA//8AABQEewD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAGwT/Af//AAD//wAA//8AAP//AAD//wAAKQSmAf//AAD//wAA//8AAP//AAD//wAA//8AADcE2gH//wAA//8AAEkEswFhBHMA//8AAP//AABmBHMAbgStAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAiwR7AP//AACNBPgB//8AAP//AAD//wAAlAS3Af//AAD//wAA//8AAP//AAD//wAA//8AAJ8EQQK4BDQCxwSrAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1AQXAuIECwHnBEYC//8AAP//AAD//wAA//8AAP//AAD2BD8C//8AAP//AAD//wAA//8AAP//AAACBc0B//8AAP//AAD//wAA//8AAP//AAAMBTUB//8AAP//AAASBSEA//8AABkFwQH//wAA//8AAP//AAD//wAA//8AAP//AAAlBW0B//8AAP//AABJBaAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFMFDAFYBdYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAZwVZAP//AAD//wAA//8AAP//AABuBXcA//8AAP//AAD//wAAcwVPAX8F5QH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAjAVVAJMFvAH//wAA//8AAP//AACkBZsA//8AAP//AAC0BXUA//8AAP//AAC5BSsA//8AAP//AADBBcoA0wU1Av//AAD//wAA//8AAP//AAD//wAA2wXmAP//AADeBYkA//8AAP//AAD//wAA//8AAOEFJgH//wAA//8AAP//AAD//wAA//8AAOsFlgEEBk4C//8AACsG6AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAC4GaQAyBtkB//8AAP//AAD//wAA//8AAP//AAD//wAARAbIAP//AABJBr4B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFIGMQL//wAA//8AAP//AAD//wAA//8AAFkGZwD//wAAawYfAnwGhgH//wAA//8AAIkG6wCOBhoA//8AAP//AAD//wAAlAZmAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALIGOgL//wAA//8AAP//AADABhwAxQZYAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADLBhwA//8AANEGygD//wAA//8AAP//AAD//wAA//8AAP//AADXBjIB//8AAOMGkwH//wAA//8AAP//AAD//wAA//8AAP//AAD5BiECDgcbAP//AAD//wAA//8AAP//AAD//wAA//8AABMHagD//wAA//8AABcHBwD//wAA//8AAB0HuQH//wAA//8AADAHTAE6BycC//8AAP//AAD//wAA//8AAP//AABLByUC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGUH3QD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGoHlQH//wAAeAf1AX8H3QD//wAA//8AAP//AACJB9wA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACLB3EAkQdlAf//AAD//wAAoweDAKgHywCtB2sB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMQHKALiB3MB//8AAAII5wD//wAA//8AAAUIPgL//wAAKgjEAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1CM0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADgIswD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAD0IDQD//wAA//8AAP//AAD//wAA//8AAP//AABDCG0A//8AAEgI/QH//wAA//8AAP//AABVCBYB//8AAP//AAD//wAA//8AAP//AABmCJgBcwhIAf//AAB7COAB//8AAIcIaQD//wAA//8AAP//AAD//wAA//8AAJII4gH//wAA//8AAKMI3wD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAApghoAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKsIpAG8CAYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADCCBkA//8AAMcIgAH//wAA//8AAP//AADSCMsB5gjGAf//AAD//wAA8AgCAP//AAD//wAA9ggZAQ8JNAD//wAA//8AAP//AAAYCdUB//8AACEJ0QD//wAA//8AACwJNAD//wAAMQkdADkJkwD//wAA//8AAEEJMgL//wAA//8AAP//AAD//wAA//8AAEoJWQD//wAA//8AAFcJGQBgCWoA//8AAP//AAD//wAAaAkvAf//AABwCfIB//8AAP//AAD//wAA//8AAP//AAB6CS4A//8AAH8JLQD//wAAhglyAI0J7gGYCVcA//8AAP//AAD//wAA//8AAKUJPgH//wAA//8AAP//AACtCSkA//8AAP//AACzCaIB//8AAP//AADLCXkA0gm7Af//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADoCdsA7Ql2AP//AAD//wAA//8AAP//AADyCZIA/QmIAAcKJgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABoKUgEkCp0A//8AAP//AAApCjoB//8AAP//AAD//wAANAp6AP//AAD//wAA//8AAP//AAA5CjAA//8AAD4KDQL//wAA//8AAFcKhAD//wAA//8AAP//AABaChEB//8AAP//AABdCjMB//8AAP//AAD//wAA//8AAP//AABnCvMB//8AAP//AABzCgwB//8AAP//AAD//wAA//8AAHwKCwD//wAAgwofAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAiQo1AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACUCvcB//8AAP//AAD//wAAngorAv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAtAoRALkKNQD//wAA//8AAP//AAD//wAA//8AAL4KeADDCucB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAM8K9AH//wAA2QoaAP//AADeCm4A//8AAP//AADzClwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD4CqAA//8AAP//AAD//wAA//8AAP0KdQEOC0kB//8AAP//AAD//wAA//8AAP//AAD//wAAGgsQAB8LyQH//wAA//8AAP//AAD//wAA//8AACcLXAE8C1MA//8AAEULdgBQC+UA//8AAP//AAD//wAA//8AAFgLeAD//wAA//8AAP//AAD//wAA//8AAF4L4AD//wAAZAt8AP//AAD//wAAcAuiAP//AAD//wAAeAtcAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAhQuVAP//AACKCx0B//8AAP//AACfCzgB//8AAKoLVQD//wAA//8AAP//AAD//wAA//8AAP//AACvC6UBxAtUAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzwvXAN0LAgH//wAA4wuKAf//AAAEDHEAEAzbAP//AAD//wAA//8AAP//AAD//wAA//8AABYMRQH//wAA//8AAP//AAD//wAA//8AAP//AAAiDEsA//8AACgMTAJJDFYA//8AAP//AAD//wAA//8AAP//AABRDPYB//8AAFsM0wH//wAA//8AAP//AAD//wAA//8AAP//AABkDBAA//8AAP//AAD//wAAagyKAP//AABtDBwC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAIEMcgD//wAAhgwsAf//AACRDO0A//8AAP//AAD//wAA//8AAP//AAD//wAAmwzhAf//AAD//wAA//8AAP//AACqDPUAsAwKAsIMuwDIDJABzgwhAP//AAD//wAA//8AANMMZAH//wAA7AwFAfAMBQH//wAA//8AAPUM3gD//wAA//8AAP//AAD//wAA//8AAP//AAD6DF0A//8AAP8M8gD//wAA//8AAP//AAAFDW0A//8AAA8NywD//wAA//8AABkNEAEeDQgA//8AACQNggD//wAA//8AAP//AAD//wAAKQ1dADIN9QD//wAA//8AAP//AAD//wAANw3SAf//AAD//wAA//8AAP//AABDDYQB//8AAEwNhwBiDQQC//8AAG4NSgL//wAA//8AAI8NWACeDcoB//8AAP//AACoDewB//8AAP//AAC2DV4A//8AAP//AAD//wAA//8AALoNXgC/DYAA//8AAP//AADFDTYA//8AANAN2AD//wAA//8AANgNYQD//wAA3Q2EAP//AAD//wAA//8AAP//AAD//wAA//8AAO0NAwD//wAA8w2MAf//AAD//wAACg6CAP//AAD//wAA//8AAP//AAD//wAAEg4RAv//AAApDmEA//8AAP//AAD//wAA//8AADEO8QE6DloBVA5nAf//AABsDhMA//8AAP//AACBDqQA//8AAIMOTQD//wAA//8AAJEO6QD//wAA//8AAP//AAD//wAAlA5lAP//AAD//wAA//8AAJkO4wD//wAA//8AAP//AAD//wAA//8AAP//AACeDoAA//8AAKMOHgD//wAAqA5uAP//AACtDqYA//8AAP//AAC5DqwAvA7eAP//AADHDhQC0A4yANQOHgD//wAA//8AAN4OGwHvDqoA8w6qAPgO+gD//wAA//8AAP0OvAADD7YA//8AAAgP9wD//wAADQ/3ABQPmgH//wAA//8AAB4PxgD//wAA//8AACAPLgH//wAAKA/kATEPIAE6D9QB//8AAP//AABHD8cBUQ8fAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXQ89Av//AAB9DwkB//8AAIIPogD//wAA//8AAIcP1gGdD+UA//8AAP//AACiD+IA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKoPfQH//wAA//8AAP//AAD//wAA//8AALsPlwD//wAAyQ8VAM4P8AH//wAA//8AAOYPIgD//wAA7g9BAf//AAD4D70A//8AAP//AAD9Dx0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAhAUAQ8QrwH//wAA//8AACoQPQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALxDZAP//AAD//wAA//8AAEEQPAJiEE4A//8AAHQQWwH//wAA//8AAP//AAD//wAA//8AAIQQfwCJEPwBkRAsAP//AAD//wAA//8AAP//AACYEIsAnRCLAP//AAD//wAApBBEAP//AACoEL0B//8AAP//AAD//wAAtxBAAP//AAD//wAAuhBFAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAL8QAwHHEFcA//8AAM4QowD//wAA//8AANMQowD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANsQSwL//wAA/BBNAP//AAD//wAA//8AAP//AAABEWoB//8AABMRDgL//wAAIRFVAf//AAD//wAA//8AADcRAAH//wAA//8AADwRVABBEfQA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEkRDwBXEb8A//8AAFsRxgD//wAA//8AAP//AABnEQYB//8AAP//AAD//wAAahHtAG8RAQJ5EdAB//8AAP//AAD//wAA//8AAP//AAD//wAAixFQAZMRlAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKQRIgL//wAA//8AAKwRNgH//wAA//8AAP//AAC2EasB//8AAP//AAD//wAA//8AAMYRYgDNEWkB//8AAP//AAD//wAA//8AAP//AAD//wAA3RHmAecRbAH//wAA//8AAPIR6QH//wAA//8AAPwRKgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAJEkwA//8AAP//AAD//wAAGBKHAf//AAD//wAA//8AAP//AAA1EmsAQRI5AP//AABIEmEB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFYSYgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFsSiQH//wAA//8AAG4SHgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAfhLJAIwSGACUEikB//8AAP//AAD//wAAphLqAP//AAD//wAArhK3ALMSGgL//wAAvBI5AMESBQD//wAA//8AAP//AAD//wAAxxLBAP//AAD//wAAzBImAv//AAD//wAA5hLdAf4SRAD//wAACBPeAf//AAD//wAA//8AAP//AAAfEykC//8AAP//AAAvE54B//8AAP//AAD//wAA//8AAP//AABCE1ACSRNwAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAE4TPAD//wAAUxOmAP//AAD//wAA//8AAP//AAD//wAAWBPJAF8T8gD//wAAZBPCAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGkT4AD//wAAehNsAP//AAD//wAA//8AAIoT+gCeE4wAoxOMAP//AACqEyAA//8AAP//AAD//wAArxNwAP//AAC4EzEA//8AALwTQwLWE8UB//8AAP//AADjE0AC//8AAP//AAD//wAA//8AAPgTbwH//wAAChSwAR8UKAD//wAA//8AAP//AAAtFI4B//8AAP//AAD//wAA//8AAP//AAD//wAAOhRUAkQUsQH//wAA//8AAP//AAD//wAAVBQ7Af//AAD//wAA//8AAP//AABpFOEA//8AAP//AAD//wAA//8AAHEUTgH//wAAfBRWAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAI4UDACTFHEB//8AALcU9gD//wAAvBSxAMEUZwD//wAA//8AAP//AADGFMMA//8AAP//AAD//wAAzRSnANsUGAD//wAA4BR6Af//AAD//wAA//8AAP//AAD0FLEA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPwU4QD//wAA//8AAAEVKgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAFhWhASAVAQH//wAA//8AACUVfwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABAFSAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEkVjwH//wAA//8AAP//AABQFcMB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFwV4wBkFRAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB0FRcA//8AAP//AAD//wAAfRWYAP//AACCFc4AkxW4AJgV6wD//wAA//8AAP//AACkFVECwxU5AdAVmADcFdAA4RUJAv//AAD//wAA8hV2AfsVJwH//wAA//8AAP//AAD//wAADhacAf//AAD//wAAJBY+AP//AAD//wAA//8AAP//AAD//wAA//8AACkWJAL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEMWUwH//wAA//8AAFcWWwD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFwWMwD//wAAYBZbAP//AAD//wAA//8AAGkWlgD//wAA//8AAHUWAQB7FpAA//8AAIAW0QH//wAA//8AAIwWkAD//wAA//8AAP//AAD//wAAlhYJAP//AAD//wAAnBZRAf//AAD//wAA//8AAKUWyAD//wAA//8AAP//AAD//wAArxbsAP//AAD//wAA//8AAP//AAD//wAA//8AALQWnAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADIFjsA//8AAM0WMAH//wAA//8AANYWmQH//wAA6xbXAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9FkIAAhf7AP//AAD//wAA//8AAP//AAAHF/sADhcjABMX/AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAGBfqAP//AAAdF4kA//8AAP//AAD//wAALRcsAv//AAD//wAA//8AAE8XuQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFQXKgD//wAA//8AAP//AABmF5IB//8AAG4XQgD//wAA//8AAHYXdwGLFyMA//8AAJQXDwH//wAA//8AAP//AAD//wAA//8AAJ4XtAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAshf/AP//AAD//wAA//8AALcX6gH//wAA//8AAP//AADAF6cA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMMX0QD//wAA//8AAP//AAD//wAA//8AAP//AADIF6kA//8AAP//AAD//wAA//8AAM0XGgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOkXjgDuF18B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABQYtgD//wAAHxiOAP//AAAoGPMA//8AAP//AAD//wAAMBioADoYAAD//wAA//8AAEIY7wD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABHGPkB//8AAP//AAD//wAAXRgCAv//AAD//wAAixjiAP//AAD//wAA//8AAP//AAD//wAAkBgkAJUYBwGeGKQA//8AAP//AAD//wAApRgtArkYBgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAyxhQAP//AADQGH8A//8AAP//AAD//wAA1xj/AP//AAD//wAA3xhgAP//AAD//wAA//8AAP//AAD//wAA//8AAOQYDwD//wAA//8AAP//AAD//wAA//8AAP//AADpGMAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP4YCAH//wAA//8AAP//AAD//wAABRlPAv//AAD//wAA//8AAP//AAAmGXkA//8AAP//AAD//wAA//8AAP//AAD//wAAKxk7AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1GSMC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEAZAQFJGUcC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGoZtQD//wAA//8AAP//AAD//wAAdBlZAf//AAD//wAA//8AAP//AAD//wAA//8AAJoZegD//wAA//8AAP//AAD//wAApBn4AKkZ7wD//wAA//8AALAZ8QD//wAA//8AAP//AAD//wAAuRmFAP//AAD//wAA//8AAP//AAD//wAAyBleAf//AADaGTAC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADxGfYA//8AAP//AAD//wAA//8AAPcZqAD//wAA/BnCAf//AAD//wAA//8AAAUaPQEqGggB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALxpNAVMasABYGvkAXRpoAP//AAD//wAA//8AAP//AABwGisBehqrAP//AAD//wAA//8AAP//AAB9GjoA//8AAP//AAD//wAA//8AAP//AAD//wAAhxpOAP//AAD//wAAjRpfAJIaSwH//wAA//8AAP//AAD//wAA//8AAJ0a5wCoGswB//8AAP//AACzGgcB//8AAP//AAD//wAAuBp8Af//AAD//wAA//8AAP//AAD//wAA0BotAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA2xp0AegaBwL//wAA//8AAP//AAD3GtAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8aLwAEG60AChvBABobCgH//wAA//8AAP//AAD//wAA//8AAP//AAAlG7gBOBvkAP//AAD//wAA//8AAD0bJQD//wAA//8AAP//AAD//wAA//8AAEMbZQD//wAATBuXAVYbrABiG5sB//8AAP//AAD//wAA//8AAP//AABrG7wAcBtJAv//AAD//wAA//8AAP//AAD//wAAkRtAAZsbFQL//wAA//8AAP//AAD//wAA//8AAKYb+AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAK0bxwCyG4gB//8AAP//AAD//wAA//8AAP//AAD//wAA0BvfAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAN8bRwH//wAA//8AAOcbQgH//wAA//8AAP//AAD//wAA//8AAO8bowEDHO4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAgcPwD//wAADRwJAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAYHL4AHxyzAP//AAD//wAA//8AACkcNwL//wAA//8AAP//AAD//wAA//8AAD8cEwH//wAAThwVAf//AAD//wAA//8AAP//AABhHL4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAHEcMAD//wAAhxy6Af//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAlxxGAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADEHCQA//8AAP//AAD//wAAyhydAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADVHD4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADeHEYA//8AAOQcrQD//wAA//8AAP//AAD//wAA//8AAP//AAD6HKcB//8AAP//AAD//wAADB0bAP//AAAVHWAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACkdsgE+HTgC//8AAP//AAD//wAA//8AAP//AABkHbsA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAaR2sAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB6HTIAkB1GAP//AAD//wAA//8AAP//AAD//wAAlR1jAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAJodQwH//wAA//8AAP//AAD//wAA//8AAP//AAClHXgB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAsB2CAf//AAD//wAA//8AAP//AAD//wAA//8AALsdtADAHdoA//8AAP//AADFHa4B4x1NAv//AAAEHkgC//8AAP//AAD//wAA//8AACAesgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALR7PAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA+HgMCSh7fAf//AAD//wAA//8AAP//AAD//wAAWx4SAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAF4e1gD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGMetQH//wAA//8AAP//AAD//wAA//8AAP//AAB+Hp4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAI0eQwD//wAA//8AAP//AAD//wAA//8AAP//AACSHvQAlx6vAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACcHkMA//8AAP//AAD//wAA//8AAP//AACnHncA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAC5HnUA//8AAP//AAD//wAA//8AAMEeEgL//wAA0x7uAP//AAD//wAA3x79AP//AAD//wAA//8AAOQeTwD//wAA6h79AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA8h5JAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD3Hr0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/Hv4B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAwfuQD//wAA//8AAP//AAD//wAA//8AABYfMQD//wAA//8AAP//AAD//wAALB89ADgfeQH//wAA//8AAP//AAD//wAASx9PAP//AAD//wAAXR8UAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAYR/DAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAcB+6AHUfHwF+H+kA//8AAIkfYwH//wAA//8AAKEfQgK1HzkCxB9fAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADLH1IA//8AAP//AADPH8QA1R8bAv//AAD//wAA//8AAOgfhgD//wAA//8AAPQfpQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA+R+lAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAMgrgAIIBIB//8AAP//AAD//wAA//8AAP//AAAbICgB//8AAP//AAD//wAA//8AAP//AAAtIC4C//8AAP//AAD//wAA//8AAP//AAA+IDMA//8AAP//AAD//wAA//8AAFQgsgBZIDsCaCAiAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAeyCLAf//AAD//wAA//8AAJMgVwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKggxQC3IMIA//8AAP//AAD//wAA//8AAMQgSQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMwgSgD//wAA//8AAP//AADRICwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1CA2Av//AAD//wAA6CDoAP//AAD//wAA//8AAP//AAD0IFIA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9IFEA//8AAP//AAD//wAA//8AAP//AAAFIQoB//8AAP//AAD//wAADCHPAP//AAAPIUoA//8AAP//AAD//wAA//8AAP//AAAXIR0C//8AACohPAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAyIdwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAOSGRAf//AABNIV0B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABpIY0B//8AAP//AAD//wAA//8AAP//AAD//wAAdyFYAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACWIbcA//8AAP//AAChIVQB//8AAP//AAD//wAA//8AAP//AAD//wAAtCETAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAuSEEAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAvyGoAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANUhqgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPAhFgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/iGwAP//AAD//wAA//8AAP//AAD//wAA//8AAAQibgH//wAA//8AABoixQD//wAA//8AACEiKgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACYixAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADAirgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADYi7AA+IhcB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAE8iEgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABaIkQC//8AAP//AABwInIB//8AAP//AAD//wAAlCK/AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAsyJBAP//AAD//wAAviK0AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAziLPAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA4SJRAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD2IgIB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAHI8cA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAEyNFAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAB4j5AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAKiPxAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAvI/4A//8AAP//AAA4IwoA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAD4jtgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAWyMEAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGUjUAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABuI+YA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAfSPTAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACOI9oA//8AAJUjMwL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAqSP+AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAK4jZAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALIjewH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzCPwAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADRI84B//8AAP//AAD//wAA//8AAOIj8AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADqI2AA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPkjTAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8jLwL//wAA//8AAP//AAD//wAA//8AABYkZAD//wAAHyQvAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1JM0A//8AAP//AAD//wAA//8AAP//AABFJLgAVSRHAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAWiQPAv//AABwJPkA//8AAP//AAD//wAAdySKAP//AAD//wAA//8AAP//AAD//wAA//8AAIckEAL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACqJGYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACxJGMA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALgkqQH//wAA//8AAMkkOAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAM4kwAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADVJMAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOkkQQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAO0kcAH//wAA//8AAAMlQAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAdJYMB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA3JboA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEElUgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABgJYUB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABzJUUC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACXJa8A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKwl1QD//wAA//8AAP//AAD//wAA//8AAP//AAC8JUgA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADBJUcA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMolaAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1yVIAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOslUwJsYW5hAGxpbmEAegB5aQBtbgBjbgBtYWthAHlpaWkAbWFuaQBpbmthbm5hZGEAY2kAbG8AbGFvAGxhb28Aenp6egBtaWFvAHllemkAaW5ua28AY28AbWUAbG9lAGdyYW4AcGkAbGluZWFyYQBtYXJrAGNhcmkAY2FyaWFuAHBvAG1lbmRla2lrYWt1aQBncmVrAHBlAG1lZXRlaW1heWVrAGlua2hhcm9zaHRoaQBnZW9yAGdyZWVrAG1ybwBtcm9vAGthbmEAbWVybwBtAGdvbm0AY2FrbQBpbm9zbWFueWEAaW5tYW5pY2hhZWFuAGluYXJtZW5pYW4AaW5tcm8AaW5taWFvAGMAaW5jaGFrbWEAY29tbW9uAG1hbmRhaWMAaW5teWFubWFyAGlubWFrYXNhcgBxYWFpAGluaWRlb2dyYXBoaWNzeW1ib2xzYW5kcHVuY3R1YXRpb24AaW5raG1lcgBjYW5zAHByZXBlbmRlZGNvbmNhdGVuYXRpb25tYXJrAGxtAG1hcmMAY29ubmVjdG9ycHVuY3R1YXRpb24AaW5ydW5pYwBpbmNhcmlhbgBpbmF2ZXN0YW4AY29tYmluaW5nbWFyawBpbmN1bmVpZm9ybW51bWJlcnNhbmRwdW5jdHVhdGlvbgBtZXJjAGluY2hvcmFzbWlhbgBwZXJtAGluYWhvbQBpbmlwYWV4dGVuc2lvbnMAaW5jaGVyb2tlZQBpbnNoYXJhZGEAbWFrYXNhcgBpbmFycm93cwBsYwBtYXNhcmFtZ29uZGkAaW5jdW5laWZvcm0AbWMAY2MAaW56YW5hYmF6YXJzcXVhcmUAbGluZXNlcGFyYXRvcgBhcm1uAHFtYXJrAGFybWkAaW5zYW1hcml0YW4AYXJtZW5pYW4AaW5tYXJjaGVuAGlubWFzYXJhbWdvbmRpAHFhYWMAcGMAaW5zY3JpcHRpb25hbHBhcnRoaWFuAGxhdG4AbGF0aW4AcmkAaW50aGFhbmEAaW5raG1lcnN5bWJvbHMAaW5rYXRha2FuYQBpbmN5cmlsbGljAGludGhhaQBpbmNoYW0AaW5rYWl0aGkAenMAbXRlaQBpbml0aWFscHVuY3R1YXRpb24AY3MAaW5zeXJpYWMAcGNtAGludGFrcmkAcHMAbWFuZABpbmthbmFleHRlbmRlZGEAbWVuZABtb2RpAGthdGFrYW5hAGlkZW8AcHJ0aQB5ZXppZGkAaW5pZGVvZ3JhcGhpY2Rlc2NyaXB0aW9uY2hhcmFjdGVycwB4aWRjb250aW51ZQBicmFpAGFzY2lpAHByaXZhdGV1c2UAYXJhYmljAGlubXlhbm1hcmV4dGVuZGVkYQBpbnJ1bWludW1lcmFsc3ltYm9scwBsZXR0ZXIAaW5uYW5kaW5hZ2FyaQBpbm1lZXRlaW1heWVrAGlub2xkbm9ydGhhcmFiaWFuAGluY2prY29tcGF0aWJpbGl0eWZvcm1zAGtuZGEAa2FubmFkYQBpbmNqa2NvbXBhdGliaWxpdHlpZGVvZ3JhcGhzAGwAaW5tb2RpAGluc3BlY2lhbHMAaW50cmFuc3BvcnRhbmRtYXBzeW1ib2xzAGlubWVuZGVraWtha3VpAGxldHRlcm51bWJlcgBpbm1lZGVmYWlkcmluAHhpZGMAaW5jaGVzc3N5bWJvbHMAaW5lbW90aWNvbnMAaW5saW5lYXJhAGlubGFvAGJyYWhtaQBpbm9sZGl0YWxpYwBpbm1pc2NlbGxhbmVvdXNtYXRoZW1hdGljYWxzeW1ib2xzYQBtb25nb2xpYW4AeGlkcwBwc2FsdGVycGFobGF2aQBncmxpbmsAa2l0cwBpbnN1bmRhbmVzZQBpbm9sZHNvZ2RpYW4AZ290aGljAGluYW5jaWVudHN5bWJvbHMAbWVyb2l0aWNjdXJzaXZlAGthbGkAY29udHJvbABwYXR0ZXJud2hpdGVzcGFjZQBpbmFkbGFtAHNrAGx0AGlubWFuZGFpYwBpbmNvbW1vbmluZGljbnVtYmVyZm9ybXMAaW5jamtjb21wYXRpYmlsaXR5aWRlb2dyYXBoc3N1cHBsZW1lbnQAc28AaWRjAGlub2xkc291dGhhcmFiaWFuAHBhbG0AaW5seWNpYW4AaW50b3RvAGlkc2JpbmFyeW9wZXJhdG9yAGlua2FuYXN1cHBsZW1lbnQAaW5jamtzdHJva2VzAHNvcmEAYmFtdW0AaW5vcHRpY2FsY2hhcmFjdGVycmVjb2duaXRpb24AaW5kb21pbm90aWxlcwBiYXRrAGdyZXh0AGJhdGFrAHBhdHdzAGlubWFsYXlhbGFtAGlubW9kaWZpZXJ0b25lbGV0dGVycwBpbnNtYWxsa2FuYWV4dGVuc2lvbgBiYXNzAGlkcwBwcmludABpbmxpbmVhcmJpZGVvZ3JhbXMAaW50YWl0aGFtAGlubXVzaWNhbHN5bWJvbHMAaW56bmFtZW5ueW11c2ljYWxub3RhdGlvbgBzYW1yAGluc3lsb3RpbmFncmkAaW5uZXdhAHNhbWFyaXRhbgBzAGpvaW5jAGluY29udHJvbHBpY3R1cmVzAGxpc3UAcGF1YwBpbm1pc2NlbGxhbmVvdXNzeW1ib2xzAGluYW5jaWVudGdyZWVrbXVzaWNhbG5vdGF0aW9uAGlubWlzY2VsbGFuZW91c3N5bWJvbHNhbmRhcnJvd3MAc20AaW5taXNjZWxsYW5lb3Vzc3ltYm9sc2FuZHBpY3RvZ3JhcGhzAGludWdhcml0aWMAcGQAaXRhbABhbG51bQB6aW5oAGlud2FyYW5nY2l0aQBpbmxhdGluZXh0ZW5kZWRhAGluc2F1cmFzaHRyYQBpbnRhaWxlAGlub2xkdHVya2ljAGlkY29udGludWUAaW5oYW5pZmlyb2hpbmd5YQBzYwBpZHN0AGlubGF0aW5leHRlbmRlZGUAbG93ZXIAYmFsaQBpbmhpcmFnYW5hAGluY2F1Y2FzaWFuYWxiYW5pYW4AaW5kZXNlcmV0AGJsYW5rAGluc3BhY2luZ21vZGlmaWVybGV0dGVycwBjaGVyb2tlZQBpbmx5ZGlhbgBwaG9lbmljaWFuAGNoZXIAYmVuZ2FsaQBtYXJjaGVuAGlud2FuY2hvAGdyYXBoZW1lbGluawBiYWxpbmVzZQBpZHN0YXJ0AGludGFtaWwAaW5tdWx0YW5pAGNoYW0AY2hha21hAGthaXRoaQBpbm1haGFqYW5pAGdyYXBoZW1lYmFzZQBpbm9naGFtAGNhc2VkAGlubWVldGVpbWF5ZWtleHRlbnNpb25zAGtob2praQBpbmFuY2llbnRncmVla251bWJlcnMAcnVucgBraGFyAG1hbmljaGFlYW4AbG93ZXJjYXNlAGNhbmFkaWFuYWJvcmlnaW5hbABpbm9sY2hpa2kAcGxyZABpbmV0aGlvcGljAHNpbmQAY3djbQBpbmVhcmx5ZHluYXN0aWNjdW5laWZvcm0AbGwAemwAaW5zaW5oYWxhAGlua2h1ZGF3YWRpAHhpZHN0YXJ0AHhkaWdpdABiaWRpYwBjaG9yYXNtaWFuAGluc2lkZGhhbQBpbmNvdW50aW5ncm9kbnVtZXJhbHMAYWhvbQBjaHJzAGtobXIAaW5vbGR1eWdodXIAaW5ncmFudGhhAGJhbXUAaW5zY3JpcHRpb25hbHBhaGxhdmkAZ29uZwBtb25nAGlubGF0aW5leHRlbmRlZGMAaW5uZXd0YWlsdWUAYWRsbQBpbm9zYWdlAGluZ2VuZXJhbHB1bmN0dWF0aW9uAGdlb3JnaWFuAGtoYXJvc2h0aGkAc2luaGFsYQBraG1lcgBzdGVybQBjYXNlZGxldHRlcgBtdWx0YW5pAGd1bmphbGFnb25kaQBtYXRoAGluY3lyaWxsaWNzdXBwbGVtZW50AGluZ2VvcmdpYW4AZ290aABpbmNoZXJva2Vlc3VwcGxlbWVudABnbGFnb2xpdGljAHF1b3RhdGlvbm1hcmsAdWlkZW8AaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmEAam9pbmNvbnRyb2wAcnVuaWMAaW5tb25nb2xpYW4AZW1vamkAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmUAZ3JhbnRoYQBpbnRpcmh1dGEAaW5oYXRyYW4AYWRsYW0AbHUAaW5raGl0YW5zbWFsbHNjcmlwdABrdGhpAGluZ3VybXVraGkAc3VuZGFuZXNlAGlub2xkaHVuZ2FyaWFuAHRha3JpAGludGFtaWxzdXBwbGVtZW50AG9yaXlhAGludmFpAGJyYWgAaW5taXNjZWxsYW5lb3VzdGVjaG5pY2FsAHZhaQB2YWlpAHNhdXIAZ3VydQB0YWlsZQBpbmhlcml0ZWQAcGF1Y2luaGF1AHphbmIAcHVuY3QAbGluYgBndXJtdWtoaQB0YWtyAGlubmFiYXRhZWFuAGlua2FuYnVuAGxvZ2ljYWxvcmRlcmV4Y2VwdGlvbgBpbmJoYWlrc3VraQBpbmNqa3VuaWZpZWRpZGVvZ3JhcGhzZXh0ZW5zaW9uYwBncmFwaGVtZWV4dGVuZABpbmVsYmFzYW4AaW5zb3Jhc29tcGVuZwBoYW4AaGFuaQBsaW1idQB1bmFzc2lnbmVkAHJhZGljYWwAaGFubwBsb3dlcmNhc2VsZXR0ZXIAY250cmwAaW5jamt1bmlmaWVkaWRlb2dyYXBocwBsaW5lYXJiAGluYW5hdG9saWFuaGllcm9nbHlwaHMAaGFudW5vbwBpbmtob2praQBpbmxhdGluZXh0ZW5kZWRhZGRpdGlvbmFsAGluZW5jbG9zZWRhbHBoYW51bWVyaWNzAGFuYXRvbGlhbmhpZXJvZ2x5cGhzAG4AZW1vamltb2RpZmllcgBzZABoaXJhAHNpZGQAbGltYgBiaGtzAHBobGkAbmFuZGluYWdhcmkAbm8Ac2F1cmFzaHRyYQBpbnRhbmdzYQBjd3QAYmhhaWtzdWtpAGluZ3JlZWthbmRjb3B0aWMAbmtvAG5rb28AdGVybQBvc2FnZQB4cGVvAHRuc2EAdGFuZ3NhAGlua2F5YWhsaQBwAGlub3JpeWEAaW55ZXppZGkAaW5hcmFiaWMAaW5waG9lbmljaWFuAGluc2hhdmlhbgBiaWRpY29udHJvbABpbmVuY2xvc2VkaWRlb2dyYXBoaWNzdXBwbGVtZW50AHdhcmEAbXVsdABpbm1lcm9pdGljaGllcm9nbHlwaHMAc2luaABzaGF2aWFuAGlua2FuZ3hpcmFkaWNhbHMAZW5jbG9zaW5nbWFyawBhcmFiAGluc2luaGFsYWFyY2hhaWNudW1iZXJzAGJyYWlsbGUAaW5oYW51bm9vAG9zbWEAYmVuZwBpbmJhc2ljbGF0aW4AaW5hcmFiaWNwcmVzZW50YXRpb25mb3Jtc2EAY3BtbgByZWdpb25hbGluZGljYXRvcgBpbmVuY2xvc2VkYWxwaGFudW1lcmljc3VwcGxlbWVudABlbW9qaW1vZGlmaWVyYmFzZQBpbmdyZWVrZXh0ZW5kZWQAbGVwYwBpbmRvZ3JhAGZvcm1hdABseWNpAGx5Y2lhbgBkaWEAaW5waGFpc3Rvc2Rpc2MAZGkAZGlhawB1bmtub3duAGdyYmFzZQBteW1yAG15YW5tYXIAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmQAZW1vZABpbmdlb21ldHJpY3NoYXBlcwBpbmN5cHJvbWlub2FuAGluc3VuZGFuZXNlc3VwcGxlbWVudAB0b3RvAGdsYWcAdGFpdmlldABhc2NpaWhleGRpZ2l0AG9kaQBwdW5jdHVhdGlvbgB2cwBzdW5kAGluc295b21ibwBpbmltcGVyaWFsYXJhbWFpYwBpbmJhdGFrAGlubGF0aW5leHRlbmRlZGQAaW5udXNodQBpbnRpYmV0YW4AaW5sb3dzdXJyb2dhdGVzAGhhdHJhbgBpbmJsb2NrZWxlbWVudHMAaW5zb2dkaWFuAGluZGluZ2JhdHMAaW5lbHltYWljAGluZGV2YW5hZ2FyaQBlbW9qaWNvbXBvbmVudABpbmthdGFrYW5hcGhvbmV0aWNleHRlbnNpb25zAGlkZW9ncmFwaGljAGNvcHRpYwBpbm51bWJlcmZvcm1zAGhhdHIAaW5jamtjb21wYXRpYmlsaXR5AGlua2FuYWV4dGVuZGVkYgBwYXR0ZXJuc3ludGF4AGF2ZXN0YW4AaW5hcmFiaWNleHRlbmRlZGEAc29nZGlhbgBzb2dvAGludGFuZ3V0AGNvcHQAZ3JhcGgAb2lkYwBpbmJ5emFudGluZW11c2ljYWxzeW1ib2xzAGluaW5zY3JpcHRpb25hbHBhcnRoaWFuAGRpYWNyaXRpYwBpbmluc2NyaXB0aW9uYWxwYWhsYXZpAGlubWF5YW5udW1lcmFscwBpbm15YW5tYXJleHRlbmRlZGIAaW50YWdzAGphdmEAY3BydABuYW5kAHBhdHN5bgB0YWxlAG9pZHMAc2VudGVuY2V0ZXJtaW5hbABpbXBlcmlhbGFyYW1haWMAdGVybWluYWxwdW5jdHVhdGlvbgBseWRpAGx5ZGlhbgBib3BvAGphdmFuZXNlAGN3bABpbmdlb21ldHJpY3NoYXBlc2V4dGVuZGVkAGlub2xkcGVyc2lhbgBpbm9ybmFtZW50YWxkaW5nYmF0cwBpbmJyYWlsbGVwYXR0ZXJucwBpbnZhcmlhdGlvbnNlbGVjdG9ycwBjYXNlaWdub3JhYmxlAGlueWlyYWRpY2FscwBpbm5vYmxvY2sAaW52ZXJ0aWNhbGZvcm1zAGluZXRoaW9waWNzdXBwbGVtZW50AHNoYXJhZGEAaW5iYWxpbmVzZQBpbnZlZGljZXh0ZW5zaW9ucwB3b3JkAGlubWlzY2VsbGFuZW91c21hdGhlbWF0aWNhbHN5bWJvbHNiAHRhbWwAb2xjawBpZHNiAG9sb3dlcgBkZWNpbWFsbnVtYmVyAGF2c3QAaW5jeXJpbGxpY2V4dGVuZGVkYQBvbGNoaWtpAHNocmQAaW50YWl4dWFuamluZ3N5bWJvbHMAaW50YWl2aWV0AHVnYXIAaW5jamtzeW1ib2xzYW5kcHVuY3R1YXRpb24AYm9wb21vZm8AaW5saXN1AGlub2xkcGVybWljAHNpZGRoYW0AemFuYWJhemFyc3F1YXJlAGFzc2lnbmVkAG1lZGYAY2xvc2VwdW5jdHVhdGlvbgBzYXJiAHNvcmFzb21wZW5nAGludmFyaWF0aW9uc2VsZWN0b3Jzc3VwcGxlbWVudABpbmhhbmd1bGphbW8AbWVkZWZhaWRyaW4AcGhhZwBpbmxpc3VzdXBwbGVtZW50AGluY29wdGljAGluc3lyaWFjc3VwcGxlbWVudABpbmhhbmd1bGphbW9leHRlbmRlZGEAY3lybABpbnNob3J0aGFuZGZvcm1hdGNvbnRyb2xzAGluY3lyaWxsaWNleHRlbmRlZGMAZ3VqcgBjd3UAZ3VqYXJhdGkAc3BhY2luZ21hcmsAYWxwaGEAbWx5bQBpbnBhbG15cmVuZQBtYWxheWFsYW0Ac3BhY2UAaW5sZXBjaGEAcGFsbXlyZW5lAHNveW8AbWVyb2l0aWNoaWVyb2dseXBocwB4c3V4AGludGVsdWd1AGluZGV2YW5hZ2FyaWV4dGVuZGVkAGlubWVyb2l0aWNjdXJzaXZlAGRzcnQAdGhhYQB0aGFhbmEAYnVnaQB0aGFpAHNvZ2QAdGl0bGVjYXNlbGV0dGVyAGlubWF0aGVtYXRpY2FsYWxwaGFudW1lcmljc3ltYm9scwBvcmtoAGNhdWNhc2lhbmFsYmFuaWFuAGluYmFtdW0AZGVzZXJldABpbmdlb3JnaWFuc3VwcGxlbWVudABidWdpbmVzZQBzZXBhcmF0b3IAaW5zbWFsbGZvcm12YXJpYW50cwB0aXJoAGluYnJhaG1pAG5kAHBobngAbmV3YQBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3MAbWFoagBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3Nmb3JzeW1ib2xzAG9sZHBlcnNpYW4AbWFoYWphbmkAdGFpdGhhbQBuZXd0YWlsdWUAbmV3bGluZQBzeXJjAGlubW9uZ29saWFuc3VwcGxlbWVudABpbnVuaWZpZWRjYW5hZGlhbmFib3JpZ2luYWxzeWxsYWJpY3NleHRlbmRlZGEAc2hhdwBidWhkAHZpdGhrdXFpAG51bWJlcgBpbnN1dHRvbnNpZ253cml0aW5nAHZhcmlhdGlvbnNlbGVjdG9yAGV0aGkAbGVwY2hhAHRpcmh1dGEAcm9oZwBhaGV4AGluY29wdGljZXBhY3RudW1iZXJzAHdhbmNobwBpbmNqa3VuaWZpZWRpZGVvZ3JhcGhzZXh0ZW5zaW9uZwBraG9qAGN1bmVpZm9ybQBpbmR1cGxveWFuAHVnYXJpdGljAGluc3ltYm9sc2FuZHBpY3RvZ3JhcGhzZXh0ZW5kZWRhAG9sZHBlcm1pYwBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3NzdXBwbGVtZW50AGtodWRhd2FkaQB0YW5nAHN5cmlhYwB0YWdiYW53YQBtb2RpZmllcmxldHRlcgBpbmN1cnJlbmN5c3ltYm9scwBpbm55aWFrZW5ncHVhY2h1ZWhtb25nAHRhbWlsAHRhbHUAaW5nb3RoaWMAaW51bmlmaWVkY2FuYWRpYW5hYm9yaWdpbmFsc3lsbGFiaWNzAHdjaG8AaW5jb21iaW5pbmdkaWFjcml0aWNhbG1hcmtzZXh0ZW5kZWQAb2dhbQB0ZWx1AGlkc3RyaW5hcnlvcGVyYXRvcgBpbmJlbmdhbGkAbmwAc3Vycm9nYXRlAGViYXNlAGhhbmcAaW5idWdpbmVzZQBtYXRoc3ltYm9sAGludml0aGt1cWkAdml0aABpbmNqa3JhZGljYWxzc3VwcGxlbWVudABpbmd1amFyYXRpAGluZ2xhZ29saXRpYwBpbmd1bmphbGFnb25kaQBwaGFnc3BhAGN3Y2YAbmNoYXIAb3RoZXJpZGNvbnRpbnVlAHdoaXRlc3BhY2UAaW5saW5lYXJic3lsbGFiYXJ5AHNnbncAb3RoZXIAaGlyYWdhbmEAaW5waGFnc3BhAG90aGVybnVtYmVyAGlucmVqYW5nAG9zZ2UAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmIAaW50YWdhbG9nAGluYmFzc2F2YWgAdGFuZ3V0AGhtbmcAaW5lbmNsb3NlZGNqa2xldHRlcnNhbmRtb250aHMAY3VycmVuY3lzeW1ib2wAaW5saW1idQBpbmJ1aGlkAGluZXRoaW9waWNleHRlbmRlZGEAc3lsbwBkYXNoAHdhcmFuZ2NpdGkAb2FscGhhAG9sZGl0YWxpYwBpbm90dG9tYW5zaXlhcW51bWJlcnMAc3BhY2VzZXBhcmF0b3IAaW5sYXRpbjFzdXBwbGVtZW50AG90aGVyYWxwaGFiZXRpYwBjaGFuZ2Vzd2hlbmNhc2VtYXBwZWQAaW5hZWdlYW5udW1iZXJzAGludW5pZmllZGNhbmFkaWFuYWJvcmlnaW5hbHN5bGxhYmljc2V4dGVuZGVkAGJ1aGlkAGluamF2YW5lc2UAY3lyaWxsaWMAZG9ncmEAbm9uY2hhcmFjdGVyY29kZXBvaW50AGluaGFuZ3Vsc3lsbGFibGVzAGJhc3NhdmFoAGlubGV0dGVybGlrZXN5bWJvbHMAaW5jb21iaW5pbmdoYWxmbWFya3MAaW5hcmFiaWNtYXRoZW1hdGljYWxhbHBoYWJldGljc3ltYm9scwBvcnlhAGlucHJpdmF0ZXVzZWFyZWEAY2hhbmdlc3doZW50aXRsZWNhc2VkAGRvZ3IAaGVicgBpbnRhZ2JhbndhAGludGlmaW5hZ2gAaW5ib3BvbW9mbwBuYXJiAHJqbmcAaW5hbHBoYWJldGljcHJlc2VudGF0aW9uZm9ybXMAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmYAaW5zeW1ib2xzZm9ybGVnYWN5Y29tcHV0aW5nAG9sZGh1bmdhcmlhbgBmaW5hbHB1bmN0dWF0aW9uAGlucGF1Y2luaGF1AGlucHNhbHRlcnBhaGxhdmkAenAAcGhscABpbmFyYWJpY3ByZXNlbnRhdGlvbmZvcm1zYgBub25zcGFjaW5nbWFyawBkZXZhAHRhdnQAaG1ucABkZXZhbmFnYXJpAGtoaXRhbnNtYWxsc2NyaXB0AGtheWFobGkAaW5iYW11bXN1cHBsZW1lbnQAc3lsb3RpbmFncmkAdGlidABlcHJlcwB0aWJldGFuAGVsYmEAb3NtYW55YQBpbmRpdmVzYWt1cnUAb2xkdHVya2ljAGNoYW5nZXN3aGVubG93ZXJjYXNlZABjeXByb21pbm9hbgBpbmV0aGlvcGljZXh0ZW5kZWQAZW1vamlwcmVzZW50YXRpb24AYW55AG90aGVybG93ZXJjYXNlAG91Z3IAaW5oZWJyZXcAc29mdGRvdHRlZABpbm1hdGhlbWF0aWNhbG9wZXJhdG9ycwBpbmFsY2hlbWljYWxzeW1ib2xzAGlubWFoam9uZ3RpbGVzAGhhbmd1bABleHQAb21hdGgAaW50YW5ndXRjb21wb25lbnRzAG90aGVybGV0dGVyAG5iYXQAbmFiYXRhZWFuAG5zaHUAcGFyYWdyYXBoc2VwYXJhdG9yAGluYXJhYmljZXh0ZW5kZWRiAGlubGF0aW5leHRlbmRlZGcAY2hhbmdlc3doZW51cHBlcmNhc2VkAGh1bmcAaW5wbGF5aW5nY2FyZHMAaW5hcmFiaWNzdXBwbGVtZW50AGlueWlqaW5naGV4YWdyYW1zeW1ib2xzAGlucGhvbmV0aWNleHRlbnNpb25zAG90aGVydXBwZXJjYXNlAG90aGVyaWRzdGFydABlbGJhc2FuAGVseW0AY2YAaW5pbmRpY3NpeWFxbnVtYmVycwBvdGhlcnN5bWJvbABleHRlbmRlcgBleHRwaWN0AHdzcGFjZQBwZgBlbHltYWljAGludGFuZ3V0c3VwcGxlbWVudABjeXByaW90AHN5bWJvbABpbmN5cmlsbGljZXh0ZW5kZWRiAGluc3VwZXJzY3JpcHRzYW5kc3Vic2NyaXB0cwBpbnlpc3lsbGFibGVzAGlucGhvbmV0aWNleHRlbnNpb25zc3VwcGxlbWVudABvbGRzb2dkaWFuAGluZ2VvcmdpYW5leHRlbmRlZABobHV3AGRpZ2l0AGluaGFuZ3VsamFtb2V4dGVuZGVkYgBpbmhpZ2hwcml2YXRldXNlc3Vycm9nYXRlcwBpbnBhaGF3aGhtb25nAG9naGFtAGluc3VwcGxlbWVudGFsYXJyb3dzYQBvdXBwZXIAYWdoYgBvdGhlcm1hdGgAbnVzaHUAc295b21ibwBpbmxhdGluZXh0ZW5kZWRiAGFscGhhYmV0aWMAaW5zdXBwbGVtZW50YWxhcnJvd3NjAGluc3VwcGxlbWVudGFsbWF0aGVtYXRpY2Fsb3BlcmF0b3JzAG90aGVyZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludABkZXByZWNhdGVkAG9sZG5vcnRoYXJhYmlhbgBpbmN5cHJpb3RzeWxsYWJhcnkAZXh0ZW5kZWRwaWN0b2dyYXBoaWMAdW5pZmllZGlkZW9ncmFwaABwYWhhd2hobW9uZwBkaXZlc2FrdXJ1AHNpZ253cml0aW5nAHRhZ2IAdGlmaW5hZ2gAdXBwZXIAaW5oYWxmd2lkdGhhbmRmdWxsd2lkdGhmb3JtcwB1cHBlcmNhc2UAZXRoaW9waWMAbW9kaWZpZXJzeW1ib2wAb3RoZXJwdW5jdHVhdGlvbgByZWphbmcAaW5ldGhpb3BpY2V4dGVuZGVkYgB0Zm5nAGhleABpbnN1cHBsZW1lbnRhbHB1bmN0dWF0aW9uAHRnbGcAaW5sYXRpbmV4dGVuZGVkZgB0YWdhbG9nAGhhbmlmaXJvaGluZ3lhAGVjb21wAGluZ2xhZ29saXRpY3N1cHBsZW1lbnQAaGV4ZGlnaXQAY2hhbmdlc3doZW5jYXNlZm9sZGVkAGRhc2hwdW5jdHVhdGlvbgBvbGRzb3V0aGFyYWJpYW4AZHVwbABpbmVneXB0aWFuaGllcm9nbHlwaHMAdGVsdWd1AHVwcGVyY2FzZWxldHRlcgBpbmVneXB0aWFuaGllcm9nbHlwaGZvcm1hdGNvbnRyb2xzAGh5cGhlbgBoZWJyZXcAaW5oaWdoc3Vycm9nYXRlcwB6eXl5AG9ncmV4dABvdGhlcmdyYXBoZW1lZXh0ZW5kAGRlcABpbnN1cHBsZW1lbnRhbGFycm93c2IAZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludABpbmhhbmd1bGNvbXBhdGliaWxpdHlqYW1vAG9sZHV5Z2h1cgBpbnN1cHBsZW1lbnRhcnlwcml2YXRldXNlYXJlYWEAaW5ib3BvbW9mb2V4dGVuZGVkAGluc3VwcGxlbWVudGFsc3ltYm9sc2FuZHBpY3RvZ3JhcGhzAG55aWFrZW5ncHVhY2h1ZWhtb25nAG9wZW5wdW5jdHVh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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7KBQnJiUOBSQUBxkiHSAQOx87OwIBOxkPOw47Oxw7Ajs7Ows7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Oxg7Fjs7Czs7Ozs7BzsAOzsQOwE7OxA7OzsPOzs7Bjs7OzsAOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwYDDg4ODg4OAQ4ODg4ODg4ODg4ADg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgAODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgQODgUODgQODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgoODg4ODgkOAQ4ODg4ODg4ODg4OAA4ODggODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg44ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OAADChk4OB4AODgAFDg4OA84OBQ4HjgAADg4ODg4ODg4Dzg4ODg4GTgKODg4OAU4ADgAOAU4OBQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgAAwoZODgeADg4ABQ4ODgPODgUOB44AAA4ODg4ODg4OA84ODg4OBk4Cjg4ODgFOAA4ADgFODgUODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4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AGwHAQBKbgEAzw8BABYBAADMAAEA2iwAAD8LAQDaBAAAwwQBANoeAACECAEA2h8AAF8JAQC8JAAA1AkBAJoDAAAKAwEAxBAAAMMLAQDaAAAAmQABABQEAQCnDQEAFCwAAEwKAQAUBAAAjQMBABQeAABpBwEAuiQAAM4JAQAUAQAAyQABAP///////wAAwhAAAL0LAQCOAwAARwMBABoEAQC5DQEAGiwAAF4KAQAaBAAAoAMBABoeAAByBwEAGh8AANsIAQAaAQAA0gABAP///////wAAtiQAAMIJAQD///////8AAP///////wAAigMAAOYCAQAYBAEAsw0BABgsAABYCgEAGAQAAJoDAQAYHgAAbwcBABgfAADVCAEAGAEAAM8AAQAOBAEAlQ0BAA4sAAA6CgEADgQAABEEAQAOHgAAYAcBAA4fAADPCAEADgEAAMAAAQAC6QEAFxABAP///////wAAxyQAAPUJAQAMBAEAjw0BAAwsAAA0CgEADAQAAAsEAQAMHgAAXQcBAAwfAADJCAEADAEAAL0AAQAIBAEAgw0BAAgsAAAoCgEACAQAAP8DAQAIHgAAVwcBAAgfAAC9CAEACAEAALcAAQAGBAEAfQ0BAAYsAAAiCgEABgQAAPkDAQAGHgAAVAcBAP///////wAABgEAALQAAQD///////8AAAIFAAD/BAEABAQBAHcNAQAELAAAHAoBAAQEAADzAwEABB4AAFEHAQD///////8AAAQBAACxAAEAAAQBAGsNAQAALAAAEAoBAAAEAADnAwEAAB4AAEsHAQD///////8AAAABAACrAAEA////////AAB1BQEAXg4BAJQFAQCyDgEAKiwAAI4KAQAqBAAA1AMBACoeAACKBwEAKh8AAO0IAQAqAQAA6gABACqnAABLDAEAwgMAACYDAQAmBAEA3Q0BACYsAACCCgEAJgQAAMgDAQAmHgAAhAcBALcEAQD4DQEAJgEAAOQAAQAmpwAARQwBAJ4DAAAYAwEAtx8AAAoAAwC3AQAAwgIBAJIFAQCvDgEAt6sAABUHAQD///////8AALccAAArBgEAewEAAFwBAQB7pwAAtAwBAHurAABhBgEAjAMAAEQDAQAuLAAAmgoBAC4EAADhAwEALh4AAJAHAQAuHwAA+QgBAC4BAADwAAEALqcAAFEMAQCPHwAApAACAI8BAABxAgEA////////AACPqwAAnQYBAAL7AAAMAAIAiAMAAOACAQCPDAEA5Q4BAP///////wAALCwAAJQKAQAsBAAA2wMBACweAACNBwEALB8AAPMIAQAsAQAA7QABACynAABODAEAKCwAAIgKAQAoBAAAzgMBACgeAACHBwEAKB8AAOcIAQAoAQAA5wABACinAABIDAEA////////AAD///////8AAIYFAQCODgEAJAQBANcNAQAkLAAAfAoBACQEAADCAwEAJB4AAIEHAQBHBQAAhgUBACQBAADhAAEAJKcAAEIMAQAiBAEA0Q0BACIsAAB2CgEAIgQAALoDAQAiHgAAfgcBADP/AABTDQEAIgEAAN4AAQAipwAAPwwBANoDAABTAwEAwAQBABMOAQDALAAAGAsBAMAEAACxBAEAwB4AAF0IAQAx/wAATQ0BADsCAABBAgEAwKcAAAINAQCzBAEA7A0BAMAAAABNAAEA////////AAAqIQAAGwABALMfAAA+AAIAswEAAJIBAQCzpwAAGg0BALOrAAAJBwEA////////AACzHAAAHwYBAP///////wAAJiEAADoDAQA1BQAAUAUBALcQAACcCwEAsQQBAOYNAQD///////8AALcYAQCWDwEASgIAAFMCAQCOBQEAow4BALEBAAC5AgEAsacAALACAQCxqwAAAwcBAP///////wAAsRwAABkGAQCxDAEASw8BADwFAABlBQEA////////AAAcAgAAIAIBAE4eAADABwEAigUBAJoOAQBOAQAAGgEBAE6nAAB+DAEAqx8AAOAAAgBOAAAAJQABAKunAAB3AgEAq6sAAPEGAQAWAgAAFwIBAKscAAAHBgEAqwwBADkPAQCXHgAAIgACAJcfAADMAAIAlwEAAIkCAQBOpgAA5QsBAJerAAC1BgEAggUBAIIOAQCXHAAAywUBAJcMAQD9DgEA////////AABObgEA2w8BAHEFAQBSDgEAFAIAABQCAQDEJAAA7AkBAH4sAABEAgEAfgQAAEUEAQB+HgAACQgBACr/AAA4DQEAgAUBAHwOAQB+pwAAtwwBAH6rAABqBgEAGgIAAB0CAQDCJAAA5gkBAKkfAADWAAIAqQEAAK0CAQAm/wAALA0BAKmrAADrBgEAjQUBAKAOAQCpHAAAAQYBAKkMAQAzDwEA////////AAD///////8AABgCAAAaAgEAwBAAALcLAQAgBAEAyw0BACAsAABwCgEAIAQAALMDAQAgHgAAewcBAA4CAAALAgEAIAEAANsAAQCzEAAAkAsBAP///////wAALv8AAEQNAQCzGAEAig8BAP///////wAAkR8AAK4AAgCRAQAAcQEBAAwCAAAIAgEAkasAAKMGAQD///////8AAJEcAAC5BQEAkQwBAOsOAQD///////8AAAgCAAACAgEAsRAAAIoLAQDVAQAAuQEBACz/AAA+DQEAsRgBAIQPAQDVAAAAjQABAAYCAAD/AQEAjwMAAEoDAQD///////8AACj/AAAyDQEA1CwAADYLAQDUBAAAugQBANQeAAB7CAEAjAUBAJ0OAQAEAgAA/AEBAKsQAAB4CwEAOwUAAGIFAQDUAAAAigABAKsYAQByDwEAJP8AACYNAQAAAgAA9gEBAP///////wAA////////AAAc6QEAZRABAP///////wAAiAUBAJQOAQAi/wAAIA0BAP///////wAAKgIAADICAQD///////8AAP4EAAD5BAEA/h4AALoIAQAW6QEAUxABAP4BAADzAQEA////////AABKBQAAjwUBACYCAAAsAgEAHgQBAMUNAQAeLAAAagoBAB4EAACsAwEAHh4AAHgHAQD///////8AAB4BAADYAAEA////////AACpEAAAcgsBABwFAAAmBQEAFOkBAE0QAQCpGAEAbA8BANIEAQBJDgEA0iwAADMLAQDSBAAAtwQBANIeAAB4CAEA0h8AABQAAwAuAgAAOAIBABYFAAAdBQEAGukBAF8QAQDSAAAAhAABAKcfAAD0AAIApwEAAIkBAQD///////8AAKerAADlBgEA////////AACnHAAA+wUBAKcMAQAtDwEA////////AAD///////8AABjpAQBZEAEALAIAADUCAQAUBQAAGgUBAHwEAABCBAEAfB4AAAYIAQAzBQAASgUBAA7pAQA7EAEAKAIAAC8CAQB8qwAAZAYBAEgeAAC3BwEASB8AABcJAQAaBQAAIwUBAEinAAB1DAEAMQUAAEQFAQBIAAAAFQABAAzpAQA1EAEAaywAAK8KAQAkAgAAKQIBAKsDAABBAwEAax8AAD4JAQD///////8AAAjpAQApEAEAGAUAACAFAQBIpgAA2wsBACICAAAmAgEA////////AACXAwAA/QIBAAbpAQAjEAEADgUAABEFAQBIbgEAyQ8BAP///////wAAVh4AAMwHAQBWHwAAPgADAFYBAAAmAQEAVqcAAIoMAQAE6QEAHRABAFYAAAA+AAEADAUAAA4FAQD///////8AABb7AAB9AAIA////////AAAA6QEAERABAP///////wAACAUAAAgFAQD///////8AAFamAADxCwEA////////AACpAwAAOgMBAP///////wAABgUAAAUFAQD///////8AAFZuAQDzDwEA////////AAAU+wAAbQACAP///////wAAtyQAAMUJAQD///////8AAAQFAAACBQEA4iwAAEsLAQDiBAAAzwQBAOIeAACQCAEA4h8AACQAAwDiAQAAzgEBAAAFAAD8BAEATgIAAFkCAQCnEAAAbAsBAP///////wAA////////AACnGAEAZg8BAJEDAADpAgEA////////AAAqBQAAOwUBAFQeAADJBwEAVB8AADkAAwBUAQAAIwEBAFSnAACHDAEA////////AABUAAAAOAABANUDAAAwAwEAJgUAADUFAQA5HwAAAgkBADkBAAD8AAEAEgQBAKENAQASLAAARgoBABIEAACGAwEAEh4AAGYHAQBUpgAA7gsBABIBAADGAAEAEAQBAJsNAQAQLAAAQAoBABAEAACAAwEAEB4AAGMHAQBUbgEA7Q8BABABAADDAAEA////////AABrIQAAsAkBAC4FAABBBQEAjwUBAKYOAQA/HwAAFAkBAD8BAAAFAQEABvsAAB0AAgBSHgAAxgcBAFIfAAA0AAMAUgEAACABAQBSpwAAhAwBAP///////wAAUgAAADEAAQD///////8AAAT7AAAFAAMA/gMAANcCAQAsBQAAPgUBACACAAB9AQEA////////AADAJAAA4AkBAAD7AAAEAAIAUqYAAOsLAQAoBQAAOAUBAFAeAADDBwEAUB8AAFQAAgBQAQAAHQEBAFCnAACBDAEAUm4BAOcPAQBQAAAAKwABAP///////wAAygQBADEOAQDKLAAAJwsBACQFAAAyBQEAyh4AAGwIAQDKHwAAWQkBAMoBAACpAQEA////////AABQpgAA6AsBAMoAAABsAAEAIgUAAC8FAQCnAwAANAMBAPAEAADkBAEA8B4AAKUIAQBQbgEA4Q8BAPABAAAUAAIA2CwAADwLAQDYBAAAwAQBANgeAACBCAEA2B8AAH0JAQD///////8AANinAAAUDQEA////////AADYAAAAkwABANYsAAA5CwEA1gQAAL0EAQDWHgAAfggBANYfAABMAAIA////////AADWpwAAEQ0BAP///////wAA1gAAAJAAAQDIBAEAKw4BAMgsAAAkCwEAuQQBAP4NAQDIHgAAaQgBAMgfAABTCQEAyAEAAKUBAQC5HwAAegkBAP///////wAAyAAAAGYAAQC5qwAAGwcBAP///////wAAuRwAADEGAQAeAgAAIwIBAMYEAQAlDgEAxiwAACELAQD///////8AAMYeAABmCAEAxh8AAEMAAgBOBQAAmwUBAManAABIBwEAxQQBACIOAQDGAAAAYAABAMUEAACiBAEAuwQBAAQOAQC1BAEA8g0BAMUBAAChAQEAxacAAKoCAQC7HwAAUAkBAMUAAABcAAEAtQEAAJUBAQC7qwAAIQcBALWrAAAPBwEAtQAAABEDAQC1HAAAJQYBAK8fAAD0AAIArwEAAI8BAQD///////8AAK+rAAD9BgEAaSwAAKwKAQCvHAAAEwYBAK8MAQBFDwEAaR8AADgJAQB+BQEAdg4BACDpAQBxEAEA////////AAClHwAA6gACAP///////wAASAIAAFACAQClqwAA3wYBAOIDAABfAwEApRwAAPUFAQClDAEAJw8BAP///////wAAOf8AAGUNAQCjHwAA4AACAP///////wAA////////AACjqwAA2QYBAKEfAADWAAIAoxwAAO8FAQCjDAEAIQ8BAKGrAADTBgEA////////AAChHAAA6QUBAKEMAQAbDwEAIAUAACwFAQCHHwAApAACAIcBAABrAQEA////////AACHqwAAhQYBAJEFAQCsDgEAhxwAABoEAQCHDAEAzQ4BAP///////wAA////////AAByLAAAsgoBAHIEAAAzBAEAch4AAPcHAQBNHwAAJgkBAHIBAABQAQEAuRAAAKILAQByqwAARgYBAE0AAAAiAAEAuRgBAJwPAQBwLAAAYgIBAHAEAAAwBAEAcB4AAPQHAQD///////8AAHABAABNAQEA////////AABwqwAAQAYBAG4sAACbAgEAbgQAAC0EAQBuHgAA8QcBAG4fAABHCQEAbgEAAEoBAQBupwAArgwBAE1uAQDYDwEAxRAAAMYLAQAe6QEAaxABAEUBAAAOAQEAuxAAAKgLAQC1EAAAlgsBAEUAAAAMAAEAuxgBAKIPAQC1GAEAkA8BAO4EAADhBAEA7h4AAKIIAQCvEAAAhAsBAO4BAADgAQEA////////AACvGAEAfg8BAGwEAAAqBAEAbB4AAO4HAQBsHwAAQQkBAGwBAABHAQEAbKcAAKsMAQBpIQAAqgkBAEVuAQDADwEApRAAAGYLAQD///////8AAB4FAAApBQEApRgBAGAPAQASAgAAEQIBAP///////wAA8AMAAAoDAQD///////8AAGymAAASDAEAoxAAAGALAQAQAgAADgIBANgDAABQAwEAoxgBAFoPAQChEAAAWgsBAP///////wAA////////AAChGAEAVA8BAP///////wAA////////AADWAwAAHgMBAGoEAAAnBAEAah4AAOsHAQBqHwAAOwkBAGoBAABEAQEAaqcAAKgMAQBoBAAAJAQBAGgeAADoBwEAaB8AADUJAQBoAQAAQQEBAGinAAClDAEAfAUBAHAOAQD///////8AAP///////wAARh4AALQHAQD///////8AAGqmAAAPDAEARqcAAHIMAQBIBQAAiQUBAEYAAAAPAAEA////////AABopgAADAwBAGQsAACkAgEAZAQAAB4EAQBkHgAA4gcBAP///////wAAZAEAADsBAQBkpwAAnwwBAEamAADYCwEA3iwAAEULAQDeBAAAyQQBAN4eAACKCAEAbiEAALkJAQDeAQAAyAEBAEZuAQDDDwEA////////AADeAAAApQABADAeAACTBwEAZKYAAAYMAQAwAQAABQECAFYFAACzBQEAYiwAAJICAQBiBAAAGgQBAGIeAADfBwEA////////AABiAQAAOAEBAGKnAACcDAEA////////AAD///////8AAP///////wAApQMAAC0DAQD///////8AAGwhAACzCQEARB4AALEHAQD///////8AAP///////wAARKcAAG8MAQBipgAAAwwBAEQAAAAJAAEAowMAACYDAQB5AQAAWQEBAHmnAACxDAEAeasAAFsGAQChAwAAIgMBAGAsAACgCgEAYAQAABcEAQBgHgAA2wcBAESmAADVCwEAYAEAADUBAQBgpwAAmQwBAP///////wAA////////AAAS6QEARxABAERuAQC9DwEAMh4AAJYHAQD///////8AADIBAADzAAEAMqcAAFQMAQAQ6QEAQRABAGohAACtCQEAYKYAAAAMAQBUBQAArQUBAP///////wAAcgMAAM4CAQBoIQAApwkBAM0EAQA6DgEA////////AADNBAAArgQBADkFAABcBQEA////////AADNAQAArQEBAP///////wAAcAMAAMsCAQDNAAAAdQABABIFAAAXBQEAzAQBADcOAQDMLAAAKgsBAM8EAQBADgEAzB4AAG8IAQDMHwAARwACABAFAAAUBQEAZCEAAJsJAQDPAQAAsAEBAMwAAAByAAEARQMAAAUDAQDPAAAAewABAD8FAABuBQEAywQBADQOAQDKJAAA/gkBAMsEAACrBAEAUgUAAKcFAQDLHwAAXAkBAMsBAACpAQEA7gMAAHEDAQDDBAEAHA4BAMsAAABvAAEAwwQAAJ8EAQDJBAEALg4BAMMfAABHAAIAyQQAAKgEAQBiIQAAlQkBAMkfAABWCQEAwwAAAFYAAQDJpwAACw0BAL8EAQAQDgEAyQAAAGkAAQBQBQAAoQUBAFUAAAA7AAEAvQQBAAoOAQB2BAAAOQQBAHYeAAD9BwEAv6sAAC0HAQB2AQAAVgEBAL8cAAA9BgEAdqsAAFIGAQC9qwAAJwcBAP///////wAAvRwAADcGAQD///////8AAMgkAAD4CQEA////////AAC5JAAAywkBAFVuAQDwDwEAYCEAAI8JAQCfHwAAzAACAJ8BAAChAgEAwQQBABYOAQCfqwAAzQYBAMEEAACcBAEAnxwAAOMFAQCfDAEAFQ8BADIhAACMCQEAxiQAAPIJAQBFAgAAvwIBAMEAAABQAAEAnR8AAMIAAgCdAQAAngIBAP///////wAAnasAAMcGAQDFJAAA7wkBAJ0cAADdBQEAnQwBAA8PAQC7JAAA0QkBAM0QAADMCwEAmx4AANsHAQCbHwAAuAACADD/AABKDQEA////////AACbqwAAwQYBAEMBAAALAQEAmxwAANcFAQCbDAEACQ8BAEMAAAAGAAEAmR4AACoAAgCZHwAArgACAN4DAABZAwEA////////AACZqwAAuwYBAJUfAADCAAIAmRwAANEFAQCZDAEAAw8B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ANEAAACBAAEA////////AAD0AwAAAAMBABUEAQCqDQEAFSwAAE8KAQAVBAAAkQMBABMEAQCkDQEAEywAAEkKAQATBAAAigMBAOwDAABuAwEAIf8AAB0NAQAPBAEAmA0BAA8sAAA9CgEADwQAABQEAQD///////8AAA8fAADSCAEA////////AADBJAAA4wkBAFUFAACwBQEA6gMAAGsDAQD///////8AAA0EAQCSDQEADSwAADcKAQANBAAADgQBAHYFAQBhDgEADR8AAMwIAQD///////8AAOgDAABoAwEA////////AAD///////8AADb/AABcDQEACwQBAIwNAQALLAAAMQoBAAsEAAAIBAEA////////AAALHwAAxggBAP///////wAA////////AADmAwAAZQMBAAkEAQCGDQEACSwAACsKAQAJBAAAAgQBAOQDAABiAwEACR8AAMAIAQAFBAEAeg0BAAUsAAAfCgEABQQAAPYDAQADBAEAdA0BAAMsAAAZCgEAAwQAAPADAQD///////8AANwDAABWAwEA////////AAArIQAAXAABAAEEAQBuDQEAASwAABMKAQABBAAA6gMBAPwEAAD2BAEA/B4AALcIAQD8HwAAYAACAPwBAADwAQEA////////AAD///////8AAEMFAAB6BQEA+AQAAPAEAQD4HgAAsQgBAPgfAABlCQEA+AEAAOoBAQAnBAEA4A0BACcsAACFCgEAJwQAAMsDAQCVBQEAtQ4BAPYEAADtBAEA9h4AAK4IAQD2HwAAXAACAPYBAAB0AQEAegQAAD8EAQB6HgAAAwgBAEsfAAAgCQEA////////AAA+AgAApgoBAHqrAABeBgEASwAAABsAAQAfBAEAyA0BAB8sAABtCgEAHwQAALADAQCDBQEAhQ4BAP///////wAAOP8AAGINAQD///////8AADoFAABfBQEALywAAJ0KAQAvBAAA5AMBAP///////wAALx8AAPwIAQBJBQAAjAUBAP///////wAAS24BANIPAQA0/wAAVg0BAC0sAACXCgEALQQAAN4DAQD///////8AAC0fAAD2CAEAgQUBAH8OAQB/BQEAeQ4BACv/AAA7DQEAKSwAAIsKAQApBAAA0QMBAP///////wAAKR8AAOoIAQAlBAEA2g0BACUsAAB/CgEAJQQAAMUDAQAjBAEA1A0BACMsAAB5CgEAIwQAAL8DAQARBAEAng0BABEsAABDCgEAEQQAAIMDAQAHBAEAgA0BAAcsAAAlCgEABwQAAPwDAQD///////8AAP///////wAAziQAAAoKAQD///////8AAEECAABKAgEA////////AAD///////8AAPwTAAA8BwEA////////AABCBQAAdwUBAP///////wAA////////AAD///////8AAP///////wAA+BMAADAHAQD///////8AAP///////wAA0QMAAAADAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAh6QEAdBABAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAD4FAABrBQEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAn/wAALw0BAP///////wAA////////AAA2BQAAUwUBAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAUwUAAKoFAQD///////8AAP///////wAA////////AABABQAAcQUBAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAC//AABHDQEA////////AAD///////8AAP///////wAAeAUBAGcOAQD///////8AABfpAQBWEAEA////////AAAt/wAAQQ0BAP///////wAAdAUBAFsOAQD///////8AAP///////wAAQQUAAHQFAQD///////8AACn/AAA1DQEA////////AAD///////8AAP///////wAA////////AAAl/wAAKQ0BAP///////wAA////////AAAj/wAAIw0BAB3pAQBoEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAFEFAACkBQEA////////AAD///////8AAP///////wAA////////AAD///////8AADgFAABZBQEA////////AAD///////8AAP///////wAAG+kBAGIQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAANAUAAE0FAQAZ6QEAXBABAP///////wAA////////AAD///////8AAE8FAACeBQEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAFekBAFAQAQD///////8AAP///////wAAE+kBAEoQAQD///////8AAP///////wAA////////AAD///////8AAA/pAQA+EAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAF/sAAHUAAgD///////8AAP///////wAADekBADgQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAL6QEAMhABAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAACekBACwQAQD///////8AAP///////wAA////////AAD///////8AAAXpAQAgEAEA////////AAD///////8AAAPpAQAaEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAAekBABQQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAV+wAAcQACAP///////wAA////////AAAT+wAAeQACAP///////wAA////////AAD///////8AAB/pAQBuEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAB6BQEAbQ4BAP///////wAASwUAAJIFAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AABHpAQBEEAEABfsAAB0AAgD///////8AAAfpAQAmEAEAA/sAAAAAAwD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAB+wAACAACAP//////////cgdLB9IAqwBuDYcHzwznAG4BIwX8BEgMxgxzDjgFHQL2ATAIbwSDAS8CvwLrCuQMcA7rBycERAHACBsA8wioDEwGMQBiBZUNwwiUA3cFnwCSAiIKDwxJBp4C4gceBDsB0g8MAKMKnwznD9UIUAVGBlMJQA6uCO0EgwKVCQYMEQleDtsHFwQ1AcAPAACgCpkMRAlSDkQF+A2KCMkEyAEFBH0CRQsADI4K/g2NCMwEywG0D1AASAtXBzgJtwBxDagLWgtxAcMLXQcIBb0A/QYRBF0L+QMCApoKDgWCCsICAweGCWgNCAIKDpMI0gTRAWsCXACHC6sLBA6QCM8EzgGxC1YASwuFDnsHawHbALkC8g2HCMYExQFcDSwFQgsPB4kJaQezAskACQB9DV4GCQe9CE0FGgXmDYEIwAQrBuoIFAI8CxQN9wZgBHcBFQ+9D9wK1QxVDkEJ5Ah+CL0EGw/jBacFOQsRDTkMegHrBqoCswXpBVgOcgsWDpkI2ATXAbUOaQC/DX4LwgMLAXcN5QZMClkDEA6WCNUE1AEnD2MA7wkLBFwDlAaaBpQKIQ8bB/UF9QmfC64PVwtcASMJdwLvBbQMDw+6C5UFFQcmDewNhAjDBAMA+QjdBT8LjgZHBZYLYgMFEAAIPAQDD3EJRwABCl8DrQWzCYwFtw+lANEF+wk7CfEGdQi0BFYD/Q6ZCzALDg38D4EL6QmoBGgJfQHLBb8JCw2qCWQOYwQzD6gPUAPfCtgMWw7IAtMGgAndCQEGvA2uB78DLQ88DL4GSQpsDE0DnA/fBxoEOAH7BQYA1wmcDEMO0gtKBREDGAOTAHsLaAOAApYPAwwgCScIVwQNCgkPug/TCswMIw0+CWUD9wczBFAB1wU0ALIKBwowDAoDegX0BzAETQF1Cy4A1wJvCz0O//90BesOOgaQAOoPFw2bAnkOVglTA9YOuQVvCJgJ5A///+MJKgtQCTQOqAjnBOMBkgmHAFQLUgaiDygOogjhBOABag57ACIOnwjeBN0BxwZ1ALoI+QTzAcUJqAA+AzkHHA6cCNsE2gFABm8A//+EDy0H6AckBEEBLgZ3ECcHpQxvD5UBXAXlByEEPgGmDhIAjAKiDAwMIQdWBQ0ONw4XEMwPJhBgAIoACQx6A8YH8AMgAYIGxg95CoQM7QhKCToOqwjqBOcBKAaNAGUC3w7rCxIHPAfOAv/////MB/wDJgFNECwJhQqKDMsCaw3//0UPHwZTDT8HoAZuAj8P8QuuBK0BEwb9BzkEVgHnCEEADQYyCUcDOQ+GBT0GwwfqAx0BXw13A3MKgQwHBv//sAH//8oG9g9xA3gPXwJiCegL//9uA70LpAngDcAH5AMaASoPKQltCn4MKRD//2sD0AZ9CU0N+AUiBlkC///lC9oNvQfeAxcBuA76AmcKewzUDboH2AMUAf//JQZhCngMVgJHDeILtwtMDrQI8wTtAVMCnADeCwQKtg2rB7YDXwElAOIOQwppDEENawWbBR4Dewi6BP//NRA7DTYLzwuMDZYHigPzANsPCxAZClQM6A4aCVEP+gc2BFMBuQk7AD4CHQ22Bd8GgAVKA3gItwT//9ECoQIzCwgJ//9RCJAEmAGsDvAPDAv2DK8OXAl7D/EHLQRKAZ4JKAAvEK4M///ZBm4FwgndDYgG4QMdEJgCiwZqCu4HKgRHAYEPIgDeD6sMdgb//2gFzwcCBCkB//9mBIsKjQwSDOIK2wxhDv/////YD/cOcQKMCfQLxQJEDckH9gMjAf//xQV/CocMhAf//+QAfQP/////RQxpBGUNNQXuC+UK3gxnDv//LALxDs4NtwfRAy8J/////1sKdQz//78F/AhZDdEJyA20B8sDUAL//9sLVQpyDPMDegKQD3QQfArCDbEHxQNNArEP2AtPCm8MNQloAjUNuQ0AA7oDCAHLCQUDRgrVCy4OpQjkBP//Lw2BAOwCig9KAiYJVg2PAZgNnAeXA/kAlw4pDSUKWgwdCUgH//+SDZkHkQP2ADMHIA0fClcMeg2NB8kL7QBwBncJgQdODOEAFAk+Bf//QgwGCEIEMgU1An4H///eAA4JKQKYBT8M+w3//y8F7w2kAk0AwgHpDSYC9gi/AeMNCBBpCLwBpQF0CWAIJAtiAfAItgkbCwUNRQiEBKEFAAeDCQAL9AaaDqcC/wPuBksPXQiICugGuwb//xgLAg2pBv//GQYREFoImQSeAXMGegkVC/8MpQtXCJYEmwFUCJMEEgv8DKMGDwv5DLIO//9iDeEITgiNBP//zAudBgkL8wypDsYLPwh+BIwBlwbtA/oKkQaODnYKWQHAC0oAGA+xDP//DA+PBYUGYgIGDyMQ///mBQAP0w7aBWcGSQ7BDtQF/w///5kAzgVrCdoCSwiKBFANrQn//wYL8AyjDrANqAewA7sO2wj//z0KZgznA///8gn//3AK5gmTCzoDRALgCX8GJgP//9oJXAL//6UP///pAs8Inw8zCHIEhgGZD2wP7grnDHYOWg8iAy0IbASAAUoN///oCuEMbQ7JCF0EGwMDCD8E2QrSDE8OTwZUDxUD//+SBQ4DDwiRDmUBNgxDBrsKvQz//24QqgX9Ao0LAhC5Af//rQJuCRgMQgfgAmoGsAk0BtIHCAQsATEORBCRCpAMsw2EALMDBQFpC///QAriBnQCJQ73C4YNkweDA3gAUQtHAhMK//+ADZAH///wADYHYwv2AlEMOwIXCUEFdA2KB/UN6gD//zgCKgdLDP//Agk7Bf//Rg6xCPAE6gEyApYAHw7//xMOBw62AXIATgtmAFkAAQ6zAfoG/////1MAcgixBKsEqQFsCC0LZgj6Dv//Jwv//yELJAfcBhgHDAebDcgFmgPWBtQCBgcoCk4P///jAs0GxAYgEKUEwQb//7UGHAYIDacNQg+mA/8A/////zQK//+iBKEBYwgQBgwISATUCR4LQQK4CroMuAaLDqQF//90AxIPkw///x8ArwoVDEgIhwRlBbIG4AUDC68GnQ6VAmQGPA/0DjAPJA8xBv//1Q/uDnEQHg8KBsIF/gXyBeUO3A55BrwF2Q7sBc0O//9CCIEE/////+wJ/QpQEJQO////////iQGqDaUHqQOrD38OShA3CmMM0A7OCQoK/gn//zIQbQbICUQD+AkaEEEDjQ80A8oOWAb//8cOhw8bCEsEFBD//ysOxwp+D3UP//9+AHIP//9mDzkIeAS8AjcDJAz0Cu0Mgg42CHUECQhFBP//8QrqDHwOtwwwAzAHngUtA2kPEgjdAmgB//9bBr4KwAz/////sAX//w4QVQZjDz4AtQpgDxsM8AKDBbwJDwCmCrcI9gTwAVMFogD//9gHFAQyAYYC8w+dCpYMZgdfCcYA///DD///oQn//0cJFwX9C9UHDgQvAeYCEQKXCpMMpA2iB6MD/////0gPMQpgDJ8E3gj6C54NnwedA2MHFgbDACsKXQxUBxkOtABRBxQFsQBsAP////8FBQ4CTgcCBa4ArAb/ATwIewT8Af///wT3CtgIiA5oEP//+QHSCB4H///MCCoIWgR0ASQIVATWCv//xgjQCskM//9hBv//////////FQgzDDcGRAAtDMEKwwz//4kFOADLDZALzgMRAX0FsAJYCh4M//8rAP//jw35D40DcQX//2UJHArtD///xA6nCVkJ//8YAKwK//+bCeEPXwX/////TQmKCzYPjwIyDY8JbAsLCf//ZgucBM8PBAYVAKkK/////2ALWQXFDf//yAMOASoDiQJSCmsQrQ3//6wDAgH//8kPOgr//6YGoQ0+EKAD/AD//10PLgoYCIkNOBCGA4MNxAqAAxYK//94BxAK2AAsDSwQ//+2Av//IQwpBXUH1w3VANsD//8jApIBZAr//yYFBQmgDm8H/wjPACACbAdgB8wAwABaByAFugAhCFEEHQURBRoCzQoLBXwGFwILAh4ITgQFAr4OPg3KCtENKgzUA///UxD//14K//////////8nDP////////////////////////////9fEEUH/////////////////////////////zgN////////////////////////tAv///////9XD/////////////+uC/////////////////////////////+iC////////5wLhAv/////eAv////////////////////////////////zAv//////////////////YhD/////////////Gg3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1wQ//////////////////////////9WEP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0cQ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2UQ/////////////////////1kQ//////////////////9BEP////87EAAAAAAAAGUA/QBMAB0AGADvAGAARwBcAEMABAA+AAgAOgDqAG0ApABYAFQAUADWAAAANgAFATIAaQB5AH0AAQEqACYA+QAuAHUADABxAPQA5QDgANsA0QAQAMwAxwDCAL0AuACzAK4AqQAUACIAnwCaAJUAkACLAIYAgQBB8IkRC+EIPgAvAB8AOQApABkANAAkABQAQwAPAAoABQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMA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AAAABAUAAAcFAAABAAAABgUAAAkFAAABAAAACAUAAAsFAAABAAAACgUAAA0FAAABAAAADAUAAA8FAAABAAAADgUAABEFAAABAAAAEAUAABMFAAABAAAAEgUAABUFAAABAAAAFAUAABcFAAABAAAAFgUAABkFAAABAAAAGAUAABsFAAABAAAAGgUAAB0FAAABAAAAHAUAAB8FAAABAAAAHgUAACEFAAABAAAAIAUAACMFAAABAAAAIgUAACUFAAABAAAAJAUAACcFAAABAAAAJgUAACkFAAABAAAAKAUAACsFAAABAAAAKgUAAC0FAAABAAAALAUAAC8FAAABAAAALgUAAGEFAAABAAAAMQUAAGIFAAABAAAAMgUAAGMFAAABAAAAMwUAAGQFAAABAAAANAUAAGUFAAABAAAANQUAAGYFAAABAAAANgUAAGcFAAABAAAANwUAAGgFAAABAAAAOAUAAGkFAAABAAAAOQUAAGoFAAABAAAAOgUAAGsFAAABAAAAOwUAAGwFAAABAAAAPAUAAG0FAAABAAAAPQUAAG4FAAABAAAAPgUAAG8FAAABAAAAPwUAAHAFAAABAAAAQAUAAHEFAAABAAAAQQUAAHIFAAABAAAAQgUAAHMFAAABAAAAQwUAAHQFAAABAAAARAUAAHUFAAABAAAARQUAAHYFAAABAAAARgUAAHcFAAABAAAARwUAAHgFAAABAAAASAUAAHkFAAABAAAASQUAAHoFAAABAAAASgUAAHsFAAABAAAASwUAAHwFAAABAAAATAUAAH0FAAABAAAATQUAAH4FAAABAAAATgUAAH8FAAABAAAATwUAAIAFAAABAAAAUAUAAIEFAAABAAAAUQUAAIIFAAABAAAAUgUAAIMFAAABAAAAUwUAAIQFAAABAAAAVAUAAIUFAAABAAAAVQUAAIYFAAABAAAAVgUAANAQAAABAAAAkBwAANEQAAABAAAAkRwAANIQAAABAAAAkhwAANMQAAABAAAAkxwAANQQAAABAAAAlBwAANUQAAABAAAAlRwAANYQAAABAAAAlhwAANcQAAABAAAAlxwAANgQAAABAAAAmBwAANkQAAABAAAAmRwAANoQAAABAAAAmhwAANsQAAABAAAAmxwAANwQAAABAAAAnBwAAN0QAAABAAAAnRwAAN4QAAABAAAAnhwAAN8QAAABAAAAnxwAAOAQAAABAAAAoBwAAOEQAAABAAAAoRwAAOIQAAABAAAAohwAAOMQAAABAAAAoxwAAOQQAAABAAAApBwAAOUQAAABAAAApRwAAOYQAAABAAAAphwAAOcQAAABAAAApxwAAOgQAAABAAAAqBwAAOkQAAABAAAAqRwAAOoQAAABAAAAqhwAAOsQAAABAAAAqxwAAOwQAAABAAAArBwAAO0QAAABAAAArRwAAO4QAAABAAAArhwAAO8QAAABAAAArxwAAPAQAAABAAAAsBwAAPEQAAABAAAAsRwAAPIQAAABAAAAshwAAPMQAAABAAAAsxwAAPQQAAABAAAAtBwAAPUQAAABAAAAtRwAAPYQAAABAAAAthwAAPcQAAABAAAAtxwAAPgQAAABAAAAuBwAAPkQAAABAAAAuRwAAPoQAAABAAAAuhwAAP0QAAABAAAAvRwAAP4QAAABAAAAvhwAAP8QAAABAAAAvxwAAKATAAABAAAAcKsAAKETAAABAAAAcasAAKITAAABAAAAcqsAAKMTAAABAAAAc6sAAKQTAAABAAAAdKsAAKUTAAABAAAAdasAAKYTAAABAAAAdqsAAKcTAAABAAAAd6sAAKgTAAABAAAAeKsAAKkTAAABAAAAeasAAKoTAAABAAAAeqsAAKsTAAABAAAAe6sAAKwTAAABAAAAfKsAAK0TAAABAAAAfasAAK4TAAABAAAAfqsAAK8TAAABAAAAf6sAALATAAABAAAAgKsAALETAAABAAAAgasAALITAAABAAAAgqsAALMTAAABAAAAg6sAALQTAAABAAAAhKsAALUTAAABAAAAhasAALYTAAABAAAAhqsAALcTAAABAAAAh6sAALgTAAABAAAAiKsAALkTAAABAAAAiasAALoTAAABAAAAiqsAALsTAAABAAAAi6sAALwTAAABAAAAjKsAAL0TAAABAAAAjasAAL4TAAABAAAAjqsAAL8TAAABAAAAj6sAAMATAAABAAAAkKsAAMETAAABAAAAkasAAMITAAABAAAAkqsAAMMTAAABAAAAk6sAAMQTAAABAAAAlKsAAMUTAAABAAAAlasAAMYTAAABAAAAlqsAAMcTAAABAAAAl6sAAMgTAAABAAAAmKsAAMkTAAABAAAAmasAAMoTAAABAAAAmqsAAMsTAAABAAAAm6sAAMwTAAABAAAAnKsAAM0TAAABAAAAnasAAM4TAAABAAAAnqsAAM8TAAABAAAAn6sAANATAAABAAAAoKsAANETAAABAAAAoasAANITAAABAAAAoqsAANMTAAABAAAAo6sAANQTAAABAAAApKsAANUTAAABAAAApasAANYTAAABAAAApqsAANcTAAABAAAAp6sAANgTAAABAAAAqKsAANkTAAABAAAAqasAANoTAAABAAAAqqsAANsTAAABAAAAq6sAANwTAAABAAAArKsAAN0TAAABAAAArasAAN4TAAABAAAArqsAAN8TAAABAAAAr6sAAOATAAABAAAAsKsAAOETAAABAAAAsasAAOITAAABAAAAsqsAAOMTAAABAAAAs6sAAOQTAAABAAAAtKsAAOUTAAABAAAAtasAAOYTAAABAAAAtqsAAOcTAAABAAAAt6sAAOgTAAABAAAAuKsAAOkTAAABAAAAuasAAOoTAAABAAAAuqsAAOsTAAABAAAAu6sAAOwTAAABAAAAvKsAAO0TAAABAAAAvasAAO4TAAABAAAAvqsAAO8TAAABAAAAv6sAAPATAAABAAAA+BMAAPETAAABAAAA+RMAAPITAAABAAAA+hMAAPMTAAABAAAA+xMAAPQTAAABAAAA/BMAAPUTAAABAAAA/RMAAHkdAAABAAAAfacAAH0dAAABAAAAYywAAI4dAAABAAAAxqcAAAEeAAABAAAAAB4AAAMeAAABAAAAAh4AAAUeAAABAAAABB4AAAceAAABAAAABh4AAAkeAAABAAAACB4AAAseAAABAAAACh4AAA0eAAABAAAADB4AAA8eAAABAAAADh4AABEeAAABAAAAEB4AABMeAAABAAAAEh4AABUeAAABAAAAFB4AABceAAABAAAAFh4AABkeAAABAAAAGB4AABseAAABAAAAGh4AAB0eAAABAAAAHB4AAB8eAAABAAAAHh4AACEeAAABAAAAIB4AACMeAAABAAAAIh4AACUeAAABAAAAJB4AACceAAABAAAAJh4AACkeAAABAAAAKB4AACseAAABAAAAKh4AAC0eAAABAAAALB4AAC8eAAABAAAALh4AADEeAAABAAAAMB4AADMeAAABAAAAMh4AADUeAAABAAAANB4AADceAAABAAAANh4AADkeAAABAAAAOB4AADseAAABAAAAOh4AAD0eAAAB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LAAAAQAAABMsAABELAAAAQAAABQsAABFLAAAAQAAABUsAABGLAAAAQAAABYsAABHLAAAAQAAABcsAABILAAAAQAAABgsAABJLAAAAQAAABksAABKLAAAAQAAABosAABLLAAAAQAAABssAABMLAAAAQAAABwsAABNLAAAAQAAAB0sAABOLAAAAQAAAB4sAABPLAAAAQAAAB8sAABQLAAAAQAAACAsAABRLAAAAQAAACEsAABSLAAAAQAAACIsAABTLAAAAQAAACMsAABULAAAAQAAACQsAABVLAAAAQAAACUsAABWLAAAAQAAACYsAABXLAAAAQAAACcsAABYLAAAAQAAACgsAABZLAAAAQAAACksAABaLAAAAQAAACosAABbLAAAAQAAACssAABcLAAAAQAAACwsAABdLAAAAQAAAC0sAABeLAAAAQAAAC4sAABfLAAAAQAAAC8sAABhLAAAAQAAAGAsAABlLAAAAQAAADoCAABmLAAAAQAAAD4CAABoLAAAAQAAAGcsAABqLAAAAQAAAGksAABsLAAAAQAAAGssAABzLAAAAQAAAHIsAAB2LAAAAQAAAHUsAACBLAAAAQAAAIAsAACDLAAAAQAAAIIsAACFLAAAAQAAAIQsAACHLAAAAQAAAIYsAACJLAAAAQAAAIgsAACLLAAAAQAAAIosAACNLAAAAQAAAIwsAACPLAAAAQAAAI4sAACRLAAAAQAAAJAsAACTLAAAAQAAAJIsAACVLAAAAQAAAJQsAACXLAAAAQAAAJYsAACZLAAAAQAAAJgsAACbLAAAAQAAAJosAACdLAAAAQAAAJwsAACfLAAAAQAAAJ4sAAChLAAAAQAAAKAsAACjLAAAAQAAAKIsAAClLAAAAQAAAKQsAACnLAAAAQAAAKYsAACpLAAAAQAAAKgsAACrLAAAAQAAAKosAACtLAAAAQAAAKwsAACvLAAAAQAAAK4sAACxLAAAAQAAALAsAACzLAAAAQAAALIsAAC1LAAAAQAAALQsAAC3LAAAAQAAALYsAAC5LAAAAQAAALgsAAC7LAAAAQAAALosAAC9LAAAAQAAALwsAAC/LAAAAQAAAL4sAADBLAAAAQAAAMAsAADDLAAAAQAAAMIsAADFLAAAAQAAAMQsAADHLAAAAQAAAMYsAADJLAAAAQAAAMgsAADLLAAAAQAAAMosAADN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AgAwJgIAgCYCAOAmAgD0JgIAACcCALA+AgAAUwIAoFMCAMBTAgCwVAIA0FQCAPBUAgAMVQIAIFUCAEBVAgCwVQIAcFYCAJBWAgDgVgIAAFcCADBXAgBQVwIAcFcCAMBrAgBAcAIAoHACAOBxAgAAcgIAMHICAFByAgCQcgIAsHICAECHAgBwiQIAIJkCAOC6AABgmQIAwJkCAPStAgAArgIAIK4CAHy3AgCItwIAoLcCAOC3AgAAuAIAILgCAEC4AgCAuAIA4LwCAHDCAgCcwgIAsMICANDCAgDwwgIADMMCACDDAgBAwwIA0M0CAPDNAgAwzgIAUM4CAIDOAgCgzgIA4NICAADTAgDgogAAINMCAFDTAgBw0wIAkNMCAADUAgBA1gIA4NYCAADXAgAk1wIAMNcCAEDXAgBg1wIAdNcCAIDXAgCQ1wIApNcCALDXAgC81wIAyNcCAODXAgBg2AIAgNgCAKDYAgDw3wIAUOACACDhAgBQ4QIAgOECAFDiAgCQ5gIAwOUAAMDmAgDs5gIAAOcCAPDnAgAc6AIAMOgCAHDoAgAQ6QIAgOsCANTrAgDg6wIAAOwCAGDsAgAw8gIAcPICAPD0AgAQ9QIAgPUCAJz1AgCw9QIA0PUCAPD1AgBQ/QIAcP0CAJD9AgBA/gIAvAADAMgAAwDgAAMAAAEDACABAwCQAQMAkAIDAKAEAwCACgMAhAsDAJALAwCkCwMAsAsDAMQLAwDQCwMAAAwDACAMAwBADAMAYAwDAJAMAwCwDAMA0AwDAHANAwCQDQMAwA0DADAOAwCMEQMAoBEDAMARAwAAEgMAIBIDADQSAwBAEgMAYBIDAOASAwAQ7AAApCgDALAoAwDgKAMAMCkDAFApAwCw6wAAcCkDAFBBAwDQVQMA8FUDABBWAwBUVgMAYFYDAGxWAwCAVgMAFDABALxWAwDIVgMA1FYDAOBWAwDsVgMA+FYDAARXAwAQVwMAHFcDAChXAwA0VwMAQFcDAExXAwBYVwMAZFcDAHBXAwB8VwMAiFcDAJRXAwCgVwMArFcDALhXAwDEVwMA0FcDANxXAwDoVwMA9FcDAABYAwAMWAMAGFgDACRYAwAwWAMAPFgDAEhYAwBUWAMAYFgDAGxYAwB4WAMAhFgDAJBYAwCcWAMAqFgDALRYAwDAWAMAzFgDANhYAwDkWAMA8FgDAPxYAwAIWQMAFFkDACBZAwAsWQMAOFkDAERZAwBQWQMAXFkDAGhZAwB0WQMAgFkDAIxZAwAw1wIAmFkDAKRZAwCwWQMAvFkDAMhZAwDUWQMA4FkDAOxZAwD4WQMABFoDABBaAwAcWgMAKFoDADRaAwBAWgMATFoDAFhaAwBkWgMAcFoDAHxaAwCIWgMAlFoDAKBaAwCsWgMAuFoDAMRaAwDQWgMA3FoDABxKAQDoWgMA9FoDAABbAwAMWwMAGFsDACRbAwAwWwMAPFsDAEhbAwBUWwMAYFsDAGxbAwB4WwMAhFsDAJBbAwCcWwMAqFsDALRbAwDAWwMAzFsDANhbAwDkWwMA8FsDAPxbAwAIXAMAFFwDACBcAwAsXAMAOFwDAERcAwBQXAMAXFwDAGhcAwB0XAMAgFwDAIxcAwCYXAMApFwDALBcAwC8XAMAyFwDANRcAwDgXAMA7FwDAPhcAwAEXQMAEF0DABxdAwAoXQMANF0DAEBdAwBMXQMAWF0DAGRdAwBwXQMAfF0DAIhdAwCUXQMAoF0DAKxdAwC4XQMAxF0DANBdAwDcXQMA6F0DAPRdAwAAXgMADF4DABheAwAkXgMAMF4DADxeAwBIXgMAVF4DAGBeAwBsXgMAeF4DAIReAwCQXgMAnF4DAKheAwC0XgMAwF4DAMxeAwDYXgMA5F4DAPTjAQDIAAMA8F4DAPxeAwAIXwMAFF8DACBfAwAsXwMAOF8DAERfAwBQXwMA7OYCAFxfAwBoXwMAdF8DAIBfAwAMwwIAjF8DAJhfAwCw1wIAdNcCAKRfAwCwXwMAvF8DAMhfAwDUXwMA4F8DAOxfAwD4XwMABGADABBgAwAcYAMAKGADADRgAwBAYAMATGADAFhgAwBkYAMAcGADAHxgAwCIYAMAvAADAJRgAwCgYAMArGADALhgAwDEYAMA0GADANxgAwDoYAMA9GADAABhAwAMYQMAGGEDACRhAwAwYQMAPGEDAEhhAwBUYQMAYGEDAGxhAwB4YQMAhGEDAJBhAwCcYQMAqGEDALRhAwDAYQMAzGEDANhhAwDkYQMA8GEDAPxhAwAIYgMAFGIDACBiAwAsYgMAOGIDAERiAwBQYgMAXGIDAGhiAwB0YgMAgGIDAIxiAwCYYgMApGIDALBiAwC8YgMAyGIDANRiAwDgYgMA7GIDAPhiAwAEYwMAEGMDABxjAwAoYwMANGMDAEBjAwBMYwMAWGMDAGRjAwBwYwMAfGMDAIhjAwCUYwMAoGMDAKxjAwC4YwMAxGMDANBjAwDcYwMA6GMDAPRjAwAAZAMADGQDABhkAwAkZAMAMGQDADxkAwBIZAMAVGQDAGBkAwBsZAMAeGQDAIRkAwCQZAMAnGQDAKhkAwC0ZAMAwGQDAMxkAwDYZAMA5GQDAPBkAwD8ZAMACGUDABRlAwAgZQMALGUDADhlAwBQZQMAFQAAAAsFAAABAAAAAQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAAAAAAIwAAAAUAQey9Egs9JAAAAEMFAAAEAAAAAQAAABYAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAAIQBBtL4SCwUvAAAAHwBByL4SCwEFAEHUvhILATAAQey+EgsOMQAAADIAAABooQQAAAQAQYS/EgsBAQBBlL8SCwX/////CgBB2L8SCwPQx1Q="),A=>A.charCodeAt(0));const g=Q,E=async A=>WebAssembly.instantiate(g,A).then(B=>B.instance.exports);export{E as default}; diff --git a/assets/chunks/wenyan.D3VXSfF0.js b/assets/chunks/wenyan.D3VXSfF0.js new file mode 100644 index 000000000..ef8d46bc9 --- /dev/null +++ b/assets/chunks/wenyan.D3VXSfF0.js @@ -0,0 +1 @@ +const u=Object.freeze({displayName:"Wenyan",name:"wenyan",patterns:[{include:"#keywords"},{include:"#constants"},{include:"#operators"},{include:"#symbols"},{include:"#expression"},{include:"#comment-blocks"},{include:"#comment-lines"}],repository:{"comment-blocks":{begin:"(注曰|疏曰|批曰)。?(「「|『)",end:"(」」|』)",name:"comment.block",patterns:[{match:"\\\\.",name:"constant.character"}]},"comment-lines":{begin:"注曰|疏曰|批曰",end:"$",name:"comment.line",patterns:[{match:"\\\\.",name:"constant.character"}]},constants:{patterns:[{match:"負|·|又|零|〇|一|二|三|四|五|六|七|八|九|十|百|千|萬|億|兆|京|垓|秭|穰|溝|澗|正|載|極|分|釐|毫|絲|忽|微|纖|沙|塵|埃|渺|漠",name:"constant.numeric"},{match:"其|陰|陽",name:"constant.language"},{begin:"「「|『",end:"」」|』",name:"string.quoted",patterns:[{match:"\\\\.",name:"constant.character"}]}]},expression:{patterns:[{include:"#variables"}]},keywords:{patterns:[{match:"數|列|言|術|爻|物|元",name:"storage.type"},{match:"乃行是術曰|若其不然者|乃歸空無|欲行是術|乃止是遍|若其然者|其物如是|乃得矣|之術也|必先得|是術曰|恆為是|之物也|乃得|是謂|云云|中之|為是|乃止|若非|或若|之長|其餘",name:"keyword.control"},{match:"或云|蓋謂",name:"keyword.control"},{match:"中有陽乎|中無陰乎|所餘幾何|不等於|不大於|不小於|等於|大於|小於|加|減|乘|除|變|以|於",name:"keyword.operator"},{match:"不知何禍歟|不復存矣|姑妄行此|如事不諧|名之曰|吾嘗觀|之禍歟|乃作罷|吾有|今有|物之|書之|以施|昔之|是矣|之書|方悟|之義|嗚呼|之禍|有|施|曰|噫|取|今|夫|中|豈",name:"keyword.other"},{match:"也|凡|遍|若|者|之|充|銜",name:"keyword.control"}]},symbols:{patterns:[{match:"。|、",name:"punctuation.separator"}]},variables:{begin:"「",end:"」",name:"variable.other",patterns:[{match:"\\\\.",name:"constant.character"}]}},scopeName:"source.wenyan",aliases:["文言"]});var e=[u];export{e as default}; diff --git a/assets/chunks/wgsl.BZz1Hhek.js b/assets/chunks/wgsl.BZz1Hhek.js new file mode 100644 index 000000000..8e197b16f --- /dev/null +++ b/assets/chunks/wgsl.BZz1Hhek.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"WGSL",name:"wgsl",patterns:[{include:"#line_comments"},{include:"#block_comments"},{include:"#keywords"},{include:"#attributes"},{include:"#functions"},{include:"#function_calls"},{include:"#constants"},{include:"#types"},{include:"#variables"},{include:"#punctuation"}],repository:{attributes:{patterns:[{captures:{1:{name:"keyword.operator.attribute.at"},2:{name:"entity.name.attribute.wgsl"}},comment:"attribute declaration",match:"(@)([A-Za-z_]+)",name:"meta.attribute.wgsl"}]},block_comments:{patterns:[{comment:"empty block comments",match:"/\\*\\*/",name:"comment.block.wgsl"},{begin:"/\\*\\*",comment:"block documentation comments",end:"\\*/",name:"comment.block.documentation.wgsl",patterns:[{include:"#block_comments"}]},{begin:"/\\*(?!\\*)",comment:"block comments",end:"\\*/",name:"comment.block.wgsl",patterns:[{include:"#block_comments"}]}]},constants:{patterns:[{comment:"decimal float literal",match:"(-?\\b[0-9][0-9]*\\.[0-9][0-9]*)([eE][+-]?[0-9]+)?\\b",name:"constant.numeric.float.wgsl"},{comment:"int literal",match:"-?\\b0x[0-9a-fA-F]+\\b|\\b0\\b|-?\\b[1-9][0-9]*\\b",name:"constant.numeric.decimal.wgsl"},{comment:"uint literal",match:"\\b0x[0-9a-fA-F]+u\\b|\\b0u\\b|\\b[1-9][0-9]*u\\b",name:"constant.numeric.decimal.wgsl"},{comment:"boolean constant",match:"\\b(true|false)\\b",name:"constant.language.boolean.wgsl"}]},function_calls:{patterns:[{begin:"([A-Za-z0-9_]+)(\\()",beginCaptures:{1:{name:"entity.name.function.wgsl"},2:{name:"punctuation.brackets.round.wgsl"}},comment:"function/method calls",end:"\\)",endCaptures:{0:{name:"punctuation.brackets.round.wgsl"}},name:"meta.function.call.wgsl",patterns:[{include:"#line_comments"},{include:"#block_comments"},{include:"#keywords"},{include:"#attributes"},{include:"#function_calls"},{include:"#constants"},{include:"#types"},{include:"#variables"},{include:"#punctuation"}]}]},functions:{patterns:[{begin:"\\b(fn)\\s+([A-Za-z0-9_]+)((\\()|(<))",beginCaptures:{1:{name:"keyword.other.fn.wgsl"},2:{name:"entity.name.function.wgsl"},4:{name:"punctuation.brackets.round.wgsl"}},comment:"function definition",end:"\\{",endCaptures:{0:{name:"punctuation.brackets.curly.wgsl"}},name:"meta.function.definition.wgsl",patterns:[{include:"#line_comments"},{include:"#block_comments"},{include:"#keywords"},{include:"#attributes"},{include:"#function_calls"},{include:"#constants"},{include:"#types"},{include:"#variables"},{include:"#punctuation"}]}]},keywords:{patterns:[{comment:"other keywords",match:"\\b(bitcast|block|break|case|continue|continuing|default|discard|else|elseif|enable|fallthrough|for|function|if|loop|private|read|read_write|return|storage|switch|uniform|while|workgroup|write)\\b",name:"keyword.control.wgsl"},{comment:"reserved keywords",match:"\\b(asm|const|do|enum|handle|mat|premerge|regardless|typedef|unless|using|vec|void)\\b",name:"keyword.control.wgsl"},{comment:"storage keywords",match:"\\b(let|var)\\b",name:"keyword.other.wgsl storage.type.wgsl"},{comment:"type keyword",match:"\\b(type)\\b",name:"keyword.declaration.type.wgsl storage.type.wgsl"},{comment:"enum keyword",match:"\\b(enum)\\b",name:"keyword.declaration.enum.wgsl storage.type.wgsl"},{comment:"struct keyword",match:"\\b(struct)\\b",name:"keyword.declaration.struct.wgsl storage.type.wgsl"},{comment:"fn",match:"\\bfn\\b",name:"keyword.other.fn.wgsl"},{comment:"logical operators",match:"(\\^|\\||\\|\\||&&|<<|>>|!)(?!=)",name:"keyword.operator.logical.wgsl"},{comment:"logical AND, borrow references",match:"&(?![&=])",name:"keyword.operator.borrow.and.wgsl"},{comment:"assignment operators",match:"(\\+=|-=|\\*=|/=|%=|\\^=|&=|\\|=|<<=|>>=)",name:"keyword.operator.assignment.wgsl"},{comment:"single equal",match:"(?<![<>])=(?!=|>)",name:"keyword.operator.assignment.equal.wgsl"},{comment:"comparison operators",match:"(=(=)?(?!>)|!=|<=|(?<!=)>=)",name:"keyword.operator.comparison.wgsl"},{comment:"math operators",match:"(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))",name:"keyword.operator.math.wgsl"},{comment:"dot access",match:"\\.(?!\\.)",name:"keyword.operator.access.dot.wgsl"},{comment:"dashrocket, skinny arrow",match:"->",name:"keyword.operator.arrow.skinny.wgsl"}]},line_comments:{comment:"single line comment",match:"\\s*//.*",name:"comment.line.double-slash.wgsl"},punctuation:{patterns:[{comment:"comma",match:",",name:"punctuation.comma.wgsl"},{comment:"curly braces",match:"[{}]",name:"punctuation.brackets.curly.wgsl"},{comment:"parentheses, round brackets",match:"[()]",name:"punctuation.brackets.round.wgsl"},{comment:"semicolon",match:";",name:"punctuation.semi.wgsl"},{comment:"square brackets",match:"[\\[\\]]",name:"punctuation.brackets.square.wgsl"},{comment:"angle brackets",match:"(?<![=-])[<>]",name:"punctuation.brackets.angle.wgsl"}]},types:{comment:"types",name:"storage.type.wgsl",patterns:[{comment:"scalar Types",match:"\\b(bool|i32|u32|f32)\\b",name:"storage.type.wgsl"},{comment:"reserved scalar Types",match:"\\b(i64|u64|f64)\\b",name:"storage.type.wgsl"},{comment:"vector type aliasses",match:"\\b(vec2i|vec3i|vec4i|vec2u|vec3u|vec4u|vec2f|vec3f|vec4f|vec2h|vec3h|vec4h)\\b",name:"storage.type.wgsl"},{comment:"matrix type aliasses",match:"\\b(mat2x2f|mat2x3f|mat2x4f|mat3x2f|mat3x3f|mat3x4f|mat4x2f|mat4x3f|mat4x4f|mat2x2h|mat2x3h|mat2x4h|mat3x2h|mat3x3h|mat3x4h|mat4x2h|mat4x3h|mat4x4h)\\b",name:"storage.type.wgsl"},{comment:"vector/matrix types",match:"\\b(vec[2-4]|mat[2-4]x[2-4])\\b",name:"storage.type.wgsl"},{comment:"atomic types",match:"\\b(atomic)\\b",name:"storage.type.wgsl"},{comment:"array types",match:"\\b(array)\\b",name:"storage.type.wgsl"},{comment:"Custom type",match:"\\b([A-Z][A-Za-z0-9]*)\\b",name:"entity.name.type.wgsl"}]},variables:{patterns:[{comment:"variables",match:"\\b(?<!(?<!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b",name:"variable.other.wgsl"}]}},scopeName:"source.wgsl"});var t=[e];export{t as default}; diff --git a/assets/chunks/wolfram.BICIrM8O.js b/assets/chunks/wolfram.BICIrM8O.js new file mode 100644 index 000000000..6b76d0888 --- /dev/null +++ b/assets/chunks/wolfram.BICIrM8O.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Wolfram",fileTypes:["wl","m","wls","wlt","mt"],name:"wolfram",patterns:[{include:"#main"}],repository:{"association-group":{begin:"<\\|",beginCaptures:{0:{name:"punctuation.section.associations.begin.wolfram"}},end:"\\|>",endCaptures:{0:{name:"punctuation.section.associations.end.wolfram"}},name:"meta.associations.wolfram",patterns:[{include:"#expressions"}]},"brace-group":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.braces.begin.wolfram"}},end:"\\}",endCaptures:{0:{name:"punctuation.section.braces.end.wolfram"}},name:"meta.braces.wolfram",patterns:[{include:"#expressions"}]},"bracket-group":{begin:"::\\[|\\[",beginCaptures:{0:{name:"punctuation.section.brackets.begin.wolfram"}},end:"\\]",endCaptures:{0:{name:"punctuation.section.brackets.end.wolfram"}},name:"meta.brackets.wolfram",patterns:[{include:"#expressions"}]},comments:{patterns:[{begin:"\\(\\*",beginCaptures:{0:{name:"punctuation.definition.comment.wolfram"}},end:"\\*\\)",endCaptures:{0:{name:"punctuation.definition.comment.wolfram"}},name:"comment.block",patterns:[{include:"#comments"}]},{match:"\\*\\)",name:"invalid.illegal.stray-comment-end.wolfram"}]},escaped_character_symbols:{patterns:[{match:"System`\\\\\\[(?:F(?:ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`\\\\\\[(?:S(?:ystemsModelDelay))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:F(?:ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:S(?:ystemsModelDelay))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:D(?:egree))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:E(?:xponentialE))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:I(?:maginaryI|maginaryJ|nfinity))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"\\\\\\[(?:P(?:i))\\](?![`$[:alnum:]])",name:"constant.language.wolfram"}]},escaped_characters:{patterns:[{match:"\\\\[!%&()*+/@^_` ]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:A(?:kuz|ndy))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:C(?:ontinuedFractionK|url))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:D(?:ivergence|ivisionSlash))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:E(?:xpectationE))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:F(?:reeformPrompt))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:G(?:radient))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:L(?:aplacian))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:M(?:inus|oon))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:N(?:umberComma))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:P(?:ageBreakAbove|ageBreakBelow|robabilityPr))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:S(?:pooky|tepperDown|tepperLeft|tepperRight|tepperUp|un))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:U(?:nknownGlyph))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:V(?:illa))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:W(?:olframAlphaPrompt))\\]",name:"donothighlight.constant.character.escape.undocumented"},{match:"\\\\\\[(?:C(?:OMPATIBILITYKanjiSpace|OMPATIBILITYNoBreak))\\]",name:"invalid.illegal.unsupported"},{match:"\\\\\\[(?:I(?:nlinePart))\\]",name:"invalid.illegal.unsupported"},{match:"\\\\\\[(?:A(?:Acute|Bar|Cup|DoubleDot|E|Grave|Hat|Ring|Tilde|leph|liasDelimiter|liasIndicator|lignmentMarker|lpha|ltKey|nd|ngle|ngstrom|pplication|quariusSign|riesSign|scendingEllipsis|utoLeftMatch|utoOperand|utoPlaceholder|utoRightMatch|utoSpace))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:B(?:ackslash|eamedEighthNote|eamedSixteenthNote|ecause|et|eta|lackBishop|lackKing|lackKnight|lackPawn|lackQueen|lackRook|reve|ullet))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:C(?:Acute|Cedilla|Hacek|ancerSign|ap|apitalAAcute|apitalABar|apitalACup|apitalADoubleDot|apitalAE|apitalAGrave|apitalAHat|apitalARing|apitalATilde|apitalAlpha|apitalBeta|apitalCAcute|apitalCCedilla|apitalCHacek|apitalChi|apitalDHacek|apitalDelta|apitalDifferentialD|apitalDigamma|apitalEAcute|apitalEBar|apitalECup|apitalEDoubleDot|apitalEGrave|apitalEHacek|apitalEHat|apitalEpsilon|apitalEta|apitalEth|apitalGamma|apitalIAcute|apitalICup|apitalIDoubleDot|apitalIGrave|apitalIHat|apitalIota|apitalKappa|apitalKoppa|apitalLSlash|apitalLambda|apitalMu|apitalNHacek|apitalNTilde|apitalNu|apitalOAcute|apitalODoubleAcute|apitalODoubleDot|apitalOE|apitalOGrave|apitalOHat|apitalOSlash|apitalOTilde|apitalOmega|apitalOmicron|apitalPhi|apitalPi|apitalPsi|apitalRHacek|apitalRho|apitalSHacek|apitalSampi|apitalSigma|apitalStigma|apitalTHacek|apitalTau|apitalTheta|apitalThorn|apitalUAcute|apitalUDoubleAcute|apitalUDoubleDot|apitalUGrave|apitalUHat|apitalURing|apitalUpsilon|apitalXi|apitalYAcute|apitalZHacek|apitalZeta|apricornSign|edilla|ent|enterDot|enterEllipsis|heckedBox|heckmark|heckmarkedBox|hi|ircleDot|ircleMinus|irclePlus|ircleTimes|lockwiseContourIntegral|loseCurlyDoubleQuote|loseCurlyQuote|loverLeaf|lubSuit|olon|ommandKey|onditioned|ongruent|onjugate|onjugateTranspose|onstantC|ontinuation|ontourIntegral|ontrolKey|oproduct|opyright|ounterClockwiseContourIntegral|ross|ubeRoot|up|upCap|urlyCapitalUpsilon|urlyEpsilon|urlyKappa|urlyPhi|urlyPi|urlyRho|urlyTheta|urrency))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:D(?:Hacek|agger|alet|ash|egree|el|eleteKey|elta|escendingEllipsis|iameter|iamond|iamondSuit|ifferenceDelta|ifferentialD|igamma|irectedEdge|iscreteRatio|iscreteShift|iscretionaryHyphen|iscretionaryLineSeparator|iscretionaryPageBreakAbove|iscretionaryPageBreakBelow|iscretionaryParagraphSeparator|istributed|ivide|ivides|otEqual|otlessI|otlessJ|ottedSquare|oubleContourIntegral|oubleDagger|oubleDot|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oublePrime|oubleRightArrow|oubleRightTee|oubleStruckA|oubleStruckB|oubleStruckC|oubleStruckCapitalA|oubleStruckCapitalB|oubleStruckCapitalC|oubleStruckCapitalD|oubleStruckCapitalE|oubleStruckCapitalF|oubleStruckCapitalG|oubleStruckCapitalH|oubleStruckCapitalI|oubleStruckCapitalJ|oubleStruckCapitalK|oubleStruckCapitalL|oubleStruckCapitalM|oubleStruckCapitalN|oubleStruckCapitalO|oubleStruckCapitalP|oubleStruckCapitalQ|oubleStruckCapitalR|oubleStruckCapitalS|oubleStruckCapitalT|oubleStruckCapitalU|oubleStruckCapitalV|oubleStruckCapitalW|oubleStruckCapitalX|oubleStruckCapitalY|oubleStruckCapitalZ|oubleStruckD|oubleStruckE|oubleStruckEight|oubleStruckF|oubleStruckFive|oubleStruckFour|oubleStruckG|oubleStruckH|oubleStruckI|oubleStruckJ|oubleStruckK|oubleStruckL|oubleStruckM|oubleStruckN|oubleStruckNine|oubleStruckO|oubleStruckOne|oubleStruckP|oubleStruckQ|oubleStruckR|oubleStruckS|oubleStruckSeven|oubleStruckSix|oubleStruckT|oubleStruckThree|oubleStruckTwo|oubleStruckU|oubleStruckV|oubleStruckW|oubleStruckX|oubleStruckY|oubleStruckZ|oubleStruckZero|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|oubledGamma|oubledPi|ownArrow|ownArrowBar|ownArrowUpArrow|ownBreve|ownExclamation|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownPointer|ownQuestion|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:E(?:Acute|Bar|Cup|DoubleDot|Grave|Hacek|Hat|arth|ighthNote|lement|llipsis|mptyCircle|mptyDiamond|mptyDownTriangle|mptyRectangle|mptySet|mptySmallCircle|mptySmallSquare|mptySquare|mptyUpTriangle|mptyVerySmallSquare|nterKey|ntityEnd|ntityStart|psilon|qual|qualTilde|quilibrium|quivalent|rrorIndicator|scapeKey|ta|th|uro|xists|xponentialE))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:F(?:iLigature|illedCircle|illedDiamond|illedDownTriangle|illedLeftTriangle|illedRectangle|illedRightTriangle|illedSmallCircle|illedSmallSquare|illedSquare|illedUpTriangle|illedVerySmallSquare|inalSigma|irstPage|ivePointedStar|lLigature|lat|lorin|orAll|ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta|reakedSmiley|unction))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:G(?:amma|eminiSign|imel|othicA|othicB|othicC|othicCapitalA|othicCapitalB|othicCapitalC|othicCapitalD|othicCapitalE|othicCapitalF|othicCapitalG|othicCapitalH|othicCapitalI|othicCapitalJ|othicCapitalK|othicCapitalL|othicCapitalM|othicCapitalN|othicCapitalO|othicCapitalP|othicCapitalQ|othicCapitalR|othicCapitalS|othicCapitalT|othicCapitalU|othicCapitalV|othicCapitalW|othicCapitalX|othicCapitalY|othicCapitalZ|othicD|othicE|othicEight|othicF|othicFive|othicFour|othicG|othicH|othicI|othicJ|othicK|othicL|othicM|othicN|othicNine|othicO|othicOne|othicP|othicQ|othicR|othicS|othicSeven|othicSix|othicT|othicThree|othicTwo|othicU|othicV|othicW|othicX|othicY|othicZ|othicZero|rayCircle|raySquare|reaterEqual|reaterEqualLess|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterTilde))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:H(?:Bar|acek|appySmiley|eartSuit|ermitianConjugate|orizontalLine|umpDownHump|umpEqual|yphen))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:I(?:Acute|Cup|DoubleDot|Grave|Hat|maginaryI|maginaryJ|mplicitPlus|mplies|ndentingNewLine|nfinity|ntegral|ntersection|nvisibleApplication|nvisibleComma|nvisiblePostfixScriptBase|nvisiblePrefixScriptBase|nvisibleSpace|nvisibleTimes|ota))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:J(?:upiter))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:K(?:appa|ernelIcon|eyBar|oppa))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:L(?:Slash|ambda|astPage|eftAngleBracket|eftArrow|eftArrowBar|eftArrowRightArrow|eftAssociation|eftBracketingBar|eftCeiling|eftDoubleBracket|eftDoubleBracketingBar|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftFloor|eftGuillemet|eftModified|eftPointer|eftRightArrow|eftRightVector|eftSkeleton|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|eoSign|essEqual|essEqualGreater|essFullEqual|essGreater|essLess|essSlantEqual|essTilde|etterSpace|ibraSign|ightBulb|imit|ineSeparator|ongDash|ongEqual|ongLeftArrow|ongLeftRightArrow|ongRightArrow|owerLeftArrow|owerRightArrow))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:M(?:ars|athematicaIcon|axLimit|easuredAngle|ediumSpace|ercury|ho|icro|inLimit|inusPlus|od1Key|od2Key|u))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:N(?:Hacek|Tilde|and|atural|egativeMediumSpace|egativeThickSpace|egativeThinSpace|egativeVeryThinSpace|eptune|estedGreaterGreater|estedLessLess|eutralSmiley|ewLine|oBreak|onBreakingSpace|or|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqual|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|u|ull|umberSign))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:O(?:Acute|DoubleAcute|DoubleDot|E|Grave|Hat|Slash|Tilde|mega|micron|penCurlyDoubleQuote|penCurlyQuote|ptionKey|r|verBrace|verBracket|verParenthesis))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:P(?:aragraph|aragraphSeparator|artialD|ermutationProduct|erpendicular|hi|i|iecewise|iscesSign|laceholder|lusMinus|luto|recedes|recedesEqual|recedesSlantEqual|recedesTilde|rime|roduct|roportion|roportional|si))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:Q(?:uarterNote))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:R(?:Hacek|awAmpersand|awAt|awBackquote|awBackslash|awColon|awComma|awDash|awDollar|awDot|awDoubleQuote|awEqual|awEscape|awExclamation|awGreater|awLeftBrace|awLeftBracket|awLeftParenthesis|awLess|awNumberSign|awPercent|awPlus|awQuestion|awQuote|awReturn|awRightBrace|awRightBracket|awRightParenthesis|awSemicolon|awSlash|awSpace|awStar|awTab|awTilde|awUnderscore|awVerticalBar|awWedge|egisteredTrademark|eturnIndicator|eturnKey|everseDoublePrime|everseElement|everseEquilibrium|eversePrime|everseUpEquilibrium|ho|ightAngle|ightAngleBracket|ightArrow|ightArrowBar|ightArrowLeftArrow|ightAssociation|ightBracketingBar|ightCeiling|ightDoubleBracket|ightDoubleBracketingBar|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightFloor|ightGuillemet|ightModified|ightPointer|ightSkeleton|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|oundImplies|oundSpaceIndicator|ule|uleDelayed|upee))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:S(?:Hacek|Z|adSmiley|agittariusSign|ampi|aturn|corpioSign|criptA|criptB|criptC|criptCapitalA|criptCapitalB|criptCapitalC|criptCapitalD|criptCapitalE|criptCapitalF|criptCapitalG|criptCapitalH|criptCapitalI|criptCapitalJ|criptCapitalK|criptCapitalL|criptCapitalM|criptCapitalN|criptCapitalO|criptCapitalP|criptCapitalQ|criptCapitalR|criptCapitalS|criptCapitalT|criptCapitalU|criptCapitalV|criptCapitalW|criptCapitalX|criptCapitalY|criptCapitalZ|criptD|criptDotlessI|criptDotlessJ|criptE|criptEight|criptF|criptFive|criptFour|criptG|criptH|criptI|criptJ|criptK|criptL|criptM|criptN|criptNine|criptO|criptOne|criptP|criptQ|criptR|criptS|criptSeven|criptSix|criptT|criptThree|criptTwo|criptU|criptV|criptW|criptX|criptY|criptZ|criptZero|ection|electionPlaceholder|hah|harp|hiftKey|hortDownArrow|hortLeftArrow|hortRightArrow|hortUpArrow|igma|ixPointedStar|keletonIndicator|mallCircle|paceIndicator|paceKey|padeSuit|panFromAbove|panFromBoth|panFromLeft|phericalAngle|qrt|quare|quareIntersection|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|tar|terling|tigma|ubset|ubsetEqual|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uchThat|um|uperset|upersetEqual|ystemEnterKey|ystemsModelDelay))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:T(?:Hacek|abKey|au|aurusSign|ensorProduct|ensorWedge|herefore|heta|hickSpace|hinSpace|horn|ilde|ildeEqual|ildeFullEqual|ildeTilde|imes|rademark|ranspose|ripleDot|woWayRule))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:U(?:Acute|DoubleAcute|DoubleDot|Grave|Hat|Ring|nderBrace|nderBracket|nderParenthesis|ndirectedEdge|nion|nionPlus|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pPointer|pTee|pTeeArrow|pperLeftArrow|pperRightArrow|psilon|ranus))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:V(?:ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ee|enus|erticalBar|erticalEllipsis|erticalLine|erticalSeparator|erticalTilde|eryThinSpace|irgoSign))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:W(?:arningSign|atchIcon|edge|eierstrassP|hiteBishop|hiteKing|hiteKnight|hitePawn|hiteQueen|hiteRook|olf|olframLanguageLogo|olframLanguageLogoCircle))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:X(?:i|nor|or))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:Y(?:Acute|DoubleDot|en))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:Z(?:Hacek|eta))\\]",name:"donothighlight.constant.character.escape"},{match:"\\\\\\[(?:[$[:alpha:]][$[:alnum:]]*)?\\]?",name:"invalid.illegal.BadLongName"},{match:"\\\\(?:[$[:alpha:]][$[:alnum:]]*)\\]",name:"invalid.illegal.BadLongName"},{match:"\\\\:\\h{4}",name:"donothighlight.constant.character.escape"},{match:"\\\\:\\h{1,3}",name:"invalid.illegal"},{match:"\\\\\\.\\h{2}",name:"donothighlight.constant.character.escape"},{match:"\\\\\\.\\h{1}",name:"invalid.illegal"},{match:"\\\\\\|0\\h{5}",name:"donothighlight.constant.character.escape"},{match:"\\\\\\|10\\h{4}",name:"donothighlight.constant.character.escape"},{match:"\\\\\\|\\h{1,6}",name:"invalid.illegal"},{match:"\\\\[0-7]{3}",name:"donothighlight.constant.character.escape"},{match:"\\\\[0-7]{1,2}",name:"invalid.illegal"},{match:"\\\\$",name:"donothighlight.constant.character.escape punctuation.separator.continuation"},{match:"\\\\.",name:"invalid.illegal"}]},expressions:{patterns:[{include:"#comments"},{include:"#escaped_character_symbols"},{include:"#escaped_characters"},{include:"#out"},{include:"#slot"},{include:"#literals"},{include:"#groups"},{include:"#stringifying-operators"},{include:"#operators"},{include:"#pattern-operators"},{include:"#symbols"},{match:"(?:!|&|'|\\*|\\+|,|-|\\.|/|:|;|<|=|>|\\?|@|\\\\|\\^|\\||~)",name:"invalid.illegal"}]},groups:{patterns:[{match:"\\\\\\)",name:"invalid.illegal.stray-linearsyntaxparens-end.wolfram"},{match:"\\)",name:"invalid.illegal.stray-parens-end.wolfram"},{match:"\\[\\s+\\[",name:"invalid.whitespace.Part.wolfram"},{match:"\\]\\s+\\]",name:"invalid.whitespace.Part.wolfram"},{match:"\\]\\]",name:"invalid.illegal.stray-parts-end.wolfram"},{match:"\\]",name:"invalid.illegal.stray-brackets-end.wolfram"},{match:"\\}",name:"invalid.illegal.stray-braces-end.wolfram"},{match:"\\|>",name:"invalid.illegal.stray-associations-end.wolfram"},{include:"#linearsyntaxparen-group"},{include:"#paren-group"},{include:"#part-group"},{include:"#bracket-group"},{include:"#brace-group"},{include:"#association-group"}]},"linearsyntaxparen-group":{begin:"\\\\\\(",beginCaptures:{0:{name:"punctuation.section.linearsyntaxparens.begin.wolfram"}},end:"\\\\\\)",endCaptures:{0:{name:"punctuation.section.linearsyntaxparens.end.wolfram"}},name:"meta.linearsyntaxparens.wolfram",patterns:[{include:"#expressions"}]},literals:{patterns:[{include:"#numbers"},{include:"#strings"}]},main:{patterns:[{include:"#shebang"},{include:"#simple-toplevel-definitions"},{include:"#expressions"}]},numbers:{patterns:[{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",name:"invalid.illegal"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",name:"constant.numeric.wolfram"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)``",name:"invalid.illegal"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",name:"invalid.illegal"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",name:"constant.numeric.wolfram"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)\\*\\^",name:"invalid.illegal"},{match:"2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)",name:"constant.numeric.wolfram"},{match:"2\\^\\^",name:"invalid.illegal"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",name:"invalid.illegal"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",name:"constant.numeric.wolfram"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)``",name:"invalid.illegal"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",name:"invalid.illegal"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",name:"constant.numeric.wolfram"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)\\*\\^",name:"invalid.illegal"},{match:"8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)",name:"constant.numeric.wolfram"},{match:"8\\^\\^",name:"invalid.illegal"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",name:"invalid.illegal"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",name:"constant.numeric.wolfram"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)``",name:"invalid.illegal"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",name:"invalid.illegal"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",name:"constant.numeric.wolfram"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)\\*\\^",name:"invalid.illegal"},{match:"16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)",name:"constant.numeric.wolfram"},{match:"16\\^\\^",name:"invalid.illegal"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",name:"invalid.illegal"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",name:"constant.numeric.wolfram"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)``",name:"invalid.illegal"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",name:"invalid.illegal"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",name:"constant.numeric.wolfram"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:\\*\\^(?:-|\\+)?+\\d+)",name:"constant.numeric.wolfram"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)\\*\\^",name:"invalid.illegal"},{match:"(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)",name:"constant.numeric.wolfram"}]},operators:{patterns:[{match:"(?:\\^:=)",name:"keyword.operator.assignment.UpSetDelayed.wolfram"},{match:"(?:\\^:)",name:"invalid.illegal"},{match:"(?:===)",name:"keyword.operator.SameQ.wolfram"},{match:"(?:=!=|\\.\\.\\.|//\\.|@@@|<->|//@)",name:"keyword.operator.wolfram"},{match:"(?:\\|->)",name:"keyword.operator.Function.wolfram"},{match:"(?://=)",name:"keyword.operator.assignment.ApplyTo.wolfram"},{match:"(?:--|\\+\\+)",name:"keyword.operator.arithmetic.wolfram"},{match:"(?:\\|\\||&&)",name:"keyword.operator.logical.wolfram"},{match:"(?::=)",name:"keyword.operator.assignment.SetDelayed.wolfram"},{match:"(?:\\^=)",name:"keyword.operator.assignment.UpSet.wolfram"},{match:"(?:/=)",name:"keyword.operator.assignment.DivideBy.wolfram"},{match:"(?:\\+=)",name:"keyword.operator.assignment.AddTo.wolfram"},{match:"(?:=\\s+\\.(?![0-9]))",name:"invalid.whitespace.Unset.wolfram"},{match:"(?:=\\.(?![0-9]))",name:"keyword.operator.assignment.Unset.wolfram"},{match:"(?:\\*=)",name:"keyword.operator.assignment.TimesBy.wolfram"},{match:"(?:-=)",name:"keyword.operator.assignment.SubtractFrom.wolfram"},{match:"(?:/:)",name:"keyword.operator.assignment.Tag.wolfram"},{match:"(?:;;)$",name:"invalid.endofline.Span.wolfram"},{match:"(?:;;)",name:"keyword.operator.Span.wolfram"},{match:"(?:!=)",name:"keyword.operator.Unequal.wolfram"},{match:"(?:==)",name:"keyword.operator.Equal.wolfram"},{match:"(?:!!)",name:"keyword.operator.BangBang.wolfram"},{match:"(?:\\?\\?)",name:"invalid.illegal.Information.wolfram"},{match:"(?:<=|>=|\\.\\.|:>|<>|->|/@|/;|/\\.|//|/\\*|@@|@\\*|~~|\\*\\*)",name:"keyword.operator.wolfram"},{match:"(?:-|\\+|/|\\*)",name:"keyword.operator.arithmetic.wolfram"},{match:"(?:=)",name:"keyword.operator.assignment.Set.wolfram"},{match:"(?:<)",name:"keyword.operator.Less.wolfram"},{match:"(?:\\|)",name:"keyword.operator.Alternatives.wolfram"},{match:"(?:!)",name:"keyword.operator.Bang.wolfram"},{match:"(?:;)",name:"keyword.operator.CompoundExpression.wolfram punctuation.terminator"},{match:"(?:,)",name:"keyword.operator.Comma.wolfram punctuation.separator"},{match:"^(?:\\?)",name:"invalid.startofline.Information.wolfram"},{match:"(?:\\?)",name:"keyword.operator.PatternTest.wolfram"},{match:"(?:')",name:"keyword.operator.Derivative.wolfram"},{match:"(?:&)",name:"keyword.operator.Function.wolfram"},{match:"(?:>|\\^|\\.|:|@|~)",name:"keyword.operator.wolfram"}]},out:{patterns:[{match:"%\\d+",name:"keyword.other.Out.wolfram"},{match:"%+",name:"keyword.other.Out.wolfram"}]},"paren-group":{begin:"\\(",beginCaptures:{0:{name:"punctuation.section.parens.begin.wolfram"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.parens.end.wolfram"}},name:"meta.parens.wolfram",patterns:[{include:"#expressions"}]},"part-group":{begin:"\\[\\[",beginCaptures:{0:{name:"punctuation.section.parts.begin.wolfram"}},end:"\\]\\]",endCaptures:{0:{name:"punctuation.section.parts.end.wolfram"}},name:"meta.parts.wolfram",patterns:[{include:"#expressions"}]},"pattern-operators":{patterns:[{match:"___",name:"keyword.operator.BlankNullSequence.wolfram"},{match:"__",name:"keyword.operator.BlankSequence.wolfram"},{match:"_\\.",name:"keyword.operator.Optional.wolfram"},{match:"_",name:"keyword.operator.Blank.wolfram"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.wolfram"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.wolfram"},"simple-toplevel-definitions":{patterns:[{captures:{1:{name:"support.function.builtin.wolfram"},2:{name:"punctuation.section.brackets.begin.wolfram"},3:{name:"meta.function.wolfram entity.name.Context.wolfram"},4:{name:"meta.function.wolfram entity.name.function.wolfram"},5:{name:"punctuation.section.brackets.end.wolfram"},6:{name:"keyword.operator.assignment.wolfram"}},match:"^\\s*(Attributes|Format|Options)\\s*(\\[)(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(\\])\\s*(:=|=(?!!|=|\\.))"},{captures:{1:{name:"meta.function.wolfram entity.name.Context.wolfram"},2:{name:"meta.function.wolfram entity.name.function.wolfram"}},match:"^\\s*(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(?=\\s*(\\[(?>[^\\[\\]]+|\\g<-1>)*\\])\\s*(?:/;.*)?(?::=|=(?!!|=|\\.)))"},{captures:{1:{name:"meta.function.wolfram entity.name.Context.wolfram"},2:{name:"meta.function.wolfram entity.name.constant.wolfram"}},match:"^\\s*(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(?=\\s*(?:/;.*)?(?::=|=(?!!|=|\\.)))"}]},slot:{patterns:[{match:"#[[:alpha:]][[:alnum:]]*",name:"keyword.other.Slot.wolfram"},{match:"##\\d*",name:"keyword.other.SlotSequence.wolfram"},{match:"#\\d*",name:"keyword.other.Slot.wolfram"}]},string_escaped_characters:{patterns:[{match:'\\\\[bfnrt\\"\\\\<>]',name:"donothighlight.constant.character.escape"},{include:"#escaped_characters"}]},"stringifying-operators":{patterns:[{captures:{1:{name:"keyword.operator.PutAppend.wolfram"}},match:'(>>>)(?=\\s*")'},{captures:{1:{name:"keyword.operator.PutAppend.wolfram"},2:{name:"string.unquoted.wolfram"}},match:"(>>>)\\s*(\\w+)"},{match:">>>",name:"invalid.illegal"},{captures:{1:{name:"keyword.operator.MessageName.wolfram"}},match:'(::)(?=\\s*")'},{captures:{1:{name:"keyword.operator.MessageName.wolfram"},2:{name:"string.unquoted.wolfram"}},match:"(::)([[:alpha:]][[:alnum:]]*)"},{match:"::",name:"invalid.illegal"},{captures:{1:{name:"keyword.operator.Get.wolfram"}},match:'(<<)(?=\\s*")'},{captures:{1:{name:"keyword.operator.Get.wolfram"},2:{name:"string.unquoted.wolfram"}},match:"(<<)\\s*([`[:alpha:]][`[:alnum:]]*)"},{match:"<<",name:"invalid.illegal"},{captures:{1:{name:"keyword.operator.Put.wolfram"}},match:'(>>)(?=\\s*")'},{captures:{1:{name:"keyword.operator.Put.wolfram"},2:{name:"string.unquoted.wolfram"}},match:"(>>)\\s*(\\w*)"},{match:">>",name:"invalid.illegal"}]},strings:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end"}},name:"string.quoted.double",patterns:[{include:"#string_escaped_characters"}]}]},symbols:{patterns:[{match:"System`(?:A(?:ASTriangle|PIFunction|RCHProcess|RIMAProcess|RMAProcess|RProcess|SATriangle|belianGroup|bort|bortKernels|bortProtect|bs|bsArg|bsArgPlot|bsoluteCorrelation|bsoluteCorrelationFunction|bsoluteCurrentValue|bsoluteDashing|bsoluteFileName|bsoluteOptions|bsolutePointSize|bsoluteThickness|bsoluteTime|bsoluteTiming|ccountingForm|ccumulate|ccuracy|cousticAbsorbingValue|cousticImpedanceValue|cousticNormalVelocityValue|cousticPDEComponent|cousticPressureCondition|cousticRadiationValue|cousticSoundHardValue|cousticSoundSoftCondition|ctionMenu|ctivate|cyclicGraphQ|ddSides|ddTo|ddUsers|djacencyGraph|djacencyList|djacencyMatrix|djacentMeshCells|djugate|djustTimeSeriesForecast|djustmentBox|dministrativeDivisionData|ffineHalfSpace|ffineSpace|ffineStateSpaceModel|ffineTransform|irPressureData|irSoundAttenuation|irTemperatureData|ircraftData|irportData|iryAi|iryAiPrime|iryAiZero|iryBi|iryBiPrime|iryBiZero|lgebraicIntegerQ|lgebraicNumber|lgebraicNumberDenominator|lgebraicNumberNorm|lgebraicNumberPolynomial|lgebraicNumberTrace|lgebraicUnitQ|llTrue|lphaChannel|lphabet|lphabeticOrder|lphabeticSort|lternatingFactorial|lternatingGroup|lternatives|mbientLight|mbiguityList|natomyData|natomyPlot3D|natomyStyling|nd|ndersonDarlingTest|ngerJ|ngleBracket|nglePath|nglePath3D|ngleVector|ngularGauge|nimate|nimator|nnotate|nnotation|nnotationDelete|nnotationKeys|nnotationValue|nnuity|nnuityDue|nnulus|nomalyDetection|nomalyDetectorFunction|ntihermitian|ntihermitianMatrixQ|ntisymmetric|ntisymmetricMatrixQ|ntonyms|nyOrder|nySubset|nyTrue|part|partSquareFree|ppellF1|ppend|ppendTo|pply|pplySides|pplyTo|rcCos|rcCosh|rcCot|rcCoth|rcCsc|rcCsch|rcCurvature|rcLength|rcSec|rcSech|rcSin|rcSinDistribution|rcSinh|rcTan|rcTanh|rea|rg|rgMax|rgMin|rgumentsOptions|rithmeticGeometricMean|rray|rrayComponents|rrayDepth|rrayFilter|rrayFlatten|rrayMesh|rrayPad|rrayPlot|rrayPlot3D|rrayQ|rrayResample|rrayReshape|rrayRules|rrays|rrow|rrowheads|ssert|ssociateTo|ssociation|ssociationMap|ssociationQ|ssociationThread|ssuming|symptotic|symptoticDSolveValue|symptoticEqual|symptoticEquivalent|symptoticExpectation|symptoticGreater|symptoticGreaterEqual|symptoticIntegrate|symptoticLess|symptoticLessEqual|symptoticOutputTracker|symptoticProbability|symptoticProduct|symptoticRSolveValue|symptoticSolve|symptoticSum|tomQ|ttributes|udio|udioAmplify|udioBlockMap|udioCapture|udioChannelCombine|udioChannelMix|udioChannelSeparate|udioChannels|udioData|udioDelay|udioDelete|udioDistance|udioFade|udioFrequencyShift|udioGenerator|udioInsert|udioIntervals|udioJoin|udioLength|udioLocalMeasurements|udioLoudness|udioMeasurements|udioNormalize|udioOverlay|udioPad|udioPan|udioPartition|udioPitchShift|udioPlot|udioQ|udioReplace|udioResample|udioReverb|udioReverse|udioSampleRate|udioSpectralMap|udioSpectralTransformation|udioSplit|udioTimeStretch|udioTrim|udioType|ugmentedPolyhedron|ugmentedSymmetricPolynomial|uthenticationDialog|utoRefreshed|utoSubmitting|utocorrelationTest))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:B(?:SplineBasis|SplineCurve|SplineFunction|SplineSurface|abyMonsterGroupB|ackslash|all|and|andpassFilter|andstopFilter|arChart|arChart3D|arLegend|arabasiAlbertGraphDistribution|arcodeImage|arcodeRecognize|aringhausHenzeTest|arlowProschanImportance|arnesG|artlettHannWindow|artlettWindow|aseDecode|aseEncode|aseForm|atesDistribution|attleLemarieWavelet|ecause|eckmannDistribution|eep|egin|eginDialogPacket|eginPackage|ellB|ellY|enfordDistribution|eniniDistribution|enktanderGibratDistribution|enktanderWeibullDistribution|ernoulliB|ernoulliDistribution|ernoulliGraphDistribution|ernoulliProcess|ernsteinBasis|esselFilterModel|esselI|esselJ|esselJZero|esselK|esselY|esselYZero|eta|etaBinomialDistribution|etaDistribution|etaNegativeBinomialDistribution|etaPrimeDistribution|etaRegularized|etween|etweennessCentrality|eveledPolyhedron|ezierCurve|ezierFunction|ilateralFilter|ilateralLaplaceTransform|ilateralZTransform|inCounts|inLists|inarize|inaryDeserialize|inaryDistance|inaryImageQ|inaryRead|inaryReadList|inarySerialize|inaryWrite|inomial|inomialDistribution|inomialProcess|inormalDistribution|iorthogonalSplineWavelet|ipartiteGraphQ|iquadraticFilterModel|irnbaumImportance|irnbaumSaundersDistribution|itAnd|itClear|itGet|itLength|itNot|itOr|itSet|itShiftLeft|itShiftRight|itXor|iweightLocation|iweightMidvariance|lackmanHarrisWindow|lackmanNuttallWindow|lackmanWindow|lank|lankNullSequence|lankSequence|lend|lock|lockMap|lockRandom|lomqvistBeta|lomqvistBetaTest|lur|lurring|odePlot|ohmanWindow|oole|ooleanConsecutiveFunction|ooleanConvert|ooleanCountingFunction|ooleanFunction|ooleanGraph|ooleanMaxterms|ooleanMinimize|ooleanMinterms|ooleanQ|ooleanRegion|ooleanTable|ooleanVariables|orderDimensions|orelTannerDistribution|ottomHatTransform|oundaryDiscretizeGraphics|oundaryDiscretizeRegion|oundaryMesh|oundaryMeshRegion|oundaryMeshRegionQ|oundedRegionQ|oundingRegion|oxData|oxMatrix|oxObject|oxWhiskerChart|racketingBar|rayCurtisDistance|readthFirstScan|reak|ridgeData|rightnessEqualize|roadcastStationData|rownForsytheTest|rownianBridgeProcess|ubbleChart|ubbleChart3D|uckyballGraph|uildingData|ulletGauge|usinessDayQ|utterflyGraph|utterworthFilterModel|utton|uttonBar|uttonBox|uttonNotebook|yteArray|yteArrayFormat|yteArrayFormatQ|yteArrayQ|yteArrayToString|yteCount))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:C(?:|DF|DFDeploy|DFWavelet|Form|MYKColor|SGRegion|SGRegionQ|SGRegionTree|alendarConvert|alendarData|allPacket|allout|anberraDistance|ancel|ancelButton|andlestickChart|anonicalGraph|anonicalName|anonicalWarpingCorrespondence|anonicalWarpingDistance|anonicalizePolygon|anonicalizePolyhedron|anonicalizeRegion|antorMesh|antorStaircase|ap|apForm|apitalDifferentialD|apitalize|apsuleShape|aputoD|arlemanLinearize|arlsonRC|arlsonRD|arlsonRE|arlsonRF|arlsonRG|arlsonRJ|arlsonRK|arlsonRM|armichaelLambda|aseSensitive|ases|ashflow|asoratian|atalanNumber|atch|atenate|auchyDistribution|auchyMatrix|auchyWindow|ayleyGraph|eiling|ell|ellGroup|ellGroupData|ellObject|ellPrint|ells|ellularAutomaton|ensoredDistribution|ensoring|enterArray|enterDot|enteredInterval|entralFeature|entralMoment|entralMomentGeneratingFunction|epstrogram|epstrogramArray|epstrumArray|hampernowneNumber|hanVeseBinarize|haracterCounts|haracterName|haracterRange|haracteristicFunction|haracteristicPolynomial|haracters|hebyshev1FilterModel|hebyshev2FilterModel|hebyshevT|hebyshevU|heck|heckAbort|heckArguments|heckbox|heckboxBar|hemicalData|hessboardDistance|hiDistribution|hiSquareDistribution|hineseRemainder|hoiceButtons|hoiceDialog|holeskyDecomposition|hop|hromaticPolynomial|hromaticityPlot|hromaticityPlot3D|ircle|ircleDot|ircleMinus|irclePlus|irclePoints|ircleThrough|ircleTimes|irculantGraph|ircularArcThrough|ircularOrthogonalMatrixDistribution|ircularQuaternionMatrixDistribution|ircularRealMatrixDistribution|ircularSymplecticMatrixDistribution|ircularUnitaryMatrixDistribution|ircumsphere|ityData|lassifierFunction|lassifierMeasurements|lassifierMeasurementsObject|lassify|lear|learAll|learAttributes|learCookies|learPermissions|learSystemCache|lebschGordan|lickPane|lickToCopy|lip|lock|lockGauge|lose|loseKernels|losenessCentrality|losing|loudAccountData|loudConnect|loudDeploy|loudDirectory|loudDisconnect|loudEvaluate|loudExport|loudFunction|loudGet|loudImport|loudLoggingData|loudObject|loudObjects|loudPublish|loudPut|loudSave|loudShare|loudSubmit|loudSymbol|loudUnshare|lusterClassify|lusteringComponents|lusteringMeasurements|lusteringTree|oefficient|oefficientArrays|oefficientList|oefficientRules|oifletWavelet|ollect|ollinearPoints|olon|olorBalance|olorCombine|olorConvert|olorData|olorDataFunction|olorDetect|olorDistance|olorNegate|olorProfileData|olorQ|olorQuantize|olorReplace|olorSeparate|olorSetter|olorSlider|olorToneMapping|olorize|olorsNear|olumn|ometData|ommonName|ommonUnits|ommonest|ommonestFilter|ommunityGraphPlot|ompanyData|ompatibleUnitQ|ompile|ompiledFunction|omplement|ompleteGraph|ompleteGraphQ|ompleteIntegral|ompleteKaryTree|omplex|omplexArrayPlot|omplexContourPlot|omplexExpand|omplexListPlot|omplexPlot|omplexPlot3D|omplexRegionPlot|omplexStreamPlot|omplexVectorPlot|omponentMeasurements|omposeList|omposeSeries|ompositeQ|omposition|ompoundElement|ompoundExpression|ompoundPoissonDistribution|ompoundPoissonProcess|ompoundRenewalProcess|ompress|oncaveHullMesh|ondition|onditionalExpression|onditioned|one|onfirm|onfirmAssert|onfirmBy|onfirmMatch|onformAudio|onformImages|ongruent|onicGradientFilling|onicHullRegion|onicOptimization|onjugate|onjugateTranspose|onjunction|onnectLibraryCallbackFunction|onnectedComponents|onnectedGraphComponents|onnectedGraphQ|onnectedMeshComponents|onnesWindow|onoverTest|onservativeConvectionPDETerm|onstantArray|onstantImage|onstantRegionQ|onstellationData|onstruct|ontainsAll|ontainsAny|ontainsExactly|ontainsNone|ontainsOnly|ontext|ontextToFileName|ontexts|ontinue|ontinuedFraction|ontinuedFractionK|ontinuousMarkovProcess|ontinuousTask|ontinuousTimeModelQ|ontinuousWaveletData|ontinuousWaveletTransform|ontourDetect|ontourPlot|ontourPlot3D|ontraharmonicMean|ontrol|ontrolActive|ontrollabilityGramian|ontrollabilityMatrix|ontrollableDecomposition|ontrollableModelQ|ontrollerInformation|ontrollerManipulate|ontrollerState|onvectionPDETerm|onvergents|onvexHullMesh|onvexHullRegion|onvexOptimization|onvexPolygonQ|onvexPolyhedronQ|onvexRegionQ|onvolve|onwayGroupCo1|onwayGroupCo2|onwayGroupCo3|oordinateBoundingBox|oordinateBoundingBoxArray|oordinateBounds|oordinateBoundsArray|oordinateChartData|oordinateTransform|oordinateTransformData|oplanarPoints|oprimeQ|oproduct|opulaDistribution|opyDatabin|opyDirectory|opyFile|opyToClipboard|oreNilpotentDecomposition|ornerFilter|orrelation|orrelationDistance|orrelationFunction|orrelationTest|os|osIntegral|osh|oshIntegral|osineDistance|osineWindow|ot|oth|oulombF|oulombG|oulombH1|oulombH2|ount|ountDistinct|ountDistinctBy|ountRoots|ountryData|ounts|ountsBy|ovariance|ovarianceFunction|oxIngersollRossProcess|oxModel|oxModelFit|oxianDistribution|ramerVonMisesTest|reateArchive|reateDatabin|reateDialog|reateDirectory|reateDocument|reateFile|reateManagedLibraryExpression|reateNotebook|reatePacletArchive|reatePalette|reatePermissionsGroup|reateUUID|reateWindow|riticalSection|riticalityFailureImportance|riticalitySuccessImportance|ross|rossMatrix|rossingCount|rossingDetect|rossingPolygon|sc|sch|ube|ubeRoot|uboid|umulant|umulantGeneratingFunction|umulativeFeatureImpactPlot|up|upCap|url|urrencyConvert|urrentDate|urrentImage|urrentValue|urvatureFlowFilter|ycleGraph|ycleIndexPolynomial|ycles|yclicGroup|yclotomic|ylinder|ylindricalDecomposition|ylindricalDecompositionFunction))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:D(?:|Eigensystem|Eigenvalues|GaussianWavelet|MSList|MSString|Solve|SolveValue|agumDistribution|amData|amerauLevenshteinDistance|arker|ashing|ataDistribution|atabin|atabinAdd|atabinUpload|atabins|ataset|ateBounds|ateDifference|ateHistogram|ateList|ateListLogPlot|ateListPlot|ateListStepPlot|ateObject|ateObjectQ|ateOverlapsQ|atePattern|atePlus|ateRange|ateScale|ateSelect|ateString|ateValue|ateWithinQ|ated|atedUnit|aubechiesWavelet|avisDistribution|awsonF|ayCount|ayHemisphere|ayMatchQ|ayName|ayNightTerminator|ayPlus|ayRange|ayRound|aylightQ|eBruijnGraph|eBruijnSequence|ecapitalize|ecimalForm|eclarePackage|ecompose|ecrement|ecrypt|edekindEta|eepSpaceProbeData|efault|efaultButton|efaultValues|efer|efineInputStreamMethod|efineOutputStreamMethod|efineResourceFunction|efinition|egreeCentrality|egreeGraphDistribution|el|elaunayMesh|elayed|elete|eleteAdjacentDuplicates|eleteAnomalies|eleteBorderComponents|eleteCases|eleteDirectory|eleteDuplicates|eleteDuplicatesBy|eleteFile|eleteMissing|eleteObject|eletePermissionsKey|eleteSmallComponents|eleteStopwords|elimitedSequence|endrogram|enominator|ensityHistogram|ensityPlot|ensityPlot3D|eploy|epth|epthFirstScan|erivative|erivativeFilter|erivativePDETerm|esignMatrix|et|eviceClose|eviceConfigure|eviceExecute|eviceExecuteAsynchronous|eviceObject|eviceOpen|eviceRead|eviceReadBuffer|eviceReadLatest|eviceReadList|eviceReadTimeSeries|eviceStreams|eviceWrite|eviceWriteBuffer|evices|iagonal|iagonalMatrix|iagonalMatrixQ|iagonalizableMatrixQ|ialog|ialogInput|ialogNotebook|ialogReturn|iamond|iamondMatrix|iceDissimilarity|ictionaryLookup|ictionaryWordQ|ifferenceDelta|ifferenceQuotient|ifferenceRoot|ifferenceRootReduce|ifferences|ifferentialD|ifferentialRoot|ifferentialRootReduce|ifferentiatorFilter|iffusionPDETerm|igitCount|igitQ|ihedralAngle|ihedralGroup|ilation|imensionReduce|imensionReducerFunction|imensionReduction|imensionalCombinations|imensionalMeshComponents|imensions|iracComb|iracDelta|irectedEdge|irectedGraph|irectedGraphQ|irectedInfinity|irectionalLight|irective|irectory|irectoryName|irectoryQ|irectoryStack|irichletBeta|irichletCharacter|irichletCondition|irichletConvolve|irichletDistribution|irichletEta|irichletL|irichletLambda|irichletTransform|irichletWindow|iscreteAsymptotic|iscreteChirpZTransform|iscreteConvolve|iscreteDelta|iscreteHadamardTransform|iscreteIndicator|iscreteInputOutputModel|iscreteLQEstimatorGains|iscreteLQRegulatorGains|iscreteLimit|iscreteLyapunovSolve|iscreteMarkovProcess|iscreteMaxLimit|iscreteMinLimit|iscretePlot|iscretePlot3D|iscreteRatio|iscreteRiccatiSolve|iscreteShift|iscreteTimeModelQ|iscreteUniformDistribution|iscreteWaveletData|iscreteWaveletPacketTransform|iscreteWaveletTransform|iscretizeGraphics|iscretizeRegion|iscriminant|isjointQ|isjunction|isk|iskMatrix|iskSegment|ispatch|isplayEndPacket|isplayForm|isplayPacket|istanceMatrix|istanceTransform|istribute|istributeDefinitions|istributed|istributionChart|istributionFitTest|istributionParameterAssumptions|istributionParameterQ|iv|ivide|ivideBy|ivideSides|ivisible|ivisorSigma|ivisorSum|ivisors|o|ocumentGenerator|ocumentGeneratorInformation|ocumentGenerators|ocumentNotebook|odecahedron|ominantColors|ominatorTreeGraph|ominatorVertexList|ot|otEqual|oubleBracketingBar|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oubleRightArrow|oubleRightTee|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|ownArrow|ownArrowBar|ownArrowUpArrow|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow|ownValues|ownsample|razinInverse|rop|ropShadowing|t|ualPlanarGraph|ualPolyhedron|ualSystemsModel|umpSave|uplicateFreeQ|uration|ynamic|ynamicGeoGraphics|ynamicModule|ynamicSetting|ynamicWrapper))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:E(?:arthImpactData|arthquakeData|ccentricityCentrality|choEvaluation|choFunction|choLabel|dgeAdd|dgeBetweennessCentrality|dgeChromaticNumber|dgeConnectivity|dgeContract|dgeCount|dgeCoverQ|dgeCycleMatrix|dgeDelete|dgeDetect|dgeForm|dgeIndex|dgeList|dgeQ|dgeRules|dgeTaggedGraph|dgeTaggedGraphQ|dgeTags|dgeTransitiveGraphQ|dgeWeightedGraphQ|ditDistance|ffectiveInterest|igensystem|igenvalues|igenvectorCentrality|igenvectors|lement|lementData|liminate|llipsoid|llipticE|llipticExp|llipticExpPrime|llipticF|llipticFilterModel|llipticK|llipticLog|llipticNomeQ|llipticPi|llipticTheta|llipticThetaPrime|mbedCode|mbeddedHTML|mbeddedService|mitSound|mpiricalDistribution|mptyGraphQ|mptyRegion|nclose|ncode|ncrypt|ncryptedObject|nd|ndDialogPacket|ndPackage|ngineeringForm|nterExpressionPacket|nterTextPacket|ntity|ntityClass|ntityClassList|ntityCopies|ntityGroup|ntityInstance|ntityList|ntityPrefetch|ntityProperties|ntityProperty|ntityPropertyClass|ntityRegister|ntityStores|ntityTypeName|ntityUnregister|ntityValue|ntropy|ntropyFilter|nvironment|qual|qualTilde|qualTo|quilibrium|quirippleFilterKernel|quivalent|rf|rfc|rfi|rlangB|rlangC|rlangDistribution|rosion|rrorBox|stimatedBackground|stimatedDistribution|stimatedPointNormals|stimatedProcess|stimatorGains|stimatorRegulator|uclideanDistance|ulerAngles|ulerCharacteristic|ulerE|ulerMatrix|ulerPhi|ulerianGraphQ|valuate|valuatePacket|valuationBox|valuationCell|valuationData|valuationNotebook|valuationObject|venQ|ventData|ventHandler|ventSeries|xactBlackmanWindow|xactNumberQ|xampleData|xcept|xists|xoplanetData|xp|xpGammaDistribution|xpIntegralE|xpIntegralEi|xpToTrig|xpand|xpandAll|xpandDenominator|xpandFileName|xpandNumerator|xpectation|xponent|xponentialDistribution|xponentialGeneratingFunction|xponentialMovingAverage|xponentialPowerDistribution|xport|xportByteArray|xportForm|xportString|xpressionCell|xpressionGraph|xtendedGCD|xternalBundle|xtract|xtractArchive|xtractPacletArchive|xtremeValueDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:F(?:ARIMAProcess|RatioDistribution|aceAlign|aceForm|acialFeatures|actor|actorInteger|actorList|actorSquareFree|actorSquareFreeList|actorTerms|actorTermsList|actorial|actorial2|actorialMoment|actorialMomentGeneratingFunction|actorialPower|ailure|ailureDistribution|ailureQ|areySequence|eatureImpactPlot|eatureNearest|eatureSpacePlot|eatureSpacePlot3D|eatureValueDependencyPlot|eatureValueImpactPlot|eedbackLinearize|etalGrowthData|ibonacci|ibonorial|ile|ileBaseName|ileByteCount|ileDate|ileExistsQ|ileExtension|ileFormat|ileFormatQ|ileHash|ileNameDepth|ileNameDrop|ileNameJoin|ileNameSetter|ileNameSplit|ileNameTake|ileNames|ilePrint|ileSize|ileSystemMap|ileSystemScan|ileTemplate|ileTemplateApply|ileType|illedCurve|illedTorus|illingTransform|ilterRules|inancialBond|inancialData|inancialDerivative|inancialIndicator|ind|indAnomalies|indArgMax|indArgMin|indClique|indClusters|indCookies|indCurvePath|indCycle|indDevices|indDistribution|indDistributionParameters|indDivisions|indEdgeColoring|indEdgeCover|indEdgeCut|indEdgeIndependentPaths|indEulerianCycle|indFaces|indFile|indFit|indFormula|indFundamentalCycles|indGeneratingFunction|indGeoLocation|indGeometricTransform|indGraphCommunities|indGraphIsomorphism|indGraphPartition|indHamiltonianCycle|indHamiltonianPath|indHiddenMarkovStates|indIndependentEdgeSet|indIndependentVertexSet|indInstance|indIntegerNullVector|indIsomorphicSubgraph|indKClan|indKClique|indKClub|indKPlex|indLibrary|indLinearRecurrence|indList|indMatchingColor|indMaxValue|indMaximum|indMaximumCut|indMaximumFlow|indMeshDefects|indMinValue|indMinimum|indMinimumCostFlow|indMinimumCut|indPath|indPeaks|indPermutation|indPlanarColoring|indPostmanTour|indProcessParameters|indRegionTransform|indRepeat|indRoot|indSequenceFunction|indShortestPath|indShortestTour|indSpanningTree|indSubgraphIsomorphism|indThreshold|indTransientRepeat|indVertexColoring|indVertexCover|indVertexCut|indVertexIndependentPaths|inishDynamic|initeAbelianGroupCount|initeGroupCount|initeGroupData|irst|irstCase|irstPassageTimeDistribution|irstPosition|ischerGroupFi22|ischerGroupFi23|ischerGroupFi24Prime|isherHypergeometricDistribution|isherRatioTest|isherZDistribution|it|ittedModel|ixedOrder|ixedPoint|ixedPointList|latShading|latTopWindow|latten|lattenAt|lightData|lipView|loor|lowPolynomial|old|oldList|oldPair|oldPairList|oldWhile|oldWhileList|or|orAll|ormBox|ormFunction|ormObject|ormPage|ormat|ormulaData|ormulaLookup|ortranForm|ourier|ourierCoefficient|ourierCosCoefficient|ourierCosSeries|ourierCosTransform|ourierDCT|ourierDCTFilter|ourierDCTMatrix|ourierDST|ourierDSTMatrix|ourierMatrix|ourierSequenceTransform|ourierSeries|ourierSinCoefficient|ourierSinSeries|ourierSinTransform|ourierTransform|ourierTrigSeries|oxH|ractionBox|ractionalBrownianMotionProcess|ractionalD|ractionalGaussianNoiseProcess|ractionalPart|rameBox|ramed|rechetDistribution|reeQ|renetSerretSystem|requencySamplingFilterKernel|resnelC|resnelF|resnelG|resnelS|robeniusNumber|robeniusSolve|romAbsoluteTime|romCharacterCode|romCoefficientRules|romContinuedFraction|romDMS|romDateString|romDigits|romEntity|romJulianDate|romLetterNumber|romPolarCoordinates|romRomanNumeral|romSphericalCoordinates|romUnixTime|rontEndExecute|rontEndToken|rontEndTokenExecute|ullDefinition|ullForm|ullGraphics|ullInformationOutputRegulator|ullRegion|ullSimplify|unction|unctionAnalytic|unctionBijective|unctionContinuous|unctionConvexity|unctionDiscontinuities|unctionDomain|unctionExpand|unctionInjective|unctionInterpolation|unctionMeromorphic|unctionMonotonicity|unctionPeriod|unctionRange|unctionSign|unctionSingularities|unctionSurjective|ussellVeselyImportance))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:G(?:ARCHProcess|CD|aborFilter|aborMatrix|aborWavelet|ainMargins|ainPhaseMargins|alaxyData|amma|ammaDistribution|ammaRegularized|ather|atherBy|aussianFilter|aussianMatrix|aussianOrthogonalMatrixDistribution|aussianSymplecticMatrixDistribution|aussianUnitaryMatrixDistribution|aussianWindow|egenbauerC|eneralizedLinearModelFit|enerateAsymmetricKeyPair|enerateDocument|enerateHTTPResponse|enerateSymmetricKey|eneratingFunction|enericCylindricalDecomposition|enomeData|enomeLookup|eoAntipode|eoArea|eoBoundary|eoBoundingBox|eoBounds|eoBoundsRegion|eoBoundsRegionBoundary|eoBubbleChart|eoCircle|eoContourPlot|eoDensityPlot|eoDestination|eoDirection|eoDisk|eoDisplacement|eoDistance|eoDistanceList|eoElevationData|eoEntities|eoGraphPlot|eoGraphics|eoGridDirectionDifference|eoGridPosition|eoGridUnitArea|eoGridUnitDistance|eoGridVector|eoGroup|eoHemisphere|eoHemisphereBoundary|eoHistogram|eoIdentify|eoImage|eoLength|eoListPlot|eoMarker|eoNearest|eoPath|eoPolygon|eoPosition|eoPositionENU|eoPositionXYZ|eoProjectionData|eoRegionValuePlot|eoSmoothHistogram|eoStreamPlot|eoStyling|eoVariant|eoVector|eoVectorENU|eoVectorPlot|eoVectorXYZ|eoVisibleRegion|eoVisibleRegionBoundary|eoWithinQ|eodesicClosing|eodesicDilation|eodesicErosion|eodesicOpening|eodesicPolyhedron|eodesyData|eogravityModelData|eologicalPeriodData|eomagneticModelData|eometricBrownianMotionProcess|eometricDistribution|eometricMean|eometricMeanFilter|eometricOptimization|eometricTransformation|estureHandler|et|etEnvironment|lobalClusteringCoefficient|low|ompertzMakehamDistribution|oochShading|oodmanKruskalGamma|oodmanKruskalGammaTest|oto|ouraudShading|rad|radientFilter|radientFittedMesh|radientOrientationFilter|rammarApply|rammarRules|rammarToken|raph|raph3D|raphAssortativity|raphAutomorphismGroup|raphCenter|raphComplement|raphData|raphDensity|raphDiameter|raphDifference|raphDisjointUnion|raphDistance|raphDistanceMatrix|raphEmbedding|raphHub|raphIntersection|raphJoin|raphLinkEfficiency|raphPeriphery|raphPlot|raphPlot3D|raphPower|raphProduct|raphPropertyDistribution|raphQ|raphRadius|raphReciprocity|raphSum|raphUnion|raphics|raphics3D|raphicsColumn|raphicsComplex|raphicsGrid|raphicsGroup|raphicsRow|rayLevel|reater|reaterEqual|reaterEqualLess|reaterEqualThan|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterThan|reaterTilde|reenFunction|rid|ridBox|ridGraph|roebnerBasis|roupBy|roupCentralizer|roupElementFromWord|roupElementPosition|roupElementQ|roupElementToWord|roupElements|roupGenerators|roupMultiplicationTable|roupOrbits|roupOrder|roupSetwiseStabilizer|roupStabilizer|roupStabilizerChain|roupings|rowCutComponents|udermannian|uidedFilter|umbelDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:H(?:ITSCentrality|TTPErrorResponse|TTPRedirect|TTPRequest|TTPRequestData|TTPResponse|aarWavelet|adamardMatrix|alfLine|alfNormalDistribution|alfPlane|alfSpace|alftoneShading|amiltonianGraphQ|ammingDistance|ammingWindow|ankelH1|ankelH2|ankelMatrix|ankelTransform|annPoissonWindow|annWindow|aradaNortonGroupHN|araryGraph|armonicMean|armonicMeanFilter|armonicNumber|ash|atchFilling|atchShading|aversine|azardFunction|ead|eatFluxValue|eatInsulationValue|eatOutflowValue|eatRadiationValue|eatSymmetryValue|eatTemperatureCondition|eatTransferPDEComponent|eatTransferValue|eavisideLambda|eavisidePi|eavisideTheta|eldGroupHe|elmholtzPDEComponent|ermiteDecomposition|ermiteH|ermitian|ermitianMatrixQ|essenbergDecomposition|eunB|eunBPrime|eunC|eunCPrime|eunD|eunDPrime|eunG|eunGPrime|eunT|eunTPrime|exahedron|iddenMarkovProcess|ighlightGraph|ighlightImage|ighlightMesh|ighlighted|ighpassFilter|igmanSimsGroupHS|ilbertCurve|ilbertFilter|ilbertMatrix|istogram|istogram3D|istogramDistribution|istogramList|istogramTransform|istogramTransformInterpolation|istoricalPeriodData|itMissTransform|jorthDistribution|odgeDual|oeffdingD|oeffdingDTest|old|oldComplete|oldForm|oldPattern|orizontalGauge|ornerForm|ostLookup|otellingTSquareDistribution|oytDistribution|ue|umanGrowthData|umpDownHump|umpEqual|urwitzLerchPhi|urwitzZeta|yperbolicDistribution|ypercubeGraph|yperexponentialDistribution|yperfactorial|ypergeometric0F1|ypergeometric0F1Regularized|ypergeometric1F1|ypergeometric1F1Regularized|ypergeometric2F1|ypergeometric2F1Regularized|ypergeometricDistribution|ypergeometricPFQ|ypergeometricPFQRegularized|ypergeometricU|yperlink|yperplane|ypoexponentialDistribution|ypothesisTestData))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:I(?:PAddress|conData|conize|cosahedron|dentity|dentityMatrix|f|fCompiled|gnoringInactive|m|mage|mage3D|mage3DProjection|mage3DSlices|mageAccumulate|mageAdd|mageAdjust|mageAlign|mageApply|mageApplyIndexed|mageAspectRatio|mageAssemble|mageCapture|mageChannels|mageClip|mageCollage|mageColorSpace|mageCompose|mageConvolve|mageCooccurrence|mageCorners|mageCorrelate|mageCorrespondingPoints|mageCrop|mageData|mageDeconvolve|mageDemosaic|mageDifference|mageDimensions|mageDisplacements|mageDistance|mageEffect|mageExposureCombine|mageFeatureTrack|mageFileApply|mageFileFilter|mageFileScan|mageFilter|mageFocusCombine|mageForestingComponents|mageForwardTransformation|mageHistogram|mageIdentify|mageInstanceQ|mageKeypoints|mageLevels|mageLines|mageMarker|mageMeasurements|mageMesh|mageMultiply|magePad|magePartition|magePeriodogram|magePerspectiveTransformation|mageQ|mageRecolor|mageReflect|mageResize|mageRestyle|mageRotate|mageSaliencyFilter|mageScaled|mageScan|mageSubtract|mageTake|mageTransformation|mageTrim|mageType|mageValue|mageValuePositions|mageVectorscopePlot|mageWaveformPlot|mplicitD|mplicitRegion|mplies|mport|mportByteArray|mportString|mprovementImportance|nactivate|nactive|ncidenceGraph|ncidenceList|ncidenceMatrix|ncrement|ndefiniteMatrixQ|ndependenceTest|ndependentEdgeSetQ|ndependentPhysicalQuantity|ndependentUnit|ndependentUnitDimension|ndependentVertexSetQ|ndexEdgeTaggedGraph|ndexGraph|ndexed|nexactNumberQ|nfiniteLine|nfiniteLineThrough|nfinitePlane|nfix|nflationAdjust|nformation|nhomogeneousPoissonProcess|nner|nnerPolygon|nnerPolyhedron|npaint|nput|nputField|nputForm|nputNamePacket|nputNotebook|nputPacket|nputStream|nputString|nputStringPacket|nsert|nsertLinebreaks|nset|nsphere|nstall|nstallService|ntegerDigits|ntegerExponent|ntegerLength|ntegerName|ntegerPart|ntegerPartitions|ntegerQ|ntegerReverse|ntegerString|ntegrate|nteractiveTradingChart|nternallyBalancedDecomposition|nterpolatingFunction|nterpolatingPolynomial|nterpolation|nterpretation|nterpretationBox|nterpreter|nterquartileRange|nterrupt|ntersectingQ|ntersection|nterval|ntervalIntersection|ntervalMemberQ|ntervalSlider|ntervalUnion|nverse|nverseBetaRegularized|nverseBilateralLaplaceTransform|nverseBilateralZTransform|nverseCDF|nverseChiSquareDistribution|nverseContinuousWaveletTransform|nverseDistanceTransform|nverseEllipticNomeQ|nverseErf|nverseErfc|nverseFourier|nverseFourierCosTransform|nverseFourierSequenceTransform|nverseFourierSinTransform|nverseFourierTransform|nverseFunction|nverseGammaDistribution|nverseGammaRegularized|nverseGaussianDistribution|nverseGudermannian|nverseHankelTransform|nverseHaversine|nverseJacobiCD|nverseJacobiCN|nverseJacobiCS|nverseJacobiDC|nverseJacobiDN|nverseJacobiDS|nverseJacobiNC|nverseJacobiND|nverseJacobiNS|nverseJacobiSC|nverseJacobiSD|nverseJacobiSN|nverseLaplaceTransform|nverseMellinTransform|nversePermutation|nverseRadon|nverseRadonTransform|nverseSeries|nverseShortTimeFourier|nverseSpectrogram|nverseSurvivalFunction|nverseTransformedRegion|nverseWaveletTransform|nverseWeierstrassP|nverseWishartMatrixDistribution|nverseZTransform|nvisible|rreduciblePolynomialQ|slandData|solatingInterval|somorphicGraphQ|somorphicSubgraphQ|sotopeData|tem|toProcess))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:J(?:accardDissimilarity|acobiAmplitude|acobiCD|acobiCN|acobiCS|acobiDC|acobiDN|acobiDS|acobiEpsilon|acobiNC|acobiND|acobiNS|acobiP|acobiSC|acobiSD|acobiSN|acobiSymbol|acobiZN|acobiZeta|ankoGroupJ1|ankoGroupJ2|ankoGroupJ3|ankoGroupJ4|arqueBeraALMTest|ohnsonDistribution|oin|oinAcross|oinForm|oinedCurve|ordanDecomposition|ordanModelDecomposition|uliaSetBoettcher|uliaSetIterationCount|uliaSetPlot|uliaSetPoints|ulianDate))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:K(?:CoreComponents|Distribution|EdgeConnectedComponents|EdgeConnectedGraphQ|VertexConnectedComponents|VertexConnectedGraphQ|agiChart|aiserBesselWindow|aiserWindow|almanEstimator|almanFilter|arhunenLoeveDecomposition|aryTree|atzCentrality|elvinBei|elvinBer|elvinKei|elvinKer|endallTau|endallTauTest|ernelMixtureDistribution|ernelObject|ernels|ey|eyComplement|eyDrop|eyDropFrom|eyExistsQ|eyFreeQ|eyIntersection|eyMap|eyMemberQ|eySelect|eySort|eySortBy|eyTake|eyUnion|eyValueMap|eyValuePattern|eys|illProcess|irchhoffGraph|irchhoffMatrix|leinInvariantJ|napsackSolve|nightTourGraph|notData|nownUnitQ|ochCurve|olmogorovSmirnovTest|roneckerDelta|roneckerModelDecomposition|roneckerProduct|roneckerSymbol|uiperTest|umaraswamyDistribution|urtosis|uwaharaFilter))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:L(?:ABColor|CHColor|CM|QEstimatorGains|QGRegulator|QOutputRegulatorGains|QRegulatorGains|UDecomposition|UVColor|abel|abeled|aguerreL|akeData|ambdaComponents|ameC|ameCPrime|ameEigenvalueA|ameEigenvalueB|ameS|ameSPrime|aminaData|anczosWindow|andauDistribution|anguageData|anguageIdentify|aplaceDistribution|aplaceTransform|aplacian|aplacianFilter|aplacianGaussianFilter|aplacianPDETerm|ast|atitude|atitudeLongitude|atticeData|atticeReduce|aunchKernels|ayeredGraphPlot|ayeredGraphPlot3D|eafCount|eapVariant|eapYearQ|earnDistribution|earnedDistribution|eastSquares|eastSquaresFilterKernel|eftArrow|eftArrowBar|eftArrowRightArrow|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftRightArrow|eftRightVector|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|egended|egendreP|egendreQ|ength|engthWhile|erchPhi|ess|essEqual|essEqualGreater|essEqualThan|essFullEqual|essGreater|essLess|essSlantEqual|essThan|essTilde|etterCounts|etterNumber|etterQ|evel|eveneTest|eviCivitaTensor|evyDistribution|exicographicOrder|exicographicSort|ibraryDataType|ibraryFunction|ibraryFunctionError|ibraryFunctionInformation|ibraryFunctionLoad|ibraryFunctionUnload|ibraryLoad|ibraryUnload|iftingFilterData|iftingWaveletTransform|ighter|ikelihood|imit|indleyDistribution|ine|ineBreakChart|ineGraph|ineIntegralConvolutionPlot|ineLegend|inearFractionalOptimization|inearFractionalTransform|inearGradientFilling|inearGradientImage|inearModelFit|inearOptimization|inearRecurrence|inearSolve|inearSolveFunction|inearizingTransformationData|inkActivate|inkClose|inkConnect|inkCreate|inkInterrupt|inkLaunch|inkObject|inkPatterns|inkRankCentrality|inkRead|inkReadyQ|inkWrite|inks|iouvilleLambda|ist|istAnimate|istContourPlot|istContourPlot3D|istConvolve|istCorrelate|istCurvePathPlot|istDeconvolve|istDensityPlot|istDensityPlot3D|istFourierSequenceTransform|istInterpolation|istLineIntegralConvolutionPlot|istLinePlot|istLinePlot3D|istLogLinearPlot|istLogLogPlot|istLogPlot|istPicker|istPickerBox|istPlay|istPlot|istPlot3D|istPointPlot3D|istPolarPlot|istQ|istSliceContourPlot3D|istSliceDensityPlot3D|istSliceVectorPlot3D|istStepPlot|istStreamDensityPlot|istStreamPlot|istStreamPlot3D|istSurfacePlot3D|istVectorDensityPlot|istVectorDisplacementPlot|istVectorDisplacementPlot3D|istVectorPlot|istVectorPlot3D|istZTransform|ocalAdaptiveBinarize|ocalCache|ocalClusteringCoefficient|ocalEvaluate|ocalObject|ocalObjects|ocalSubmit|ocalSymbol|ocalTime|ocalTimeZone|ocationEquivalenceTest|ocationTest|ocator|ocatorPane|og|og10|og2|ogBarnesG|ogGamma|ogGammaDistribution|ogIntegral|ogLikelihood|ogLinearPlot|ogLogPlot|ogLogisticDistribution|ogMultinormalDistribution|ogNormalDistribution|ogPlot|ogRankTest|ogSeriesDistribution|ogicalExpand|ogisticDistribution|ogisticSigmoid|ogitModelFit|ongLeftArrow|ongLeftRightArrow|ongRightArrow|ongest|ongestCommonSequence|ongestCommonSequencePositions|ongestCommonSubsequence|ongestCommonSubsequencePositions|ongestOrderedSequence|ongitude|ookup|oopFreeGraphQ|owerCaseQ|owerLeftArrow|owerRightArrow|owerTriangularMatrix|owerTriangularMatrixQ|owerTriangularize|owpassFilter|ucasL|uccioSamiComponents|unarEclipse|yapunovSolve|yonsGroupLy))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:M(?:AProcess|achineNumberQ|agnify|ailReceiverFunction|ajority|akeBoxes|akeExpression|anagedLibraryExpressionID|anagedLibraryExpressionQ|andelbrotSetBoettcher|andelbrotSetDistance|andelbrotSetIterationCount|andelbrotSetMemberQ|andelbrotSetPlot|angoldtLambda|anhattanDistance|anipulate|anipulator|annWhitneyTest|annedSpaceMissionData|antissaExponent|ap|apAll|apApply|apAt|apIndexed|apThread|archenkoPasturDistribution|arcumQ|ardiaCombinedTest|ardiaKurtosisTest|ardiaSkewnessTest|arginalDistribution|arkovProcessProperties|assConcentrationCondition|assFluxValue|assImpermeableBoundaryValue|assOutflowValue|assSymmetryValue|assTransferValue|assTransportPDEComponent|atchQ|atchingDissimilarity|aterialShading|athMLForm|athematicalFunctionData|athieuC|athieuCPrime|athieuCharacteristicA|athieuCharacteristicB|athieuCharacteristicExponent|athieuGroupM11|athieuGroupM12|athieuGroupM22|athieuGroupM23|athieuGroupM24|athieuS|athieuSPrime|atrices|atrixExp|atrixForm|atrixFunction|atrixLog|atrixNormalDistribution|atrixPlot|atrixPower|atrixPropertyDistribution|atrixQ|atrixRank|atrixTDistribution|ax|axDate|axDetect|axFilter|axLimit|axMemoryUsed|axStableDistribution|axValue|aximalBy|aximize|axwellDistribution|cLaughlinGroupMcL|ean|eanClusteringCoefficient|eanDegreeConnectivity|eanDeviation|eanFilter|eanGraphDistance|eanNeighborDegree|eanShift|eanShiftFilter|edian|edianDeviation|edianFilter|edicalTestData|eijerG|eijerGReduce|eixnerDistribution|ellinConvolve|ellinTransform|emberQ|emoryAvailable|emoryConstrained|emoryInUse|engerMesh|enuPacket|enuView|erge|ersennePrimeExponent|ersennePrimeExponentQ|eshCellCount|eshCellIndex|eshCells|eshConnectivityGraph|eshCoordinates|eshPrimitives|eshRegion|eshRegionQ|essage|essageDialog|essageList|essageName|essagePacket|essages|eteorShowerData|exicanHatWavelet|eyerWavelet|in|inDate|inDetect|inFilter|inLimit|inMax|inStableDistribution|inValue|ineralData|inimalBy|inimalPolynomial|inimalStateSpaceModel|inimize|inimumTimeIncrement|inkowskiQuestionMark|inorPlanetData|inors|inus|inusPlus|issing|issingQ|ittagLefflerE|ixedFractionParts|ixedGraphQ|ixedMagnitude|ixedRadix|ixedRadixQuantity|ixedUnit|ixtureDistribution|od|odelPredictiveController|odularInverse|odularLambda|odule|oebiusMu|oment|omentConvert|omentEvaluate|omentGeneratingFunction|omentOfInertia|onitor|onomialList|onsterGroupM|oonPhase|oonPosition|orletWavelet|orphologicalBinarize|orphologicalBranchPoints|orphologicalComponents|orphologicalEulerNumber|orphologicalGraph|orphologicalPerimeter|orphologicalTransform|ortalityData|ost|ountainData|ouseAnnotation|ouseAppearance|ousePosition|ouseover|ovieData|ovingAverage|ovingMap|ovingMedian|oyalDistribution|ulticolumn|ultigraphQ|ultinomial|ultinomialDistribution|ultinormalDistribution|ultiplicativeOrder|ultiplySides|ultivariateHypergeometricDistribution|ultivariatePoissonDistribution|ultivariateTDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:N(?:|ArgMax|ArgMin|Cache|CaputoD|DEigensystem|DEigenvalues|DSolve|DSolveValue|Expectation|FractionalD|Integrate|MaxValue|Maximize|MinValue|Minimize|Probability|Product|Roots|Solve|SolveValues|Sum|akagamiDistribution|ameQ|ames|and|earest|earestFunction|earestMeshCells|earestNeighborGraph|earestTo|ebulaData|eedlemanWunschSimilarity|eeds|egative|egativeBinomialDistribution|egativeDefiniteMatrixQ|egativeMultinomialDistribution|egativeSemidefiniteMatrixQ|egativelyOrientedPoints|eighborhoodData|eighborhoodGraph|est|estGraph|estList|estWhile|estWhileList|estedGreaterGreater|estedLessLess|eumannValue|evilleThetaC|evilleThetaD|evilleThetaN|evilleThetaS|extCell|extDate|extPrime|icholsPlot|ightHemisphere|onCommutativeMultiply|onNegative|onPositive|oncentralBetaDistribution|oncentralChiSquareDistribution|oncentralFRatioDistribution|oncentralStudentTDistribution|ondimensionalizationTransform|oneTrue|onlinearModelFit|onlinearStateSpaceModel|onlocalMeansFilter|or|orlundB|orm|ormal|ormalDistribution|ormalMatrixQ|ormalize|ormalizedSquaredEuclideanDistance|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|otebook|otebookApply|otebookClose|otebookDelete|otebookDirectory|otebookEvaluate|otebookFileName|otebookFind|otebookGet|otebookImport|otebookInformation|otebookLocate|otebookObject|otebookOpen|otebookPrint|otebookPut|otebookRead|otebookSave|otebookSelection|otebookTemplate|otebookWrite|otebooks|othing|uclearExplosionData|uclearReactorData|ullSpace|umberCompose|umberDecompose|umberDigit|umberExpand|umberFieldClassNumber|umberFieldDiscriminant|umberFieldFundamentalUnits|umberFieldIntegralBasis|umberFieldNormRepresentatives|umberFieldRegulator|umberFieldRootsOfUnity|umberFieldSignature|umberForm|umberLinePlot|umberQ|umerator|umeratorDenominator|umericQ|umericalOrder|umericalSort|uttallWindow|yquistPlot))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:O(?:|NanGroupON|bservabilityGramian|bservabilityMatrix|bservableDecomposition|bservableModelQ|ceanData|ctahedron|ddQ|ff|ffset|n|nce|pacity|penAppend|penRead|penWrite|pener|penerView|pening|perate|ptimumFlowData|ptionValue|ptional|ptionalElement|ptions|ptionsPattern|r|rder|rderDistribution|rderedQ|rdering|rderingBy|rderlessPatternSequence|rnsteinUhlenbeckProcess|rthogonalMatrixQ|rthogonalize|uter|uterPolygon|uterPolyhedron|utputControllabilityMatrix|utputControllableModelQ|utputForm|utputNamePacket|utputResponse|utputStream|verBar|verDot|verHat|verTilde|verVector|verflow|verlay|verscript|verscriptBox|wenT|wnValues))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:P(?:DF|ERTDistribution|IDTune|acletDataRebuild|acletDirectoryLoad|acletDirectoryUnload|acletDisable|acletEnable|acletFind|acletFindRemote|acletInstall|acletInstallSubmit|acletNewerQ|acletObject|acletSiteObject|acletSiteRegister|acletSiteUnregister|acletSiteUpdate|acletSites|acletUninstall|adLeft|adRight|addedForm|adeApproximant|ageRankCentrality|airedBarChart|airedHistogram|airedSmoothHistogram|airedTTest|airedZTest|aletteNotebook|alindromeQ|ane|aneSelector|anel|arabolicCylinderD|arallelArray|arallelAxisPlot|arallelCombine|arallelDo|arallelEvaluate|arallelKernels|arallelMap|arallelNeeds|arallelProduct|arallelSubmit|arallelSum|arallelTable|arallelTry|arallelepiped|arallelize|arallelogram|arameterMixtureDistribution|arametricConvexOptimization|arametricFunction|arametricNDSolve|arametricNDSolveValue|arametricPlot|arametricPlot3D|arametricRegion|arentBox|arentCell|arentDirectory|arentNotebook|aretoDistribution|aretoPickandsDistribution|arkData|art|artOfSpeech|artialCorrelationFunction|articleAcceleratorData|articleData|artition|artitionsP|artitionsQ|arzenWindow|ascalDistribution|aste|asteButton|athGraph|athGraphQ|attern|atternSequence|atternTest|aulWavelet|auliMatrix|ause|eakDetect|eanoCurve|earsonChiSquareTest|earsonCorrelationTest|earsonDistribution|ercentForm|erfectNumber|erfectNumberQ|erimeter|eriodicBoundaryCondition|eriodogram|eriodogramArray|ermanent|ermissionsGroup|ermissionsGroupMemberQ|ermissionsGroups|ermissionsKey|ermissionsKeys|ermutationCycles|ermutationCyclesQ|ermutationGroup|ermutationLength|ermutationList|ermutationListQ|ermutationMatrix|ermutationMax|ermutationMin|ermutationOrder|ermutationPower|ermutationProduct|ermutationReplace|ermutationSupport|ermutations|ermute|eronaMalikFilter|ersonData|etersenGraph|haseMargins|hongShading|hysicalSystemData|ick|ieChart|ieChart3D|iecewise|iecewiseExpand|illaiTrace|illaiTraceTest|ingTime|ixelValue|ixelValuePositions|laced|laceholder|lanarAngle|lanarFaceList|lanarGraph|lanarGraphQ|lanckRadiationLaw|laneCurveData|lanetData|lanetaryMoonData|lantData|lay|lot|lot3D|luralize|lus|lusMinus|ochhammer|oint|ointFigureChart|ointLegend|ointLight|ointSize|oissonConsulDistribution|oissonDistribution|oissonPDEComponent|oissonProcess|oissonWindow|olarPlot|olyGamma|olyLog|olyaAeppliDistribution|olygon|olygonAngle|olygonCoordinates|olygonDecomposition|olygonalNumber|olyhedron|olyhedronAngle|olyhedronCoordinates|olyhedronData|olyhedronDecomposition|olyhedronGenus|olynomialExpressionQ|olynomialExtendedGCD|olynomialGCD|olynomialLCM|olynomialMod|olynomialQ|olynomialQuotient|olynomialQuotientRemainder|olynomialReduce|olynomialRemainder|olynomialSumOfSquaresList|opupMenu|opupView|opupWindow|osition|ositionIndex|ositionLargest|ositionSmallest|ositive|ositiveDefiniteMatrixQ|ositiveSemidefiniteMatrixQ|ositivelyOrientedPoints|ossibleZeroQ|ostfix|ower|owerDistribution|owerExpand|owerMod|owerModList|owerRange|owerSpectralDensity|owerSymmetricPolynomial|owersRepresentations|reDecrement|reIncrement|recedenceForm|recedes|recedesEqual|recedesSlantEqual|recedesTilde|recision|redict|redictorFunction|redictorMeasurements|redictorMeasurementsObject|reemptProtect|refix|repend|rependTo|reviousCell|reviousDate|riceGraphDistribution|rime|rimeNu|rimeOmega|rimePi|rimePowerQ|rimeQ|rimeZetaP|rimitivePolynomialQ|rimitiveRoot|rimitiveRootList|rincipalComponents|rintTemporary|rintableASCIIQ|rintout3D|rism|rivateKey|robability|robabilityDistribution|robabilityPlot|robabilityScalePlot|robitModelFit|rocessConnection|rocessInformation|rocessObject|rocessParameterAssumptions|rocessParameterQ|rocessStatus|rocesses|roduct|roductDistribution|roductLog|rogressIndicator|rojection|roportion|roportional|rotect|roteinData|runing|seudoInverse|sychrometricPropertyData|ublicKey|ulsarData|ut|utAppend|yramid))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:Q(?:Binomial|Factorial|Gamma|HypergeometricPFQ|Pochhammer|PolyGamma|RDecomposition|nDispersion|uadraticIrrationalQ|uadraticOptimization|uantile|uantilePlot|uantity|uantityArray|uantityDistribution|uantityForm|uantityMagnitude|uantityQ|uantityUnit|uantityVariable|uantityVariableCanonicalUnit|uantityVariableDimensions|uantityVariableIdentifier|uantityVariablePhysicalQuantity|uartileDeviation|uartileSkewness|uartiles|uery|ueueProperties|ueueingNetworkProcess|ueueingProcess|uiet|uietEcho|uotient|uotientRemainder))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:R(?:GBColor|Solve|SolveValue|adialAxisPlot|adialGradientFilling|adialGradientImage|adialityCentrality|adicalBox|adioButton|adioButtonBar|adon|adonTransform|amanujanTau|amanujanTauL|amanujanTauTheta|amanujanTauZ|amp|andomChoice|andomColor|andomComplex|andomDate|andomEntity|andomFunction|andomGeneratorState|andomGeoPosition|andomGraph|andomImage|andomInteger|andomPermutation|andomPoint|andomPolygon|andomPolyhedron|andomPrime|andomReal|andomSample|andomTime|andomVariate|andomWalkProcess|andomWord|ange|angeFilter|ankedMax|ankedMin|arerProbability|aster|aster3D|asterize|ational|ationalExpressionQ|ationalize|atios|awBoxes|awData|ayleighDistribution|e|eIm|eImPlot|eactionPDETerm|ead|eadByteArray|eadLine|eadList|eadString|ealAbs|ealDigits|ealExponent|ealSign|eap|econstructionMesh|ectangle|ectangleChart|ectangleChart3D|ectangularRepeatingElement|ecurrenceFilter|ecurrenceTable|educe|efine|eflectionMatrix|eflectionTransform|efresh|egion|egionBinarize|egionBoundary|egionBounds|egionCentroid|egionCongruent|egionConvert|egionDifference|egionDilation|egionDimension|egionDisjoint|egionDistance|egionDistanceFunction|egionEmbeddingDimension|egionEqual|egionErosion|egionFit|egionImage|egionIntersection|egionMeasure|egionMember|egionMemberFunction|egionMoment|egionNearest|egionNearestFunction|egionPlot|egionPlot3D|egionProduct|egionQ|egionResize|egionSimilar|egionSymmetricDifference|egionUnion|egionWithin|egularExpression|egularPolygon|egularlySampledQ|elationGraph|eleaseHold|eliabilityDistribution|eliefImage|eliefPlot|emove|emoveAlphaChannel|emoveBackground|emoveDiacritics|emoveInputStreamMethod|emoveOutputStreamMethod|emoveUsers|enameDirectory|enameFile|enewalProcess|enkoChart|epairMesh|epeated|epeatedNull|epeatedTiming|epeatingElement|eplace|eplaceAll|eplaceAt|eplaceImageValue|eplaceList|eplacePart|eplacePixelValue|eplaceRepeated|esamplingAlgorithmData|escale|escalingTransform|esetDirectory|esidue|esidueSum|esolve|esourceData|esourceObject|esourceSearch|esponseForm|est|estricted|esultant|eturn|eturnExpressionPacket|eturnPacket|eturnTextPacket|everse|everseBiorthogonalSplineWavelet|everseElement|everseEquilibrium|everseGraph|everseSort|everseSortBy|everseUpEquilibrium|evolutionPlot3D|iccatiSolve|iceDistribution|idgeFilter|iemannR|iemannSiegelTheta|iemannSiegelZ|iemannXi|iffle|ightArrow|ightArrowBar|ightArrowLeftArrow|ightComposition|ightCosetRepresentative|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|iskAchievementImportance|iskReductionImportance|obustConvexOptimization|ogersTanimotoDissimilarity|ollPitchYawAngles|ollPitchYawMatrix|omanNumeral|oot|ootApproximant|ootIntervals|ootLocusPlot|ootMeanSquare|ootOfUnityQ|ootReduce|ootSum|oots|otate|otateLeft|otateRight|otationMatrix|otationTransform|ound|ow|owBox|owReduce|udinShapiro|udvalisGroupRu|ule|uleDelayed|ulePlot|un|unProcess|unThrough|ussellRaoDissimilarity))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:S(?:ARIMAProcess|ARMAProcess|ASTriangle|SSTriangle|ameAs|ameQ|ampledSoundFunction|ampledSoundList|atelliteData|atisfiabilityCount|atisfiabilityInstances|atisfiableQ|ave|avitzkyGolayMatrix|awtoothWave|cale|caled|calingMatrix|calingTransform|can|cheduledTask|churDecomposition|cientificForm|corerGi|corerGiPrime|corerHi|corerHiPrime|ec|ech|echDistribution|econdOrderConeOptimization|ectorChart|ectorChart3D|eedRandom|elect|electComponents|electFirst|electedCells|electedNotebook|electionCreateCell|electionEvaluate|electionEvaluateCreateCell|electionMove|emanticImport|emanticImportString|emanticInterpretation|emialgebraicComponentInstances|emidefiniteOptimization|endMail|endMessage|equence|equenceAlignment|equenceCases|equenceCount|equenceFold|equenceFoldList|equencePosition|equenceReplace|equenceSplit|eries|eriesCoefficient|eriesData|erviceConnect|erviceDisconnect|erviceExecute|erviceObject|essionSubmit|essionTime|et|etAccuracy|etAlphaChannel|etAttributes|etCloudDirectory|etCookies|etDelayed|etDirectory|etEnvironment|etFileDate|etOptions|etPermissions|etPrecision|etSelectedNotebook|etSharedFunction|etSharedVariable|etStreamPosition|etSystemOptions|etUsers|etter|etterBar|etting|hallow|hannonWavelet|hapiroWilkTest|hare|harpen|hearingMatrix|hearingTransform|hellRegion|henCastanMatrix|hiftRegisterSequence|hiftedGompertzDistribution|hort|hortDownArrow|hortLeftArrow|hortRightArrow|hortTimeFourier|hortTimeFourierData|hortUpArrow|hortest|hortestPathFunction|how|iderealTime|iegelTheta|iegelTukeyTest|ierpinskiCurve|ierpinskiMesh|ign|ignTest|ignature|ignedRankTest|ignedRegionDistance|impleGraph|impleGraphQ|implePolygonQ|implePolyhedronQ|implex|implify|in|inIntegral|inc|inghMaddalaDistribution|ingularValueDecomposition|ingularValueList|ingularValuePlot|inh|inhIntegral|ixJSymbol|keleton|keletonTransform|kellamDistribution|kewNormalDistribution|kewness|kip|liceContourPlot3D|liceDensityPlot3D|liceDistribution|liceVectorPlot3D|lideView|lider|lider2D|liderBox|lot|lotSequence|mallCircle|mithDecomposition|mithDelayCompensator|mithWatermanSimilarity|moothDensityHistogram|moothHistogram|moothHistogram3D|moothKernelDistribution|nDispersion|ocketConnect|ocketListen|ocketListener|ocketObject|ocketOpen|ocketReadMessage|ocketReadyQ|ocketWaitAll|ocketWaitNext|ockets|okalSneathDissimilarity|olarEclipse|olarSystemFeatureData|olarTime|olidAngle|olidData|olidRegionQ|olve|olveAlways|olveValues|ort|ortBy|ound|oundNote|ourcePDETerm|ow|paceCurveData|pacer|pan|parseArray|parseArrayQ|patialGraphDistribution|patialMedian|peak|pearmanRankTest|pearmanRho|peciesData|pectralLineData|pectrogram|pectrogramArray|pecularity|peechSynthesize|pellingCorrectionList|phere|pherePoints|phericalBesselJ|phericalBesselY|phericalHankelH1|phericalHankelH2|phericalHarmonicY|phericalPlot3D|phericalShell|pheroidalEigenvalue|pheroidalJoiningFactor|pheroidalPS|pheroidalPSPrime|pheroidalQS|pheroidalQSPrime|pheroidalRadialFactor|pheroidalS1|pheroidalS1Prime|pheroidalS2|pheroidalS2Prime|plicedDistribution|plit|plitBy|pokenString|potLight|qrt|qrtBox|quare|quareFreeQ|quareIntersection|quareMatrixQ|quareRepeatingElement|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|quareWave|quaredEuclideanDistance|quaresR|tableDistribution|tack|tackBegin|tackComplete|tackInhibit|tackedDateListPlot|tackedListPlot|tadiumShape|tandardAtmosphereData|tandardDeviation|tandardDeviationFilter|tandardForm|tandardOceanData|tandardize|tandbyDistribution|tar|tarClusterData|tarData|tarGraph|tartProcess|tateFeedbackGains|tateOutputEstimator|tateResponse|tateSpaceModel|tateSpaceTransform|tateTransformationLinearize|tationaryDistribution|tationaryWaveletPacketTransform|tationaryWaveletTransform|tatusArea|tatusCentrality|tieltjesGamma|tippleShading|tirlingS1|tirlingS2|toppingPowerData|tratonovichProcess|treamDensityPlot|treamPlot|treamPlot3D|treamPosition|treams|tringCases|tringContainsQ|tringCount|tringDelete|tringDrop|tringEndsQ|tringExpression|tringExtract|tringForm|tringFormat|tringFormatQ|tringFreeQ|tringInsert|tringJoin|tringLength|tringMatchQ|tringPadLeft|tringPadRight|tringPart|tringPartition|tringPosition|tringQ|tringRepeat|tringReplace|tringReplaceList|tringReplacePart|tringReverse|tringRiffle|tringRotateLeft|tringRotateRight|tringSkeleton|tringSplit|tringStartsQ|tringTake|tringTakeDrop|tringTemplate|tringToByteArray|tringToStream|tringTrim|tripBoxes|tructuralImportance|truveH|truveL|tudentTDistribution|tyle|tyleBox|tyleData|ubMinus|ubPlus|ubStar|ubValues|ubdivide|ubfactorial|ubgraph|ubresultantPolynomialRemainders|ubresultantPolynomials|ubresultants|ubscript|ubscriptBox|ubsequences|ubset|ubsetEqual|ubsetMap|ubsetQ|ubsets|ubstitutionSystem|ubsuperscript|ubsuperscriptBox|ubtract|ubtractFrom|ubtractSides|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uccess|uchThat|um|umConvergence|unPosition|unrise|unset|uperDagger|uperMinus|uperPlus|uperStar|upernovaData|uperscript|uperscriptBox|uperset|upersetEqual|urd|urfaceArea|urfaceData|urvivalDistribution|urvivalFunction|urvivalModel|urvivalModelFit|uzukiDistribution|uzukiGroupSuz|watchLegend|witch|ymbol|ymbolName|ymletWavelet|ymmetric|ymmetricGroup|ymmetricKey|ymmetricMatrixQ|ymmetricPolynomial|ymmetricReduction|ymmetrize|ymmetrizedArray|ymmetrizedArrayRules|ymmetrizedDependentComponents|ymmetrizedIndependentComponents|ymmetrizedReplacePart|ynonyms|yntaxInformation|yntaxLength|yntaxPacket|yntaxQ|ystemDialogInput|ystemInformation|ystemOpen|ystemOptions|ystemProcessData|ystemProcesses|ystemsConnectionsModel|ystemsModelControllerData|ystemsModelDelay|ystemsModelDelayApproximate|ystemsModelDelete|ystemsModelDimensions|ystemsModelExtract|ystemsModelFeedbackConnect|ystemsModelLinearity|ystemsModelMerge|ystemsModelOrder|ystemsModelParallelConnect|ystemsModelSeriesConnect|ystemsModelStateFeedbackConnect|ystemsModelVectorRelativeOrders))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:T(?:Test|abView|able|ableForm|agBox|agSet|agSetDelayed|agUnset|ake|akeDrop|akeLargest|akeLargestBy|akeList|akeSmallest|akeSmallestBy|akeWhile|ally|an|anh|askAbort|askExecute|askObject|askRemove|askResume|askSuspend|askWait|asks|autologyQ|eXForm|elegraphProcess|emplateApply|emplateBox|emplateExpression|emplateIf|emplateObject|emplateSequence|emplateSlot|emplateWith|emporalData|ensorContract|ensorDimensions|ensorExpand|ensorProduct|ensorRank|ensorReduce|ensorSymmetry|ensorTranspose|ensorWedge|erminatedEvaluation|estReport|estReportObject|estResultObject|etrahedron|ext|extCell|extData|extGrid|extPacket|extRecognize|extSentences|extString|extTranslation|extWords|exture|herefore|hermodynamicData|hermometerGauge|hickness|hinning|hompsonGroupTh|hread|hreeJSymbol|hreshold|hrough|hrow|hueMorse|humbnail|ideData|ilde|ildeEqual|ildeFullEqual|ildeTilde|imeConstrained|imeObject|imeObjectQ|imeRemaining|imeSeries|imeSeriesAggregate|imeSeriesForecast|imeSeriesInsert|imeSeriesInvertibility|imeSeriesMap|imeSeriesMapThread|imeSeriesModel|imeSeriesModelFit|imeSeriesResample|imeSeriesRescale|imeSeriesShift|imeSeriesThread|imeSeriesWindow|imeSystemConvert|imeUsed|imeValue|imeZoneConvert|imeZoneOffset|imelinePlot|imes|imesBy|iming|itsGroupT|oBoxes|oCharacterCode|oContinuousTimeModel|oDiscreteTimeModel|oEntity|oExpression|oInvertibleTimeSeries|oLowerCase|oNumberField|oPolarCoordinates|oRadicals|oRules|oSphericalCoordinates|oString|oUpperCase|oeplitzMatrix|ogether|oggler|ogglerBar|ooltip|oonShading|opHatTransform|opologicalSort|orus|orusGraph|otal|otalVariationFilter|ouchPosition|r|race|raceDialog|racePrint|raceScan|racyWidomDistribution|radingChart|raditionalForm|ransferFunctionCancel|ransferFunctionExpand|ransferFunctionFactor|ransferFunctionModel|ransferFunctionPoles|ransferFunctionTransform|ransferFunctionZeros|ransformationFunction|ransformationMatrix|ransformedDistribution|ransformedField|ransformedProcess|ransformedRegion|ransitiveClosureGraph|ransitiveReductionGraph|ranslate|ranslationTransform|ransliterate|ranspose|ravelDirections|ravelDirectionsData|ravelDistance|ravelDistanceList|ravelTime|reeForm|reeGraph|reeGraphQ|reePlot|riangle|riangleWave|riangularDistribution|riangulateMesh|rigExpand|rigFactor|rigFactorList|rigReduce|rigToExp|rigger|rimmedMean|rimmedVariance|ropicalStormData|rueQ|runcatedDistribution|runcatedPolyhedron|sallisQExponentialDistribution|sallisQGaussianDistribution|ube|ukeyLambdaDistribution|ukeyWindow|unnelData|uples|uranGraph|uringMachine|uttePolynomial|woWayRule|ypeHint))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:U(?:RL|RLBuild|RLDecode|RLDispatcher|RLDownload|RLEncode|RLExecute|RLExpand|RLParse|RLQueryDecode|RLQueryEncode|RLRead|RLResponseTime|RLShorten|RLSubmit|nateQ|ncompress|nderBar|nderflow|nderoverscript|nderoverscriptBox|nderscript|nderscriptBox|nderseaFeatureData|ndirectedEdge|ndirectedGraph|ndirectedGraphQ|nequal|nequalTo|nevaluated|niformDistribution|niformGraphDistribution|niformPolyhedron|niformSumDistribution|ninstall|nion|nionPlus|nique|nitBox|nitConvert|nitDimensions|nitRootTest|nitSimplify|nitStep|nitTriangle|nitVector|nitaryMatrixQ|nitize|niverseModelData|niversityData|nixTime|nprotect|nsameQ|nset|nsetShared|ntil|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pSet|pSetDelayed|pTee|pTeeArrow|pTo|pValues|pdate|pperCaseQ|pperLeftArrow|pperRightArrow|pperTriangularMatrix|pperTriangularMatrixQ|pperTriangularize|psample|singFrontEnd))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:V(?:alueQ|alues|ariables|ariance|arianceEquivalenceTest|arianceGammaDistribution|arianceTest|ectorAngle|ectorDensityPlot|ectorDisplacementPlot|ectorDisplacementPlot3D|ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ectorPlot|ectorPlot3D|ectorQ|ectors|ee|erbatim|erificationTest|ertexAdd|ertexChromaticNumber|ertexComponent|ertexConnectivity|ertexContract|ertexCorrelationSimilarity|ertexCosineSimilarity|ertexCount|ertexCoverQ|ertexDegree|ertexDelete|ertexDiceSimilarity|ertexEccentricity|ertexInComponent|ertexInComponentGraph|ertexInDegree|ertexIndex|ertexJaccardSimilarity|ertexList|ertexOutComponent|ertexOutComponentGraph|ertexOutDegree|ertexQ|ertexReplace|ertexTransitiveGraphQ|ertexWeightedGraphQ|erticalBar|erticalGauge|erticalSeparator|erticalSlider|erticalTilde|oiceStyleData|oigtDistribution|olcanoData|olume|onMisesDistribution|oronoiMesh))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:W(?:aitAll|aitNext|akebyDistribution|alleniusHypergeometricDistribution|aringYuleDistribution|arpingCorrespondence|arpingDistance|atershedComponents|atsonUSquareTest|attsStrogatzGraphDistribution|avePDEComponent|aveletBestBasis|aveletFilterCoefficients|aveletImagePlot|aveletListPlot|aveletMapIndexed|aveletMatrixPlot|aveletPhi|aveletPsi|aveletScalogram|aveletThreshold|eakStationarity|eaklyConnectedComponents|eaklyConnectedGraphComponents|eaklyConnectedGraphQ|eatherData|eatherForecastData|eberE|edge|eibullDistribution|eierstrassE1|eierstrassE2|eierstrassE3|eierstrassEta1|eierstrassEta2|eierstrassEta3|eierstrassHalfPeriodW1|eierstrassHalfPeriodW2|eierstrassHalfPeriodW3|eierstrassHalfPeriods|eierstrassInvariantG2|eierstrassInvariantG3|eierstrassInvariants|eierstrassP|eierstrassPPrime|eierstrassSigma|eierstrassZeta|eightedAdjacencyGraph|eightedAdjacencyMatrix|eightedData|eightedGraphQ|elchWindow|heelGraph|henEvent|hich|hile|hiteNoiseProcess|hittakerM|hittakerW|ienerFilter|ienerProcess|ignerD|ignerSemicircleDistribution|ikipediaData|ilksW|ilksWTest|indDirectionData|indSpeedData|indVectorData|indingCount|indingPolygon|insorizedMean|insorizedVariance|ishartMatrixDistribution|ith|olframAlpha|olframLanguageData|ordCloud|ordCount|ordCounts|ordData|ordDefinition|ordFrequency|ordFrequencyData|ordList|ordStem|ordTranslation|rite|riteLine|riteString|ronskian))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:X(?:MLElement|MLObject|MLTemplate|YZColor|nor|or))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:Y(?:uleDissimilarity))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:Z(?:IPCodeData|Test|Transform|ernikeR|eroSymmetric|eta|etaZero|ipfDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"System`(?:A(?:cceptanceThreshold|ccuracyGoal|ctiveStyle|ddOnHelpPath|djustmentBoxOptions|lignment|lignmentPoint|llowGroupClose|llowInlineCells|llowLooseGrammar|llowReverseGroupClose|llowScriptLevelChange|llowVersionUpdate|llowedCloudExtraParameters|llowedCloudParameterExtensions|llowedDimensions|llowedFrequencyRange|llowedHeads|lternativeHypothesis|ltitudeMethod|mbiguityFunction|natomySkinStyle|nchoredSearch|nimationDirection|nimationRate|nimationRepetitions|nimationRunTime|nimationRunning|nimationTimeIndex|nnotationRules|ntialiasing|ppearance|ppearanceElements|ppearanceRules|spectRatio|ssociationFormat|ssumptions|synchronous|ttachedCell|udioChannelAssignment|udioEncoding|udioInputDevice|udioLabel|udioOutputDevice|uthentication|utoAction|utoCopy|utoDelete|utoGeneratedPackage|utoIndent|utoItalicWords|utoMultiplicationSymbol|utoOpenNotebooks|utoOpenPalettes|utoOperatorRenderings|utoRemove|utoScroll|utoSpacing|utoloadPath|utorunSequencing|xes|xesEdge|xesLabel|xesOrigin|xesStyle))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:B(?:ackground|arOrigin|arSpacing|aseStyle|aselinePosition|inaryFormat|ookmarks|ooleanStrings|oundaryStyle|oxBaselineShift|oxFormFormatTypes|oxFrame|oxMargins|oxRatios|oxStyle|oxed|ubbleScale|ubbleSizes|uttonBoxOptions|uttonData|uttonFunction|uttonMinHeight|uttonSource|yteOrdering))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:C(?:alendarType|alloutMarker|alloutStyle|aptureRunning|aseOrdering|elestialSystem|ellAutoOverwrite|ellBaseline|ellBracketOptions|ellChangeTimes|ellContext|ellDingbat|ellDingbatMargin|ellDynamicExpression|ellEditDuplicate|ellEpilog|ellEvaluationDuplicate|ellEvaluationFunction|ellEventActions|ellFrame|ellFrameColor|ellFrameLabelMargins|ellFrameLabels|ellFrameMargins|ellGrouping|ellGroupingRules|ellHorizontalScrolling|ellID|ellLabel|ellLabelAutoDelete|ellLabelMargins|ellLabelPositioning|ellLabelStyle|ellLabelTemplate|ellMargins|ellOpen|ellProlog|ellSize|ellTags|haracterEncoding|haracterEncodingsPath|hartBaseStyle|hartElementFunction|hartElements|hartLabels|hartLayout|hartLegends|hartStyle|lassPriors|lickToCopyEnabled|lipPlanes|lipPlanesStyle|lipRange|lippingStyle|losingAutoSave|loudBase|loudObjectNameFormat|loudObjectURLType|lusterDissimilarityFunction|odeAssistOptions|olorCoverage|olorFunction|olorFunctionBinning|olorFunctionScaling|olorRules|olorSelectorSettings|olorSpace|olumnAlignments|olumnLines|olumnSpacings|olumnWidths|olumnsEqual|ombinerFunction|ommonDefaultFormatTypes|ommunityBoundaryStyle|ommunityLabels|ommunityRegionStyle|ompilationOptions|ompilationTarget|ompiled|omplexityFunction|ompressionLevel|onfidenceLevel|onfidenceRange|onfidenceTransform|onfigurationPath|onstants|ontentPadding|ontentSelectable|ontentSize|ontinuousAction|ontourLabels|ontourShading|ontourStyle|ontours|ontrolPlacement|ontrolType|ontrollerLinking|ontrollerMethod|ontrollerPath|ontrolsRendering|onversionRules|ookieFunction|oordinatesToolOptions|opyFunction|opyable|ornerNeighbors|ounterAssignments|ounterFunction|ounterIncrements|ounterStyleMenuListing|ovarianceEstimatorFunction|reateCellID|reateIntermediateDirectories|riterionFunction|ubics|urveClosed))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:D(?:ataRange|ataReversed|atasetTheme|ateFormat|ateFunction|ateGranularity|ateReduction|ateTicksFormat|ayCountConvention|efaultDuplicateCellStyle|efaultDuration|efaultElement|efaultFontProperties|efaultFormatType|efaultInlineFormatType|efaultNaturalLanguage|efaultNewCellStyle|efaultNewInlineCellStyle|efaultNotebook|efaultOptions|efaultPrintPrecision|efaultStyleDefinitions|einitialization|eletable|eleteContents|eletionWarning|elimiterAutoMatching|elimiterFlashTime|elimiterMatching|elimiters|eliveryFunction|ependentVariables|eployed|escriptorStateSpace|iacriticalPositioning|ialogProlog|ialogSymbols|igitBlock|irectedEdges|irection|iscreteVariables|ispersionEstimatorFunction|isplayAllSteps|isplayFunction|istanceFunction|istributedContexts|ithering|ividers|ockedCell|ockedCells|ynamicEvaluationTimeout|ynamicModuleValues|ynamicUpdating))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:E(?:clipseType|dgeCapacity|dgeCost|dgeLabelStyle|dgeLabels|dgeShapeFunction|dgeStyle|dgeValueRange|dgeValueSizes|dgeWeight|ditCellTagsSettings|ditable|lidedForms|nabled|pilog|pilogFunction|scapeRadius|valuatable|valuationCompletionAction|valuationElements|valuationMonitor|valuator|valuatorNames|ventLabels|xcludePods|xcludedContexts|xcludedForms|xcludedLines|xcludedPhysicalQuantities|xclusions|xclusionsStyle|xponentFunction|xponentPosition|xponentStep|xponentialFamily|xportAutoReplacements|xpressionUUID|xtension|xtentElementFunction|xtentMarkers|xtentSize|xternalDataCharacterEncoding|xternalOptions|xternalTypeSignature))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:F(?:aceGrids|aceGridsStyle|ailureAction|eatureNames|eatureTypes|eedbackSector|eedbackSectorStyle|eedbackType|ieldCompletionFunction|ieldHint|ieldHintStyle|ieldMasked|ieldSize|ileNameDialogSettings|ileNameForms|illing|illingStyle|indSettings|itRegularization|ollowRedirects|ontColor|ontFamily|ontSize|ontSlant|ontSubstitutions|ontTracking|ontVariations|ontWeight|orceVersionInstall|ormBoxOptions|ormLayoutFunction|ormProtectionMethod|ormatType|ormatTypeAutoConvert|ourierParameters|ractionBoxOptions|ractionLine|rame|rameBoxOptions|rameLabel|rameMargins|rameRate|rameStyle|rameTicks|rameTicksStyle|rontEndEventActions|unctionSpace))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:G(?:apPenalty|augeFaceElementFunction|augeFaceStyle|augeFrameElementFunction|augeFrameSize|augeFrameStyle|augeLabels|augeMarkers|augeStyle|aussianIntegers|enerateConditions|eneratedCell|eneratedDocumentBinding|eneratedParameters|eneratedQuantityMagnitudes|eneratorDescription|eneratorHistoryLength|eneratorOutputType|eoArraySize|eoBackground|eoCenter|eoGridLines|eoGridLinesStyle|eoGridRange|eoGridRangePadding|eoLabels|eoLocation|eoModel|eoProjection|eoRange|eoRangePadding|eoResolution|eoScaleBar|eoServer|eoStylingImageFunction|eoZoomLevel|radient|raphHighlight|raphHighlightStyle|raphLayerStyle|raphLayers|raphLayout|ridCreationSettings|ridDefaultElement|ridFrame|ridFrameMargins|ridLines|ridLinesStyle|roupActionBase|roupPageBreakWithin))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:H(?:eaderAlignment|eaderBackground|eaderDisplayFunction|eaderLines|eaderSize|eaderStyle|eads|elpBrowserSettings|iddenItems|olidayCalendar|yperlinkAction|yphenation))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:I(?:conRules|gnoreCase|gnoreDiacritics|gnorePunctuation|mageCaptureFunction|mageFormattingWidth|mageLabels|mageLegends|mageMargins|magePadding|magePreviewFunction|mageRegion|mageResolution|mageSize|mageSizeAction|mageSizeMultipliers|magingDevice|mportAutoReplacements|mportOptions|ncludeConstantBasis|ncludeDefinitions|ncludeDirectories|ncludeFileExtension|ncludeGeneratorTasks|ncludeInflections|ncludeMetaInformation|ncludePods|ncludeQuantities|ncludeSingularSolutions|ncludeWindowTimes|ncludedContexts|ndeterminateThreshold|nflationMethod|nheritScope|nitialSeeding|nitialization|nitializationCell|nitializationCellEvaluation|nitializationCellWarning|nputAliases|nputAssumptions|nputAutoReplacements|nsertResults|nsertionFunction|nteractive|nterleaving|nterpolationOrder|nterpolationPoints|nterpretationBoxOptions|nterpretationFunction|ntervalMarkers|ntervalMarkersStyle|nverseFunctions|temAspectRatio|temDisplayFunction|temSize|temStyle))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:J(?:oined))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:K(?:eepExistingVersion|eyCollisionFunction|eypointStrength))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:L(?:abelStyle|abelVisibility|abelingFunction|abelingSize|anguage|anguageCategory|ayerSizeFunction|eaderSize|earningRate|egendAppearance|egendFunction|egendLabel|egendLayout|egendMargins|egendMarkerSize|egendMarkers|ighting|ightingAngle|imitsPositioning|imitsPositioningTokens|ineBreakWithin|ineIndent|ineIndentMaxFraction|ineIntegralConvolutionScale|ineSpacing|inearOffsetFunction|inebreakAdjustments|inkFunction|inkProtocol|istFormat|istPickerBoxOptions|ocalizeVariables|ocatorAutoCreate|ocatorRegion|ooping))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:M(?:agnification|ailAddressValidation|ailResponseFunction|ailSettings|asking|atchLocalNames|axCellMeasure|axColorDistance|axDuration|axExtraBandwidths|axExtraConditions|axFeatureDisplacement|axFeatures|axItems|axIterations|axMixtureKernels|axOverlapFraction|axPlotPoints|axRecursion|axStepFraction|axStepSize|axSteps|emoryConstraint|enuCommandKey|enuSortingValue|enuStyle|esh|eshCellHighlight|eshCellLabel|eshCellMarker|eshCellShapeFunction|eshCellStyle|eshFunctions|eshQualityGoal|eshRefinementFunction|eshShading|eshStyle|etaInformation|ethod|inColorDistance|inIntervalSize|inPointSeparation|issingBehavior|issingDataMethod|issingDataRules|issingString|issingStyle|odal|odulus|ultiaxisArrangement|ultiedgeStyle|ultilaunchWarning|ultilineFunction|ultiselection))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:N(?:icholsGridLines|ominalVariables|onConstants|ormFunction|ormalized|ormalsFunction|otebookAutoSave|otebookBrowseDirectory|otebookConvertSettings|otebookDynamicExpression|otebookEventActions|otebookPath|otebooksMenu|otificationFunction|ullRecords|ullWords|umberFormat|umberMarks|umberMultiplier|umberPadding|umberPoint|umberSeparator|umberSigns|yquistGridLines))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:O(?:pacityFunction|pacityFunctionScaling|peratingSystem|ptionInspectorSettings|utputAutoOverwrite|utputSizeLimit|verlaps|verscriptBoxOptions|verwriteTarget))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:P(?:IDDerivativeFilter|IDFeedforward|acletSite|adding|addingSize|ageBreakAbove|ageBreakBelow|ageBreakWithin|ageFooterLines|ageFooters|ageHeaderLines|ageHeaders|ageTheme|ageWidth|alettePath|aneled|aragraphIndent|aragraphSpacing|arallelization|arameterEstimator|artBehavior|artitionGranularity|assEventsDown|assEventsUp|asteBoxFormInlineCells|ath|erformanceGoal|ermissions|haseRange|laceholderReplace|layRange|lotLabel|lotLabels|lotLayout|lotLegends|lotMarkers|lotPoints|lotRange|lotRangeClipping|lotRangePadding|lotRegion|lotStyle|lotTheme|odStates|odWidth|olarAxes|olarAxesOrigin|olarGridLines|olarTicks|oleZeroMarkers|recisionGoal|referencesPath|reprocessingRules|reserveColor|reserveImageOptions|rincipalValue|rintAction|rintPrecision|rintingCopies|rintingOptions|rintingPageRange|rintingStartingPageNumber|rintingStyleEnvironment|rintout3DPreviewer|rivateCellOptions|rivateEvaluationOptions|rivateFontOptions|rivateNotebookOptions|rivatePaths|rocessDirectory|rocessEnvironment|rocessEstimator|rogressReporting|rolog|ropagateAborts))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:Q(?:uartics))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:R(?:adicalBoxOptions|andomSeeding|asterSize|eImLabels|eImStyle|ealBlockDiagonalForm|ecognitionPrior|ecordLists|ecordSeparators|eferenceLineStyle|efreshRate|egionBoundaryStyle|egionFillingStyle|egionFunction|egionSize|egularization|enderingOptions|equiredPhysicalQuantities|esampling|esamplingMethod|esolveContextAliases|estartInterval|eturnReceiptFunction|evolutionAxis|otateLabel|otationAction|oundingRadius|owAlignments|owLines|owMinHeight|owSpacings|owsEqual|ulerUnits|untimeAttributes|untimeOptions))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:S(?:ameTest|ampleDepth|ampleRate|amplingPeriod|aveConnection|aveDefinitions|aveable|caleDivisions|caleOrigin|calePadding|caleRangeStyle|caleRanges|calingFunctions|cientificNotationThreshold|creenStyleEnvironment|criptBaselineShifts|criptLevel|criptMinSize|criptSizeMultipliers|crollPosition|crollbars|crollingOptions|ectorOrigin|ectorSpacing|electable|elfLoopStyle|eriesTermGoal|haringList|howAutoSpellCheck|howAutoStyles|howCellBracket|howCellLabel|howCellTags|howClosedCellArea|howContents|howCursorTracker|howGroupOpener|howPageBreaks|howSelection|howShortBoxForm|howSpecialCharacters|howStringCharacters|hrinkingDelay|ignPadding|ignificanceLevel|imilarityRules|ingleLetterItalics|liderBoxOptions|ortedBy|oundVolume|pacings|panAdjustments|panCharacterRounding|panLineThickness|panMaxSize|panMinSize|panSymmetric|pecificityGoal|pellingCorrection|pellingDictionaries|pellingDictionariesPath|pellingOptions|phericalRegion|plineClosed|plineDegree|plineKnots|plineWeights|qrtBoxOptions|tabilityMargins|tabilityMarginsStyle|tandardized|tartingStepSize|tateSpaceRealization|tepMonitor|trataVariables|treamColorFunction|treamColorFunctionScaling|treamMarkers|treamPoints|treamScale|treamStyle|trictInequalities|tripOnInput|tripWrapperBoxes|tructuredSelection|tyleBoxAutoDelete|tyleDefinitions|tyleHints|tyleMenuListing|tyleNameDialogSettings|tyleSheetPath|ubscriptBoxOptions|ubsuperscriptBoxOptions|ubtitleEncoding|uperscriptBoxOptions|urdForm|ynchronousInitialization|ynchronousUpdating|yntaxForm|ystemHelpPath|ystemsModelLabels))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:T(?:abFilling|abSpacings|ableAlignments|ableDepth|ableDirections|ableHeadings|ableSpacing|agBoxOptions|aggingRules|argetFunctions|argetUnits|emplateBoxOptions|emporalRegularity|estID|extAlignment|extClipboardType|extJustification|extureCoordinateFunction|extureCoordinateScaling|icks|icksStyle|imeConstraint|imeDirection|imeFormat|imeGoal|imeSystem|imeZone|okenWords|olerance|ooltipDelay|ooltipStyle|otalWidth|ouchscreenAutoZoom|ouchscreenControlPlacement|raceAbove|raceBackward|raceDepth|raceForward|raceOff|raceOn|raceOriginal|rackedSymbols|rackingFunction|raditionalFunctionNotation|ransformationClass|ransformationFunctions|ransitionDirection|ransitionDuration|ransitionEffect|ranslationOptions|ravelMethod|rendStyle|rig))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:U(?:nderoverscriptBoxOptions|nderscriptBoxOptions|ndoOptions|ndoTrackedVariables|nitSystem|nityDimensions|nsavedVariables|pdateInterval|pdatePacletSites|tilityFunction))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:V(?:alidationLength|alidationSet|alueDimensions|arianceEstimatorFunction|ectorAspectRatio|ectorColorFunction|ectorColorFunctionScaling|ectorMarkers|ectorPoints|ectorRange|ectorScaling|ectorSizes|ectorStyle|erifyConvergence|erifySecurityCertificates|erifySolutions|erifyTestAssumptions|ersionedPreferences|ertexCapacity|ertexColors|ertexCoordinates|ertexDataCoordinates|ertexLabelStyle|ertexLabels|ertexNormals|ertexShape|ertexShapeFunction|ertexSize|ertexStyle|ertexTextureCoordinates|ertexWeight|ideoEncoding|iewAngle|iewCenter|iewMatrix|iewPoint|iewProjection|iewRange|iewVector|iewVertical|isible))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:W(?:aveletScale|eights|hitePoint|indowClickSelect|indowElements|indowFloating|indowFrame|indowFrameElements|indowMargins|indowOpacity|indowSize|indowStatusArea|indowTitle|indowToolbars|ordOrientation|ordSearch|ordSelectionFunction|ordSeparators|ordSpacings|orkingPrecision|rapAround))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:Z(?:eroTest|eroWidthTimes))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:A(?:bove|fter|lgebraics|ll|nonymous|utomatic|xis))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:B(?:ack|ackward|aseline|efore|elow|lack|lue|old|ooleans|ottom|oxes|rown|yte))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:C(?:atalan|ellStyle|enter|haracter|omplexInfinity|omplexes|onstant|yan))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:D(?:ashed|efaultAxesStyle|efaultBaseStyle|efaultBoxStyle|efaultFaceGridsStyle|efaultFieldHintStyle|efaultFrameStyle|efaultFrameTicksStyle|efaultGridLinesStyle|efaultLabelStyle|efaultMenuStyle|efaultTicksStyle|efaultTooltipStyle|egree|elimiter|igitCharacter|otDashed|otted))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:E(?:|ndOfBuffer|ndOfFile|ndOfLine|ndOfString|ulerGamma|xpression))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:F(?:alse|lat|ontProperties|orward|orwardBackward|riday|ront|rontEndDynamicExpression|ull))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:G(?:eneral|laisher|oldenAngle|oldenRatio|ray|reen))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:H(?:ere|exadecimalCharacter|oldAll|oldAllComplete|oldFirst|oldRest))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:I(?:|ndeterminate|nfinity|nherited|nteger|ntegers|talic))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:K(?:hinchin))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:L(?:arge|arger|eft|etterCharacter|ightBlue|ightBrown|ightCyan|ightGray|ightGreen|ightMagenta|ightOrange|ightPink|ightPurple|ightRed|ightYellow|istable|ocked))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:M(?:achinePrecision|agenta|anual|edium|eshCellCentroid|eshCellMeasure|eshCellQuality|onday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:N(?:HoldAll|HoldFirst|HoldRest|egativeIntegers|egativeRationals|egativeReals|oWhitespace|onNegativeIntegers|onNegativeRationals|onNegativeReals|onPositiveIntegers|onPositiveRationals|onPositiveReals|one|ow|ull|umber|umberString|umericFunction))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:O(?:neIdentity|range|rderless))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:P(?:i|ink|lain|ositiveIntegers|ositiveRationals|ositiveReals|rimes|rotected|unctuationCharacter|urple))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:R(?:ationals|eadProtected|eal|eals|ecord|ed|ight))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:S(?:aturday|equenceHold|mall|maller|panFromAbove|panFromBoth|panFromLeft|tartOfLine|tartOfString|tring|truckthrough|tub|unday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:T(?:emporary|hick|hin|hursday|iny|oday|omorrow|op|ransparent|rue|uesday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:U(?:ndefined|nderlined))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:W(?:ednesday|hite|hitespace|hitespaceCharacter|ord|ordBoundary|ordCharacter))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:Y(?:ellow|esterday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:\\$(?:Aborted|ActivationKey|AllowDataUpdates|AllowInternet|AssertFunction|Assumptions|AudioInputDevices|AudioOutputDevices|BaseDirectory|BasePacletsDirectory|BatchInput|BatchOutput|ByteOrdering|CacheBaseDirectory|Canceled|CharacterEncoding|CharacterEncodings|CloudAccountName|CloudBase|CloudConnected|CloudCreditsAvailable|CloudEvaluation|CloudExpressionBase|CloudObjectNameFormat|CloudObjectURLType|CloudRootDirectory|CloudSymbolBase|CloudUserID|CloudUserUUID|CloudVersion|CommandLine|CompilationTarget|Context|ContextAliases|ContextPath|ControlActiveSetting|Cookies|CreationDate|CurrentLink|CurrentTask|DateStringFormat|DefaultAudioInputDevice|DefaultAudioOutputDevice|DefaultFrontEnd|DefaultImagingDevice|DefaultKernels|DefaultLocalBase|DefaultLocalKernel|Display|DisplayFunction|DistributedContexts|DynamicEvaluation|Echo|EmbedCodeEnvironments|EmbeddableServices|Epilog|EvaluationCloudBase|EvaluationCloudObject|EvaluationEnvironment|ExportFormats|Failed|FontFamilies|FrontEnd|FrontEndSession|GeoLocation|GeoLocationCity|GeoLocationCountry|GeoLocationSource|HomeDirectory|IgnoreEOF|ImageFormattingWidth|ImageResolution|ImagingDevice|ImagingDevices|ImportFormats|InitialDirectory|Input|InputFileName|InputStreamMethods|Inspector|InstallationDirectory|InterpreterTypes|IterationLimit|KernelCount|KernelID|Language|LibraryPath|LicenseExpirationDate|LicenseID|LicenseServer|Linked|LocalBase|LocalSymbolBase|MachineAddresses|MachineDomains|MachineEpsilon|MachineID|MachineName|MachinePrecision|MachineType|MaxExtraPrecision|MaxMachineNumber|MaxNumber|MaxPiecewiseCases|MaxPrecision|MaxRootDegree|MessageGroups|MessageList|MessagePrePrint|Messages|MinMachineNumber|MinNumber|MinPrecision|MobilePhone|ModuleNumber|NetworkConnected|NewMessage|NewSymbol|NotebookInlineStorageLimit|Notebooks|NumberMarks|OperatingSystem|Output|OutputSizeLimit|OutputStreamMethods|Packages|ParentLink|ParentProcessID|PasswordFile|Path|PathnameSeparator|PerformanceGoal|Permissions|PlotTheme|Printout3DPreviewer|ProcessID|ProcessorCount|ProcessorType|ProgressReporting|RandomGeneratorState|RecursionLimit|ReleaseNumber|RequesterAddress|RequesterCloudUserID|RequesterCloudUserUUID|RequesterWolframID|RequesterWolframUUID|RootDirectory|ScriptCommandLine|ScriptInputString|Services|SessionID|SharedFunctions|SharedVariables|SoundDisplayFunction|SynchronousEvaluation|System|SystemCharacterEncoding|SystemID|SystemShell|SystemTimeZone|SystemWordLength|TemplatePath|TemporaryDirectory|TimeUnit|TimeZone|TimeZoneEntity|TimedOut|UnitSystem|Urgent|UserAgentString|UserBaseDirectory|UserBasePacletsDirectory|UserDocumentsDirectory|UserURLBase|Username|Version|VersionNumber|WolframDocumentsDirectory|WolframID|WolframUUID))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"System`(?:A(?:bortScheduledTask|ctive|lgebraicRules|lternateImage|natomyForm|nimationCycleOffset|nimationCycleRepetitions|nimationDisplayTime|spectRatioFixed|stronomicalData|synchronousTaskObject|synchronousTasks|udioDevice|udioLooping))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:B(?:uttonEvaluator|uttonExpandable|uttonFrame|uttonMargins|uttonNote|uttonStyle))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:C(?:DFInformation|hebyshevDistance|lassifierInformation|lipFill|olorOutput|olumnForm|ompose|onstantArrayLayer|onstantPlusLayer|onstantTimesLayer|onstrainedMax|onstrainedMin|ontourGraphics|ontourLines|onversionOptions|reateScheduledTask|reateTemporary|urry))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:D(?:atabinRemove|ate|ebug|efaultColor|efaultFont|ensityGraphics|isplay|isplayString|otPlusLayer|ragAndDrop))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:E(?:dgeLabeling|dgeRenderingFunction|valuateScheduledTask|xpectedValue))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:F(?:actorComplete|ontForm|ormTheme|romDate|ullOptions))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:G(?:raphStyle|raphicsArray|raphicsSpacing|ridBaseline))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:H(?:TMLSave|eldPart|iddenSurface|omeDirectory))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:I(?:mageRotated|nstanceNormalizationLayer))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:L(?:UBackSubstitution|egendreType|ightSources|inearProgramming|inkOpen|iteral|ongestMatch))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:M(?:eshRange|oleculeEquivalentQ))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:N(?:etInformation|etSharedArray|extScheduledTaskTime|otebookCreate))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:O(?:penTemporary))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:P(?:IDData|ackingMethod|ersistentValue|ixelConstrained|lot3Matrix|lotDivision|lotJoined|olygonIntersections|redictorInformation|roperties|roperty|ropertyList|ropertyValue))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:R(?:andom|asterArray|ecognitionThreshold|elease|emoteKernelObject|emoveAsynchronousTask|emoveProperty|emoveScheduledTask|enderAll|eplaceHeldPart|esetScheduledTask|esumePacket|unScheduledTask))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:S(?:cheduledTaskActiveQ|cheduledTaskInformation|cheduledTaskObject|cheduledTasks|creenRectangle|electionAnimate|equenceAttentionLayer|equenceForm|etProperty|hading|hortestMatch|ingularValues|kinStyle|ocialMediaData|tartAsynchronousTask|tartScheduledTask|tateDimensions|topAsynchronousTask|topScheduledTask|tructuredArray|tyleForm|tylePrint|ubscripted|urfaceColor|urfaceGraphics|uspendPacket|ystemModelProgressReporting))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:T(?:eXSave|extStyle|imeWarpingCorrespondence|imeWarpingDistance|oDate|oFileName|oHeldExpression))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:U(?:RLFetch|RLFetchAsynchronous|RLSave|RLSaveAsynchronous))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:V(?:ectorScale|ertexCoordinateRules|ertexLabeling|ertexRenderingFunction))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:W(?:aitAsynchronousTask|indowMovable))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:\\$(?:AsynchronousTask|ConfiguredKernels|DefaultFont|EntityStores|FormatType|HTTPCookies|InstallationDate|MachineDomain|ProductInformation|ProgramName|RandomState|ScheduledTask|SummaryBoxDataSizeLimit|TemporaryPrefix|TextStyle|TopDirectory|UserAddOnsDirectory))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"System`(?:A(?:ctionDelay|ctionMenuBox|ctionMenuBoxOptions|ctiveItem|lgebraicRulesData|lignmentMarker|llowAdultContent|llowChatServices|llowIncomplete|nalytic|nimatorBox|nimatorBoxOptions|nimatorElements|ppendCheck|rgumentCountQ|rrow3DBox|rrowBox|uthenticate|utoEvaluateEvents|utoIndentSpacings|utoMatch|utoNumberFormatting|utoQuoteCharacters|utoScaling|utoStyleOptions|utoStyleWords|utomaticImageSize|xis3DBox|xis3DBoxOptions|xisBox|xisBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:B(?:SplineCurve3DBox|SplineCurve3DBoxOptions|SplineCurveBox|SplineCurveBoxOptions|SplineSurface3DBox|SplineSurface3DBoxOptions|ackFaceColor|ackFaceGlowColor|ackFaceOpacity|ackFaceSpecularColor|ackFaceSpecularExponent|ackFaceSurfaceAppearance|ackFaceTexture|ackgroundAppearance|ackgroundTasksSettings|acksubstitution|eveled|ezierCurve3DBox|ezierCurve3DBoxOptions|ezierCurveBox|ezierCurveBoxOptions|lankForm|ounds|ox|oxDimensions|oxForm|oxID|oxRotation|oxRotationPoint|ra|raKet|rowserCategory|uttonCell|uttonContents|uttonStyleMenuListing))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:C(?:acheGraphics|achedValue|ardinalBSplineBasis|ellBoundingBox|ellContents|ellElementSpacings|ellElementsBoundingBox|ellFrameStyle|ellInsertionPointCell|ellTrayPosition|ellTrayWidgets|hangeOptions|hannelDatabin|hannelListenerWait|hannelPreSendFunction|hartElementData|hartElementDataFunction|heckAll|heckboxBox|heckboxBoxOptions|ircleBox|lipboardNotebook|lockwiseContourIntegral|losed|losingEvent|loudConnections|loudObjectInformation|loudObjectInformationData|loudUserID|oarse|oefficientDomain|olonForm|olorSetterBox|olorSetterBoxOptions|olumnBackgrounds|ompilerEnvironmentAppend|ompletionsListPacket|omponentwiseContextMenu|ompressedData|oneBox|onicHullRegion3DBox|onicHullRegion3DBoxOptions|onicHullRegionBox|onicHullRegionBoxOptions|onnect|ontentsBoundingBox|ontextMenu|ontinuation|ontourIntegral|ontourSmoothing|ontrolAlignment|ontrollerDuration|ontrollerInformationData|onvertToPostScript|onvertToPostScriptPacket|ookies|opyTag|ounterBox|ounterBoxOptions|ounterClockwiseContourIntegral|ounterEvaluator|ounterStyle|uboidBox|uboidBoxOptions|urlyDoubleQuote|urlyQuote|ylinderBox|ylinderBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:D(?:OSTextFormat|ampingFactor|ataCompression|atasetDisplayPanel|ateDelimiters|ebugTag|ecimal|efault2DTool|efault3DTool|efaultAttachedCellStyle|efaultControlPlacement|efaultDockedCellStyle|efaultInputFormatType|efaultOutputFormatType|efaultStyle|efaultTextFormatType|efaultTextInlineFormatType|efaultValue|efineExternal|egreeLexicographic|egreeReverseLexicographic|eleteWithContents|elimitedArray|estroyAfterEvaluation|eviceOpenQ|ialogIndent|ialogLevel|ifferenceOrder|igitBlockMinimum|isableConsolePrintPacket|iskBox|iskBoxOptions|ispatchQ|isplayRules|isplayTemporary|istributionDomain|ivergence|ocumentGeneratorInformationData|omainRegistrationInformation|oubleContourIntegral|oublyInfinite|own|rawBackFaces|rawFrontFaces|rawHighlighted|ualLinearProgramming|umpGet|ynamicBox|ynamicBoxOptions|ynamicLocation|ynamicModuleBox|ynamicModuleBoxOptions|ynamicModuleParent|ynamicName|ynamicNamespace|ynamicReference|ynamicWrapperBox|ynamicWrapperBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:E(?:ditButtonSettings|liminationOrder|llipticReducedHalfPeriods|mbeddingObject|mphasizeSyntaxErrors|mpty|nableConsolePrintPacket|ndAdd|ngineEnvironment|nter|qualColumns|qualRows|quatedTo|rrorBoxOptions|rrorNorm|rrorPacket|rrorsDialogSettings|valuated|valuationMode|valuationOrder|valuationRateLimit|ventEvaluator|ventHandlerTag|xactRootIsolation|xitDialog|xpectationE|xportPacket|xpressionPacket|xternalCall|xternalFunctionName))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:F(?:EDisableConsolePrintPacket|EEnableConsolePrintPacket|ail|ileInformation|ileName|illForm|illedCurveBox|illedCurveBoxOptions|ine|itAll|lashSelection|ont|ontName|ontOpacity|ontPostScriptName|ontReencoding|ormatRules|ormatValues|rameInset|rameless|rontEndObject|rontEndResource|rontEndResourceString|rontEndStackSize|rontEndValueCache|rontEndVersion|rontFaceColor|rontFaceGlowColor|rontFaceOpacity|rontFaceSpecularColor|rontFaceSpecularExponent|rontFaceSurfaceAppearance|rontFaceTexture|ullAxes))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:G(?:eneratedCellStyles|eneric|eometricTransformation3DBox|eometricTransformation3DBoxOptions|eometricTransformationBox|eometricTransformationBoxOptions|estureHandlerTag|etContext|etFileName|etLinebreakInformationPacket|lobalPreferences|lobalSession|raphLayerLabels|raphRoot|raphics3DBox|raphics3DBoxOptions|raphicsBaseline|raphicsBox|raphicsBoxOptions|raphicsComplex3DBox|raphicsComplex3DBoxOptions|raphicsComplexBox|raphicsComplexBoxOptions|raphicsContents|raphicsData|raphicsGridBox|raphicsGroup3DBox|raphicsGroup3DBoxOptions|raphicsGroupBox|raphicsGroupBoxOptions|raphicsGrouping|raphicsStyle|reekStyle|ridBoxAlignment|ridBoxBackground|ridBoxDividers|ridBoxFrame|ridBoxItemSize|ridBoxItemStyle|ridBoxOptions|ridBoxSpacings|ridElementStyleOptions|roupOpenerColor|roupOpenerInsideFrame|roupTogetherGrouping|roupTogetherNestedGrouping))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:H(?:eadCompose|eaders|elpBrowserLookup|elpBrowserNotebook|elpViewerSettings|essian|exahedronBox|exahedronBoxOptions|ighlightString|omePage|orizontal|orizontalForm|orizontalScrollPosition|yperlinkCreationSettings|yphenationOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:I(?:conizedObject|gnoreSpellCheck|mageCache|mageCacheValid|mageEditMode|mageMarkers|mageOffset|mageRangeCache|mageSizeCache|mageSizeRaw|nactiveStyle|ncludeSingularTerm|ndent|ndentMaxFraction|ndentingNewlineSpacings|ndexCreationOptions|ndexTag|nequality|nexactNumbers|nformationData|nformationDataGrid|nlineCounterAssignments|nlineCounterIncrements|nlineRules|nputFieldBox|nputFieldBoxOptions|nputGrouping|nputSettings|nputToBoxFormPacket|nsertionPointObject|nset3DBox|nset3DBoxOptions|nsetBox|nsetBoxOptions|ntegral|nterlaced|nterpolationPrecision|nterpretTemplate|nterruptSettings|nto|nvisibleApplication|nvisibleTimes|temBox|temBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:J(?:acobian|oinedCurveBox|oinedCurveBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:K(?:|ernelExecute|et))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:L(?:abeledSlider|ambertW|anguageOptions|aunch|ayoutInformation|exicographic|icenseID|ine3DBox|ine3DBoxOptions|ineBox|ineBoxOptions|ineBreak|ineWrapParts|inearFilter|inebreakSemicolonWeighting|inkConnectedQ|inkError|inkFlush|inkHost|inkMode|inkOptions|inkReadHeld|inkService|inkWriteHeld|istPickerBoxBackground|isten|iteralSearch|ocalizeDefinitions|ocatorBox|ocatorBoxOptions|ocatorCentering|ocatorPaneBox|ocatorPaneBoxOptions|ongEqual|ongForm|oopback))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:M(?:achineID|achineName|acintoshSystemPageSetup|ainSolve|aintainDynamicCaches|akeRules|atchLocalNameQ|aterial|athMLText|athematicaNotation|axBend|axPoints|enu|enuAppearance|enuEvaluator|enuItem|enuList|ergeDifferences|essageObject|essageOptions|essagesNotebook|etaCharacters|ethodOptions|inRecursion|inSize|ode|odular|onomialOrder|ouseAppearanceTag|ouseButtons|ousePointerNote|ultiLetterItalics|ultiLetterStyle|ultiplicity|ultiscriptBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:N(?:BernoulliB|ProductFactors|SumTerms|Values|amespaceBox|amespaceBoxOptions|estedScriptRules|etworkPacketRecordingDuring|ext|onAssociative|ormalGrouping|otebookDefault|otebookInterfaceObject))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:O(?:LEData|bjectExistsQ|pen|penFunctionInspectorPacket|penSpecialOptions|penerBox|penerBoxOptions|ptionQ|ptionValueBox|ptionValueBoxOptions|ptionsPacket|utputFormData|utputGrouping|utputMathEditExpression|ver|verlayBox|verlayBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:P(?:ackPaclet|ackage|acletDirectoryAdd|acletDirectoryRemove|acletInformation|acletObjectQ|acletUpdate|ageHeight|alettesMenuSettings|aneBox|aneBoxOptions|aneSelectorBox|aneSelectorBoxOptions|anelBox|anelBoxOptions|aperWidth|arameter|arameterVariables|arentConnect|arentForm|arentList|arenthesize|artialD|asteAutoQuoteCharacters|ausedTime|eriodicInterpolation|erpendicular|ickMode|ickedElements|ivoting|lotRangeClipPlanesStyle|oint3DBox|oint3DBoxOptions|ointBox|ointBoxOptions|olygon3DBox|olygon3DBoxOptions|olygonBox|olygonBoxOptions|olygonHoleScale|olygonScale|olyhedronBox|olyhedronBoxOptions|olynomialForm|olynomials|opupMenuBox|opupMenuBoxOptions|ostScript|recedence|redictionRoot|referencesSettings|revious|rimaryPlaceholder|rintForm|rismBox|rismBoxOptions|rivateFrontEndOptions|robabilityPr|rocessStateDomain|rocessTimeDomain|rogressIndicatorBox|rogressIndicatorBoxOptions|romptForm|yramidBox|yramidBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:R(?:adioButtonBox|adioButtonBoxOptions|andomSeed|angeSpecification|aster3DBox|aster3DBoxOptions|asterBox|asterBoxOptions|ationalFunctions|awArray|awMedium|ebuildPacletData|ectangleBox|ecurringDigitsForm|eferenceMarkerStyle|eferenceMarkers|einstall|emoved|epeatedString|esourceAcquire|esourceSubmissionObject|eturnCreatesNewCell|eturnEntersInput|eturnInputFormPacket|otationBox|otationBoxOptions|oundImplies|owBackgrounds|owHeights|uleCondition|uleForm))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:S(?:aveAutoDelete|caledMousePosition|cheduledTaskInformationData|criptForm|criptRules|ectionGrouping|electWithContents|election|electionCell|electionCellCreateCell|electionCellDefaultStyle|electionCellParentStyle|electionPlaceholder|elfLoops|erviceResponse|etOptionsPacket|etSecuredAuthenticationKey|etbacks|etterBox|etterBoxOptions|howAutoConvert|howCodeAssist|howControls|howGroupOpenCloseIcon|howInvisibleCharacters|howPredictiveInterface|howSyntaxStyles|hrinkWrapBoundingBox|ingleEvaluation|ingleLetterStyle|lider2DBox|lider2DBoxOptions|ocket|olveDelayed|oundAndGraphics|pace|paceForm|panningCharacters|phereBox|phereBoxOptions|tartupSound|tringBreak|tringByteCount|tripStyleOnPaste|trokeForm|tructuredArrayHeadQ|tyleKeyMapping|tyleNames|urfaceAppearance|yntax|ystemException|ystemGet|ystemInformationData|ystemStub|ystemTest))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:T(?:ab|abViewBox|abViewBoxOptions|ableViewBox|ableViewBoxAlignment|ableViewBoxBackground|ableViewBoxHeaders|ableViewBoxItemSize|ableViewBoxItemStyle|ableViewBoxOptions|agBoxNote|agStyle|emplateEvaluate|emplateSlotSequence|emplateUnevaluated|emplateVerbatim|emporaryVariable|ensorQ|etrahedronBox|etrahedronBoxOptions|ext3DBox|ext3DBoxOptions|extBand|extBoundingBox|extBox|extForm|extLine|extParagraph|hisLink|itleGrouping|oColor|oggle|oggleFalse|ogglerBox|ogglerBoxOptions|ooBig|ooltipBox|ooltipBoxOptions|otalHeight|raceAction|raceInternal|raceLevel|rackCellChangeTimes|raditionalNotation|raditionalOrder|ransparentColor|rapEnterKey|rapSelection|ubeBSplineCurveBox|ubeBSplineCurveBoxOptions|ubeBezierCurveBox|ubeBezierCurveBoxOptions|ubeBox|ubeBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:U(?:ntrackedVariables|p|seGraphicsRange|serDefinedWavelet|sing))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:V(?:2Get|alueBox|alueBoxOptions|alueForm|aluesData|ectorGlyphData|erbose|ertical|erticalForm|iewPointSelectorSettings|iewPort|irtualGroupData|isibleCell))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:W(?:aitUntil|ebPageMetaInformation|holeCellGroupOpener|indowPersistentStyles|indowSelected|indowWidth|olframAlphaDate|olframAlphaQuantity|olframAlphaResult|olframCloudSettings))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:\\$(?:ActivationGroupID|ActivationUserRegistered|AddOnsDirectory|BoxForms|CloudConnection|CloudVersionNumber|CloudWolframEngineVersionNumber|ConditionHold|DefaultMailbox|DefaultPath|FinancialDataSource|GeoEntityTypes|GeoLocationPrecision|HTMLExportRules|HTTPRequest|LaunchDirectory|LicenseProcesses|LicenseSubprocesses|LicenseType|LinkSupported|LoadedFiles|MaxLicenseProcesses|MaxLicenseSubprocesses|MinorReleaseNumber|NetworkLicense|Off|OutputForms|PatchLevelID|PermissionsGroupBase|PipeSupported|PreferencesDirectory|PrintForms|PrintLiteral|RegisteredDeviceClasses|RegisteredUserName|SecuredAuthenticationKeyTokens|SetParentLink|SoundDisplay|SuppressInputFormHeads|SystemMemory|TraceOff|TraceOn|TracePattern|TracePostAction|TracePreAction|UserAgentLanguages|UserAgentMachine|UserAgentName|UserAgentOperatingSystem|UserAgentVersion|UserName))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"System`(?:A(?:ctiveClassification|ctiveClassificationObject|ctivePrediction|ctivePredictionObject|ddToSearchIndex|ggregatedEntityClass|ggregationLayer|ngleBisector|nimatedImage|nimationVideo|nomalyDetector|ppendLayer|pplication|pplyReaction|round|roundReplace|rrayReduce|sk|skAppend|skConfirm|skDisplay|skFunction|skState|skTemplateDisplay|skedQ|skedValue|ssessmentFunction|ssessmentResultObject|ssumeDeterministic|stroAngularSeparation|stroBackground|stroCenter|stroDistance|stroGraphics|stroGridLines|stroGridLinesStyle|stroPosition|stroProjection|stroRange|stroRangePadding|stroReferenceFrame|stroStyling|stroZoomLevel|tom|tomCoordinates|tomCount|tomDiagramCoordinates|tomLabelStyle|tomLabels|tomList|ttachCell|ttentionLayer|udioAnnotate|udioAnnotationLookup|udioIdentify|udioInstanceQ|udioPause|udioPlay|udioRecord|udioStop|udioStream|udioStreams|udioTrackApply|udioTrackSelection|utocomplete|utocompletionFunction|xiomaticTheory|xisLabel|xisObject|xisStyle))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:B(?:asicRecurrentLayer|atchNormalizationLayer|atchSize|ayesianMaximization|ayesianMaximizationObject|ayesianMinimization|ayesianMinimizationObject|esagL|innedVariogramList|inomialPointProcess|ioSequence|ioSequenceBackTranslateList|ioSequenceComplement|ioSequenceInstances|ioSequenceModify|ioSequencePlot|ioSequenceQ|ioSequenceReverseComplement|ioSequenceTranscribe|ioSequenceTranslate|itRate|lockDiagonalMatrix|lockLowerTriangularMatrix|lockUpperTriangularMatrix|lockchainAddressData|lockchainBase|lockchainBlockData|lockchainContractValue|lockchainData|lockchainGet|lockchainKeyEncode|lockchainPut|lockchainTokenData|lockchainTransaction|lockchainTransactionData|lockchainTransactionSign|lockchainTransactionSubmit|ond|ondCount|ondLabelStyle|ondLabels|ondList|ondQ|uildCompiledComponent))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:C(?:TCLossLayer|achePersistence|anvas|ast|ategoricalDistribution|atenateLayer|auchyPointProcess|hannelBase|hannelBrokerAction|hannelHistoryLength|hannelListen|hannelListener|hannelListeners|hannelObject|hannelReceiverFunction|hannelSend|hannelSubscribers|haracterNormalize|hemicalConvert|hemicalFormula|hemicalInstance|hemicalReaction|loudExpression|loudExpressions|loudRenderingMethod|ombinatorB|ombinatorC|ombinatorI|ombinatorK|ombinatorS|ombinatorW|ombinatorY|ombinedEntityClass|ompiledCodeFunction|ompiledComponent|ompiledExpressionDeclaration|ompiledLayer|ompilerCallback|ompilerEnvironment|ompilerEnvironmentAppendTo|ompilerEnvironmentObject|ompilerOptions|omplementedEntityClass|omputeUncertainty|onfirmQuiet|onformationMethod|onnectSystemModelComponents|onnectSystemModelController|onnectedMoleculeComponents|onnectedMoleculeQ|onnectionSettings|ontaining|ontentDetectorFunction|ontentFieldOptions|ontentLocationFunction|ontentObject|ontrastiveLossLayer|onvolutionLayer|reateChannel|reateCloudExpression|reateCompilerEnvironment|reateDataStructure|reateDataSystemModel|reateLicenseEntitlement|reateSearchIndex|reateSystemModel|reateTypeInstance|rossEntropyLossLayer|urrentNotebookImage|urrentScreenImage|urryApplied))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:D(?:SolveChangeVariables|ataStructure|ataStructureQ|atabaseConnect|atabaseDisconnect|atabaseReference|atabinSubmit|ateInterval|eclareCompiledComponent|econvolutionLayer|ecryptFile|eleteChannel|eleteCloudExpression|eleteElements|eleteSearchIndex|erivedKey|iggleGatesPointProcess|iggleGrattonPointProcess|igitalSignature|isableFormatting|ocumentWeightingRules|otLayer|ownValuesFunction|ropoutLayer|ynamicImage))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:E(?:choTiming|lementwiseLayer|mbeddedSQLEntityClass|mbeddedSQLExpression|mbeddingLayer|mptySpaceF|ncryptFile|ntityFunction|ntityStore|stimatedPointProcess|stimatedVariogramModel|valuationEnvironment|valuationPrivileges|xpirationDate|xpressionTree|xtendedEntityClass|xternalEvaluate|xternalFunction|xternalIdentifier|xternalObject|xternalSessionObject|xternalSessions|xternalStorageBase|xternalStorageDownload|xternalStorageGet|xternalStorageObject|xternalStoragePut|xternalStorageUpload|xternalValue|xtractLayer))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:F(?:aceRecognize|eatureDistance|eatureExtract|eatureExtraction|eatureExtractor|eatureExtractorFunction|ileConvert|ileFormatProperties|ileNameToFormatList|ileSystemTree|ilteredEntityClass|indChannels|indEquationalProof|indExternalEvaluators|indGeometricConjectures|indImageText|indIsomers|indMoleculeSubstructure|indPointProcessParameters|indSystemModelEquilibrium|indTextualAnswer|lattenLayer|orAllType|ormControl|orwardCloudCredentials|oxHReduce|rameListVideo|romRawPointer|unctionCompile|unctionCompileExport|unctionCompileExportByteArray|unctionCompileExportLibrary|unctionCompileExportString|unctionDeclaration|unctionLayer|unctionPoles))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:G(?:alleryView|atedRecurrentLayer|enerateDerivedKey|enerateDigitalSignature|enerateFileSignature|enerateSecuredAuthenticationKey|eneratedAssetFormat|eneratedAssetLocation|eoGraphValuePlot|eoOrientationData|eometricAssertion|eometricScene|eometricStep|eometricStylingRules|eometricTest|ibbsPointProcess|raphTree|ridVideo))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:H(?:andlerFunctions|andlerFunctionsKeys|ardcorePointProcess|istogramPointDensity))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:I(?:gnoreIsotopes|gnoreStereochemistry|mageAugmentationLayer|mageBoundingBoxes|mageCases|mageContainsQ|mageContents|mageGraphics|magePosition|magePyramid|magePyramidApply|mageStitch|mportedObject|ncludeAromaticBonds|ncludeHydrogens|ncludeRelatedTables|nertEvaluate|nertExpression|nfiniteFuture|nfinitePast|nhomogeneousPoissonPointProcess|nitialEvaluationHistory|nitializationObject|nitializationObjects|nitializationValue|nitialize|nputPorts|ntegrateChangeVariables|nterfaceSwitched|ntersectedEntityClass|nverseImagePyramid))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:K(?:ernelConfiguration|ernelFunction))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:L(?:earningRateMultipliers|ibraryFunctionDeclaration|icenseEntitlementObject|icenseEntitlements|icensingSettings|inearLayer|iteralType|oadCompiledComponent|ocalResponseNormalizationLayer|ongShortTermMemoryLayer|ossFunction))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:M(?:IMETypeToFormatList|ailExecute|ailFolder|ailItem|ailSearch|ailServerConnect|ailServerConnection|aternPointProcess|axDisplayedChildren|axTrainingRounds|axWordGap|eanAbsoluteLossLayer|eanAround|eanPointDensity|eanSquaredLossLayer|ergingFunction|idpoint|issingValuePattern|issingValueSynthesis|olecule|oleculeAlign|oleculeContainsQ|oleculeDraw|oleculeFreeQ|oleculeGraph|oleculeMatchQ|oleculeMaximumCommonSubstructure|oleculeModify|oleculeName|oleculePattern|oleculePlot|oleculePlot3D|oleculeProperty|oleculeQ|oleculeRecognize|oleculeSubstructureCount|oleculeValue))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:N(?:BodySimulation|BodySimulationData|earestNeighborG|estTree|etAppend|etArray|etArrayLayer|etBidirectionalOperator|etChain|etDecoder|etDelete|etDrop|etEncoder|etEvaluationMode|etExternalObject|etExtract|etFlatten|etFoldOperator|etGANOperator|etGraph|etInitialize|etInsert|etInsertSharedArrays|etJoin|etMapOperator|etMapThreadOperator|etMeasurements|etModel|etNestOperator|etPairEmbeddingOperator|etPort|etPortGradient|etPrepend|etRename|etReplace|etReplacePart|etStateObject|etTake|etTrain|etTrainResultsObject|etUnfold|etworkPacketCapture|etworkPacketRecording|etworkPacketTrace|eymanScottPointProcess|ominalScale|ormalizationLayer|umericArray|umericArrayQ|umericArrayType))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:O(?:peratorApplied|rderingLayer|rdinalScale|utputPorts|verlayVideo))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:P(?:acletSymbol|addingLayer|agination|airCorrelationG|arametricRampLayer|arentEdgeLabel|arentEdgeLabelFunction|arentEdgeLabelStyle|arentEdgeShapeFunction|arentEdgeStyle|arentEdgeStyleFunction|artLayer|artProtection|atternFilling|atternReaction|enttinenPointProcess|erpendicularBisector|ersistenceLocation|ersistenceTime|ersistentObject|ersistentObjects|ersistentSymbol|itchRecognize|laceholderLayer|laybackSettings|ointCountDistribution|ointDensity|ointDensityFunction|ointProcessEstimator|ointProcessFitTest|ointProcessParameterAssumptions|ointProcessParameterQ|ointStatisticFunction|ointValuePlot|oissonPointProcess|oolingLayer|rependLayer|roofObject|ublisherID))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:Q(?:uestionGenerator|uestionInterface|uestionObject|uestionSelector))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:R(?:andomArrayLayer|andomInstance|andomPointConfiguration|andomTree|eactionBalance|eactionBalancedQ|ecalibrationFunction|egisterExternalEvaluator|elationalDatabase|emoteAuthorizationCaching|emoteBatchJobAbort|emoteBatchJobObject|emoteBatchJobs|emoteBatchMapSubmit|emoteBatchSubmissionEnvironment|emoteBatchSubmit|emoteConnect|emoteConnectionObject|emoteEvaluate|emoteFile|emoteInputFiles|emoteProviderSettings|emoteRun|emoteRunProcess|emovalConditions|emoveAudioStream|emoveChannelListener|emoveChannelSubscribers|emoveVideoStream|eplicateLayer|eshapeLayer|esizeLayer|esourceFunction|esourceRegister|esourceRemove|esourceSubmit|esourceSystemBase|esourceSystemPath|esourceUpdate|esourceVersion|everseApplied|ipleyK|ipleyRassonRegion|ootTree|ulesTree))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:S(?:ameTestProperties|ampledEntityClass|earchAdjustment|earchIndexObject|earchIndices|earchQueryString|earchResultObject|ecuredAuthenticationKey|ecuredAuthenticationKeys|ecurityCertificate|equenceIndicesLayer|equenceLastLayer|equenceMostLayer|equencePredict|equencePredictorFunction|equenceRestLayer|equenceReverseLayer|erviceRequest|erviceSubmit|etFileFormatProperties|etSystemModel|lideShowVideo|moothPointDensity|nippet|nippetsVideo|nubPolyhedron|oftmaxLayer|olidBoundaryLoadValue|olidDisplacementCondition|olidFixedCondition|olidMechanicsPDEComponent|olidMechanicsStrain|olidMechanicsStress|ortedEntityClass|ourceLink|patialBinnedPointData|patialBoundaryCorrection|patialEstimate|patialEstimatorFunction|patialJ|patialNoiseLevel|patialObservationRegionQ|patialPointData|patialPointSelect|patialRandomnessTest|patialTransformationLayer|patialTrendFunction|peakerMatchQ|peechCases|peechInterpreter|peechRecognize|plice|tartExternalSession|tartWebSession|tereochemistryElements|traussHardcorePointProcess|traussPointProcess|ubsetCases|ubsetCount|ubsetPosition|ubsetReplace|ubtitleTrackSelection|ummationLayer|ymmetricDifference|ynthesizeMissingValues|ystemCredential|ystemCredentialData|ystemCredentialKey|ystemCredentialKeys|ystemCredentialStoreObject|ystemInstall|ystemModel|ystemModelExamples|ystemModelLinearize|ystemModelMeasurements|ystemModelParametricSimulate|ystemModelPlot|ystemModelReliability|ystemModelSimulate|ystemModelSimulateSensitivity|ystemModelSimulationData|ystemModeler|ystemModels))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:T(?:ableView|argetDevice|argetSystem|ernaryListPlot|ernaryPlotCorners|extCases|extContents|extElement|extPosition|extSearch|extSearchReport|extStructure|homasPointProcess|hreaded|hreadingLayer|ickDirection|ickLabelOrientation|ickLabelPositioning|ickLabels|ickLengths|ickPositions|oRawPointer|otalLayer|ourVideo|rainImageContentDetector|rainTextContentDetector|rainingProgressCheckpointing|rainingProgressFunction|rainingProgressMeasurements|rainingProgressReporting|rainingStoppingCriterion|rainingUpdateSchedule|ransposeLayer|ree|reeCases|reeChildren|reeCount|reeData|reeDelete|reeDepth|reeElementCoordinates|reeElementLabel|reeElementLabelFunction|reeElementLabelStyle|reeElementShape|reeElementShapeFunction|reeElementSize|reeElementSizeFunction|reeElementStyle|reeElementStyleFunction|reeExpression|reeExtract|reeFold|reeInsert|reeLayout|reeLeafCount|reeLeafQ|reeLeaves|reeLevel|reeMap|reeMapAt|reeOutline|reePosition|reeQ|reeReplacePart|reeRules|reeScan|reeSelect|reeSize|reeTraversalOrder|riangleCenter|riangleConstruct|riangleMeasurement|ypeDeclaration|ypeEvaluate|ypeOf|ypeSpecifier|yped))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:U(?:RLDownloadSubmit|nconstrainedParameters|nionedEntityClass|niqueElements|nitVectorLayer|nlabeledTree|nmanageObject|nregisterExternalEvaluator|pdateSearchIndex|seEmbeddedLibrary))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:V(?:alenceErrorHandling|alenceFilling|aluePreprocessingFunction|andermondeMatrix|arianceGammaPointProcess|ariogramFunction|ariogramModel|ectorAround|erifyDerivedKey|erifyDigitalSignature|erifyFileSignature|erifyInterpretation|ideo|ideoCapture|ideoCombine|ideoDelete|ideoExtractFrames|ideoFrameList|ideoFrameMap|ideoGenerator|ideoInsert|ideoIntervals|ideoJoin|ideoMap|ideoMapList|ideoMapTimeSeries|ideoPadding|ideoPause|ideoPlay|ideoQ|ideoRecord|ideoReplace|ideoScreenCapture|ideoSplit|ideoStop|ideoStream|ideoStreams|ideoTimeStretch|ideoTrackSelection|ideoTranscode|ideoTransparency|ideoTrim))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:W(?:ebAudioSearch|ebColumn|ebElementObject|ebExecute|ebImage|ebImageSearch|ebItem|ebRow|ebSearch|ebSessionObject|ebSessions|ebWindowObject|ikidataData|ikidataSearch|ikipediaSearch|ithCleanup|ithLock))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:Z(?:oomCenter|oomFactor))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:\\$(?:AllowExternalChannelFunctions|AudioDecoders|AudioEncoders|BlockchainBase|ChannelBase|CompilerEnvironment|CookieStore|CryptographicEllipticCurveNames|CurrentWebSession|DataStructures|DefaultNetworkInterface|DefaultProxyRules|DefaultRemoteBatchSubmissionEnvironment|DefaultRemoteKernel|DefaultSystemCredentialStore|ExternalIdentifierTypes|ExternalStorageBase|GeneratedAssetLocation|IncomingMailSettings|Initialization|InitializationContexts|MaxDisplayedChildren|NetworkInterfaces|NoValue|PersistenceBase|PersistencePath|PreInitialization|PublisherID|ResourceSystemBase|ResourceSystemPath|SSHAuthentication|ServiceCreditsAvailable|SourceLink|SubtitleDecoders|SubtitleEncoders|SystemCredentialStore|TargetSystems|TestFileName|VideoDecoders|VideoEncoders|VoiceStyles))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"System`(?:E(?:cho|xit))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:I(?:n|nString))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:O(?:ut))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:P(?:rint))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:Q(?:uit))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:\\$(?:HistoryLength|Line|Post|Pre|PrePrint|PreRead|SyntaxHandler))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"System`(?:[$[:alpha:]][$[:alnum:]]*)(?![`$[:alnum:]])",name:"invalid.illegal.system.wolfram"},{match:"(?:[$[:alpha:]][$[:alnum:]]*)(?:`(?:[$[:alpha:]][$[:alnum:]]*))+(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",name:"variable.function.wolfram"},{match:"(?:[$[:alpha:]][$[:alnum:]]*)(?:`(?:[$[:alpha:]][$[:alnum:]]*))+",name:"symbol.unrecognized.wolfram"},{match:"(?:[$[:alpha:]][$[:alnum:]]*)`",name:"invalid.illegal.wolfram"},{match:"(?:`(?:[$[:alpha:]][$[:alnum:]]*))+(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",name:"variable.function.wolfram"},{match:"(?:`(?:[$[:alpha:]][$[:alnum:]]*))+",name:"symbol.unrecognized.wolfram"},{match:"`",name:"invalid.illegal.wolfram"},{match:"(?:A(?:ASTriangle|PIFunction|RCHProcess|RIMAProcess|RMAProcess|RProcess|SATriangle|belianGroup|bort|bortKernels|bortProtect|bs|bsArg|bsArgPlot|bsoluteCorrelation|bsoluteCorrelationFunction|bsoluteCurrentValue|bsoluteDashing|bsoluteFileName|bsoluteOptions|bsolutePointSize|bsoluteThickness|bsoluteTime|bsoluteTiming|ccountingForm|ccumulate|ccuracy|cousticAbsorbingValue|cousticImpedanceValue|cousticNormalVelocityValue|cousticPDEComponent|cousticPressureCondition|cousticRadiationValue|cousticSoundHardValue|cousticSoundSoftCondition|ctionMenu|ctivate|cyclicGraphQ|ddSides|ddTo|ddUsers|djacencyGraph|djacencyList|djacencyMatrix|djacentMeshCells|djugate|djustTimeSeriesForecast|djustmentBox|dministrativeDivisionData|ffineHalfSpace|ffineSpace|ffineStateSpaceModel|ffineTransform|irPressureData|irSoundAttenuation|irTemperatureData|ircraftData|irportData|iryAi|iryAiPrime|iryAiZero|iryBi|iryBiPrime|iryBiZero|lgebraicIntegerQ|lgebraicNumber|lgebraicNumberDenominator|lgebraicNumberNorm|lgebraicNumberPolynomial|lgebraicNumberTrace|lgebraicUnitQ|llTrue|lphaChannel|lphabet|lphabeticOrder|lphabeticSort|lternatingFactorial|lternatingGroup|lternatives|mbientLight|mbiguityList|natomyData|natomyPlot3D|natomyStyling|nd|ndersonDarlingTest|ngerJ|ngleBracket|nglePath|nglePath3D|ngleVector|ngularGauge|nimate|nimator|nnotate|nnotation|nnotationDelete|nnotationKeys|nnotationValue|nnuity|nnuityDue|nnulus|nomalyDetection|nomalyDetectorFunction|ntihermitian|ntihermitianMatrixQ|ntisymmetric|ntisymmetricMatrixQ|ntonyms|nyOrder|nySubset|nyTrue|part|partSquareFree|ppellF1|ppend|ppendTo|pply|pplySides|pplyTo|rcCos|rcCosh|rcCot|rcCoth|rcCsc|rcCsch|rcCurvature|rcLength|rcSec|rcSech|rcSin|rcSinDistribution|rcSinh|rcTan|rcTanh|rea|rg|rgMax|rgMin|rgumentsOptions|rithmeticGeometricMean|rray|rrayComponents|rrayDepth|rrayFilter|rrayFlatten|rrayMesh|rrayPad|rrayPlot|rrayPlot3D|rrayQ|rrayResample|rrayReshape|rrayRules|rrays|rrow|rrowheads|ssert|ssociateTo|ssociation|ssociationMap|ssociationQ|ssociationThread|ssuming|symptotic|symptoticDSolveValue|symptoticEqual|symptoticEquivalent|symptoticExpectation|symptoticGreater|symptoticGreaterEqual|symptoticIntegrate|symptoticLess|symptoticLessEqual|symptoticOutputTracker|symptoticProbability|symptoticProduct|symptoticRSolveValue|symptoticSolve|symptoticSum|tomQ|ttributes|udio|udioAmplify|udioBlockMap|udioCapture|udioChannelCombine|udioChannelMix|udioChannelSeparate|udioChannels|udioData|udioDelay|udioDelete|udioDistance|udioFade|udioFrequencyShift|udioGenerator|udioInsert|udioIntervals|udioJoin|udioLength|udioLocalMeasurements|udioLoudness|udioMeasurements|udioNormalize|udioOverlay|udioPad|udioPan|udioPartition|udioPitchShift|udioPlot|udioQ|udioReplace|udioResample|udioReverb|udioReverse|udioSampleRate|udioSpectralMap|udioSpectralTransformation|udioSplit|udioTimeStretch|udioTrim|udioType|ugmentedPolyhedron|ugmentedSymmetricPolynomial|uthenticationDialog|utoRefreshed|utoSubmitting|utocorrelationTest))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:B(?:SplineBasis|SplineCurve|SplineFunction|SplineSurface|abyMonsterGroupB|ackslash|all|and|andpassFilter|andstopFilter|arChart|arChart3D|arLegend|arabasiAlbertGraphDistribution|arcodeImage|arcodeRecognize|aringhausHenzeTest|arlowProschanImportance|arnesG|artlettHannWindow|artlettWindow|aseDecode|aseEncode|aseForm|atesDistribution|attleLemarieWavelet|ecause|eckmannDistribution|eep|egin|eginDialogPacket|eginPackage|ellB|ellY|enfordDistribution|eniniDistribution|enktanderGibratDistribution|enktanderWeibullDistribution|ernoulliB|ernoulliDistribution|ernoulliGraphDistribution|ernoulliProcess|ernsteinBasis|esselFilterModel|esselI|esselJ|esselJZero|esselK|esselY|esselYZero|eta|etaBinomialDistribution|etaDistribution|etaNegativeBinomialDistribution|etaPrimeDistribution|etaRegularized|etween|etweennessCentrality|eveledPolyhedron|ezierCurve|ezierFunction|ilateralFilter|ilateralLaplaceTransform|ilateralZTransform|inCounts|inLists|inarize|inaryDeserialize|inaryDistance|inaryImageQ|inaryRead|inaryReadList|inarySerialize|inaryWrite|inomial|inomialDistribution|inomialProcess|inormalDistribution|iorthogonalSplineWavelet|ipartiteGraphQ|iquadraticFilterModel|irnbaumImportance|irnbaumSaundersDistribution|itAnd|itClear|itGet|itLength|itNot|itOr|itSet|itShiftLeft|itShiftRight|itXor|iweightLocation|iweightMidvariance|lackmanHarrisWindow|lackmanNuttallWindow|lackmanWindow|lank|lankNullSequence|lankSequence|lend|lock|lockMap|lockRandom|lomqvistBeta|lomqvistBetaTest|lur|lurring|odePlot|ohmanWindow|oole|ooleanConsecutiveFunction|ooleanConvert|ooleanCountingFunction|ooleanFunction|ooleanGraph|ooleanMaxterms|ooleanMinimize|ooleanMinterms|ooleanQ|ooleanRegion|ooleanTable|ooleanVariables|orderDimensions|orelTannerDistribution|ottomHatTransform|oundaryDiscretizeGraphics|oundaryDiscretizeRegion|oundaryMesh|oundaryMeshRegion|oundaryMeshRegionQ|oundedRegionQ|oundingRegion|oxData|oxMatrix|oxObject|oxWhiskerChart|racketingBar|rayCurtisDistance|readthFirstScan|reak|ridgeData|rightnessEqualize|roadcastStationData|rownForsytheTest|rownianBridgeProcess|ubbleChart|ubbleChart3D|uckyballGraph|uildingData|ulletGauge|usinessDayQ|utterflyGraph|utterworthFilterModel|utton|uttonBar|uttonBox|uttonNotebook|yteArray|yteArrayFormat|yteArrayFormatQ|yteArrayQ|yteArrayToString|yteCount))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:C(?:|DF|DFDeploy|DFWavelet|Form|MYKColor|SGRegion|SGRegionQ|SGRegionTree|alendarConvert|alendarData|allPacket|allout|anberraDistance|ancel|ancelButton|andlestickChart|anonicalGraph|anonicalName|anonicalWarpingCorrespondence|anonicalWarpingDistance|anonicalizePolygon|anonicalizePolyhedron|anonicalizeRegion|antorMesh|antorStaircase|ap|apForm|apitalDifferentialD|apitalize|apsuleShape|aputoD|arlemanLinearize|arlsonRC|arlsonRD|arlsonRE|arlsonRF|arlsonRG|arlsonRJ|arlsonRK|arlsonRM|armichaelLambda|aseSensitive|ases|ashflow|asoratian|atalanNumber|atch|atenate|auchyDistribution|auchyMatrix|auchyWindow|ayleyGraph|eiling|ell|ellGroup|ellGroupData|ellObject|ellPrint|ells|ellularAutomaton|ensoredDistribution|ensoring|enterArray|enterDot|enteredInterval|entralFeature|entralMoment|entralMomentGeneratingFunction|epstrogram|epstrogramArray|epstrumArray|hampernowneNumber|hanVeseBinarize|haracterCounts|haracterName|haracterRange|haracteristicFunction|haracteristicPolynomial|haracters|hebyshev1FilterModel|hebyshev2FilterModel|hebyshevT|hebyshevU|heck|heckAbort|heckArguments|heckbox|heckboxBar|hemicalData|hessboardDistance|hiDistribution|hiSquareDistribution|hineseRemainder|hoiceButtons|hoiceDialog|holeskyDecomposition|hop|hromaticPolynomial|hromaticityPlot|hromaticityPlot3D|ircle|ircleDot|ircleMinus|irclePlus|irclePoints|ircleThrough|ircleTimes|irculantGraph|ircularArcThrough|ircularOrthogonalMatrixDistribution|ircularQuaternionMatrixDistribution|ircularRealMatrixDistribution|ircularSymplecticMatrixDistribution|ircularUnitaryMatrixDistribution|ircumsphere|ityData|lassifierFunction|lassifierMeasurements|lassifierMeasurementsObject|lassify|lear|learAll|learAttributes|learCookies|learPermissions|learSystemCache|lebschGordan|lickPane|lickToCopy|lip|lock|lockGauge|lose|loseKernels|losenessCentrality|losing|loudAccountData|loudConnect|loudDeploy|loudDirectory|loudDisconnect|loudEvaluate|loudExport|loudFunction|loudGet|loudImport|loudLoggingData|loudObject|loudObjects|loudPublish|loudPut|loudSave|loudShare|loudSubmit|loudSymbol|loudUnshare|lusterClassify|lusteringComponents|lusteringMeasurements|lusteringTree|oefficient|oefficientArrays|oefficientList|oefficientRules|oifletWavelet|ollect|ollinearPoints|olon|olorBalance|olorCombine|olorConvert|olorData|olorDataFunction|olorDetect|olorDistance|olorNegate|olorProfileData|olorQ|olorQuantize|olorReplace|olorSeparate|olorSetter|olorSlider|olorToneMapping|olorize|olorsNear|olumn|ometData|ommonName|ommonUnits|ommonest|ommonestFilter|ommunityGraphPlot|ompanyData|ompatibleUnitQ|ompile|ompiledFunction|omplement|ompleteGraph|ompleteGraphQ|ompleteIntegral|ompleteKaryTree|omplex|omplexArrayPlot|omplexContourPlot|omplexExpand|omplexListPlot|omplexPlot|omplexPlot3D|omplexRegionPlot|omplexStreamPlot|omplexVectorPlot|omponentMeasurements|omposeList|omposeSeries|ompositeQ|omposition|ompoundElement|ompoundExpression|ompoundPoissonDistribution|ompoundPoissonProcess|ompoundRenewalProcess|ompress|oncaveHullMesh|ondition|onditionalExpression|onditioned|one|onfirm|onfirmAssert|onfirmBy|onfirmMatch|onformAudio|onformImages|ongruent|onicGradientFilling|onicHullRegion|onicOptimization|onjugate|onjugateTranspose|onjunction|onnectLibraryCallbackFunction|onnectedComponents|onnectedGraphComponents|onnectedGraphQ|onnectedMeshComponents|onnesWindow|onoverTest|onservativeConvectionPDETerm|onstantArray|onstantImage|onstantRegionQ|onstellationData|onstruct|ontainsAll|ontainsAny|ontainsExactly|ontainsNone|ontainsOnly|ontext|ontextToFileName|ontexts|ontinue|ontinuedFraction|ontinuedFractionK|ontinuousMarkovProcess|ontinuousTask|ontinuousTimeModelQ|ontinuousWaveletData|ontinuousWaveletTransform|ontourDetect|ontourPlot|ontourPlot3D|ontraharmonicMean|ontrol|ontrolActive|ontrollabilityGramian|ontrollabilityMatrix|ontrollableDecomposition|ontrollableModelQ|ontrollerInformation|ontrollerManipulate|ontrollerState|onvectionPDETerm|onvergents|onvexHullMesh|onvexHullRegion|onvexOptimization|onvexPolygonQ|onvexPolyhedronQ|onvexRegionQ|onvolve|onwayGroupCo1|onwayGroupCo2|onwayGroupCo3|oordinateBoundingBox|oordinateBoundingBoxArray|oordinateBounds|oordinateBoundsArray|oordinateChartData|oordinateTransform|oordinateTransformData|oplanarPoints|oprimeQ|oproduct|opulaDistribution|opyDatabin|opyDirectory|opyFile|opyToClipboard|oreNilpotentDecomposition|ornerFilter|orrelation|orrelationDistance|orrelationFunction|orrelationTest|os|osIntegral|osh|oshIntegral|osineDistance|osineWindow|ot|oth|oulombF|oulombG|oulombH1|oulombH2|ount|ountDistinct|ountDistinctBy|ountRoots|ountryData|ounts|ountsBy|ovariance|ovarianceFunction|oxIngersollRossProcess|oxModel|oxModelFit|oxianDistribution|ramerVonMisesTest|reateArchive|reateDatabin|reateDialog|reateDirectory|reateDocument|reateFile|reateManagedLibraryExpression|reateNotebook|reatePacletArchive|reatePalette|reatePermissionsGroup|reateUUID|reateWindow|riticalSection|riticalityFailureImportance|riticalitySuccessImportance|ross|rossMatrix|rossingCount|rossingDetect|rossingPolygon|sc|sch|ube|ubeRoot|uboid|umulant|umulantGeneratingFunction|umulativeFeatureImpactPlot|up|upCap|url|urrencyConvert|urrentDate|urrentImage|urrentValue|urvatureFlowFilter|ycleGraph|ycleIndexPolynomial|ycles|yclicGroup|yclotomic|ylinder|ylindricalDecomposition|ylindricalDecompositionFunction))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:D(?:|Eigensystem|Eigenvalues|GaussianWavelet|MSList|MSString|Solve|SolveValue|agumDistribution|amData|amerauLevenshteinDistance|arker|ashing|ataDistribution|atabin|atabinAdd|atabinUpload|atabins|ataset|ateBounds|ateDifference|ateHistogram|ateList|ateListLogPlot|ateListPlot|ateListStepPlot|ateObject|ateObjectQ|ateOverlapsQ|atePattern|atePlus|ateRange|ateScale|ateSelect|ateString|ateValue|ateWithinQ|ated|atedUnit|aubechiesWavelet|avisDistribution|awsonF|ayCount|ayHemisphere|ayMatchQ|ayName|ayNightTerminator|ayPlus|ayRange|ayRound|aylightQ|eBruijnGraph|eBruijnSequence|ecapitalize|ecimalForm|eclarePackage|ecompose|ecrement|ecrypt|edekindEta|eepSpaceProbeData|efault|efaultButton|efaultValues|efer|efineInputStreamMethod|efineOutputStreamMethod|efineResourceFunction|efinition|egreeCentrality|egreeGraphDistribution|el|elaunayMesh|elayed|elete|eleteAdjacentDuplicates|eleteAnomalies|eleteBorderComponents|eleteCases|eleteDirectory|eleteDuplicates|eleteDuplicatesBy|eleteFile|eleteMissing|eleteObject|eletePermissionsKey|eleteSmallComponents|eleteStopwords|elimitedSequence|endrogram|enominator|ensityHistogram|ensityPlot|ensityPlot3D|eploy|epth|epthFirstScan|erivative|erivativeFilter|erivativePDETerm|esignMatrix|et|eviceClose|eviceConfigure|eviceExecute|eviceExecuteAsynchronous|eviceObject|eviceOpen|eviceRead|eviceReadBuffer|eviceReadLatest|eviceReadList|eviceReadTimeSeries|eviceStreams|eviceWrite|eviceWriteBuffer|evices|iagonal|iagonalMatrix|iagonalMatrixQ|iagonalizableMatrixQ|ialog|ialogInput|ialogNotebook|ialogReturn|iamond|iamondMatrix|iceDissimilarity|ictionaryLookup|ictionaryWordQ|ifferenceDelta|ifferenceQuotient|ifferenceRoot|ifferenceRootReduce|ifferences|ifferentialD|ifferentialRoot|ifferentialRootReduce|ifferentiatorFilter|iffusionPDETerm|igitCount|igitQ|ihedralAngle|ihedralGroup|ilation|imensionReduce|imensionReducerFunction|imensionReduction|imensionalCombinations|imensionalMeshComponents|imensions|iracComb|iracDelta|irectedEdge|irectedGraph|irectedGraphQ|irectedInfinity|irectionalLight|irective|irectory|irectoryName|irectoryQ|irectoryStack|irichletBeta|irichletCharacter|irichletCondition|irichletConvolve|irichletDistribution|irichletEta|irichletL|irichletLambda|irichletTransform|irichletWindow|iscreteAsymptotic|iscreteChirpZTransform|iscreteConvolve|iscreteDelta|iscreteHadamardTransform|iscreteIndicator|iscreteInputOutputModel|iscreteLQEstimatorGains|iscreteLQRegulatorGains|iscreteLimit|iscreteLyapunovSolve|iscreteMarkovProcess|iscreteMaxLimit|iscreteMinLimit|iscretePlot|iscretePlot3D|iscreteRatio|iscreteRiccatiSolve|iscreteShift|iscreteTimeModelQ|iscreteUniformDistribution|iscreteWaveletData|iscreteWaveletPacketTransform|iscreteWaveletTransform|iscretizeGraphics|iscretizeRegion|iscriminant|isjointQ|isjunction|isk|iskMatrix|iskSegment|ispatch|isplayEndPacket|isplayForm|isplayPacket|istanceMatrix|istanceTransform|istribute|istributeDefinitions|istributed|istributionChart|istributionFitTest|istributionParameterAssumptions|istributionParameterQ|iv|ivide|ivideBy|ivideSides|ivisible|ivisorSigma|ivisorSum|ivisors|o|ocumentGenerator|ocumentGeneratorInformation|ocumentGenerators|ocumentNotebook|odecahedron|ominantColors|ominatorTreeGraph|ominatorVertexList|ot|otEqual|oubleBracketingBar|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oubleRightArrow|oubleRightTee|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|ownArrow|ownArrowBar|ownArrowUpArrow|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow|ownValues|ownsample|razinInverse|rop|ropShadowing|t|ualPlanarGraph|ualPolyhedron|ualSystemsModel|umpSave|uplicateFreeQ|uration|ynamic|ynamicGeoGraphics|ynamicModule|ynamicSetting|ynamicWrapper))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:E(?:arthImpactData|arthquakeData|ccentricityCentrality|choEvaluation|choFunction|choLabel|dgeAdd|dgeBetweennessCentrality|dgeChromaticNumber|dgeConnectivity|dgeContract|dgeCount|dgeCoverQ|dgeCycleMatrix|dgeDelete|dgeDetect|dgeForm|dgeIndex|dgeList|dgeQ|dgeRules|dgeTaggedGraph|dgeTaggedGraphQ|dgeTags|dgeTransitiveGraphQ|dgeWeightedGraphQ|ditDistance|ffectiveInterest|igensystem|igenvalues|igenvectorCentrality|igenvectors|lement|lementData|liminate|llipsoid|llipticE|llipticExp|llipticExpPrime|llipticF|llipticFilterModel|llipticK|llipticLog|llipticNomeQ|llipticPi|llipticTheta|llipticThetaPrime|mbedCode|mbeddedHTML|mbeddedService|mitSound|mpiricalDistribution|mptyGraphQ|mptyRegion|nclose|ncode|ncrypt|ncryptedObject|nd|ndDialogPacket|ndPackage|ngineeringForm|nterExpressionPacket|nterTextPacket|ntity|ntityClass|ntityClassList|ntityCopies|ntityGroup|ntityInstance|ntityList|ntityPrefetch|ntityProperties|ntityProperty|ntityPropertyClass|ntityRegister|ntityStores|ntityTypeName|ntityUnregister|ntityValue|ntropy|ntropyFilter|nvironment|qual|qualTilde|qualTo|quilibrium|quirippleFilterKernel|quivalent|rf|rfc|rfi|rlangB|rlangC|rlangDistribution|rosion|rrorBox|stimatedBackground|stimatedDistribution|stimatedPointNormals|stimatedProcess|stimatorGains|stimatorRegulator|uclideanDistance|ulerAngles|ulerCharacteristic|ulerE|ulerMatrix|ulerPhi|ulerianGraphQ|valuate|valuatePacket|valuationBox|valuationCell|valuationData|valuationNotebook|valuationObject|venQ|ventData|ventHandler|ventSeries|xactBlackmanWindow|xactNumberQ|xampleData|xcept|xists|xoplanetData|xp|xpGammaDistribution|xpIntegralE|xpIntegralEi|xpToTrig|xpand|xpandAll|xpandDenominator|xpandFileName|xpandNumerator|xpectation|xponent|xponentialDistribution|xponentialGeneratingFunction|xponentialMovingAverage|xponentialPowerDistribution|xport|xportByteArray|xportForm|xportString|xpressionCell|xpressionGraph|xtendedGCD|xternalBundle|xtract|xtractArchive|xtractPacletArchive|xtremeValueDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:F(?:ARIMAProcess|RatioDistribution|aceAlign|aceForm|acialFeatures|actor|actorInteger|actorList|actorSquareFree|actorSquareFreeList|actorTerms|actorTermsList|actorial|actorial2|actorialMoment|actorialMomentGeneratingFunction|actorialPower|ailure|ailureDistribution|ailureQ|areySequence|eatureImpactPlot|eatureNearest|eatureSpacePlot|eatureSpacePlot3D|eatureValueDependencyPlot|eatureValueImpactPlot|eedbackLinearize|etalGrowthData|ibonacci|ibonorial|ile|ileBaseName|ileByteCount|ileDate|ileExistsQ|ileExtension|ileFormat|ileFormatQ|ileHash|ileNameDepth|ileNameDrop|ileNameJoin|ileNameSetter|ileNameSplit|ileNameTake|ileNames|ilePrint|ileSize|ileSystemMap|ileSystemScan|ileTemplate|ileTemplateApply|ileType|illedCurve|illedTorus|illingTransform|ilterRules|inancialBond|inancialData|inancialDerivative|inancialIndicator|ind|indAnomalies|indArgMax|indArgMin|indClique|indClusters|indCookies|indCurvePath|indCycle|indDevices|indDistribution|indDistributionParameters|indDivisions|indEdgeColoring|indEdgeCover|indEdgeCut|indEdgeIndependentPaths|indEulerianCycle|indFaces|indFile|indFit|indFormula|indFundamentalCycles|indGeneratingFunction|indGeoLocation|indGeometricTransform|indGraphCommunities|indGraphIsomorphism|indGraphPartition|indHamiltonianCycle|indHamiltonianPath|indHiddenMarkovStates|indIndependentEdgeSet|indIndependentVertexSet|indInstance|indIntegerNullVector|indIsomorphicSubgraph|indKClan|indKClique|indKClub|indKPlex|indLibrary|indLinearRecurrence|indList|indMatchingColor|indMaxValue|indMaximum|indMaximumCut|indMaximumFlow|indMeshDefects|indMinValue|indMinimum|indMinimumCostFlow|indMinimumCut|indPath|indPeaks|indPermutation|indPlanarColoring|indPostmanTour|indProcessParameters|indRegionTransform|indRepeat|indRoot|indSequenceFunction|indShortestPath|indShortestTour|indSpanningTree|indSubgraphIsomorphism|indThreshold|indTransientRepeat|indVertexColoring|indVertexCover|indVertexCut|indVertexIndependentPaths|inishDynamic|initeAbelianGroupCount|initeGroupCount|initeGroupData|irst|irstCase|irstPassageTimeDistribution|irstPosition|ischerGroupFi22|ischerGroupFi23|ischerGroupFi24Prime|isherHypergeometricDistribution|isherRatioTest|isherZDistribution|it|ittedModel|ixedOrder|ixedPoint|ixedPointList|latShading|latTopWindow|latten|lattenAt|lightData|lipView|loor|lowPolynomial|old|oldList|oldPair|oldPairList|oldWhile|oldWhileList|or|orAll|ormBox|ormFunction|ormObject|ormPage|ormat|ormulaData|ormulaLookup|ortranForm|ourier|ourierCoefficient|ourierCosCoefficient|ourierCosSeries|ourierCosTransform|ourierDCT|ourierDCTFilter|ourierDCTMatrix|ourierDST|ourierDSTMatrix|ourierMatrix|ourierSequenceTransform|ourierSeries|ourierSinCoefficient|ourierSinSeries|ourierSinTransform|ourierTransform|ourierTrigSeries|oxH|ractionBox|ractionalBrownianMotionProcess|ractionalD|ractionalGaussianNoiseProcess|ractionalPart|rameBox|ramed|rechetDistribution|reeQ|renetSerretSystem|requencySamplingFilterKernel|resnelC|resnelF|resnelG|resnelS|robeniusNumber|robeniusSolve|romAbsoluteTime|romCharacterCode|romCoefficientRules|romContinuedFraction|romDMS|romDateString|romDigits|romEntity|romJulianDate|romLetterNumber|romPolarCoordinates|romRomanNumeral|romSphericalCoordinates|romUnixTime|rontEndExecute|rontEndToken|rontEndTokenExecute|ullDefinition|ullForm|ullGraphics|ullInformationOutputRegulator|ullRegion|ullSimplify|unction|unctionAnalytic|unctionBijective|unctionContinuous|unctionConvexity|unctionDiscontinuities|unctionDomain|unctionExpand|unctionInjective|unctionInterpolation|unctionMeromorphic|unctionMonotonicity|unctionPeriod|unctionRange|unctionSign|unctionSingularities|unctionSurjective|ussellVeselyImportance))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:G(?:ARCHProcess|CD|aborFilter|aborMatrix|aborWavelet|ainMargins|ainPhaseMargins|alaxyData|amma|ammaDistribution|ammaRegularized|ather|atherBy|aussianFilter|aussianMatrix|aussianOrthogonalMatrixDistribution|aussianSymplecticMatrixDistribution|aussianUnitaryMatrixDistribution|aussianWindow|egenbauerC|eneralizedLinearModelFit|enerateAsymmetricKeyPair|enerateDocument|enerateHTTPResponse|enerateSymmetricKey|eneratingFunction|enericCylindricalDecomposition|enomeData|enomeLookup|eoAntipode|eoArea|eoBoundary|eoBoundingBox|eoBounds|eoBoundsRegion|eoBoundsRegionBoundary|eoBubbleChart|eoCircle|eoContourPlot|eoDensityPlot|eoDestination|eoDirection|eoDisk|eoDisplacement|eoDistance|eoDistanceList|eoElevationData|eoEntities|eoGraphPlot|eoGraphics|eoGridDirectionDifference|eoGridPosition|eoGridUnitArea|eoGridUnitDistance|eoGridVector|eoGroup|eoHemisphere|eoHemisphereBoundary|eoHistogram|eoIdentify|eoImage|eoLength|eoListPlot|eoMarker|eoNearest|eoPath|eoPolygon|eoPosition|eoPositionENU|eoPositionXYZ|eoProjectionData|eoRegionValuePlot|eoSmoothHistogram|eoStreamPlot|eoStyling|eoVariant|eoVector|eoVectorENU|eoVectorPlot|eoVectorXYZ|eoVisibleRegion|eoVisibleRegionBoundary|eoWithinQ|eodesicClosing|eodesicDilation|eodesicErosion|eodesicOpening|eodesicPolyhedron|eodesyData|eogravityModelData|eologicalPeriodData|eomagneticModelData|eometricBrownianMotionProcess|eometricDistribution|eometricMean|eometricMeanFilter|eometricOptimization|eometricTransformation|estureHandler|et|etEnvironment|lobalClusteringCoefficient|low|ompertzMakehamDistribution|oochShading|oodmanKruskalGamma|oodmanKruskalGammaTest|oto|ouraudShading|rad|radientFilter|radientFittedMesh|radientOrientationFilter|rammarApply|rammarRules|rammarToken|raph|raph3D|raphAssortativity|raphAutomorphismGroup|raphCenter|raphComplement|raphData|raphDensity|raphDiameter|raphDifference|raphDisjointUnion|raphDistance|raphDistanceMatrix|raphEmbedding|raphHub|raphIntersection|raphJoin|raphLinkEfficiency|raphPeriphery|raphPlot|raphPlot3D|raphPower|raphProduct|raphPropertyDistribution|raphQ|raphRadius|raphReciprocity|raphSum|raphUnion|raphics|raphics3D|raphicsColumn|raphicsComplex|raphicsGrid|raphicsGroup|raphicsRow|rayLevel|reater|reaterEqual|reaterEqualLess|reaterEqualThan|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterThan|reaterTilde|reenFunction|rid|ridBox|ridGraph|roebnerBasis|roupBy|roupCentralizer|roupElementFromWord|roupElementPosition|roupElementQ|roupElementToWord|roupElements|roupGenerators|roupMultiplicationTable|roupOrbits|roupOrder|roupSetwiseStabilizer|roupStabilizer|roupStabilizerChain|roupings|rowCutComponents|udermannian|uidedFilter|umbelDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:H(?:ITSCentrality|TTPErrorResponse|TTPRedirect|TTPRequest|TTPRequestData|TTPResponse|aarWavelet|adamardMatrix|alfLine|alfNormalDistribution|alfPlane|alfSpace|alftoneShading|amiltonianGraphQ|ammingDistance|ammingWindow|ankelH1|ankelH2|ankelMatrix|ankelTransform|annPoissonWindow|annWindow|aradaNortonGroupHN|araryGraph|armonicMean|armonicMeanFilter|armonicNumber|ash|atchFilling|atchShading|aversine|azardFunction|ead|eatFluxValue|eatInsulationValue|eatOutflowValue|eatRadiationValue|eatSymmetryValue|eatTemperatureCondition|eatTransferPDEComponent|eatTransferValue|eavisideLambda|eavisidePi|eavisideTheta|eldGroupHe|elmholtzPDEComponent|ermiteDecomposition|ermiteH|ermitian|ermitianMatrixQ|essenbergDecomposition|eunB|eunBPrime|eunC|eunCPrime|eunD|eunDPrime|eunG|eunGPrime|eunT|eunTPrime|exahedron|iddenMarkovProcess|ighlightGraph|ighlightImage|ighlightMesh|ighlighted|ighpassFilter|igmanSimsGroupHS|ilbertCurve|ilbertFilter|ilbertMatrix|istogram|istogram3D|istogramDistribution|istogramList|istogramTransform|istogramTransformInterpolation|istoricalPeriodData|itMissTransform|jorthDistribution|odgeDual|oeffdingD|oeffdingDTest|old|oldComplete|oldForm|oldPattern|orizontalGauge|ornerForm|ostLookup|otellingTSquareDistribution|oytDistribution|ue|umanGrowthData|umpDownHump|umpEqual|urwitzLerchPhi|urwitzZeta|yperbolicDistribution|ypercubeGraph|yperexponentialDistribution|yperfactorial|ypergeometric0F1|ypergeometric0F1Regularized|ypergeometric1F1|ypergeometric1F1Regularized|ypergeometric2F1|ypergeometric2F1Regularized|ypergeometricDistribution|ypergeometricPFQ|ypergeometricPFQRegularized|ypergeometricU|yperlink|yperplane|ypoexponentialDistribution|ypothesisTestData))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:I(?:PAddress|conData|conize|cosahedron|dentity|dentityMatrix|f|fCompiled|gnoringInactive|m|mage|mage3D|mage3DProjection|mage3DSlices|mageAccumulate|mageAdd|mageAdjust|mageAlign|mageApply|mageApplyIndexed|mageAspectRatio|mageAssemble|mageCapture|mageChannels|mageClip|mageCollage|mageColorSpace|mageCompose|mageConvolve|mageCooccurrence|mageCorners|mageCorrelate|mageCorrespondingPoints|mageCrop|mageData|mageDeconvolve|mageDemosaic|mageDifference|mageDimensions|mageDisplacements|mageDistance|mageEffect|mageExposureCombine|mageFeatureTrack|mageFileApply|mageFileFilter|mageFileScan|mageFilter|mageFocusCombine|mageForestingComponents|mageForwardTransformation|mageHistogram|mageIdentify|mageInstanceQ|mageKeypoints|mageLevels|mageLines|mageMarker|mageMeasurements|mageMesh|mageMultiply|magePad|magePartition|magePeriodogram|magePerspectiveTransformation|mageQ|mageRecolor|mageReflect|mageResize|mageRestyle|mageRotate|mageSaliencyFilter|mageScaled|mageScan|mageSubtract|mageTake|mageTransformation|mageTrim|mageType|mageValue|mageValuePositions|mageVectorscopePlot|mageWaveformPlot|mplicitD|mplicitRegion|mplies|mport|mportByteArray|mportString|mprovementImportance|nactivate|nactive|ncidenceGraph|ncidenceList|ncidenceMatrix|ncrement|ndefiniteMatrixQ|ndependenceTest|ndependentEdgeSetQ|ndependentPhysicalQuantity|ndependentUnit|ndependentUnitDimension|ndependentVertexSetQ|ndexEdgeTaggedGraph|ndexGraph|ndexed|nexactNumberQ|nfiniteLine|nfiniteLineThrough|nfinitePlane|nfix|nflationAdjust|nformation|nhomogeneousPoissonProcess|nner|nnerPolygon|nnerPolyhedron|npaint|nput|nputField|nputForm|nputNamePacket|nputNotebook|nputPacket|nputStream|nputString|nputStringPacket|nsert|nsertLinebreaks|nset|nsphere|nstall|nstallService|ntegerDigits|ntegerExponent|ntegerLength|ntegerName|ntegerPart|ntegerPartitions|ntegerQ|ntegerReverse|ntegerString|ntegrate|nteractiveTradingChart|nternallyBalancedDecomposition|nterpolatingFunction|nterpolatingPolynomial|nterpolation|nterpretation|nterpretationBox|nterpreter|nterquartileRange|nterrupt|ntersectingQ|ntersection|nterval|ntervalIntersection|ntervalMemberQ|ntervalSlider|ntervalUnion|nverse|nverseBetaRegularized|nverseBilateralLaplaceTransform|nverseBilateralZTransform|nverseCDF|nverseChiSquareDistribution|nverseContinuousWaveletTransform|nverseDistanceTransform|nverseEllipticNomeQ|nverseErf|nverseErfc|nverseFourier|nverseFourierCosTransform|nverseFourierSequenceTransform|nverseFourierSinTransform|nverseFourierTransform|nverseFunction|nverseGammaDistribution|nverseGammaRegularized|nverseGaussianDistribution|nverseGudermannian|nverseHankelTransform|nverseHaversine|nverseJacobiCD|nverseJacobiCN|nverseJacobiCS|nverseJacobiDC|nverseJacobiDN|nverseJacobiDS|nverseJacobiNC|nverseJacobiND|nverseJacobiNS|nverseJacobiSC|nverseJacobiSD|nverseJacobiSN|nverseLaplaceTransform|nverseMellinTransform|nversePermutation|nverseRadon|nverseRadonTransform|nverseSeries|nverseShortTimeFourier|nverseSpectrogram|nverseSurvivalFunction|nverseTransformedRegion|nverseWaveletTransform|nverseWeierstrassP|nverseWishartMatrixDistribution|nverseZTransform|nvisible|rreduciblePolynomialQ|slandData|solatingInterval|somorphicGraphQ|somorphicSubgraphQ|sotopeData|tem|toProcess))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:J(?:accardDissimilarity|acobiAmplitude|acobiCD|acobiCN|acobiCS|acobiDC|acobiDN|acobiDS|acobiEpsilon|acobiNC|acobiND|acobiNS|acobiP|acobiSC|acobiSD|acobiSN|acobiSymbol|acobiZN|acobiZeta|ankoGroupJ1|ankoGroupJ2|ankoGroupJ3|ankoGroupJ4|arqueBeraALMTest|ohnsonDistribution|oin|oinAcross|oinForm|oinedCurve|ordanDecomposition|ordanModelDecomposition|uliaSetBoettcher|uliaSetIterationCount|uliaSetPlot|uliaSetPoints|ulianDate))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:K(?:CoreComponents|Distribution|EdgeConnectedComponents|EdgeConnectedGraphQ|VertexConnectedComponents|VertexConnectedGraphQ|agiChart|aiserBesselWindow|aiserWindow|almanEstimator|almanFilter|arhunenLoeveDecomposition|aryTree|atzCentrality|elvinBei|elvinBer|elvinKei|elvinKer|endallTau|endallTauTest|ernelMixtureDistribution|ernelObject|ernels|ey|eyComplement|eyDrop|eyDropFrom|eyExistsQ|eyFreeQ|eyIntersection|eyMap|eyMemberQ|eySelect|eySort|eySortBy|eyTake|eyUnion|eyValueMap|eyValuePattern|eys|illProcess|irchhoffGraph|irchhoffMatrix|leinInvariantJ|napsackSolve|nightTourGraph|notData|nownUnitQ|ochCurve|olmogorovSmirnovTest|roneckerDelta|roneckerModelDecomposition|roneckerProduct|roneckerSymbol|uiperTest|umaraswamyDistribution|urtosis|uwaharaFilter))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:L(?:ABColor|CHColor|CM|QEstimatorGains|QGRegulator|QOutputRegulatorGains|QRegulatorGains|UDecomposition|UVColor|abel|abeled|aguerreL|akeData|ambdaComponents|ameC|ameCPrime|ameEigenvalueA|ameEigenvalueB|ameS|ameSPrime|aminaData|anczosWindow|andauDistribution|anguageData|anguageIdentify|aplaceDistribution|aplaceTransform|aplacian|aplacianFilter|aplacianGaussianFilter|aplacianPDETerm|ast|atitude|atitudeLongitude|atticeData|atticeReduce|aunchKernels|ayeredGraphPlot|ayeredGraphPlot3D|eafCount|eapVariant|eapYearQ|earnDistribution|earnedDistribution|eastSquares|eastSquaresFilterKernel|eftArrow|eftArrowBar|eftArrowRightArrow|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftRightArrow|eftRightVector|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|egended|egendreP|egendreQ|ength|engthWhile|erchPhi|ess|essEqual|essEqualGreater|essEqualThan|essFullEqual|essGreater|essLess|essSlantEqual|essThan|essTilde|etterCounts|etterNumber|etterQ|evel|eveneTest|eviCivitaTensor|evyDistribution|exicographicOrder|exicographicSort|ibraryDataType|ibraryFunction|ibraryFunctionError|ibraryFunctionInformation|ibraryFunctionLoad|ibraryFunctionUnload|ibraryLoad|ibraryUnload|iftingFilterData|iftingWaveletTransform|ighter|ikelihood|imit|indleyDistribution|ine|ineBreakChart|ineGraph|ineIntegralConvolutionPlot|ineLegend|inearFractionalOptimization|inearFractionalTransform|inearGradientFilling|inearGradientImage|inearModelFit|inearOptimization|inearRecurrence|inearSolve|inearSolveFunction|inearizingTransformationData|inkActivate|inkClose|inkConnect|inkCreate|inkInterrupt|inkLaunch|inkObject|inkPatterns|inkRankCentrality|inkRead|inkReadyQ|inkWrite|inks|iouvilleLambda|ist|istAnimate|istContourPlot|istContourPlot3D|istConvolve|istCorrelate|istCurvePathPlot|istDeconvolve|istDensityPlot|istDensityPlot3D|istFourierSequenceTransform|istInterpolation|istLineIntegralConvolutionPlot|istLinePlot|istLinePlot3D|istLogLinearPlot|istLogLogPlot|istLogPlot|istPicker|istPickerBox|istPlay|istPlot|istPlot3D|istPointPlot3D|istPolarPlot|istQ|istSliceContourPlot3D|istSliceDensityPlot3D|istSliceVectorPlot3D|istStepPlot|istStreamDensityPlot|istStreamPlot|istStreamPlot3D|istSurfacePlot3D|istVectorDensityPlot|istVectorDisplacementPlot|istVectorDisplacementPlot3D|istVectorPlot|istVectorPlot3D|istZTransform|ocalAdaptiveBinarize|ocalCache|ocalClusteringCoefficient|ocalEvaluate|ocalObject|ocalObjects|ocalSubmit|ocalSymbol|ocalTime|ocalTimeZone|ocationEquivalenceTest|ocationTest|ocator|ocatorPane|og|og10|og2|ogBarnesG|ogGamma|ogGammaDistribution|ogIntegral|ogLikelihood|ogLinearPlot|ogLogPlot|ogLogisticDistribution|ogMultinormalDistribution|ogNormalDistribution|ogPlot|ogRankTest|ogSeriesDistribution|ogicalExpand|ogisticDistribution|ogisticSigmoid|ogitModelFit|ongLeftArrow|ongLeftRightArrow|ongRightArrow|ongest|ongestCommonSequence|ongestCommonSequencePositions|ongestCommonSubsequence|ongestCommonSubsequencePositions|ongestOrderedSequence|ongitude|ookup|oopFreeGraphQ|owerCaseQ|owerLeftArrow|owerRightArrow|owerTriangularMatrix|owerTriangularMatrixQ|owerTriangularize|owpassFilter|ucasL|uccioSamiComponents|unarEclipse|yapunovSolve|yonsGroupLy))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:M(?:AProcess|achineNumberQ|agnify|ailReceiverFunction|ajority|akeBoxes|akeExpression|anagedLibraryExpressionID|anagedLibraryExpressionQ|andelbrotSetBoettcher|andelbrotSetDistance|andelbrotSetIterationCount|andelbrotSetMemberQ|andelbrotSetPlot|angoldtLambda|anhattanDistance|anipulate|anipulator|annWhitneyTest|annedSpaceMissionData|antissaExponent|ap|apAll|apApply|apAt|apIndexed|apThread|archenkoPasturDistribution|arcumQ|ardiaCombinedTest|ardiaKurtosisTest|ardiaSkewnessTest|arginalDistribution|arkovProcessProperties|assConcentrationCondition|assFluxValue|assImpermeableBoundaryValue|assOutflowValue|assSymmetryValue|assTransferValue|assTransportPDEComponent|atchQ|atchingDissimilarity|aterialShading|athMLForm|athematicalFunctionData|athieuC|athieuCPrime|athieuCharacteristicA|athieuCharacteristicB|athieuCharacteristicExponent|athieuGroupM11|athieuGroupM12|athieuGroupM22|athieuGroupM23|athieuGroupM24|athieuS|athieuSPrime|atrices|atrixExp|atrixForm|atrixFunction|atrixLog|atrixNormalDistribution|atrixPlot|atrixPower|atrixPropertyDistribution|atrixQ|atrixRank|atrixTDistribution|ax|axDate|axDetect|axFilter|axLimit|axMemoryUsed|axStableDistribution|axValue|aximalBy|aximize|axwellDistribution|cLaughlinGroupMcL|ean|eanClusteringCoefficient|eanDegreeConnectivity|eanDeviation|eanFilter|eanGraphDistance|eanNeighborDegree|eanShift|eanShiftFilter|edian|edianDeviation|edianFilter|edicalTestData|eijerG|eijerGReduce|eixnerDistribution|ellinConvolve|ellinTransform|emberQ|emoryAvailable|emoryConstrained|emoryInUse|engerMesh|enuPacket|enuView|erge|ersennePrimeExponent|ersennePrimeExponentQ|eshCellCount|eshCellIndex|eshCells|eshConnectivityGraph|eshCoordinates|eshPrimitives|eshRegion|eshRegionQ|essage|essageDialog|essageList|essageName|essagePacket|essages|eteorShowerData|exicanHatWavelet|eyerWavelet|in|inDate|inDetect|inFilter|inLimit|inMax|inStableDistribution|inValue|ineralData|inimalBy|inimalPolynomial|inimalStateSpaceModel|inimize|inimumTimeIncrement|inkowskiQuestionMark|inorPlanetData|inors|inus|inusPlus|issing|issingQ|ittagLefflerE|ixedFractionParts|ixedGraphQ|ixedMagnitude|ixedRadix|ixedRadixQuantity|ixedUnit|ixtureDistribution|od|odelPredictiveController|odularInverse|odularLambda|odule|oebiusMu|oment|omentConvert|omentEvaluate|omentGeneratingFunction|omentOfInertia|onitor|onomialList|onsterGroupM|oonPhase|oonPosition|orletWavelet|orphologicalBinarize|orphologicalBranchPoints|orphologicalComponents|orphologicalEulerNumber|orphologicalGraph|orphologicalPerimeter|orphologicalTransform|ortalityData|ost|ountainData|ouseAnnotation|ouseAppearance|ousePosition|ouseover|ovieData|ovingAverage|ovingMap|ovingMedian|oyalDistribution|ulticolumn|ultigraphQ|ultinomial|ultinomialDistribution|ultinormalDistribution|ultiplicativeOrder|ultiplySides|ultivariateHypergeometricDistribution|ultivariatePoissonDistribution|ultivariateTDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:N(?:|ArgMax|ArgMin|Cache|CaputoD|DEigensystem|DEigenvalues|DSolve|DSolveValue|Expectation|FractionalD|Integrate|MaxValue|Maximize|MinValue|Minimize|Probability|Product|Roots|Solve|SolveValues|Sum|akagamiDistribution|ameQ|ames|and|earest|earestFunction|earestMeshCells|earestNeighborGraph|earestTo|ebulaData|eedlemanWunschSimilarity|eeds|egative|egativeBinomialDistribution|egativeDefiniteMatrixQ|egativeMultinomialDistribution|egativeSemidefiniteMatrixQ|egativelyOrientedPoints|eighborhoodData|eighborhoodGraph|est|estGraph|estList|estWhile|estWhileList|estedGreaterGreater|estedLessLess|eumannValue|evilleThetaC|evilleThetaD|evilleThetaN|evilleThetaS|extCell|extDate|extPrime|icholsPlot|ightHemisphere|onCommutativeMultiply|onNegative|onPositive|oncentralBetaDistribution|oncentralChiSquareDistribution|oncentralFRatioDistribution|oncentralStudentTDistribution|ondimensionalizationTransform|oneTrue|onlinearModelFit|onlinearStateSpaceModel|onlocalMeansFilter|or|orlundB|orm|ormal|ormalDistribution|ormalMatrixQ|ormalize|ormalizedSquaredEuclideanDistance|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|otebook|otebookApply|otebookClose|otebookDelete|otebookDirectory|otebookEvaluate|otebookFileName|otebookFind|otebookGet|otebookImport|otebookInformation|otebookLocate|otebookObject|otebookOpen|otebookPrint|otebookPut|otebookRead|otebookSave|otebookSelection|otebookTemplate|otebookWrite|otebooks|othing|uclearExplosionData|uclearReactorData|ullSpace|umberCompose|umberDecompose|umberDigit|umberExpand|umberFieldClassNumber|umberFieldDiscriminant|umberFieldFundamentalUnits|umberFieldIntegralBasis|umberFieldNormRepresentatives|umberFieldRegulator|umberFieldRootsOfUnity|umberFieldSignature|umberForm|umberLinePlot|umberQ|umerator|umeratorDenominator|umericQ|umericalOrder|umericalSort|uttallWindow|yquistPlot))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:O(?:|NanGroupON|bservabilityGramian|bservabilityMatrix|bservableDecomposition|bservableModelQ|ceanData|ctahedron|ddQ|ff|ffset|n|nce|pacity|penAppend|penRead|penWrite|pener|penerView|pening|perate|ptimumFlowData|ptionValue|ptional|ptionalElement|ptions|ptionsPattern|r|rder|rderDistribution|rderedQ|rdering|rderingBy|rderlessPatternSequence|rnsteinUhlenbeckProcess|rthogonalMatrixQ|rthogonalize|uter|uterPolygon|uterPolyhedron|utputControllabilityMatrix|utputControllableModelQ|utputForm|utputNamePacket|utputResponse|utputStream|verBar|verDot|verHat|verTilde|verVector|verflow|verlay|verscript|verscriptBox|wenT|wnValues))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:P(?:DF|ERTDistribution|IDTune|acletDataRebuild|acletDirectoryLoad|acletDirectoryUnload|acletDisable|acletEnable|acletFind|acletFindRemote|acletInstall|acletInstallSubmit|acletNewerQ|acletObject|acletSiteObject|acletSiteRegister|acletSiteUnregister|acletSiteUpdate|acletSites|acletUninstall|adLeft|adRight|addedForm|adeApproximant|ageRankCentrality|airedBarChart|airedHistogram|airedSmoothHistogram|airedTTest|airedZTest|aletteNotebook|alindromeQ|ane|aneSelector|anel|arabolicCylinderD|arallelArray|arallelAxisPlot|arallelCombine|arallelDo|arallelEvaluate|arallelKernels|arallelMap|arallelNeeds|arallelProduct|arallelSubmit|arallelSum|arallelTable|arallelTry|arallelepiped|arallelize|arallelogram|arameterMixtureDistribution|arametricConvexOptimization|arametricFunction|arametricNDSolve|arametricNDSolveValue|arametricPlot|arametricPlot3D|arametricRegion|arentBox|arentCell|arentDirectory|arentNotebook|aretoDistribution|aretoPickandsDistribution|arkData|art|artOfSpeech|artialCorrelationFunction|articleAcceleratorData|articleData|artition|artitionsP|artitionsQ|arzenWindow|ascalDistribution|aste|asteButton|athGraph|athGraphQ|attern|atternSequence|atternTest|aulWavelet|auliMatrix|ause|eakDetect|eanoCurve|earsonChiSquareTest|earsonCorrelationTest|earsonDistribution|ercentForm|erfectNumber|erfectNumberQ|erimeter|eriodicBoundaryCondition|eriodogram|eriodogramArray|ermanent|ermissionsGroup|ermissionsGroupMemberQ|ermissionsGroups|ermissionsKey|ermissionsKeys|ermutationCycles|ermutationCyclesQ|ermutationGroup|ermutationLength|ermutationList|ermutationListQ|ermutationMatrix|ermutationMax|ermutationMin|ermutationOrder|ermutationPower|ermutationProduct|ermutationReplace|ermutationSupport|ermutations|ermute|eronaMalikFilter|ersonData|etersenGraph|haseMargins|hongShading|hysicalSystemData|ick|ieChart|ieChart3D|iecewise|iecewiseExpand|illaiTrace|illaiTraceTest|ingTime|ixelValue|ixelValuePositions|laced|laceholder|lanarAngle|lanarFaceList|lanarGraph|lanarGraphQ|lanckRadiationLaw|laneCurveData|lanetData|lanetaryMoonData|lantData|lay|lot|lot3D|luralize|lus|lusMinus|ochhammer|oint|ointFigureChart|ointLegend|ointLight|ointSize|oissonConsulDistribution|oissonDistribution|oissonPDEComponent|oissonProcess|oissonWindow|olarPlot|olyGamma|olyLog|olyaAeppliDistribution|olygon|olygonAngle|olygonCoordinates|olygonDecomposition|olygonalNumber|olyhedron|olyhedronAngle|olyhedronCoordinates|olyhedronData|olyhedronDecomposition|olyhedronGenus|olynomialExpressionQ|olynomialExtendedGCD|olynomialGCD|olynomialLCM|olynomialMod|olynomialQ|olynomialQuotient|olynomialQuotientRemainder|olynomialReduce|olynomialRemainder|olynomialSumOfSquaresList|opupMenu|opupView|opupWindow|osition|ositionIndex|ositionLargest|ositionSmallest|ositive|ositiveDefiniteMatrixQ|ositiveSemidefiniteMatrixQ|ositivelyOrientedPoints|ossibleZeroQ|ostfix|ower|owerDistribution|owerExpand|owerMod|owerModList|owerRange|owerSpectralDensity|owerSymmetricPolynomial|owersRepresentations|reDecrement|reIncrement|recedenceForm|recedes|recedesEqual|recedesSlantEqual|recedesTilde|recision|redict|redictorFunction|redictorMeasurements|redictorMeasurementsObject|reemptProtect|refix|repend|rependTo|reviousCell|reviousDate|riceGraphDistribution|rime|rimeNu|rimeOmega|rimePi|rimePowerQ|rimeQ|rimeZetaP|rimitivePolynomialQ|rimitiveRoot|rimitiveRootList|rincipalComponents|rintTemporary|rintableASCIIQ|rintout3D|rism|rivateKey|robability|robabilityDistribution|robabilityPlot|robabilityScalePlot|robitModelFit|rocessConnection|rocessInformation|rocessObject|rocessParameterAssumptions|rocessParameterQ|rocessStatus|rocesses|roduct|roductDistribution|roductLog|rogressIndicator|rojection|roportion|roportional|rotect|roteinData|runing|seudoInverse|sychrometricPropertyData|ublicKey|ulsarData|ut|utAppend|yramid))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:Q(?:Binomial|Factorial|Gamma|HypergeometricPFQ|Pochhammer|PolyGamma|RDecomposition|nDispersion|uadraticIrrationalQ|uadraticOptimization|uantile|uantilePlot|uantity|uantityArray|uantityDistribution|uantityForm|uantityMagnitude|uantityQ|uantityUnit|uantityVariable|uantityVariableCanonicalUnit|uantityVariableDimensions|uantityVariableIdentifier|uantityVariablePhysicalQuantity|uartileDeviation|uartileSkewness|uartiles|uery|ueueProperties|ueueingNetworkProcess|ueueingProcess|uiet|uietEcho|uotient|uotientRemainder))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:R(?:GBColor|Solve|SolveValue|adialAxisPlot|adialGradientFilling|adialGradientImage|adialityCentrality|adicalBox|adioButton|adioButtonBar|adon|adonTransform|amanujanTau|amanujanTauL|amanujanTauTheta|amanujanTauZ|amp|andomChoice|andomColor|andomComplex|andomDate|andomEntity|andomFunction|andomGeneratorState|andomGeoPosition|andomGraph|andomImage|andomInteger|andomPermutation|andomPoint|andomPolygon|andomPolyhedron|andomPrime|andomReal|andomSample|andomTime|andomVariate|andomWalkProcess|andomWord|ange|angeFilter|ankedMax|ankedMin|arerProbability|aster|aster3D|asterize|ational|ationalExpressionQ|ationalize|atios|awBoxes|awData|ayleighDistribution|e|eIm|eImPlot|eactionPDETerm|ead|eadByteArray|eadLine|eadList|eadString|ealAbs|ealDigits|ealExponent|ealSign|eap|econstructionMesh|ectangle|ectangleChart|ectangleChart3D|ectangularRepeatingElement|ecurrenceFilter|ecurrenceTable|educe|efine|eflectionMatrix|eflectionTransform|efresh|egion|egionBinarize|egionBoundary|egionBounds|egionCentroid|egionCongruent|egionConvert|egionDifference|egionDilation|egionDimension|egionDisjoint|egionDistance|egionDistanceFunction|egionEmbeddingDimension|egionEqual|egionErosion|egionFit|egionImage|egionIntersection|egionMeasure|egionMember|egionMemberFunction|egionMoment|egionNearest|egionNearestFunction|egionPlot|egionPlot3D|egionProduct|egionQ|egionResize|egionSimilar|egionSymmetricDifference|egionUnion|egionWithin|egularExpression|egularPolygon|egularlySampledQ|elationGraph|eleaseHold|eliabilityDistribution|eliefImage|eliefPlot|emove|emoveAlphaChannel|emoveBackground|emoveDiacritics|emoveInputStreamMethod|emoveOutputStreamMethod|emoveUsers|enameDirectory|enameFile|enewalProcess|enkoChart|epairMesh|epeated|epeatedNull|epeatedTiming|epeatingElement|eplace|eplaceAll|eplaceAt|eplaceImageValue|eplaceList|eplacePart|eplacePixelValue|eplaceRepeated|esamplingAlgorithmData|escale|escalingTransform|esetDirectory|esidue|esidueSum|esolve|esourceData|esourceObject|esourceSearch|esponseForm|est|estricted|esultant|eturn|eturnExpressionPacket|eturnPacket|eturnTextPacket|everse|everseBiorthogonalSplineWavelet|everseElement|everseEquilibrium|everseGraph|everseSort|everseSortBy|everseUpEquilibrium|evolutionPlot3D|iccatiSolve|iceDistribution|idgeFilter|iemannR|iemannSiegelTheta|iemannSiegelZ|iemannXi|iffle|ightArrow|ightArrowBar|ightArrowLeftArrow|ightComposition|ightCosetRepresentative|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|iskAchievementImportance|iskReductionImportance|obustConvexOptimization|ogersTanimotoDissimilarity|ollPitchYawAngles|ollPitchYawMatrix|omanNumeral|oot|ootApproximant|ootIntervals|ootLocusPlot|ootMeanSquare|ootOfUnityQ|ootReduce|ootSum|oots|otate|otateLeft|otateRight|otationMatrix|otationTransform|ound|ow|owBox|owReduce|udinShapiro|udvalisGroupRu|ule|uleDelayed|ulePlot|un|unProcess|unThrough|ussellRaoDissimilarity))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:S(?:ARIMAProcess|ARMAProcess|ASTriangle|SSTriangle|ameAs|ameQ|ampledSoundFunction|ampledSoundList|atelliteData|atisfiabilityCount|atisfiabilityInstances|atisfiableQ|ave|avitzkyGolayMatrix|awtoothWave|cale|caled|calingMatrix|calingTransform|can|cheduledTask|churDecomposition|cientificForm|corerGi|corerGiPrime|corerHi|corerHiPrime|ec|ech|echDistribution|econdOrderConeOptimization|ectorChart|ectorChart3D|eedRandom|elect|electComponents|electFirst|electedCells|electedNotebook|electionCreateCell|electionEvaluate|electionEvaluateCreateCell|electionMove|emanticImport|emanticImportString|emanticInterpretation|emialgebraicComponentInstances|emidefiniteOptimization|endMail|endMessage|equence|equenceAlignment|equenceCases|equenceCount|equenceFold|equenceFoldList|equencePosition|equenceReplace|equenceSplit|eries|eriesCoefficient|eriesData|erviceConnect|erviceDisconnect|erviceExecute|erviceObject|essionSubmit|essionTime|et|etAccuracy|etAlphaChannel|etAttributes|etCloudDirectory|etCookies|etDelayed|etDirectory|etEnvironment|etFileDate|etOptions|etPermissions|etPrecision|etSelectedNotebook|etSharedFunction|etSharedVariable|etStreamPosition|etSystemOptions|etUsers|etter|etterBar|etting|hallow|hannonWavelet|hapiroWilkTest|hare|harpen|hearingMatrix|hearingTransform|hellRegion|henCastanMatrix|hiftRegisterSequence|hiftedGompertzDistribution|hort|hortDownArrow|hortLeftArrow|hortRightArrow|hortTimeFourier|hortTimeFourierData|hortUpArrow|hortest|hortestPathFunction|how|iderealTime|iegelTheta|iegelTukeyTest|ierpinskiCurve|ierpinskiMesh|ign|ignTest|ignature|ignedRankTest|ignedRegionDistance|impleGraph|impleGraphQ|implePolygonQ|implePolyhedronQ|implex|implify|in|inIntegral|inc|inghMaddalaDistribution|ingularValueDecomposition|ingularValueList|ingularValuePlot|inh|inhIntegral|ixJSymbol|keleton|keletonTransform|kellamDistribution|kewNormalDistribution|kewness|kip|liceContourPlot3D|liceDensityPlot3D|liceDistribution|liceVectorPlot3D|lideView|lider|lider2D|liderBox|lot|lotSequence|mallCircle|mithDecomposition|mithDelayCompensator|mithWatermanSimilarity|moothDensityHistogram|moothHistogram|moothHistogram3D|moothKernelDistribution|nDispersion|ocketConnect|ocketListen|ocketListener|ocketObject|ocketOpen|ocketReadMessage|ocketReadyQ|ocketWaitAll|ocketWaitNext|ockets|okalSneathDissimilarity|olarEclipse|olarSystemFeatureData|olarTime|olidAngle|olidData|olidRegionQ|olve|olveAlways|olveValues|ort|ortBy|ound|oundNote|ourcePDETerm|ow|paceCurveData|pacer|pan|parseArray|parseArrayQ|patialGraphDistribution|patialMedian|peak|pearmanRankTest|pearmanRho|peciesData|pectralLineData|pectrogram|pectrogramArray|pecularity|peechSynthesize|pellingCorrectionList|phere|pherePoints|phericalBesselJ|phericalBesselY|phericalHankelH1|phericalHankelH2|phericalHarmonicY|phericalPlot3D|phericalShell|pheroidalEigenvalue|pheroidalJoiningFactor|pheroidalPS|pheroidalPSPrime|pheroidalQS|pheroidalQSPrime|pheroidalRadialFactor|pheroidalS1|pheroidalS1Prime|pheroidalS2|pheroidalS2Prime|plicedDistribution|plit|plitBy|pokenString|potLight|qrt|qrtBox|quare|quareFreeQ|quareIntersection|quareMatrixQ|quareRepeatingElement|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|quareWave|quaredEuclideanDistance|quaresR|tableDistribution|tack|tackBegin|tackComplete|tackInhibit|tackedDateListPlot|tackedListPlot|tadiumShape|tandardAtmosphereData|tandardDeviation|tandardDeviationFilter|tandardForm|tandardOceanData|tandardize|tandbyDistribution|tar|tarClusterData|tarData|tarGraph|tartProcess|tateFeedbackGains|tateOutputEstimator|tateResponse|tateSpaceModel|tateSpaceTransform|tateTransformationLinearize|tationaryDistribution|tationaryWaveletPacketTransform|tationaryWaveletTransform|tatusArea|tatusCentrality|tieltjesGamma|tippleShading|tirlingS1|tirlingS2|toppingPowerData|tratonovichProcess|treamDensityPlot|treamPlot|treamPlot3D|treamPosition|treams|tringCases|tringContainsQ|tringCount|tringDelete|tringDrop|tringEndsQ|tringExpression|tringExtract|tringForm|tringFormat|tringFormatQ|tringFreeQ|tringInsert|tringJoin|tringLength|tringMatchQ|tringPadLeft|tringPadRight|tringPart|tringPartition|tringPosition|tringQ|tringRepeat|tringReplace|tringReplaceList|tringReplacePart|tringReverse|tringRiffle|tringRotateLeft|tringRotateRight|tringSkeleton|tringSplit|tringStartsQ|tringTake|tringTakeDrop|tringTemplate|tringToByteArray|tringToStream|tringTrim|tripBoxes|tructuralImportance|truveH|truveL|tudentTDistribution|tyle|tyleBox|tyleData|ubMinus|ubPlus|ubStar|ubValues|ubdivide|ubfactorial|ubgraph|ubresultantPolynomialRemainders|ubresultantPolynomials|ubresultants|ubscript|ubscriptBox|ubsequences|ubset|ubsetEqual|ubsetMap|ubsetQ|ubsets|ubstitutionSystem|ubsuperscript|ubsuperscriptBox|ubtract|ubtractFrom|ubtractSides|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uccess|uchThat|um|umConvergence|unPosition|unrise|unset|uperDagger|uperMinus|uperPlus|uperStar|upernovaData|uperscript|uperscriptBox|uperset|upersetEqual|urd|urfaceArea|urfaceData|urvivalDistribution|urvivalFunction|urvivalModel|urvivalModelFit|uzukiDistribution|uzukiGroupSuz|watchLegend|witch|ymbol|ymbolName|ymletWavelet|ymmetric|ymmetricGroup|ymmetricKey|ymmetricMatrixQ|ymmetricPolynomial|ymmetricReduction|ymmetrize|ymmetrizedArray|ymmetrizedArrayRules|ymmetrizedDependentComponents|ymmetrizedIndependentComponents|ymmetrizedReplacePart|ynonyms|yntaxInformation|yntaxLength|yntaxPacket|yntaxQ|ystemDialogInput|ystemInformation|ystemOpen|ystemOptions|ystemProcessData|ystemProcesses|ystemsConnectionsModel|ystemsModelControllerData|ystemsModelDelay|ystemsModelDelayApproximate|ystemsModelDelete|ystemsModelDimensions|ystemsModelExtract|ystemsModelFeedbackConnect|ystemsModelLinearity|ystemsModelMerge|ystemsModelOrder|ystemsModelParallelConnect|ystemsModelSeriesConnect|ystemsModelStateFeedbackConnect|ystemsModelVectorRelativeOrders))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:T(?:Test|abView|able|ableForm|agBox|agSet|agSetDelayed|agUnset|ake|akeDrop|akeLargest|akeLargestBy|akeList|akeSmallest|akeSmallestBy|akeWhile|ally|an|anh|askAbort|askExecute|askObject|askRemove|askResume|askSuspend|askWait|asks|autologyQ|eXForm|elegraphProcess|emplateApply|emplateBox|emplateExpression|emplateIf|emplateObject|emplateSequence|emplateSlot|emplateWith|emporalData|ensorContract|ensorDimensions|ensorExpand|ensorProduct|ensorRank|ensorReduce|ensorSymmetry|ensorTranspose|ensorWedge|erminatedEvaluation|estReport|estReportObject|estResultObject|etrahedron|ext|extCell|extData|extGrid|extPacket|extRecognize|extSentences|extString|extTranslation|extWords|exture|herefore|hermodynamicData|hermometerGauge|hickness|hinning|hompsonGroupTh|hread|hreeJSymbol|hreshold|hrough|hrow|hueMorse|humbnail|ideData|ilde|ildeEqual|ildeFullEqual|ildeTilde|imeConstrained|imeObject|imeObjectQ|imeRemaining|imeSeries|imeSeriesAggregate|imeSeriesForecast|imeSeriesInsert|imeSeriesInvertibility|imeSeriesMap|imeSeriesMapThread|imeSeriesModel|imeSeriesModelFit|imeSeriesResample|imeSeriesRescale|imeSeriesShift|imeSeriesThread|imeSeriesWindow|imeSystemConvert|imeUsed|imeValue|imeZoneConvert|imeZoneOffset|imelinePlot|imes|imesBy|iming|itsGroupT|oBoxes|oCharacterCode|oContinuousTimeModel|oDiscreteTimeModel|oEntity|oExpression|oInvertibleTimeSeries|oLowerCase|oNumberField|oPolarCoordinates|oRadicals|oRules|oSphericalCoordinates|oString|oUpperCase|oeplitzMatrix|ogether|oggler|ogglerBar|ooltip|oonShading|opHatTransform|opologicalSort|orus|orusGraph|otal|otalVariationFilter|ouchPosition|r|race|raceDialog|racePrint|raceScan|racyWidomDistribution|radingChart|raditionalForm|ransferFunctionCancel|ransferFunctionExpand|ransferFunctionFactor|ransferFunctionModel|ransferFunctionPoles|ransferFunctionTransform|ransferFunctionZeros|ransformationFunction|ransformationMatrix|ransformedDistribution|ransformedField|ransformedProcess|ransformedRegion|ransitiveClosureGraph|ransitiveReductionGraph|ranslate|ranslationTransform|ransliterate|ranspose|ravelDirections|ravelDirectionsData|ravelDistance|ravelDistanceList|ravelTime|reeForm|reeGraph|reeGraphQ|reePlot|riangle|riangleWave|riangularDistribution|riangulateMesh|rigExpand|rigFactor|rigFactorList|rigReduce|rigToExp|rigger|rimmedMean|rimmedVariance|ropicalStormData|rueQ|runcatedDistribution|runcatedPolyhedron|sallisQExponentialDistribution|sallisQGaussianDistribution|ube|ukeyLambdaDistribution|ukeyWindow|unnelData|uples|uranGraph|uringMachine|uttePolynomial|woWayRule|ypeHint))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:U(?:RL|RLBuild|RLDecode|RLDispatcher|RLDownload|RLEncode|RLExecute|RLExpand|RLParse|RLQueryDecode|RLQueryEncode|RLRead|RLResponseTime|RLShorten|RLSubmit|nateQ|ncompress|nderBar|nderflow|nderoverscript|nderoverscriptBox|nderscript|nderscriptBox|nderseaFeatureData|ndirectedEdge|ndirectedGraph|ndirectedGraphQ|nequal|nequalTo|nevaluated|niformDistribution|niformGraphDistribution|niformPolyhedron|niformSumDistribution|ninstall|nion|nionPlus|nique|nitBox|nitConvert|nitDimensions|nitRootTest|nitSimplify|nitStep|nitTriangle|nitVector|nitaryMatrixQ|nitize|niverseModelData|niversityData|nixTime|nprotect|nsameQ|nset|nsetShared|ntil|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pSet|pSetDelayed|pTee|pTeeArrow|pTo|pValues|pdate|pperCaseQ|pperLeftArrow|pperRightArrow|pperTriangularMatrix|pperTriangularMatrixQ|pperTriangularize|psample|singFrontEnd))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:V(?:alueQ|alues|ariables|ariance|arianceEquivalenceTest|arianceGammaDistribution|arianceTest|ectorAngle|ectorDensityPlot|ectorDisplacementPlot|ectorDisplacementPlot3D|ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ectorPlot|ectorPlot3D|ectorQ|ectors|ee|erbatim|erificationTest|ertexAdd|ertexChromaticNumber|ertexComponent|ertexConnectivity|ertexContract|ertexCorrelationSimilarity|ertexCosineSimilarity|ertexCount|ertexCoverQ|ertexDegree|ertexDelete|ertexDiceSimilarity|ertexEccentricity|ertexInComponent|ertexInComponentGraph|ertexInDegree|ertexIndex|ertexJaccardSimilarity|ertexList|ertexOutComponent|ertexOutComponentGraph|ertexOutDegree|ertexQ|ertexReplace|ertexTransitiveGraphQ|ertexWeightedGraphQ|erticalBar|erticalGauge|erticalSeparator|erticalSlider|erticalTilde|oiceStyleData|oigtDistribution|olcanoData|olume|onMisesDistribution|oronoiMesh))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:W(?:aitAll|aitNext|akebyDistribution|alleniusHypergeometricDistribution|aringYuleDistribution|arpingCorrespondence|arpingDistance|atershedComponents|atsonUSquareTest|attsStrogatzGraphDistribution|avePDEComponent|aveletBestBasis|aveletFilterCoefficients|aveletImagePlot|aveletListPlot|aveletMapIndexed|aveletMatrixPlot|aveletPhi|aveletPsi|aveletScalogram|aveletThreshold|eakStationarity|eaklyConnectedComponents|eaklyConnectedGraphComponents|eaklyConnectedGraphQ|eatherData|eatherForecastData|eberE|edge|eibullDistribution|eierstrassE1|eierstrassE2|eierstrassE3|eierstrassEta1|eierstrassEta2|eierstrassEta3|eierstrassHalfPeriodW1|eierstrassHalfPeriodW2|eierstrassHalfPeriodW3|eierstrassHalfPeriods|eierstrassInvariantG2|eierstrassInvariantG3|eierstrassInvariants|eierstrassP|eierstrassPPrime|eierstrassSigma|eierstrassZeta|eightedAdjacencyGraph|eightedAdjacencyMatrix|eightedData|eightedGraphQ|elchWindow|heelGraph|henEvent|hich|hile|hiteNoiseProcess|hittakerM|hittakerW|ienerFilter|ienerProcess|ignerD|ignerSemicircleDistribution|ikipediaData|ilksW|ilksWTest|indDirectionData|indSpeedData|indVectorData|indingCount|indingPolygon|insorizedMean|insorizedVariance|ishartMatrixDistribution|ith|olframAlpha|olframLanguageData|ordCloud|ordCount|ordCounts|ordData|ordDefinition|ordFrequency|ordFrequencyData|ordList|ordStem|ordTranslation|rite|riteLine|riteString|ronskian))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:X(?:MLElement|MLObject|MLTemplate|YZColor|nor|or))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:Y(?:uleDissimilarity))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:Z(?:IPCodeData|Test|Transform|ernikeR|eroSymmetric|eta|etaZero|ipfDistribution))(?![`$[:alnum:]])",name:"support.function.builtin.wolfram"},{match:"(?:A(?:cceptanceThreshold|ccuracyGoal|ctiveStyle|ddOnHelpPath|djustmentBoxOptions|lignment|lignmentPoint|llowGroupClose|llowInlineCells|llowLooseGrammar|llowReverseGroupClose|llowScriptLevelChange|llowVersionUpdate|llowedCloudExtraParameters|llowedCloudParameterExtensions|llowedDimensions|llowedFrequencyRange|llowedHeads|lternativeHypothesis|ltitudeMethod|mbiguityFunction|natomySkinStyle|nchoredSearch|nimationDirection|nimationRate|nimationRepetitions|nimationRunTime|nimationRunning|nimationTimeIndex|nnotationRules|ntialiasing|ppearance|ppearanceElements|ppearanceRules|spectRatio|ssociationFormat|ssumptions|synchronous|ttachedCell|udioChannelAssignment|udioEncoding|udioInputDevice|udioLabel|udioOutputDevice|uthentication|utoAction|utoCopy|utoDelete|utoGeneratedPackage|utoIndent|utoItalicWords|utoMultiplicationSymbol|utoOpenNotebooks|utoOpenPalettes|utoOperatorRenderings|utoRemove|utoScroll|utoSpacing|utoloadPath|utorunSequencing|xes|xesEdge|xesLabel|xesOrigin|xesStyle))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:B(?:ackground|arOrigin|arSpacing|aseStyle|aselinePosition|inaryFormat|ookmarks|ooleanStrings|oundaryStyle|oxBaselineShift|oxFormFormatTypes|oxFrame|oxMargins|oxRatios|oxStyle|oxed|ubbleScale|ubbleSizes|uttonBoxOptions|uttonData|uttonFunction|uttonMinHeight|uttonSource|yteOrdering))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:C(?:alendarType|alloutMarker|alloutStyle|aptureRunning|aseOrdering|elestialSystem|ellAutoOverwrite|ellBaseline|ellBracketOptions|ellChangeTimes|ellContext|ellDingbat|ellDingbatMargin|ellDynamicExpression|ellEditDuplicate|ellEpilog|ellEvaluationDuplicate|ellEvaluationFunction|ellEventActions|ellFrame|ellFrameColor|ellFrameLabelMargins|ellFrameLabels|ellFrameMargins|ellGrouping|ellGroupingRules|ellHorizontalScrolling|ellID|ellLabel|ellLabelAutoDelete|ellLabelMargins|ellLabelPositioning|ellLabelStyle|ellLabelTemplate|ellMargins|ellOpen|ellProlog|ellSize|ellTags|haracterEncoding|haracterEncodingsPath|hartBaseStyle|hartElementFunction|hartElements|hartLabels|hartLayout|hartLegends|hartStyle|lassPriors|lickToCopyEnabled|lipPlanes|lipPlanesStyle|lipRange|lippingStyle|losingAutoSave|loudBase|loudObjectNameFormat|loudObjectURLType|lusterDissimilarityFunction|odeAssistOptions|olorCoverage|olorFunction|olorFunctionBinning|olorFunctionScaling|olorRules|olorSelectorSettings|olorSpace|olumnAlignments|olumnLines|olumnSpacings|olumnWidths|olumnsEqual|ombinerFunction|ommonDefaultFormatTypes|ommunityBoundaryStyle|ommunityLabels|ommunityRegionStyle|ompilationOptions|ompilationTarget|ompiled|omplexityFunction|ompressionLevel|onfidenceLevel|onfidenceRange|onfidenceTransform|onfigurationPath|onstants|ontentPadding|ontentSelectable|ontentSize|ontinuousAction|ontourLabels|ontourShading|ontourStyle|ontours|ontrolPlacement|ontrolType|ontrollerLinking|ontrollerMethod|ontrollerPath|ontrolsRendering|onversionRules|ookieFunction|oordinatesToolOptions|opyFunction|opyable|ornerNeighbors|ounterAssignments|ounterFunction|ounterIncrements|ounterStyleMenuListing|ovarianceEstimatorFunction|reateCellID|reateIntermediateDirectories|riterionFunction|ubics|urveClosed))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:D(?:ataRange|ataReversed|atasetTheme|ateFormat|ateFunction|ateGranularity|ateReduction|ateTicksFormat|ayCountConvention|efaultDuplicateCellStyle|efaultDuration|efaultElement|efaultFontProperties|efaultFormatType|efaultInlineFormatType|efaultNaturalLanguage|efaultNewCellStyle|efaultNewInlineCellStyle|efaultNotebook|efaultOptions|efaultPrintPrecision|efaultStyleDefinitions|einitialization|eletable|eleteContents|eletionWarning|elimiterAutoMatching|elimiterFlashTime|elimiterMatching|elimiters|eliveryFunction|ependentVariables|eployed|escriptorStateSpace|iacriticalPositioning|ialogProlog|ialogSymbols|igitBlock|irectedEdges|irection|iscreteVariables|ispersionEstimatorFunction|isplayAllSteps|isplayFunction|istanceFunction|istributedContexts|ithering|ividers|ockedCell|ockedCells|ynamicEvaluationTimeout|ynamicModuleValues|ynamicUpdating))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:E(?:clipseType|dgeCapacity|dgeCost|dgeLabelStyle|dgeLabels|dgeShapeFunction|dgeStyle|dgeValueRange|dgeValueSizes|dgeWeight|ditCellTagsSettings|ditable|lidedForms|nabled|pilog|pilogFunction|scapeRadius|valuatable|valuationCompletionAction|valuationElements|valuationMonitor|valuator|valuatorNames|ventLabels|xcludePods|xcludedContexts|xcludedForms|xcludedLines|xcludedPhysicalQuantities|xclusions|xclusionsStyle|xponentFunction|xponentPosition|xponentStep|xponentialFamily|xportAutoReplacements|xpressionUUID|xtension|xtentElementFunction|xtentMarkers|xtentSize|xternalDataCharacterEncoding|xternalOptions|xternalTypeSignature))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:F(?:aceGrids|aceGridsStyle|ailureAction|eatureNames|eatureTypes|eedbackSector|eedbackSectorStyle|eedbackType|ieldCompletionFunction|ieldHint|ieldHintStyle|ieldMasked|ieldSize|ileNameDialogSettings|ileNameForms|illing|illingStyle|indSettings|itRegularization|ollowRedirects|ontColor|ontFamily|ontSize|ontSlant|ontSubstitutions|ontTracking|ontVariations|ontWeight|orceVersionInstall|ormBoxOptions|ormLayoutFunction|ormProtectionMethod|ormatType|ormatTypeAutoConvert|ourierParameters|ractionBoxOptions|ractionLine|rame|rameBoxOptions|rameLabel|rameMargins|rameRate|rameStyle|rameTicks|rameTicksStyle|rontEndEventActions|unctionSpace))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:G(?:apPenalty|augeFaceElementFunction|augeFaceStyle|augeFrameElementFunction|augeFrameSize|augeFrameStyle|augeLabels|augeMarkers|augeStyle|aussianIntegers|enerateConditions|eneratedCell|eneratedDocumentBinding|eneratedParameters|eneratedQuantityMagnitudes|eneratorDescription|eneratorHistoryLength|eneratorOutputType|eoArraySize|eoBackground|eoCenter|eoGridLines|eoGridLinesStyle|eoGridRange|eoGridRangePadding|eoLabels|eoLocation|eoModel|eoProjection|eoRange|eoRangePadding|eoResolution|eoScaleBar|eoServer|eoStylingImageFunction|eoZoomLevel|radient|raphHighlight|raphHighlightStyle|raphLayerStyle|raphLayers|raphLayout|ridCreationSettings|ridDefaultElement|ridFrame|ridFrameMargins|ridLines|ridLinesStyle|roupActionBase|roupPageBreakWithin))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:H(?:eaderAlignment|eaderBackground|eaderDisplayFunction|eaderLines|eaderSize|eaderStyle|eads|elpBrowserSettings|iddenItems|olidayCalendar|yperlinkAction|yphenation))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:I(?:conRules|gnoreCase|gnoreDiacritics|gnorePunctuation|mageCaptureFunction|mageFormattingWidth|mageLabels|mageLegends|mageMargins|magePadding|magePreviewFunction|mageRegion|mageResolution|mageSize|mageSizeAction|mageSizeMultipliers|magingDevice|mportAutoReplacements|mportOptions|ncludeConstantBasis|ncludeDefinitions|ncludeDirectories|ncludeFileExtension|ncludeGeneratorTasks|ncludeInflections|ncludeMetaInformation|ncludePods|ncludeQuantities|ncludeSingularSolutions|ncludeWindowTimes|ncludedContexts|ndeterminateThreshold|nflationMethod|nheritScope|nitialSeeding|nitialization|nitializationCell|nitializationCellEvaluation|nitializationCellWarning|nputAliases|nputAssumptions|nputAutoReplacements|nsertResults|nsertionFunction|nteractive|nterleaving|nterpolationOrder|nterpolationPoints|nterpretationBoxOptions|nterpretationFunction|ntervalMarkers|ntervalMarkersStyle|nverseFunctions|temAspectRatio|temDisplayFunction|temSize|temStyle))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:J(?:oined))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:K(?:eepExistingVersion|eyCollisionFunction|eypointStrength))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:L(?:abelStyle|abelVisibility|abelingFunction|abelingSize|anguage|anguageCategory|ayerSizeFunction|eaderSize|earningRate|egendAppearance|egendFunction|egendLabel|egendLayout|egendMargins|egendMarkerSize|egendMarkers|ighting|ightingAngle|imitsPositioning|imitsPositioningTokens|ineBreakWithin|ineIndent|ineIndentMaxFraction|ineIntegralConvolutionScale|ineSpacing|inearOffsetFunction|inebreakAdjustments|inkFunction|inkProtocol|istFormat|istPickerBoxOptions|ocalizeVariables|ocatorAutoCreate|ocatorRegion|ooping))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:M(?:agnification|ailAddressValidation|ailResponseFunction|ailSettings|asking|atchLocalNames|axCellMeasure|axColorDistance|axDuration|axExtraBandwidths|axExtraConditions|axFeatureDisplacement|axFeatures|axItems|axIterations|axMixtureKernels|axOverlapFraction|axPlotPoints|axRecursion|axStepFraction|axStepSize|axSteps|emoryConstraint|enuCommandKey|enuSortingValue|enuStyle|esh|eshCellHighlight|eshCellLabel|eshCellMarker|eshCellShapeFunction|eshCellStyle|eshFunctions|eshQualityGoal|eshRefinementFunction|eshShading|eshStyle|etaInformation|ethod|inColorDistance|inIntervalSize|inPointSeparation|issingBehavior|issingDataMethod|issingDataRules|issingString|issingStyle|odal|odulus|ultiaxisArrangement|ultiedgeStyle|ultilaunchWarning|ultilineFunction|ultiselection))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:N(?:icholsGridLines|ominalVariables|onConstants|ormFunction|ormalized|ormalsFunction|otebookAutoSave|otebookBrowseDirectory|otebookConvertSettings|otebookDynamicExpression|otebookEventActions|otebookPath|otebooksMenu|otificationFunction|ullRecords|ullWords|umberFormat|umberMarks|umberMultiplier|umberPadding|umberPoint|umberSeparator|umberSigns|yquistGridLines))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:O(?:pacityFunction|pacityFunctionScaling|peratingSystem|ptionInspectorSettings|utputAutoOverwrite|utputSizeLimit|verlaps|verscriptBoxOptions|verwriteTarget))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:P(?:IDDerivativeFilter|IDFeedforward|acletSite|adding|addingSize|ageBreakAbove|ageBreakBelow|ageBreakWithin|ageFooterLines|ageFooters|ageHeaderLines|ageHeaders|ageTheme|ageWidth|alettePath|aneled|aragraphIndent|aragraphSpacing|arallelization|arameterEstimator|artBehavior|artitionGranularity|assEventsDown|assEventsUp|asteBoxFormInlineCells|ath|erformanceGoal|ermissions|haseRange|laceholderReplace|layRange|lotLabel|lotLabels|lotLayout|lotLegends|lotMarkers|lotPoints|lotRange|lotRangeClipping|lotRangePadding|lotRegion|lotStyle|lotTheme|odStates|odWidth|olarAxes|olarAxesOrigin|olarGridLines|olarTicks|oleZeroMarkers|recisionGoal|referencesPath|reprocessingRules|reserveColor|reserveImageOptions|rincipalValue|rintAction|rintPrecision|rintingCopies|rintingOptions|rintingPageRange|rintingStartingPageNumber|rintingStyleEnvironment|rintout3DPreviewer|rivateCellOptions|rivateEvaluationOptions|rivateFontOptions|rivateNotebookOptions|rivatePaths|rocessDirectory|rocessEnvironment|rocessEstimator|rogressReporting|rolog|ropagateAborts))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:Q(?:uartics))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:R(?:adicalBoxOptions|andomSeeding|asterSize|eImLabels|eImStyle|ealBlockDiagonalForm|ecognitionPrior|ecordLists|ecordSeparators|eferenceLineStyle|efreshRate|egionBoundaryStyle|egionFillingStyle|egionFunction|egionSize|egularization|enderingOptions|equiredPhysicalQuantities|esampling|esamplingMethod|esolveContextAliases|estartInterval|eturnReceiptFunction|evolutionAxis|otateLabel|otationAction|oundingRadius|owAlignments|owLines|owMinHeight|owSpacings|owsEqual|ulerUnits|untimeAttributes|untimeOptions))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:S(?:ameTest|ampleDepth|ampleRate|amplingPeriod|aveConnection|aveDefinitions|aveable|caleDivisions|caleOrigin|calePadding|caleRangeStyle|caleRanges|calingFunctions|cientificNotationThreshold|creenStyleEnvironment|criptBaselineShifts|criptLevel|criptMinSize|criptSizeMultipliers|crollPosition|crollbars|crollingOptions|ectorOrigin|ectorSpacing|electable|elfLoopStyle|eriesTermGoal|haringList|howAutoSpellCheck|howAutoStyles|howCellBracket|howCellLabel|howCellTags|howClosedCellArea|howContents|howCursorTracker|howGroupOpener|howPageBreaks|howSelection|howShortBoxForm|howSpecialCharacters|howStringCharacters|hrinkingDelay|ignPadding|ignificanceLevel|imilarityRules|ingleLetterItalics|liderBoxOptions|ortedBy|oundVolume|pacings|panAdjustments|panCharacterRounding|panLineThickness|panMaxSize|panMinSize|panSymmetric|pecificityGoal|pellingCorrection|pellingDictionaries|pellingDictionariesPath|pellingOptions|phericalRegion|plineClosed|plineDegree|plineKnots|plineWeights|qrtBoxOptions|tabilityMargins|tabilityMarginsStyle|tandardized|tartingStepSize|tateSpaceRealization|tepMonitor|trataVariables|treamColorFunction|treamColorFunctionScaling|treamMarkers|treamPoints|treamScale|treamStyle|trictInequalities|tripOnInput|tripWrapperBoxes|tructuredSelection|tyleBoxAutoDelete|tyleDefinitions|tyleHints|tyleMenuListing|tyleNameDialogSettings|tyleSheetPath|ubscriptBoxOptions|ubsuperscriptBoxOptions|ubtitleEncoding|uperscriptBoxOptions|urdForm|ynchronousInitialization|ynchronousUpdating|yntaxForm|ystemHelpPath|ystemsModelLabels))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:T(?:abFilling|abSpacings|ableAlignments|ableDepth|ableDirections|ableHeadings|ableSpacing|agBoxOptions|aggingRules|argetFunctions|argetUnits|emplateBoxOptions|emporalRegularity|estID|extAlignment|extClipboardType|extJustification|extureCoordinateFunction|extureCoordinateScaling|icks|icksStyle|imeConstraint|imeDirection|imeFormat|imeGoal|imeSystem|imeZone|okenWords|olerance|ooltipDelay|ooltipStyle|otalWidth|ouchscreenAutoZoom|ouchscreenControlPlacement|raceAbove|raceBackward|raceDepth|raceForward|raceOff|raceOn|raceOriginal|rackedSymbols|rackingFunction|raditionalFunctionNotation|ransformationClass|ransformationFunctions|ransitionDirection|ransitionDuration|ransitionEffect|ranslationOptions|ravelMethod|rendStyle|rig))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:U(?:nderoverscriptBoxOptions|nderscriptBoxOptions|ndoOptions|ndoTrackedVariables|nitSystem|nityDimensions|nsavedVariables|pdateInterval|pdatePacletSites|tilityFunction))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:V(?:alidationLength|alidationSet|alueDimensions|arianceEstimatorFunction|ectorAspectRatio|ectorColorFunction|ectorColorFunctionScaling|ectorMarkers|ectorPoints|ectorRange|ectorScaling|ectorSizes|ectorStyle|erifyConvergence|erifySecurityCertificates|erifySolutions|erifyTestAssumptions|ersionedPreferences|ertexCapacity|ertexColors|ertexCoordinates|ertexDataCoordinates|ertexLabelStyle|ertexLabels|ertexNormals|ertexShape|ertexShapeFunction|ertexSize|ertexStyle|ertexTextureCoordinates|ertexWeight|ideoEncoding|iewAngle|iewCenter|iewMatrix|iewPoint|iewProjection|iewRange|iewVector|iewVertical|isible))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:W(?:aveletScale|eights|hitePoint|indowClickSelect|indowElements|indowFloating|indowFrame|indowFrameElements|indowMargins|indowOpacity|indowSize|indowStatusArea|indowTitle|indowToolbars|ordOrientation|ordSearch|ordSelectionFunction|ordSeparators|ordSpacings|orkingPrecision|rapAround))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:Z(?:eroTest|eroWidthTimes))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:A(?:bove|fter|lgebraics|ll|nonymous|utomatic|xis))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:B(?:ack|ackward|aseline|efore|elow|lack|lue|old|ooleans|ottom|oxes|rown|yte))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:C(?:atalan|ellStyle|enter|haracter|omplexInfinity|omplexes|onstant|yan))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:D(?:ashed|efaultAxesStyle|efaultBaseStyle|efaultBoxStyle|efaultFaceGridsStyle|efaultFieldHintStyle|efaultFrameStyle|efaultFrameTicksStyle|efaultGridLinesStyle|efaultLabelStyle|efaultMenuStyle|efaultTicksStyle|efaultTooltipStyle|egree|elimiter|igitCharacter|otDashed|otted))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:E(?:|ndOfBuffer|ndOfFile|ndOfLine|ndOfString|ulerGamma|xpression))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:F(?:alse|lat|ontProperties|orward|orwardBackward|riday|ront|rontEndDynamicExpression|ull))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:G(?:eneral|laisher|oldenAngle|oldenRatio|ray|reen))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:H(?:ere|exadecimalCharacter|oldAll|oldAllComplete|oldFirst|oldRest))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:I(?:|ndeterminate|nfinity|nherited|nteger|ntegers|talic))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:K(?:hinchin))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:L(?:arge|arger|eft|etterCharacter|ightBlue|ightBrown|ightCyan|ightGray|ightGreen|ightMagenta|ightOrange|ightPink|ightPurple|ightRed|ightYellow|istable|ocked))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:M(?:achinePrecision|agenta|anual|edium|eshCellCentroid|eshCellMeasure|eshCellQuality|onday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:N(?:HoldAll|HoldFirst|HoldRest|egativeIntegers|egativeRationals|egativeReals|oWhitespace|onNegativeIntegers|onNegativeRationals|onNegativeReals|onPositiveIntegers|onPositiveRationals|onPositiveReals|one|ow|ull|umber|umberString|umericFunction))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:O(?:neIdentity|range|rderless))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:P(?:i|ink|lain|ositiveIntegers|ositiveRationals|ositiveReals|rimes|rotected|unctuationCharacter|urple))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:R(?:ationals|eadProtected|eal|eals|ecord|ed|ight))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:S(?:aturday|equenceHold|mall|maller|panFromAbove|panFromBoth|panFromLeft|tartOfLine|tartOfString|tring|truckthrough|tub|unday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:T(?:emporary|hick|hin|hursday|iny|oday|omorrow|op|ransparent|rue|uesday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:U(?:ndefined|nderlined))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:W(?:ednesday|hite|hitespace|hitespaceCharacter|ord|ordBoundary|ordCharacter))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:Y(?:ellow|esterday))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:\\$(?:Aborted|ActivationKey|AllowDataUpdates|AllowInternet|AssertFunction|Assumptions|AudioInputDevices|AudioOutputDevices|BaseDirectory|BasePacletsDirectory|BatchInput|BatchOutput|ByteOrdering|CacheBaseDirectory|Canceled|CharacterEncoding|CharacterEncodings|CloudAccountName|CloudBase|CloudConnected|CloudCreditsAvailable|CloudEvaluation|CloudExpressionBase|CloudObjectNameFormat|CloudObjectURLType|CloudRootDirectory|CloudSymbolBase|CloudUserID|CloudUserUUID|CloudVersion|CommandLine|CompilationTarget|Context|ContextAliases|ContextPath|ControlActiveSetting|Cookies|CreationDate|CurrentLink|CurrentTask|DateStringFormat|DefaultAudioInputDevice|DefaultAudioOutputDevice|DefaultFrontEnd|DefaultImagingDevice|DefaultKernels|DefaultLocalBase|DefaultLocalKernel|Display|DisplayFunction|DistributedContexts|DynamicEvaluation|Echo|EmbedCodeEnvironments|EmbeddableServices|Epilog|EvaluationCloudBase|EvaluationCloudObject|EvaluationEnvironment|ExportFormats|Failed|FontFamilies|FrontEnd|FrontEndSession|GeoLocation|GeoLocationCity|GeoLocationCountry|GeoLocationSource|HomeDirectory|IgnoreEOF|ImageFormattingWidth|ImageResolution|ImagingDevice|ImagingDevices|ImportFormats|InitialDirectory|Input|InputFileName|InputStreamMethods|Inspector|InstallationDirectory|InterpreterTypes|IterationLimit|KernelCount|KernelID|Language|LibraryPath|LicenseExpirationDate|LicenseID|LicenseServer|Linked|LocalBase|LocalSymbolBase|MachineAddresses|MachineDomains|MachineEpsilon|MachineID|MachineName|MachinePrecision|MachineType|MaxExtraPrecision|MaxMachineNumber|MaxNumber|MaxPiecewiseCases|MaxPrecision|MaxRootDegree|MessageGroups|MessageList|MessagePrePrint|Messages|MinMachineNumber|MinNumber|MinPrecision|MobilePhone|ModuleNumber|NetworkConnected|NewMessage|NewSymbol|NotebookInlineStorageLimit|Notebooks|NumberMarks|OperatingSystem|Output|OutputSizeLimit|OutputStreamMethods|Packages|ParentLink|ParentProcessID|PasswordFile|Path|PathnameSeparator|PerformanceGoal|Permissions|PlotTheme|Printout3DPreviewer|ProcessID|ProcessorCount|ProcessorType|ProgressReporting|RandomGeneratorState|RecursionLimit|ReleaseNumber|RequesterAddress|RequesterCloudUserID|RequesterCloudUserUUID|RequesterWolframID|RequesterWolframUUID|RootDirectory|ScriptCommandLine|ScriptInputString|Services|SessionID|SharedFunctions|SharedVariables|SoundDisplayFunction|SynchronousEvaluation|System|SystemCharacterEncoding|SystemID|SystemShell|SystemTimeZone|SystemWordLength|TemplatePath|TemporaryDirectory|TimeUnit|TimeZone|TimeZoneEntity|TimedOut|UnitSystem|Urgent|UserAgentString|UserBaseDirectory|UserBasePacletsDirectory|UserDocumentsDirectory|UserURLBase|Username|Version|VersionNumber|WolframDocumentsDirectory|WolframID|WolframUUID))(?![`$[:alnum:]])",name:"constant.language.wolfram"},{match:"(?:A(?:bortScheduledTask|ctive|lgebraicRules|lternateImage|natomyForm|nimationCycleOffset|nimationCycleRepetitions|nimationDisplayTime|spectRatioFixed|stronomicalData|synchronousTaskObject|synchronousTasks|udioDevice|udioLooping))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:B(?:uttonEvaluator|uttonExpandable|uttonFrame|uttonMargins|uttonNote|uttonStyle))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:C(?:DFInformation|hebyshevDistance|lassifierInformation|lipFill|olorOutput|olumnForm|ompose|onstantArrayLayer|onstantPlusLayer|onstantTimesLayer|onstrainedMax|onstrainedMin|ontourGraphics|ontourLines|onversionOptions|reateScheduledTask|reateTemporary|urry))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:D(?:atabinRemove|ate|ebug|efaultColor|efaultFont|ensityGraphics|isplay|isplayString|otPlusLayer|ragAndDrop))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:E(?:dgeLabeling|dgeRenderingFunction|valuateScheduledTask|xpectedValue))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:F(?:actorComplete|ontForm|ormTheme|romDate|ullOptions))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:G(?:raphStyle|raphicsArray|raphicsSpacing|ridBaseline))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:H(?:TMLSave|eldPart|iddenSurface|omeDirectory))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:I(?:mageRotated|nstanceNormalizationLayer))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:L(?:UBackSubstitution|egendreType|ightSources|inearProgramming|inkOpen|iteral|ongestMatch))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:M(?:eshRange|oleculeEquivalentQ))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:N(?:etInformation|etSharedArray|extScheduledTaskTime|otebookCreate))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:O(?:penTemporary))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:P(?:IDData|ackingMethod|ersistentValue|ixelConstrained|lot3Matrix|lotDivision|lotJoined|olygonIntersections|redictorInformation|roperties|roperty|ropertyList|ropertyValue))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:R(?:andom|asterArray|ecognitionThreshold|elease|emoteKernelObject|emoveAsynchronousTask|emoveProperty|emoveScheduledTask|enderAll|eplaceHeldPart|esetScheduledTask|esumePacket|unScheduledTask))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:S(?:cheduledTaskActiveQ|cheduledTaskInformation|cheduledTaskObject|cheduledTasks|creenRectangle|electionAnimate|equenceAttentionLayer|equenceForm|etProperty|hading|hortestMatch|ingularValues|kinStyle|ocialMediaData|tartAsynchronousTask|tartScheduledTask|tateDimensions|topAsynchronousTask|topScheduledTask|tructuredArray|tyleForm|tylePrint|ubscripted|urfaceColor|urfaceGraphics|uspendPacket|ystemModelProgressReporting))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:T(?:eXSave|extStyle|imeWarpingCorrespondence|imeWarpingDistance|oDate|oFileName|oHeldExpression))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:U(?:RLFetch|RLFetchAsynchronous|RLSave|RLSaveAsynchronous))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:V(?:ectorScale|ertexCoordinateRules|ertexLabeling|ertexRenderingFunction))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:W(?:aitAsynchronousTask|indowMovable))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:\\$(?:AsynchronousTask|ConfiguredKernels|DefaultFont|EntityStores|FormatType|HTTPCookies|InstallationDate|MachineDomain|ProductInformation|ProgramName|RandomState|ScheduledTask|SummaryBoxDataSizeLimit|TemporaryPrefix|TextStyle|TopDirectory|UserAddOnsDirectory))(?![`$[:alnum:]])",name:"invalid.deprecated.wolfram"},{match:"(?:A(?:ctionDelay|ctionMenuBox|ctionMenuBoxOptions|ctiveItem|lgebraicRulesData|lignmentMarker|llowAdultContent|llowChatServices|llowIncomplete|nalytic|nimatorBox|nimatorBoxOptions|nimatorElements|ppendCheck|rgumentCountQ|rrow3DBox|rrowBox|uthenticate|utoEvaluateEvents|utoIndentSpacings|utoMatch|utoNumberFormatting|utoQuoteCharacters|utoScaling|utoStyleOptions|utoStyleWords|utomaticImageSize|xis3DBox|xis3DBoxOptions|xisBox|xisBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:B(?:SplineCurve3DBox|SplineCurve3DBoxOptions|SplineCurveBox|SplineCurveBoxOptions|SplineSurface3DBox|SplineSurface3DBoxOptions|ackFaceColor|ackFaceGlowColor|ackFaceOpacity|ackFaceSpecularColor|ackFaceSpecularExponent|ackFaceSurfaceAppearance|ackFaceTexture|ackgroundAppearance|ackgroundTasksSettings|acksubstitution|eveled|ezierCurve3DBox|ezierCurve3DBoxOptions|ezierCurveBox|ezierCurveBoxOptions|lankForm|ounds|ox|oxDimensions|oxForm|oxID|oxRotation|oxRotationPoint|ra|raKet|rowserCategory|uttonCell|uttonContents|uttonStyleMenuListing))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:C(?:acheGraphics|achedValue|ardinalBSplineBasis|ellBoundingBox|ellContents|ellElementSpacings|ellElementsBoundingBox|ellFrameStyle|ellInsertionPointCell|ellTrayPosition|ellTrayWidgets|hangeOptions|hannelDatabin|hannelListenerWait|hannelPreSendFunction|hartElementData|hartElementDataFunction|heckAll|heckboxBox|heckboxBoxOptions|ircleBox|lipboardNotebook|lockwiseContourIntegral|losed|losingEvent|loudConnections|loudObjectInformation|loudObjectInformationData|loudUserID|oarse|oefficientDomain|olonForm|olorSetterBox|olorSetterBoxOptions|olumnBackgrounds|ompilerEnvironmentAppend|ompletionsListPacket|omponentwiseContextMenu|ompressedData|oneBox|onicHullRegion3DBox|onicHullRegion3DBoxOptions|onicHullRegionBox|onicHullRegionBoxOptions|onnect|ontentsBoundingBox|ontextMenu|ontinuation|ontourIntegral|ontourSmoothing|ontrolAlignment|ontrollerDuration|ontrollerInformationData|onvertToPostScript|onvertToPostScriptPacket|ookies|opyTag|ounterBox|ounterBoxOptions|ounterClockwiseContourIntegral|ounterEvaluator|ounterStyle|uboidBox|uboidBoxOptions|urlyDoubleQuote|urlyQuote|ylinderBox|ylinderBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:D(?:OSTextFormat|ampingFactor|ataCompression|atasetDisplayPanel|ateDelimiters|ebugTag|ecimal|efault2DTool|efault3DTool|efaultAttachedCellStyle|efaultControlPlacement|efaultDockedCellStyle|efaultInputFormatType|efaultOutputFormatType|efaultStyle|efaultTextFormatType|efaultTextInlineFormatType|efaultValue|efineExternal|egreeLexicographic|egreeReverseLexicographic|eleteWithContents|elimitedArray|estroyAfterEvaluation|eviceOpenQ|ialogIndent|ialogLevel|ifferenceOrder|igitBlockMinimum|isableConsolePrintPacket|iskBox|iskBoxOptions|ispatchQ|isplayRules|isplayTemporary|istributionDomain|ivergence|ocumentGeneratorInformationData|omainRegistrationInformation|oubleContourIntegral|oublyInfinite|own|rawBackFaces|rawFrontFaces|rawHighlighted|ualLinearProgramming|umpGet|ynamicBox|ynamicBoxOptions|ynamicLocation|ynamicModuleBox|ynamicModuleBoxOptions|ynamicModuleParent|ynamicName|ynamicNamespace|ynamicReference|ynamicWrapperBox|ynamicWrapperBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:E(?:ditButtonSettings|liminationOrder|llipticReducedHalfPeriods|mbeddingObject|mphasizeSyntaxErrors|mpty|nableConsolePrintPacket|ndAdd|ngineEnvironment|nter|qualColumns|qualRows|quatedTo|rrorBoxOptions|rrorNorm|rrorPacket|rrorsDialogSettings|valuated|valuationMode|valuationOrder|valuationRateLimit|ventEvaluator|ventHandlerTag|xactRootIsolation|xitDialog|xpectationE|xportPacket|xpressionPacket|xternalCall|xternalFunctionName))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:F(?:EDisableConsolePrintPacket|EEnableConsolePrintPacket|ail|ileInformation|ileName|illForm|illedCurveBox|illedCurveBoxOptions|ine|itAll|lashSelection|ont|ontName|ontOpacity|ontPostScriptName|ontReencoding|ormatRules|ormatValues|rameInset|rameless|rontEndObject|rontEndResource|rontEndResourceString|rontEndStackSize|rontEndValueCache|rontEndVersion|rontFaceColor|rontFaceGlowColor|rontFaceOpacity|rontFaceSpecularColor|rontFaceSpecularExponent|rontFaceSurfaceAppearance|rontFaceTexture|ullAxes))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:G(?:eneratedCellStyles|eneric|eometricTransformation3DBox|eometricTransformation3DBoxOptions|eometricTransformationBox|eometricTransformationBoxOptions|estureHandlerTag|etContext|etFileName|etLinebreakInformationPacket|lobalPreferences|lobalSession|raphLayerLabels|raphRoot|raphics3DBox|raphics3DBoxOptions|raphicsBaseline|raphicsBox|raphicsBoxOptions|raphicsComplex3DBox|raphicsComplex3DBoxOptions|raphicsComplexBox|raphicsComplexBoxOptions|raphicsContents|raphicsData|raphicsGridBox|raphicsGroup3DBox|raphicsGroup3DBoxOptions|raphicsGroupBox|raphicsGroupBoxOptions|raphicsGrouping|raphicsStyle|reekStyle|ridBoxAlignment|ridBoxBackground|ridBoxDividers|ridBoxFrame|ridBoxItemSize|ridBoxItemStyle|ridBoxOptions|ridBoxSpacings|ridElementStyleOptions|roupOpenerColor|roupOpenerInsideFrame|roupTogetherGrouping|roupTogetherNestedGrouping))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:H(?:eadCompose|eaders|elpBrowserLookup|elpBrowserNotebook|elpViewerSettings|essian|exahedronBox|exahedronBoxOptions|ighlightString|omePage|orizontal|orizontalForm|orizontalScrollPosition|yperlinkCreationSettings|yphenationOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:I(?:conizedObject|gnoreSpellCheck|mageCache|mageCacheValid|mageEditMode|mageMarkers|mageOffset|mageRangeCache|mageSizeCache|mageSizeRaw|nactiveStyle|ncludeSingularTerm|ndent|ndentMaxFraction|ndentingNewlineSpacings|ndexCreationOptions|ndexTag|nequality|nexactNumbers|nformationData|nformationDataGrid|nlineCounterAssignments|nlineCounterIncrements|nlineRules|nputFieldBox|nputFieldBoxOptions|nputGrouping|nputSettings|nputToBoxFormPacket|nsertionPointObject|nset3DBox|nset3DBoxOptions|nsetBox|nsetBoxOptions|ntegral|nterlaced|nterpolationPrecision|nterpretTemplate|nterruptSettings|nto|nvisibleApplication|nvisibleTimes|temBox|temBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:J(?:acobian|oinedCurveBox|oinedCurveBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:K(?:|ernelExecute|et))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:L(?:abeledSlider|ambertW|anguageOptions|aunch|ayoutInformation|exicographic|icenseID|ine3DBox|ine3DBoxOptions|ineBox|ineBoxOptions|ineBreak|ineWrapParts|inearFilter|inebreakSemicolonWeighting|inkConnectedQ|inkError|inkFlush|inkHost|inkMode|inkOptions|inkReadHeld|inkService|inkWriteHeld|istPickerBoxBackground|isten|iteralSearch|ocalizeDefinitions|ocatorBox|ocatorBoxOptions|ocatorCentering|ocatorPaneBox|ocatorPaneBoxOptions|ongEqual|ongForm|oopback))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:M(?:achineID|achineName|acintoshSystemPageSetup|ainSolve|aintainDynamicCaches|akeRules|atchLocalNameQ|aterial|athMLText|athematicaNotation|axBend|axPoints|enu|enuAppearance|enuEvaluator|enuItem|enuList|ergeDifferences|essageObject|essageOptions|essagesNotebook|etaCharacters|ethodOptions|inRecursion|inSize|ode|odular|onomialOrder|ouseAppearanceTag|ouseButtons|ousePointerNote|ultiLetterItalics|ultiLetterStyle|ultiplicity|ultiscriptBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:N(?:BernoulliB|ProductFactors|SumTerms|Values|amespaceBox|amespaceBoxOptions|estedScriptRules|etworkPacketRecordingDuring|ext|onAssociative|ormalGrouping|otebookDefault|otebookInterfaceObject))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:O(?:LEData|bjectExistsQ|pen|penFunctionInspectorPacket|penSpecialOptions|penerBox|penerBoxOptions|ptionQ|ptionValueBox|ptionValueBoxOptions|ptionsPacket|utputFormData|utputGrouping|utputMathEditExpression|ver|verlayBox|verlayBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:P(?:ackPaclet|ackage|acletDirectoryAdd|acletDirectoryRemove|acletInformation|acletObjectQ|acletUpdate|ageHeight|alettesMenuSettings|aneBox|aneBoxOptions|aneSelectorBox|aneSelectorBoxOptions|anelBox|anelBoxOptions|aperWidth|arameter|arameterVariables|arentConnect|arentForm|arentList|arenthesize|artialD|asteAutoQuoteCharacters|ausedTime|eriodicInterpolation|erpendicular|ickMode|ickedElements|ivoting|lotRangeClipPlanesStyle|oint3DBox|oint3DBoxOptions|ointBox|ointBoxOptions|olygon3DBox|olygon3DBoxOptions|olygonBox|olygonBoxOptions|olygonHoleScale|olygonScale|olyhedronBox|olyhedronBoxOptions|olynomialForm|olynomials|opupMenuBox|opupMenuBoxOptions|ostScript|recedence|redictionRoot|referencesSettings|revious|rimaryPlaceholder|rintForm|rismBox|rismBoxOptions|rivateFrontEndOptions|robabilityPr|rocessStateDomain|rocessTimeDomain|rogressIndicatorBox|rogressIndicatorBoxOptions|romptForm|yramidBox|yramidBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:R(?:adioButtonBox|adioButtonBoxOptions|andomSeed|angeSpecification|aster3DBox|aster3DBoxOptions|asterBox|asterBoxOptions|ationalFunctions|awArray|awMedium|ebuildPacletData|ectangleBox|ecurringDigitsForm|eferenceMarkerStyle|eferenceMarkers|einstall|emoved|epeatedString|esourceAcquire|esourceSubmissionObject|eturnCreatesNewCell|eturnEntersInput|eturnInputFormPacket|otationBox|otationBoxOptions|oundImplies|owBackgrounds|owHeights|uleCondition|uleForm))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:S(?:aveAutoDelete|caledMousePosition|cheduledTaskInformationData|criptForm|criptRules|ectionGrouping|electWithContents|election|electionCell|electionCellCreateCell|electionCellDefaultStyle|electionCellParentStyle|electionPlaceholder|elfLoops|erviceResponse|etOptionsPacket|etSecuredAuthenticationKey|etbacks|etterBox|etterBoxOptions|howAutoConvert|howCodeAssist|howControls|howGroupOpenCloseIcon|howInvisibleCharacters|howPredictiveInterface|howSyntaxStyles|hrinkWrapBoundingBox|ingleEvaluation|ingleLetterStyle|lider2DBox|lider2DBoxOptions|ocket|olveDelayed|oundAndGraphics|pace|paceForm|panningCharacters|phereBox|phereBoxOptions|tartupSound|tringBreak|tringByteCount|tripStyleOnPaste|trokeForm|tructuredArrayHeadQ|tyleKeyMapping|tyleNames|urfaceAppearance|yntax|ystemException|ystemGet|ystemInformationData|ystemStub|ystemTest))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:T(?:ab|abViewBox|abViewBoxOptions|ableViewBox|ableViewBoxAlignment|ableViewBoxBackground|ableViewBoxHeaders|ableViewBoxItemSize|ableViewBoxItemStyle|ableViewBoxOptions|agBoxNote|agStyle|emplateEvaluate|emplateSlotSequence|emplateUnevaluated|emplateVerbatim|emporaryVariable|ensorQ|etrahedronBox|etrahedronBoxOptions|ext3DBox|ext3DBoxOptions|extBand|extBoundingBox|extBox|extForm|extLine|extParagraph|hisLink|itleGrouping|oColor|oggle|oggleFalse|ogglerBox|ogglerBoxOptions|ooBig|ooltipBox|ooltipBoxOptions|otalHeight|raceAction|raceInternal|raceLevel|rackCellChangeTimes|raditionalNotation|raditionalOrder|ransparentColor|rapEnterKey|rapSelection|ubeBSplineCurveBox|ubeBSplineCurveBoxOptions|ubeBezierCurveBox|ubeBezierCurveBoxOptions|ubeBox|ubeBoxOptions))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:U(?:ntrackedVariables|p|seGraphicsRange|serDefinedWavelet|sing))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:V(?:2Get|alueBox|alueBoxOptions|alueForm|aluesData|ectorGlyphData|erbose|ertical|erticalForm|iewPointSelectorSettings|iewPort|irtualGroupData|isibleCell))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:W(?:aitUntil|ebPageMetaInformation|holeCellGroupOpener|indowPersistentStyles|indowSelected|indowWidth|olframAlphaDate|olframAlphaQuantity|olframAlphaResult|olframCloudSettings))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:\\$(?:ActivationGroupID|ActivationUserRegistered|AddOnsDirectory|BoxForms|CloudConnection|CloudVersionNumber|CloudWolframEngineVersionNumber|ConditionHold|DefaultMailbox|DefaultPath|FinancialDataSource|GeoEntityTypes|GeoLocationPrecision|HTMLExportRules|HTTPRequest|LaunchDirectory|LicenseProcesses|LicenseSubprocesses|LicenseType|LinkSupported|LoadedFiles|MaxLicenseProcesses|MaxLicenseSubprocesses|MinorReleaseNumber|NetworkLicense|Off|OutputForms|PatchLevelID|PermissionsGroupBase|PipeSupported|PreferencesDirectory|PrintForms|PrintLiteral|RegisteredDeviceClasses|RegisteredUserName|SecuredAuthenticationKeyTokens|SetParentLink|SoundDisplay|SuppressInputFormHeads|SystemMemory|TraceOff|TraceOn|TracePattern|TracePostAction|TracePreAction|UserAgentLanguages|UserAgentMachine|UserAgentName|UserAgentOperatingSystem|UserAgentVersion|UserName))(?![`$[:alnum:]])",name:"support.function.undocumented.wolfram"},{match:"(?:A(?:ctiveClassification|ctiveClassificationObject|ctivePrediction|ctivePredictionObject|ddToSearchIndex|ggregatedEntityClass|ggregationLayer|ngleBisector|nimatedImage|nimationVideo|nomalyDetector|ppendLayer|pplication|pplyReaction|round|roundReplace|rrayReduce|sk|skAppend|skConfirm|skDisplay|skFunction|skState|skTemplateDisplay|skedQ|skedValue|ssessmentFunction|ssessmentResultObject|ssumeDeterministic|stroAngularSeparation|stroBackground|stroCenter|stroDistance|stroGraphics|stroGridLines|stroGridLinesStyle|stroPosition|stroProjection|stroRange|stroRangePadding|stroReferenceFrame|stroStyling|stroZoomLevel|tom|tomCoordinates|tomCount|tomDiagramCoordinates|tomLabelStyle|tomLabels|tomList|ttachCell|ttentionLayer|udioAnnotate|udioAnnotationLookup|udioIdentify|udioInstanceQ|udioPause|udioPlay|udioRecord|udioStop|udioStream|udioStreams|udioTrackApply|udioTrackSelection|utocomplete|utocompletionFunction|xiomaticTheory|xisLabel|xisObject|xisStyle))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:B(?:asicRecurrentLayer|atchNormalizationLayer|atchSize|ayesianMaximization|ayesianMaximizationObject|ayesianMinimization|ayesianMinimizationObject|esagL|innedVariogramList|inomialPointProcess|ioSequence|ioSequenceBackTranslateList|ioSequenceComplement|ioSequenceInstances|ioSequenceModify|ioSequencePlot|ioSequenceQ|ioSequenceReverseComplement|ioSequenceTranscribe|ioSequenceTranslate|itRate|lockDiagonalMatrix|lockLowerTriangularMatrix|lockUpperTriangularMatrix|lockchainAddressData|lockchainBase|lockchainBlockData|lockchainContractValue|lockchainData|lockchainGet|lockchainKeyEncode|lockchainPut|lockchainTokenData|lockchainTransaction|lockchainTransactionData|lockchainTransactionSign|lockchainTransactionSubmit|ond|ondCount|ondLabelStyle|ondLabels|ondList|ondQ|uildCompiledComponent))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:C(?:TCLossLayer|achePersistence|anvas|ast|ategoricalDistribution|atenateLayer|auchyPointProcess|hannelBase|hannelBrokerAction|hannelHistoryLength|hannelListen|hannelListener|hannelListeners|hannelObject|hannelReceiverFunction|hannelSend|hannelSubscribers|haracterNormalize|hemicalConvert|hemicalFormula|hemicalInstance|hemicalReaction|loudExpression|loudExpressions|loudRenderingMethod|ombinatorB|ombinatorC|ombinatorI|ombinatorK|ombinatorS|ombinatorW|ombinatorY|ombinedEntityClass|ompiledCodeFunction|ompiledComponent|ompiledExpressionDeclaration|ompiledLayer|ompilerCallback|ompilerEnvironment|ompilerEnvironmentAppendTo|ompilerEnvironmentObject|ompilerOptions|omplementedEntityClass|omputeUncertainty|onfirmQuiet|onformationMethod|onnectSystemModelComponents|onnectSystemModelController|onnectedMoleculeComponents|onnectedMoleculeQ|onnectionSettings|ontaining|ontentDetectorFunction|ontentFieldOptions|ontentLocationFunction|ontentObject|ontrastiveLossLayer|onvolutionLayer|reateChannel|reateCloudExpression|reateCompilerEnvironment|reateDataStructure|reateDataSystemModel|reateLicenseEntitlement|reateSearchIndex|reateSystemModel|reateTypeInstance|rossEntropyLossLayer|urrentNotebookImage|urrentScreenImage|urryApplied))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:D(?:SolveChangeVariables|ataStructure|ataStructureQ|atabaseConnect|atabaseDisconnect|atabaseReference|atabinSubmit|ateInterval|eclareCompiledComponent|econvolutionLayer|ecryptFile|eleteChannel|eleteCloudExpression|eleteElements|eleteSearchIndex|erivedKey|iggleGatesPointProcess|iggleGrattonPointProcess|igitalSignature|isableFormatting|ocumentWeightingRules|otLayer|ownValuesFunction|ropoutLayer|ynamicImage))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:E(?:choTiming|lementwiseLayer|mbeddedSQLEntityClass|mbeddedSQLExpression|mbeddingLayer|mptySpaceF|ncryptFile|ntityFunction|ntityStore|stimatedPointProcess|stimatedVariogramModel|valuationEnvironment|valuationPrivileges|xpirationDate|xpressionTree|xtendedEntityClass|xternalEvaluate|xternalFunction|xternalIdentifier|xternalObject|xternalSessionObject|xternalSessions|xternalStorageBase|xternalStorageDownload|xternalStorageGet|xternalStorageObject|xternalStoragePut|xternalStorageUpload|xternalValue|xtractLayer))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:F(?:aceRecognize|eatureDistance|eatureExtract|eatureExtraction|eatureExtractor|eatureExtractorFunction|ileConvert|ileFormatProperties|ileNameToFormatList|ileSystemTree|ilteredEntityClass|indChannels|indEquationalProof|indExternalEvaluators|indGeometricConjectures|indImageText|indIsomers|indMoleculeSubstructure|indPointProcessParameters|indSystemModelEquilibrium|indTextualAnswer|lattenLayer|orAllType|ormControl|orwardCloudCredentials|oxHReduce|rameListVideo|romRawPointer|unctionCompile|unctionCompileExport|unctionCompileExportByteArray|unctionCompileExportLibrary|unctionCompileExportString|unctionDeclaration|unctionLayer|unctionPoles))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:G(?:alleryView|atedRecurrentLayer|enerateDerivedKey|enerateDigitalSignature|enerateFileSignature|enerateSecuredAuthenticationKey|eneratedAssetFormat|eneratedAssetLocation|eoGraphValuePlot|eoOrientationData|eometricAssertion|eometricScene|eometricStep|eometricStylingRules|eometricTest|ibbsPointProcess|raphTree|ridVideo))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:H(?:andlerFunctions|andlerFunctionsKeys|ardcorePointProcess|istogramPointDensity))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:I(?:gnoreIsotopes|gnoreStereochemistry|mageAugmentationLayer|mageBoundingBoxes|mageCases|mageContainsQ|mageContents|mageGraphics|magePosition|magePyramid|magePyramidApply|mageStitch|mportedObject|ncludeAromaticBonds|ncludeHydrogens|ncludeRelatedTables|nertEvaluate|nertExpression|nfiniteFuture|nfinitePast|nhomogeneousPoissonPointProcess|nitialEvaluationHistory|nitializationObject|nitializationObjects|nitializationValue|nitialize|nputPorts|ntegrateChangeVariables|nterfaceSwitched|ntersectedEntityClass|nverseImagePyramid))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:K(?:ernelConfiguration|ernelFunction))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:L(?:earningRateMultipliers|ibraryFunctionDeclaration|icenseEntitlementObject|icenseEntitlements|icensingSettings|inearLayer|iteralType|oadCompiledComponent|ocalResponseNormalizationLayer|ongShortTermMemoryLayer|ossFunction))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:M(?:IMETypeToFormatList|ailExecute|ailFolder|ailItem|ailSearch|ailServerConnect|ailServerConnection|aternPointProcess|axDisplayedChildren|axTrainingRounds|axWordGap|eanAbsoluteLossLayer|eanAround|eanPointDensity|eanSquaredLossLayer|ergingFunction|idpoint|issingValuePattern|issingValueSynthesis|olecule|oleculeAlign|oleculeContainsQ|oleculeDraw|oleculeFreeQ|oleculeGraph|oleculeMatchQ|oleculeMaximumCommonSubstructure|oleculeModify|oleculeName|oleculePattern|oleculePlot|oleculePlot3D|oleculeProperty|oleculeQ|oleculeRecognize|oleculeSubstructureCount|oleculeValue))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:N(?:BodySimulation|BodySimulationData|earestNeighborG|estTree|etAppend|etArray|etArrayLayer|etBidirectionalOperator|etChain|etDecoder|etDelete|etDrop|etEncoder|etEvaluationMode|etExternalObject|etExtract|etFlatten|etFoldOperator|etGANOperator|etGraph|etInitialize|etInsert|etInsertSharedArrays|etJoin|etMapOperator|etMapThreadOperator|etMeasurements|etModel|etNestOperator|etPairEmbeddingOperator|etPort|etPortGradient|etPrepend|etRename|etReplace|etReplacePart|etStateObject|etTake|etTrain|etTrainResultsObject|etUnfold|etworkPacketCapture|etworkPacketRecording|etworkPacketTrace|eymanScottPointProcess|ominalScale|ormalizationLayer|umericArray|umericArrayQ|umericArrayType))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:O(?:peratorApplied|rderingLayer|rdinalScale|utputPorts|verlayVideo))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:P(?:acletSymbol|addingLayer|agination|airCorrelationG|arametricRampLayer|arentEdgeLabel|arentEdgeLabelFunction|arentEdgeLabelStyle|arentEdgeShapeFunction|arentEdgeStyle|arentEdgeStyleFunction|artLayer|artProtection|atternFilling|atternReaction|enttinenPointProcess|erpendicularBisector|ersistenceLocation|ersistenceTime|ersistentObject|ersistentObjects|ersistentSymbol|itchRecognize|laceholderLayer|laybackSettings|ointCountDistribution|ointDensity|ointDensityFunction|ointProcessEstimator|ointProcessFitTest|ointProcessParameterAssumptions|ointProcessParameterQ|ointStatisticFunction|ointValuePlot|oissonPointProcess|oolingLayer|rependLayer|roofObject|ublisherID))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:Q(?:uestionGenerator|uestionInterface|uestionObject|uestionSelector))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:R(?:andomArrayLayer|andomInstance|andomPointConfiguration|andomTree|eactionBalance|eactionBalancedQ|ecalibrationFunction|egisterExternalEvaluator|elationalDatabase|emoteAuthorizationCaching|emoteBatchJobAbort|emoteBatchJobObject|emoteBatchJobs|emoteBatchMapSubmit|emoteBatchSubmissionEnvironment|emoteBatchSubmit|emoteConnect|emoteConnectionObject|emoteEvaluate|emoteFile|emoteInputFiles|emoteProviderSettings|emoteRun|emoteRunProcess|emovalConditions|emoveAudioStream|emoveChannelListener|emoveChannelSubscribers|emoveVideoStream|eplicateLayer|eshapeLayer|esizeLayer|esourceFunction|esourceRegister|esourceRemove|esourceSubmit|esourceSystemBase|esourceSystemPath|esourceUpdate|esourceVersion|everseApplied|ipleyK|ipleyRassonRegion|ootTree|ulesTree))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:S(?:ameTestProperties|ampledEntityClass|earchAdjustment|earchIndexObject|earchIndices|earchQueryString|earchResultObject|ecuredAuthenticationKey|ecuredAuthenticationKeys|ecurityCertificate|equenceIndicesLayer|equenceLastLayer|equenceMostLayer|equencePredict|equencePredictorFunction|equenceRestLayer|equenceReverseLayer|erviceRequest|erviceSubmit|etFileFormatProperties|etSystemModel|lideShowVideo|moothPointDensity|nippet|nippetsVideo|nubPolyhedron|oftmaxLayer|olidBoundaryLoadValue|olidDisplacementCondition|olidFixedCondition|olidMechanicsPDEComponent|olidMechanicsStrain|olidMechanicsStress|ortedEntityClass|ourceLink|patialBinnedPointData|patialBoundaryCorrection|patialEstimate|patialEstimatorFunction|patialJ|patialNoiseLevel|patialObservationRegionQ|patialPointData|patialPointSelect|patialRandomnessTest|patialTransformationLayer|patialTrendFunction|peakerMatchQ|peechCases|peechInterpreter|peechRecognize|plice|tartExternalSession|tartWebSession|tereochemistryElements|traussHardcorePointProcess|traussPointProcess|ubsetCases|ubsetCount|ubsetPosition|ubsetReplace|ubtitleTrackSelection|ummationLayer|ymmetricDifference|ynthesizeMissingValues|ystemCredential|ystemCredentialData|ystemCredentialKey|ystemCredentialKeys|ystemCredentialStoreObject|ystemInstall|ystemModel|ystemModelExamples|ystemModelLinearize|ystemModelMeasurements|ystemModelParametricSimulate|ystemModelPlot|ystemModelReliability|ystemModelSimulate|ystemModelSimulateSensitivity|ystemModelSimulationData|ystemModeler|ystemModels))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:T(?:ableView|argetDevice|argetSystem|ernaryListPlot|ernaryPlotCorners|extCases|extContents|extElement|extPosition|extSearch|extSearchReport|extStructure|homasPointProcess|hreaded|hreadingLayer|ickDirection|ickLabelOrientation|ickLabelPositioning|ickLabels|ickLengths|ickPositions|oRawPointer|otalLayer|ourVideo|rainImageContentDetector|rainTextContentDetector|rainingProgressCheckpointing|rainingProgressFunction|rainingProgressMeasurements|rainingProgressReporting|rainingStoppingCriterion|rainingUpdateSchedule|ransposeLayer|ree|reeCases|reeChildren|reeCount|reeData|reeDelete|reeDepth|reeElementCoordinates|reeElementLabel|reeElementLabelFunction|reeElementLabelStyle|reeElementShape|reeElementShapeFunction|reeElementSize|reeElementSizeFunction|reeElementStyle|reeElementStyleFunction|reeExpression|reeExtract|reeFold|reeInsert|reeLayout|reeLeafCount|reeLeafQ|reeLeaves|reeLevel|reeMap|reeMapAt|reeOutline|reePosition|reeQ|reeReplacePart|reeRules|reeScan|reeSelect|reeSize|reeTraversalOrder|riangleCenter|riangleConstruct|riangleMeasurement|ypeDeclaration|ypeEvaluate|ypeOf|ypeSpecifier|yped))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:U(?:RLDownloadSubmit|nconstrainedParameters|nionedEntityClass|niqueElements|nitVectorLayer|nlabeledTree|nmanageObject|nregisterExternalEvaluator|pdateSearchIndex|seEmbeddedLibrary))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:V(?:alenceErrorHandling|alenceFilling|aluePreprocessingFunction|andermondeMatrix|arianceGammaPointProcess|ariogramFunction|ariogramModel|ectorAround|erifyDerivedKey|erifyDigitalSignature|erifyFileSignature|erifyInterpretation|ideo|ideoCapture|ideoCombine|ideoDelete|ideoExtractFrames|ideoFrameList|ideoFrameMap|ideoGenerator|ideoInsert|ideoIntervals|ideoJoin|ideoMap|ideoMapList|ideoMapTimeSeries|ideoPadding|ideoPause|ideoPlay|ideoQ|ideoRecord|ideoReplace|ideoScreenCapture|ideoSplit|ideoStop|ideoStream|ideoStreams|ideoTimeStretch|ideoTrackSelection|ideoTranscode|ideoTransparency|ideoTrim))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:W(?:ebAudioSearch|ebColumn|ebElementObject|ebExecute|ebImage|ebImageSearch|ebItem|ebRow|ebSearch|ebSessionObject|ebSessions|ebWindowObject|ikidataData|ikidataSearch|ikipediaSearch|ithCleanup|ithLock))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:Z(?:oomCenter|oomFactor))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:\\$(?:AllowExternalChannelFunctions|AudioDecoders|AudioEncoders|BlockchainBase|ChannelBase|CompilerEnvironment|CookieStore|CryptographicEllipticCurveNames|CurrentWebSession|DataStructures|DefaultNetworkInterface|DefaultProxyRules|DefaultRemoteBatchSubmissionEnvironment|DefaultRemoteKernel|DefaultSystemCredentialStore|ExternalIdentifierTypes|ExternalStorageBase|GeneratedAssetLocation|IncomingMailSettings|Initialization|InitializationContexts|MaxDisplayedChildren|NetworkInterfaces|NoValue|PersistenceBase|PersistencePath|PreInitialization|PublisherID|ResourceSystemBase|ResourceSystemPath|SSHAuthentication|ServiceCreditsAvailable|SourceLink|SubtitleDecoders|SubtitleEncoders|SystemCredentialStore|TargetSystems|TestFileName|VideoDecoders|VideoEncoders|VoiceStyles))(?![`$[:alnum:]])",name:"support.function.experimental.wolfram"},{match:"(?:A(?:llFalse|nyFalse))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:B(?:oolean))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:C(?:loudbase|omplexQ))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:D(?:ataSet))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:E(?:xpandFilename|xportPacket))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:F(?:ailed|alseQ))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:I(?:nterpolationFunction|nterpolationPolynomial))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:M(?:atch))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:O(?:ptionPattern|ptionsQ))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:R(?:ationalQ|ealQ))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:S(?:tringMatch|ymbolQ))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:U(?:nSameQ|rlExecute))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:\\$(?:PathNameSeparator|RegisteredUsername))(?![`$[:alnum:]])",name:"invalid.bad.wolfram"},{match:"(?:E(?:cho|xit))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:I(?:n|nString))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:O(?:ut))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:P(?:rint))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:Q(?:uit))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:\\$(?:HistoryLength|Line|Post|Pre|PrePrint|PreRead|SyntaxHandler))(?![`$[:alnum:]])",name:"invalid.session.wolfram"},{match:"(?:[$[:alpha:]][$[:alnum:]]*)(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",name:"variable.function.wolfram"},{match:"(?:[$[:alpha:]][$[:alnum:]]*)",name:"symbol.unrecognized.wolfram"}]}},scopeName:"source.wolfram",aliases:["wl"]});var t=[e];export{t as default}; diff --git a/assets/chunks/xml.BzTcx3OS.js b/assets/chunks/xml.BzTcx3OS.js new file mode 100644 index 000000000..c0e65ed98 --- /dev/null +++ b/assets/chunks/xml.BzTcx3OS.js @@ -0,0 +1 @@ +import e from"./java.ClXEvkw9.js";const n=Object.freeze({displayName:"XML",name:"xml",patterns:[{begin:"(<\\?)\\s*([-_a-zA-Z0-9]+)",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"entity.name.tag.xml"}},end:"(\\?>)",name:"meta.tag.preprocessor.xml",patterns:[{match:" ([a-zA-Z-]+)",name:"entity.other.attribute-name.xml"},{include:"#doublequotedString"},{include:"#singlequotedString"}]},{begin:"(<!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"keyword.other.doctype.xml"},3:{name:"variable.language.documentroot.xml"}},end:"\\s*(>)",name:"meta.tag.sgml.doctype.xml",patterns:[{include:"#internalSubset"}]},{include:"#comments"},{begin:"(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?></\\2>)",beginCaptures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"entity.name.tag.xml"},3:{name:"entity.name.tag.namespace.xml"},4:{name:"punctuation.separator.namespace.xml"},5:{name:"entity.name.tag.localname.xml"}},end:"(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)",endCaptures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"punctuation.definition.tag.xml"},3:{name:"entity.name.tag.xml"},4:{name:"entity.name.tag.namespace.xml"},5:{name:"punctuation.separator.namespace.xml"},6:{name:"entity.name.tag.localname.xml"},7:{name:"punctuation.definition.tag.xml"}},name:"meta.tag.no-content.xml",patterns:[{include:"#tagStuff"}]},{begin:"(</?)(?:([-\\w\\.]+)((:)))?([-\\w\\.:]+)",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"entity.name.tag.namespace.xml"},3:{name:"entity.name.tag.xml"},4:{name:"punctuation.separator.namespace.xml"},5:{name:"entity.name.tag.localname.xml"}},end:"(/?>)",name:"meta.tag.xml",patterns:[{include:"#tagStuff"}]},{include:"#entity"},{include:"#bare-ampersand"},{begin:"<%@",beginCaptures:{0:{name:"punctuation.section.embedded.begin.xml"}},end:"%>",endCaptures:{0:{name:"punctuation.section.embedded.end.xml"}},name:"source.java-props.embedded.xml",patterns:[{match:"page|include|taglib",name:"keyword.other.page-props.xml"}]},{begin:"<%[!=]?(?!--)",beginCaptures:{0:{name:"punctuation.section.embedded.begin.xml"}},end:"(?!--)%>",endCaptures:{0:{name:"punctuation.section.embedded.end.xml"}},name:"source.java.embedded.xml",patterns:[{include:"source.java"}]},{begin:"<!\\[CDATA\\[",beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:"]]>",endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.unquoted.cdata.xml"}],repository:{EntityDecl:{begin:"(<!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"keyword.other.entity.xml"},3:{name:"punctuation.definition.entity.xml"},4:{name:"variable.language.entity.xml"},5:{name:"keyword.other.entitytype.xml"}},end:"(>)",patterns:[{include:"#doublequotedString"},{include:"#singlequotedString"}]},"bare-ampersand":{match:"&",name:"invalid.illegal.bad-ampersand.xml"},comments:{patterns:[{begin:"<%--",captures:{0:{name:"punctuation.definition.comment.xml"},end:"--%>",name:"comment.block.xml"}},{begin:"<!--",captures:{0:{name:"punctuation.definition.comment.xml"}},end:"-->",name:"comment.block.xml",patterns:[{begin:"--(?!>)",captures:{0:{name:"invalid.illegal.bad-comments-or-CDATA.xml"}}}]}]},doublequotedString:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.double.xml",patterns:[{include:"#entity"},{include:"#bare-ampersand"}]},entity:{captures:{1:{name:"punctuation.definition.constant.xml"},3:{name:"punctuation.definition.constant.xml"}},match:"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.xml"},internalSubset:{begin:"(\\[)",captures:{1:{name:"punctuation.definition.constant.xml"}},end:"(\\])",name:"meta.internalsubset.xml",patterns:[{include:"#EntityDecl"},{include:"#parameterEntity"},{include:"#comments"}]},parameterEntity:{captures:{1:{name:"punctuation.definition.constant.xml"},3:{name:"punctuation.definition.constant.xml"}},match:"(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)",name:"constant.character.parameter-entity.xml"},singlequotedString:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.single.xml",patterns:[{include:"#entity"},{include:"#bare-ampersand"}]},tagStuff:{patterns:[{captures:{1:{name:"entity.other.attribute-name.namespace.xml"},2:{name:"entity.other.attribute-name.xml"},3:{name:"punctuation.separator.namespace.xml"},4:{name:"entity.other.attribute-name.localname.xml"}},match:"(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*="},{include:"#doublequotedString"},{include:"#singlequotedString"}]}},scopeName:"text.xml",embeddedLangs:["java"]});var a=[...e,n];export{a as default}; diff --git a/assets/chunks/xsl.lJB8dDLf.js b/assets/chunks/xsl.lJB8dDLf.js new file mode 100644 index 000000000..b0e90f757 --- /dev/null +++ b/assets/chunks/xsl.lJB8dDLf.js @@ -0,0 +1 @@ +import e from"./xml.BzTcx3OS.js";import"./java.ClXEvkw9.js";const n=Object.freeze({displayName:"XSL",name:"xsl",patterns:[{begin:"(<)(xsl)((:))(template)",captures:{1:{name:"punctuation.definition.tag.xml"},2:{name:"entity.name.tag.namespace.xml"},3:{name:"entity.name.tag.xml"},4:{name:"punctuation.separator.namespace.xml"},5:{name:"entity.name.tag.localname.xml"}},end:"(>)",name:"meta.tag.xml.template",patterns:[{captures:{1:{name:"entity.other.attribute-name.namespace.xml"},2:{name:"entity.other.attribute-name.xml"},3:{name:"punctuation.separator.namespace.xml"},4:{name:"entity.other.attribute-name.localname.xml"}},match:" (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+)"},{include:"#doublequotedString"},{include:"#singlequotedString"}]},{include:"text.xml"}],repository:{doublequotedString:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.double.xml"},singlequotedString:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.xml"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.xml"}},name:"string.quoted.single.xml"}},scopeName:"text.xml.xsl",embeddedLangs:["xml"]});var m=[...e,n];export{m as default}; diff --git a/assets/chunks/yaml.C5gCGmDW.js b/assets/chunks/yaml.C5gCGmDW.js new file mode 100644 index 000000000..df720f132 --- /dev/null +++ b/assets/chunks/yaml.C5gCGmDW.js @@ -0,0 +1,200 @@ +const n=Object.freeze({displayName:"YAML",name:"yaml",patterns:[{include:"#comment"},{include:"#property"},{include:"#directive"},{match:"^---",name:"entity.other.document.begin.yaml"},{match:"^\\.{3}",name:"entity.other.document.end.yaml"},{include:"#node"}],repository:{"block-collection":{patterns:[{include:"#block-sequence"},{include:"#block-mapping"}]},"block-mapping":{patterns:[{include:"#block-pair"}]},"block-node":{patterns:[{include:"#prototype"},{include:"#block-scalar"},{include:"#block-collection"},{include:"#flow-scalar-plain-out"},{include:"#flow-node"}]},"block-pair":{patterns:[{begin:"\\?",beginCaptures:{1:{name:"punctuation.definition.key-value.begin.yaml"}},end:"(?=\\?)|^ *(:)|(:)",endCaptures:{1:{name:"punctuation.separator.key-value.mapping.yaml"},2:{name:"invalid.illegal.expected-newline.yaml"}},name:"meta.block-mapping.yaml",patterns:[{include:"#block-node"}]},{begin:`(?x) +(?= +(?x: +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] \\S +) +( +[^\\s:] +| : \\S +| \\s+ (?![#\\s]) +)* +\\s* +: +(\\s|$) +) +`,end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +) +`,patterns:[{include:"#flow-scalar-plain-out-implicit-type"},{begin:`(?x) +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] \\S +`,beginCaptures:{0:{name:"entity.name.tag.yaml"}},contentName:"entity.name.tag.yaml",end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +) +`,name:"string.unquoted.plain.out.yaml"}]},{match:":(?=\\s|$)",name:"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{begin:"(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",beginCaptures:{1:{name:"keyword.control.flow.block-scalar.literal.yaml"},2:{name:"keyword.control.flow.block-scalar.folded.yaml"},3:{name:"constant.numeric.indentation-indicator.yaml"},4:{name:"storage.modifier.chomping-indicator.yaml"},5:{patterns:[{include:"#comment"},{match:".+",name:"invalid.illegal.expected-comment-or-newline.yaml"}]}},end:"^(?=\\S)|(?!\\G)",patterns:[{begin:"^([ ]+)(?! )",end:"^(?!\\1|\\s*$)",name:"string.unquoted.block.yaml"}]},"block-sequence":{match:"(-)(?!\\S)",name:"punctuation.definition.block.sequence.item.yaml"},comment:{begin:"(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.yaml"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.yaml"}},end:"\\n",name:"comment.line.number-sign.yaml"}]},directive:{begin:"^%",beginCaptures:{0:{name:"punctuation.definition.directive.begin.yaml"}},end:"(?=$|[ \\t]+($|#))",name:"meta.directive.yaml",patterns:[{captures:{1:{name:"keyword.other.directive.yaml.yaml"},2:{name:"constant.numeric.yaml-version.yaml"}},match:"\\G(YAML)[ \\t]+(\\d+\\.\\d+)"},{captures:{1:{name:"keyword.other.directive.tag.yaml"},2:{name:"storage.type.tag-handle.yaml"},3:{name:"support.type.tag-prefix.yaml"}},match:`(?x) +\\G +(TAG) +(?:[ \\t]+ +((?:!(?:[0-9A-Za-z\\-]*!)?)) +(?:[ \\t]+ ( +! (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )* +| (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ +) +)? +)? +`},{captures:{1:{name:"support.other.directive.reserved.yaml"},2:{name:"string.unquoted.directive-name.yaml"},3:{name:"string.unquoted.directive-parameter.yaml"}},match:"(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"},{match:"\\S+",name:"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{captures:{1:{name:"keyword.control.flow.alias.yaml"},2:{name:"punctuation.definition.alias.yaml"},3:{name:"variable.other.alias.yaml"},4:{name:"invalid.illegal.character.anchor.yaml"}},match:"((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"},"flow-collection":{patterns:[{include:"#flow-sequence"},{include:"#flow-mapping"}]},"flow-mapping":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.mapping.begin.yaml"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.mapping.end.yaml"}},name:"meta.flow-mapping.yaml",patterns:[{include:"#prototype"},{match:",",name:"punctuation.separator.mapping.yaml"},{include:"#flow-pair"}]},"flow-node":{patterns:[{include:"#prototype"},{include:"#flow-alias"},{include:"#flow-collection"},{include:"#flow-scalar"}]},"flow-pair":{patterns:[{begin:"\\?",beginCaptures:{0:{name:"punctuation.definition.key-value.begin.yaml"}},end:"(?=[},\\]])",name:"meta.flow-pair.explicit.yaml",patterns:[{include:"#prototype"},{include:"#flow-pair"},{include:"#flow-node"},{begin:":(?=\\s|$|[\\[\\]{},])",beginCaptures:{0:{name:"punctuation.separator.key-value.mapping.yaml"}},end:"(?=[},\\]])",patterns:[{include:"#flow-value"}]}]},{begin:`(?x) +(?= +(?: +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] [^\\s[\\[\\]{},]] +) +( +[^\\s:[\\[\\]{},]] +| : [^\\s[\\[\\]{},]] +| \\s+ (?![#\\s]) +)* +\\s* +: +(\\s|$) +) +`,end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +| \\s* : [\\[\\]{},] +| \\s* [\\[\\]{},] +) +`,name:"meta.flow-pair.key.yaml",patterns:[{include:"#flow-scalar-plain-in-implicit-type"},{begin:`(?x) +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] [^\\s[\\[\\]{},]] +`,beginCaptures:{0:{name:"entity.name.tag.yaml"}},contentName:"entity.name.tag.yaml",end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +| \\s* : [\\[\\]{},] +| \\s* [\\[\\]{},] +) +`,name:"string.unquoted.plain.in.yaml"}]},{include:"#flow-node"},{begin:":(?=\\s|$|[\\[\\]{},])",captures:{0:{name:"punctuation.separator.key-value.mapping.yaml"}},end:"(?=[},\\]])",name:"meta.flow-pair.yaml",patterns:[{include:"#flow-value"}]}]},"flow-scalar":{patterns:[{include:"#flow-scalar-double-quoted"},{include:"#flow-scalar-single-quoted"},{include:"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.yaml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.yaml"}},name:"string.quoted.double.yaml",patterns:[{match:'\\\\([0abtnvfre "/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})',name:"constant.character.escape.yaml"},{match:"\\\\\\n",name:"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{patterns:[{include:"#flow-scalar-plain-in-implicit-type"},{begin:`(?x) +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] [^\\s[\\[\\]{},]] +`,end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +| \\s* : [\\[\\]{},] +| \\s* [\\[\\]{},] +) +`,name:"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{patterns:[{captures:{1:{name:"constant.language.null.yaml"},2:{name:"constant.language.boolean.yaml"},3:{name:"constant.numeric.integer.yaml"},4:{name:"constant.numeric.float.yaml"},5:{name:"constant.other.timestamp.yaml"},6:{name:"constant.language.value.yaml"},7:{name:"constant.language.merge.yaml"}},match:`(?x) +(?x: +(null|Null|NULL|~) +| (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) +| ( +(?: +[-+]? 0b [0-1_]+ +| [-+]? 0 [0-7_]+ +| [-+]? (?: 0|[1-9][0-9_]*) +| [-+]? 0x [0-9a-fA-F_]+ +| [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ +) +) +| ( +(?x: +[-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? +| [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* +| [-+]? \\. (?: inf|Inf|INF) +| \\. (?: nan|NaN|NAN) +) +) +| ( +(?x: +\\d{4} - \\d{2} - \\d{2} +| \\d{4} +- \\d{1,2} +- \\d{1,2} +(?: [Tt] | [ \\t]+) \\d{1,2} +: \\d{2} +: \\d{2} +(?: \\.\\d*)? +(?: +(?:[ \\t]*) Z +| [-+] \\d{1,2} (?: :\\d{1,2})? +)? +) +) +| (=) +| (<<) +) +(?: +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +| \\s* : [\\[\\]{},] +| \\s* [\\[\\]{},] +) +) +`}]},"flow-scalar-plain-out":{patterns:[{include:"#flow-scalar-plain-out-implicit-type"},{begin:`(?x) +[^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] +| [?:-] \\S +`,end:`(?x) +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +) +`,name:"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{patterns:[{captures:{1:{name:"constant.language.null.yaml"},2:{name:"constant.language.boolean.yaml"},3:{name:"constant.numeric.integer.yaml"},4:{name:"constant.numeric.float.yaml"},5:{name:"constant.other.timestamp.yaml"},6:{name:"constant.language.value.yaml"},7:{name:"constant.language.merge.yaml"}},match:`(?x) +(?x: +(null|Null|NULL|~) +| (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) +| ( +(?: +[-+]? 0b [0-1_]+ +| [-+]? 0 [0-7_]+ +| [-+]? (?: 0|[1-9][0-9_]*) +| [-+]? 0x [0-9a-fA-F_]+ +| [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ +) +) +| ( +(?x: +[-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? +| [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* +| [-+]? \\. (?: inf|Inf|INF) +| \\. (?: nan|NaN|NAN) +) +) +| ( +(?x: +\\d{4} - \\d{2} - \\d{2} +| \\d{4} +- \\d{1,2} +- \\d{1,2} +(?: [Tt] | [ \\t]+) \\d{1,2} +: \\d{2} +: \\d{2} +(?: \\.\\d*)? +(?: +(?:[ \\t]*) Z +| [-+] \\d{1,2} (?: :\\d{1,2})? +)? +) +) +| (=) +| (<<) +) +(?x: +(?= +\\s* $ +| \\s+ \\# +| \\s* : (\\s|$) +) +) +`}]},"flow-scalar-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.yaml"}},end:"'(?!')",endCaptures:{0:{name:"punctuation.definition.string.end.yaml"}},name:"string.quoted.single.yaml",patterns:[{match:"''",name:"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.sequence.begin.yaml"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.sequence.end.yaml"}},name:"meta.flow-sequence.yaml",patterns:[{include:"#prototype"},{match:",",name:"punctuation.separator.sequence.yaml"},{include:"#flow-pair"},{include:"#flow-node"}]},"flow-value":{patterns:[{begin:"\\G(?![},\\]])",end:"(?=[},\\]])",name:"meta.flow-pair.value.yaml",patterns:[{include:"#flow-node"}]}]},node:{patterns:[{include:"#block-node"}]},property:{begin:"(?=!|&)",end:"(?!\\G)",name:"meta.property.yaml",patterns:[{captures:{1:{name:"keyword.control.property.anchor.yaml"},2:{name:"punctuation.definition.anchor.yaml"},3:{name:"entity.name.type.anchor.yaml"},4:{name:"invalid.illegal.character.anchor.yaml"}},match:"\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"},{match:`(?x) +\\G +(?: +! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ > +| (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+ +| ! +) +(?=\\ |\\t|$) +`,name:"storage.type.tag-handle.yaml"},{match:"\\S+",name:"invalid.illegal.tag-handle.yaml"}]},prototype:{patterns:[{include:"#comment"},{include:"#property"}]}},scopeName:"source.yaml",aliases:["yml"]});var e=[n];export{e as default}; diff --git a/assets/chunks/zenscript.B1nm99XP.js b/assets/chunks/zenscript.B1nm99XP.js new file mode 100644 index 000000000..82958c88e --- /dev/null +++ b/assets/chunks/zenscript.B1nm99XP.js @@ -0,0 +1,2 @@ +const e=Object.freeze({displayName:"ZenScript",fileTypes:["zs"],name:"zenscript",patterns:[{comment:"numbers",match:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\\b",name:"constant.numeric.zenscript"},{comment:"prefixedNumbers",match:"\\b\\-?(0b|0x|0o|0B|0X|0O)(0|[1-9a-fA-F][0-9a-fA-F_]*)[a-zA-Z_]*\\b",name:"constant.numeric.zenscript"},{include:"#code"},{comment:"arrays",match:"\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)(?=\\[)",name:"storage.type.object.array.zenscript"}],repository:{brackets:{patterns:[{captures:{1:{name:"keyword.control.zenscript"},2:{name:"keyword.other.zenscript"},3:{name:"keyword.control.zenscript"},4:{name:"variable.other.zenscript"},5:{name:"keyword.control.zenscript"},6:{name:"constant.numeric.zenscript"},7:{name:"keyword.control.zenscript"}},comment:"items and blocks",match:"(<)\\b(.*?)(:(.*?(:(\\*|\\d+)?)?)?)(>)",name:"keyword.other.zenscript"}]},class:{captures:{1:{name:"storage.type.zenscript"},2:{name:"entity.name.type.class.zenscript"}},comment:"class",match:"(zenClass)\\s+(\\w+)",name:"meta.class.zenscript"},code:{patterns:[{include:"#class"},{include:"#functions"},{include:"#dots"},{include:"#quotes"},{include:"#brackets"},{include:"#comments"},{include:"#var"},{include:"#keywords"},{include:"#constants"},{include:"#operators"}]},comments:{patterns:[{comment:"inline comments",match:`//[^ +]*`,name:"comment.line.double=slash"},{begin:"\\/\\*",beginCaptures:{0:{name:"comment.block"}},comment:"block comments",end:"\\*\\/",endCaptures:{0:{name:"comment.block"}},name:"comment.block"}]},dots:{captures:{1:{name:"storage.type.zenscript"},2:{name:"keyword.control.zenscript"},5:{name:"keyword.control.zenscript"}},comment:"dots",match:"\\b(\\w+)(\\.)(\\w+)((\\.)(\\w+))*",name:"plain.text.zenscript"},functions:{captures:{0:{name:"storage.type.function.zenscript"},1:{name:"entity.name.function.zenscript"}},comment:"functions",match:"function\\s+([A-Za-z_$][\\w$]*)\\s*(?=\\()",name:"meta.function.zenscript"},keywords:{patterns:[{comment:"statement keywords",match:"\\b(instanceof|get|implements|set|import|function|override|const|if|else|do|while|for|throw|panic|lock|try|catch|finally|return|break|continue|switch|case|default|in|is|as|match|throws|super|new)\\b",name:"keyword.control.zenscript"},{comment:"storage keywords",match:"\\b(zenClass|zenConstructor|alias|class|interface|enum|struct|expand|variant|set|void|bool|byte|sbyte|short|ushort|int|uint|long|ulong|usize|float|double|char|string)\\b",name:"storage.type.zenscript"},{comment:"modifier keywords",match:"\\b(variant|abstract|final|private|public|export|internal|static|protected|implicit|virtual|extern|immutable)\\b",name:"storage.modifier.zenscript"},{comment:"annotation keywords",match:"\\b(Native|Precondition)\\b",name:"entity.other.attribute-name"},{comment:"language keywords",match:"\\b(null|true|false)\\b",name:"constant.language"}]},operators:{patterns:[{comment:"math operators",match:"\\b(\\.|\\.\\.|\\.\\.\\.|,|\\+|\\+=|\\+\\+|-|-=|--|~|~=|\\*|\\*=|/|/=|%|%=|\\||\\|=|\\|\\||&|&=|&&|\\^|\\^=|\\?|\\?\\.|\\?\\?|<|<=|<<|<<=|>|>=|>>|>>=|>>>|>>>=|=>|=|==|===|!|!=|!==|\\$|`)\\b",name:"keyword.control"},{comment:"colons",match:"\\b(;|:)\\b",name:"keyword.control"}]},quotes:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.zenscript"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.zenscript"}},name:"string.quoted.double.zenscript",patterns:[{match:"\\\\.",name:"constant.character.escape.zenscript"}]},{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.zenscript"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.zenscript"}},name:"string.quoted.single.zenscript",patterns:[{match:"\\\\.",name:"constant.character.escape.zenscript"}]}]},var:{comment:"var",match:"\\b(val|var)\\b",name:"storage.type"}},scopeName:"source.zenscript"});var t=[e];export{t as default}; diff --git a/assets/chunks/zig.Bsp1M94H.js b/assets/chunks/zig.Bsp1M94H.js new file mode 100644 index 000000000..9e732ee10 --- /dev/null +++ b/assets/chunks/zig.Bsp1M94H.js @@ -0,0 +1 @@ +const e=Object.freeze({displayName:"Zig",fileTypes:["zig","zon"],name:"zig",patterns:[{include:"#comments"},{include:"#strings"},{include:"#keywords"},{include:"#operators"},{include:"#numbers"},{include:"#support"},{include:"#variables"}],repository:{commentContents:{patterns:[{match:"\\b(TODO|FIXME|XXX|NOTE)\\b:?",name:"keyword.todo.zig"}]},comments:{patterns:[{begin:"//[!/](?=[^/])",end:"$",name:"comment.line.documentation.zig",patterns:[{include:"#commentContents"}]},{begin:"//",end:"$",name:"comment.line.double-slash.zig",patterns:[{include:"#commentContents"}]}]},keywords:{patterns:[{match:"\\binline\\b(?!\\s*\\bfn\\b)",name:"keyword.control.repeat.zig"},{match:"\\b(while|for)\\b",name:"keyword.control.repeat.zig"},{match:"\\b(extern|packed|export|pub|noalias|inline|comptime|volatile|align|linksection|threadlocal|allowzero|noinline|callconv)\\b",name:"keyword.storage.zig"},{match:"\\b(struct|enum|union|opaque)\\b",name:"keyword.structure.zig"},{match:"\\b(asm|unreachable)\\b",name:"keyword.statement.zig"},{match:"\\b(break|return|continue|defer|errdefer)\\b",name:"keyword.control.flow.zig"},{match:"\\b(await|resume|suspend|async|nosuspend)\\b",name:"keyword.control.async.zig"},{match:"\\b(try|catch)\\b",name:"keyword.control.trycatch.zig"},{match:"\\b(if|else|switch|orelse)\\b",name:"keyword.control.conditional.zig"},{match:"\\b(null|undefined)\\b",name:"keyword.constant.default.zig"},{match:"\\b(true|false)\\b",name:"keyword.constant.bool.zig"},{match:"\\b(usingnamespace|test|and|or)\\b",name:"keyword.default.zig"},{match:"\\b(bool|void|noreturn|type|error|anyerror|anyframe|anytype|anyopaque)\\b",name:"keyword.type.zig"},{match:"\\b(f16|f32|f64|f80|f128|u\\d+|i\\d+|isize|usize|comptime_int|comptime_float)\\b",name:"keyword.type.integer.zig"},{match:"\\b(c_char|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|c_longlong|c_ulonglong|c_longdouble)\\b",name:"keyword.type.c.zig"}]},numbers:{patterns:[{match:"\\b0x[0-9a-fA-F][0-9a-fA-F_]*(\\.[0-9a-fA-F][0-9a-fA-F_]*)?([pP][+-]?[0-9a-fA-F_]+)?\\b",name:"constant.numeric.hexfloat.zig"},{match:"\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?\\b",name:"constant.numeric.float.zig"},{match:"\\b[0-9][0-9_]*\\b",name:"constant.numeric.decimal.zig"},{match:"\\b0x[a-fA-F0-9_]+\\b",name:"constant.numeric.hexadecimal.zig"},{match:"\\b0o[0-7_]+\\b",name:"constant.numeric.octal.zig"},{match:"\\b0b[01_]+\\b",name:"constant.numeric.binary.zig"},{match:"\\b[0-9](([eEpP][+-])|[0-9a-zA-Z_])*(\\.(([eEpP][+-])|[0-9a-zA-Z_])*)?([eEpP][+-])?[0-9a-zA-Z_]*\\b",name:"constant.numeric.invalid.zig"}]},operators:{patterns:[{match:"(?<=\\[)\\*c(?=\\])",name:"keyword.operator.c-pointer.zig"},{match:"(\\b(and|or)\\b)|(==|!=|<=|>=|<|>)",name:"keyword.operator.comparison.zig"},{match:"(-%?|\\+%?|\\*%?|/|%)=?",name:"keyword.operator.arithmetic.zig"},{match:"(<<%?|>>|!|&|\\^|\\|)=?",name:"keyword.operator.bitwise.zig"},{match:"(==|\\+\\+|\\*\\*|->)",name:"keyword.operator.special.zig"}]},stringcontent:{patterns:[{match:`\\\\([nrt'"\\\\]|(x[0-9a-fA-F]{2})|(u\\{[0-9a-fA-F]+\\}))`,name:"constant.character.escape.zig"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.zig"}]},strings:{patterns:[{begin:'"',end:'"',name:"string.quoted.double.zig",patterns:[{include:"#stringcontent"}]},{begin:"\\\\\\\\",end:"$",name:"string.multiline.zig"},{match:"'([^'\\\\]|\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'",name:"string.quoted.single.zig"}]},support:{patterns:[{comment:"Built-in functions",match:"@[_a-zA-Z][_a-zA-Z0-9]*",name:"support.function.builtin.zig"}]},variables:{patterns:[{name:"meta.function.declaration.zig",patterns:[{captures:{1:{name:"storage.type.function.zig"},2:{name:"entity.name.type.zig"}},match:"\\b(fn)\\s+([A-Z][a-zA-Z0-9]*)\\b"},{captures:{1:{name:"storage.type.function.zig"},2:{name:"entity.name.function.zig"}},match:"\\b(fn)\\s+([_a-zA-Z][_a-zA-Z0-9]*)\\b"},{begin:'\\b(fn)\\s+@"',beginCaptures:{1:{name:"storage.type.function.zig"}},end:'"',name:"entity.name.function.string.zig",patterns:[{include:"#stringcontent"}]},{match:"\\b(const|var|fn)\\b",name:"keyword.default.zig"}]},{name:"meta.function.call.zig",patterns:[{match:"([A-Z][a-zA-Z0-9]*)(?=\\s*\\()",name:"entity.name.type.zig"},{match:"([_a-zA-Z][_a-zA-Z0-9]*)(?=\\s*\\()",name:"entity.name.function.zig"}]},{name:"meta.variable.zig",patterns:[{match:"\\b[_a-zA-Z][_a-zA-Z0-9]*\\b",name:"variable.zig"},{begin:'@"',end:'"',name:"variable.string.zig",patterns:[{include:"#stringcontent"}]}]}]}},scopeName:"source.zig"});var n=[e];export{n as default}; diff --git a/assets/coalesce-swashbuckle-with.CAm134Ta.jpg b/assets/coalesce-swashbuckle-with.CAm134Ta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..504ea963cbcb2434615975ee094a21771bf927a5 GIT binary patch literal 150370 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 W#5zg;0Q>>{`uwVcf3FYh4g4QHKANWh literal 0 HcmV?d00001 diff --git a/assets/coalesce-swashbuckle-without.C9T1kd2R.jpg b/assets/coalesce-swashbuckle-without.C9T1kd2R.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72fc98be882043a2ddb5e4d16166784fb296edd4 GIT binary patch literal 108732 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 K%S037|C<1+k>QX4 literal 0 HcmV?d00001 diff --git a/assets/concepts_include-tree.md.DXBP6NUV.js b/assets/concepts_include-tree.md.DXBP6NUV.js new file mode 100644 index 000000000..4e84cab5d --- /dev/null +++ b/assets/concepts_include-tree.md.DXBP6NUV.js @@ -0,0 +1,90 @@ +import{_ as o,c as l,I as p,w as t,a7 as a,D as c,o as r,l as s,a as e}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"Include Tree","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/include-tree.md","filePath":"concepts/include-tree.md"}'),D={name:"concepts/include-tree.md"},y=a(`<h1 id="include-tree" tabindex="-1">Include Tree <a class="header-anchor" href="#include-tree" aria-label="Permalink to "Include Tree"">​</a></h1><p>When Coalesce maps from the your POCO objects that are returned from EF Core queries, it will follow a structure called an <code>IncludeTree</code> to determine what relationships to follow and how deep to go in re-creating that structure in the mapped DTOs.</p><h2 id="purpose" tabindex="-1">Purpose <a class="header-anchor" href="#purpose" aria-label="Permalink to "Purpose"">​</a></h2><p>Without an <code>IncludeTree</code> present, Coalesce will map the entire object graph that is reachable from the root object. This can often spiral out of control if there aren't any rules defining how far to go while turning this graph into a tree.</p><p>For example, suppose you had the following model with a many-to-many relationship (key properties omitted for brevity):</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Projects"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">EmployeeProject</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">WithProjectsAndMembers</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">ClaimsPrincipal</span><span style="color:#9CDCFE;"> user</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Load all projects of an employee, as well as all members of those projects.</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Project</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employee</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Project</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Employees"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">EmployeeProject</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> EmployeeProject</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#9CDCFE;"> Employee</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Project</span><span style="color:#9CDCFE;"> Project</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Now, imagine that you have five employees and five projects, with every employee being a member of every project (i.e. there are 25 EmployeeProject rows).</p><p>Your client code makes a call to the Coalesce-generated API to load Employee #1 using the custom data source:</p>`,8),i=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Employee"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"EmployeeViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," employee"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," EmployeeViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"WithProjectsAndMembers"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),d=a(`<p>If you're already familiar with the fact that an <code>IncludeTree</code> is implicitly created in this scenario, then imagine for a moment that this is not the case (if you're not familiar with this fact, then keep reading!).</p><p>After Coalesce has called your <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> and evaluated the EF IQueryable returned, there are now 35 objects loaded into the current <code>DbContext</code> being used to handle this request - the 5 employees, 5 projects, and 25 relationships.</p><p>To map these objects to DTOs, we start with the root (employee #1) and expand outward from there until the entire object graph has been faithfully re-created with DTO objects, including all navigation properties.</p><p>The root DTO object (employee #1) then eventually is passed to the JSON serializer by ASP.NET Core to formulate the response to the request. As the object is serialized to JSON, the only objects that are not serialized are those that were already serialized as an ancestor of itself. What this ultimately means is that the structure of the serialized JSON with our example scenario ends up following a pattern like this (the vast majority of items have been omitted):</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki dark-plus vp-code"><code><span class="line"><span>Employee#1</span></span> +<span class="line"><span> EmployeeProject#1</span></span> +<span class="line"><span> Project#1</span></span> +<span class="line"><span> EmployeeProject#6</span></span> +<span class="line"><span> Employee#2</span></span> +<span class="line"><span> EmployeeProject#7</span></span> +<span class="line"><span> Project#2</span></span> +<span class="line"><span> ... continues down through all remaining employees and projects.</span></span> +<span class="line"><span> ...</span></span> +<span class="line"><span> EmployeeProject#11</span></span> +<span class="line"><span> Employee#3</span></span> +<span class="line"><span> ...</span></span> +<span class="line"><span> EmployeeProject#2</span></span> +<span class="line"><span> Project#2</span></span> +<span class="line"><span> ...</span></span></code></pre></div><p>See how the structure includes the EmployeeProjects of Employee#2? We didn't write our custom data source calls to <code>.Include</code> in such a way that indicated that we wanted the root employee, their projects, the employees of those projects, and then <strong>the projects of those employees</strong>. But, because the JSON serializer blindly follows the object graph, that's what gets serialized. It turns out that the depth of the tree increases on the order of <code>O(n^2)</code>, and the total size increases on the order of <code>Ω(n!)</code>.</p><p>This is where <code>IncludeTree</code> comes in. When you use a custom data source like we did above, Coalesce automatically captures the structure of the calls to <code>.Include</code> and <code>.ThenInclude</code>, and uses this to perform trimming during creation of the DTO objects.</p><p>With an <code>IncludeTree</code> in place, our new serialized structure looks like this:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki dark-plus vp-code"><code><span class="line"><span>Employee#1</span></span> +<span class="line"><span> EmployeeProject#1</span></span> +<span class="line"><span> Project#1</span></span> +<span class="line"><span> EmployeeProject#6</span></span> +<span class="line"><span> Employee#2</span></span> +<span class="line"><span> EmployeeProject#11</span></span> +<span class="line"><span> Employee#3</span></span> +<span class="line"><span> ...</span></span> +<span class="line"><span> EmployeeProject#2</span></span> +<span class="line"><span> Project#2</span></span> +<span class="line"><span> ...</span></span></code></pre></div><p>No more extra data trailing off the end of the projects' employees!</p><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to "Usage"">​</a></h2><h3 id="custom-data-sources" tabindex="-1">Custom Data Sources <a class="header-anchor" href="#custom-data-sources" aria-label="Permalink to "Custom Data Sources"">​</a></h3><p>In most cases, you don't have to worry about creating an <code>IncludeTree</code>. When using the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> (or a derivative), the structure of the <code>.Include</code> and <code>.ThenInclude</code> calls will be captured automatically and be turned into an <code>IncludeTree</code>. Projected queries are also supported, although very complex projections might not capture all paths - please open an issue if you find a scenario that doesn't work.</p><p>However, there are sometimes cases where you perform complex loading in these methods that involves loading data into the current <code>DbContext</code> outside of the <code>IQueryable</code> that is returned from the method. The most common situation for this is needing to conditionally load related data - for example, load all children of an object where the child has a certain value of a Status property.</p><p>In these cases, Coalesce provides a pair of extension methods, <code>.IncludedSeparately</code> and <code>.ThenIncluded</code>, that can be used to merge in the structure of the data that was loaded separately from the main <code>IQueryable</code>.</p><p>For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // Load all projects that are complete, and their members, into the db context.</span></span> +<span class="line"><span style="color:#9CDCFE;"> Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Projects</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employee</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Status</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">ProjectStatus</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Complete</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Load</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Return an employee query, and notify Coalesce that we loaded the projects in a different query.</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">IncludedSeparately</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenIncluded</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Project</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenIncluded</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employee</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>You can also override the <code>GetIncludeTree</code> method of the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> to achieve the same result:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IncludeTree</span><span style="color:#DCDCAA;"> GetIncludeTree</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">T</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) => </span><span style="color:#9CDCFE;">Db</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#9CDCFE;">Employees</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">IncludedSeparately</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenIncluded</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Project</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeProjects</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenIncluded</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ep</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employee</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">GetIncludeTree</span><span style="color:#D4D4D4;">();</span></span></code></pre></div><h3 id="model-methods" tabindex="-1">Model Methods <a class="header-anchor" href="#model-methods" aria-label="Permalink to "Model Methods"">​</a></h3><p>If you have <a href="/Coalesce/modeling/model-components/methods.html">custom methods</a> that return object data, you may also want to control the structure of the returned data when it is serialized. Fortunately, you can also use <code>IncludeTree</code> in these situations. Without an <code>IncludeTree</code>, the entire object graph is traversed and serialized without limit.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>An <code>IncludeTree</code> can be obtained from any <code>IQueryable</code> by calling the <code>GetIncludeTree</code> extension method (<code>using IntelliTect.Coalesce.Helpers.IncludeTree</code>).</p><p>In situations where your root object isn't on your <code>DbContext</code> (see <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a>), you can use <code>Enumerable.Empty<MyNonDbClass>().AsQueryable()</code> to get an <code>IQueryable</code> to start from. When you do this, you <strong>must</strong> use <code>IncludedSeparately</code> - the regular EF <code>Include</code> method won't work without a <code>DbSet</code>.</p></div><p>To return an <code>IncludeTree</code> from a custom method is to make that method return an <code>ItemResult<T></code>, and then set the <code>IncludeTree</code> property of the <code>ItemResult</code> object. For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ItemResult</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">>>> </span><span style="color:#DCDCAA;">GetChainOfCommand</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Supervisor</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> ret</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> List</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> current</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">current</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Supervisor</span><span style="color:#D4D4D4;"> != </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> ret</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Push</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">current</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;"> current</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">await</span><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FirstOrDefaultAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">current</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">SupervisorId</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> new</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ret</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">includeTree</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetIncludeTree</span><span style="color:#D4D4D4;">());</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="external-type-caveats" tabindex="-1">External Type Caveats <a class="header-anchor" href="#external-type-caveats" aria-label="Permalink to "External Type Caveats"">​</a></h3><p>One important point remains regarding <code>IncludeTree</code> - it is not used to control the serialization of objects which are not mapped to the database, known as <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a>. External Types are always put into the DTOs when encountered (unless otherwise prevented by <a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a> or <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>), with the assumption that because these objects are created by you (as opposed to Entity Framework), you are responsible for preventing any undesired circular references.</p><p>By not filtering unmapped properties, you as the developer don't need to account for them in every place throughout your application where they appear - instead, they 'just work' and show up on the client as expected.</p><p>Note also that this statement does not apply to database-mapped objects that hang off of unmapped objects - any time a database-mapped object appears, it will be controlled by your include tree. If no include tree is present (because nothing was specified for the unmapped property), these mapped objects hanging off of unmapped objects will be serialized freely and with all circular references, unless you include some calls to <code>.IncludedSeparately(m => m.MyUnmappedProperty.MyMappedProperty)</code> to limit those objects down.</p>`,28);function C(u,h,m,E,b,g){const n=c("CodeTabs");return r(),l("div",null,[y,p(n,null,{vue:t(()=>[i]),_:1}),d])}const j=o(D,[["render",C]]);export{F as __pageData,j as default}; diff --git a/assets/concepts_include-tree.md.DXBP6NUV.lean.js b/assets/concepts_include-tree.md.DXBP6NUV.lean.js new file mode 100644 index 000000000..07a607588 --- /dev/null +++ b/assets/concepts_include-tree.md.DXBP6NUV.lean.js @@ -0,0 +1,6 @@ +import{_ as o,c as l,I as p,w as t,a7 as a,D as c,o as r,l as s,a as e}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"Include Tree","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/include-tree.md","filePath":"concepts/include-tree.md"}'),D={name:"concepts/include-tree.md"},y=a("",8),i=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Employee"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"EmployeeViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," employee"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," EmployeeViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"WithProjectsAndMembers"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"employee"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),d=a("",28);function C(u,h,m,E,b,g){const n=c("CodeTabs");return r(),l("div",null,[y,p(n,null,{vue:t(()=>[i]),_:1}),d])}const j=o(D,[["render",C]]);export{F as __pageData,j as default}; diff --git a/assets/concepts_includes.md.BXk9quAA.js b/assets/concepts_includes.md.BXk9quAA.js new file mode 100644 index 000000000..62b4623af --- /dev/null +++ b/assets/concepts_includes.md.BXk9quAA.js @@ -0,0 +1,36 @@ +import{_ as p,c as r,I as o,w as a,a as e,l as s,a7 as l,D as n,o as i}from"./chunks/framework.BkavzUpE.js";const I=JSON.parse('{"title":"Includes String","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/includes.md","filePath":"concepts/includes.md"}'),d={name:"concepts/includes.md"},D=s("h1",{id:"includes-string",tabindex:"-1"},[e("Includes String "),s("a",{class:"header-anchor",href:"#includes-string","aria-label":'Permalink to "Includes String"'},"​")],-1),u=s("p",null,'Coalesce provides a number of extension points for loading & serialization which make use of a concept called an "includes string" (also referred to as "include string" or just "includes").',-1),y=s("h2",{id:"includes-string-1",tabindex:"-1"},[e("Includes String "),s("a",{class:"header-anchor",href:"#includes-string-1","aria-label":'Permalink to "Includes String"'},"​")],-1),h=s("p",null,"The includes string is simply a string which can be set to any arbitrary value. It is passed from the client to the server in order to customize data loading and serialization. It can be set on both the TypeScript ViewModels and the ListViewModels.",-1),C=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," person"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")])])])],-1),m=l(`<p>The default value (i.e. no action) is the empty string.</p><h3 id="special-values" tabindex="-1">Special Values <a class="header-anchor" href="#special-values" aria-label="Permalink to "Special Values"">​</a></h3><p>There are a few values of <code>includes</code> that are either set by default in the auto-generated views, or otherwise have special meaning:</p><table><thead><tr><th>Value</th><th>Description</th></tr></thead><tbody><tr><td><code>'none'</code></td><td>Setting <code>includes</code> to <code>none</code> suppresses the <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">Default Loading Behavior</a> provided by the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> - The resulting data will be the requested object (or list of objects) and nothing more.</td></tr><tr><td><code>'admin-list'</code></td><td>Used when loading a list of objects in the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">Vue admin list page</a>.</td></tr><tr><td><code>'admin-editor'</code></td><td>Used when loading an object in the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html">Vue admin editor component</a>.</td></tr><tr><td><code>'Editor'</code></td><td>Legacy. Used when loading an object in the generated Knockout CreateEdit views.</td></tr><tr><td><code>'<ModelName>ListGen'</code></td><td>Legacy. Used when loading a list of objects in the generated Knockout Table and Cards views. For example, <code>PersonListGen</code></td></tr></tbody></table><h2 id="dtoincludes-dtoexcludes" tabindex="-1">DtoIncludes & DtoExcludes <a class="header-anchor" href="#dtoincludes-dtoexcludes" aria-label="Permalink to "DtoIncludes & DtoExcludes"">​</a></h2><p>Main document: <a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a>.</p><p>There are two C# attributes, <code>DtoIncludes</code> and <code>DtoExcludes</code>, that can be used to annotate your data model in order to customize what data gets put into the DTOs and ultimately serialized to JSON and sent out to the client.</p><p>When the database entries are returned to the client they will be trimmed based on the requested includes string and the values in <code>DtoExcludes</code> and <code>DtoIncludes</code>.</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>These attributes are <strong>not security attributes</strong> - consumers of your application's API can set the includes string to any value when making a request.</p><p>Do not use them to keep certain data private - use the <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a> family of attributes for that.</p></div><p>It is important to note that the value of the includes string will match against these attributes on <em>any</em> of your models that appears in the object graph being mapped to DTOs - it is not limited only to the model type of the root object.</p><div class="tip custom-block"><p class="custom-block-title">Important</p><p><code>DtoIncludes</code> does not ensure that specific data will be loaded from the database. It only <em>permits</em> what is <em>already</em> loaded into the current EF DbContext to be returned from the API. See <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> to learn how to control what data gets loaded from the database.</p></div><h3 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h3><p>Server code:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // Don't include CreatedBy when editing - will be included for all other views</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoExcludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Editor"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> AppUser</span><span style="color:#9CDCFE;"> CreatedBy</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Only include the Person's Department when \`includes == "details"\` on the TypeScript ViewModel.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoIncludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"details"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // LastName will be included in all views</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Department</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoIncludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"details"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">People</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Client code:</p>`,15),b=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Editor"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList.$items will not contain CreatedBy nor Department objects.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList2"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList2"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. ")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Department will be allowed to include its other Person objects.")])])])],-1),g=s("h3",{id:"properties",tabindex:"-1"},[e("Properties "),s("a",{class:"header-anchor",href:"#properties","aria-label":'Permalink to "Properties"'},"​")],-1),w=l('<p>A comma-delimited list of values of <a href="/Coalesce/concepts/includes.html"><code>includes</code></a> on which to operate.</p><p>For <code>DtoIncludes</code>, this will be the values of <code>includes</code> for which this property will be <strong>allowed</strong> to be serialized and sent to the client.</p><p>For <code>DtoExcludes</code>, this will be the values of <code>includes</code> for which this property will <strong>not</strong> be serialized and sent to the client.</p>',3);function f(_,E,v,P,A,F){const t=n("CodeTabs"),c=n("Prop");return i(),r("div",null,[D,u,y,h,o(t,null,{vue:a(()=>[C]),_:1}),m,o(t,null,{vue:a(()=>[b]),_:1}),g,o(c,{def:"public string ContentViews { get; set; }",ctor:"1"}),e(),w])}const T=p(d,[["render",f]]);export{I as __pageData,T as default}; diff --git a/assets/concepts_includes.md.BXk9quAA.lean.js b/assets/concepts_includes.md.BXk9quAA.lean.js new file mode 100644 index 000000000..d555d67ea --- /dev/null +++ b/assets/concepts_includes.md.BXk9quAA.lean.js @@ -0,0 +1,18 @@ +import{_ as p,c as r,I as o,w as a,a as e,l as s,a7 as l,D as n,o as i}from"./chunks/framework.BkavzUpE.js";const I=JSON.parse('{"title":"Includes String","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/includes.md","filePath":"concepts/includes.md"}'),d={name:"concepts/includes.md"},D=s("h1",{id:"includes-string",tabindex:"-1"},[e("Includes String "),s("a",{class:"header-anchor",href:"#includes-string","aria-label":'Permalink to "Includes String"'},"​")],-1),u=s("p",null,'Coalesce provides a number of extension points for loading & serialization which make use of a concept called an "includes string" (also referred to as "include string" or just "includes").',-1),y=s("h2",{id:"includes-string-1",tabindex:"-1"},[e("Includes String "),s("a",{class:"header-anchor",href:"#includes-string-1","aria-label":'Permalink to "Includes String"'},"​")],-1),h=s("p",null,"The includes string is simply a string which can be set to any arbitrary value. It is passed from the client to the server in order to customize data loading and serialization. It can be set on both the TypeScript ViewModels and the ListViewModels.",-1),C=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," person"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")])])])],-1),m=l("",15),b=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Editor"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList.$items will not contain CreatedBy nor Department objects.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList2"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList2"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. ")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Department will be allowed to include its other Person objects.")])])])],-1),g=s("h3",{id:"properties",tabindex:"-1"},[e("Properties "),s("a",{class:"header-anchor",href:"#properties","aria-label":'Permalink to "Properties"'},"​")],-1),w=l("",3);function f(_,E,v,P,A,F){const t=n("CodeTabs"),c=n("Prop");return i(),r("div",null,[D,u,y,h,o(t,null,{vue:a(()=>[C]),_:1}),m,o(t,null,{vue:a(()=>[b]),_:1}),g,o(c,{def:"public string ContentViews { get; set; }",ctor:"1"}),e(),w])}const T=p(d,[["render",f]]);export{I as __pageData,T as default}; diff --git a/assets/history.md.LjVhoNRC.js b/assets/history.md.LjVhoNRC.js new file mode 100644 index 000000000..f39704954 --- /dev/null +++ b/assets/history.md.LjVhoNRC.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as i}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse(`{"title":"Welcome to Coalesce's documentation!","description":"","frontmatter":{},"headers":[],"relativePath":"history.md","filePath":"history.md"}`),o={name:"history.md"},s=i('<h1 id="welcome-to-coalesce-s-documentation" tabindex="-1">Welcome to Coalesce's documentation! <a class="header-anchor" href="#welcome-to-coalesce-s-documentation" aria-label="Permalink to "Welcome to Coalesce's documentation!"">​</a></h1><p>Coalesce is a framework based on ASP.NET Core that makes rapidly building awesome websites much easier. A project that would take a 3 months to complete now takes 1 month. We built this because we got tired of writing all the boiler plate code that is necessary to make amazing sites.</p><p>It does this by allowing developers to focus on the creative aspects of the solution. The more mundane parts are generated automatically. This means that you get to focus on data modeling, business logic and front-end development. Coalesce does the plumbing.</p><p>Here is a typical workflow</p><ol><li>Build an EF Core data model with business logic</li><li>Coalesce generates controllers, TypeScript view models, API and view model documentation, and admin pages/examples</li><li>Build an interactive and intuitive user experience</li><li>Rinse and repeat</li></ol><h2 id="core-features" tabindex="-1">Core Features <a class="header-anchor" href="#core-features" aria-label="Permalink to "Core Features"">​</a></h2><ul><li>Built on the latest Microsoft ASP.NET Core</li><li>Easy to learn</li><li>TypeScript from the ground up</li><li>Flexibility to use MVC patterns as required</li><li>Admin pages for all your models are build automatically and include features like searching, sorting, and paging</li><li>Robust documentation for the framework</li><li>Automatically generated documentation for the API layer and TypeScript view models</li><li>Feature rich TypeScript view models that can be easily extended</li><li>Many extension points for customizations</li><li>Abstraction that doesn't require you know how everything works</li><li>Security and data trimming by role is built in</li><li>Flexibility about which data to return to the client</li><li>Open source</li></ul><h2 id="is-coalesce-for-everyone-and-every-project" tabindex="-1">Is Coalesce for Everyone and Every Project? <a class="header-anchor" href="#is-coalesce-for-everyone-and-every-project" aria-label="Permalink to "Is Coalesce for Everyone and Every Project?"">​</a></h2><p>Coalesce was designed to create line-of-business applications. It provides a more customizable and maintainable alternative to off the shelf customizable products like SharePoint and Sales Force.</p><p>You should consider using Coalesce if your project:</p><ul><li>Is small to medium size (1-200 classes)</li><li>Requires an interactive user experience</li><li>Has data entry requirements, especially forms, tables, etc.</li><li>Needs to get started quickly with functional prototypes that can become production software</li></ul><h2 id="design-decisions-and-limitations" tabindex="-1">Design Decisions and Limitations <a class="header-anchor" href="#design-decisions-and-limitations" aria-label="Permalink to "Design Decisions and Limitations"">​</a></h2><p>Coalesce is specifically designed to meet the needs of web developers. However, there are lots of ways to do this. We have made a set of decisions which we believe makes for a great development experience</p><ul><li>ASP.NET Core: there is no intent to back port this to an earlier version</li><li>EF Core for the object relational mapper</li><li>Currently uses the full framework because .NET Core doesn't supported the required functionality, yet</li><li>Knockout for client-side data binding</li><li>Business logic most easily lives in the model classes</li><li>Coalesce is designed for relational databases. This might change in the future, but not until we have a compelling use case.</li></ul><h2 id="how-does-it-work" tabindex="-1">How Does it Work? <a class="header-anchor" href="#how-does-it-work" aria-label="Permalink to "How Does it Work?"">​</a></h2><p>After you create your classes and the EF data context, Coalesce uses this information to generate code. When the Coalesce CLI (command line interface) is run, the following things happen:</p><ol><li>The model is validated to ensure that all the Coalesce specific requirements are met. This includes things like ensuring that all classes have a primary key assigned, validating that linked child objects have a key to their parent, etc. If issues are found, generation stops and the errors are displayed with advise to fix the issues.</li><li>The core files needed for Coalesce are copied to the target project. This includes TypeScript base classes, customizable templates, and other files for extension points. Each file is copied twice, once as a file that can be modified in the project and once as an original file. This ensures that if any changes are made by the user these files Coalesce will not overwrite the your changes.</li><li>The API controllers are generated. One is generated for each object. This includes methods that get a list of items, get a specific item, save an item, etc.</li><li>The TypeScript view models are created. There are two view models for each object. One is a list view model which allows for getting an displaying lists of a type of object. This includes full functionality to sort, filter, search, page, etc. Additionally, a view model that represents the individual object is also created. This has all the properties and methods of the server side object. This is basically a client-side proxy object for representing and manipulating the object on the server side. These objects seamlessly use the API controllers to interact with the server.</li><li>Next, the View controller are created. One is create for each model class and provide a tabular view, a card view (for mobile), an editor, and documentation.</li><li>Finally, the CSHTML views for the controller are created. These are the actual CSHTML for the above controllers. These not only provide administrative view and editing features, but also serve as an example of how to use the framework</li></ol><h2 id="general-guidance" tabindex="-1">General Guidance <a class="header-anchor" href="#general-guidance" aria-label="Permalink to "General Guidance"">​</a></h2><p>Here are a few things we have found helpful when using Coalesce</p><ul><li>Learn and embrace the Coalesce paradigm and work with it rather than trying to do things another way.</li><li>Following what we refer to as the 'well worn path' is very helpful. Try to stick to standard ways to do things rather than trying to use esoteric features.</li><li>Keep your models as consistent and straightforward as possible. Use relational modeling best practices.</li><li>Remember that public methods on your class models are added to the client side view models and this makes calling business logic from the client really easy.</li><li>Don't be afraid to fall back to building parts of your site using traditional methods. Coalesce isn't right for everything. But, honestly, we have only done this a few times, like 3.</li></ul><h1 id="the-story" tabindex="-1">The Story <a class="header-anchor" href="#the-story" aria-label="Permalink to "The Story"">​</a></h1><h2 id="why-coalesce" tabindex="-1">Why Coalesce <a class="header-anchor" href="#why-coalesce" aria-label="Permalink to "Why Coalesce"">​</a></h2><p>In 2014 several developers from IntelliTect got together to talk about our craft. There were lots of different backgrounds, but recently we had all been writing web code in C#. We discussed things we enjoyed and things we dreaded. There was an underlying commitment to providing customers with great sites at a reasonable cost. However, those things often seemed at odds because of the complexity of web development.</p><h2 id="the-problem" tabindex="-1">The Problem <a class="header-anchor" href="#the-problem" aria-label="Permalink to "The Problem"">​</a></h2><p>For example, writing AJAX drop down lists with type ahead takes quite a bit of plumbing. Layer onto this the need for view models that allow for validation and saving as the user moves from field to field. We absolutely want want to deliver visually pleasing sites with complex UI paradigms. However, all this excellence adds up: complex view models, complex APIs, data binding, ugh.</p><p>Then there is that sinking feeling when you have to add another class to the project knowing that you are going to need to create all this yet again and you consider taking short cuts. Will there really be more than about 20 items in this table, maybe we don't need paging. Inevitably, the customer asks for admin screens. We consider giving them SQL Server Management Console and then consider using the built in ASP.NET list and editor pages. Better sense wins out and we end up spending two weeks building slick admin pages with paging, searching, sorting, etc.</p><h2 id="the-path-to-the-solution" tabindex="-1">The Path to the Solution <a class="header-anchor" href="#the-path-to-the-solution" aria-label="Permalink to "The Path to the Solution"">​</a></h2><p>That evening we starting talking about the things we loved to do:</p><ul><li>Data modeling</li><li>Figuring out and writing business logic</li><li>Working with customers</li><li>Making cool user interfaces</li><li>Creating something new and awesome</li></ul><p>We also lists things that we didn't enjoy</p><ul><li>Writing the same controller again</li><li>Creating a view model for a class that is similar but different from another one in the project</li><li>Putting sorting and paging on every admin page</li><li>Basically doing anything that feels repetitive or boilerplate</li></ul><p>Over the next few months we talked about this issue, but couldn't find the right abstraction. We talked about other solutions that solve parts of the problem and considered putting together something from several pieces. Nothing felt unified and we ended up with leaky abstractions. We needed some way to divide the problem so that we could build the fun stuff and have something generate the boring stuff. This solution needed to be robust enough to satisfy our customer's needs and also be of use to developers without their needing to know the inner workings of the system.</p><h2 id="our-solution" tabindex="-1">Our Solution <a class="header-anchor" href="#our-solution" aria-label="Permalink to "Our Solution"">​</a></h2><p>What if we could build the models and business logic and have a tool build everything except the UI? There are great tools like Entity Framework for modeling and good tooling for minimizing duplicate code in user interfaces. And so Coalesce was born, a tool that would bring together the backend and front end development. '</p><p>Coalesce takes Entity Framework Core models and builds controllers, TypeScript view models, and admin pages automatically. These are built in a general way so that they can be applied to many different scenarios. There will always be pages that need to be written by hand and we intentionally don't support many edge cases in order to keep things simple. There is nothing wrong with building something by hand.</p><h2 id="how-has-it-worked" tabindex="-1">How has it Worked? <a class="header-anchor" href="#how-has-it-worked" aria-label="Permalink to "How has it Worked?"">​</a></h2><p>We have been using Coalesce for many of our web projects with great success. Typically, a project is taking about 1/3 the time it was taking before once developers ramp up. The ramp up on Coalesce has typically been a couple of days. We realized that in order for Coalesce to be useful it need to be intuitive to use and easy to understand. We have intentionally used simple paradigms to minimize the learning curve. There are complex bits, but hopefully, those are well hidden and documented as needed.</p>',37),n=[s];function l(r,d,h,c,u,m){return a(),t("div",null,n)}const f=e(o,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/history.md.LjVhoNRC.lean.js b/assets/history.md.LjVhoNRC.lean.js new file mode 100644 index 000000000..5ca414e80 --- /dev/null +++ b/assets/history.md.LjVhoNRC.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as i}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse(`{"title":"Welcome to Coalesce's documentation!","description":"","frontmatter":{},"headers":[],"relativePath":"history.md","filePath":"history.md"}`),o={name:"history.md"},s=i("",37),n=[s];function l(r,d,h,c,u,m){return a(),t("div",null,n)}const f=e(o,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/index.md.BKf9wlWP.js b/assets/index.md.BKf9wlWP.js new file mode 100644 index 000000000..0e537d6a4 --- /dev/null +++ b/assets/index.md.BKf9wlWP.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as a,D as r,o as n}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Coalesce","text":"Accelerated Web App Development","tagline":"ASP.NET Core • EF Core • Vue.js • TypeScript","image":{"src":"/coalesce-icon-color.svg","alt":"Coalesce"},"actions":[{"theme":"brand","text":"Introduction","link":"/introduction"},{"theme":"alt","text":"Get Started","link":"/stacks/vue/getting-started"}]},"features":[{"title":"🖨 Code Generated","details":"Design your data model and build awesome pages. Coalesce generates the boring parts in the middle."},{"title":"🧩 Extensible","details":"All functionality in Coalesce is configurable or overridable. You'll never be boxed in or get stuck."},{"title":"🔒 Secure","details":"Customization of table-level, row-level, and property-level security are all built-in. <a href=\\"/Coalesce/topics/security.html\\">Read More.</a>"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}`),i={name:"index.md"};function l(s,c,d,p,m,u){const e=r("SiteFooter");return n(),o("div",null,[a(e)])}const g=t(i,[["render",l]]);export{_ as __pageData,g as default}; diff --git a/assets/index.md.BKf9wlWP.lean.js b/assets/index.md.BKf9wlWP.lean.js new file mode 100644 index 000000000..0e537d6a4 --- /dev/null +++ b/assets/index.md.BKf9wlWP.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as a,D as r,o as n}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Coalesce","text":"Accelerated Web App Development","tagline":"ASP.NET Core • EF Core • Vue.js • TypeScript","image":{"src":"/coalesce-icon-color.svg","alt":"Coalesce"},"actions":[{"theme":"brand","text":"Introduction","link":"/introduction"},{"theme":"alt","text":"Get Started","link":"/stacks/vue/getting-started"}]},"features":[{"title":"🖨 Code Generated","details":"Design your data model and build awesome pages. Coalesce generates the boring parts in the middle."},{"title":"🧩 Extensible","details":"All functionality in Coalesce is configurable or overridable. You'll never be boxed in or get stuck."},{"title":"🔒 Secure","details":"Customization of table-level, row-level, and property-level security are all built-in. <a href=\\"/Coalesce/topics/security.html\\">Read More.</a>"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}`),i={name:"index.md"};function l(s,c,d,p,m,u){const e=r("SiteFooter");return n(),o("div",null,[a(e)])}const g=t(i,[["render",l]]);export{_ as __pageData,g as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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ÿ~UhzB_AzoN3pfe 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≧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 Y>#2G!v!0Z*&3d?>+fJ0G3s5L|0Nk>JVgLXD literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 Lik|2FucMv;*D2g< literal 0 HcmV?d00001 diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e070c3d30975e9f8d664ef36862a67f198ebb392 GIT binary patch literal 17404 zcmV)BK*PUxPew8T0RR9107Lu$6951J0H{C!07HiW1ONa400000000000000000000 z0000Qf?^woR2(WlNLE2oh<rayRzXsMC<b6ZQ&d4zfm|mv0E8GXfi?=nNWV!ifze(8 zHUcCAhyV+O0ssUc1&nkDARBg~6{=e^j=CLS_twext6|%epkB`noVQYoYh<8qF3x1~ z|F`4D7<z!}Js3ooxj~qqP;gf_T5e9mTaZJ&#TpK1ZPn#~+*_zXilIP(1I4LS+?GJE z;WdiAAmnx&NXb_+6M@MUlo%wVBr>qDCk<u<GeeaPeB@7m=Km~uzBuRZLuVVm2g`?M zQ1aS`j?maAxg-zY`}e$SAKni*a0RLYS;19`I+LQzq=PE41pUqrG`D}ZC~nQ7Zw&*+ zij+^3NTiDTwP{g8`(q$j8CZdlsNV#mz@}1x`}zNE{jU>%U}E%4TNCAYy)Ortm-QE& zY`_jG#3E7zjKoBHFsICzC`WjZ_S2VKiKVKRm!cYxo-)&F->289FIWVnpeUqBiG$?$ zOP0*6m{~~~wt=?}6Wk6scGx-=in3K^_3b{0vELGdwI?F)!4#3Fkg15N?-7NM;4<OS z)O~Z|Pm%(%WudC7fMkWL&~%s9xK{q>Q35L<RpPtQ0?xwhP)_xV0IxB<`+F>P2l&Ew ziCo}q$)b=YgDkNnSvnEhGRkq5|6SA8<`)3eWM7pS<(ey#h3!;rYv%|RN+3v+5&V3f z-=C{o<VLLrKu7*ER&M%c_r)!=lr`fjNtG1!@gE<^gcF`%AQ)kIw)=cG&33*<vgcT~ z8~cDa1Vv~0pbt@%(q(9NMvk;v>&e=aUaUQm?SOPBAA)A>13Bzm2uKdzvF!j-QHCp` z_R6#=s#H}{)M?7p`TMC#^)-4@^s_up>9$!4P-)e%(7P+4y<+J-*Uw3$Y^7r^EUCl# z?M4nu2np<%Xag1kN)Xu)$xZv!b`T|&;9vEMkpz}NTS1g$ngt)V*V)bOzNAxJ2B%Vu zp&1W~KNm_@jE`eHjxUoKg#w=M_nOjszs}Wv?%KEUjMDmdkR|}B_@M+Y1G40@<-639 z(lvo=t-CfAz@T8m6xmCZzA@6KYSZd^%mQ#}fPy3g8W4j_IFKfid7$<~#W1&XaL^Bn zB1s9QQTR{u{q;ESv#Ll{+-PKt!r<O#EXzdUvqP-FPk(7V!;BSyOVZ<}&WM`ZxDoLt zh#tTD2_OQ`y4w(d!xch6OqHqGc?lM(pBORX^f%B@BNUimktNEl(de*N7Y%vnlNz;& z0N9Mu3$QV+!ku^okIwZB9LNBNrt*O23IT`8Bud##FC++tb$NeOJ;*=<>C*QRkN*4p zkZvFFxi->Sf!6v^?k|7{r1rVWxj<TqL0adN-vUChmzmV-ud4^HfBP*yQ61!J#Phzs z|Mb?CFCVRaIj44^@=LqDZat$^yS0zkw3BlWBIn`(2!OeuV?zi(+U5f*_rgvMEFb}J z{w^@~(pC*L0HX{@KsS-QXopOt1WfqdoeI+}C^*5of3C|e8pfr@oEIlIhhvT!7n|UH zNK<h{_V=chIdUAg(`L7vdM%Hw5njTjabQli&NIfeLF0HcTvOKn%S!uuW6pQF_wr;) zM_Vgmd5-LD?gflaz&yAVsDLV{g$B@Y8ezsA+57*Nqbz>oj8=a-taM6bekdhQPlkU4 zqQ_AJb)poCP#R@`k#@u2GL!@w<rw4?I9+5krG-fhNs^3e5-{;|g)&T{4yBv)g%UyG z*-HR2nO&NIFgsCz*p*ZO5Q;K@$yZW=1cWA9XcSi<b^|g6AjOc!dY1++h2p?kEa39X zL7r-xI~{mjVO)ptuamytuyGh9AxIxU`g0Qc>#t<ZiS?l<e&NewV+NI||Fp&UCx-ui z&ne^o<pbBU&Obcc`oL`Z_IuZM-QU7*r~3cD@7;U!_m5=S<G+3=x2pd5i^DN@WB9D| zFy!M{=gH}>w%dDt@|3m<x$rpFW$e^PsfRv1*JGaTz#p_<>e)Rm9rOo(@ov3*<@Fb@ z1;qZ}x0ZAOKs&$y!N33@5GcQ%-@3jD7Q72%zlO1!>UYjTofk1N^6ZZx``6w(3trzN zJP3jh@3rjjgV}$UuJcg&FUi){ECckLq$A@R`^!we?rYk;t*h5H1>#i(-d7!|wzl2Z zfZ-~c_y000-|_p~X|MBh`)8%{$S!YbeUl}ZEbElLTH7YS|NG}Y0)Cs^TRyu0vkou{ zZ!t|xsl$M0sb27^(SLyp7khT%X1*_D`uJ&Htnlr@PoTWS{teIab<2e-xP^1qeEEgb zLNDAELRiy^@oD*YU4OE#bM5n+oAHQzzfGS5A|Q@x9{=$iV|(n#{3Vs+zux%CjPoEn z6sI!5+k6vF=PXaN{c$GKoH#{}vpLD+5H}4z#k*u*n~F&5#JNmzauri~Io>9ca6TGt z<jGhVCCW#%(U_+;wH9BVb)+Vy0hhAGgXsIXEpt5dzewliX|tWg%SkKXq6JqY^SjdH zvIco=6Y+y6JbcB*udi5{yh9GmAnf}=0w90)Y_~ECPR=+Nd>!aOY4ar-#+3zINDe)` zQao(N9iPZ4)?o)ZVTWf*fW;`vQ+cjwP=YhQ9g2%=U|_U4O9d>)OHcY79q=9QaEu|$ z9!&TWBn&=`4222%3|Cey_eR!8`1NtEs6)PL>l=m5JvDZ(>foU<C6BW7TDZH7%-W;a zw|`X5&CPN;V<O_X;l#<s^X%h&vv)RR8v8D?>C;2H+KPWNc36GnXgcwHXqC-`2OAET z3XH_y>pC3Q(_@$eu*>E@F!W2EH2e5?m)_0deZJq{?{4HRxD8Pc!yrwWfDDfRp_#yl z9_{)x>AH+%WF*H-y&~T^pUnB$@q6MKbov6wz)j?YbiaLCkDUW@OWwM%%K{{_E>@rb zRC}oywoUoGrlbl>(ss{M^;=w)PoF4GKf~@t@g`8sR$rg#0Q&W)2LgaHygmaqqX7a4 z(0~YFITXNd2zfWOulKls+b=J4dIXTalzz>6<Om?9V-X-qe`)d+S)h^v20*xC0c=Z5 zFd!CtZqht=_xe4;UE~@8F~^EM>2mpqXSCv3(x7&$&$DH$-=0hRGZ1FWAwOegCm@bs zv>TtDUomg)8WF`XTsF3RIo+~npdwLEP>=F{5`i?Z2h7jFdN?Xuz|aiG=or}^3`dn) zPmH!cN{pLmz>LETF(VAm5R+@qV#M#}np!+;HDOoN`sUAjzeQhw&$j>{uiU>W_w(jY z%TKcmKKid|@6uba6W@qv0=EN0M<ee3b@8enK|oM|Fauj?XzAz~7`Zr1N6)~>#LOat zHy^(I`0FD;qK6)-@YoYi{qLEPMj364H0d&A`cI8j)@-rvv<*Z3bjvT#)nWk~IJkKD zoC$0tBd4IGqNZ_`I}c`_EUau^c<GhbDph&ot!z2Q$~De-dGalkj{#1A0uzK9)T!64 z%U)Xb8Z<gf#g&O&lNN2xuxqjDoK~L@C`hnot=ipo$6dc&<TmKOB*{|r7o$U`KR)^- zN<UdfDDYP!1i)ehAb>MEu#Slh7Tv|>{lfXk;Jo8J(@b6zf)M(sbVw9pL%dj#gwzT5 zsx0JUMO6_>(OOXj=A=PYb!f!piZ*mk#;W=-h|+@bJAr<>VIMM{)iqmLFcGv)msOMS zwN=7&j&twHN`LDG@@*N{cc`_@LRN){U-rta(7F*9xAKJLh<hxtSuKl%q9oo@F^9($ zn#^)3Bqp3Ww$}zJ>NQLvvRXgj*Pz%#pPIJ9BS#X9pi#y`Kwscil&CRCTC5V)cR?Ue zOq+xjN@`+Kd2ytAhrP+$@9+Q6?Y+u6|MC;+a{exFGln{pzQ{V$J6EIZ62yZvMGB&P zCrWtCRJ4@IQ3w+i&@fLCTCsYEF?pLPhfkui?n17BgBt1gQX~m6nhcoB$Gi>%q9lwF zE?n`~mw~YotD;Yl3-IwyUIj7TVQ)m%vS?2L97l;cRz=EkM=**}HffEa=}*O%#rudy zWYM57M<UMLpV$(xjL7umnX54*frwtO!L5P8ixdo!!`c?zNEyqNus}txet%yreW7Uv z##|^??V-S@l1>nA^+T)V%~(R<QHT#z=uiSwJfjC9S?=j$pVu)#RpneH3ZjHnWTobA z>x6w^K`z!_-fn(H*O-rk;V8tdi4_Mk@YsojNT|JckFSeIq8`<Y`njqOs=KgE>~0j* zE+mU0P*uF4s4m=8K%@%fj<!YVmeb0C9$H@gv^wOp<)44)yq+1VP%SFT2|IraxL3ne zS*d$S$}3z^y*>H9fc*5K>yZcO%xm>TG}4G)d_<RcW@?XXl6=g>IoqXsdtzQlU3b#6 zC9-{w6TWS|PPZ+&?e!M>UQS-kDPdXY>XUi%_p<Z$0(Se^PH*jjiyI#NyF4GgbaGtm z6RK8RcChR2b-Hw_Lyu`1(b3~e-p|_fI+3w>$;hjRN9L<^^Xnvf!>FrAMjih{+p8Zb zihe05buL{|*~T?w%l3_!wk3JsQsw~WK-YzH5~q4I%iQ2^T3VvbfBfo`Hqo(4m>1ip zAbm}r*h!y$x{b+C8wKo`oE!OB6^rI3cWv=}n7CyA%{+M5?v$=={T~YF?a16RB72M1 zrJ)17<`*Ok&DhL~u+{7Gu$j{iLl1xHxwNQq;nE40&J>(tk8~-@4H%d@J0Phj@$#ab zDZC_Hyx?YKI$)CR*=S6jdj4+rTG3MRhWYqsCz8HuRdxE>3%<DK5G^bEeP#DF^;$c! zCENL)+LIn%S?Uq#p4i%JGjp<O=3H&aP(N72+GU>qUj?0_m3P<lC(G*PhxZX$%gQIL zOi3(Nu7Tib&Y~FWAvdc-u*i2#{(uo<_N3=uaxUi2aJeu!eZ;UesrjX`%OYP|54Blk zr9RT&l#Tx_Iy?xT^GmKL4qw3@QDhsHnR3)IXA7D#FJY>sUve=se%^?pq%2cd^5TO= z-LN?euSAEt%~)fOif0d>#m$_zvLbfo^v&VPMfCos&Gh)R)SUc{BNz$v@Z9*qdE9(R zyJq~>Gfr!UA9Z6%(zB))t?*7M*fBKnqG+kpnXEFWHG>6n(w0w5SQ(K~3Vo<EGv@NA z(TN#lwAFrS%yvIT^-ae50g((Klnm{J{Mc@2TUxXB&Vr<F=~3C~-SoP$B{>r#eTIHw zjf`Jy%HEcjd5t%jH_>om>e!r&tr;2ToTob%xn7%|1H0Fqyst34Ms`@TaZ>YQ-SG$g z!q=WC{32Q|J2d1%!MOQHrQ2Ovj;FRrw}&6ipR)dvY`<uk@yp;-j_?QnCmqu^iPy;v zuc&!kIDPb_Nbe$YqFR-bR<tw>B2E!oe8XnViVw3qT-ltLR`cw9vi`<8J@~DCE?R2( z`4bu}>1utbcts~)PWX2w@88iA5{y;BT@vZH3;*#(W{ii`zohgX&Kjb;vP*d>i!Wny zm7I(=0k8z$nNEF~c796y2fLn|qo0x$gT|r>a}r+9lsSK&oSlH)>SIe{CZmykW_-#` z`zKB<Z_?Ye84mpo`|6qRawrmOqBY!M9^O=`ReW9E`ZHU*s#U5p$3GSWK75kwPY+u~ znq=$w|9biAz*5t7+b<$NKPlX5^$l-le@2NBudGv&mh_yi9ck><LGHxH54?D)J%5uL zG2XM#_)<oAzX1{EID;c%TqznqdiL^YaD;bTe8Tc(C4^aedsd$6kTpGX4Yg7HML!8U zKrEm^!=CT9wZ`o)BV|7l?_D;{G16u8Wb~IUbBur8*2#rqu<h*Odi$BKG^`Ce^u&KL z(fbmjISu~&qgBP_ZFlUbF3~|XZKsv-`r>R<N7R8W7&{En=E9@d3i{QKmh>GEndVD4 zhE}RY^tn+rB>GR%))t~+q?H<{%SqZU+Q2v~o2T}@9fqQG<bcSTI@LczF=UhYSw|78 z>c{+;AM;~=><AY4NZCLL<3Q=pX^^Lb9aZOOVL>@T4|#DprirL;>muqi+KBp+KB8i^ z!SMJ@%uQ?+Ti9WT9d_7Z$JNoz&an#c!;#}~xOrqc>|_zft)+MeNO!t3L|j!EA}I_h z17JwWg(2l%7*a+b48dDde;kG|*%__5Rc6Ji#&D;+t-x?Mqi4&khRs-4SDCS{&`PWd zwU?36&4kOwfGc%v14yu;+hLOjFu(&t){9a3c&v%Az~T5hhfCC9I9!-Fy!?yHSRu&R zD3CY{Vn&xHfgunV!=d;p5a9DGO9Tt*zCwnfMx#2K!(uq?>WzX}P%jWg)XRmjqUwt{ zFFaUdc)ePT0L8*_`3wDp{z8ADS(q-vmiB>d?MtI1NO4BFA~^*V$^pf4U_pjOb9iXv zXK^O40dK&Q`4s*=Z%=lMCN<mFnP_X!_WnDb?Ras2M0V4F4V?s=C}BVu3^5m@aye!* zUR}l5Yppi!vsSk+0|UG;WX~VLmJWt(9pc5BG2cMldKzrA48uxkSd3x4EFKnlS(Ra7 zCR1BbGCeTSZQK5L8k^Cfv!ZR!t!yl#_Uz>F6$Tjs!%QEG%5?0<-rWM)@5%U%#!s)Y zNxP7Ct^qq41pgbNaxebzg=sPFSQm^J;$dZDoi%LTt+2@$4CsI%5B(8rX)SDP9gLOr z2F%Z)@b9^AphFwrzg6WPvXKW1td|1VC}+W@o`!)QhM`_5MhUh`7Pd>yi`Bs2Rn>_i zTtJ~5P%H-)WLPwZhem!B&w(3YvKuj}*{L%rC;4{ppX^*H7M_yvV#7GfTHSuz{L5r> zES87EvN#~d8rFW(BqaabEWv`|xG^I?1_Y(I%*wxV&G)WX@YjBv9eh4~?eT-D@Z@0u z8bH<6?!51v8mEPds(7$vMTrD$?y0(~Yw6<;Ze?lhi_E@B6Gpb4;q)#wyODrKjSwP) z2q6Lxg0N@0chqNog637bRYn5UD$u7TeT8Ms67#fu6Lp!1il{9@cDw8Wa+;D%%aS!i zE470^-e22PaPxkCY>H+_cC{8c(}fUnrVAlLh!8@~wh?`Nsng_2HJLMI&X?tIQpzps zWON=`oPvN+H-Ieei>M>izEK!0QSHjcWg}>xLu$Y3H#N?r7gce9Ww~iKJLr>bYeazE zc2dv9T2W=5Pv$Uk4N%3IQnbf*ebFF96UZLv^t^>QeEcZm8U``|+6@|^g_IfOZ$lA= z#6vABMoT8Fz0qF9iM9b8orz!+f*=TjAP8aZC5AAtmkTjw{HSpa%eT`9+fC@qbej#s zg<+7SKF1WwlFJ^mEwr6)9YG;bFtw1uLZPz+nQ-^0k|}5R!6P|f>4FfwcWJuoq)G;( z5Cmal$!#i5);1_Vn>sqv3?bY^gxDtB#6B?~{%FN_y$9O+;AD0ziyKY2Bx{H2^PvxF z9<4+FHS%(8<NL9{T{Zgu!^uqzyX>O!M{Sw5oj!OwP3YF=hgP<Z6u0ep8C60@<3!Z3 zw4FYfdKu}`eM%UShNHU6@JLug*0#WShBIcY(d(h`AYu+(?jz3x?gjT?xAIl7xr)oz z(GSMRs?PUn8w5ZCGC&drtfge~U-&NjjA#!{#KpAO6^{aiI-H3Y5l$q`#t-0C1cR(4 zUP@d~+#;$;Khl|`Qt|}(jzVM0$)}U&Q(jYgS52oJL77I`Lw!Q+Ts?)lA2pA<fp(qN z5TK+TPMbkH5b!LZac!2qo_-E}Dg8XXn!!@57-unNGj=d;F&Y9N2exh~qWhtF=%%3C zLBE5YnU4kE3-M>2#aa|{I^=Cg_vQ)gP3(&~ft;bIr=MOQW)GWQez=0=Z43X`+1=s8 zEB9B$^25%JJGUXCYt`oJpp2LE(DREUU6Gq>Vgw-<#$H$$Est)GUR?WTok-*mB~$s- zvY6(W(RF+4Lkgba#G!(rRk2o;;{U}B5{|?yNsx?_ER$ZAzL9pygffRLS(YzbCO65W z<Qei(`7Zf&`3HHoLaOjp3|356Y*t)WyjS!pRmx!HDCI2W4&_zlN7X>pMAb^waaD!t zH%7-&uyAZNHXGZ9UB^CP-5ou5yxQ@6Cr@M1#E<2UExOon(X(@P7d~CB4bl!DpM6Ps z$$fck4>?n-4`WBO#YxJfu04<TobJU8p_A#8^OGBsNB8dU3p3h{$=pP4Rf;Y3EBti6 z<AA``?wT}}H?=gaIc?~`#zE@5iPOIh{Xp~T@Q-I&j?B5i^dv9tI==Ik`?l%!`pE>F z!?qzk$vy-S48Zk2EUU5TVs?K4L%jsTmc$YUNcJCvNc!7Y5p~D3U~Na_@=5SF4$4Xp z#F|1zsK1j1cs|vYAl9Vff-|#Z1(upcQSkr9_}la=FKjFUM=X?wbJ4G#2t%OAzLiL< zto)*3e|~&ZDEu+1zLy>lC4ehCGWrDLL~D}>a-#rP_$*)#rRlJ#%BLFsW;TY>*R0$Y z#n_DBZV|_BIxt*Gzo_qy!T0axQlM@@Q1hF~5x(O0F}w+mZNzbJo0M#rfX2M#;NZ_J z4^U?r!*TM&*<V5?(*ZD`puvDz6Zth59xX1UG=g;+)bHlrYIw&Nz+x;1M<!+6zk}bw zNGs#l0o9p@H3$SRfqLT}y_8^Ggr~5FMfw{drz6L}bXFKxg|T66H>aSguF~lzD_Tu} z;DHV8PpKFw{u>Kj)Prrr!RKKbaG$pw<oM~DCK}(eD2peVEbAlrd!!nYh24PlX2>#? z1WQsN?m|V|RJVY#ifOJ4Uo@QA4Cu=A*c13(pP`)2Z1{t?J<?={r9bVWfX3^Mus4E> zx`~9B>C|93{i_C|KDO%_T*p06LgROhMQJ?B$RrPl7U6_ZMw$s64~;P@I3%bp-cccp z{<LF(Fgu$;SXo?*37he4>hWGUU@sR?zX+qiMCEsYL24%PD6XY?aOo3lOo@Q&vfhV2 zrc!mGRf0!!GmzCnW!7u(WFyuI><IW&4>{B-a~UiIMW%!VtQGA5qbUo0szJyE*1B?T zxHkEJVm3>}j7=(uzv0^|Xzm)BF(+Wcf)h-e{<=16fozf$63`f;V>bcWWcMBdvPnLV zfYhQ81knN4J$i>=F`>61NPylZq(!D?R5lPeaN&XjLAJyb*Fc0Fk46K{0DqsLCW07< zu;T_bkWFGLa$ZYGFb?-|{)|Vafe1U!to><;-q09G)<s5?qoLRt+~@vKzWOse?Rw5b z$fNAE>#>8u)b^e0IWlZK-?i(>A&y^Yb}RZD$s60h6_ru_Dm^x>zmf^Qqw%b>GO<?p z${}*EPe0RLPpmSM>#>8uWc8iv$@Ft_J(+6h>|VOW-SA8s6je!$xgue2WYUVZk=h_q zw2dSYiqQj5Id*GyfIYC&uQyo?d4$(9mAUcgY$xLi$3w*Wc7507_ti~_AH@yv@WedY z{zKVz4<80Q9OdjQQTvpsqHP@B9nYXCQ$Dn1WX#VIkVkai*guP)I8y^B6G+?02wX9b zon(?zv9a&%Y~<vZ;7^a2v3BitT1$Tx0Y>K0x^S(;m~&ySfy2=#Fulouxp`S2ShxT2 z(PZ*U-f^LHq4X%IiRA8CC|P!g5O-r?_aq|fArx|7SrdpqAZ8tmA4;B?2W$FXIRhKJ z41eOz?JKDV;(g<&A+hkh?Ht=>>oe4Xb7K=+R-{&>)d$+oL|LBXRB4;AZe<iQ?Vcm; z8rr(%GH0#E>(Z2{?NDB*>)@QdymD@GREs;8mZyX2(is%yIQaIGi1Jup$QLmeUN@Fl zXvUz6e5c)S1Ve#*Us^2NftQv)KmIGV7nnYey@le@tW=L{n)88d+J|;`Hu|z$VD|3V z3O-diBq(AUB-O=G%8(?-k>!@GO5g(1Vm-OV$c)?EC*d6Pq3uh{Uuog+kd^l&0|H91 zN5|Okl#DhO{^-P)oZRNG@H&JnvG{oFglP_0o+rv%o$G;ng%OGMH_o6o4aSyajR@Gz zWDvtp&DX=1q77B}0COT$Q+Td$VBv~8QY|O|%!%AK^eBi(t}6UIESHK<U&eR3z(g{V z&cl*dg!-QJ9WNLr8Oi2hg;s?6a=w!VW|EOXe4H?a1MuYv7Ih+tg@*)`s-?!<<3lEm zGk1a-Pfc08$_S(TfY98STGS<6PvIu+Awd>had&5ki0Gs9U_X-h9HvT!Em*29UEa@d zVIl+>PJ((qIGki~Hk@YMyehaS<I$r|7b8<#Qw20IXT<~Ks}znDzADcK6Xpu$k{!Fd zY1RPQ<lT7!vdJhK0okO?KtMKWwi1w9)FooixB+C7SH=m*CWk8t$R;H^0<uXCpH%Ud zhZWp%k0qu9@lZI{xKS)e6A)pK(yW1OlEkT{*)^2-V|Ab8C7uZFMzJg+e_EuZb7xy7 zkJ2ePv1D{08VyGoH;UyL^4CyQO6(qFwfQm&hTG*Oo_-pLu;VP%K!iO?g$A<8+5=ii zwtrOMczmu*x<Qt)Oe7$iG};KrCTS)CsfArK_LLI@3D8Y4kL7;^WRoHd0oCF^b{r@G za7B}s;OOna?-CChOV@!_a)OU7d=sIt^o9%_^pL;o<0Z=i=PHM?M|1ZsRF)4mJiK;9 z2R9COzqTO+4;UE?91eINT7D?Aoyn}trA=#Yp4Y~26jFUR(wO$yJVAEV-^YC{Z!@+! z(yUMBNrqJ2%=%P*M{-R=+1u&hXlWpd>)y^*`=lYBK<RL6C6m1W%`tGHa>K8}4L+p? zc#synzl24?jdE1eUILev>vs{fIZz|d<!F2{dp!^<RZHb~C$22^(0DyjFVuKF^vKM= zLdUMjsMWKnp#^=#8ewQu68Ef`Y<1Y~@hM$8>92O36gMcPU6zC{B(0UyF0azGHHCqC zx=mWIiGq@Rdf)cUXaUBkYC7eg_$0a7t^X}6p1imdmW(J!!iTu)Q}LDTESC;ja@#L6 z-Zb#WbsZ*xmpp!);YY6dF0b|;iHf3ZpRgovcCc%Wx{S`MQo+?bCs{SoXw`$)`9Ts& zS(7PbX9&a^QSg;qnS|+63GryyP2gbCL^Ul-+dlkG)VPw)g{k#R^q>&rF`bj9_^M2j z!wWcy3>TmzOOkoy?_}>NUgl(@lgxnab%~@sZY+kRw_M|~ENM`!En7<xYfZ}dP^f4H zZ^1I>+?)E8>@{^2cuCuc&vGTH2DMHt%x-B6D@K%dZnTT@*uXSf8yMX6*cK;==6Vfv z0Bo`4mRu~CtUI$()ww2X@@0reK5Mn=sq9u&%1Ym4OP8CHEPL5Qok4PdB^NN<Z_Z6L zi@E!KVS8DwPM~oetBsDtT;8sR23N3EPr;lE8EM4C|GIjQ!Nuw=n0E^=nhIjOYkP3A zL!H%CE%YbV@aYTR{JAd!y`I90<8O3cAWyYoxcMLPF&#GZobFUTV#y1>kjYw`HA#HI zIj?_3o$#(;RDjyFq?^>HB`J2_-WCFUVf6aX7^!WzR++JC{#XJJ%nuJtp+>=6#h8$B z1rjc`U@Y#gqxK)E{6nY*UcYyLZ)K**Y?mPFWev2SdQ|Wvohc{@`I2xJ=!0|DCjT(> zi0)QeaM<V6pl;WSPg(B$)KgBOy?t5H^@|C39WI$4`sZElp7h`ydlv5#`dGk8ntId6 zJ%)g@Mi=9HXRt@sIv3UV!zmgrJy33b_`8%=_7+H-Xvaoste%=e7^h>kh$_wTQV2O> z&fCCYnUg$SGzQS=QExh_X*@%w5;cV1sCE-8TM<9->^xW*Vsa-_;)tYlB8!+RA)2e| zb&f7mz0SN6?;Fb$WKnY+)iE4V62V#9X)z67<Fw39r=uB=J+85_HshVOPh0yY7E(Os z(R)<oU|E$P6f^+;VEviySblJIAVIjuD|93=tB`=-aw6s)y~QYZc-gV=m<yVssq7Ky zw0>Sy44Mn`xGpm$GsW$Cqux&v>|f-h0O^`Pi=BR@C+*^7NCl^Ybb8T~;{vtX$HT)< zuYS45ef(GaY+N02cpy~T#9U5ZsxtvQzA_xC)kSsuMmY*CVTMGV&)dX|v+Ed9z^Q0f z8sVr+CQTUHdD2!#>ddEOpKRS)d|a9<yO4P%luE5-<(ywzw)KMLs<F}{&rSqt_s6tB zG<V@yZ-rC7nWz66>@R!*^=Fbd(jv0d5kIzB$D#kTT0dPq5&yOWg5}Svd1pQmYj*SO zjK}lm;j7uh?<aHRCEffIK`~Kd^iVz5Vvo#tgRQDH2_*^}`^Qn>>>QdZ<;F&mLtVpV zmgg=lgLQ?@pSGDJkp*=k1ugEun;F^Znk7?eE1JG*q?OBSsZ-RVQX!@FcH-Y;-;5S4 z_6Se%#Gd;9enqzv@Y3i!Nk;*5jq!k1S{8@fAC$cZ^W27Z)i!UY@w-L*sASsqc_n2J z@OF!jUMB3?va!ApadML;8m*b2xn@Zab0$;Zbx1djM5QN`@aaDFk7RLcxMCkD(Pj9f zbPHvhij!{AX;h+FqIw6T<b3(q(;$l~s@LqVl8dlDH!&wy(AH8lybcQZ<zSjXNi4m= zsw2=AmBUHlI1&xu)$dGgqk5;H?8@cyIvGbviOz^AUA+oC4VX!*F?u9jlmeMTBCK7O zbwle;7;DQBehh^T&|}){3>T827$L9eq*ZX1u`6(C>uX@0r@{|j0(Sore)%r=Omp_! zf{qMkEUrXOeI|yVl(izL8H9NL=SC|eMd#UljJ+JQ(+uQ3<sk~1n9MHNu}nR+r2DI< zmU@$aADV_H61*Vr97EG&es}`SmB7A2Oe~oYB<v)<_9D6wL85eP3^u_{hq>&ktug!7 zTT>$pu8%jyiY90_sY2NO>OjEl?rX(^b(0@;fOxz)O)8=EQP!34+}miGI5bUWrOx-L zLiueBY^;hi75-|HVq}e`V(gzR3Dp|%tG_z3{wXF*dS^-{X3vDG4!zL#!>HC2iU&&B z!GaNvujCa6@aaql!DPA^<59Q91W{(Y?7T?8lBO*XA*N+!gdjKBZna-g4j{%hg#6^D zOpsz@V|3?U^;EsVMOHm=yR#13_i=`V-^bp*t{PU(P_3DW4B(#*2XnlKzsW?!koSw% z8Kp9rlut?cYcik5UP`iAxxLYq@gV%vac;j>fd6s}tIBoW1@P5e`m$p0qT42DSmw}i zsz~P(Gcj&NAxC@mXGxQ<bB%j06RX|#1mWZEI_7VdB?uvy?W_w^s?`<&FDE7V3HYOI zvbO3QcCMu{S~*8`%+$lgsh>41$qwG;vJnwYCr^wn2)K0W(@4@2SpV&)Z@p8ou@R?t z^Q%v#6p|k+l?%ri6%N=gG10w{!-x*k-I6Bw(LDE2(KYCUa;=h64W(zgZR^S)!WC>% zrs63VggJ2z(VG&@u444|QtvyAU^s`gj|5n;_nmp8A3;o0q-5wZP(vAI2(Y<y4#&kL zA;Dli&*>Zia&wc*`1esv5sPI!l=>8sm6D0Yr4h0s&yia)JCn_dh*lf+YT2Q&$@Q_Q z4OQN7Ubtk64o_k+HyKZgm-+IPV`5~6Xjc7*j~+a5GBxA-?2@B#V=LxyLl2Vo$~6~( zborA}jLH~nA~V<C>LKza>cUOVW>j0qnBk&aE7y&T5PsRVW@Se#Fg~-+YIP;4!k~7= zXqN`rYxU8%`p<`S@LZ0Ig|--sw!(}CM~tL%G5F@O@;pbSb9o~emQeW7?3z@j>ZV@{ zP%b9fx1q6-pr$rYX1A50x;JZ_cidGno$e~0i;XNYS8~dcUQaro-P1*mIpbSqI87Qq zoH?~DM}t?d`!f}*8LxH;E%k9HAg&4|R~jnWaH88e0cl9?&2P-~D+xeVpBv-W6mKYl zXldGah?C^6iwZ4AL1}QmnmP;BvN1lb#XE?(L9|r9ZzDSxv5p^Hj)KJwt(J}PYl=6N zY+71F-%2)+QKhb9(6Wvdo>9g!UzDjEYTG8;h{5iR(OG<W=?qvAt(=pZIr>sxI+xv> zH9PMGnaYC0jG6UqBn9TeSd{OA9`6L({B!X3RCsgYAHX$TFVO2XM=$yg7k^`D8k9MT zx?QOmT3|(#!bY<i>%;`fuq-FSiF=K1@6ga<i%C{g-2v7@!JVC6DHm${?xHwd(C2}u zCo9kVp_E`{J8bnX@n6>Vqz6&o$_<}!4XvFJ+<gE4hVe3~5GA`;YNNlubH6g|-g+iB z!|!V=ij>}cfimXF8F%@--97n#reRkhvL{yqnv-Iaq#?eD`Tr+Cu5>YhgnO90%~<l= z;UpD9%CwzGC-W1_j35M!UN9`DPNw8SQlw6YK%;1SW$6(w&9uhL$YJ5s$*OEJDdu#o zB#pgE3C&dch-qi!P+&xMxr!S;$(qq8LVkdAeq80Giu;e&F41k1L`Zv;S^CZldAlDs zT4OhtEeAqXH;oOM`rat{e=2Z!n}V@p)8iurwW_w%*I(G)Nbh&0^(`hxpw0}MFeO6q zWW$ed=SDn9Spxy9!&+rMN0x9oH_CeKVMTin?jvDF4sj?3&`MHcRdODOZD~&(8qMro zczF234?;AHSbgtgg<@v#GMMZw#q-y$WU^5%Z#2qV1P-HMCud|W5q%u2<nup?!u{78 zM_!PyAy)*onHRf_7lVJAEG}whdh<)c*L*FU_H1~>o1wtpfja*K9L?GD2rd?SL#WV5 zp_hFjB<Kv}8>ixyO61gM!szABIFOuXI3GA2f>Hy{Wp0dvy{DnjO;2TMOs0#O(Ycg| zn4vTkDwGz9t*vA5!R-EqU^YB*!_FH}aKlFrsLO}^0LKM`i2Y$)yJe?gR9j;yc52!% zlC8CYwr-Z<mJ0PzScssGFTuj>bbLH+*cuyd56#*d3j1KVwOMzV-Tp9&o!EP%O?o2t zk@9k}>tiZ%;?k-19JzoWCa#7yGji0&#{IQdr6q>*bP&u=KDHDR2xcw8q=vQB>i}I4 z@uDN>x1kX&!(J8r)<V5XZ_z@%s`smI?|Pu?HsFo^u^I=w<uZ=HXjC<s8?@#o^&Z11 zdI_uepxtb(FIPEij^3HtxyWUWfGXppZ@Ao;qjw}9Z>x9t5O$1{)<Ig5-s{XnK_Re$ z5<`vRVQ(cb*#VpxdM0zlog<ej{bSdi-s)c@?-%C@)B`JXB<fvtUCWEiK|U^SuH0rL ze@84jcb3ulKdX@#hHahDV|2ma$u~}x^CZ5v8SoG8qRFZUA59|&q&A=qR~1q0htNHC zX-HFfGuw?{O)L2!2K4U%wBXJ}b}s+C6>}ju5yb=wYSeBLLgVKl%)?zU?%2Qc2%nzo z>wOyT8aR$%ew+0gdl2a}UBGPonz{ezJ;aqqzd@3Gn~;LMyX~3D5Y;@AkXK!Kbn+IU z)<~wNl(Z7u_>_KFMBetqFPkBZN+uOWoo`P(=-eV{Y3Q8KdA04z)G|z~;Jkd%GW=MQ zgDK=pF?lHEe7x(uZO<SI0n8Zz!b&^0DT*zbx^0Ckm5U~pVQR$jXoP5wxOaW(QHs^S z<b3irgfo+*l9^^uIRAih_vrX(rajs5Pf$?ewpl>ahoyRVhG?90K`7Ol+zjS03nz53 z1=+23S?@9nPBOX>Sda*~iFDm2M6TInac9xYi2#r5`J&wNLx^13ZjbUC`)SJs<58-A z3dO!1db|nZd@YbY0ZwYpo)dK9jxIz^E&lxBQHYW{{^1LiAxvs8@rT+FCACEGhN=() z?@8x0hFGWGx?B%ehc2J4;+vu=(#&AHtF_hQ=<ddtLXpG?ng)9dMjcq*Ll6_AIZLA0 z0JUPe)H9aN#2HnosR#8geaql*0mE?gi&Zh6w5LA{M~1I8x=MutR>5%NoMNg^ta`0v z-4EEvY2)7D$5ay163LcBL_w>Wk#X|OGq@FTJC~rg!`}@L8qp+P+86PrX=X8YrRaWQ zG=2N%&v9EGgtj#`0K5nqhsasv_^xe(w}zLE-XtOglIUmDHr8A-1n0Vl7IQeRDl}{I z@d?p5DHCHfXo${&OmcX%_O-MqNtDc}xRoz^^!?j^fxVsuP45m<d?maccpb>na(g(K z;e?>{l1w+}L+IcPpoUu^owO55H<clDdKtz$ZijGrLoXM39^y+mWd6VoQPIE*%HY9% z%57n8%R8{QJ)5A}hHEgT%%9<H(JIKUB7U~T4eq9q>rTA9NyROz-ru^ci%$H!N#wRA zA8ejyh|71|YCl`)EoYmIxyvpU=jf4XNlzNWoKS<y#L^+Za0nsx(5FUBEuG}GMGZCR zTwS9Eoz<l`V`{osrdjAv#oRUHGVH8Sny9~g7ZHuLUdu+fyr#koGb-dRJBtfOR!g@v zQsW-%E`rkd&VeBRn9kzj%IdP>w|-g)Il`%8HuoWQ%$zzkQ4*<Cr97v?|4k6^`1pHR z-vS9mG@}X?BwOPOQ`Els6#Dh(=lk6cDz$CT;LyaMEoP@O-QXvq8K!NZZp(bXg3sef zR0_URUan*G4J4cBrLBxIT`#9{@r7(^YGFGwQu<y{dk4(&_n~oNJs6aFZe}0-pYj-Q zkWyxOo-%7D6cPtpVJKKcP)k`z7i4UZ#^Jt!NgOqt4dL;Vddj&~*)JyZKWz~q<*5*i zUdC|+Vk;cQW9YmchbD!Z0A_MLu2;HArAKoAap*nJ2UwZ!wD4*#IUO55eB@Xjd)sNI z4}U_MxBw9$ePe^h>*0E##_3@_p7{+_1hRmR40Uu4Ow#Sn(_%#|jE<pL0V{GMl|%C- z9BeD@#Z?i{)dWWHZlAW_KHmu8WWKLLOD6O`%1Vln^xLE~7lQ=<HTR;fPHP{UR15d? zcJ<Vwd9I#bCLX2z$4!l*p%c2yW%O!aV;pu(V)&87;<05EJv1$yOd8Pbc3sq8HCx0F zy4O2GcE{U?)QW}D4FgIvGmukgpj}w;^MyIQilLMF<MpT^qg9c^;J&$d^=iWp>fvvU zu2QO_)|;>eDd}jO4nACY?fN#K-|ZaI<8#tusKzsBdWOHhpAHqj52=m4-tstur`bbE zA6n&|p>;6M=mMR_B-UooB&=vZ%gVGsuca7;&L8@2!b&!5bR~(&Na<V^a*fHuY?9Dw zFLG*;#LaFo8MQi%SRhqv)Or*6nalJo6p@rjVQM8UXuC=^#XJaga4>arQEh4rIyUCl z{eW%J+g<`;z80ju6+Y6OJ@+6ZLl?sLzhR%}L$mjTN&X4E8TeO_^AG`jpoWm3k_w&U zAqX^v(8Q&XMsWH<=Sc_xmC^j<atNJjh}`8th=qqRph77Xm6w^$`j2euhH~hwP;2KN zN<LY~=xM1$mPtCmg5N<IUz<DyOEaTgDLJpA8sto7L1ro?o{QZ64LFsf;FQN9KRAsT z8F8^fGxZw1L$mdghGjo`mIh_9*0&Yg^Hl}vn#@!L2$jtiRjSNpm8mWj({c=1lB&7~ z$_gdDjSQ(YiXbQr?OHcHh6Owy#CBwKG#0fPK29n|nEI5i(J-RkSUlNVJ4q&!U>>`) z%Ib<j-D=dA-L_9p3$=-fGHS`G2o)(l5Go@UNj>~*3W44sbG0bJVj79&WE7+CW>Fy% z#pK`1?J*tmUH?@Et-}IUs$!KxyMVrEypTk0R<wP3rbv|lE^Y4vmc(iCJ%n<VX`o}5 zKN@WODhO{;=ATwFn;CWH$v9G$nD?kqt45VtLcC?>s1@~pR_#jbdi=(SLKb+}&U7*P zb+KXX6N-Z5sqqh?j1e}xFv(FctNoQdKtbxeGil6+FC7e@yyysTNa*i)N&-|>k>QoT z3)l5!V(gi%rL(=$q!s7q=9USorAkpnWt|S8qP5r6(xO-Eft9Wir6<ArnK+|&S%<Vn z2;AEb)tf!2Yc$hN=`sP{4|B@T1>3GTm(odTJ1&>Yb|o@QtJMklEEtX#8C_*!F<l6A zHf5<)A`$a>LOn*TosL>HTs5M!%e;aN=aB?w?><)0=%Au?cKGjUN?~Y9cR_lTn`5u} z>`0L`=fQSlO!qBd_g1j<IUsjEwzXCDwHI?cxxn0fjvepp%gX3{Mup9!i1b(-L3j&( zD_3JgZ`yr0Or<uvFr*VI>5#HpOX=s3=?WZR!R<P&k;pEB+nnMzYRa=4LVS6S3xw>8 zSXGI<(q~g}CHq?0C%FVIVt57i8$7LGxxW4`<gUl7`>$pSpE0Z8)>el9vGYN1b_G3y zvYAOHpI{|@-0IAJ(iyfemEB(6e%+MSq(esfOR>cC=6AR`t!_(Jd-=s{ozbJFr&oKJ z)#HN;xW~sc#gorbTeM;m*M;BKkX2ZF?86z;=?PEjv(+szeburRm^z*-BIhGJk@}3D zKH0}bjntF(Llx88$KtV~hU(ou)orfMy-u{M5*-_GVF=%AKnP*`1J78>F)Z`UhYp2K zN`J-M-cI~4P1SCKjv0m^Oc24zFtV-vtn(AE$mWC@`o(MUf_UlY#b=|%x1!C2Sk{Z6 zYyMvSv^xG!eZ3n*mQ+s=uHh@dm&W@=RP%CYF?IJ*DLbVxhoW6E$8Nw{d7JkwooJ>; zLjX|Bq#o6hvTx}+E^3%)0d0yid~pr@eR?ro|Mynk5NmZ^cld90JKN4#zqB34cGF<( zuv`9g|0+uv%7(wis#a9>rO2&Dvx!fXIUIJiYnPJ6kqq(l)~%-@|I+hUects6ejpzd z7#NgSt5oW|(V){G{JrJ+Mm26lbt|fBWZJs**rPgxn?uAA-01u`$8&;E6~iF=Xe23i z*@Gc8m$PkSW8-7h3k(CIzvCX~op*oRNCFO{XMP<|bN?ionV2|<&Kgi}bI9eST{(r! z^@`H8ez62%N^Ps&9xaymp<?b3S(=N2UYna9DTx`FAk{#(S^4}Dd(I^1cQRV7ofDbR z#wm(}!1cSq+PyJSe6zMJ+s<1(E{C>UR6EnvYK=-ISB60?jYfl(T|0<tjc}w9N~8Vd zPtj&YWc3N4@>}7L9)aq>d*QBs1I6AO%Kb+8vNr;G;9?j=E%9uIA42qhLFofwx8Du_ z-$8<gX=Rq%b$guohIfeG*TXvB7iRqeNcSB0HE=c@;M+j!Q{dPifWLYM{5tTzkO+zX ze5AXwb4>R=VD|-ZE8Tsn%T~rjr$uL-wP;1ToB1gghJF+`x{l!8zZu#K0ey7<hcBwV z5b#@j51CIE7%}5%oxx(%HfWulJ}7snzrU<`tFke*>aDXEeEmx(HX)D8on-`1mj6@i z|70tZ-~J25PmC}!E(dThPxZp=K_FwyWws*Htia2v&JabW0&Y5#$D?~coEg1QJqdA- zGp~e6FQ5*!i(&<%C}Nt#f$1jP-Mzx@(Zd71bi&)m<m$dHsV1GL^VFpCx=8=gG?Ggp zrdk)pqSjOk&}pXA*-d`XX)}wnE332D$&U!tT&3JRED8Yw%r7TM+5-QZDe1^>F1q?l zPkW$m!Yzpi(vFi6I_Hj(p1B#9Fp&&HsF{bgntY;|FFU(Mam?EYD#461!!RWRu|CzH z4hS=klTP_C>8#4^kYUoxMY7zkH*LEXchT1Z&`k8sWq73!hCZW;fc^y>P_8P_-Z^Gw zCg|&)hzkV7kb<*F_ByT3pp&#YJG#;7lqZ^njJlp8R~Wn3)ZpswLqSE76w+aUPSRDv z?x54D8?s)2E%OfFR%r|d7Z0n|41q~9)Os2^TZ<b>jqx0(twf~*0^$NAq8u||*xDlL z646#Va`Zf}a~NSb3q=6WqHq;PUAdA$oQO8ceJMtx>Tm@c)?hhoSdt?@ws+#DsZ$N5 z6*azm!(X0EhB?OK*AQ&?^o`MXtk8}c?i<19<9HiA<a1115KRM%nRAMPzY*S_)R)8z ze#Xf$QW77YQcQqkq*FpM3GT#T^D*dg#6&oK5+C)B&l*LZ@mOQ60Rakc@I&Dd*`Syl z5;>R?MEqrg1sj8TA2U`JzT)p9g}-Dh?@JWiMd337(r+q=$jEY#0vO2dI|30Ptn#dC zLCJe6{cm@j9jdtHe0XwbjACzQEBUwFCw%8XaD01<u-tWj4MIU~WyxdCPE>kh&`=xF zIXN{B(mOHP4!${D{HefE52-z<(qGzzjgTjyKn+1sB<3LZg+fAsiQzjTkn%8{LMc(n z1N#gz;iiBR8PPbq6JC=YO94Z03NFMDoRVX{2}S3e-dZ3HwTZ^j4^KD7^CQsiG@nX| zL_%RLM2M<jwR7~IPc}RJgm@88pz!wX<AMpCa&=-=sRv`1vDTZH7Q8sP3GL{{0Ne3H zMF(G<HtkY$nNhokfjU%2PrW$uVl}-}WU!#*9E<4nCW|Tm0oWJ)qhkAN$8)QgsWb~o zx2>Ob?AV)T<jTRrS3yB$gAZ)(EasdxP19Ss60ONf1%gP$8*-YTOfVK(;+9;cQDO*# zbFDCvDH>-kT@3V|TNKlKRLH{Z##mZ{>9px=>iC|!AgP0#ENHV+xw@|F?Ye21ajP0x zj%gSk#ml<m`Sqa2;nI{VG*Lp)m+m1btF&ov<SG#pA!J=7G9o>T0%6HmD+0kW6v5#T zKf;r#tySw!UgOFy?AHEKoK6%o$RU2l{K&cF@ETA$sCxsENGzGnrV_=BbBH<o?YV%L zjCV1NLWwF2#msbw)gJg^7=^KI$wm}MrgGjf6f?L9fP?K{*@g<&TnDX2q>g|!zBQ>6 zFL{N4@jq8oLj}jKPDri9@8%#R067Ec4|_Zi5pG7Ix_P4ePZlr^uDl^T-Ie&>$geEU zx3^7pp<=jzD#fjTQ}MzC+*J1rh#yY$9&b`7-W=XQ-~m4zUh6&I`^9i@AvR@gB3I|e zN8wAc#QJSmcIlAl5{#iEb2ol*OXwuawF=$+3^EKDAcM_YCM^MC#qyvF4hx=UWLw%H zfL&PGr4@mEZxbiVTi=x+ahGL9Vl{XI)3KFQE|1I9R^dLu*;ypuO&$H!0>M{r4i9y7 zb*HJU!JyZtL{n39defVXMgZ$?ODt}NHtto8L^%b@=^Y=+&XJpX%gT;bAJSBL)co!Z zc1hjRoV2KYO-kUpZ+^}+4Al?R^R0mLh^MLDz<z-w1H*za#q!e5_#x?XJ~gleu5HH- zZ8+?cP%Y+ky%ts^+V-q)q7^1-eS_s4FFjVN?Yoy4iw1)EPD_BBCG+5yzByL%fnYD4 zPXNDPMQRB%Em1O1!{PXZdC8W~lL-;Uab_h!DwZge3Q?_4Dw9^0msgaQ7L|0t%KHP? z)>N`Ww(6Ni2rxqGk&cee&Xnls8MYSz`L`Xw`m;nZoY`Ww7X5c*u22&FJ|iR5xsKyO zD@Ap46Lme~mOlzTaIS7X)%=t@Iv?-#+SAm^aA&ccfkHlC<KcC6(NA)5cbD@54lI^| zWdQ4YU_)SU`pgozP{jGxwl@BGW{5be<l~)Sh!{gK>`bh@oqmtFgz|lfjlkVOY2Dro zWGhr0u7kpCJsGiu`jGZX_x|8fj@ILZRz6m>P{w8hL<}+)Hgtr5eXiYrdiRJs`@EU2 zZ}VbEbt_!PR3QlU7|sA0Y(?hx=(6DLJs0NkgwGWaVm1~)NM<r61&ght*bd2+!5AeJ z@Y1(B+S=T0b@lC?5cZKCH^V1Fr+2Yydk1;@r!!&iChcfh<r~zv=lT~Z>?AD&t?)tH z{?d_=WVY6BiRh!8J^s?dmaE=O4o8MjqZH9j!k*;}y~|(-F~!omwkVa$Rf^UilQ^lv zW?{r5Rw0}0E5*k!?XGJ()Yck{-nIfAR$&u#Wa(Bs4iH4D@m0i}#{HAtuG^-M^|zOI zt@o3s)NYZ~LNJOTWK7c6?)-xRzym-0Z`qkX3>sTb`!o3A5i1EX_i@^&{a(X09X67O zK(oH;6}gWgAf!yBXHOino8w;rOX<4XZ%I3#W7maZ5kBtXkzdhXUP5leKqeb-o_K$| zZkKbizbj0*P9K=;*#$PMnF#44C0I>Ag)Z%Fv%mis+jWG+S^g<Pn@u=@&j|uR0r>by z7f$?C!0&5_Gyr^jcgoVd?Ylii&oz+`Xzvk#*u*j>0RFw1niaP$u=aN^OZ;J<w3YyJ zu>E!J;I$0x-Uj8ln)XXotLpK|wwsIa2?GA6?&&~zDz&-!*&M3+cr|@qk4dB`Pc5ab zzg5)cHP+);AIPSa(dhtKPqx+drr@``i`zHFrp|;4uZYV?2C2CimKU*dJ6hiLc!*~~ zJ*?<^Bt!mfQJ6ziG^NGea*lOBHcgC9iw)CBaR*y%&?${7s$6Q@X}*s4xF?&jr;$zd zy)L-6;4|Oug`m@+qEr}uY40U}Xc(+@s^~#}_9#_TiPitqdn_a?>UwqX?P_t`9glq? z?r&Wa#iadTVp#W#%Qz#8F87?5;3XAAz%4u=&yflndKdk-^ex{;e^0;U4}Z&+FZ8mr zIwm%QNDYtdwd`kAJK>nQ38>7M^dpUv7VoLkCUbJ%CFdZG<kqK1=czBr7RPrw&vu$z zqF*wFr~on&__rj-XzS}i00Q8CK~R7S2&{fKv}3$M1cXEfa4Ohp2*@RB1VABIBf=0< zH4>OS)5zehdng4AVcQ<!OdNwW0TjvCgoII~iCAKlCZ>sUO(Gy_G%0byG#Oj+t(NOa zmRHo)l%y#~Q*oqH4WmrwH8tP#O4AT#mZoLNI!y=5{WU%RJW(?c=VO|YE#EO*W}Z&X z6^+EvOjsl_+&l)&opUj39vGxh!+gdQt9e36Lo^Fc$<VB5q{*5MugrXD>=>jK?#q*J znnKw!Wtj+LV`1eD(|?HcbU))w+!=-0NbC}Ma*8=-M<T?e-pCrCzR(2s=z&H>r$-qr z*Ao3qOvs&n3<opIEzw6Nd}?^)#$If!?5)U)-`4v`mLhJsKH=HlR`9^N#ERJa=z-F; z6WQ|eae!$#R9X71C_%p12-CzW8PnIsr%La(=&+exUEPB78WE3xq6kxs!VrlKUk0J7 zuw{D<@TDM5x-{7)8TY<)h>=n-?$!`0Pp-7ktU=2#1qk$V8Aht2IJb^mql_{3JrI$7 zMm;I$FDe`1qtO%O?`iq8c?)dHBuh6Z?Q3!2zyi7BCO<VIz-a#woob-a3IG5AS}X*> literal 0 HcmV?d00001 diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..790d62dc7ba719231f86afaf50988bf0f3705a5f GIT binary patch literal 74784 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̍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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1eec0775a64a8fffc1fe071d33705646708e47c5 GIT binary patch literal 14884 zcmV+<I@`r}Pew8T0RR9106HW96951J0E65B06DGz1ONa400000000000000000000 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�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 WwYNRFHw_2!$IbcOYUri|0002BTaOq3 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2cfe61536e3c527e01071d8ed03d7d2e56c8d5b0 GIT binary patch literal 40488 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 AY5)KL literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3886dd141e2cc1d9738b7d5e0f9f43529e8fdbd GIT binary patch literal 29164 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 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 G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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޳&J;j`QMeemai#>DJYh6eJntI5pw}(+`-MW*-+A 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 @W0T~$c8biD(D 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 MB0*U`SLx^I1)i>e^Z)<= literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 zcmV<UHV4UfPew8T0RR9105<pl6951J0DZIo05*dF1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/introduction.md.DjUq3clO.js b/assets/introduction.md.DjUq3clO.js new file mode 100644 index 000000000..f9968f4d9 --- /dev/null +++ b/assets/introduction.md.DjUq3clO.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const i="/Coalesce/coalesce-icon-color.svg",s="/Coalesce/net-logo.svg",r="/Coalesce/ef-logo.svg",n="/Coalesce/ts-logo-512.svg",l="/Coalesce/vue-logo.svg",d="/Coalesce/vite-logo.svg",y=JSON.parse('{"title":"Introduction","description":"Documentation home page for IntelliTect.Coalesce","frontmatter":{"lang":"en-US","title":"Introduction","description":"Documentation home page for IntelliTect.Coalesce"},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),c={name:"introduction.md"},p=a('<h1 class="hero-logo-horiz"><img src="'+i+'"> Coalesce </h1><p>Designed to help you quickly build amazing web applications, Coalesce is a rapid-development, code generation-based web application framework created by <a href="https://intellitect.com" target="_blank" rel="noreferrer">IntelliTect</a> and built on top of:</p><table><tr><td><a href="https://learn.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core"><img class="ext-logo" src="'+s+'"></a></td><td>C#, .NET, and ASP.NET Core are the backend foundation of all Coalesce applications.</td></tr><tr><td><a href="https://learn.microsoft.com/en-us/ef/core/"><img class="ext-logo" src="'+r+'"></a></td><td>Entity Framework provides the interface between your database and C# code. Coalesce will use your EF data model to generate an extensible, customizable CRUD API that will drive both your custom pages and the out-of-the-box admin pages.</td></tr><tr><td><a href="https://www.typescriptlang.org/"><img class="ext-logo" src="'+n+'"></a></td><td>TypeScript enables discovery of Coalesce features through Intellisense and provides confidence that your frontend code won't break as your application grows.</td></tr><tr><td><a href="https://vuejs.org/"><img class="ext-logo" src="'+l+'"></a></td><td>Vue.js provides data binding and interactivity for your application as it runs in a browser. Coalesce will generate <a href="./stacks/vue/layers/viewmodels.html">TypeScript ViewModels</a> to facilitate rapid development of custom pages. </td></tr><tr><td><a href="https://vitejs.dev/"><img class="ext-logo" src="'+d+'"></a></td><td>Vite is the development and build tooling for your frontend Vue code, enabling lightning-fast single-page application development. Coalesce integrates ASP.NET Core and Vite together, streamlining local development to require nothing more than a <code>dotnet run</code> or a single-click launch in your IDE.</td></tr></table><h2 id="what-do-i-do" tabindex="-1">What do I do? <a class="header-anchor" href="#what-do-i-do" aria-label="Permalink to "What do I do?"">​</a></h2><p>You are responsible for the interesting parts of your application:</p><ul><li>Data Model</li><li>Business Logic</li><li>External Integrations</li><li>Page Content</li><li>Site Design</li><li>Custom Scripting</li></ul><h2 id="what-is-done-for-me" tabindex="-1">What is done for me? <a class="header-anchor" href="#what-is-done-for-me" aria-label="Permalink to "What is done for me?"">​</a></h2><p>Coalesce builds the part of your application that are mundane and monotonous to build:</p><ul><li>Client side <a href="/Coalesce/stacks/vue/layers/viewmodels.html">TypeScript ViewModels</a> that mirror your data model for both lists and individual objects. Utilize these to rapidly build out your application's various pages.</li><li>APIs to interact with your models via endpoints like List, Get, Save, and more.</li><li>Out-of-the-box <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Vue Components</a> for common controls like dates, selecting objects via drop downs, enums, etc. Dropdowns support searching and paging automatically.</li><li>A complete set of admin pages are provided, allowing you to read, create, edit, and delete data straight away without writing any additional code.</li></ul><h2 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started"">​</a></h2><p>To get started with Coalesce, check out <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started</a>.</p>',11),u=[p];function h(g,m,f,v,_,b){return o(),t("div",null,u)}const C=e(c,[["render",h]]);export{y as __pageData,C as default}; diff --git a/assets/introduction.md.DjUq3clO.lean.js b/assets/introduction.md.DjUq3clO.lean.js new file mode 100644 index 000000000..4edc8d6a3 --- /dev/null +++ b/assets/introduction.md.DjUq3clO.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const i="/Coalesce/coalesce-icon-color.svg",s="/Coalesce/net-logo.svg",r="/Coalesce/ef-logo.svg",n="/Coalesce/ts-logo-512.svg",l="/Coalesce/vue-logo.svg",d="/Coalesce/vite-logo.svg",y=JSON.parse('{"title":"Introduction","description":"Documentation home page for IntelliTect.Coalesce","frontmatter":{"lang":"en-US","title":"Introduction","description":"Documentation home page for IntelliTect.Coalesce"},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),c={name:"introduction.md"},p=a("",11),u=[p];function h(g,m,f,v,_,b){return o(),t("div",null,u)}const C=e(c,[["render",h]]);export{y as __pageData,C as default}; diff --git a/assets/modeling_model-components_attributes.md.BuUuuAHM.js b/assets/modeling_model-components_attributes.md.BuUuuAHM.js new file mode 100644 index 000000000..c2897a4b8 --- /dev/null +++ b/assets/modeling_model-components_attributes.md.BuUuuAHM.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes.md","filePath":"modeling/model-components/attributes.md"}'),r={name:"modeling/model-components/attributes.md"},i=o('<h1 id="attributes" tabindex="-1">Attributes <a class="header-anchor" href="#attributes" aria-label="Permalink to "Attributes"">​</a></h1><p>Coalesce provides a number of C# attributes that can be used to decorate your model classes and their properties in order to customize behavior, appearance, security, and more. Coalesce also supports a number of annotations from <code>System.ComponentModel.DataAnnotations</code>.</p><h2 id="coalesce-attributes" tabindex="-1">Coalesce Attributes <a class="header-anchor" href="#coalesce-attributes" aria-label="Permalink to "Coalesce Attributes"">​</a></h2><p>Browse the list in the sidebar to learn about the attributes that Coalesce provides that can be used to decorate your models.</p><h2 id="componentmodel-attributes" tabindex="-1">ComponentModel Attributes <a class="header-anchor" href="#componentmodel-attributes" aria-label="Permalink to "ComponentModel Attributes"">​</a></h2><p>Coalesce also supports a number of the built-in <code>System.ComponentModel.DataAnnotations</code> attributes and will use these to shape the generated code.</p><h3 id="display" tabindex="-1">[Display] <a class="header-anchor" href="#display" aria-label="Permalink to "[Display]"">​</a></h3><p>The displayed name and description of a property, as well as the order in which it appears in generated views, can be set via the <code>[Display]</code> attribute. By default, properties will be displayed in the order in which they are defined in their class.</p><h3 id="displayname" tabindex="-1">[DisplayName] <a class="header-anchor" href="#displayname" aria-label="Permalink to "[DisplayName]"">​</a></h3><p>The displayed name of a property can also be set via the <code>[DisplayName]</code> attribute.</p><h3 id="description" tabindex="-1">[Description] <a class="header-anchor" href="#description" aria-label="Permalink to "[Description]"">​</a></h3><p>The description of a type or member, such as a class, property, method, or parameter.</p><h3 id="required" tabindex="-1">[Required] <a class="header-anchor" href="#required" aria-label="Permalink to "[Required]"">​</a></h3><p>Properties with <code>[Required]</code> will generate <a href="/Coalesce/modeling/model-components/attributes/client-validation.html">client validation</a> and <a href="/Coalesce/topics/security.html#server-side-data-validation">server validation</a> rules.</p><h3 id="range" tabindex="-1">[Range] <a class="header-anchor" href="#range" aria-label="Permalink to "[Range]"">​</a></h3><p>Properties with <code>[Range]</code> will generate <a href="/Coalesce/modeling/model-components/attributes/client-validation.html">client validation</a> and <a href="/Coalesce/topics/security.html#server-side-data-validation">server validation</a> rules.</p><h3 id="minlength" tabindex="-1">[MinLength] <a class="header-anchor" href="#minlength" aria-label="Permalink to "[MinLength]"">​</a></h3><p>Properties with <code>[MinLength]</code> will generate <a href="/Coalesce/modeling/model-components/attributes/client-validation.html">client validation</a> and <a href="/Coalesce/topics/security.html#server-side-data-validation">server validation</a> rules.</p><h3 id="maxlength" tabindex="-1">[MaxLength] <a class="header-anchor" href="#maxlength" aria-label="Permalink to "[MaxLength]"">​</a></h3><p>Properties with <code>[MaxLength]</code> will generate <a href="/Coalesce/modeling/model-components/attributes/client-validation.html">client validation</a> and <a href="/Coalesce/topics/security.html#server-side-data-validation">server validation</a> rules.</p><h3 id="datatype" tabindex="-1">[DataType] <a class="header-anchor" href="#datatype" aria-label="Permalink to "[DataType]"">​</a></h3><p>Some values of <code>DataType</code> when provided to <code>DataTypeAttribute</code> on a <code>string</code> property will alter the behavior of the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Vue Components</a>. See <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> for details.</p><h3 id="foreignkey" tabindex="-1">[ForeignKey] <a class="header-anchor" href="#foreignkey" aria-label="Permalink to "[ForeignKey]"">​</a></h3><p>Normally, Coalesce figures out which properties are foreign keys, but if you don't use standard EF naming conventions then you'll need to annotate with <code>[ForeignKey]</code> to help out both EF and Coalesce. See the <a href="https://docs.microsoft.com/en-us/ef/core/modeling/relationships" target="_blank" rel="noreferrer">Entity Framework Relationships</a> documentation for more.</p><h3 id="inverseproperty" tabindex="-1">[InverseProperty] <a class="header-anchor" href="#inverseproperty" aria-label="Permalink to "[InverseProperty]"">​</a></h3><p>Sometimes, Coalesce (and EF, too) can have trouble figuring out what the foreign key is supposed to be for a collection navigation property. See the <a href="https://docs.microsoft.com/en-us/ef/core/modeling/relationships" target="_blank" rel="noreferrer">Entity Framework Relationships</a> documentation for details on how and why to use <code>[InverseProperty]</code>.</p><h3 id="databasegenerated" tabindex="-1">[DatabaseGenerated] <a class="header-anchor" href="#databasegenerated" aria-label="Permalink to "[DatabaseGenerated]"">​</a></h3><p>Primary Keys with <code>[DatabaseGenerated(DatabaseGeneratedOption.None)]</code> will be settable on the client and will be appropriately handled by the <a href="/Coalesce/modeling/model-components/behaviors.html#standard-behaviors">Standard Behaviors</a> on the server.</p><h3 id="notmapped" tabindex="-1">[NotMapped] <a class="header-anchor" href="#notmapped" aria-label="Permalink to "[NotMapped]"">​</a></h3><p>Model properties that aren't mapped to the database should be marked with <code>[NotMapped]</code> so that Coalesce doesn't try to load them from the database when <a href="/Coalesce/modeling/model-components/attributes/search.html">searching</a> or carrying out the <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">Default Loading Behavior</a>.</p><h3 id="defaultvalue" tabindex="-1">[DefaultValue] <a class="header-anchor" href="#defaultvalue" aria-label="Permalink to "[DefaultValue]"">​</a></h3><p>Properties with <code>[DefaultValue]</code> will receive the specified value when a new ViewModel is instantiated on the client. This enables scenarios like pre-filling a required property with a suggested value.</p>',32),n=[i];function s(l,d,h,c,p,u){return t(),a("div",null,n)}const f=e(r,[["render",s]]);export{b as __pageData,f as default}; diff --git a/assets/modeling_model-components_attributes.md.BuUuuAHM.lean.js b/assets/modeling_model-components_attributes.md.BuUuuAHM.lean.js new file mode 100644 index 000000000..12fc0e9db --- /dev/null +++ b/assets/modeling_model-components_attributes.md.BuUuuAHM.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes.md","filePath":"modeling/model-components/attributes.md"}'),r={name:"modeling/model-components/attributes.md"},i=o("",32),n=[i];function s(l,d,h,c,p,u){return t(),a("div",null,n)}const f=e(r,[["render",s]]);export{b as __pageData,f as default}; diff --git a/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.js b/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.js new file mode 100644 index 000000000..d1e0ad479 --- /dev/null +++ b/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.js @@ -0,0 +1,17 @@ +import{_ as t,c as p,I as l,w as r,a7 as c,l as s,a,D as o,o as D}from"./chunks/framework.BkavzUpE.js";const V=JSON.parse('{"title":"[ClientValidation]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/client-validation.md","filePath":"modeling/model-components/attributes/client-validation.md"}'),i={name:"modeling/model-components/attributes/client-validation.md"},y=c(`<h1 id="clientvalidation" tabindex="-1">[ClientValidation] <a class="header-anchor" href="#clientvalidation" aria-label="Permalink to "[ClientValidation]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ClientValidationAttribute</code></p><p>The <code>ClientValidation</code> attribute is used to control the behavior of client-side model validation and to add additional client-only validation parameters. Database validation is available via standard <code>System.ComponentModel.DataAnnotations</code> annotations.</p><p>These propagate to the client as validations in TypeScript via generated <a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata</a> and <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel rules</a>. Any failing validation rules prevent saves from going to the server.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>This attribute controls client-side validation only. To perform server-side validation, create a custom <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors class</a> for your types and/or place C# validation attributes on your models. <a href="/Coalesce/topics/security.html#server-side-data-validation">Read More</a>.</p></div><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ClientValidation</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">IsRequired</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">AllowSave</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ClientValidation</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">IsRequired</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">AllowSave</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">MinLength</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">MaxLength</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">100</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,8),C=s("p",null,"Set an error message to be used if any client validations fail",-1),d=s("h3",{id:"validation-rule-properties",tabindex:"-1"},[a("Validation Rule Properties "),s("a",{class:"header-anchor",href:"#validation-rule-properties","aria-label":'Permalink to "Validation Rule Properties"'},"​")],-1),u=s("p",null,[a("In addition to the following properties, you also customize validation on a per-instance basis of the "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels"},"ViewModels"),a(" using the "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation"},"Rules/Validation"),a(" methods.")],-1),h=s("div",{class:"language-c#"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"c#"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsRequired"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MinValue"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MaxValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MaxValue"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MinValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MinLength"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MaxValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MaxLength"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MinValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," string"),s("span",{style:{color:"#9CDCFE"}}," Pattern"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsEmail"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsPhoneUs"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")])])])],-1);function m(b,v,E,g,F,_){const e=o("Prop"),n=o("CodeTabs");return D(),p("div",null,[y,l(e,{def:"public string ErrorMessage { get; set; }"}),C,d,l(n,null,{vue:r(()=>[u,h]),_:1})])}const x=t(i,[["render",m]]);export{V as __pageData,x as default}; diff --git a/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.lean.js b/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.lean.js new file mode 100644 index 000000000..ef6ceca3e --- /dev/null +++ b/assets/modeling_model-components_attributes_client-validation.md.BXI5mU5c.lean.js @@ -0,0 +1,8 @@ +import{_ as t,c as p,I as l,w as r,a7 as c,l as s,a,D as o,o as D}from"./chunks/framework.BkavzUpE.js";const V=JSON.parse('{"title":"[ClientValidation]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/client-validation.md","filePath":"modeling/model-components/attributes/client-validation.md"}'),i={name:"modeling/model-components/attributes/client-validation.md"},y=c("",8),C=s("p",null,"Set an error message to be used if any client validations fail",-1),d=s("h3",{id:"validation-rule-properties",tabindex:"-1"},[a("Validation Rule Properties "),s("a",{class:"header-anchor",href:"#validation-rule-properties","aria-label":'Permalink to "Validation Rule Properties"'},"​")],-1),u=s("p",null,[a("In addition to the following properties, you also customize validation on a per-instance basis of the "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels"},"ViewModels"),a(" using the "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation"},"Rules/Validation"),a(" methods.")],-1),h=s("div",{class:"language-c#"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"c#"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsRequired"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MinValue"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MaxValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MaxValue"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MinValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MinLength"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MaxValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," double"),s("span",{style:{color:"#9CDCFE"}}," MaxLength"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; } = "),s("span",{style:{color:"#569CD6"}},"double"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"MinValue"),s("span",{style:{color:"#D4D4D4"}},";")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," string"),s("span",{style:{color:"#9CDCFE"}}," Pattern"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsEmail"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")]),a(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"public"),s("span",{style:{color:"#569CD6"}}," bool"),s("span",{style:{color:"#9CDCFE"}}," IsPhoneUs"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"get"),s("span",{style:{color:"#D4D4D4"}},"; "),s("span",{style:{color:"#9CDCFE"}},"set"),s("span",{style:{color:"#D4D4D4"}},"; }")])])])],-1);function m(b,v,E,g,F,_){const e=o("Prop"),n=o("CodeTabs");return D(),p("div",null,[y,l(e,{def:"public string ErrorMessage { get; set; }"}),C,d,l(n,null,{vue:r(()=>[u,h]),_:1})])}const x=t(i,[["render",m]]);export{V as __pageData,x as default}; diff --git a/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.js b/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.js new file mode 100644 index 000000000..b9107443c --- /dev/null +++ b/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"[Coalesce]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/coalesce.md","filePath":"modeling/model-components/attributes/coalesce.md"}'),s={name:"modeling/model-components/attributes/coalesce.md"},c=a('<h1 id="coalesce" tabindex="-1">[Coalesce] <a class="header-anchor" href="#coalesce" aria-label="Permalink to "[Coalesce]"">​</a></h1><p><code>IntelliTect.Coalesce.CoalesceAttribute</code></p><p>Used to mark a type or member for generation by Coalesce.</p><p>Some types and members will be implicitly included in generation - for example, all types represented by a <code>DbSet<T></code> on a <code>DbContext</code> that has a <code>[Coalesce]</code> attribute will automatically be included. Properties on these types will also be generated for unless explicitly excluded, since this is by far the most common usage scenario in Coalesce.</p><p>On the other hand, <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> on these types will not have endpoints generated unless they are explicitly annotated with <code>[Coalesce]</code> to avoid accidentally exposing methods that were perhaps not intended to be exposed.</p><p>The documentation pages for types and members that require/accept this attribute will state as such. An exhaustive list of all valid targets for <code>[Coalesce]</code> will not be found on this page.</p>',6),l=[c];function n(i,d,r,p,m,h){return o(),t("div",null,l)}const b=e(s,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.lean.js b/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.lean.js new file mode 100644 index 000000000..3d161697e --- /dev/null +++ b/assets/modeling_model-components_attributes_coalesce.md.DMD85T4j.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"[Coalesce]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/coalesce.md","filePath":"modeling/model-components/attributes/coalesce.md"}'),s={name:"modeling/model-components/attributes/coalesce.md"},c=a("",6),l=[c];function n(i,d,r,p,m,h){return o(),t("div",null,l)}const b=e(s,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.js b/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.js new file mode 100644 index 000000000..111174159 --- /dev/null +++ b/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.js @@ -0,0 +1,27 @@ +import{_ as o,c as a,I as e,a7 as s,D as l,o as t}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse('{"title":"[ControllerAction]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/controller-action.md","filePath":"modeling/model-components/attributes/controller-action.md"}'),p={name:"modeling/model-components/attributes/controller-action.md"},r=s(`<h1 id="controlleraction" tabindex="-1">[ControllerAction] <a class="header-anchor" href="#controlleraction" aria-label="Permalink to "[ControllerAction]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ControllerActionAttribute</code></p><p>Specifies how a <a href="/Coalesce/modeling/model-components/methods.html">custom method</a> is exposed via HTTP. Can be used to customize the HTTP method/verb for the method, as well as caching behavior.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> PictureHash</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ControllerAction</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Method</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">HttpMethod</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Get</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> long</span><span style="color:#DCDCAA;"> PersonCount</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> lastNameStartsWith</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Count</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">LastName</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">StartsWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">lastNameStartsWith</span><span style="color:#D4D4D4;">));</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ControllerAction</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">HttpMethod</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Get</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">VaryByProperty</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PictureHash</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> IFile</span><span style="color:#DCDCAA;"> GetPicture</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Models</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">File</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">PersonPictures</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">PersonId</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">PersonId</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> )</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> ContentType</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"image/jpg"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> };</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,6),c=s("<p>The HTTP method to use on the generated API Controller.</p><p>Enum values are:</p><ul><li><code>HttpMethod.Post</code> Use the POST method.</li><li><code>HttpMethod.Get</code> Use the GET method.</li><li><code>HttpMethod.Put</code> Use the PUT method.</li><li><code>HttpMethod.Delete</code> Use the DELETE method.</li><li><code>HttpMethod.Patch</code> Use the PATCH method.</li></ul>",3),D=s('<p>For HTTP GET model instance methods, if <code>VaryByProperty</code> is set to the name of a property on the parent model class, <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag" target="_blank" rel="noreferrer">ETag headers</a> based on the value of this property will be used to implement caching. If the client provides a matching <code>If-None-Match</code> Header with the request, the method will not be invoked and HTTP Status `304 Not Modified`` will be returned.</p><p>Additionally, if the <code>VaryByProperty</code> is set to a client-exposed <a href="/Coalesce/modeling/model-components/properties.html">property</a>, the value of the property will be included in the query string when performing API calls to invoke the method. If the query string value matches the current value on the model, a long-term <code>Cache-Control</code> header will be set on the response, allowing the client to avoid making future invocations to the same method while the value of the <code>VaryByProperty</code> remains the same.</p>',2);function i(y,C,d,h,m,u){const n=l("Prop");return t(),a("div",null,[r,e(n,{def:"public HttpMethod Method { get; set; } = HttpMethod.Post;",ctor:"1"}),c,e(n,{def:"public string VaryByProperty { get; set; }"}),D])}const P=o(p,[["render",i]]);export{_ as __pageData,P as default}; diff --git a/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.lean.js b/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.lean.js new file mode 100644 index 000000000..1fe83c417 --- /dev/null +++ b/assets/modeling_model-components_attributes_controller-action.md.B2Y3z3V6.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,I as e,a7 as s,D as l,o as t}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse('{"title":"[ControllerAction]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/controller-action.md","filePath":"modeling/model-components/attributes/controller-action.md"}'),p={name:"modeling/model-components/attributes/controller-action.md"},r=s("",6),c=s("",3),D=s("",2);function i(y,C,d,h,m,u){const n=l("Prop");return t(),a("div",null,[r,e(n,{def:"public HttpMethod Method { get; set; } = HttpMethod.Post;",ctor:"1"}),c,e(n,{def:"public string VaryByProperty { get; set; }"}),D])}const P=o(p,[["render",i]]);export{_ as __pageData,P as default}; diff --git a/assets/modeling_model-components_attributes_controller.md.bBfqifUV.js b/assets/modeling_model-components_attributes_controller.md.bBfqifUV.js new file mode 100644 index 000000000..5cbde80f6 --- /dev/null +++ b/assets/modeling_model-components_attributes_controller.md.bBfqifUV.js @@ -0,0 +1,7 @@ +import{_ as s,c as a,I as t,a7 as n,l as e,a as l,D as r,o as c}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"[Controller]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/controller.md","filePath":"modeling/model-components/attributes/controller.md"}'),p={name:"modeling/model-components/attributes/controller.md"},i=n(`<h1 id="controller" tabindex="-1">[Controller] <a class="header-anchor" href="#controller" aria-label="Permalink to "[Controller]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ControllerAttribute</code></p><p>Allows for control over the generated MVC Controllers.</p><p>Currently only controls over the API controllers are present, but additional properties may be added in the future.</p><p>This attribute may be placed on any type from which an API controller is generated, including <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>, <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, and <a href="/Coalesce/modeling/model-types/services.html">Services</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Controller</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ApiRouted</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">ApiControllerSuffix</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Gen"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">ApiActionsProtected</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,8),d=n("<p>Determines whether or not a <code>[Route]</code> annotation will be placed on the generated API controller. Set to <code>false</code> to prevent emission of the <code>[Route]</code> attribute.</p><p>Use cases include:</p><ul><li>Defining your routes through IRouteBuilder in Startup.cs instead</li><li>Preventing API controllers from being exposed by default.</li><li>Routing to your own custom controller that inherits from the generated API controller in order to implement more granular or complex authorization logic.</li></ul>",3),u=e("p",null,"If set, will determine the name of the generated API controller.",-1),h=e("p",null,[l("Takes precedence over the value of "),e("code",null,"ApiControllerSuffix"),l(".")],-1),m=e("p",null,"If set, will be appended to the default name of the API controller generated for this model.",-1),D=e("p",null,[l("Will be overridden by the value of "),e("code",null,"ApiControllerName"),l(" if it is set.")],-1),_=n('<p>If true, actions on the generated API controller will have an access modifier of <code>protected</code> instead of <code>public</code>.</p><p>In order to consume the generated API controller, you must inherit from the generated controller and override each desired generated action method via hiding (i.e. use <code>public new ...</code>, not <code>public override ...</code>).</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>If you inherit from the generated API controllers and override their methods without setting <code>ApiActionsProtected = true</code>, all non-overridden actions from the generated controller will still be exposed as normal.</p></div>',3);function f(y,C,g,b,A,P){const o=r("Prop");return c(),a("div",null,[i,t(o,{def:"public bool ApiRouted { get; set; } = true;"}),d,t(o,{def:"public string ApiControllerName { get; set; } = null;"}),u,h,t(o,{def:"public string ApiControllerSuffix { get; set; } = null;"}),m,D,t(o,{def:"public bool ApiActionsProtected { get; set; } = false;"}),_])}const T=s(p,[["render",f]]);export{v as __pageData,T as default}; diff --git a/assets/modeling_model-components_attributes_controller.md.bBfqifUV.lean.js b/assets/modeling_model-components_attributes_controller.md.bBfqifUV.lean.js new file mode 100644 index 000000000..8da33bac8 --- /dev/null +++ b/assets/modeling_model-components_attributes_controller.md.bBfqifUV.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,I as t,a7 as n,l as e,a as l,D as r,o as c}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"[Controller]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/controller.md","filePath":"modeling/model-components/attributes/controller.md"}'),p={name:"modeling/model-components/attributes/controller.md"},i=n("",8),d=n("",3),u=e("p",null,"If set, will determine the name of the generated API controller.",-1),h=e("p",null,[l("Takes precedence over the value of "),e("code",null,"ApiControllerSuffix"),l(".")],-1),m=e("p",null,"If set, will be appended to the default name of the API controller generated for this model.",-1),D=e("p",null,[l("Will be overridden by the value of "),e("code",null,"ApiControllerName"),l(" if it is set.")],-1),_=n("",3);function f(y,C,g,b,A,P){const o=r("Prop");return c(),a("div",null,[i,t(o,{def:"public bool ApiRouted { get; set; } = true;"}),d,t(o,{def:"public string ApiControllerName { get; set; } = null;"}),u,h,t(o,{def:"public string ApiControllerSuffix { get; set; } = null;"}),m,D,t(o,{def:"public bool ApiActionsProtected { get; set; } = false;"}),_])}const T=s(p,[["render",f]]);export{v as __pageData,T as default}; diff --git a/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.js b/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.js new file mode 100644 index 000000000..a413019d6 --- /dev/null +++ b/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.js @@ -0,0 +1,7 @@ +import{_ as s,c as o,I as a,a7 as t,D as l,o as n}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[CreateController]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/create-controller.md","filePath":"modeling/model-components/attributes/create-controller.md"}'),r={name:"modeling/model-components/attributes/create-controller.md"},p=t(`<h1 id="createcontroller" tabindex="-1">[CreateController] <a class="header-anchor" href="#createcontroller" aria-label="Permalink to "[CreateController]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.CreateControllerAttribute</code></p><p>By default an API and View controller are both created. This allows for suppressing the creation of either or both of these.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">CreateController</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">view</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">api</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,6);function c(i,D,d,C,u,y){const e=l("Prop");return n(),o("div",null,[p,a(e,{def:"public bool WillCreateView { get; set; } = true",ctor:"1"}),a(e,{def:"public bool WillCreateApi { get; set; } = true",ctor:"2"})])}const _=s(r,[["render",c]]);export{m as __pageData,_ as default}; diff --git a/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.lean.js b/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.lean.js new file mode 100644 index 000000000..fea5dc713 --- /dev/null +++ b/assets/modeling_model-components_attributes_create-controller.md.Ddy0AhTl.lean.js @@ -0,0 +1 @@ +import{_ as s,c as o,I as a,a7 as t,D as l,o as n}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[CreateController]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/create-controller.md","filePath":"modeling/model-components/attributes/create-controller.md"}'),r={name:"modeling/model-components/attributes/create-controller.md"},p=t("",6);function c(i,D,d,C,u,y){const e=l("Prop");return n(),o("div",null,[p,a(e,{def:"public bool WillCreateView { get; set; } = true",ctor:"1"}),a(e,{def:"public bool WillCreateApi { get; set; } = true",ctor:"2"})])}const _=s(r,[["render",c]]);export{m as __pageData,_ as default}; diff --git a/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.js b/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.js new file mode 100644 index 000000000..d1bd6c01c --- /dev/null +++ b/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.js @@ -0,0 +1,7 @@ +import{_ as s,c as n,I as o,a,a7 as l,l as e,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"[DateType]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/date-type.md","filePath":"modeling/model-components/attributes/date-type.md"}'),c={name:"modeling/model-components/attributes/date-type.md"},i=l(`<h1 id="datetype" tabindex="-1">[DateType] <a class="header-anchor" href="#datetype" aria-label="Permalink to "[DateType]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.DateTypeAttribute</code></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>This attribute is deprecated and not recommended for use in new development. Instead, use the native .NET types <a href="https://learn.microsoft.com/en-us/dotnet/api/system.dateonly" target="_blank" rel="noreferrer"><code>System.DateOnly</code></a> and <a href="https://learn.microsoft.com/en-us/dotnet/api/system.timeonly" target="_blank" rel="noreferrer"><code>System.TimeOnly</code></a>.</p></div><p>Specifies whether a DateTime type will have a date and a time, or only a date.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DateType</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DateTypeAttribute</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DateTypes</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DateOnly</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">BirthDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,7),D=e("p",null,"The type of date the property represents.",-1),d=e("p",null,"Enum values are:",-1),y=e("ul",null,[e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.DateTime"),a(" Subject is both a date and time.")]),e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.DateOnly"),a(" Subject is only a date with no significant time component.")]),e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.TimeOnly"),a(" Subject is only a time with no significant date component.")])],-1);function m(u,h,_,T,b,C){const t=p("Prop");return r(),n("div",null,[i,o(t,{def:"public DateTypes DateType { get; set; } = DateTypes.DateTime; ",ctor:"1"}),a(),D,d,y])}const E=s(c,[["render",m]]);export{g as __pageData,E as default}; diff --git a/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.lean.js b/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.lean.js new file mode 100644 index 000000000..f6d923c09 --- /dev/null +++ b/assets/modeling_model-components_attributes_date-type.md.DFK8RwS4.lean.js @@ -0,0 +1 @@ +import{_ as s,c as n,I as o,a,a7 as l,l as e,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"[DateType]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/date-type.md","filePath":"modeling/model-components/attributes/date-type.md"}'),c={name:"modeling/model-components/attributes/date-type.md"},i=l("",7),D=e("p",null,"The type of date the property represents.",-1),d=e("p",null,"Enum values are:",-1),y=e("ul",null,[e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.DateTime"),a(" Subject is both a date and time.")]),e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.DateOnly"),a(" Subject is only a date with no significant time component.")]),e("li",null,[e("code",null,"DateTypeAttribute.DateTypes.TimeOnly"),a(" Subject is only a time with no significant date component.")])],-1);function m(u,h,_,T,b,C){const t=p("Prop");return r(),n("div",null,[i,o(t,{def:"public DateTypes DateType { get; set; } = DateTypes.DateTime; ",ctor:"1"}),a(),D,d,y])}const E=s(c,[["render",m]]);export{g as __pageData,E as default}; diff --git a/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.js b/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.js new file mode 100644 index 000000000..a7655d3dc --- /dev/null +++ b/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.js @@ -0,0 +1,23 @@ +import{_ as l,c as o,I as n,a as e,a7 as p,l as s,D as t,o as r}from"./chunks/framework.BkavzUpE.js";const O=JSON.parse('{"title":"[DefaultOrderBy]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/default-order-by.md","filePath":"modeling/model-components/attributes/default-order-by.md"}'),c={name:"modeling/model-components/attributes/default-order-by.md"},D=p(`<h1 id="defaultorderby" tabindex="-1">[DefaultOrderBy] <a class="header-anchor" href="#defaultorderby" aria-label="Permalink to "[DefaultOrderBy]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.DefaultOrderByAttribute</code></p><p>Allows setting of the default manner in which the data returned to the client will be sorted. Multiple fields can be used to sort an object by specifying an index.</p><p>This affects the sort order both when requesting a list of the model itself, as well as when the model appears as a child collection off of a navigation property of another object.</p><p>In the first case (a list of the model itself), this can be overridden by setting the <code>orderBy</code> or <code>orderByDescending</code> property on the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#member-list-_params">TypeScript <code>ListViewModel</code>'s <code>$params</code></a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> DepartmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">FieldOrder</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">FieldName</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">FieldOrder</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> DepartmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">FieldOrder</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">FieldName</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">FieldOrder</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,9),i=s("p",null,"Specify the index of this field when sorting by multiple fields.",-1),y=s("p",null,[e("Lower-valued properties will be used first; higher-valued properties will be used as a tiebreaker (i.e. "),s("code",null,".ThenBy(...)"),e(").")],-1),d=s("p",null,"Specify the direction of the ordering for the property.",-1),C=s("p",null,"Enum values are:",-1),u=s("ul",null,[s("li",null,[s("code",null,"DefaultOrderByAttribute.OrderByDirections.Ascending")]),s("li",null,[s("code",null,"DefaultOrderByAttribute.OrderByDirections.Descending")])],-1),h=s("p",null,[e("When using the "),s("code",null,"DefaultOrderByAttribute"),e(" on an object property, specifies the field on the object to use for sorting. See the first example above.")],-1);function f(m,b,g,_,B,E){const a=t("Prop");return r(),o("div",null,[D,n(a,{def:"public int FieldOrder { get; set; } = 0; ",ctor:"1"}),e(),i,y,n(a,{def:"public OrderByDirections OrderByDirection { get; set; } = OrderByDirections.Ascending;",ctor:"2"}),d,C,u,n(a,{def:"public string FieldName { get; set; }"}),h])}const v=l(c,[["render",f]]);export{O as __pageData,v as default}; diff --git a/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.lean.js b/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.lean.js new file mode 100644 index 000000000..b4ff18522 --- /dev/null +++ b/assets/modeling_model-components_attributes_default-order-by.md.DDS6LyOo.lean.js @@ -0,0 +1 @@ +import{_ as l,c as o,I as n,a as e,a7 as p,l as s,D as t,o as r}from"./chunks/framework.BkavzUpE.js";const O=JSON.parse('{"title":"[DefaultOrderBy]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/default-order-by.md","filePath":"modeling/model-components/attributes/default-order-by.md"}'),c={name:"modeling/model-components/attributes/default-order-by.md"},D=p("",9),i=s("p",null,"Specify the index of this field when sorting by multiple fields.",-1),y=s("p",null,[e("Lower-valued properties will be used first; higher-valued properties will be used as a tiebreaker (i.e. "),s("code",null,".ThenBy(...)"),e(").")],-1),d=s("p",null,"Specify the direction of the ordering for the property.",-1),C=s("p",null,"Enum values are:",-1),u=s("ul",null,[s("li",null,[s("code",null,"DefaultOrderByAttribute.OrderByDirections.Ascending")]),s("li",null,[s("code",null,"DefaultOrderByAttribute.OrderByDirections.Descending")])],-1),h=s("p",null,[e("When using the "),s("code",null,"DefaultOrderByAttribute"),e(" on an object property, specifies the field on the object to use for sorting. See the first example above.")],-1);function f(m,b,g,_,B,E){const a=t("Prop");return r(),o("div",null,[D,n(a,{def:"public int FieldOrder { get; set; } = 0; ",ctor:"1"}),e(),i,y,n(a,{def:"public OrderByDirections OrderByDirection { get; set; } = OrderByDirections.Ascending;",ctor:"2"}),d,C,u,n(a,{def:"public string FieldName { get; set; }"}),h])}const v=l(c,[["render",f]]);export{O as __pageData,v as default}; diff --git a/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.js b/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.js new file mode 100644 index 000000000..7038bd59b --- /dev/null +++ b/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.js @@ -0,0 +1,30 @@ +import{_ as p,c,I as o,w as r,a as e,a7 as l,l as s,D as n,o as i}from"./chunks/framework.BkavzUpE.js";const A=JSON.parse('{"title":"[DtoIncludes] & [DtoExcludes]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/dto-includes-excludes.md","filePath":"modeling/model-components/attributes/dto-includes-excludes.md"}'),D={name:"modeling/model-components/attributes/dto-includes-excludes.md"},d=l(`<h1 id="dtoincludes-dtoexcludes" tabindex="-1">[DtoIncludes] & [DtoExcludes] <a class="header-anchor" href="#dtoincludes-dtoexcludes" aria-label="Permalink to "[DtoIncludes] & [DtoExcludes]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.DtoIncludesAttribute</code><br><code>IntelliTect.Coalesce.DataAnnotations.DtoExcludesAttribute</code></p><p>Allows for easily controlling what data gets set to the client. When requesting data from the generated client-side list view models, you can specify an <code>includes</code> property on the ViewModel or ListViewModel.</p><p>For more information about the includes string, see <a href="/Coalesce/concepts/includes.html">Includes String</a>.</p><p>When the database entries are returned to the client they will be trimmed based on the requested includes string and the values in <code>DtoExcludes</code> and <code>DtoIncludes</code>.</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>These attributes are <strong>not security attributes</strong> - consumers of your application's API can set the includes string to any value when making a request.</p><p>Do not use them to keep certain data private - use the <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a> family of attributes for that.</p></div><p>It is important to note that the value of the includes string will match against these attributes on <em>any</em> of your models that appears in the object graph being mapped to DTOs - it is not limited only to the model type of the root object.</p><div class="tip custom-block"><p class="custom-block-title">Important</p><p><code>DtoIncludes</code> does not ensure that specific data will be loaded from the database. It only <em>permits</em> what is <em>already</em> loaded into the current EF DbContext to be returned from the API. See <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> to learn how to control what data gets loaded from the database.</p></div><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><p>Server code:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // Don't include CreatedBy when editing - will be included for all other views</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoExcludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Editor"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> AppUser</span><span style="color:#9CDCFE;"> CreatedBy</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Only include the Person's Department when \`includes == "details"\` on the TypeScript ViewModel.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoIncludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"details"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // LastName will be included in all views</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Department</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DtoIncludes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"details"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">People</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Client code:</p>`,12),y=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Editor"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList.$items will not contain CreatedBy nor Department objects.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList2"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList2"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. ")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Department will be allowed to include its other Person objects.")])])])],-1),u=s("h2",{id:"properties",tabindex:"-1"},[e("Properties "),s("a",{class:"header-anchor",href:"#properties","aria-label":'Permalink to "Properties"'},"​")],-1),C=l('<p>A comma-delimited list of values of <a href="/Coalesce/concepts/includes.html"><code>includes</code></a> on which to operate.</p><p>For <code>DtoIncludes</code>, this will be the values of <code>includes</code> for which this property will be <strong>allowed</strong> to be serialized and sent to the client.</p><p>For <code>DtoExcludes</code>, this will be the values of <code>includes</code> for which this property will <strong>not</strong> be serialized and sent to the client.</p>',3);function h(m,b,_,g,w,E){const t=n("CodeTabs"),a=n("Prop");return i(),c("div",null,[d,o(t,null,{vue:r(()=>[y]),_:1}),u,o(a,{def:"public string ContentViews { get; set; }",ctor:"1"}),e(),C])}const x=p(D,[["render",h]]);export{A as __pageData,x as default}; diff --git a/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.lean.js b/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.lean.js new file mode 100644 index 000000000..1f35f5e77 --- /dev/null +++ b/assets/modeling_model-components_attributes_dto-includes-excludes.md.Cgp7nqWy.lean.js @@ -0,0 +1,12 @@ +import{_ as p,c,I as o,w as r,a as e,a7 as l,l as s,D as n,o as i}from"./chunks/framework.BkavzUpE.js";const A=JSON.parse('{"title":"[DtoIncludes] & [DtoExcludes]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/dto-includes-excludes.md","filePath":"modeling/model-components/attributes/dto-includes-excludes.md"}'),D={name:"modeling/model-components/attributes/dto-includes-excludes.md"},d=l("",12),y=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Editor"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList.$items will not contain CreatedBy nor Department objects.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," personList2"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"personList2"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$includes"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"details"'),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," personList"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. ")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Department will be allowed to include its other Person objects.")])])])],-1),u=s("h2",{id:"properties",tabindex:"-1"},[e("Properties "),s("a",{class:"header-anchor",href:"#properties","aria-label":'Permalink to "Properties"'},"​")],-1),C=l("",3);function h(m,b,_,g,w,E){const t=n("CodeTabs"),a=n("Prop");return i(),c("div",null,[d,o(t,null,{vue:r(()=>[y]),_:1}),u,o(a,{def:"public string ContentViews { get; set; }",ctor:"1"}),e(),C])}const x=p(D,[["render",h]]);export{A as __pageData,x as default}; diff --git a/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.js b/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.js new file mode 100644 index 000000000..51f70e1c8 --- /dev/null +++ b/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.js @@ -0,0 +1,11 @@ +import{_ as l,c as n,I as t,a7 as s,l as o,a,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"[Execute]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/execute.md","filePath":"modeling/model-components/attributes/execute.md"}'),c={name:"modeling/model-components/attributes/execute.md"},p=s(`<h1 id="execute" tabindex="-1">[Execute] <a class="header-anchor" href="#execute" aria-label="Permalink to "[Execute]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ExecuteAttribute</code></p><p>Controls various aspects of <a href="/Coalesce/modeling/model-components/methods.html">Custom Methods</a>, including role-based permissions, HTTP behavior, and more.</p><p>For other security controls, see <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Execute</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Payroll,HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> GiveRaise</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">int</span><span style="color:#9CDCFE;"> centsPerHour</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,7),d=o("p",null,"A comma-separated list of roles which are allowed to execute the method.",-1),h=s("<p>The level of access to allow for the action for the method.</p><p>Enum values are:</p><ul><li><code>SecurityPermissionLevels.AllowAll</code> Allow all users to perform the action for the attribute, including users who are not authenticated at all.</li><li><code>SecurityPermissionLevels.AllowAuthorized</code> Allow only users who are members of the roles specified on the attribute to perform the action. If no roles are specified on the attribute, then all authenticated users are allowed (no anonymous access).</li><li><code>SecurityPermissionLevels.DenyAll</code> Deny the action to all users, regardless of authentication status or authorization level. If <code>DenyAll</code> is used, no API endpoint for the action will be generated.</li></ul>",3),u=o("p",null,"If true, the method's arguments will be cleared after a successful invocation on admin pages.",-1),m=o("p",null,[a("If non-null, overrides the value of "),o("a",{href:"/Coalesce/topics/security.html#attribute-validation"},[o("code",null,"CoalesceOptions.ValidateAttributesForMethods")]),a(" when determining whether to perform automatic server-side validation of the method's parameters.")],-1),_=o("p",null,"If validation is performed, the method's parameters will be validated by the server and the method invocation prevented if errors are found.",-1),D=s("<p>The HTTP method to use on the generated API Controller.</p><p>Enum values are:</p><ul><li><code>HttpMethod.Post</code> Use the POST method.</li><li><code>HttpMethod.Get</code> Use the GET method.</li><li><code>HttpMethod.Put</code> Use the PUT method.</li><li><code>HttpMethod.Delete</code> Use the DELETE method.</li><li><code>HttpMethod.Patch</code> Use the PATCH method.</li></ul>",3),y=s('<p>For HTTP GET model instance methods, if <code>VaryByProperty</code> is set to the name of a property on the parent model class, <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag" target="_blank" rel="noreferrer">ETag headers</a> based on the value of this property will be used to implement caching. If the client provides a matching <code>If-None-Match</code> Header with the request, the method will not be invoked and HTTP Status `304 Not Modified`` will be returned.</p><p>Additionally, if the <code>VaryByProperty</code> is set to a client-exposed <a href="/Coalesce/modeling/model-components/properties.html">property</a>, the value of the property will be included in the query string when performing API calls to invoke the method. If the query string value matches the current value on the model, a long-term <code>Cache-Control</code> header will be set on the response, allowing the client to avoid making future invocations to the same method while the value of the <code>VaryByProperty</code> remains the same.</p>',2),f=o("p",null,"Specifies that the targeted model instance method should load the instance it is called on from the specified data source when invoked from an API endpoint. If not defined, the model's default data source is used.",-1);function b(P,T,C,g,v,A){const e=r("Prop");return i(),n("div",null,[p,t(e,{def:"public string Roles { get; set; }"}),d,t(e,{def:"public SecurityPermissionLevels PermissionLevel { get; set; } = SecurityPermissionLevels.AllowAuthorized;"}),h,t(e,{def:"public bool AutoClear { get; set; }"}),u,t(e,{def:"public bool? ValidateAttributes { get; set; }"}),m,_,t(e,{def:"public HttpMethod HttpMethod { get; set; } = HttpMethod.Post;"}),D,t(e,{def:"public string? VaryByProperty { get; set; }"}),y,t(e,{def:"public Type? DataSource { get; set; }"}),f])}const S=l(c,[["render",b]]);export{w as __pageData,S as default}; diff --git a/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.lean.js b/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.lean.js new file mode 100644 index 000000000..3d03d1759 --- /dev/null +++ b/assets/modeling_model-components_attributes_execute.md.CyJLTcXq.lean.js @@ -0,0 +1 @@ +import{_ as l,c as n,I as t,a7 as s,l as o,a,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"[Execute]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/execute.md","filePath":"modeling/model-components/attributes/execute.md"}'),c={name:"modeling/model-components/attributes/execute.md"},p=s("",7),d=o("p",null,"A comma-separated list of roles which are allowed to execute the method.",-1),h=s("",3),u=o("p",null,"If true, the method's arguments will be cleared after a successful invocation on admin pages.",-1),m=o("p",null,[a("If non-null, overrides the value of "),o("a",{href:"/Coalesce/topics/security.html#attribute-validation"},[o("code",null,"CoalesceOptions.ValidateAttributesForMethods")]),a(" when determining whether to perform automatic server-side validation of the method's parameters.")],-1),_=o("p",null,"If validation is performed, the method's parameters will be validated by the server and the method invocation prevented if errors are found.",-1),D=s("",3),y=s("",2),f=o("p",null,"Specifies that the targeted model instance method should load the instance it is called on from the specified data source when invoked from an API endpoint. If not defined, the model's default data source is used.",-1);function b(P,T,C,g,v,A){const e=r("Prop");return i(),n("div",null,[p,t(e,{def:"public string Roles { get; set; }"}),d,t(e,{def:"public SecurityPermissionLevels PermissionLevel { get; set; } = SecurityPermissionLevels.AllowAuthorized;"}),h,t(e,{def:"public bool AutoClear { get; set; }"}),u,t(e,{def:"public bool? ValidateAttributes { get; set; }"}),m,_,t(e,{def:"public HttpMethod HttpMethod { get; set; } = HttpMethod.Post;"}),D,t(e,{def:"public string? VaryByProperty { get; set; }"}),y,t(e,{def:"public Type? DataSource { get; set; }"}),f])}const S=l(c,[["render",b]]);export{w as __pageData,S as default}; diff --git a/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.js b/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.js new file mode 100644 index 000000000..00c0b965d --- /dev/null +++ b/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.js @@ -0,0 +1,7 @@ +import{_ as a,c as t,I as n,a7 as e,D as o,o as l}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[Hidden]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/hidden.md","filePath":"modeling/model-components/attributes/hidden.md"}'),i={name:"modeling/model-components/attributes/hidden.md"},r=e(`<h1 id="hidden" tabindex="-1">[Hidden] <a class="header-anchor" href="#hidden" aria-label="Permalink to "[Hidden]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.HiddenAttribute</code></p><p>Mark an property as hidden from the edit, List or All areas.</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>This attribute is <strong>not a security attribute</strong> - it only affects the rendering of the admin pages. It has no impact on data visibility in the API.</p><p>Do not use it to keep certain data private - use the <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a> family of attributes for that.</p></div><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Hidden</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">HiddenAttribute</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Areas</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">All</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">IncomeLevelId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,7),p=e('<p>The areas in which the property should be hidden.</p><p>Enum values are:</p><ul><li><code>HiddenAttribute.Areas.None</code> Hide from no generated views. Primary and Foreign keys are hidden by default - setting this value explicitly can override this default behavior.</li><li><code>HiddenAttribute.Areas.All</code> Hide from all generated views</li><li><code>HiddenAttribute.Areas.List</code> Hide from admin list views only (<a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html"><code>c-admin-table</code></a>)</li><li><code>HiddenAttribute.Areas.Edit</code> Hide from admin editor only (<a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html"><code>c-admin-editor</code></a>)</li></ul>',3);function c(d,D,u,m,h,y){const s=o("Prop");return l(),t("div",null,[r,n(s,{def:"public Areas Area { get; set; } = Areas.All;",ctor:"1"}),p])}const C=a(i,[["render",c]]);export{b as __pageData,C as default}; diff --git a/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.lean.js b/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.lean.js new file mode 100644 index 000000000..52b47279e --- /dev/null +++ b/assets/modeling_model-components_attributes_hidden.md.CGb-z8S2.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,I as n,a7 as e,D as o,o as l}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[Hidden]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/hidden.md","filePath":"modeling/model-components/attributes/hidden.md"}'),i={name:"modeling/model-components/attributes/hidden.md"},r=e("",7),p=e("",3);function c(d,D,u,m,h,y){const s=o("Prop");return l(),t("div",null,[r,n(s,{def:"public Areas Area { get; set; } = Areas.All;",ctor:"1"}),p])}const C=a(i,[["render",c]]);export{b as __pageData,C as default}; diff --git a/assets/modeling_model-components_attributes_inject.md.CXstKKLV.js b/assets/modeling_model-components_attributes_inject.md.CXstKKLV.js new file mode 100644 index 000000000..8c5c0f535 --- /dev/null +++ b/assets/modeling_model-components_attributes_inject.md.CXstKKLV.js @@ -0,0 +1,12 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[Inject]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/inject.md","filePath":"modeling/model-components/attributes/inject.md"}'),o={name:"modeling/model-components/attributes/inject.md"},l=e(`<h1 id="inject" tabindex="-1">[Inject] <a class="header-anchor" href="#inject" aria-label="Permalink to "[Inject]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.InjectAttribute</code></p><p>Used to mark a <a href="/Coalesce/modeling/model-components/methods.html">Method</a> parameter for dependency injection from the application's <code>IServiceProvider</code>.</p><p>See <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> for more.</p><p>This gets translated to a <code>Microsoft.AspNetCore.Mvc.FromServicesAttribute</code> in the generated API controller's action.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#DCDCAA;"> GetFullName</span><span style="color:#D4D4D4;">([</span><span style="color:#4EC9B0;">Inject</span><span style="color:#D4D4D4;">] </span><span style="color:#4EC9B0;">ILogger</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">logger</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> logger</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">LogInformation</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Person "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">PersonId</span><span style="color:#D4D4D4;"> + </span><span style="color:#CE9178;">"'s full name was requested"</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> + </span><span style="color:#CE9178;">" "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">LastName</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,7),p=[l];function t(c,r,D,i,y,d){return n(),a("div",null,p)}const u=s(o,[["render",t]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_inject.md.CXstKKLV.lean.js b/assets/modeling_model-components_attributes_inject.md.CXstKKLV.lean.js new file mode 100644 index 000000000..a0457aee6 --- /dev/null +++ b/assets/modeling_model-components_attributes_inject.md.CXstKKLV.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[Inject]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/inject.md","filePath":"modeling/model-components/attributes/inject.md"}'),o={name:"modeling/model-components/attributes/inject.md"},l=e("",7),p=[l];function t(c,r,D,i,y,d){return n(),a("div",null,p)}const u=s(o,[["render",t]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.js b/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.js new file mode 100644 index 000000000..8d92aad9d --- /dev/null +++ b/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.js @@ -0,0 +1,20 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"[InternalUse]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/internal-use.md","filePath":"modeling/model-components/attributes/internal-use.md"}'),l={name:"modeling/model-components/attributes/internal-use.md"},o=e(`<h1 id="internaluse" tabindex="-1">[InternalUse] <a class="header-anchor" href="#internaluse" aria-label="Permalink to "[InternalUse]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.InternalUseAttribute</code></p><p>Used to mark a type, property or method for internal use. Internal Use members are:</p><ul><li>Not exposed via the API.</li><li>Not present in the generated TypeScript view models.</li><li>Not present nor accounted for in the generated C# DTOs.</li><li>Not present in the generated editor or list views.</li></ul><p>Effectively, an Internal Use member is invisible to Coalesce. This attribute can be considered a <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attribute</a>.</p><p>Note that this only needs to be used on members that are public. Non-public members (including <code>internal</code>) are always invisible to Coalesce.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><p>In this example, <code>Color</code> is the property exposed to the API, but <code>ColorHex</code> is the property that maps to the database that stores the value. A helper method also exists for the color generation, but needs no attribute to be hidden since methods must be explicitly exposed with <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a>.</p><p>If no color is saved in the database (the user hasn't picked a color), one is deterministically created.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> ApplicationUser</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ApplicationUserId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">InternalUse</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> ColorHex</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">NotMapped</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Color</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> get</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ColorHex</span><span style="color:#D4D4D4;"> ?? </span><span style="color:#DCDCAA;">GenerateColor</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ApplicationUserId</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ToRGBHexString</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#569CD6;"> set</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">ColorHex</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> HSLColor</span><span style="color:#DCDCAA;"> GenerateColor</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">seed</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> random</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">seed</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">HasValue</span><span style="color:#D4D4D4;"> ? </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> Random</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">seed</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Value</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> Random</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> HSLColor</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">random</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">NextDouble</span><span style="color:#D4D4D4;">(), </span><span style="color:#9CDCFE;">random</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Next</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">40</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">100</span><span style="color:#D4D4D4;">) / </span><span style="color:#B5CEA8;">100d</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">random</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Next</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">25</span><span style="color:#D4D4D4;">, </span><span style="color:#B5CEA8;">65</span><span style="color:#D4D4D4;">) / </span><span style="color:#B5CEA8;">100d</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,10),p=[o];function t(r,c,D,i,y,C){return n(),a("div",null,p)}const m=s(l,[["render",t]]);export{u as __pageData,m as default}; diff --git a/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.lean.js b/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.lean.js new file mode 100644 index 000000000..7367a8c64 --- /dev/null +++ b/assets/modeling_model-components_attributes_internal-use.md.BC-btFh9.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"[InternalUse]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/internal-use.md","filePath":"modeling/model-components/attributes/internal-use.md"}'),l={name:"modeling/model-components/attributes/internal-use.md"},o=e("",10),p=[o];function t(r,c,D,i,y,C){return n(),a("div",null,p)}const m=s(l,[["render",t]]);export{u as __pageData,m as default}; diff --git a/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.js b/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.js new file mode 100644 index 000000000..32eabbf3c --- /dev/null +++ b/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.js @@ -0,0 +1,12 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[ListText]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/list-text.md","filePath":"modeling/model-components/attributes/list-text.md"}'),t={name:"modeling/model-components/attributes/list-text.md"},l=e(`<h1 id="listtext" tabindex="-1">[ListText] <a class="header-anchor" href="#listtext" aria-label="Permalink to "[ListText]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ListTextAttribute</code></p><p>When a textual representation of an object needs to be displayed in the UI, this attribute controls which property will be used. Examples include dropdowns and cells in admin UI tables.</p><p>If this attribute is not used, and a property named <code>Name</code> exists on the model, that property will be used. Otherwise, the primary key will be used.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ListText</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">NotMapped</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">FirstName</span><span style="color:#D4D4D4;"> + </span><span style="color:#CE9178;">" "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">LastName</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,6),o=[l];function p(c,r,i,D,d,y){return n(),a("div",null,o)}const u=s(t,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.lean.js b/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.lean.js new file mode 100644 index 000000000..eb76b2a63 --- /dev/null +++ b/assets/modeling_model-components_attributes_list-text.md.BlG0OrE0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[ListText]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/list-text.md","filePath":"modeling/model-components/attributes/list-text.md"}'),t={name:"modeling/model-components/attributes/list-text.md"},l=e("",6),o=[l];function p(c,r,i,D,d,y){return n(),a("div",null,o)}const u=s(t,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.js b/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.js new file mode 100644 index 000000000..f831606e8 --- /dev/null +++ b/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.js @@ -0,0 +1,11 @@ +import{_ as o,c as n,I as l,a7 as t,l as a,a as s,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[LoadFromDataSource]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/load-from-data-source.md","filePath":"modeling/model-components/attributes/load-from-data-source.md"}'),c={name:"modeling/model-components/attributes/load-from-data-source.md"},D=t(`<h1 id="loadfromdatasource" tabindex="-1">[LoadFromDataSource] <a class="header-anchor" href="#loadfromdatasource" aria-label="Permalink to "[LoadFromDataSource]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.LoadFromDataSourceAttribute</code></p><p>Specifies that the targeted model instance method should load the instance it is called on from the specified data source when invoked from an API endpoint. If not defined, the model's default data source is used.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">LoadFromDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">WithoutCases</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> ChangeSpacesToDashesInName</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">FirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">" "</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"-"</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,6),d=a("p",null,[s("The name of the "),a("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),s(" to load the instance object from.")],-1);function i(m,u,y,C,h,_){const e=p("Prop");return r(),n("div",null,[D,l(e,{def:"public Type DataSourceType { get; }",ctor:"1"}),d])}const g=o(c,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.lean.js b/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.lean.js new file mode 100644 index 000000000..c92c55ca4 --- /dev/null +++ b/assets/modeling_model-components_attributes_load-from-data-source.md.Blwt71Fn.lean.js @@ -0,0 +1 @@ +import{_ as o,c as n,I as l,a7 as t,l as a,a as s,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[LoadFromDataSource]","description":"","frontmatter":{"deprecated":true},"headers":[],"relativePath":"modeling/model-components/attributes/load-from-data-source.md","filePath":"modeling/model-components/attributes/load-from-data-source.md"}'),c={name:"modeling/model-components/attributes/load-from-data-source.md"},D=t("",6),d=a("p",null,[s("The name of the "),a("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),s(" to load the instance object from.")],-1);function i(m,u,y,C,h,_){const e=p("Prop");return r(),n("div",null,[D,l(e,{def:"public Type DataSourceType { get; }",ctor:"1"}),d])}const g=o(c,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.js b/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.js new file mode 100644 index 000000000..efe37725d --- /dev/null +++ b/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.js @@ -0,0 +1,53 @@ +import{_ as p,c as l,I as n,a7 as a,l as o,D as e,o as t}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[ManyToMany]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/many-to-many.md","filePath":"modeling/model-components/attributes/many-to-many.md"}'),c={name:"modeling/model-components/attributes/many-to-many.md"},D=a(`<h1 id="manytomany" tabindex="-1">[ManyToMany] <a class="header-anchor" href="#manytomany" aria-label="Permalink to "[ManyToMany]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.ManyToManyAttribute</code></p><p>Used to specify a Many to Many relationship. Because EF core does not support automatic intermediate mapping tables, this field is used to allow for direct reference of the many-to-many collections from the ViewModel.</p><p>The named specified in the attribute will be used as the name of a collection of the objects on the other side of the relationship in the generated <a href="/Coalesce/stacks/vue/layers/viewmodels.html#model-data-properties">TypeScript ViewModels</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><p>In this example, we have a Person entity and an Appointment entity that share a many-to-many relationship. The PersonAppointment entity serves as the required middle table.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Appointments"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PersonAppointment</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">PersonAppointments</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Appointment</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> AppointmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> AppointmentDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"People"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PersonAppointment</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">PersonAppointments</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PersonAppointment</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonAppointmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Person</span><span style="color:#9CDCFE;"> Person</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> AppointmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Appointment</span><span style="color:#9CDCFE;"> Appointment</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,8),r=o("p",null,"The name of the collection that will contain the set of objects on the other side of the many-to-many relationship.",-1),y=a(`<p>The name of the navigation property on the middle entity that points at the far side of the many-to-many relationship. Use this to resolve ambiguities when the middle table of the many-to-many relationship has more than two reference navigation properties on it.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Appointments"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">FarNavigationProperty</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PersonAppointment</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Appointment</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PersonAppointment</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">PersonAppointments</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Appointment</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ManyToMany</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"People"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">FarNavigationProperty</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PersonAppointment</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Person</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PersonAppointment</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">PersonAppointments</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PersonAppointment</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Adding a third reference navigation property in the middle table requires </span></span> +<span class="line"><span style="color:#6A9955;"> // the use of FarNavigationProperty in order to resolve ambiguity.</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> WaiverId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Waiver</span><span style="color:#9CDCFE;"> Waiver</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,2);function i(C,m,d,h,u,E){const s=e("Prop");return t(),l("div",null,[D,n(s,{def:"public string CollectionName { get; }",ctor:"1"}),r,n(s,{def:"public string FarNavigationProperty { get; set; }"}),y])}const _=p(c,[["render",i]]);export{b as __pageData,_ as default}; diff --git a/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.lean.js b/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.lean.js new file mode 100644 index 000000000..cd4ec1daa --- /dev/null +++ b/assets/modeling_model-components_attributes_many-to-many.md.BViHlIRH.lean.js @@ -0,0 +1 @@ +import{_ as p,c as l,I as n,a7 as a,l as o,D as e,o as t}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"[ManyToMany]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/many-to-many.md","filePath":"modeling/model-components/attributes/many-to-many.md"}'),c={name:"modeling/model-components/attributes/many-to-many.md"},D=a("",8),r=o("p",null,"The name of the collection that will contain the set of objects on the other side of the many-to-many relationship.",-1),y=a("",2);function i(C,m,d,h,u,E){const s=e("Prop");return t(),l("div",null,[D,n(s,{def:"public string CollectionName { get; }",ctor:"1"}),r,n(s,{def:"public string FarNavigationProperty { get; set; }"}),y])}const _=p(c,[["render",i]]);export{b as __pageData,_ as default}; diff --git a/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.js b/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.js new file mode 100644 index 000000000..2f385fc34 --- /dev/null +++ b/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.js @@ -0,0 +1,23 @@ +import{_ as s,c as n,o as a,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[Restrict]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/restrict.md","filePath":"modeling/model-components/attributes/restrict.md"}'),o={name:"modeling/model-components/attributes/restrict.md"},l=e(`<h1 id="restrict" tabindex="-1">[Restrict] <a class="header-anchor" href="#restrict" aria-label="Permalink to "[Restrict]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.RestrictAttribute<T></code></p><p>In addition to <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">role-based</a> property restrictions, you can also define property restrictions that can execute custom code for each model instance if your logic require more nuanced decisions than can be made with roles.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">DataAnnotations</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> UserId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Restrict</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">SalaryRestriction</span><span style="color:#D4D4D4;">>]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> SalaryRestriction</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyUserService</span><span style="color:#9CDCFE;"> userService</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">IPropertyRestriction</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanRead</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#9CDCFE;"> model</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">() == </span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UserId</span><span style="color:#D4D4D4;"> || </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanWrite</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#9CDCFE;"> model</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">object</span><span style="color:#9CDCFE;"> incomingValue</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanFilter</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Restriction classes support dependency injection, so you can inject any supplemental services needed to make a determination.</p><p>The <code>UserCanRead</code> method controls whether values of the restricted property will be mapped from model instances to the generated DTO. Similarly, <code>UserCanWrite</code> controls whether the property can be mapped back to the model instance from the generated DTO.</p><p>The <code>UserCanFilter</code> method has a default implementation that returns <code>false</code>, but can be implemented if there is an appropriate, instance-agnostic way to determine if a user can sort, search, or filter values of that property.</p><p>Multiple different restrictions can be placed on a single property; all of them must succeed for the operation to be permitted. Restrictions also stack on top of role attribute restrictions (<code>[Read]</code> and <code>[Edit]</code>).</p><p>A non-generic variant of <code>IPropertyRestriction</code> also exists for restrictions that might be reused across multiple model types.</p>`,9),p=[l];function t(r,c,D,i,y,C){return a(),n("div",null,p)}const u=s(o,[["render",t]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.lean.js b/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.lean.js new file mode 100644 index 000000000..5a54f34c7 --- /dev/null +++ b/assets/modeling_model-components_attributes_restrict.md.B_Bl8ZiC.lean.js @@ -0,0 +1 @@ +import{_ as s,c as n,o as a,a7 as e}from"./chunks/framework.BkavzUpE.js";const m=JSON.parse('{"title":"[Restrict]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/restrict.md","filePath":"modeling/model-components/attributes/restrict.md"}'),o={name:"modeling/model-components/attributes/restrict.md"},l=e("",9),p=[l];function t(r,c,D,i,y,C){return a(),n("div",null,p)}const u=s(o,[["render",t]]);export{m as __pageData,u as default}; diff --git a/assets/modeling_model-components_attributes_search.md.Dpcvv62F.js b/assets/modeling_model-components_attributes_search.md.Dpcvv62F.js new file mode 100644 index 000000000..512c11ceb --- /dev/null +++ b/assets/modeling_model-components_attributes_search.md.Dpcvv62F.js @@ -0,0 +1,18 @@ +import{_ as n,c as l,I as s,a7 as o,l as e,a as t,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse('{"title":"[Search]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/search.md","filePath":"modeling/model-components/attributes/search.md"}'),c={name:"modeling/model-components/attributes/search.md"},p=o(`<h1 id="search" tabindex="-1">[Search] <a class="header-anchor" href="#search" aria-label="Permalink to "[Search]"">​</a></h1><p><code>IntelliTect.Coalesce.DataAnnotations.SearchAttribute</code></p><p>Coalesce supports searching through the generated API in its various implementations, including the generated list views (Table & Cards), in Select2 dropdowns, and directly through the TypeScript ListViewModels' <code>search</code> property.</p><p>The <code>search</code> parameter of the API can also be formatted as <code>PropertyName:SearchTerm</code> in order to search on an arbitrary property of a model. For example, a value of <code>Nickname:Steve-o</code> for a search term would search the <code>Nickname</code> property, even through it is not marked as searchable using this attribute.</p><p>By default, the system will search any field with the name 'Name'. If this doesn't exist, the ID is used as the only searchable field. Once you place the <code>Search</code> attribute on one or more properties on a model, only those annotated properties will be searched.</p><p>Searching will not search on properties that are hidden from the user by <a href="./security-attribute.html">Security Attributes</a>.</p><h2 id="searchable-property-types" tabindex="-1">Searchable Property Types <a class="header-anchor" href="#searchable-property-types" aria-label="Permalink to "Searchable Property Types"">​</a></h2><h4 id="strings" tabindex="-1">Strings <a class="header-anchor" href="#strings" aria-label="Permalink to "Strings"">​</a></h4><p>String fields will be searched based on the <code>SearchMethod</code> property on the attribute. See below.</p><h4 id="numeric-types" tabindex="-1">Numeric Types <a class="header-anchor" href="#numeric-types" aria-label="Permalink to "Numeric Types"">​</a></h4><p>If the input is numeric, numeric fields will be searched for the exact value.</p><h4 id="enums" tabindex="-1">Enums <a class="header-anchor" href="#enums" aria-label="Permalink to "Enums"">​</a></h4><p>If the input is a valid name of an enum value for an enum property and that property is searchable, rows will be searched for the exact value.</p><h4 id="dates" tabindex="-1">Dates <a class="header-anchor" href="#dates" aria-label="Permalink to "Dates"">​</a></h4><p>If the input is a parsable date, rows will be searched based on that date.</p><p>Date search will do its best to guess at the user's intentions:</p><ul><li>Various forms of year/month combos are supported, and if only a year/month is inputted, it will look for all dates in that month, e.g. "Feb 2017" or "2016-11".</li><li>A date without a time (or a time of exactly midnight) will search the entire day, e.g. "2017/4/18".</li><li>A date/time with minutes and seconds equal to 0 will search the entire hour, e.g. "April 7, 2017 11 AM".</li></ul><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>When searching on date properties, you should almost always set <code>IsSplitOnSpaces = false</code> on the <code>Search</code> attribute. This allows natural inputs like "July 21, 2017" to search correctly. Otherwise, only non-whitespace date formats will work, like "2017/21/07".</p></div><h4 id="reference-navigation-properties" tabindex="-1">Reference Navigation Properties <a class="header-anchor" href="#reference-navigation-properties" aria-label="Permalink to "Reference Navigation Properties"">​</a></h4><p>When a reference navigation property is marked with <code>[Search]</code>, searchable properties on the referenced object will also be searched. This behavior will go up to two levels away from the root object, and can be controlled with the <code>RootWhitelist</code> and <code>RootBlacklist</code> properties on the <code>[Search]</code> attribute that are outlined below.</p><h4 id="collection-navigation-properties" tabindex="-1">Collection Navigation Properties <a class="header-anchor" href="#collection-navigation-properties" aria-label="Permalink to "Collection Navigation Properties"">​</a></h4><p>When a collection navigation property is marked with <code>[Search]</code>, searchable properties on the child objects will also be searched. This behavior will go up to two levels away from the root object, and can be controlled with the <code>RootWhitelist</code> and <code>RootBlacklist</code> properties on the <code>[Search]</code> attribute that are outlined below.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Searches on collection navigation properties usually don't translate well with EF Core, leading to potentially degraded performance. Use this feature cautiously.</p></div><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">IsSplitOnSpaces</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> BirthDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Nickname</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">RootWhitelist</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Person</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Address</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Addresses</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h2>`,26),h=e("p",null,[t("If set to true (the default), each word in the search terms will be searched for in each searchable field independently, and a row will only be considered a match if each word in the search term is a match on at least one searchable property where "),e("code",null,"IsSplitOnSpaces == true")],-1),d=e("p",null,[t("This is useful when searching for a full name across two or more fields. In the above example, using "),e("code",null,"IsSplitOnSpaces = true"),t(" would provide more intuitive behavior since it will search both first name and last name for each word entered into the search field. But, "),e("a",{href:"https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/",target:"_blank",rel:"noreferrer"},"you probably shouldn't be doing that"),t(".")],-1),u=o("<p>For string properties, specifies how the value in the property/column will be matched.</p><ul><li><code>BeginsWith</code>: Search term will be checked for at the beginning of the field's value in a case insensitive manner.</li><li><code>Equals</code>: Search term must match the field exactly in a case insensitive manner.</li><li><code>EqualsNatural</code>: Search term must match exactly, using the natural casing handling of the evaluation environment. Default database collation will be used if evaluated in SQL, and exact casing will be used if evaluated in memory. This allows index seeks to be used instead of index scans, providing extra high performance searches against indexed columns</li><li><code>Contains</code>: Search term will be checked for anywhere inside the field's value in a case insensitive manner. <strong>Will be slow against large databases - performance cannot be improved with database indexing.</strong></li></ul>",2),D=e("p",null,"A comma-delimited list of model class names that, if set, will prevent the targeted property from being searched unless the root object of the API call was one of the specified class names.",-1),m=e("p",null,"A comma-delimited list of model class names that, if set, will prevent the targeted property from being searched if the root object of the API call was one of the specified class names.",-1);function y(b,f,g,w,C,S){const a=r("Prop");return i(),l("div",null,[p,s(a,{def:"public bool IsSplitOnSpaces { get; set; } = true;"}),h,d,s(a,{def:"public SearchMethods SearchMethod { get; set; } = SearchMethods.BeginsWith;"}),u,s(a,{def:"public string RootWhitelist { get; set; } = null;"}),D,s(a,{def:"public string RootBlacklist { get; set; } = null;"}),m])}const k=n(c,[["render",y]]);export{_ as __pageData,k as default}; diff --git a/assets/modeling_model-components_attributes_search.md.Dpcvv62F.lean.js b/assets/modeling_model-components_attributes_search.md.Dpcvv62F.lean.js new file mode 100644 index 000000000..537ae4e20 --- /dev/null +++ b/assets/modeling_model-components_attributes_search.md.Dpcvv62F.lean.js @@ -0,0 +1 @@ +import{_ as n,c as l,I as s,a7 as o,l as e,a as t,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const _=JSON.parse('{"title":"[Search]","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/search.md","filePath":"modeling/model-components/attributes/search.md"}'),c={name:"modeling/model-components/attributes/search.md"},p=o("",26),h=e("p",null,[t("If set to true (the default), each word in the search terms will be searched for in each searchable field independently, and a row will only be considered a match if each word in the search term is a match on at least one searchable property where "),e("code",null,"IsSplitOnSpaces == true")],-1),d=e("p",null,[t("This is useful when searching for a full name across two or more fields. In the above example, using "),e("code",null,"IsSplitOnSpaces = true"),t(" would provide more intuitive behavior since it will search both first name and last name for each word entered into the search field. But, "),e("a",{href:"https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/",target:"_blank",rel:"noreferrer"},"you probably shouldn't be doing that"),t(".")],-1),u=o("",2),D=e("p",null,"A comma-delimited list of model class names that, if set, will prevent the targeted property from being searched unless the root object of the API call was one of the specified class names.",-1),m=e("p",null,"A comma-delimited list of model class names that, if set, will prevent the targeted property from being searched if the root object of the API call was one of the specified class names.",-1);function y(b,f,g,w,C,S){const a=r("Prop");return i(),l("div",null,[p,s(a,{def:"public bool IsSplitOnSpaces { get; set; } = true;"}),h,d,s(a,{def:"public SearchMethods SearchMethod { get; set; } = SearchMethods.BeginsWith;"}),u,s(a,{def:"public string RootWhitelist { get; set; } = null;"}),D,s(a,{def:"public string RootBlacklist { get; set; } = null;"}),m])}const k=n(c,[["render",y]]);export{_ as __pageData,k as default}; diff --git a/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.js b/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.js new file mode 100644 index 000000000..59c8e2216 --- /dev/null +++ b/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.js @@ -0,0 +1,32 @@ +import{_ as t,c as n,I as s,a,a7 as o,l,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"Security Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/security-attribute.md","filePath":"modeling/model-components/attributes/security-attribute.md"}'),c={name:"modeling/model-components/attributes/security-attribute.md"},i=o(`<h1 id="security-attributes" tabindex="-1">Security Attributes <a class="header-anchor" href="#security-attributes" aria-label="Permalink to "Security Attributes"">​</a></h1><p>Coalesce provides a collection of attributes which can provide class-level (and property-level, where appropriate) security controls over the generated API.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This page provides API-level documentation for a specific set of attributes. For a complete overview of all the security-focused techniques that can be used in a Coalesce application, see the <a href="/Coalesce/topics/security.html">Security</a> page.</p></div><h2 id="class-vs-property-security" tabindex="-1">Class vs. Property Security <a class="header-anchor" href="#class-vs-property-security" aria-label="Permalink to "Class vs. Property Security"">​</a></h2><p>There are important differences between class-level security and property-level security, beyond the usage of the attributes themselves:</p><ul><li>Class-level security is enforced in the generated API Controllers, primarily as <code>[Authorize]</code> attributes on the generated actions.</li><li>Property security is enforced in the <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a>.</li></ul><p>This means that class-level security only affects calls made to that type's standard API endpoints (and any type's bulk save endpoint), but does not affect usages of that type on other types' navigation properties. For details on how to control navigation properties, see the <a href="/Coalesce/topics/security.html">Security page section on Entity Reads</a></p><h2 id="implementations" tabindex="-1">Implementations <a class="header-anchor" href="#implementations" aria-label="Permalink to "Implementations"">​</a></h2><h3 id="read" tabindex="-1">[Read] <a class="header-anchor" href="#read" aria-label="Permalink to "[Read]"">​</a></h3><p><code>IntelliTect.Coalesce.DataAnnotations.ReadAttribute</code></p><p>For <strong>class-level</strong> security, controls access to the type's generated <code>/get</code>, <code>/list</code>, and <code>/count</code> endpoints, as well as stacking with <code>[Edit]</code>/<code>[Save]</code> to control the <code>/bulkSave</code> endpoint.</p><p>For <strong>property-level</strong> security, controls reading of that property any time it would be returned by any Coalesce built-in or custom endpoint. If a <code>[Read]</code> attribute is present without an <code>[Edit]</code> attribute, the property is read-only.</p><p>Additionally, you can set <code>NoAutoInclude = true</code> on the <code>[Read]</code> attribute to suppress the <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">Default Loading Behavior</a>. When targeted at a class, prevents all navigation properties of that class' type from being auto-included. When targeted at a navigation property, only that specific navigation property is affected.</p><h4 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h4><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Management"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastFourSsn</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">NoAutoInclude</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> List</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Paycheck</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Paychecks</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="edit" tabindex="-1">[Edit] <a class="header-anchor" href="#edit" aria-label="Permalink to "[Edit]"">​</a></h3><p><code>IntelliTect.Coalesce.DataAnnotations.EditAttribute</code></p><p>For <strong>class-level</strong> security, controls saving of existing instances of the type through the generated <code>/save</code> and <code>/bulkSave</code> endpoints.</p><p>For <strong>property-level</strong> security, controls access to the property any time it accepted as input by any Coalesce built-in or custom endpoint. If a <code>[Read]</code> attribute is present, one of its roles must be fulfilled in addition to the roles specified (if any) for the <code>[Edit]</code> attribute.</p><h4 id="example-usage-1" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage-1" aria-label="Permalink to "Example Usage"">​</a></h4><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Management,Payroll"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll,HumanResources"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> LastFourSsn</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PermissionLevel</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Paycheck</span><span style="color:#D4D4D4;"> { ... }</span></span></code></pre></div><h3 id="create" tabindex="-1">[Create] <a class="header-anchor" href="#create" aria-label="Permalink to "[Create]"">​</a></h3><p><code>IntelliTect.Coalesce.DataAnnotations.CreateAttribute</code></p><p>For <strong>class-level</strong> security, controls saving of new instances of the type through the generated <code>/save</code> and <code>/bulkSave</code> endpoints.</p><p>Not applicable to properties.</p><h4 id="example-usage-2" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage-2" aria-label="Permalink to "Example Usage"">​</a></h4><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"HumanResources"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#D4D4D4;"> { ... }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PermissionLevel</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Paycheck</span><span style="color:#D4D4D4;"> { ... }</span></span></code></pre></div><h3 id="delete" tabindex="-1">[Delete] <a class="header-anchor" href="#delete" aria-label="Permalink to "[Delete]"">​</a></h3><p><code>IntelliTect.Coalesce.DataAnnotations.DeleteAttribute</code></p><p>For <strong>class-level</strong> security, controls deleting of existing instances of the type through the generated <code>/delete</code> and <code>/bulkSave</code> endpoints.</p><p>Not applicable to properties.</p><h4 id="example-usage-3" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage-3" aria-label="Permalink to "Example Usage"">​</a></h4><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HumanResources"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"Management"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#D4D4D4;"> { ... }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">PermissionLevel</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Paycheck</span><span style="color:#D4D4D4;"> { ... }</span></span></code></pre></div><h3 id="execute" tabindex="-1">[Execute] <a class="header-anchor" href="#execute" aria-label="Permalink to "[Execute]"">​</a></h3><p>A separate attribute for controlling <a href="/Coalesce/modeling/model-components/methods.html">custom method</a> execution exists. Its documentation may be found on the <a href="/Coalesce/modeling/model-components/attributes/execute.html">ExecuteAttribute</a> page.</p><h3 id="restrict" tabindex="-1">[Restrict] <a class="header-anchor" href="#restrict" aria-label="Permalink to "[Restrict]"">​</a></h3><p>For property security, <a href="#read"><code>[Read]</code></a> and <a href="#edit"><code>[Edit]</code></a> can be used to apply role-based security. If you need logic more complicated than checking for the presence of a role, <a href="/Coalesce/modeling/model-components/attributes/restrict.html">RestrictAttribute</a> offers the ability to write custom code to control the read and write permissions of a property.</p><h2 id="attribute-properties" tabindex="-1">Attribute Properties <a class="header-anchor" href="#attribute-properties" aria-label="Permalink to "Attribute Properties"">​</a></h2>`,38),D=l("p",null,"A comma-delimited list of roles that are authorized to take perform the action represented by the attribute. If the current user belongs to any of the listed roles, the action will be allowed.",-1),d=o("<p>The level of access to allow for the action for <strong>class-level security</strong> only. Has no effect for property-level security.</p><p>Enum values are:</p><ul><li><code>SecurityPermissionLevels.AllowAll</code> Allow all users to perform the action for the attribute, including users who are not authenticated at all.</li><li><code>SecurityPermissionLevels.AllowAuthorized</code> <strong>Default</strong>. Allow only users who are members of the roles specified on the attribute to perform the action. If no roles are specified on the attribute, then all authenticated users are allowed (no anonymous access).</li><li><code>SecurityPermissionLevels.DenyAll</code> Deny the action to all users, regardless of authentication status or authorization level. If <code>DenyAll</code> is used on a class, no API endpoint for the governed actions will be generated.</li></ul>",3);function y(u,h,C,m,b,g){const e=p("Prop");return r(),n("div",null,[i,s(e,{def:"public string Roles { get; set; }",ctor:"1"}),a(),D,s(e,{def:"public SecurityPermissionLevels PermissionLevel { get; set; }",ctor:"1"}),a(),d])}const v=t(c,[["render",y]]);export{E as __pageData,v as default}; diff --git a/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.lean.js b/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.lean.js new file mode 100644 index 000000000..431120e20 --- /dev/null +++ b/assets/modeling_model-components_attributes_security-attribute.md.Cbz4NAzW.lean.js @@ -0,0 +1 @@ +import{_ as t,c as n,I as s,a,a7 as o,l,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"Security Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/attributes/security-attribute.md","filePath":"modeling/model-components/attributes/security-attribute.md"}'),c={name:"modeling/model-components/attributes/security-attribute.md"},i=o("",38),D=l("p",null,"A comma-delimited list of roles that are authorized to take perform the action represented by the attribute. If the current user belongs to any of the listed roles, the action will be allowed.",-1),d=o("",3);function y(u,h,C,m,b,g){const e=p("Prop");return r(),n("div",null,[i,s(e,{def:"public string Roles { get; set; }",ctor:"1"}),a(),D,s(e,{def:"public SecurityPermissionLevels PermissionLevel { get; set; }",ctor:"1"}),a(),d])}const v=t(c,[["render",y]]);export{E as __pageData,v as default}; diff --git a/assets/modeling_model-components_behaviors.md.0-hD_ijP.js b/assets/modeling_model-components_behaviors.md.0-hD_ijP.js new file mode 100644 index 000000000..53918982d --- /dev/null +++ b/assets/modeling_model-components_behaviors.md.0-hD_ijP.js @@ -0,0 +1,70 @@ +import{_ as o,c as l,I as a,a7 as n,l as e,a as t,D as r,o as p}from"./chunks/framework.BkavzUpE.js";const M=JSON.parse('{"title":"Behaviors","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/behaviors.md","filePath":"modeling/model-components/behaviors.md"}'),c={name:"modeling/model-components/behaviors.md"},i=n(`<h1 id="behaviors" tabindex="-1">Behaviors <a class="header-anchor" href="#behaviors" aria-label="Permalink to "Behaviors"">​</a></h1><p><em>In a CRUD system, creating, updating, and deleting are considered especially different from reading. In Coalesce, the dedicated classes that perform these operations are derivatives of a special interface known as the</em> <code>IBehaviors<T></code>. <em>These are their stories</em>.</p><hr><p>Coalesce separates out the parts of your API that read your data from the parts that mutate it. The read portion is performed by <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a>, and the mutations are performed by behaviors. Like data sources, there exists a standard set of behaviors that Coalesce provides out-of-the-box that cover the most common use cases for creating, updating, and deleting objects in your data model.</p><p>Also like data sources, these functions can be easily overridden on a per-model basis, allowing complete control over the ways in which your data is mutated by the APIs that Coalesce generates. However, unlike data sources which can have as many implementations per model as you like, you can only have one set of behaviors.</p><h2 id="defining-behaviors" tabindex="-1">Defining Behaviors <a class="header-anchor" href="#defining-behaviors" aria-label="Permalink to "Defining Behaviors"">​</a></h2><p>By default, each of your models that Coalesce exposes will utilize the standard behaviors (<code>IntelliTect.Coalesce.StandardBehaviors<T, TContext></code>) for the out-of-the-box API endpoints that Coalesce provides. These behaviors provide a set of create, update, and delete methods for an EF Core <code>DbContext</code>, as well as a plethora of virtual methods that make the <code>StandardBehaviors</code> a great base class for your custom implementations. Unlike data sources which require an annotation to override the Coalesce-provided standard class, the simple presence of an explicitly declared set of behaviors will suppress the standard behaviors.</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>When you define a set of custom behaviors, take note that these are only used by the standard set of API endpoints that Coalesce always provides. They will not be used to handle any mutations in any <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> you write for your models.</p></div><p>To create your own behaviors, you simply need to define a class that implements <code>IntelliTect.Coalesce.IBehaviors<T></code>. To expose your behaviors to Coalesce, either place it as a nested class of the type <code>T</code> that your behaviors are for, or annotate it with the <code>[Coalesce]</code> attribute. Of course, the easiest way to create behaviors that doesn't require you to re-engineer a great deal of logic would be to inherit from <code>IntelliTect.Coalesce.StandardBehaviors<T, TContext></code>, and then override only the parts that you need.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Case</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> OwnerId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> IsDeleted</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseBehaviors</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> CaseBehaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> ItemResult</span><span style="color:#DCDCAA;"> BeforeSave</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">SaveKind</span><span style="color:#9CDCFE;"> kind</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> oldItem</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Allow admins to bypass all validation.</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsInRole</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Admin"</span><span style="color:#D4D4D4;">)) </span><span style="color:#C586C0;">return</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">kind</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">SaveKind</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Update</span><span style="color:#D4D4D4;"> && </span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">OwnerId</span><span style="color:#D4D4D4;"> != </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">OwnerId</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> "The owner of a case may not be changed"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // This is a new item, OR its an existing item and the owner isn't being modified.</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> != </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">())</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> "You are not the owner of this item."</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> ItemResult</span><span style="color:#DCDCAA;"> BeforeDelete</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">) </span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsInRole</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Manager"</span><span style="color:#D4D4D4;">) ? </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;"> : </span><span style="color:#CE9178;">"Unauthorized"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteDeleteAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Soft delete the item.</span></span> +<span class="line"><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">IsDeleted</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> Db</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SaveChangesAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="dependency-injection" tabindex="-1">Dependency Injection <a class="header-anchor" href="#dependency-injection" aria-label="Permalink to "Dependency Injection"">​</a></h3><p>All behaviors are instantiated using dependency injection and your application's <code>IServiceProvider</code>. As a result, you can add whatever constructor parameters you desire to your behaviors as long as a value for them can be resolved from your application's services. The single parameter to the <code>StandardBehaviors</code> is resolved in this way - the <code>CrudContext<TContext></code> contains the common set of objects most commonly used, including the <code>DbContext</code> and the <code>ClaimsPrincipal</code> representing the current user.</p><h2 id="standard-behaviors" tabindex="-1">Standard Behaviors <a class="header-anchor" href="#standard-behaviors" aria-label="Permalink to "Standard Behaviors"">​</a></h2><p>The standard behaviors, <code>IntelliTect.Coalesce.StandardBehaviors<T></code> and its EntityFramework-supporting sibling <code>IntelliTect.Coalesce.StandardBehaviors<T, TContext></code>, contain a significant number of properties and methods that can be utilized and/or overridden at your leisure.</p><h3 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h3>`,15),d=e("p",null,"The object passed to the constructor that contains the set of objects needed by the standard behaviors, and those that are most likely to be used in custom implementations.",-1),D=e("p",null,[t("An instance of the db context that contains a "),e("code",null,"DbSet<T>"),t(" for the entity handled by the behaviors")],-1),h=e("p",null,"The user making the current request.",-1),y=e("p",null,"A data source that, if set, will override the data source that is used to retrieve the target of an update operation from the database. The incoming values will then be set on this retrieved object. Null by default; override by setting a value in the constructor.",-1),u=e("p",null,"A data source that, if set, will override the data source that is used to retrieve a newly-created or just-updated object from the database after a save. The retrieved object will be returned to the client. Null by default; override by setting a value in the constructor.",-1),m=e("p",null,"A data source that, if set, will override the data source that is used to retrieve the target of an delete operation from the database. The retrieved object will then be deleted. Null by default; override by setting a value in the constructor.",-1),C=n(`<p>A data source that, if set, will override the data source that is used to retrieve the target of an delete operation from the database after it has been deleted. If an object is able to be retrieved from this data source, it will be sent back to the client. This allows soft-deleted items to be returned to the client when the user is able to see them. Null by default; override by setting a value in the constructor.</p><h3 id="method-overview" tabindex="-1">Method Overview <a class="header-anchor" href="#method-overview" aria-label="Permalink to "Method Overview"">​</a></h3><p>The standard behaviors implementation contains many different methods which can be overridden in your derived class to control functionality.</p><p>These methods often call one another, so overriding one method may cause some other method to no longer be called. The hierarchy of method calls, ignoring any logic or conditions contained within, is as follows:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki dark-plus vp-code"><code><span class="line"><span>SaveAsync</span></span> +<span class="line"><span> DetermineSaveKindAsync</span></span> +<span class="line"><span> GetDbSet</span></span> +<span class="line"><span> ValidateDto</span></span> +<span class="line"><span> MapIncomingDto</span></span> +<span class="line"><span> BeforeSaveAsync</span></span> +<span class="line"><span> BeforeSave</span></span> +<span class="line"><span> ExecuteSaveAsync</span></span> +<span class="line"><span> AfterSaveAsync</span></span> +<span class="line"><span></span></span> +<span class="line"><span>DeleteAsync</span></span> +<span class="line"><span> BeforeDeleteAsync</span></span> +<span class="line"><span> BeforeDelete</span></span> +<span class="line"><span> ExecuteDeleteAsync</span></span> +<span class="line"><span> GetDbSet</span></span> +<span class="line"><span> AfterDelete</span></span></code></pre></div><h3 id="method-details" tabindex="-1">Method Details <a class="header-anchor" href="#method-details" aria-label="Permalink to "Method Details"">​</a></h3><p>All of the methods outlined above can be overridden. A description of each of the methods is as follows:</p>`,7),v=e("p",null,[t("Save the given item. This is the main entry point for saving, and takes a DTO as a parameter. This method is responsible for performing mapping to your EF models and ultimately saving to your database. If it is required that you access properties from the incoming DTO in this method, a set of extension methods "),e("code",null,"GetValue"),t(" and "),e("code",null,"GetObject"),t(" are available on the DTO for accessing properties that are mapped 1:1 with your EF models.")],-1),f=e("p",null,"Given the incoming DTO on which Save has been called, examine its properties to determine if the operation is meant to be a create or an update operation. Return this distinction along with the key that was used to make the distinction.",-1),b=e("p",null,"This method is called outside of the standard data source by the base API controller to perform role-based security on saves at the controller level.",-1),T=e("p",null,[t("Returns a "),e("code",null,"DbSet<T>"),t(" that items can be added to (creates) or remove from (deletes).")],-1),g=e("p",null,[t("Provides a chance to validate the properties of the DTO object itself, as opposed to doing validation in "),e("code",null,"BeforeSave"),t(" of the properties of the model after the DTO has been mapped to the model. This also where "),e("a",{href:"/Coalesce/topics/security.html#attribute-validation"},"attribute-based validation"),t(" is performed.")],-1),_=e("p",null,[t("To perform custom validation in this method (uncommon), there are a number of extension methods on "),e("code",null,"IClassDto<T>"),t(" that can be used to access the value of the properties of "),e("a",{href:"/Coalesce/stacks/agnostic/dtos.html"},"Generated C# DTOs"),t(". For behaviors on "),e("a",{href:"/Coalesce/modeling/model-types/dtos.html"},"Custom DTOs"),t(" where the DTO type is known, simply cast to the correct type.")],-1),S=n("<p>Map the properties of the incoming DTO to the model that will be saved to the database. For a <code>SaveKind.Create</code>, this will call the <code>MapToNew</code> method on the DTO and a new instance must be returned (<code>item</code> will be null). For a <code>SaveKind.Update</code>, this will call the <code>MapTo</code> method on the DTO, and the incoming <code>item</code> must be returned. If more precise control is needed, extension methods on <code>IClassDto<T></code> or casting to a known type can be used to get specific values. If all else fails, the DTO can be reflected upon.</p>",1),I=e("p",null,"Extension point for derived classes to intercept a save attempt and either reject it by returning an unsuccessful result, or approve it by returning success. The incoming item can also be modified at will in this method to override changes that the client made as desired.",-1),A=n("<p>Extension point for derived classes to perform actions after a save operation has been completed.</p><p>If a non-successful <code>ItemResult</code> is returned, a failure response will be returned immediately without the updated item attached to the response. This will not prevent modifications to the database since changes have already been saved at this point.</p><p>If a successful <code>ItemResult</code> is returned, then a non-null <code>Object</code> on the result will override the item sent in the response, and a non-null <code>IncludeTree</code> on the result will override the include tree used to map that item to the DTO. If these properties are left null (e.g. you return <code>true</code>), the original <code>item</code> will be returned in the response to the client.</p>",3),w=e("p",null,"Deletes the given item.",-1),E=e("p",null,"Provides an easy way to intercept a delete request and potentially reject it (by returning a non-success ItemResult).",-1),B=e("p",null,[t("Performs the delete action against the database. The implementation of this method removes the item from its corresponding "),e("code",null,"DbSet<T>"),t(", and then calls "),e("code",null,"Db.SaveChangesAsync()"),t(".")],-1),x=e("p",null,"Overriding this allows for changing this row-deletion implementation to something else, like setting of a soft delete flag, or copying the data into another archival table before deleting.",-1),k=n(`<p>Allows for performing any sort of cleanup actions after a delete has completed. If the item was still able to be retrieved from the database after the delete operation completed, this method allows lets you modify or replace the item that is sent back to the client by setting <code>ref T item</code> to another object or to null. Setting <code>ref IncludeTree includeTree</code> will override the <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> used to shape the response object.</p><h2 id="globally-replacing-the-standard-behaviors" tabindex="-1">Globally Replacing the Standard Behaviors <a class="header-anchor" href="#globally-replacing-the-standard-behaviors" aria-label="Permalink to "Globally Replacing the Standard Behaviors"">​</a></h2><p>You can, of course, create a custom base behaviors class that all your custom implementations inherit from. But, what if you want to override the standard behaviors across your entire application, so that <code>StandardBehaviors<,></code> will never be instantiated? You can do that too!</p><p>Simply create a class that implements <code>IEntityFrameworkBehaviors<,></code> (the <code>StandardBehaviors<,></code> already does - feel free to inherit from it), then register it at application startup like so:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">T</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">> : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">T</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#569CD6;"> where</span><span style="color:#4EC9B0;"> T</span><span style="color:#D4D4D4;"> : </span><span style="color:#569CD6;">class</span></span> +<span class="line"><span style="color:#569CD6;"> where</span><span style="color:#4EC9B0;"> TContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> MyBehaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> ConfigureServices</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IServiceCollection</span><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">b</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseDefaultBehaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyBehaviors</span><span style="color:#D4D4D4;"><,>));</span></span> +<span class="line"><span style="color:#D4D4D4;"> });</span></span></code></pre></div><p>Your custom behaviors class must have the same generic type parameters - <code><T, TContext></code>. Otherwise, the Microsoft.Extensions.DependencyInjection service provider won't know how to inject it.</p>`,7);function F(P,q,O,R,j,V){const s=r("Prop");return p(),l("div",null,[i,a(s,{def:"CrudContext<TContext> Context"}),d,a(s,{def:"TContext Db"}),D,a(s,{def:"ClaimsPrincipal User"}),h,a(s,{def:"IDataSource<T> OverrideFetchForUpdateDataSource"}),y,a(s,{def:"IDataSource<T> OverridePostSaveResultDataSource"}),u,a(s,{def:"IDataSource<T> OverrideFetchForDeleteDataSource"}),m,a(s,{def:"IDataSource<T> OverridePostDeleteResultDataSource"}),C,a(s,{def:"Task<ItemResult<TDto?>> SaveAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),v,a(s,{def:"Task<(SaveKind Kind, object? IncomingKey)> DetermineSaveKindAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),f,b,a(s,{def:"DbSet<T> GetDbSet()"}),T,a(s,{def:"ItemResult ValidateDto(SaveKind kind, IClassDto<T> dto)"}),g,_,a(s,{def:"T MapIncomingDto<TDto>(SaveKind kind, T? item, TDto dto, IDataSourceParameters parameters)"}),S,a(s,{def:`Task<ItemResult> BeforeSaveAsync(SaveKind kind, T? oldItem, T item); +ItemResult BeforeSave(SaveKind kind, T? oldItem, T item)`}),I,a(s,{def:"ItemResult<T> AfterSaveAsync(SaveKind kind, T? oldItem, T item)"}),A,a(s,{def:"Task<ItemResult<TDto?>> DeleteAsync<TDto>(object id, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),w,a(s,{def:`Task<ItemResult> BeforeDeleteAsync(T item); +ItemResult BeforeDelete(T item)`}),E,a(s,{def:"Task ExecuteDeleteAsync(T item)"}),B,x,a(s,{def:"void AfterDelete(ref T item, ref IncludeTree? includeTree)"}),k])}const K=o(c,[["render",F]]);export{M as __pageData,K as default}; diff --git a/assets/modeling_model-components_behaviors.md.0-hD_ijP.lean.js b/assets/modeling_model-components_behaviors.md.0-hD_ijP.lean.js new file mode 100644 index 000000000..f29a0c91e --- /dev/null +++ b/assets/modeling_model-components_behaviors.md.0-hD_ijP.lean.js @@ -0,0 +1,3 @@ +import{_ as o,c as l,I as a,a7 as n,l as e,a as t,D as r,o as p}from"./chunks/framework.BkavzUpE.js";const M=JSON.parse('{"title":"Behaviors","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/behaviors.md","filePath":"modeling/model-components/behaviors.md"}'),c={name:"modeling/model-components/behaviors.md"},i=n("",15),d=e("p",null,"The object passed to the constructor that contains the set of objects needed by the standard behaviors, and those that are most likely to be used in custom implementations.",-1),D=e("p",null,[t("An instance of the db context that contains a "),e("code",null,"DbSet<T>"),t(" for the entity handled by the behaviors")],-1),h=e("p",null,"The user making the current request.",-1),y=e("p",null,"A data source that, if set, will override the data source that is used to retrieve the target of an update operation from the database. The incoming values will then be set on this retrieved object. Null by default; override by setting a value in the constructor.",-1),u=e("p",null,"A data source that, if set, will override the data source that is used to retrieve a newly-created or just-updated object from the database after a save. The retrieved object will be returned to the client. Null by default; override by setting a value in the constructor.",-1),m=e("p",null,"A data source that, if set, will override the data source that is used to retrieve the target of an delete operation from the database. The retrieved object will then be deleted. Null by default; override by setting a value in the constructor.",-1),C=n("",7),v=e("p",null,[t("Save the given item. This is the main entry point for saving, and takes a DTO as a parameter. This method is responsible for performing mapping to your EF models and ultimately saving to your database. If it is required that you access properties from the incoming DTO in this method, a set of extension methods "),e("code",null,"GetValue"),t(" and "),e("code",null,"GetObject"),t(" are available on the DTO for accessing properties that are mapped 1:1 with your EF models.")],-1),f=e("p",null,"Given the incoming DTO on which Save has been called, examine its properties to determine if the operation is meant to be a create or an update operation. Return this distinction along with the key that was used to make the distinction.",-1),b=e("p",null,"This method is called outside of the standard data source by the base API controller to perform role-based security on saves at the controller level.",-1),T=e("p",null,[t("Returns a "),e("code",null,"DbSet<T>"),t(" that items can be added to (creates) or remove from (deletes).")],-1),g=e("p",null,[t("Provides a chance to validate the properties of the DTO object itself, as opposed to doing validation in "),e("code",null,"BeforeSave"),t(" of the properties of the model after the DTO has been mapped to the model. This also where "),e("a",{href:"/Coalesce/topics/security.html#attribute-validation"},"attribute-based validation"),t(" is performed.")],-1),_=e("p",null,[t("To perform custom validation in this method (uncommon), there are a number of extension methods on "),e("code",null,"IClassDto<T>"),t(" that can be used to access the value of the properties of "),e("a",{href:"/Coalesce/stacks/agnostic/dtos.html"},"Generated C# DTOs"),t(". For behaviors on "),e("a",{href:"/Coalesce/modeling/model-types/dtos.html"},"Custom DTOs"),t(" where the DTO type is known, simply cast to the correct type.")],-1),S=n("",1),I=e("p",null,"Extension point for derived classes to intercept a save attempt and either reject it by returning an unsuccessful result, or approve it by returning success. The incoming item can also be modified at will in this method to override changes that the client made as desired.",-1),A=n("",3),w=e("p",null,"Deletes the given item.",-1),E=e("p",null,"Provides an easy way to intercept a delete request and potentially reject it (by returning a non-success ItemResult).",-1),B=e("p",null,[t("Performs the delete action against the database. The implementation of this method removes the item from its corresponding "),e("code",null,"DbSet<T>"),t(", and then calls "),e("code",null,"Db.SaveChangesAsync()"),t(".")],-1),x=e("p",null,"Overriding this allows for changing this row-deletion implementation to something else, like setting of a soft delete flag, or copying the data into another archival table before deleting.",-1),k=n("",7);function F(P,q,O,R,j,V){const s=r("Prop");return p(),l("div",null,[i,a(s,{def:"CrudContext<TContext> Context"}),d,a(s,{def:"TContext Db"}),D,a(s,{def:"ClaimsPrincipal User"}),h,a(s,{def:"IDataSource<T> OverrideFetchForUpdateDataSource"}),y,a(s,{def:"IDataSource<T> OverridePostSaveResultDataSource"}),u,a(s,{def:"IDataSource<T> OverrideFetchForDeleteDataSource"}),m,a(s,{def:"IDataSource<T> OverridePostDeleteResultDataSource"}),C,a(s,{def:"Task<ItemResult<TDto?>> SaveAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),v,a(s,{def:"Task<(SaveKind Kind, object? IncomingKey)> DetermineSaveKindAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),f,b,a(s,{def:"DbSet<T> GetDbSet()"}),T,a(s,{def:"ItemResult ValidateDto(SaveKind kind, IClassDto<T> dto)"}),g,_,a(s,{def:"T MapIncomingDto<TDto>(SaveKind kind, T? item, TDto dto, IDataSourceParameters parameters)"}),S,a(s,{def:`Task<ItemResult> BeforeSaveAsync(SaveKind kind, T? oldItem, T item); +ItemResult BeforeSave(SaveKind kind, T? oldItem, T item)`}),I,a(s,{def:"ItemResult<T> AfterSaveAsync(SaveKind kind, T? oldItem, T item)"}),A,a(s,{def:"Task<ItemResult<TDto?>> DeleteAsync<TDto>(object id, IDataSource<T> dataSource, IDataSourceParameters parameters)"}),w,a(s,{def:`Task<ItemResult> BeforeDeleteAsync(T item); +ItemResult BeforeDelete(T item)`}),E,a(s,{def:"Task ExecuteDeleteAsync(T item)"}),B,x,a(s,{def:"void AfterDelete(ref T item, ref IncludeTree? includeTree)"}),k])}const K=o(c,[["render",F]]);export{M as __pageData,K as default}; diff --git a/assets/modeling_model-components_data-sources.md.CaS_Mjop.js b/assets/modeling_model-components_data-sources.md.CaS_Mjop.js new file mode 100644 index 000000000..83519b5ff --- /dev/null +++ b/assets/modeling_model-components_data-sources.md.CaS_Mjop.js @@ -0,0 +1,100 @@ +import{_ as p,c,I as a,w as l,a7 as n,l as s,a as e,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const U=JSON.parse('{"title":"Data Sources","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/data-sources.md","filePath":"modeling/model-components/data-sources.md"}'),D={name:"modeling/model-components/data-sources.md"},d=n(`<h1 id="data-sources" tabindex="-1">Data Sources <a class="header-anchor" href="#data-sources" aria-label="Permalink to "Data Sources"">​</a></h1><p>In Coalesce, all data that is retrieved from your database through the generated controllers is done so by a data source. These data sources control what data gets loaded and how it gets loaded. By default, there is a single generic data source that serves all data for your models in a generic way that fits many of the most common use cases - the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a>.</p><p>In addition to this standard data source, Coalesce allows you to create custom data sources that provide complete control over the way data is loaded and serialized for transfer to a requesting client. These data sources are defined on a per-model basis, and you can have as many of them as you like for each model.</p><h2 id="defining-data-sources" tabindex="-1">Defining Data Sources <a class="header-anchor" href="#defining-data-sources" aria-label="Permalink to "Defining Data Sources"">​</a></h2><p>By default, each of your models that Coalesce exposes will expose the standard data source (<code>IntelliTect.Coalesce.StandardDataSource<T, TContext></code>). This data source provides all the standard functionality one would expect - paging, sorting, searching, filtering, and so on. Each of these component pieces is implemented in one or more virtual methods, making the <code>StandardDataSource</code> a great place to start from when implementing your own data source. To suppress this behavior of always exposing the raw <code>StandardDataSource</code>, create your own custom data source and annotate it with <code>[DefaultDataSource]</code>.</p><p>To implement your own custom data source, you simply need to define a class that implements <code>IntelliTect.Coalesce.IDataSource<T></code>. To expose your data source to Coalesce, either place it as a nested class of the type <code>T</code> that you data source serves, or annotate it with the <code>[Coalesce]</code> attribute. Of course, the easiest way to create a data source that doesn't require you to re-engineer a great deal of logic would be to inherit from <code>IntelliTect.Coalesce.StandardDataSource<T, TContext></code>, and then override only the parts that you need.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultDataSource</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> IncludeFamily</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> IncludeFamily</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) </span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsInRole</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Admin"</span><span style="color:#D4D4D4;">) || </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">())</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Parents</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Parents</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Cousins</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Parents</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> NamesStartingWithA</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> NamesStartingWithA</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) </span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Siblings</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">FirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">StartsWith</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"A"</span><span style="color:#D4D4D4;">));</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>The structure of the <code>IQueryable</code> built by the various methods of <code>StandardDataSource</code> is used to shape and trim the structure of the DTO as it is serialized and sent out to the client. One may also override method <code>IncludeTree GetIncludeTree(IQueryable<Person> query, IDataSourceParameters parameters)</code> to control this explicitly. See <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> for more information on how this works.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you create a custom data source that has custom logic for securing your data, be aware that the default implementation of <code>StandardDataSource</code> (or your custom default implementation - see below) is still exposed unless you annotate one of your custom data sources with <code>[DefaultDataSource]</code>. Doing so will replace the default data source with the annotated class for your type <code>T</code>.</p></div><h3 id="dependency-injection" tabindex="-1">Dependency Injection <a class="header-anchor" href="#dependency-injection" aria-label="Permalink to "Dependency Injection"">​</a></h3><p>All data sources are instantiated using dependency injection and your application's <code>IServiceProvider</code>. As a result, you can add whatever constructor parameters you desire to your data sources as long as a value for them can be resolved from your application's services. The single parameter to the <code>StandardDataSource</code> is resolved in this way - the <code>CrudContext<TContext></code> contains the common set of objects most commonly used, including the <code>DbContext</code> and the <code>ClaimsPrincipal</code> representing the current user.</p><h2 id="consuming-data-sources" tabindex="-1">Consuming Data Sources <a class="header-anchor" href="#consuming-data-sources" aria-label="Permalink to "Consuming Data Sources"">​</a></h2>`,12),y=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels"},"ViewModels"),e(" and "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#listviewmodels"},"ListViewModels"),e(" each have a property called "),s("code",null,"$dataSource"),e(". This property accepts an instance of a "),s("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"DataSource"),e(" class generated in the "),s("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"Model Layer"),e(".")],-1),u=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Person"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/models.g'")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"IncludeFamily"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," list"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"NamesStartingWith"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),h=n(`<h2 id="standard-parameters" tabindex="-1">Standard Parameters <a class="header-anchor" href="#standard-parameters" aria-label="Permalink to "Standard Parameters"">​</a></h2><p>All methods on <code>IDataSource<T></code> take a parameter that contains all the client-specified parameters for things paging, searching, sorting, and filtering information. Almost all virtual methods on <code>StandardDataSource</code> are also passed the relevant set of parameters.</p><h2 id="custom-parameters" tabindex="-1">Custom Parameters <a class="header-anchor" href="#custom-parameters" aria-label="Permalink to "Custom Parameters"">​</a></h2><p>On any data source that you create, you may add additional properties annotated with <code>[Coalesce]</code> that will then be exposed as parameters to the client. These property parameters can be primitives (numeric types, strings, enums), dates (DateTime, DateTimeOffset, DateOnly, TimeOnly), and collections of the preceding types.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> NamesStartingWith</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> NamesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> StartsWith</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) </span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Siblings</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsNullOrWhitespace</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">StartsWith</span><span style="color:#D4D4D4;">) ? </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;"> : </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">FirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">StartsWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">StartsWith</span><span style="color:#D4D4D4;">));</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="list-auto-loading" tabindex="-1">List Auto-loading <a class="header-anchor" href="#list-auto-loading" aria-label="Permalink to "List Auto-loading"">​</a></h3><p>You can setup <a href="/Coalesce/stacks/vue/layers/viewmodels.html">TypeScript List ViewModels</a> to automatically reload from the server when data source parameters change:</p>`,7),C=s("p",null,[e("To automatically reload a "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" when data source parameters change, simply use the list's "),s("code",null,"$useAutoLoad"),e(" or "),s("code",null,"$startAutoLoad"),e(" function:")],-1),m=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Person"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/models.g'"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," list"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"NamesStartingWith")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$useAutoLoad"),s("span",{style:{color:"#D4D4D4"}},"(); "),s("span",{style:{color:"#6A9955"}},"// When using options API, use $startAutoLoad(this) instead.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Trigger a reload:")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"dataSource"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"startsWith"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Jo"'),s("span",{style:{color:"#D4D4D4"}},";")])])])],-1),f=n('<h2 id="standard-data-source" tabindex="-1">Standard Data Source <a class="header-anchor" href="#standard-data-source" aria-label="Permalink to "Standard Data Source"">​</a></h2><p>The standard data sources, <code>IntelliTect.Coalesce.StandardDataSource<T></code> and its EntityFramework-supporting sibling <code>IntelliTect.Coalesce.StandardDataSource<T, TContext></code>, contain a significant number of properties and methods that can be utilized and/or overridden at your leisure.</p><h3 id="default-loading-behavior" tabindex="-1">Default Loading Behavior <a class="header-anchor" href="#default-loading-behavior" aria-label="Permalink to "Default Loading Behavior"">​</a></h3><p>When an object or list of objects is requested, the default behavior of the the <code>StandardDataSource</code> is to load all of the immediate relationships of the object (parent objects and child collections), as well as the far side of <a href="./attributes/many-to-many.html">many-to-many</a> relationships. This is performed in <code>StandardDataSource.GetQuery()</code>, so in order to suppress this behavior in a custom data source, don't build you query off of <code>base.GetQuery()</code>, but instead start directly from the <code>DbSet</code> for your entity when building your custom query.</p><p>Clients can suppress this per-request by setting <code>.$includes = "none"</code> on your TypeScript <a href="/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels">ViewModel</a> or <a href="/Coalesce/stacks/vue/layers/viewmodels.html#listviewmodels">ListViewModel</a>, but note this is not a security mechanism and should only be used to reduce payload size or improve response time.</p><p>On the server, you can suppress this behavior by placing <code>[Read(NoAutoInclude = true)]</code> on either an entire class (affecting all navigation properties of that type), or on specific navigation properties. When placed on a entity class that holds sensitive data, this can help ensure you don't accidentally leak records due to forgetting to customize the data sources of the types whose navigation properties reference your sensitive entity.</p><p>You can also suppress this for your entire application by placing <code>[assembly: CoalesceConfiguration(NoAutoInclude = true)]</code> on the assembly that holds your models.</p><h3 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h3><p>The following properties are available for use on the <code>StandardDataSource</code> any any derived instances.</p>',9),g=s("p",null,"The object passed to the constructor that contains the set of objects needed by the standard data source, and those that are most likely to be used in custom implementations.",-1),b=s("p",null,[e("An instance of the DbContext that contains a "),s("code",null,"DbSet<T>"),e(" for the entity served by the data source.")],-1),T=s("p",null,"The user making the current request.",-1),v=s("p",null,"The max number of search terms to process when interpreting a search term word-by-word. Override by setting a value in the constructor.",-1),A=s("p",null,"The page size to use if none is specified by the client. Override by setting a value in the constructor.",-1),_=n(`<p>The maximum page size that will be served. By default, client-specified page sizes will be clamped to this value. Override by setting a value in the constructor.</p><h3 id="method-overview" tabindex="-1">Method Overview <a class="header-anchor" href="#method-overview" aria-label="Permalink to "Method Overview"">​</a></h3><p>The standard data source contains 19 different methods which can be overridden in your derived class to control its behavior.</p><p>These methods often call one another, so overriding one method may cause some other method to no longer be called. The hierarchy of method calls, ignoring any logic or conditions contained within, is as follows:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki dark-plus vp-code"><code><span class="line"><span>GetMappedItemAsync</span></span> +<span class="line"><span> GetItemAsync</span></span> +<span class="line"><span> GetQueryAsync</span></span> +<span class="line"><span> GetQuery</span></span> +<span class="line"><span> GetIncludeTree</span></span> +<span class="line"><span> TransformResults</span></span> +<span class="line"><span></span></span> +<span class="line"><span>GetMappedListAsync</span></span> +<span class="line"><span> GetListAsync</span></span> +<span class="line"><span> GetQueryAsync</span></span> +<span class="line"><span> GetQuery</span></span> +<span class="line"><span> ApplyListFiltering</span></span> +<span class="line"><span> ApplyListPropertyFilters</span></span> +<span class="line"><span> ApplyListPropertyFilter</span></span> +<span class="line"><span> ApplyListSearchTerm</span></span> +<span class="line"><span> GetListTotalCountAsync</span></span> +<span class="line"><span> ApplyListSorting</span></span> +<span class="line"><span> ApplyListClientSpecifiedSorting</span></span> +<span class="line"><span> ApplyListDefaultSorting</span></span> +<span class="line"><span> ApplyListPaging</span></span> +<span class="line"><span> GetIncludeTree</span></span> +<span class="line"><span> TrimListFields</span></span> +<span class="line"><span> TransformResults</span></span> +<span class="line"><span></span></span> +<span class="line"><span>GetCountAsync</span></span> +<span class="line"><span> GetQueryAsync</span></span> +<span class="line"><span> GetQuery</span></span> +<span class="line"><span> ApplyListFiltering</span></span> +<span class="line"><span> ApplyListPropertyFilters</span></span> +<span class="line"><span> ApplyListPropertyFilter</span></span> +<span class="line"><span> ApplyListSearchTerm</span></span> +<span class="line"><span> GetListTotalCountAsync</span></span></code></pre></div><h3 id="method-details" tabindex="-1">Method Details <a class="header-anchor" href="#method-details" aria-label="Permalink to "Method Details"">​</a></h3><p>All of the methods outlined above can be overridden. A description of each of the non-interface inner methods is as follows:</p>`,7),S=n('<p>The method is the one that you will most commonly be override in order to implement custom query logic. The default implementation of GetQueryAsync simply calls GetQuery - be aware of this in cases of complex overrides/inheritance. From this method, you could:</p><ul><li>Specify additional query filtering such as row-level security or soft-delete logic. Or, restrict the data source entirely for users or whole roles by returning an empty query.</li><li>Include additional data using EF's <code>.Include()</code> and <code>.ThenInclude()</code>.</li><li>Add additional edges to the serialized object graph using Coalesce's <code>.IncludedSeparately()</code> and <code>.ThenIncluded()</code>.</li></ul><div class="tip custom-block"><p class="custom-block-title">Note</p><p>When <code>GetQuery</code> is overridden, the <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">Default Loading Behavior</a> is overridden as well. To restore this behavior, use the <code>IQueryable<T>.IncludeChildren()</code> extension method to build your query.</p></div>',3),E=s("p",null,[e("Allows for explicitly specifying the "),s("a",{href:"/Coalesce/concepts/include-tree.html"},"Include Tree"),e(" that will be used when serializing results obtained from this data source into DTOs. By default, the query that is build up through all the other methods in the data source will be used to build the include tree.")],-1),w=s("p",null,[e("Called by other methods in the standard data source to determine whether or not EF Core async methods will be used to evaluate queries. This may be globally disabled when bugs like "),s("a",{href:"https://github.com/dotnet/SqlClient/issues/593",target:"_blank",rel:"noreferrer"},"https://github.com/dotnet/SqlClient/issues/593"),e(" are present in EF Core.")],-1),I=s("p",null,[e("A simple wrapper that calls "),s("code",null,"ApplyListPropertyFilters"),e(" and "),s("code",null,"ApplyListSearchTerm"),e(".")],-1),F=s("p",null,[e("For each value in "),s("code",null,"parameters.Filter"),e(" that the user is allowed to read and filter by, invoke "),s("code",null,"ApplyListPropertyFilter"),e(" to apply a filter to the query.")],-1),P=n("<p>Given a property and a client-provided string value, perform some filtering on that property.</p><ul><li>Dates with a time component will be matched exactly.</li><li>Dates with no time component will match any dates that fell on that day.</li><li>Strings will match exactly unless an asterisk is found in the filter, in which case they will be matched with <code>string.StartsWith</code> with the asterisk stripped out.</li><li>Enums will match by string or numeric value. Multiple comma-delimited values will create a filter that will match on any of the provided values.</li><li>Numeric values will match exactly. Multiple comma-delimited values will create a filter that will match on any of the provided values.</li><li>The values <code>null</code> and <code>"null"</code> match a <code>null</code> property value (except string properties).</li></ul>",2),x=s("p",null,[e("Applies filters to the query based on the specified search term. See "),s("a",{href:"/Coalesce/modeling/model-components/attributes/search.html"},"[Search]"),e(" for a detailed look at how searching works in Coalesce.")],-1),k=s("p",null,[e("If any client-specified sort orders are present, invokes "),s("code",null,"ApplyListClientSpecifiedSorting"),e(". Otherwise, invokes "),s("code",null,"ApplyListDefaultSorting"),e(".")],-1),q=s("p",null,[e("Applies sorting to the query based on sort orders specified by the client. If the client specified "),s("code",null,'"none"'),e(" as the sort field, no sorting will take place.")],-1),B=s("p",null,[e("Applies default sorting behavior to the query, including behavior defined with use of "),s("code",null,"[DefaultOrderBy]"),e(" in C# POCOs, as well as fallback sorting to "),s("code",null,'"Name"'),e(" or primary key properties.")],-1),L=s("p",null,"Applies paging to the query based on incoming parameters. Provides the actual page and pageSize that were used as out parameters.",-1),Q=s("p",null,[e("Simple wrapper around invoking "),s("code",null,".Count()"),e(" on a query.")],-1),G=n('<p>Allows for transformation of a result set after the query has been evaluated. This will be called for both lists of items and for single items. This can be used for populating non-mapped properties on a model, or conditionally loading navigation properties using logic that depends upon the contents of each loaded record.</p><p>This method is only called immediately before mapping to a DTO; it does not affect operations that don't involve mapping to a DTO - e.g. when loading the target of a <code>/save</code> operation or when loading the invocation target of an <a href="/Coalesce/modeling/model-components/methods.html#instance-methods">instance method</a>.</p><p>See the <a href="/Coalesce/topics/security.html#transform-results">Security</a> page for an example on how to use TransformResults to <a href="/Coalesce/topics/security.html#transform-results">apply filtered includes</a>.</p><p>Do not use <code>TransformResults</code> to modify any database-mapped scalar properties, since such changes could be inadvertently persisted to the database.</p>',4),V=n(`<p>Performs trimming of the fields of the result set based on the parameters given to the data source. Can be overridden to forcibly disable this, override the behavior to always trim specific fields, or any other functionality desired.</p><h2 id="globally-replacing-the-standard-data-source" tabindex="-1">Globally Replacing the Standard Data Source <a class="header-anchor" href="#globally-replacing-the-standard-data-source" aria-label="Permalink to "Globally Replacing the Standard Data Source"">​</a></h2><p>You can, of course, create a custom base data source that all your custom implementations inherit from. But, what if you want to override the standard data source across your entire application, so that <code>StandardDataSource<,></code> will never be instantiated? You can do that too!</p><p>Simply create a class that implements <code>IEntityFrameworkDataSource<,></code> (the <code>StandardDataSource<,></code> already does - feel free to inherit from it), then register it at application startup like so:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">T</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">T</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#569CD6;"> where</span><span style="color:#4EC9B0;"> T</span><span style="color:#D4D4D4;"> : </span><span style="color:#569CD6;">class</span></span> +<span class="line"><span style="color:#569CD6;"> where</span><span style="color:#4EC9B0;"> TContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> MyDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> ConfigureServices</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IServiceCollection</span><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">b</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseDefaultDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyDataSource</span><span style="color:#D4D4D4;"><,>));</span></span> +<span class="line"><span style="color:#D4D4D4;"> });</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Your custom data source must have the same generic type parameters - <code><T, TContext></code>. Otherwise, the Microsoft.Extensions.DependencyInjection service provider won't know how to inject it.</p>`,7);function M(N,O,R,W,j,$){const t=r("CodeTabs"),o=r("Prop");return i(),c("div",null,[d,a(t,null,{vue:l(()=>[y,u]),_:1}),h,a(t,null,{vue:l(()=>[C,m]),_:1}),f,a(o,{def:"CrudContext<TContext> Context"}),g,a(o,{def:"TContext Db"}),b,a(o,{def:"ClaimsPrincipal User"}),T,a(o,{def:"int MaxSearchTerms"}),v,a(o,{def:"int DefaultPageSize"}),A,a(o,{def:"int MaxPageSize"}),_,a(o,{def:`IQueryable<T> GetQuery(IDataSourceParameters parameters); +Task<IQueryable<T>> GetQueryAsync(IDataSourceParameters parameters);`}),S,a(o,{def:"IncludeTree? GetIncludeTree(IQueryable<T> query, IDataSourceParameters parameters)"}),E,a(o,{def:"bool CanEvalQueryAsynchronously(IQueryable<T> query)"}),w,a(o,{def:"IQueryable<T> ApplyListFiltering(IQueryable<T> query, IFilterParameters parameters)"}),I,a(o,{def:"IQueryable<T> ApplyListPropertyFilters(IQueryable<T> query, IFilterParameters parameters)"}),F,a(o,{def:"IQueryable<T> ApplyListPropertyFilter(IQueryable<T> query, PropertyViewModel prop, string value)"}),P,a(o,{def:"IQueryable<T> ApplyListSearchTerm(IQueryable<T> query, IFilterParameters parameters)"}),x,a(o,{def:"IQueryable<T> ApplyListSorting(IQueryable<T> query, IListParameters parameters)"}),k,a(o,{def:"IQueryable<T> ApplyListClientSpecifiedSorting(IQueryable<T> query, IListParameters parameters)"}),q,a(o,{def:"IQueryable<T> ApplyListDefaultSorting(IQueryable<T> query)"}),B,a(o,{def:"IQueryable<T> ApplyListPaging(IQueryable<T> query, IListParameters parameters, int? totalCount, out int page, out int pageSize)"}),L,a(o,{def:"Task<int> GetListTotalCountAsync(IQueryable<T> query, IFilterParameters parameters)"}),Q,a(o,{def:`void TransformResults(IReadOnlyList<T> results, IDataSourceParameters parameters); +Task TransformResultsAsync(IReadOnlyList<T> results, IDataSourceParameters parameters);`}),G,a(o,{def:"IList<TDto> TrimListFields<TDto>(IList<TDto> mappedResult, IListParameters parameters)"}),V])}const Y=p(D,[["render",M]]);export{U as __pageData,Y as default}; diff --git a/assets/modeling_model-components_data-sources.md.CaS_Mjop.lean.js b/assets/modeling_model-components_data-sources.md.CaS_Mjop.lean.js new file mode 100644 index 000000000..66de6e860 --- /dev/null +++ b/assets/modeling_model-components_data-sources.md.CaS_Mjop.lean.js @@ -0,0 +1,20 @@ +import{_ as p,c,I as a,w as l,a7 as n,l as s,a as e,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const U=JSON.parse('{"title":"Data Sources","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/data-sources.md","filePath":"modeling/model-components/data-sources.md"}'),D={name:"modeling/model-components/data-sources.md"},d=n("",12),y=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels"},"ViewModels"),e(" and "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html#listviewmodels"},"ListViewModels"),e(" each have a property called "),s("code",null,"$dataSource"),e(". This property accepts an instance of a "),s("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"DataSource"),e(" class generated in the "),s("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"Model Layer"),e(".")],-1),u=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Person"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/models.g'")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},", "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"IncludeFamily"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," list"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"NamesStartingWith"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),h=n("",7),C=s("p",null,[e("To automatically reload a "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" when data source parameters change, simply use the list's "),s("code",null,"$useAutoLoad"),e(" or "),s("code",null,"$startAutoLoad"),e(" function:")],-1),m=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"Person"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/models.g'"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," list"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," PersonListViewModel"),s("span",{style:{color:"#D4D4D4"}},";")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"const"),s("span",{style:{color:"#4FC1FF"}}," dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"$dataSource"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#9CDCFE"}}," Person"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"DataSources"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"NamesStartingWith")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"list"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$useAutoLoad"),s("span",{style:{color:"#D4D4D4"}},"(); "),s("span",{style:{color:"#6A9955"}},"// When using options API, use $startAutoLoad(this) instead.")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#6A9955"}},"// Trigger a reload:")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"dataSource"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#9CDCFE"}},"startsWith"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#CE9178"}},'"Jo"'),s("span",{style:{color:"#D4D4D4"}},";")])])])],-1),f=n("",9),g=s("p",null,"The object passed to the constructor that contains the set of objects needed by the standard data source, and those that are most likely to be used in custom implementations.",-1),b=s("p",null,[e("An instance of the DbContext that contains a "),s("code",null,"DbSet<T>"),e(" for the entity served by the data source.")],-1),T=s("p",null,"The user making the current request.",-1),v=s("p",null,"The max number of search terms to process when interpreting a search term word-by-word. Override by setting a value in the constructor.",-1),A=s("p",null,"The page size to use if none is specified by the client. Override by setting a value in the constructor.",-1),_=n("",7),S=n("",3),E=s("p",null,[e("Allows for explicitly specifying the "),s("a",{href:"/Coalesce/concepts/include-tree.html"},"Include Tree"),e(" that will be used when serializing results obtained from this data source into DTOs. By default, the query that is build up through all the other methods in the data source will be used to build the include tree.")],-1),w=s("p",null,[e("Called by other methods in the standard data source to determine whether or not EF Core async methods will be used to evaluate queries. This may be globally disabled when bugs like "),s("a",{href:"https://github.com/dotnet/SqlClient/issues/593",target:"_blank",rel:"noreferrer"},"https://github.com/dotnet/SqlClient/issues/593"),e(" are present in EF Core.")],-1),I=s("p",null,[e("A simple wrapper that calls "),s("code",null,"ApplyListPropertyFilters"),e(" and "),s("code",null,"ApplyListSearchTerm"),e(".")],-1),F=s("p",null,[e("For each value in "),s("code",null,"parameters.Filter"),e(" that the user is allowed to read and filter by, invoke "),s("code",null,"ApplyListPropertyFilter"),e(" to apply a filter to the query.")],-1),P=n("",2),x=s("p",null,[e("Applies filters to the query based on the specified search term. See "),s("a",{href:"/Coalesce/modeling/model-components/attributes/search.html"},"[Search]"),e(" for a detailed look at how searching works in Coalesce.")],-1),k=s("p",null,[e("If any client-specified sort orders are present, invokes "),s("code",null,"ApplyListClientSpecifiedSorting"),e(". Otherwise, invokes "),s("code",null,"ApplyListDefaultSorting"),e(".")],-1),q=s("p",null,[e("Applies sorting to the query based on sort orders specified by the client. If the client specified "),s("code",null,'"none"'),e(" as the sort field, no sorting will take place.")],-1),B=s("p",null,[e("Applies default sorting behavior to the query, including behavior defined with use of "),s("code",null,"[DefaultOrderBy]"),e(" in C# POCOs, as well as fallback sorting to "),s("code",null,'"Name"'),e(" or primary key properties.")],-1),L=s("p",null,"Applies paging to the query based on incoming parameters. Provides the actual page and pageSize that were used as out parameters.",-1),Q=s("p",null,[e("Simple wrapper around invoking "),s("code",null,".Count()"),e(" on a query.")],-1),G=n("",4),V=n("",7);function M(N,O,R,W,j,$){const t=r("CodeTabs"),o=r("Prop");return i(),c("div",null,[d,a(t,null,{vue:l(()=>[y,u]),_:1}),h,a(t,null,{vue:l(()=>[C,m]),_:1}),f,a(o,{def:"CrudContext<TContext> Context"}),g,a(o,{def:"TContext Db"}),b,a(o,{def:"ClaimsPrincipal User"}),T,a(o,{def:"int MaxSearchTerms"}),v,a(o,{def:"int DefaultPageSize"}),A,a(o,{def:"int MaxPageSize"}),_,a(o,{def:`IQueryable<T> GetQuery(IDataSourceParameters parameters); +Task<IQueryable<T>> GetQueryAsync(IDataSourceParameters parameters);`}),S,a(o,{def:"IncludeTree? GetIncludeTree(IQueryable<T> query, IDataSourceParameters parameters)"}),E,a(o,{def:"bool CanEvalQueryAsynchronously(IQueryable<T> query)"}),w,a(o,{def:"IQueryable<T> ApplyListFiltering(IQueryable<T> query, IFilterParameters parameters)"}),I,a(o,{def:"IQueryable<T> ApplyListPropertyFilters(IQueryable<T> query, IFilterParameters parameters)"}),F,a(o,{def:"IQueryable<T> ApplyListPropertyFilter(IQueryable<T> query, PropertyViewModel prop, string value)"}),P,a(o,{def:"IQueryable<T> ApplyListSearchTerm(IQueryable<T> query, IFilterParameters parameters)"}),x,a(o,{def:"IQueryable<T> ApplyListSorting(IQueryable<T> query, IListParameters parameters)"}),k,a(o,{def:"IQueryable<T> ApplyListClientSpecifiedSorting(IQueryable<T> query, IListParameters parameters)"}),q,a(o,{def:"IQueryable<T> ApplyListDefaultSorting(IQueryable<T> query)"}),B,a(o,{def:"IQueryable<T> ApplyListPaging(IQueryable<T> query, IListParameters parameters, int? totalCount, out int page, out int pageSize)"}),L,a(o,{def:"Task<int> GetListTotalCountAsync(IQueryable<T> query, IFilterParameters parameters)"}),Q,a(o,{def:`void TransformResults(IReadOnlyList<T> results, IDataSourceParameters parameters); +Task TransformResultsAsync(IReadOnlyList<T> results, IDataSourceParameters parameters);`}),G,a(o,{def:"IList<TDto> TrimListFields<TDto>(IList<TDto> mappedResult, IListParameters parameters)"}),V])}const Y=p(D,[["render",M]]);export{U as __pageData,Y as default}; diff --git a/assets/modeling_model-components_methods.md.SII-fa1f.js b/assets/modeling_model-components_methods.md.SII-fa1f.js new file mode 100644 index 000000000..541e904b8 --- /dev/null +++ b/assets/modeling_model-components_methods.md.SII-fa1f.js @@ -0,0 +1,130 @@ +import{_ as o,c as l,I as t,w as p,a7 as a,D as r,o as c,l as s,a as e}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"Methods","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/methods.md","filePath":"modeling/model-components/methods.md"}'),i={name:"modeling/model-components/methods.md"},D=a(`<h1 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to "Methods"">​</a></h1><p>Any public methods annotated with the <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a> attribute that are placed on your model classes will have API endpoints and Typescript generated by Coalesce. Both instance methods and static methods are supported. Additionally, any instance methods on <a href="/Coalesce/modeling/model-types/services.html">Services</a> will also have API endpoints and TypeScript generated.</p><p>These custom methods allow you to implement any custom server-side functionality in your Coalesce application that falls outside of the standard CRUD functions that are generated for your entities.</p><h2 id="declaring-methods" tabindex="-1">Declaring Methods <a class="header-anchor" href="#declaring-methods" aria-label="Permalink to "Declaring Methods"">​</a></h2><h3 id="instance-methods" tabindex="-1">Instance Methods <a class="header-anchor" href="#instance-methods" aria-label="Permalink to "Instance Methods"">​</a></h3><p>Instance Methods can be declared on your <a href="/Coalesce/modeling/model-types/entities.html">Entity classes</a>. For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> User</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> UserId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Email</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ItemResult</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">SendMessage</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Inject</span><span style="color:#D4D4D4;">] </span><span style="color:#4EC9B0;">SmtpClient</span><span style="color:#9CDCFE;"> client</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#4EC9B0;"> ClaimsPrincipal</span><span style="color:#9CDCFE;"> sender</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> message</span></span> +<span class="line"><span style="color:#D4D4D4;"> ) {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsNullOrWhitespace</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Email</span><span style="color:#D4D4D4;">)) </span><span style="color:#C586C0;">return</span><span style="color:#CE9178;"> "Recipient has no email"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsNullOrWhitespace</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">message</span><span style="color:#D4D4D4;">)) </span><span style="color:#C586C0;">return</span><span style="color:#CE9178;"> "Message is required"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SendMailAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> MailMessage</span><span style="color:#D4D4D4;">( </span></span> +<span class="line"><span style="color:#9CDCFE;"> from</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">sender</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetEmailAddress</span><span style="color:#D4D4D4;">(),</span></span> +<span class="line"><span style="color:#9CDCFE;"> to</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">Email</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> subject</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Message from MyApp"</span><span style="color:#D4D4D4;">, </span></span> +<span class="line"><span style="color:#9CDCFE;"> body</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">message</span></span> +<span class="line"><span style="color:#D4D4D4;"> ));</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>When an instance method is invoked, the target model instance will be loaded using the data source specified by <code>[Execute(DataSource = typeof(MyDataSource))]</code> if present. Otherwise, the model instance will be loaded using the default data source for the model's type. If you have a <a href="/Coalesce/modeling/model-components/data-sources.html#defining-data-sources">Custom Data Source</a> annotated with <code>[DefaultDataSource]</code>, that data source will be used. Otherwise, the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> will be used. The consequence of this is that a user cannot call a method on an instance of entity that they're not allowed to see or load.</p><p>Instance methods are generated onto the TypeScript ViewModels.</p><h4 id="when-should-i-use-instance-methods" tabindex="-1">When should I use Instance Methods? <a class="header-anchor" href="#when-should-i-use-instance-methods" aria-label="Permalink to "When should I use Instance Methods?"">​</a></h4><p>Instance methods, as opposed to <a href="#static-methods">static</a> or <a href="#service-methods">service</a> methods, are a good fit when implementing an action that directly acts on or depends upon a specific instance of one of your entity types. One of their biggest benefits is the automatic row-level security from data sources as described above.</p><h3 id="static-methods" tabindex="-1">Static Methods <a class="header-anchor" href="#static-methods" aria-label="Permalink to "Static Methods"">​</a></h3><p>Static Methods can be declared on your <a href="/Coalesce/modeling/model-types/entities.html">Entity classes</a>. For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> FirstName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">NamesStartingWith</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> characters</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ) {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">FirstName</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">f</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">StartsWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">characters</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ToList</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Static methods are generated onto the TypeScript ListViewModels. All of the same members that are generated for instance methods are also generated for static methods.</p><h4 id="when-should-i-use-static-methods" tabindex="-1">When should I use Static Methods? <a class="header-anchor" href="#when-should-i-use-static-methods" aria-label="Permalink to "When should I use Static Methods?"">​</a></h4><p>Static methods are a good fit for actions that don't operate on a specific instance of an entity type, but whose functionality is still closely coupled with a specific, concrete entity type.</p><p>For example, imagine you have a File entity class. You could make a static method on that class that accepts a file as a parameter. This method would persist that file to storage and then save a new entity to the database. You would then <a href="/Coalesce/topics/security.html#endpoint-security">disable Create</a> on that entity, since the default <code>/save</code> endpoint cannot accept file uploads.</p><p>Or, imagine an Invoice class. You might make a static method that returns a summary of sales information for a given time range. Since this summarization would be performing aggregate functions against your Invoice entities and is therefore tightly coupled to Invoices, a static method would be suitable.</p><h3 id="service-methods" tabindex="-1">Service Methods <a class="header-anchor" href="#service-methods" aria-label="Permalink to "Service Methods"">​</a></h3><p>Service methods can be declared on a <a href="/Coalesce/modeling/model-types/services.html">Coalesce Service</a> class:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Service</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyService</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#DCDCAA;"> MyServiceMethod</span><span style="color:#D4D4D4;">() => </span><span style="color:#CE9178;">"Hello, World!"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Or, they can be declared via a <a href="/Coalesce/modeling/model-types/services.html">Coalesce Service</a> <em>interface</em> that has an implementation registered with dependency injection:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Service</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> interface</span><span style="color:#4EC9B0;"> IMyService</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#DCDCAA;"> MyServiceMethod</span><span style="color:#D4D4D4;">() => </span><span style="color:#CE9178;">"Hello, World!"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>When declaring service methods by interface, a [Coalesce] attribute on each method is not needed - the entire interface is exposed by Coalesce.</p><h4 id="when-should-i-use-service-methods" tabindex="-1">When should I use Service Methods? <a class="header-anchor" href="#when-should-i-use-service-methods" aria-label="Permalink to "When should I use Service Methods?"">​</a></h4><p><a href="/Coalesce/modeling/model-types/services.html">Services</a> are a catch-all feature and can be used for almost any conceivable purpose in Coalesce to implement custom functionality that needs to be invoked by your front-end app.</p><p>However, there are some reasons why you might <em>not</em> want to use a service:</p><ul><li>If the method logically operates on a single entity instance, and/or if using an instance method would let you utilize the row-level security already implemented by one of your data sources to authorize who can invoke the method.</li><li>If the service would only have one or two methods and would logically make sense as a static or instance method. In other words, if adding a new service class would be detrimental to the organization of your codebase and create "file sprawl".</li></ul><p>On the other hand, services have some benefits that instance and static methods cannot provide:</p><ul><li>Coalesce Services can be declared with an interface, rather than a concrete type, allowing for their implementation to be substituted more easily. For example, a service providing an external integration that you want to mock or stub during automated testing and/or local development.</li></ul><h2 id="parameters" tabindex="-1">Parameters <a class="header-anchor" href="#parameters" aria-label="Permalink to "Parameters"">​</a></h2><p>The following parameters can be added to your methods:</p><table><thead><tr><td>Type</td><td>Description</td></tr></thead><tr><td><p>Primitives, Dates, and other Scalars</p></td><td><p>Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, <code>DateTime</code>, <code>DateTimeOffset</code>), and their nullable variants, are accepted as parameters to be passed from the client to the method call.</p></td></tr><tr><td><p><a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a></p></td><td><p>When invoking the method on the client, the object's properties will only be serialized one level deep. If an entity model parameter has additional child object properties, they will not be included in the invocation of the method - only the object's primitive & date properties will be deserialized from the client.</p></td></tr><tr><td><p><a href="/Coalesce/modeling/model-types/external-types.html">External Types</a></p></td><td><p>Unlike entity model parameters, external type parameters will be serialized and sent by the client to an arbitrarily deep level, excluding any entity model properties that may be nested inside an external type.</p></td></tr><tr><td><p>Files</p></td><td><p>Methods can accept file uploads by using a parameter of type <code>IntelliTect.Coalesce.Models.IFile</code> (or any derived type, like <code>IntelliTect.Coalesce.Models.File</code>).</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.icollection-1" target="_blank" rel="noreferrer">ICollection<T></a>, <a href="https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1" target="_blank" rel="noreferrer">IEnumerable<T></a></p></td><td><p>Collections of any of the above valid parameter types above are also valid parameter types.</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontext" target="_blank" rel="noreferrer">DbContext</a></p></td><td><p>EF Core <code>DbContext</code> types are injected automatically.</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.security.claims.claimsprincipal" target="_blank" rel="noreferrer">ClaimsPrincipal</a></p></td><td><p>Passes through from <code>HttpContext.User</code>.</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken" target="_blank" rel="noreferrer">CancellationToken</a></p></td><td><p>Passes through from <code>HttpContext.RequestAborted</code>.</p></td></tr><tr><td><p><a href="/Coalesce/modeling/model-components/attributes/inject.html">[Inject]</a></p></td><td><p>Parameters with the <a href="/Coalesce/modeling/model-components/attributes/inject.html">[Inject]</a> attribute are injected from the application's <code>IServiceProvider</code>.</p></td></tr><tr><td><p><code>out</code> <a href="/Coalesce/concepts/include-tree.html">IncludeTree</a></p></td><td><p>Deprecated. If you need to return an <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> to shape the serialization of the method's return value, you should use an <code>ItemResult<T></code> return value and populate the <code>IncludeTree</code> property on the <code>ItemResult</code> object.</p></td></tr></table><h2 id="return-values" tabindex="-1">Return Values <a class="header-anchor" href="#return-values" aria-label="Permalink to "Return Values"">​</a></h2><p>You can return virtually anything from these methods:</p><table><thead><tr><td>Type</td><td>Description</td></tr></thead><tr><td><p>Primitives, Dates, and other Scalars</p></td><td><p>Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, <code>DateTime</code>, <code>DateTimeOffset</code>), and their nullable variants, may be returned from methods.</p></td></tr><tr><td><p><a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a></p></td><td><p>Any of the types of your models may be returned.</p></td></tr><tr><td><p><a href="/Coalesce/modeling/model-types/external-types.html">External Types</a></p></td><td><p>Any <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a> you define may also be returned from a method.</p><p>When returning custom types from methods, be careful of the types of their properties. Coalesce will <strong>recursively</strong> discover and generate code for all public properties of your <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a>. If you accidentally include a type that you do not own, these generated types could get out of hand extremely quickly.</p><p>Mark any properties you don't want generated with the <a href="/Coalesce/modeling/model-components/attributes/internal-use.html">[InternalUse]</a> attribute, or give them a non-public access modifier. Whenever possible, don't return types that you don't own or control.</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.icollection-1" target="_blank" rel="noreferrer">ICollection<T></a>, <a href="https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1" target="_blank" rel="noreferrer">IEnumerable<T></a></p></td><td><p>Collections of any of the above valid return types above are also valid return types. IEnumerables are useful for generator functions using <code>yield</code>. <code>ICollection</code> is highly suggested over <code>IEnumerable</code> whenever appropriate, though.</p></td></tr><tr><td><p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.linq.iqueryable" target="_blank" rel="noreferrer">IQueryable<T></a></p></td><td><p>Queryables of the valid return types above are valid return types. The query will be evaluated, and Coalesce will attempt to pull an <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> from the queryable to shape the response.</p><p>When <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> functionality is needed to shape the response but an <code>IQueryable<></code> return type is not feasible, an <code>ItemResult</code> return value with an <code>IncludeTree</code> set on it will do the trick as well.</p></td></tr><tr><td><p><a href="#file-downloads">Files</a></p></td><td><p>Methods can return file downloads using type <code>IntelliTect.Coalesce.Models.IFile</code> (or any derived type, like <code>IntelliTect.Coalesce.Models.File</code>).</p><p>Please see the <a href="#file-downloads">File Downloads</a> section below for more details</p></td></tr><tr><td><p><code>ItemResult<T></code>, <code>ItemResult</code>, <code>ListResult<T></code></p></td><td><p>An <code>IntelliTect.Coalesce.Models.ItemResult<T></code> of any of the valid return types above, including collections, is valid, as well as its non-generic variant <code>ItemResult</code>, and its list variant <code>ListResult<T></code>.</p><p>Use an <code>ItemResult</code> whenever you might need to signal failure and return an error message from a custom method. The <code>WasSuccessful</code> and <code>Message</code> properties on the result object will be sent along to the client to indicate success or failure of the method. The type <code>T</code> will be mapped to the appropriate DTO object before being serialized as normal.</p><p>An <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> can be set on the object's <code>IncludeTree</code> parameter to shape the serialization of the method's returned value.</p></td></tr></table><h2 id="security" tabindex="-1">Security <a class="header-anchor" href="#security" aria-label="Permalink to "Security"">​</a></h2><p>You can implement role-based security on a method by placing the <a href="/Coalesce/modeling/model-components/attributes/execute.html">[Execute]</a> on the method. Placing this attribute on the method with no roles specified will simply require that the calling user be authenticated.</p><p>Security for instance methods is also controlled by the data source that loads the instance - if the data source can't provide an instance of the requested model, the method won't be executed.</p><p>See the <a href="/Coalesce/topics/security.html#custom-methods-and-services">Security</a> page to read more about custom method security, as well as all other security mechanisms in Coalesce.</p><h2 id="generated-typescript" tabindex="-1">Generated TypeScript <a class="header-anchor" href="#generated-typescript" aria-label="Permalink to "Generated TypeScript"">​</a></h2><p>See <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a> and <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel Layer</a> for details on the code that is generated for your custom methods.</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>Any Task-returning methods with "Async" as a suffix to the C# method's name will have the "Async" suffix stripped from the generated Typescript.</p></div><h2 id="method-annotations" tabindex="-1">Method Annotations <a class="header-anchor" href="#method-annotations" aria-label="Permalink to "Method Annotations"">​</a></h2><p>Methods can be annotated with attributes to control API exposure and TypeScript generation.</p><h3 id="coalesce" tabindex="-1">[Coalesce] <a class="header-anchor" href="#coalesce" aria-label="Permalink to "[Coalesce]"">​</a></h3><p>The <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a> attribute causes the method to be exposed via a generated API controller. This is not needed for methods defined on an interface marked with <a href="/Coalesce/modeling/model-types/services.html"><code>[Service]</code></a> - Coalesce assumes that all methods on the interface are intended to be exposed. If this is not desired, create a new, more restricted interface with only the desired methods to be exposed.</p><h3 id="display" tabindex="-1">[Display] <a class="header-anchor" href="#display" aria-label="Permalink to "[Display]"">​</a></h3><p>The displayed name and description of a method, can be set via the <a href="https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute" target="_blank" rel="noreferrer"><code>[Display]</code></a> attribute.</p><h3 id="execute" tabindex="-1">[Execute] <a class="header-anchor" href="#execute" aria-label="Permalink to "[Execute]"">​</a></h3><p>The <a href="/Coalesce/modeling/model-components/attributes/execute.html">[Execute]</a> controls most other aspects of custom methods:</p><ul><li>Role-based security</li><li>HTTP Method</li><li>HTTP Caching</li><li>Data Source (for model instance methods)</li><li>Attribute validation enable/disable</li><li>Parameter auto-clear after execute in admin UI</li></ul><h2 id="file-downloads" tabindex="-1">File Downloads <a class="header-anchor" href="#file-downloads" aria-label="Permalink to "File Downloads"">​</a></h2><p>Coalesce supports exposing file downloads via custom methods. Simply return a <code>IntelliTect.Coalesce.Models.IFile</code> (or any derived type, like <code>IntelliTect.Coalesce.Models.File</code>), or an <code>ItemResult<></code> of such.</p><h3 id="consuming-file-downloads" tabindex="-1">Consuming file downloads <a class="header-anchor" href="#consuming-file-downloads" aria-label="Permalink to "Consuming file downloads"">​</a></h3><p>There are a few conveniences for easily consuming downloaded files from your custom pages.</p>`,57),d=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Callers"),e(" have a property "),s("code",null,"url"),e(". This can be provided directly to your HTML template, with the browser invoking the endpoint automatically.")],-1),y=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),h=s("div",{class:"language-html"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#808080"}},"<"),s("span",{style:{color:"#569CD6"}},"img"),s("span",{style:{color:"#9CDCFE"}}," :src"),s("span",{style:{color:"#D4D4D4"}},"="),s("span",{style:{color:"#CE9178"}},'"downloadPicture.url"'),s("span",{style:{color:"#808080"}},">")])])])],-1),C=s("hr",null,null,-1),u=s("p",null,[e("Alternatively, the "),s("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Callers"),e(" for file-returning methods have a method "),s("code",null,"getResultObjectUrl(vue)"),e(". If the method was invoked programmatically (i.e. via "),s("code",null,"caller()"),e(", "),s("code",null,"caller.invoke()"),e(", or "),s("code",null,"caller.invokeWithArgs()"),e("), this method returns an "),s("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL",target:"_blank",rel:"noreferrer"},"Object URL"),e(" that can be set as the "),s("code",null,"src"),e(" of an "),s("code",null,"image"),e(" or "),s("code",null,"video"),e(" HTML tag.")],-1),m=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"downloadPicture"),s("span",{style:{color:"#D4D4D4"}},"();")])])])],-1),f=s("div",{class:"language-html"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#808080"}},"<"),s("span",{style:{color:"#569CD6"}},"img"),s("span",{style:{color:"#9CDCFE"}}," :src"),s("span",{style:{color:"#D4D4D4"}},"="),s("span",{style:{color:"#CE9178"}},'"downloadPicture.getResultObjectUrl()"'),s("span",{style:{color:"#808080"}},">")])])])],-1),b=a(`<h3 id="database-stored-files" tabindex="-1">Database-stored Files <a class="header-anchor" href="#database-stored-files" aria-label="Permalink to "Database-stored Files"">​</a></h3><p>When storing large <code>byte[]</code> objects in your EF models, it is important that these are never loaded unless necessary. Loading these can cause significant garbage collector churn, or even <a href="https://github.com/dotnet/SqlClient/issues/593" target="_blank" rel="noreferrer">bring your app to a halt</a>. To achieve this with EF, you can either utilize <a href="https://docs.microsoft.com/en-us/ef/core/modeling/table-splitting" target="_blank" rel="noreferrer">Table Splitting</a>, or you can use an entire dedicated table that only contains a primary key and the binary content, and nothing else.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Storing large binary objects in relational databases comes with significant drawbacks. For large-volume cloud solutions, it is much more costly than dedicated cloud-native file storage like Azure Storage or S3. Also of note is that the larger a database is, the more difficult its backup process becomes.</p></div><p>For files that are stored in your database, Coalesce supports a pattern that allows the file to be streamed directly to the HTTP response without needing to allocate a chunk of memory for the whole file at once. Simply pass an EF <code>IQueryable<byte[]></code> to the constructor of <code>IntelliTect.Coalesce.Models.File</code>. This implementation, however, is specific to the underlying EF database provider. Currently, only SQL Server and SQLite are supported. Please open a Github issue to request support for other providers. An example of this mechanism is included in the <code>DownloadAttachment</code> method in the code sample below.</p><p>The following is an example of utilizing Table Splitting for database-stored files. Generally speaking, metadata about the file should be stored on the "main" entity, and only the bytes of the content should be split into a separate entity.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DbSet</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Cases</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> protected</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> OnModelCreating</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">ModelBuilder</span><span style="color:#9CDCFE;"> modelBuilder</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> modelBuilder</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Entity</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ToTable</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Cases"</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">HasOne</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AttachmentContent</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">WithOne</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">HasForeignKey</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">CaseAttachmentContent</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;"> modelBuilder</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Entity</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">CaseAttachmentContent</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ToTable</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Cases"</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">HasKey</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Case</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> AttachmentName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> long</span><span style="color:#9CDCFE;"> AttachmentSize</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> AttachmentType</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">MaxLength</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">32</span><span style="color:#D4D4D4;">)] </span><span style="color:#6A9955;">// Adjust max length based on chosen hash algorithm.</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">AttachmentHash</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; } </span><span style="color:#6A9955;">// Could also be a base64 string if so desired.</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">InternalUse</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> CaseAttachmentContent</span><span style="color:#9CDCFE;"> AttachmentContent</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; } = </span><span style="color:#569CD6;">new</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> UploadAttachment</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IFile</span><span style="color:#9CDCFE;"> file</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">) </span><span style="color:#C586C0;">return</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> content</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#569CD6;"> byte</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Length</span><span style="color:#D4D4D4;">];</span></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">ReadAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">content</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AsMemory</span><span style="color:#D4D4D4;">());</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;"> AttachmentContent</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#D4D4D4;"> () { </span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">content</span><span style="color:#D4D4D4;"> };</span></span> +<span class="line"><span style="color:#9CDCFE;"> AttachmentName</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Name</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> AttachmentSize</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Length</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> AttachmentType</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">file</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ContentType</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> AttachmentHash</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SHA256</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">HashData</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">content</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Execute</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">HttpMethod</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">HttpMethod</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Get</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">VaryByProperty</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">AttachmentHash</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> IFile</span><span style="color:#DCDCAA;"> DownloadAttachment</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Models</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">File</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Cases</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseId</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AttachmentContent</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> )</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">AttachmentName</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> ContentType</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">AttachmentType</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> };</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseAttachmentContent</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Required</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="other-file-storage" tabindex="-1">Other File Storage <a class="header-anchor" href="#other-file-storage" aria-label="Permalink to "Other File Storage"">​</a></h3><p>For any other storage mechanism, implementations are similar to the database storage approach above. However, instead of table splitting or using a whole separate table, the file contents are simply stored elsewhere. Continue storing metadata about the file on the primary entity, and implement upload/download methods as desired that wrap the storage provider.</p><p>For downloads, prefer directly providing the underlying <code>Stream</code> to the <code>IFile</code> versus wrapping a <code>byte[]</code> in a <code>MemoryStream</code>. This will reduce server memory usage and garbage collector churn.</p><p>For cloud storage providers where complex security logic is not needed, consider having clients consume the URL of the cloud resource directly rather than passing the file content through your own server.</p>`,10);function g(E,v,w,F,A,T){const n=r("CodeTabs");return c(),l("div",null,[D,t(n,null,{vue:p(()=>[d,y,h,C,u,m,f]),_:1}),b])}const S=o(i,[["render",g]]);export{k as __pageData,S as default}; diff --git a/assets/modeling_model-components_methods.md.SII-fa1f.lean.js b/assets/modeling_model-components_methods.md.SII-fa1f.lean.js new file mode 100644 index 000000000..d11d15b61 --- /dev/null +++ b/assets/modeling_model-components_methods.md.SII-fa1f.lean.js @@ -0,0 +1,8 @@ +import{_ as o,c as l,I as t,w as p,a7 as a,D as r,o as c,l as s,a as e}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"Methods","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/methods.md","filePath":"modeling/model-components/methods.md"}'),i={name:"modeling/model-components/methods.md"},D=a("",57),d=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Callers"),e(" have a property "),s("code",null,"url"),e(". This can be provided directly to your HTML template, with the browser invoking the endpoint automatically.")],-1),y=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#9CDCFE"}},"viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")])])])],-1),h=s("div",{class:"language-html"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#808080"}},"<"),s("span",{style:{color:"#569CD6"}},"img"),s("span",{style:{color:"#9CDCFE"}}," :src"),s("span",{style:{color:"#D4D4D4"}},"="),s("span",{style:{color:"#CE9178"}},'"downloadPicture.url"'),s("span",{style:{color:"#808080"}},">")])])])],-1),C=s("hr",null,null,-1),u=s("p",null,[e("Alternatively, the "),s("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Callers"),e(" for file-returning methods have a method "),s("code",null,"getResultObjectUrl(vue)"),e(". If the method was invoked programmatically (i.e. via "),s("code",null,"caller()"),e(", "),s("code",null,"caller.invoke()"),e(", or "),s("code",null,"caller.invokeWithArgs()"),e("), this method returns an "),s("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL",target:"_blank",rel:"noreferrer"},"Object URL"),e(" that can be set as the "),s("code",null,"src"),e(" of an "),s("code",null,"image"),e(" or "),s("code",null,"video"),e(" HTML tag.")],-1),m=s("div",{class:"language-ts"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"ts"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"import"),s("span",{style:{color:"#D4D4D4"}}," { "),s("span",{style:{color:"#9CDCFE"}},"PersonViewModel"),s("span",{style:{color:"#D4D4D4"}}," } "),s("span",{style:{color:"#C586C0"}},"from"),s("span",{style:{color:"#CE9178"}}," '@/viewmodels.g'")]),e(` +`),s("span",{class:"line"}),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#569CD6"}},"var"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}}," = "),s("span",{style:{color:"#569CD6"}},"new"),s("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),s("span",{style:{color:"#D4D4D4"}},"();")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"$load"),s("span",{style:{color:"#D4D4D4"}},"("),s("span",{style:{color:"#B5CEA8"}},"1"),s("span",{style:{color:"#D4D4D4"}},");")]),e(` +`),s("span",{class:"line"},[s("span",{style:{color:"#C586C0"}},"await"),s("span",{style:{color:"#9CDCFE"}}," viewModel"),s("span",{style:{color:"#D4D4D4"}},"."),s("span",{style:{color:"#DCDCAA"}},"downloadPicture"),s("span",{style:{color:"#D4D4D4"}},"();")])])])],-1),f=s("div",{class:"language-html"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki dark-plus vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#808080"}},"<"),s("span",{style:{color:"#569CD6"}},"img"),s("span",{style:{color:"#9CDCFE"}}," :src"),s("span",{style:{color:"#D4D4D4"}},"="),s("span",{style:{color:"#CE9178"}},'"downloadPicture.getResultObjectUrl()"'),s("span",{style:{color:"#808080"}},">")])])])],-1),b=a("",10);function g(E,v,w,F,A,T){const n=r("CodeTabs");return c(),l("div",null,[D,t(n,null,{vue:p(()=>[d,y,h,C,u,m,f]),_:1}),b])}const S=o(i,[["render",g]]);export{k as __pageData,S as default}; diff --git a/assets/modeling_model-components_properties.md.CufQlWZR.js b/assets/modeling_model-components_properties.md.CufQlWZR.js new file mode 100644 index 000000000..4f829c4e4 --- /dev/null +++ b/assets/modeling_model-components_properties.md.CufQlWZR.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Properties","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/properties.md","filePath":"modeling/model-components/properties.md"}'),r={name:"modeling/model-components/properties.md"},i=a('<h1 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h1><p>Models in a Coalesce application are just EF Core POCOs. The properties defined on your models should fit within the constraints of EF Core.</p><p>Coalesce currently has a few more restrictions than what EF Core allows, but hopefully over time some of these restrictions can be relaxed as Coalesce grows in capability.</p><h2 id="property-varieties" tabindex="-1">Property Varieties <a class="header-anchor" href="#property-varieties" aria-label="Permalink to "Property Varieties"">​</a></h2><p>The following kinds of properties may be declared on your models.</p><h3 id="primary-key" tabindex="-1">Primary Key <a class="header-anchor" href="#primary-key" aria-label="Permalink to "Primary Key"">​</a></h3><p>To work with Coalesce, your model must have a single property for a primary key. By convention, this property should be named the same as your model class with <code>Id</code> appended to that name, but you can also annotate a property with <code>[Key]</code> or name it exactly "Id" to denote it as the primary key.</p><h3 id="foreign-keys-reference-navigation-properties" tabindex="-1">Foreign Keys & Reference Navigation Properties <a class="header-anchor" href="#foreign-keys-reference-navigation-properties" aria-label="Permalink to "Foreign Keys & Reference Navigation Properties"">​</a></h3><p>While a foreign key may be declared on your model using only the EF OnModuleBuilding method to specify its purpose, Coalesce won't know what the property is a key for. Therefore, foreign key properties should always be accompanied by a reference navigation property, and vice versa.</p><p>In cases where the foreign key is not named after the navigation property with <code>"Id"</code> appended, the <code>[ForeignKeyAttribute]</code> may be used on either the key or the navigation property to denote the other property of the pair, in accordance with the recommendations set forth by <a href="https://learn.microsoft.com/en-us/ef/core/modeling/relationships/mapping-attributes#foreignkeyattribute" target="_blank" rel="noreferrer">EF Core's Modeling Guidelines</a>.</p><h3 id="collection-navigation-properties" tabindex="-1">Collection Navigation Properties <a class="header-anchor" href="#collection-navigation-properties" aria-label="Permalink to "Collection Navigation Properties"">​</a></h3><p>Collection navigation properties can be used in a straightforward manner. In the event where the inverse property on the other side of the relationship cannot be determined, <code>[InversePropertyAttribute]</code> will need to be used. <a href="https://learn.microsoft.com/en-us/ef/core/modeling/relationships/mapping-attributes#inversepropertyattribute" target="_blank" rel="noreferrer">EF Core provides documentation</a> on how to use this attribute. Errors will be displayed at generation time if an inverse property cannot be determined without the attribute. We recommend recommended that you declare the type of collection navigation properties as <code>ICollection<T></code>.</p><h3 id="non-mapped-pocos" tabindex="-1">Non-mapped POCOs <a class="header-anchor" href="#non-mapped-pocos" aria-label="Permalink to "Non-mapped POCOs"">​</a></h3><p>Properties of a type that are not on your <code>DbContext</code> will also have corresponding properties generated on the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#model-data-properties">TypeScript ViewModels</a> typed as <a href="/Coalesce/stacks/vue/layers/models.html">Plain Models</a>, and the values of such properties will be sent with the object to the client when requested. Properties of this type will also be sent back to the server by the client when they are encountered.</p><p>See <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a> for more information.</p><h3 id="primitives-scalars-dates" tabindex="-1">Primitives, Scalars, & Dates <a class="header-anchor" href="#primitives-scalars-dates" aria-label="Permalink to "Primitives, Scalars, & Dates"">​</a></h3><p>Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, <code>DateTime</code>, <code>DateTimeOffset</code>), and their nullable variants, are all supported as model properties.</p><h3 id="getter-only-properties" tabindex="-1">Getter-only Properties <a class="header-anchor" href="#getter-only-properties" aria-label="Permalink to "Getter-only Properties"">​</a></h3><p>Any property that only has a getter will also have a corresponding property generated in the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#model-data-properties">TypeScript ViewModels</a> and will receive values of the property from the server, but values won't be sent back to the server.</p><p>If such a property is defined as an auto-property, the <code>[NotMapped]</code> attribute should be used to prevent EF Core from attempting to map such a property to your database.</p><h3 id="init-only-properties" tabindex="-1">Init-only Properties <a class="header-anchor" href="#init-only-properties" aria-label="Permalink to "Init-only Properties"">​</a></h3><p>Properties on <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> that use an <code>init</code> accessor rather than a <code>set</code> accessor will be implicitly treated as required, and can also only have a value provided when the entity is created for the first time. Any values provided during save actions for init-only properties when updating an existing entity will be ignored.</p><h2 id="property-customization" tabindex="-1">Property Customization <a class="header-anchor" href="#property-customization" aria-label="Permalink to "Property Customization"">​</a></h2><p>For any of the kinds of properties outlined above, the following customizations can be applied:</p><h3 id="attributes" tabindex="-1">Attributes <a class="header-anchor" href="#attributes" aria-label="Permalink to "Attributes"">​</a></h3><p>Coalesce provides a number of <a href="/Coalesce/modeling/model-components/attributes.html">Attributes</a>, and supports a number of other .NET attributes, that allow for further customization of your model.</p><h3 id="security" tabindex="-1">Security <a class="header-anchor" href="#security" aria-label="Permalink to "Security"">​</a></h3><p>Property values received by the server from the client will be ignored if rejected by any <a href="/Coalesce/topics/security.html#property-column-security">property-level Security</a>. This security is implemented in the <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a>.</p><h3 id="loading-serialization" tabindex="-1">Loading & Serialization <a class="header-anchor" href="#loading-serialization" aria-label="Permalink to "Loading & Serialization"">​</a></h3><p>The <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">Default Loading Behavior</a>, any custom functionality defined in <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a>, and <a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a> may also restrict which properties are sent to the client when requested.</p><h3 id="notmapped" tabindex="-1">NotMapped <a class="header-anchor" href="#notmapped" aria-label="Permalink to "NotMapped"">​</a></h3><p>While Coalesce does not do anything special for the <code>[NotMapped]</code> attribute, it is still an important attribute to keep in mind while building your model, as it prevents EF Core from doing anything with the property.</p>',32),n=[i];function s(l,p,d,c,h,m){return o(),t("div",null,n)}const f=e(r,[["render",s]]);export{y as __pageData,f as default}; diff --git a/assets/modeling_model-components_properties.md.CufQlWZR.lean.js b/assets/modeling_model-components_properties.md.CufQlWZR.lean.js new file mode 100644 index 000000000..f9e5fbee0 --- /dev/null +++ b/assets/modeling_model-components_properties.md.CufQlWZR.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Properties","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-components/properties.md","filePath":"modeling/model-components/properties.md"}'),r={name:"modeling/model-components/properties.md"},i=a("",32),n=[i];function s(l,p,d,c,h,m){return o(),t("div",null,n)}const f=e(r,[["render",s]]);export{y as __pageData,f as default}; diff --git a/assets/modeling_model-types_dtos.md.Bx3ZDY0X.js b/assets/modeling_model-types_dtos.md.Bx3ZDY0X.js new file mode 100644 index 000000000..be704ca41 --- /dev/null +++ b/assets/modeling_model-types_dtos.md.Bx3ZDY0X.js @@ -0,0 +1,86 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"Custom DTOs","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/dtos.md","filePath":"modeling/model-types/dtos.md"}'),o={name:"modeling/model-types/dtos.md"},l=n(`<h1 id="custom-dtos" tabindex="-1">Custom DTOs <a class="header-anchor" href="#custom-dtos" aria-label="Permalink to "Custom DTOs"">​</a></h1><p>In addition to the generated <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a> that Coalesce will create for you, you may also create your own implementations of an <code>IClassDto</code>. These types are first-class citizens in Coalesce - you will get a full suite of features surrounding them as if they were entities. This includes generated API Controllers, admin pages, and full <a href="/Coalesce/stacks/vue/layers/viewmodels.html#viewmodels">TypeScript ViewModels</a> and <a href="/Coalesce/stacks/vue/layers/viewmodels.html#listviewmodels">TypeScript ListViewModels</a>.</p><h2 id="purpose" tabindex="-1">Purpose <a class="header-anchor" href="#purpose" aria-label="Permalink to "Purpose"">​</a></h2><p>Custom DTOs have a fair amount of overlap with the capabilities of <a href="./standalone-entities.html">Standalone Entities</a>.</p><ul><li>Both can expose a lightweight or alternate representation of an entity. For example, a "listing" version of an entity with large data members omitted (such that for performance, they've never retrieved from the database).</li><li>Both choose exactly how each property value is mapped between the client and the database. Each property mapping is written by hand by the developer.</li><li>Both expose their own set of API endpoints (<code>/get</code>, <code>/list</code>, <code>/save</code>, etc).</li></ul><p>However, standalone entities have the following advantages over custom DTOs:</p><ul><li>Standalone entities are significantly easier to write than custom DTOs for <a href="./standalone-entities.html#read-only-with-ef-backing-store">read-only use cases</a>.</li><li>Standalone entities aren't limited to being based on an EF entity, while custom DTOs must always choose an entity type to be based upon.</li><li>Standalone entities support all security attributes, while custom DTOs do not support property-level <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>, nor <a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a>. In custom DTOs, this logic must be written by hand in the MapTo/MapFrom methods when it is needed.</li><li>Standalone entities support surgical saves easily, while custom DTOs <a href="#surgical-saves">require significant extra code</a>.</li></ul><p>Custom DTOs have the following advantages over standalone entities:</p><ul><li>You write all the mapping logic between the DTO and the entity, which can make it easier to implement large amounts of custom logic at this layer that standalone entities would need to implement with <a href="/Coalesce/modeling/model-components/attributes/restrict.html">Restrictions</a>. While these kinds of mapping restrictions can also be written in a standalone entity's <a href="https://learn.microsoft.com/en-us/ef/core/performance/efficient-querying#project-only-properties-you-need" target="_blank" rel="noreferrer">projected EF query</a>, some logic can be difficult or impossible to represent in an EF query expression.</li></ul><h2 id="creating-a-custom-dto" tabindex="-1">Creating a Custom DTO <a class="header-anchor" href="#creating-a-custom-dto" aria-label="Permalink to "Creating a Custom DTO"">​</a></h2><p>To create a custom DTO, define a class annotated with <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a> that implements <code>IClassDTO<T></code>, where <code>T</code> is an EF Core POCO with a corresponding <code>DbSet<T></code> on a <code>DbContext</code> that has also been exposed with <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a>. Add any <a href="/Coalesce/modeling/model-components/properties.html">Properties</a> to it just as you would add <a href="/Coalesce/modeling/model-components/properties.html">model properties</a> to a regular EF model. If you are not exposing a <code>DbContext</code> class with <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a> but still wish to create a Custom DTO based upon one of its entities, you can inherit from <code>IClassDTO<T, TContext></code> instead as a means of explicitly declaring the type of the DbContext.</p><p>Next, ensure that one property is annotated with <code>[Key]</code> so that Coalesce can know the primary key of your DTO in order to perform database lookups and keep track of your object uniquely in the client-side TypeScript.</p><p>Now, populate the required <code>MapTo</code> and <code>MapFrom</code> methods with code for mapping from and to your DTO, respectively (the methods are named with respect to the underlying entity, not the DTO). Most properties probably map one-to-one in both directions, but you probably created a DTO because you wanted some sort of custom mapping - say, mapping a collection on your entity with a comma-delimited string on the DTO. This is also the place to perform any user-based, role-based, property-level security. You can access the current user on the <code>IMappingContext</code> object.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseDto</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">IClassDto</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Key</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> AssignedToName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> MapTo</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> obj</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> MapFrom</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> obj</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IncludeTree</span><span style="color:#9CDCFE;"> tree</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseKey</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AssignedTo</span><span style="color:#D4D4D4;"> != </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> AssignedToName</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AssignedTo</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Name</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Custom DTOs do not utilize property-level <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a> nor <a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a>, since these are handled in the <a href="/Coalesce/stacks/agnostic/dtos.html">Generated DTOs</a>. If you need property-level security or trimming, you must write it yourself in the <code>MapTo</code> and <code>MapFrom</code> methods.</p></div><p>If you have any child objects on your DTO, you can invoke the mapper for some other object using the static <code>Mapper</code> class. Also seen in this example is how to respect the <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> when mapping entity types; however, respecting the <code>IncludeTree</code> is optional. Since this DTO is a custom type that you've written, if you're certain your use cases don't need to worry about object graph trimming, then you can ignore the <code>IncludeTree</code>. If you do ignore the <code>IncludeTree</code>, you should pass <code>null</code> to calls to <code>Mapper</code> - don't pass in the incoming <code>IncludeTree</code>, as this could cause unexpected results.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Mapping</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseDto</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">IClassDto</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ProductId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Product</span><span style="color:#9CDCFE;"> Product</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> MapFrom</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> obj</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IncludeTree</span><span style="color:#9CDCFE;"> tree</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> ProductId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ProductId</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">tree</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;"> || </span><span style="color:#9CDCFE;">tree</span><span style="color:#D4D4D4;">[</span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Product</span><span style="color:#D4D4D4;">)] != </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#9CDCFE;"> Product</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Mapper</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">MapToDto</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Product</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">ProductDtoGen</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">obj</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Product</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">tree</span><span style="color:#D4D4D4;">?[</span><span style="color:#569CD6;">nameof</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Product</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="using-custom-datasources-and-behaviors" tabindex="-1">Using Custom DataSources and Behaviors <a class="header-anchor" href="#using-custom-datasources-and-behaviors" aria-label="Permalink to "Using Custom DataSources and Behaviors"">​</a></h2><h3 id="declaring-an-iclassdto-datasource" tabindex="-1">Declaring an IClassDto DataSource <a class="header-anchor" href="#declaring-an-iclassdto-datasource" aria-label="Permalink to "Declaring an IClassDto DataSource"">​</a></h3><p>When you create a custom DTO, it will use the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> and <a href="/Coalesce/modeling/model-components/behaviors.html#standard-behaviors">Standard Behaviors</a> just like any of your regular <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>. If you wish to override this, your custom data source and/or behaviors MUST be declared in one of the following ways:</p><ol><li><p>As a nested class of the DTO. The relationship between your data source or behaviors and your DTO will be picked up automatically.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseDto</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">IClassDto</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Key</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyCaseDtoSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div></li><li><p>With a <code>[DeclaredFor]</code> attribute that references the DTO type:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseDto</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">IClassDto</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Key</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">DeclaredFor</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CaseDto</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyCaseDtoSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div></li></ol><h3 id="projecteddtodatasource" tabindex="-1">ProjectedDtoDataSource <a class="header-anchor" href="#projecteddtodatasource" aria-label="Permalink to "ProjectedDtoDataSource"">​</a></h3><p>In addition to creating a <a href="/Coalesce/modeling/model-components/data-sources.html">Data Source</a> by deriving from <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a>, there also exists a class <code>ProjectedDtoDataSource</code> that can be used to easily perform projection from EF model types to your custom DTO types using EF query projections. <code>ProjectedDtoDataSource</code> inherits from <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a>.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">DeclaredFor</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CaseDto</span><span style="color:#D4D4D4;">))]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CaseDtoSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">ProjectedDtoDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">CaseDto</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> CaseDtoSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">CaseDto</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">ApplyProjection</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Case</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> CaseDto</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> CaseId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CaseKey</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> AssignedToName</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AssignedTo</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;"> ? </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;"> : </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AssignedTo</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Name</span></span> +<span class="line"><span style="color:#D4D4D4;"> });</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="surgical-saves" tabindex="-1">Surgical Saves <a class="header-anchor" href="#surgical-saves" aria-label="Permalink to "Surgical Saves"">​</a></h2><p>Surgical saves require DTOs on the server that are capable of determining which of their properties have been set by the model binder, as surgical saves are sent from the client by entirely omitting properties from the <code>x-www-form-urlencoded</code> body that is sent to the server.</p><p>The <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a> implement the necessary logic for this; however, any <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a> must have this logic manually written by you, the developer. Either implement the same pattern that can be seen in the <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a>, or do not use surgical saves with Custom DTOs.</p><p>The <a href="./../../stacks/vue/layers/viewmodels.html">Vue ViewModels</a> for custom DTOs have surgical saves disabled by default. This can be re-enabled through the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#member-_savemode"><code>$saveMode</code></a> property if you've implemented the necessary logic on the server side.</p>`,28),p=[l];function t(c,r,D,i,y,d){return e(),a("div",null,p)}const h=s(o,[["render",t]]);export{u as __pageData,h as default}; diff --git a/assets/modeling_model-types_dtos.md.Bx3ZDY0X.lean.js b/assets/modeling_model-types_dtos.md.Bx3ZDY0X.lean.js new file mode 100644 index 000000000..1cf0641a8 --- /dev/null +++ b/assets/modeling_model-types_dtos.md.Bx3ZDY0X.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"Custom DTOs","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/dtos.md","filePath":"modeling/model-types/dtos.md"}'),o={name:"modeling/model-types/dtos.md"},l=n("",28),p=[l];function t(c,r,D,i,y,d){return e(),a("div",null,p)}const h=s(o,[["render",t]]);export{u as __pageData,h as default}; diff --git a/assets/modeling_model-types_entities.md.4anHzKSX.js b/assets/modeling_model-types_entities.md.4anHzKSX.js new file mode 100644 index 000000000..8317367c6 --- /dev/null +++ b/assets/modeling_model-types_entities.md.4anHzKSX.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Entity Models","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/entities.md","filePath":"modeling/model-types/entities.md"}'),r={name:"modeling/model-types/entities.md"},s=o('<h1 id="entity-models" tabindex="-1">Entity Models <a class="header-anchor" href="#entity-models" aria-label="Permalink to "Entity Models"">​</a></h1><p>Models are the core business objects of your application - they serve as the fundamental representation of data in your application. The design of your models is very important. In <a href="https://docs.microsoft.com/en-us/ef/core/" target="_blank" rel="noreferrer">Entity Framework Core</a> (EF), data models are just Plain Old CLR Objects (POCOs).</p><h2 id="building-a-data-model" tabindex="-1">Building a Data Model <a class="header-anchor" href="#building-a-data-model" aria-label="Permalink to "Building a Data Model"">​</a></h2><p>To start building your data model that Coalesce will generate code for, follow the best practices for <a href="https://docs.microsoft.com/en-us/ef/core/" target="_blank" rel="noreferrer">EF Core</a>. Guidance on this topic is available in abundance in the <a href="https://docs.microsoft.com/en-us/ef/core/" target="_blank" rel="noreferrer">Entity Framework Core documentation</a>.</p><p>Don't worry about querying or saving data when you're just getting started - Coalesce will provide a lot of that functionality for you, and it is very easy to customize what Coalesce offers later. To get started, just build your POCOs and <code>DbContext</code> classes. Annotate your <code>DbContext</code> class with <code>[Coalesce]</code> so that Coalesce will discover it and generate code based off of your context for you.</p><p>Before you start building, you are highly encouraged to read the sections below. The linked pages explain in greater detail what Coalesce will build for you for each part of your data model.</p><h3 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h3><p>Read <a href="/Coalesce/modeling/model-components/properties.html">Properties</a> for an outline of the different types of properties that you may place on your models and the code that Coalesce will generate for each of them.</p><h3 id="attributes" tabindex="-1">Attributes <a class="header-anchor" href="#attributes" aria-label="Permalink to "Attributes"">​</a></h3><p>Coalesce provides a number of C# attributes that can be used to decorate your model classes and their properties in order to customize behavior, appearance, security, and more. Coalesce also supports a number of annotations from <code>System.ComponentModel.DataAnnotations</code>.</p><p>Read <a href="/Coalesce/modeling/model-components/attributes.html">Attributes</a> to learn more.</p><h3 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to "Methods"">​</a></h3><p>You can place both static and interface methods on your model classes. Any public methods annotated with <a href="/Coalesce/modeling/model-components/attributes/coalesce.html">[Coalesce]</a> will have a generated API endpoint and corresponding generated TypeScript members for calling this API endpoint. Read <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> to learn more.</p><h2 id="customizing-crud-operations" tabindex="-1">Customizing CRUD Operations <a class="header-anchor" href="#customizing-crud-operations" aria-label="Permalink to "Customizing CRUD Operations"">​</a></h2><p>Once you've got a solid data model in place, its time to start customizing the way that Coalesce will <em>read</em> your data, as well as the way that it will handle your data when processing <em>creates</em>, <em>updates</em>, and <em>deletes</em>.</p><h3 id="data-sources" tabindex="-1">Data Sources <a class="header-anchor" href="#data-sources" aria-label="Permalink to "Data Sources"">​</a></h3><p>The method by which you can control what data the users of your application can access through Coalesce's generated APIs is by creating custom data sources. These are classes that allow complete control over the way that data is retrieved from your database and provided to clients. Read <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> to learn more.</p><h3 id="behaviors" tabindex="-1">Behaviors <a class="header-anchor" href="#behaviors" aria-label="Permalink to "Behaviors"">​</a></h3><p>Behaviors in Coalesce are to mutating data as data sources are to reading data. Defining a behaviors class for a model allows complete control over the way that Coalesce will create, update, and delete your application's data in response to requests made through its generated API. Read <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> to learn more.</p>',19),i=[s];function n(l,d,c,h,m,u){return t(),a("div",null,i)}const b=e(r,[["render",n]]);export{f as __pageData,b as default}; diff --git a/assets/modeling_model-types_entities.md.4anHzKSX.lean.js b/assets/modeling_model-types_entities.md.4anHzKSX.lean.js new file mode 100644 index 000000000..a746c0685 --- /dev/null +++ b/assets/modeling_model-types_entities.md.4anHzKSX.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Entity Models","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/entities.md","filePath":"modeling/model-types/entities.md"}'),r={name:"modeling/model-types/entities.md"},s=o("",19),i=[s];function n(l,d,c,h,m,u){return t(),a("div",null,i)}const b=e(r,[["render",n]]);export{f as __pageData,b as default}; diff --git a/assets/modeling_model-types_external-types.md.CRyS6x6A.js b/assets/modeling_model-types_external-types.md.CRyS6x6A.js new file mode 100644 index 000000000..43f2d2236 --- /dev/null +++ b/assets/modeling_model-types_external-types.md.CRyS6x6A.js @@ -0,0 +1,41 @@ +import{_ as s,c as a,o as n,a7 as l}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"External Types","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/external-types.md","filePath":"modeling/model-types/external-types.md"}'),e={name:"modeling/model-types/external-types.md"},p=l(`<h1 id="external-types" tabindex="-1">External Types <a class="header-anchor" href="#external-types" aria-label="Permalink to "External Types"">​</a></h1><p>In Coalesce, any type which is connected to your data model but is not directly part of it is considered to be an "external type".</p><p>The collection of external types for a data model looks like this:</p><ol><li>Take all of the api-served types in your data model. This includes <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>.</li><li>Take all of the property types, method parameters, and method return types of these types.</li><li>Any of these types which are not built-in scalar types and not one of the aforementioned api-served types are external types.</li><li>For any external type discovered, any of the property types which qualify under the above rules are also external types.</li></ol><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Be careful when using types that you do not own for properties and method returns in your data model. When Coalesce generates external type ViewModels and DTOs, it will not stop until it has exhausted all paths that can be reached by following public property types and method returns.</p><p>In general, you should only expose types that you have created so that you will always have full control over them. Mark any properties you don't wish to expose with <a href="/Coalesce/modeling/model-components/attributes/internal-use.html">[InternalUse]</a>, or make those members non-public.</p></div><h2 id="generated-code" tabindex="-1">Generated Code <a class="header-anchor" href="#generated-code" aria-label="Permalink to "Generated Code"">​</a></h2><p>For each external type found in your application's model, Coalesce will generate:</p><ul><li>A <a href="/Coalesce/stacks/agnostic/dtos.html">Generated DTO</a></li><li>A <a href="/Coalesce/stacks/vue/layers/models.html">TypeScript Model</a></li></ul><h2 id="example-data-model" tabindex="-1">Example Data Model <a class="header-anchor" href="#example-data-model" aria-label="Permalink to "Example Data Model"">​</a></h2><p>For example, in the following scenario, the following classes are considered as external types:</p><ul><li><code>PluginMetadata</code>, exposed through a getter-only property on <code>ApplicationPlugin</code>.</li><li><code>PluginResult</code>, exposed through a method return on <code>ApplicationPlugin</code>.</li></ul><p><code>PluginHandler</code> is not because it not exposed by the model, neither directly nor through any of the other external types.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DbSet</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Application</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Applications</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DbSet</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ApplicationPlugin</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">ApplicationPlugins</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Application</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ApplicationId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ApplicationPlugin</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Plugins</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> ApplicationPlugin</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ApplicationPluginId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ApplicationId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Application</span><span style="color:#9CDCFE;"> Application</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> TypeName</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#4EC9B0;"> PluginHandler</span><span style="color:#DCDCAA;"> GetInstance</span><span style="color:#D4D4D4;">() => </span></span> +<span class="line"><span style="color:#D4D4D4;"> ((</span><span style="color:#4EC9B0;">PluginHandler</span><span style="color:#D4D4D4;">)</span><span style="color:#9CDCFE;">Activator</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">CreateInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Type</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetType</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">TypeName</span><span style="color:#D4D4D4;">)));</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> PluginMetadata</span><span style="color:#9CDCFE;"> Metadata</span><span style="color:#D4D4D4;"> => </span><span style="color:#DCDCAA;">GetInstance</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">GetMetadata</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> PluginResult</span><span style="color:#DCDCAA;"> Invoke</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> action</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> data</span><span style="color:#D4D4D4;">) => </span><span style="color:#DCDCAA;">GetInstance</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">Invoke</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Application</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">action</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">data</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> abstract</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PluginHandler</span><span style="color:#D4D4D4;"> { </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> abstract</span><span style="color:#4EC9B0;"> PluginMetadata</span><span style="color:#DCDCAA;"> GetMetadata</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> abstract</span><span style="color:#4EC9B0;"> PluginResult</span><span style="color:#DCDCAA;"> Invoke</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Application</span><span style="color:#9CDCFE;"> app</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> action</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> data</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> abstract</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PluginMetadata</span><span style="color:#D4D4D4;"> { </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">Actions</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> abstract</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PluginResult</span><span style="color:#D4D4D4;"> { </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> Success</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Message</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="loading-serialization" tabindex="-1">Loading & Serialization <a class="header-anchor" href="#loading-serialization" aria-label="Permalink to "Loading & Serialization"">​</a></h2><p>External types have slightly different behavior when undergoing serialization to be sent to the client. Unlike database-mapped types which are subject to the rules of <a href="/Coalesce/concepts/include-tree.html">Include Tree</a>, external types ignore the Include Tree when being mapped to DTOs for serialization. Read <a href="/Coalesce/concepts/include-tree.html#external-type-caveats">External Type Caveats</a> for a more detailed explanation of this exception.</p>`,15),o=[p];function t(c,r,D,y,i,C){return n(),a("div",null,o)}const h=s(e,[["render",t]]);export{u as __pageData,h as default}; diff --git a/assets/modeling_model-types_external-types.md.CRyS6x6A.lean.js b/assets/modeling_model-types_external-types.md.CRyS6x6A.lean.js new file mode 100644 index 000000000..45296f638 --- /dev/null +++ b/assets/modeling_model-types_external-types.md.CRyS6x6A.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as l}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"External Types","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/external-types.md","filePath":"modeling/model-types/external-types.md"}'),e={name:"modeling/model-types/external-types.md"},p=l("",15),o=[p];function t(c,r,D,y,i,C){return n(),a("div",null,o)}const h=s(e,[["render",t]]);export{u as __pageData,h as default}; diff --git a/assets/modeling_model-types_services.md.DQfWD0nS.js b/assets/modeling_model-types_services.md.DQfWD0nS.js new file mode 100644 index 000000000..1bab3bfe6 --- /dev/null +++ b/assets/modeling_model-types_services.md.DQfWD0nS.js @@ -0,0 +1,41 @@ +import{_ as s,c as e,o as a,a7 as n}from"./chunks/framework.BkavzUpE.js";const h=JSON.parse('{"title":"Services","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/services.md","filePath":"modeling/model-types/services.md"}'),o={name:"modeling/model-types/services.md"},l=n(`<h1 id="services" tabindex="-1">Services <a class="header-anchor" href="#services" aria-label="Permalink to "Services"">​</a></h1><p>In a Coalesce application, you are likely to end up with a need for some API endpoints that aren't closely tied with your regular data model. While you could stick <a href="/Coalesce/modeling/model-components/methods.html#static-methods">Static Methods</a> on one of your entities, to do so is detrimental to the organization of your code.</p><p>Instead, Coalesce allows you to generate API Controllers and a TypeScript client from a service. A service, in this case, is nothing more than a C# class or an interface with methods on it, annotated with <code>[Coalesce, Service]</code>. An implementation of this class or interface must be injectable from your application's service container, so a registration in Program.cs is needed.</p><p>The instance methods of these services work just like other custom <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> in Coalesce, with one notable distinction: Instance methods don't operate on an instance of a model, but instead on a dependency injected instance of the service.</p><h2 id="generated-code" tabindex="-1">Generated Code <a class="header-anchor" href="#generated-code" aria-label="Permalink to "Generated Code"">​</a></h2><p>For each external type found in your application's model, Coalesce will generate:</p><ul><li>An API controller with endpoints that correspond to the service's instance methods.</li><li>A TypeScript client containing the members outlined in <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> for invoking these endpoints.</li></ul><h2 id="example-service" tabindex="-1">Example Service <a class="header-anchor" href="#example-service" aria-label="Permalink to "Example Service"">​</a></h2><p>An example of a service might look something like this:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Service</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> interface</span><span style="color:#4EC9B0;"> IWeatherService</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#4EC9B0;"> WeatherData</span><span style="color:#DCDCAA;"> GetWeather</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> zipCode</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>With an implementation:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> WeatherService</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">IWeatherService</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> WeatherService</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> WeatherData</span><span style="color:#DCDCAA;"> GetWeather</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> zipCode</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Assuming some magic HttpGet method that works as follows...</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">HttpGet</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"http://www.example.com/api/weather/"</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">zipCode</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Body</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SerializeTo</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">WeatherData</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // This method is not exposed because it is not defined on the interface</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> MethodThatIsNotExposed</span><span style="color:#D4D4D4;">() { }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>And a registration:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// In Program.cs</span></span> +<span class="line"><span style="color:#9CDCFE;">builder</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#9CDCFE;">builder</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddScoped</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">IWeatherService</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">WeatherService</span><span style="color:#D4D4D4;">>();</span></span></code></pre></div><h2 id="using-interfaces-with-services" tabindex="-1">Using Interfaces With Services <a class="header-anchor" href="#using-interfaces-with-services" aria-label="Permalink to "Using Interfaces With Services"">​</a></h2><p>Interfaces annotated with <code>[Coalesce, Service]</code> will automatically expose all methods on that interface. Your interfaces should precisely define the service you intend to expose through Coalesce. Any members you do not want to expose should not be included in the interface.</p><p>Although it is not required to use an interface (you can generate endpoints directly from the implementation), it is highly recommended. Interfaces improve testability and reduce the risk of inadvertently changing the signature of a published API.</p><p>If you choose to generate directly from the implementation, annotate the class itself with <code>[Coalesce, Service]</code> rather than the interface. Unlike interfaces, each method you want to expose on the class must be explicitly annotated with the <code>[Coalesce]</code> attribute.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Service</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> WeatherService</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> WeatherService</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">db</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> WeatherData</span><span style="color:#DCDCAA;"> GetWeather</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> zipCode</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Assuming some magic HttpGet method that works as follows...</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">HttpGet</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"http://www.example.com/api/weather/"</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">zipCode</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Body</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SerializeTo</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">WeatherData</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // This method is not exposed because it lacks the [Coalesce] attribute</span></span> +<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> MethodThatIsNotExposed</span><span style="color:#D4D4D4;">() { }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,19),p=[l];function t(c,r,i,D,y,d){return a(),e("div",null,p)}const m=s(o,[["render",t]]);export{h as __pageData,m as default}; diff --git a/assets/modeling_model-types_services.md.DQfWD0nS.lean.js b/assets/modeling_model-types_services.md.DQfWD0nS.lean.js new file mode 100644 index 000000000..ddbe6d771 --- /dev/null +++ b/assets/modeling_model-types_services.md.DQfWD0nS.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as a,a7 as n}from"./chunks/framework.BkavzUpE.js";const h=JSON.parse('{"title":"Services","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/services.md","filePath":"modeling/model-types/services.md"}'),o={name:"modeling/model-types/services.md"},l=n("",19),p=[l];function t(c,r,i,D,y,d){return a(),e("div",null,p)}const m=s(o,[["render",t]]);export{h as __pageData,m as default}; diff --git a/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.js b/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.js new file mode 100644 index 000000000..879765194 --- /dev/null +++ b/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.js @@ -0,0 +1,147 @@ +import{_ as s,c as a,o as n,a7 as l}from"./chunks/framework.BkavzUpE.js";const d=JSON.parse('{"title":"Standalone Entities","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/standalone-entities.md","filePath":"modeling/model-types/standalone-entities.md"}'),p={name:"modeling/model-types/standalone-entities.md"},o=l(`<h1 id="standalone-entities" tabindex="-1">Standalone Entities <a class="header-anchor" href="#standalone-entities" aria-label="Permalink to "Standalone Entities"">​</a></h1><p>In Coalesce, Standalone Entities are types that behave like <a href="./entities.html">entity types</a> (they can support the full suite of generated CRUD API endpoints), but are not required to be based on Entity Framework. These types are discovered by Coalesce by annotating them with <code>[Coalesce, StandaloneEntity]</code>.</p><p>For these types, you must define at least one custom <a href="/Coalesce/modeling/model-components/data-sources.html">Data Source</a>, and optionally a <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> class as well. If no behaviors are defined, the type is implicitly read-only, equivalent to turning off create/edit/delete via the <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>.</p><h2 id="read-only-with-ef-backing-store" tabindex="-1">Read-only with EF backing store <a class="header-anchor" href="#read-only-with-ef-backing-store" aria-label="Permalink to "Read-only with EF backing store"">​</a></h2><p>In the below example, the standalone entity <code>PageListing</code> is used as a lightweight, read-only representation of a <code>Page</code> EF entity, with some properties omitted for performance (<code>Content</code>) and other properties simplified (<code>Author</code>).</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneEntity</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PageListing</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SearchMethod</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SearchAttribute</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">SearchMethods</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Contains</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">ListText</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; } = </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">OrderByDirections</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Descending</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> Date</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Author</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DefaultSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">>> </span><span style="color:#DCDCAA;">GetQueryAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Pages</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">IsPublished</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> PageListing</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> DateModified</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Date</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> Author</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedBy</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">FullName</span></span> +<span class="line"><span style="color:#D4D4D4;"> });</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// EF entity model</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Page</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Title</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> DateModified</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Content</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> IsPublished</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> CreatedById</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> User</span><span style="color:#9CDCFE;"> CreatedBy</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="read-write-with-ef-backing-store" tabindex="-1">Read/write with EF backing store <a class="header-anchor" href="#read-write-with-ef-backing-store" aria-label="Permalink to "Read/write with EF backing store"">​</a></h2><p>Building on the previous example, we can make the <code>Title</code> of a <code>PageListing</code> editable as follows:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneEntity</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PageListing</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // properties and data source same as previous example.</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Behaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteSaveAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">SaveKind</span><span style="color:#9CDCFE;"> kind</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">PageListing</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Note: \`page\` is guaranteed to exist here because the \`PageListing item\` instance</span></span> +<span class="line"><span style="color:#6A9955;"> // is a projection from the Page table and was loaded from the type's data source </span></span> +<span class="line"><span style="color:#6A9955;"> // immediately before ExecuteSaveAsync was called.</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Pages</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FindAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">)!;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Perform mapping of properties that should be savable, from \`item\` to the backing entity.</span></span> +<span class="line"><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SaveChangesAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteDeleteAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">) => </span><span style="color:#C586C0;">throw</span><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> NotSupportedException</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>To add support for creates or deletes, implement the additional necessary actions in the overridden methods on the behaviors, and remove the DenyAll attributes.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneEntity</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PageListing</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // properties and data source same as previous example.</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Behaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteSaveAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">SaveKind</span><span style="color:#9CDCFE;"> kind</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">PageListing</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">PageListing</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#4EC9B0;"> Page</span><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">kind</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">SaveKind</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Create</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Add</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">page</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> Page</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">() });</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#C586C0;"> else</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Pages</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FindAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">)!;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SaveChangesAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Propagate the new primary key back to the standalone entity instance </span></span> +<span class="line"><span style="color:#6A9955;"> // (in case this was a Create action instead of an Update).</span></span> +<span class="line"><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">page</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteDeleteAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">PageListing</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> page</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Pages</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FindAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">)!;</span></span> +<span class="line"><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Remove</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">page</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DbContext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SaveChangesAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="read-only-without-ef" tabindex="-1">Read-only without EF <a class="header-anchor" href="#read-only-without-ef" aria-label="Permalink to "Read-only without EF"">​</a></h2><p>Standalone entities can be created with <em>any</em> kind of backing store you can imagine - an in-memory store, a Redis instance, or an external REST API, for example.</p><p>The below example is admittedly contrived, as it is unlikely that you would be using an in-memory collection as a data persistence mechanism. A more likely real-world scenario would be to dependency inject an interface to some other data store.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneEntity</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> StandaloneExample</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Search</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SearchMethod</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">SearchAttribute</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">SearchMethods</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Contains</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">ListText</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; } = </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultOrderBy</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> Date</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> nextId</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> ConcurrentDictionary</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">backingStore</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> ConcurrentDictionary</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DefaultSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">>> </span><span style="color:#DCDCAA;">GetQueryAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">Task</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FromResult</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">backingStore</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Values</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AsQueryable</span><span style="color:#D4D4D4;">());</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="read-write-without-ef" tabindex="-1">Read/write without EF <a class="header-anchor" href="#read-write-without-ef" aria-label="Permalink to "Read/write without EF"">​</a></h2><p>Building on the previous example, we can add support for saves and deletes by adding a Behaviors implementation:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneEntity</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> StandaloneExample</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // properties and data source same as previous example.</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Behaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteDeleteAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> backingStore</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">TryRemove</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">out</span><span style="color:#9CDCFE;"> _</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> Task</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CompletedTask</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> ExecuteSaveAsync</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">SaveKind</span><span style="color:#9CDCFE;"> kind</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">StandaloneExample</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">kind</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">SaveKind</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Create</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Interlocked</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Increment</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">ref</span><span style="color:#9CDCFE;"> nextId</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;"> backingStore</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">TryAdd</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#C586C0;"> else</span><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">backingStore</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">TryGetValue</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Id</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">out</span><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> storeItem</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> storeItem</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Name</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Name</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> storeItem</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Date</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Date</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> Task</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CompletedTask</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,18),e=[o];function t(D,c,r,y,C,i){return n(),a("div",null,e)}const F=s(p,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.lean.js b/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.lean.js new file mode 100644 index 000000000..9891a1f8f --- /dev/null +++ b/assets/modeling_model-types_standalone-entities.md.DdXeY2JZ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as l}from"./chunks/framework.BkavzUpE.js";const d=JSON.parse('{"title":"Standalone Entities","description":"","frontmatter":{},"headers":[],"relativePath":"modeling/model-types/standalone-entities.md","filePath":"modeling/model-types/standalone-entities.md"}'),p={name:"modeling/model-types/standalone-entities.md"},o=l("",18),e=[o];function t(D,c,r,y,C,i){return n(),a("div",null,e)}const F=s(p,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/security-overview.DKJVSAfO.jpg b/assets/security-overview.DKJVSAfO.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a220e06ddad0d825738fdeb917b870a21ccdf4a GIT binary patch literal 247035 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 WgjbGZjE})mwTLQGU6ecP+vHzRO+oPh literal 0 HcmV?d00001 diff --git a/assets/stacks_agnostic_dtos.md.CupGMBl4.js b/assets/stacks_agnostic_dtos.md.CupGMBl4.js new file mode 100644 index 000000000..0b6d87b94 --- /dev/null +++ b/assets/stacks_agnostic_dtos.md.CupGMBl4.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as s}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"DTOs","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/dtos.md","filePath":"stacks/agnostic/dtos.md"}'),o={name:"stacks/agnostic/dtos.md"},r=s('<h1 id="dtos" tabindex="-1">DTOs <a class="header-anchor" href="#dtos" aria-label="Permalink to "DTOs"">​</a></h1><p>Data Transfer Objects, or DTOs, allow for transformations of data from the data store into a format more suited for transfer and use on the client side. This often means trimming properties and flattening structures to provide a leaner over-the-wire experience. Coalesce aims to support this as seamlessly as possible.</p><p>Coalesce supports two types of DTOs:</p><ul><li><a href="#automatically-generated-dtos">Generated DTOs</a>, created by Coalesce's code generator for each <a href="/Coalesce/modeling/model-types/entities.html">entity model</a>, <a href="/Coalesce/modeling/model-types/standalone-entities.html">standalone entity</a>, and <a href="/Coalesce/modeling/model-types/external-types.html">external type</a>.</li><li><a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, which are created manually by you, the developer.</li></ul><h2 id="automatically-generated-dtos" tabindex="-1">Automatically Generated DTOs <a class="header-anchor" href="#automatically-generated-dtos" aria-label="Permalink to "Automatically Generated DTOs"">​</a></h2><p>Every class that is exposed through Coalesce's generated API will have a corresponding DTO generated for it. These DTOs are used to shuttle data back and forth to the client. They are generated classes that have nullable versions of all the properties on the POCO class.</p><p>The <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">[Read], [Edit], and [Restrict] attributes</a> can be used to apply property-level security, which manifests as conditional logic in the mapping methods on the generated DTOs. These attributes are enforced in the mapping operations to and from the generated DTO.</p><p>See the <a href="/Coalesce/topics/security.html#property-column-security">Security</a> page to read more about property-level security, as well as all other security mechanisms in Coalesce.</p><p><a href="/Coalesce/modeling/model-components/attributes/dto-includes-excludes.html">[DtoIncludes] & [DtoExcludes]</a> can be used to indicate which properties should be transferred to the client in which cases, and <a href="/Coalesce/concepts/include-tree.html">Include Trees</a> are used to dictate how these DTOs are shaped when mapping from your domain objects. Do note that these are not security features.</p>',9),n=[r];function l(i,c,d,h,p,m){return a(),t("div",null,n)}const y=e(o,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/stacks_agnostic_dtos.md.CupGMBl4.lean.js b/assets/stacks_agnostic_dtos.md.CupGMBl4.lean.js new file mode 100644 index 000000000..d9da9c00c --- /dev/null +++ b/assets/stacks_agnostic_dtos.md.CupGMBl4.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as s}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"DTOs","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/dtos.md","filePath":"stacks/agnostic/dtos.md"}'),o={name:"stacks/agnostic/dtos.md"},r=s("",9),n=[r];function l(i,c,d,h,p,m){return a(),t("div",null,n)}const y=e(o,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/stacks_agnostic_generation.md.BSeflgOu.js b/assets/stacks_agnostic_generation.md.BSeflgOu.js new file mode 100644 index 000000000..2392c191a --- /dev/null +++ b/assets/stacks_agnostic_generation.md.BSeflgOu.js @@ -0,0 +1,18 @@ +import{_ as e,c as o,o as a,a7 as s}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Code Generation Overview","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/generation.md","filePath":"stacks/agnostic/generation.md"}'),n={name:"stacks/agnostic/generation.md"},t=s(`<h1 id="code-generation-overview" tabindex="-1">Code Generation Overview <a class="header-anchor" href="#code-generation-overview" aria-label="Permalink to "Code Generation Overview"">​</a></h1><p>Coalesce's principal purpose is a code generation framework for automating the creation of the boring-but-necessary parts of a web application. Below, you find an overview of the different components of Coalesce's code generation features.</p><h2 id="running-code-generation" tabindex="-1">Running Code Generation <a class="header-anchor" href="#running-code-generation" aria-label="Permalink to "Running Code Generation"">​</a></h2><p>Coalesce's code generation is ran via a dotnet CLI tool, <code>dotnet coalesce</code>. In order to invoke this tool, you must have the appropriate references to the package that provides it in your .csproj file:</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">Project</span><span style="color:#9CDCFE;"> Sdk</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Microsoft.NET.Sdk.Web"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PropertyGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">TargetFramework</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">net8.0</span><span style="color:#808080;"></</span><span style="color:#569CD6;">TargetFramework</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> <!-- Necessary to use DotNetCliToolReference with modern framework versions --></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">DotnetCliToolTargetFramework</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">net8.0</span><span style="color:#808080;"></</span><span style="color:#569CD6;">DotnetCliToolTargetFramework</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">PropertyGroup</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PackageReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"..."</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">DotNetCliToolReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce.Tools"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"..."</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">Project</span><span style="color:#808080;">></span></span></code></pre></div><h3 id="cli-options" tabindex="-1">CLI Options <a class="header-anchor" href="#cli-options" aria-label="Permalink to "CLI Options"">​</a></h3><p>All configuration of the way that Coalesce interacts with your projects, including locating, analyzing, and producing generated code, is done in a json configuration file, <code>coalesce.json</code>. Read more about this file at <a href="/Coalesce/topics/coalesce-json.html">Code Generation Configuration</a>.</p><p>There are a couple of extra options which are only available as CLI parameters to <code>dotnet coalesce</code>. These options do not affect the behavior of the code generation - only the behavior of the CLI itself.</p><ul><li><code><configFile></code> - First positional parameter. Path to the <code>coalesce.json</code> configuration file. If not specified, will search upwards from the current folder for a file named <code>coalesce.json</code>.</li><li><code>--debug</code> - When this flag is specified when running <code>dotnet coalesce</code>, Coalesce will wait for a debugger to be attached to its process before starting code generation.</li><li><code>--what-if|-WhatIf</code> - Runs all code generation, but does not make changes to disk.</li><li><code>--verify</code> - Assert that the code generation does not have any pending changes to its output. Useful in CI builds when combined with <code>--what-if</code> to ensure that developers haven't forgotten to run code gen before committing changes.</li><li><code>-v|--verbosity <level></code> - Set the verbosity of the output. Options are <code>trace</code>, <code>debug</code>, <code>information</code>, <code>warning</code>, <code>error</code>, <code>critical</code>, and <code>none</code>.</li></ul><h2 id="generated-code" tabindex="-1">Generated Code <a class="header-anchor" href="#generated-code" aria-label="Permalink to "Generated Code"">​</a></h2><p>Coalesce will generate a full vertical stack of code for you:</p><h3 id="backend-c" tabindex="-1">Backend C# <a class="header-anchor" href="#backend-c" aria-label="Permalink to "Backend C#"">​</a></h3><h4 id="api-controllers" tabindex="-1">API Controllers <a class="header-anchor" href="#api-controllers" aria-label="Permalink to "API Controllers"">​</a></h4><p>For each of your <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>, <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, and <a href="/Coalesce/modeling/model-types/services.html">Services</a>, an API controller is created in the <code>/Api/Generated</code> directory of your web project. These controllers provide a number of endpoints for interacting with your data.</p><p>These controllers can be secured at a high level using <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>, and when applicable to the type, with <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> and <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a>.</p><h4 id="c-dtos" tabindex="-1">C# DTOs <a class="header-anchor" href="#c-dtos" aria-label="Permalink to "C# DTOs"">​</a></h4><p>For each of your <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>, a C# DTO class is created. These classes are used to hold the data that will be serialized and sent to the client, as well as data that has been received from the client before it has been mapped back to your EF POCO class.</p><p>See <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a> for more information.</p><h3 id="frontend-vue" tabindex="-1">Frontend - Vue <a class="header-anchor" href="#frontend-vue" aria-label="Permalink to "Frontend - Vue"">​</a></h3><p>An overview of the Vue generated code can be found at <a href="/Coalesce/stacks/vue/overview.html">Vue Overview</a>.</p>`,20),l=[t];function r(c,i,p,d,h,u){return a(),o("div",null,l)}const g=e(n,[["render",r]]);export{f as __pageData,g as default}; diff --git a/assets/stacks_agnostic_generation.md.BSeflgOu.lean.js b/assets/stacks_agnostic_generation.md.BSeflgOu.lean.js new file mode 100644 index 000000000..37c0fcf99 --- /dev/null +++ b/assets/stacks_agnostic_generation.md.BSeflgOu.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as a,a7 as s}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Code Generation Overview","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/generation.md","filePath":"stacks/agnostic/generation.md"}'),n={name:"stacks/agnostic/generation.md"},t=s("",20),l=[t];function r(c,i,p,d,h,u){return a(),o("div",null,l)}const g=e(n,[["render",r]]);export{f as __pageData,g as default}; diff --git a/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.js b/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.js new file mode 100644 index 000000000..14fdb829c --- /dev/null +++ b/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const h=JSON.parse('{"title":"Data Modeling","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/getting-started-modeling.md","filePath":"stacks/agnostic/getting-started-modeling.md"}'),n={name:"stacks/agnostic/getting-started-modeling.md"},i=a('<h1 id="data-modeling" tabindex="-1">Data Modeling <a class="header-anchor" href="#data-modeling" aria-label="Permalink to "Data Modeling"">​</a></h1><p>At this point, you can open up the newly-created solution in Visual Studio and run your application. However, your application won't do much without a data model, so you will probably want to do the following:</p><ul><li><p>Create an initial <a href="/Coalesce/modeling/model-types/entities.html">Data Model</a> by adding EF entity classes to the data project and the corresponding <code>DbSet<></code> properties to <code>AppDbContext</code>. You will notice that the starter project includes a single model, <code>Widget</code>, to start with. Feel free to change this model or remove it entirely. Read <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> for more information about creating a data model.</p></li><li><p>Run <code>dotnet ef migrations add Init</code> (Init can be any name) in the data project to create an initial database migration.</p></li><li><p>Run Coalesce's code generation by either:</p><ul><li>Running <code>dotnet coalesce</code> in the web project's root directory (<code>dotnet restore</code> first if you get an error about "command or file was not found").</li><li>Running the <code>coalesce</code> npm script in the Task Runner Explorer, or in a terminal with <code>npm run coalesce</code>.</li></ul></li></ul><p>You're now at a point where you can start creating your own pages!</p>',4),d=[i];function r(l,c,s,p,g,u){return o(),t("div",null,d)}const _=e(n,[["render",r]]);export{h as __pageData,_ as default}; diff --git a/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.lean.js b/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.lean.js new file mode 100644 index 000000000..44227f5ac --- /dev/null +++ b/assets/stacks_agnostic_getting-started-modeling.md.C_tRTIWZ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const h=JSON.parse('{"title":"Data Modeling","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/agnostic/getting-started-modeling.md","filePath":"stacks/agnostic/getting-started-modeling.md"}'),n={name:"stacks/agnostic/getting-started-modeling.md"},i=a("",4),d=[i];function r(l,c,s,p,g,u){return o(),t("div",null,d)}const _=e(n,[["render",r]]);export{h as __pageData,_ as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.js new file mode 100644 index 000000000..4a85e3a88 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.js @@ -0,0 +1,14 @@ +import{_ as n,c as t,I as o,a7 as l,l as a,a as e,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"c-admin-audit-log-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md"},r=l(`<h1 id="c-admin-audit-log-page" tabindex="-1">c-admin-audit-log-page <a class="header-anchor" href="#c-admin-audit-log-page" aria-label="Permalink to "c-admin-audit-log-page"">​</a></h1><p>A full-featured page for interacting with Coalesce's <a href="/Coalesce/topics/audit-logging.html">Audit Logging</a>. Presents a view similar to <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a> with content optimized for viewing audit log records. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminAuditLogPage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify3'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> router</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> Router</span><span style="color:#D4D4D4;">({</span></span> +<span class="line"><span style="color:#6A9955;"> // ...</span></span> +<span class="line"><span style="color:#9CDCFE;"> routes:</span><span style="color:#D4D4D4;"> [</span></span> +<span class="line"><span style="color:#6A9955;"> // ... other routes</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> path:</span><span style="color:#CE9178;"> '/admin/audit-logs'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> component:</span><span style="color:#9CDCFE;"> CAdminAuditLogPage</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> props:</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> type:</span><span style="color:#CE9178;"> 'AuditLog'</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"><span style="color:#D4D4D4;"> ]</span></span> +<span class="line"><span style="color:#D4D4D4;">})</span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,5),d=a("p",null,[e("The PascalCase name of your "),a("code",null,"IAuditLog"),e(" implementation.")],-1),u=a("p",null,[e("An optional "),a("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" that will be used if provided instead of the one the component will create automatically from the provided "),a("code",null,"type"),e(" prop.")],-1),h=a("p",null,"A Vuetify color name to be applied to the toolbar at the top of the page.",-1),D=a("h2",{id:"slots",tabindex:"-1"},[e("Slots "),a("a",{class:"header-anchor",href:"#slots","aria-label":'Permalink to "Slots"'},"​")],-1),m=a("p",null,"A slot that can be used to replace the entire content of the Detail column on the page.",-1),g=a("p",null,"A slot that can be used to append additional content to the Detail column on the page.",-1);function y(_,f,C,v,A,b){const s=p("Prop");return c(),t("div",null,[r,o(s,{def:"type: string",lang:"ts"}),d,o(s,{def:"list?: ListViewModel",lang:"ts"}),u,o(s,{def:"color: string = 'primary'",lang:"ts"}),h,D,o(s,{def:"row-detail: { item: AuditLogViewModel }",lang:"ts"}),m,o(s,{def:"row-detail-append: { item: AuditLogViewModel }",lang:"ts"}),g])}const k=n(i,[["render",y]]);export{w as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.lean.js new file mode 100644 index 000000000..049c909d5 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md.Cekg3y3b.lean.js @@ -0,0 +1 @@ +import{_ as n,c as t,I as o,a7 as l,l as a,a as e,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"c-admin-audit-log-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.md"},r=l("",5),d=a("p",null,[e("The PascalCase name of your "),a("code",null,"IAuditLog"),e(" implementation.")],-1),u=a("p",null,[e("An optional "),a("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" that will be used if provided instead of the one the component will create automatically from the provided "),a("code",null,"type"),e(" prop.")],-1),h=a("p",null,"A Vuetify color name to be applied to the toolbar at the top of the page.",-1),D=a("h2",{id:"slots",tabindex:"-1"},[e("Slots "),a("a",{class:"header-anchor",href:"#slots","aria-label":'Permalink to "Slots"'},"​")],-1),m=a("p",null,"A slot that can be used to replace the entire content of the Detail column on the page.",-1),g=a("p",null,"A slot that can be used to append additional content to the Detail column on the page.",-1);function y(_,f,C,v,A,b){const s=p("Prop");return c(),t("div",null,[r,o(s,{def:"type: string",lang:"ts"}),d,o(s,{def:"list?: ListViewModel",lang:"ts"}),u,o(s,{def:"color: string = 'primary'",lang:"ts"}),h,D,o(s,{def:"row-detail: { item: AuditLogViewModel }",lang:"ts"}),m,o(s,{def:"row-detail-append: { item: AuditLogViewModel }",lang:"ts"}),g])}const k=n(i,[["render",y]]);export{w as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.js new file mode 100644 index 000000000..db91db027 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.js @@ -0,0 +1,8 @@ +import{_ as e,c as a,o as s,a7 as o}from"./chunks/framework.BkavzUpE.js";const D=JSON.parse('{"title":"c-admin-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md"}'),t={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md"},n=o(`<h1 id="c-admin-display" tabindex="-1">c-admin-display <a class="header-anchor" href="#c-admin-display" aria-label="Permalink to "c-admin-display"">​</a></h1><p>Behaves the same as <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>, except any collection navigation properties will be rendered as links to an admin list page, and any models will be rendered as a link to an admin item page.</p><p>Links for collections are resolved from <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a> with a route name of <code>coalesce-admin-list</code>, a <code>type</code> route param containing the name of the collection's type, and a query parameter <code>filter.<foreign key name></code> with a value of the primary key of the owner of the collection. This route is expected to resolve to a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a>, which is setup by default by the template outlined in <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started with Vue</a>.</p><p>Links for single models are resolved from <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a> with a route name of <code>coalesce-admin-item</code>, a <code>type</code> route param containing the name of the model's type, and a <code>id</code> route param containing the object's primary key. This route is expected to resolve to a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html">c-admin-editor-page</a>, which is setup by default by the template outlined in <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started with Vue</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;"><!-- Renders regularly as text: --></span></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"firstName"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"><!-- Renders as a link to an item: --></span></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"company"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"><!-- Renders as a link to a list: --></span></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"casesAssigned"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2><p>Same as <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>.</p><h2 id="slots" tabindex="-1">Slots <a class="header-anchor" href="#slots" aria-label="Permalink to "Slots"">​</a></h2><p>Same as <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>.</p>`,10),l=[n];function p(c,r,i,d,y,m){return s(),a("div",null,l)}const h=e(t,[["render",p]]);export{D as __pageData,h as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.lean.js new file mode 100644 index 000000000..c43cf3377 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md.CXEkndPQ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a7 as o}from"./chunks/framework.BkavzUpE.js";const D=JSON.parse('{"title":"c-admin-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md"}'),t={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-display.md"},n=o("",10),l=[n];function p(c,r,i,d,y,m){return s(),a("div",null,l)}const h=e(t,[["render",p]]);export{D as __pageData,h as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.js new file mode 100644 index 000000000..d863075d5 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.js @@ -0,0 +1,14 @@ +import{_ as o,c as t,I as n,a7 as l,l as e,a as s,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"c-admin-editor-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md"},i=l(`<h1 id="c-admin-editor-page" tabindex="-1">c-admin-editor-page <a class="header-anchor" href="#c-admin-editor-page" aria-label="Permalink to "c-admin-editor-page"">​</a></h1><p>A page for a creating/editing single <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> instance. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html">c-admin-editor</a> and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html">c-admin-methods</a> for the instance. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminEditorPage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify3'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> router</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> Router</span><span style="color:#D4D4D4;">({</span></span> +<span class="line"><span style="color:#6A9955;"> // ...</span></span> +<span class="line"><span style="color:#9CDCFE;"> routes:</span><span style="color:#D4D4D4;"> [</span></span> +<span class="line"><span style="color:#6A9955;"> // ... other routes</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> path:</span><span style="color:#CE9178;"> '/admin/:type/edit/:id?'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> name:</span><span style="color:#CE9178;"> 'coalesce-admin-item'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> component:</span><span style="color:#9CDCFE;"> CAdminEditorPage</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> props:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"><span style="color:#D4D4D4;"> ]</span></span> +<span class="line"><span style="color:#D4D4D4;">})</span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,5),d=e("p",null,"The PascalCase name of the type to be created/edited.",-1),m=e("p",null,[s("The primary key of the item being edited. If null or not provided, the page will be creating a new instance of the provided "),e("code",null,"type"),s(" instead.")],-1),u=e("p",null,[s("Controls whether auto-save is used for the item. If "),e("code",null,"auto"),s(" (the default), auto-saves are used as long as the type has no unsaved "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),s(".")],-1);function D(h,y,C,f,v,_){const a=p("Prop");return r(),t("div",null,[i,n(a,{def:"type: string",lang:"ts"}),d,n(a,{def:"id?: number | string",lang:"ts"}),m,n(a,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),u])}const P=o(c,[["render",D]]);export{E as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.lean.js new file mode 100644 index 000000000..ba82ac387 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md.CheGzyNt.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,I as n,a7 as l,l as e,a as s,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"c-admin-editor-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.md"},i=l("",5),d=e("p",null,"The PascalCase name of the type to be created/edited.",-1),m=e("p",null,[s("The primary key of the item being edited. If null or not provided, the page will be creating a new instance of the provided "),e("code",null,"type"),s(" instead.")],-1),u=e("p",null,[s("Controls whether auto-save is used for the item. If "),e("code",null,"auto"),s(" (the default), auto-saves are used as long as the type has no unsaved "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),s(".")],-1);function D(h,y,C,f,v,_){const a=p("Prop");return r(),t("div",null,[i,n(a,{def:"type: string",lang:"ts"}),d,n(a,{def:"id?: number | string",lang:"ts"}),m,n(a,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),u])}const P=o(c,[["render",D]]);export{E as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.js new file mode 100644 index 000000000..ff1dedda1 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.js @@ -0,0 +1 @@ +import{_ as s,c as t,I as n,a7 as l,l as e,a,D as c,o as r}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-editor","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md"},p=l('<h1 id="c-admin-editor" tabindex="-1">c-admin-editor <a class="header-anchor" href="#c-admin-editor" aria-label="Permalink to "c-admin-editor"">​</a></h1><p>An editor for a single <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> instance. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> for each property of the model.</p><p>Does not automatically enable <a href="/Coalesce/stacks/vue/layers/viewmodels.html">auto-save</a> - if desired, this must be enabled by the implementor of this component.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-editor</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),a(" to render an editor for.")],-1);function m(u,h,_,f,v,y){const o=c("Prop");return r(),t("div",null,[p,n(o,{def:"model: ViewModel | ListViewModel",lang:"ts"}),d])}const C=s(i,[["render",m]]);export{k as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.lean.js new file mode 100644 index 000000000..2700d5799 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md.CUq0AktO.lean.js @@ -0,0 +1 @@ +import{_ as s,c as t,I as n,a7 as l,l as e,a,D as c,o as r}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-editor","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.md"},p=l("",6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),a(" to render an editor for.")],-1);function m(u,h,_,f,v,y){const o=c("Prop");return r(),t("div",null,[p,n(o,{def:"model: ViewModel | ListViewModel",lang:"ts"}),d])}const C=s(i,[["render",m]]);export{k as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.js new file mode 100644 index 000000000..731680f1d --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.js @@ -0,0 +1 @@ +import{_ as s,c as l,I as t,a7 as n,l as e,a,D as c,o as r}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"c-admin-method","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md"}'),d={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md"},i=n('<h1 id="c-admin-method" tabindex="-1">c-admin-method <a class="header-anchor" href="#c-admin-method" aria-label="Permalink to "c-admin-method"">​</a></h1><p>Provides an interface for invoking a <a href="/Coalesce/modeling/model-components/methods.html">method</a> and rendering its result, designed to be use in an admin page.</p><p>For each parameter of a method, a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> will be rendered to accept the input of that parameter. A button is provided to trigger an invocation of the method, progress and errors are rendered with a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html">c-loader-status</a>, and results are rendered with <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-method</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"setTitle"</span><span style="color:#9CDCFE;"> auto-reload-model</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),p=e("p",null,"A metadata specifier for the method. One of:",-1),m=e("ul",null,[e("li",null,[a("A string with the name of the method belonging to "),e("code",null,"model"),a(".")]),e("li",null,"A direct reference to a method's metadata object."),e("li",null,"A string in dot-notation that starts with a type name and ending with a method name.")],-1),h=e("p",null,[a("An "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),a(" or "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" or "),e("a",{href:"/Coalesce/modeling/model-types/services.html#generated-code"},"ServiceViewModel"),a(" owning the method and "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(" that was specified by the "),e("code",null,"for"),a(" prop.")],-1),u=e("p",null,[a("True if the "),e("code",null,"model"),a(" should have its "),e("code",null,"$load"),a(" invoked after a successful invocation of the method.")],-1);function f(v,_,y,D,g,C){const o=c("Prop");return r(),l("div",null,[i,t(o,{def:"for: string | Method",lang:"ts"}),p,m,t(o,{def:"model: ViewModel | ListViewModel | ServiceViewModel",lang:"ts"}),h,t(o,{def:"autoReloadModel?: boolean = false",lang:"ts"}),u])}const b=s(d,[["render",f]]);export{w as __pageData,b as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.lean.js new file mode 100644 index 000000000..e078047d6 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md.CZeeeZRL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as l,I as t,a7 as n,l as e,a,D as c,o as r}from"./chunks/framework.BkavzUpE.js";const w=JSON.parse('{"title":"c-admin-method","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md"}'),d={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-method.md"},i=n("",6),p=e("p",null,"A metadata specifier for the method. One of:",-1),m=e("ul",null,[e("li",null,[a("A string with the name of the method belonging to "),e("code",null,"model"),a(".")]),e("li",null,"A direct reference to a method's metadata object."),e("li",null,"A string in dot-notation that starts with a type name and ending with a method name.")],-1),h=e("p",null,[a("An "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),a(" or "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" or "),e("a",{href:"/Coalesce/modeling/model-types/services.html#generated-code"},"ServiceViewModel"),a(" owning the method and "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(" that was specified by the "),e("code",null,"for"),a(" prop.")],-1),u=e("p",null,[a("True if the "),e("code",null,"model"),a(" should have its "),e("code",null,"$load"),a(" invoked after a successful invocation of the method.")],-1);function f(v,_,y,D,g,C){const o=c("Prop");return r(),l("div",null,[i,t(o,{def:"for: string | Method",lang:"ts"}),p,m,t(o,{def:"model: ViewModel | ListViewModel | ServiceViewModel",lang:"ts"}),h,t(o,{def:"autoReloadModel?: boolean = false",lang:"ts"}),u])}const b=s(d,[["render",f]]);export{w as __pageData,b as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.js new file mode 100644 index 000000000..e218b33e2 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.js @@ -0,0 +1 @@ +import{_ as l,c as t,I as o,a7 as n,l as e,a as s,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-methods","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md"},d=n('<h1 id="c-admin-methods" tabindex="-1">c-admin-methods <a class="header-anchor" href="#c-admin-methods" aria-label="Permalink to "c-admin-methods"">​</a></h1><p>Renders in a <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> <a href="https://vuetifyjs.com/en/components/expansion-panels/" target="_blank" rel="noreferrer">v-expansion-panels</a> a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html">c-admin-method</a> for each method on a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> or <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-methods</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> class</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"x"</span><span style="color:#9CDCFE;"> auto-reload-model</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-methods</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> auto-reload-model</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-methods</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">personList</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> auto-reload-model</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',7),i=e("p",null,[s("An "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),s(" or "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),s(" or "),e("a",{href:"/Coalesce/modeling/model-types/services.html#generated-code"},"ServiceViewModel"),s(" whose methods should each render as a "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html"},"c-admin-method"),s(".")],-1),m=e("p",null,[s("True if the "),e("code",null,"model"),s(" should have its "),e("code",null,"$load"),s(" invoked after a successful invocation of any method.")],-1);function h(u,D,y,v,C,f){const a=c("Prop");return p(),t("div",null,[d,o(a,{def:"model: ViewModel | ListViewModel",lang:"ts"}),i,o(a,{def:"autoReloadModel?: boolean = false",lang:"ts"}),m])}const g=l(r,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.lean.js new file mode 100644 index 000000000..4e1fcfb81 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md.AwHFHYrl.lean.js @@ -0,0 +1 @@ +import{_ as l,c as t,I as o,a7 as n,l as e,a as s,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-methods","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.md"},d=n("",7),i=e("p",null,[s("An "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ViewModel"),s(" or "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),s(" or "),e("a",{href:"/Coalesce/modeling/model-types/services.html#generated-code"},"ServiceViewModel"),s(" whose methods should each render as a "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html"},"c-admin-method"),s(".")],-1),m=e("p",null,[s("True if the "),e("code",null,"model"),s(" should have its "),e("code",null,"$load"),s(" invoked after a successful invocation of any method.")],-1);function h(u,D,y,v,C,f){const a=c("Prop");return p(),t("div",null,[d,o(a,{def:"model: ViewModel | ListViewModel",lang:"ts"}),i,o(a,{def:"autoReloadModel?: boolean = false",lang:"ts"}),m])}const g=l(r,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.js new file mode 100644 index 000000000..10b601d03 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.js @@ -0,0 +1,14 @@ +import{_ as o,c as t,I as n,a7 as l,l as e,a,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"c-admin-table-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md"},i=l(`<h1 id="c-admin-table-page" tabindex="-1">c-admin-table-page <a class="header-anchor" href="#c-admin-table-page" aria-label="Permalink to "c-admin-table-page"">​</a></h1><p>A full-featured page for interacting with a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html">c-admin-table</a> and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html">c-admin-methods</a> for the list. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminTablePage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify3'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> router</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> Router</span><span style="color:#D4D4D4;">({</span></span> +<span class="line"><span style="color:#6A9955;"> // ...</span></span> +<span class="line"><span style="color:#9CDCFE;"> routes:</span><span style="color:#D4D4D4;"> [</span></span> +<span class="line"><span style="color:#6A9955;"> // ... other routes</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> path:</span><span style="color:#CE9178;"> '/admin/:type'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> name:</span><span style="color:#CE9178;"> 'coalesce-admin-list'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> component:</span><span style="color:#9CDCFE;"> CAdminTablePage</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> props:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"><span style="color:#D4D4D4;"> ]</span></span> +<span class="line"><span style="color:#D4D4D4;">})</span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,5),d=e("p",null,"The PascalCase name of the type to be listed.",-1),m=e("p",null,[a("Controls whether auto-save is used for items when in edit mode. If "),e("code",null,"auto"),a(" (the default), auto-saves are used as long as the type has no "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),a(".")],-1),u=e("p",null,[a("An optional "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" that will be used if provided instead of the one the component will otherwise create automatically.")],-1);function D(h,y,C,f,v,_){const s=p("Prop");return c(),t("div",null,[i,n(s,{def:"type: string",lang:"ts"}),d,n(s,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),m,n(s,{def:"list?: ListViewModel",lang:"ts"}),u])}const P=o(r,[["render",D]]);export{g as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.lean.js new file mode 100644 index 000000000..1f5c8fd48 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md.5WfiKk12.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,I as n,a7 as l,l as e,a,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"c-admin-table-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.md"},i=l("",5),d=e("p",null,"The PascalCase name of the type to be listed.",-1),m=e("p",null,[a("Controls whether auto-save is used for items when in edit mode. If "),e("code",null,"auto"),a(" (the default), auto-saves are used as long as the type has no "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),a(".")],-1),u=e("p",null,[a("An optional "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" that will be used if provided instead of the one the component will otherwise create automatically.")],-1);function D(h,y,C,f,v,_){const s=p("Prop");return c(),t("div",null,[i,n(s,{def:"type: string",lang:"ts"}),d,n(s,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),m,n(s,{def:"list?: ListViewModel",lang:"ts"}),u])}const P=o(r,[["render",D]]);export{g as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.js new file mode 100644 index 000000000..4613d9a51 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.js @@ -0,0 +1 @@ +import{_ as t,c as l,I as s,a7 as n,l as e,a as o,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"c-admin-table-toolbar","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md"},i=n('<h1 id="c-admin-table-toolbar" tabindex="-1">c-admin-table-toolbar <a class="header-anchor" href="#c-admin-table-toolbar" aria-label="Permalink to "c-admin-table-toolbar"">​</a></h1><p>A full-featured toolbar for a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a> designed to be used on an admin page, including "Create" and "Reload" buttons, a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html">c-list-range-display</a>, a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html">c-list-page</a>, a search field, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html">c-list-filters</a>, and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html">c-list-page-size</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-table-toolbar</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">personList</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-table-toolbar</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">personList</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> color</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"pink"</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">:</span><span style="color:#9CDCFE;">editable</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">isEditable</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),d=e("p",null,[o("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),o(" to render the toolbar for.")],-1),u=e("p",null,[o("The "),e("a",{href:"https://vuetifyjs.com/en/styles/colors/",target:"_blank",rel:"noreferrer"},"color"),o(" of the toolbar.")],-1),D=e("p",null,"If provided, adds a button to toggle editing state. Should be two-way bound with v-model.",-1);function m(y,b,h,f,v,_){const a=c("Prop");return p(),l("div",null,[i,s(a,{def:"list: ListViewModel",lang:"ts"}),d,s(a,{def:"color: string = 'primary'",lang:"ts"}),u,s(a,{def:"editable?: boolean",lang:"ts"}),s(a,{def:"'update:editable'?: (boolean: $event) => void",lang:"ts"}),D])}const k=t(r,[["render",m]]);export{g as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.lean.js new file mode 100644 index 000000000..c2f070313 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md.DVzTVuuC.lean.js @@ -0,0 +1 @@ +import{_ as t,c as l,I as s,a7 as n,l as e,a as o,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const g=JSON.parse('{"title":"c-admin-table-toolbar","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.md"},i=n("",6),d=e("p",null,[o("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),o(" to render the toolbar for.")],-1),u=e("p",null,[o("The "),e("a",{href:"https://vuetifyjs.com/en/styles/colors/",target:"_blank",rel:"noreferrer"},"color"),o(" of the toolbar.")],-1),D=e("p",null,"If provided, adds a button to toggle editing state. Should be two-way bound with v-model.",-1);function m(y,b,h,f,v,_){const a=c("Prop");return p(),l("div",null,[i,s(a,{def:"list: ListViewModel",lang:"ts"}),d,s(a,{def:"color: string = 'primary'",lang:"ts"}),u,s(a,{def:"editable?: boolean",lang:"ts"}),s(a,{def:"'update:editable'?: (boolean: $event) => void",lang:"ts"}),D])}const k=t(r,[["render",m]]);export{g as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.js new file mode 100644 index 000000000..05179e347 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as s,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-table","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md"},d=n('<h1 id="c-admin-table" tabindex="-1">c-admin-table <a class="header-anchor" href="#c-admin-table" aria-label="Permalink to "c-admin-table"">​</a></h1><p>An full-featured table for a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>, including a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html">c-admin-table-toolbar</a>, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-table.html">c-table</a>, and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html">c-list-pagination</a>.</p><p>The table can be in read mode (default), or toggled into edit mode with the button provided by the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html">c-admin-table-toolbar</a>. When placed into edit mode, <a href="/Coalesce/stacks/vue/layers/viewmodels.html">auto-save</a> is enabled.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-admin-table</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">personList</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),p=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" to render a table for.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through the "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html"},"c-list-pagination"),a("'s "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(" component. Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1),m=e("p",null,[a("Controls whether auto-save is used for items when in edit mode. If "),e("code",null,"auto"),a(" (the default), auto-saves are used as long as the type has no "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),a(".")],-1),h=e("p",null,[a("If true, the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" of the provided "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(` will be read from and written to the window's query string. The "Editable" state of the table will also be bound to the query string.`)],-1);function f(v,b,_,y,g,C){const t=c("Prop");return i(),l("div",null,[d,s(t,{def:"list: ListViewModel",lang:"ts"}),p,s(t,{def:"pageSizes?: number[]",lang:"ts"}),u,s(t,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),m,s(t,{def:"queryBind?: boolean",lang:"ts"}),h])}const w=o(r,[["render",f]]);export{k as __pageData,w as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.lean.js new file mode 100644 index 000000000..d61590b7b --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md.Av5UFE83.lean.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as s,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-admin-table","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-admin-table.md"},d=n("",6),p=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" to render a table for.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through the "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html"},"c-list-pagination"),a("'s "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(" component. Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1),m=e("p",null,[a("Controls whether auto-save is used for items when in edit mode. If "),e("code",null,"auto"),a(" (the default), auto-saves are used as long as the type has no "),e("a",{href:"/Coalesce/modeling/model-components/properties.html#init-only-properties"},"init-only properties"),a(".")],-1),h=e("p",null,[a("If true, the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" of the provided "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(` will be read from and written to the window's query string. The "Editable" state of the table will also be bound to the query string.`)],-1);function f(v,b,_,y,g,C){const t=c("Prop");return i(),l("div",null,[d,s(t,{def:"list: ListViewModel",lang:"ts"}),p,s(t,{def:"pageSizes?: number[]",lang:"ts"}),u,s(t,{def:"autoSave?: 'auto' | boolean = 'auto'",lang:"ts"}),m,s(t,{def:"queryBind?: boolean",lang:"ts"}),h])}const w=o(r,[["render",f]]);export{k as __pageData,w as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.js new file mode 100644 index 000000000..980285765 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.js @@ -0,0 +1,10 @@ +import{_ as l,c as n,I as s,a7 as o,l as e,a as t,D as i,o as c}from"./chunks/framework.BkavzUpE.js";const S=JSON.parse('{"title":"c-datetime-picker","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md"},p=o(`<h1 id="c-datetime-picker" tabindex="-1">c-datetime-picker <a class="header-anchor" href="#c-datetime-picker" aria-label="Permalink to "c-datetime-picker"">​</a></h1><p>A general, all-purpose date/time input component that can be used either with <a href="/Coalesce/stacks/vue/layers/models.html">models</a> and <a href="/Coalesce/stacks/vue/layers/metadata.html">metadata</a> or as a standalone component using only <code>v-model</code>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-datetime-picker</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"birthDate"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-datetime-picker</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">standaloneDate</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-datetime-picker</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">standaloneTime</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> date-kind</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"time"</span></span> +<span class="line"><span style="color:#9CDCFE;"> date-format</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"h:mm a"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,5),d=e("p",null,"A metadata specifier for the value being bound. One of:",-1),u=e("ul",null,[e("li",null,[t("A string with the name of the value belonging to "),e("code",null,"model"),t(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),m=e("p",null,[t("An object owning the value that was specified by the "),e("code",null,"for"),t(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),t(" object.")],-1),h=e("p",null,[t("If binding the component with "),e("code",null,"v-model"),t(", accepts the "),e("code",null,"value"),t(" part of "),e("code",null,"v-model"),t(".")],-1),f=e("p",null,[t("Whether the date is only a date, only a time, or contains significant date "),e("code",null,"and"),t(" time information.")],-1),D=e("p",null,[t("If the component was bound with metadata using the "),e("code",null,"for"),t(" prop, this will default to the kind specified by "),e("a",{href:"/Coalesce/modeling/model-components/attributes/date-type.html"},"[DateType]"),t(".")],-1),y=o('<p>The format of the date that will be rendered in the component's text field, and the format that will be attempted first when parsing user input in the text field.</p><p>Defaults to:</p><ul><li><code>M/d/yyyy h:mm a</code> if <code>dateKind == 'datetime'</code>,</li><li><code>M/d/yyyy</code> if <code>dateKind == 'date'</code>, or</li><li><code>h:mm a</code> if <code>dateKind == 'time'</code>.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>When parsing a user's text input into the text field, c-datetime-picker will first attempt to parse it with the format specified by <code>dateFormat</code>, or the default as described above if not explicitly specified.</p><p>If this fails, Coalesce then tries a <a href="https://github.com/IntelliTect/Coalesce/blob/1fb00c7de5e363aaf3c1a78f45af3b949b11dff4/src/coalesce-vue/test/utils.spec.ts#L5" target="_blank" rel="noreferrer">large number of common formats</a>.</p><p>If that failed, then finally the date will be parsed with the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date" target="_blank" rel="noreferrer">Date constructor</a>, but only if the <code>dateKind</code> is <code>datetime</code> or <code>date</code>. This works fairly well on all modern browsers, but can still occasionally have issues. c-datetime-picker tries its best to filter out bad parses from the Date constructor, like dates with a year earlier than 1000.</p></div>',4),_=e("p",null,"The increments, in minutes, of the selectable value. Values should divide 60 evenly, or be multiples of 60. For example, a step of 15 allows selection of :00, :15, :30, and :45 minute time values.",-1),b=e("p",null,"The smallest allowable date/time selection.",-1),g=e("p",null,"The largest allowable date/time selection.",-1),v=e("p",null,"An array of permitted dates (items should have a time of midnight), or a function that returns true if a date is allowed for selection. Does not impact time selection.",-1),k=e("p",null,[t("The "),e("a",{href:"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones",target:"_blank",rel:"noreferrer"},"IANA Time Zone Database"),t(" name that the user will pick the date/time value in. Defaults to the value configured with "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#member-setdefaulttimezone"},[e("code",null,"setDefaultTimeZone")]),t(" if the value bound to with "),e("code",null,"model"),t("/"),e("code",null,"for"),t(" is a "),e("code",null,"DateTimeOffset"),t(".")],-1),C=e("p",null,"True if a native HTML5 input should be used instead of a popup menu with date/time pickers inside of it.",-1),w=e("p",null,[t("True if the component should be read-only. This state is also inherited from any wrapping "),e("code",null,"v-form"),t(".")],-1),T=e("p",null,[t("True if the component should be disabled. This state is also inherited from any wrapping "),e("code",null,"v-form"),t(".")],-1);function q(x,E,A,P,I,V){const a=i("Prop");return c(),n("div",null,[p,s(a,{def:"for?: string | DateProperty | DateValue",lang:"ts"}),d,u,s(a,{def:"model?: Model | DataSource",lang:"ts"}),m,s(a,{def:`value?: Date // Vue 2 +modelValue?: Date // Vue 3`,lang:"ts"}),h,s(a,{def:"dateKind?: 'date' | 'time' | 'datetime' = 'datetime'",lang:"ts"}),f,D,s(a,{def:"dateFormat?: string",lang:"ts"}),y,s(a,{def:"step?: number",lang:"ts"}),_,s(a,{def:"min?: Date",lang:"ts"}),b,s(a,{def:"max?: Date",lang:"ts"}),g,s(a,{def:"allowedDates?: Date[] | ((date: Date) => boolean)",lang:"ts"}),v,s(a,{def:"timeZone?: string",lang:"ts"}),k,s(a,{def:"native?: boolean",lang:"ts"}),C,s(a,{def:"readonly?: boolean",lang:"ts"}),w,s(a,{def:"disabled?: boolean",lang:"ts"}),T])}const N=l(r,[["render",q]]);export{S as __pageData,N as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.lean.js new file mode 100644 index 000000000..4704a6c6d --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md.BLmOIX_G.lean.js @@ -0,0 +1,2 @@ +import{_ as l,c as n,I as s,a7 as o,l as e,a as t,D as i,o as c}from"./chunks/framework.BkavzUpE.js";const S=JSON.parse('{"title":"c-datetime-picker","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.md"},p=o("",5),d=e("p",null,"A metadata specifier for the value being bound. One of:",-1),u=e("ul",null,[e("li",null,[t("A string with the name of the value belonging to "),e("code",null,"model"),t(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),m=e("p",null,[t("An object owning the value that was specified by the "),e("code",null,"for"),t(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),t(" object.")],-1),h=e("p",null,[t("If binding the component with "),e("code",null,"v-model"),t(", accepts the "),e("code",null,"value"),t(" part of "),e("code",null,"v-model"),t(".")],-1),f=e("p",null,[t("Whether the date is only a date, only a time, or contains significant date "),e("code",null,"and"),t(" time information.")],-1),D=e("p",null,[t("If the component was bound with metadata using the "),e("code",null,"for"),t(" prop, this will default to the kind specified by "),e("a",{href:"/Coalesce/modeling/model-components/attributes/date-type.html"},"[DateType]"),t(".")],-1),y=o("",4),_=e("p",null,"The increments, in minutes, of the selectable value. Values should divide 60 evenly, or be multiples of 60. For example, a step of 15 allows selection of :00, :15, :30, and :45 minute time values.",-1),b=e("p",null,"The smallest allowable date/time selection.",-1),g=e("p",null,"The largest allowable date/time selection.",-1),v=e("p",null,"An array of permitted dates (items should have a time of midnight), or a function that returns true if a date is allowed for selection. Does not impact time selection.",-1),k=e("p",null,[t("The "),e("a",{href:"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones",target:"_blank",rel:"noreferrer"},"IANA Time Zone Database"),t(" name that the user will pick the date/time value in. Defaults to the value configured with "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#member-setdefaulttimezone"},[e("code",null,"setDefaultTimeZone")]),t(" if the value bound to with "),e("code",null,"model"),t("/"),e("code",null,"for"),t(" is a "),e("code",null,"DateTimeOffset"),t(".")],-1),C=e("p",null,"True if a native HTML5 input should be used instead of a popup menu with date/time pickers inside of it.",-1),w=e("p",null,[t("True if the component should be read-only. This state is also inherited from any wrapping "),e("code",null,"v-form"),t(".")],-1),T=e("p",null,[t("True if the component should be disabled. This state is also inherited from any wrapping "),e("code",null,"v-form"),t(".")],-1);function q(x,E,A,P,I,V){const a=i("Prop");return c(),n("div",null,[p,s(a,{def:"for?: string | DateProperty | DateValue",lang:"ts"}),d,u,s(a,{def:"model?: Model | DataSource",lang:"ts"}),m,s(a,{def:`value?: Date // Vue 2 +modelValue?: Date // Vue 3`,lang:"ts"}),h,s(a,{def:"dateKind?: 'date' | 'time' | 'datetime' = 'datetime'",lang:"ts"}),f,D,s(a,{def:"dateFormat?: string",lang:"ts"}),y,s(a,{def:"step?: number",lang:"ts"}),_,s(a,{def:"min?: Date",lang:"ts"}),b,s(a,{def:"max?: Date",lang:"ts"}),g,s(a,{def:"allowedDates?: Date[] | ((date: Date) => boolean)",lang:"ts"}),v,s(a,{def:"timeZone?: string",lang:"ts"}),k,s(a,{def:"native?: boolean",lang:"ts"}),C,s(a,{def:"readonly?: boolean",lang:"ts"}),w,s(a,{def:"disabled?: boolean",lang:"ts"}),T])}const N=l(r,[["render",q]]);export{S as __pageData,N as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.js new file mode 100644 index 000000000..255427557 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.js @@ -0,0 +1,6 @@ +import{_ as l,c as n,I as o,a7 as t,l as e,a,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"c-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-display.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-display.md"},i=t(`<h1 id="c-display" tabindex="-1">c-display <a class="header-anchor" href="#c-display" aria-label="Permalink to "c-display"">​</a></h1><p>A general-purpose component for displaying any <a href="/Coalesce/stacks/vue/layers/metadata.html#value">Value</a> by rendering the value to a string with the <a href="/Coalesce/stacks/vue/layers/models.html#VueModelDisplayFunctions">display functions from the Models Layer</a>. For plain string and number <a href="/Coalesce/stacks/vue/layers/metadata.html">values</a>, usage of this component is largely superfluous. For all other value types including dates, booleans, enums, objects, and collections, it is very handy.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><p>Typical usage, providing an object and a property on that object:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"gender"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Customizing date formatting (<a href="https://date-fns.org/v2.29.3/docs/format" target="_blank" rel="noreferrer">view format patterns</a>):</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"birthDate"</span><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"M/d/yyyy"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>A contrived example of using c-display to render the result of an <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a>:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">setFirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">for</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$metadata</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">methods</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">setFirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">return</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> element</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"div"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><p>Displaying a standalone date value without a model or other source of metadata:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">dateProp</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"M/d/yyyy"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,12),d=e("p",null,[a("A metadata specifier for the value being bound. Either a direct reference to the metadata object, or a string with the name of the value belonging to "),e("code",null,"model"),a(", or a string in dot-notation that starts with a type name.")],-1),D=e("p",null,[a("An object owning the value that was specified by the "),e("code",null,"for"),a(" prop.")],-1),y=e("p",null,[a("Shorthand for "),e("code",null,':options="{ format: format }"'),a(", allowing for specification of the format to be used when displaying dates.")],-1),u=e("p",null,[a("See "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#displayoptions"},"DisplayOptions"),a(" for details on the options available for "),e("code",null,"format"),a(".")],-1),h=e("p",null,[a("Specify options for formatting some kinds of values, including dates. See "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#displayoptions"},"DisplayOptions"),a(" for details.")],-1),m=t('<p>Can be provided the value to be displayed in conjunction with the <code>for</code> prop, as an alternative to the <code>model</code> prop.</p><p>This is an uncommon scenario - it is generally easier to use the <code>for</code>/<code>model</code> props together.</p><h2 id="slots" tabindex="-1">Slots <a class="header-anchor" href="#slots" aria-label="Permalink to "Slots"">​</a></h2><p><code>default</code> - Used to display fallback content if the value being displayed is either <code>null</code> or <code>""</code> (empty string).</p><h2 id="datatypeattribute" tabindex="-1">[DataTypeAttribute] <a class="header-anchor" href="#datatypeattribute" aria-label="Permalink to "[DataTypeAttribute]"">​</a></h2><p>For properties and other values annotated with [DataTypeAttribute], the following special handling occurs based on the data type:</p><ul><li><code>DataType.MultilineText</code>: Renders with <code>white-space: pre-wrap</code>.</li><li><code>DataType.Password</code>: Renders with a show/hide toggle (hidden by default), showing a fixed number of dot characters when hidden.</li><li><code>DataType.Url</code>: Renders as a clickable link.</li><li><code>DataType.EmailAddress</code>: Renders as a clickable <code>mailto</code> link.</li><li><code>DataType.PhoneNumber</code>: Renders as a clickable <code>tel</code> link.</li><li><code>DataType.ImageUrl</code>: Renders as an <code>img</code> element.</li><li><code>"Color"</code>: Renders a colored dot next to the value, interpreting the field value as a 7-character HTML hex color code.</li></ul>',7);function f(C,g,v,_,b,q){const s=p("Prop");return r(),n("div",null,[i,o(s,{def:"for: string | Property | Value",lang:"ts"}),d,o(s,{def:"model?: Model | DataSource",lang:"ts"}),D,o(s,{def:'format: DisplayOptions["format"]',lang:"ts"}),y,u,o(s,{def:"options: DisplayOptions",lang:"ts"}),h,o(s,{def:`value: any // Vue 2 +modelValue: any // Vue 3`,lang:"ts"}),m])}const F=l(c,[["render",f]]);export{E as __pageData,F as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.lean.js new file mode 100644 index 000000000..5d6ec2ee3 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-display.md.KwuI7LyG.lean.js @@ -0,0 +1,2 @@ +import{_ as l,c as n,I as o,a7 as t,l as e,a,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const E=JSON.parse('{"title":"c-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-display.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-display.md"},i=t("",12),d=e("p",null,[a("A metadata specifier for the value being bound. Either a direct reference to the metadata object, or a string with the name of the value belonging to "),e("code",null,"model"),a(", or a string in dot-notation that starts with a type name.")],-1),D=e("p",null,[a("An object owning the value that was specified by the "),e("code",null,"for"),a(" prop.")],-1),y=e("p",null,[a("Shorthand for "),e("code",null,':options="{ format: format }"'),a(", allowing for specification of the format to be used when displaying dates.")],-1),u=e("p",null,[a("See "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#displayoptions"},"DisplayOptions"),a(" for details on the options available for "),e("code",null,"format"),a(".")],-1),h=e("p",null,[a("Specify options for formatting some kinds of values, including dates. See "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html#displayoptions"},"DisplayOptions"),a(" for details.")],-1),m=t("",7);function f(C,g,v,_,b,q){const s=p("Prop");return r(),n("div",null,[i,o(s,{def:"for: string | Property | Value",lang:"ts"}),d,o(s,{def:"model?: Model | DataSource",lang:"ts"}),D,o(s,{def:'format: DisplayOptions["format"]',lang:"ts"}),y,u,o(s,{def:"options: DisplayOptions",lang:"ts"}),h,o(s,{def:`value: any // Vue 2 +modelValue: any // Vue 3`,lang:"ts"}),m])}const F=l(c,[["render",f]]);export{E as __pageData,F as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.js new file mode 100644 index 000000000..963c30d6d --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.js @@ -0,0 +1,6 @@ +import{_ as t,c as l,I as o,a7 as n,l as e,a as s,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const q=JSON.parse('{"title":"c-input","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-input.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-input.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-input.md"},i=n(`<h1 id="c-input" tabindex="-1">c-input <a class="header-anchor" href="#c-input" aria-label="Permalink to "c-input"">​</a></h1><p>A general-purpose input component for most <a href="/Coalesce/stacks/vue/layers/metadata.html">Values</a>. c-input delegates to other components based on the type of value it is bound to. This includes both other <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Coalesce Vuetify Components</a> as well as direct usages of some <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> components.</p><p>All attributes are passed through to the delegated-to component, allowing for full customization of the underlying <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> component.</p><p>A summary of the components delegated to, by type:</p><ul><li>string: <ul><li><a href="https://vuetifyjs.com/en/components/textarea/" target="_blank" rel="noreferrer">v-textarea</a> if flag attribute <code>textarea</code> is provided to <code>c-input</code> or if <code>[DataType(DataType.MultilineText)]</code> is present in C#.</li><li>Otherwise, <a href="https://vuetifyjs.com/en/components/text-fields/" target="_blank" rel="noreferrer">v-text-field</a>. Additionally, <code>[DataTypeAttribute]</code> values of <code>DataType.EmailAddress</code>, <code>DataType.PhoneNumber</code>, <code>DataType.Password</code>, or <code>"Color"</code> on the field will apply appropriate adjustments to the field.</li></ul></li><li>number: <a href="https://vuetifyjs.com/en/components/text-fields/" target="_blank" rel="noreferrer">v-text-field</a>.</li><li>boolean: <a href="https://vuetifyjs.com/en/components/selection-controls/" target="_blank" rel="noreferrer">v-switch</a>, or <a href="https://vuetifyjs.com/en/components/selection-controls/" target="_blank" rel="noreferrer">v-checkbox</a> if flag attribute <code>checkbox</code> is provided to <code>c-input</code>.</li><li>enum: <a href="https://vuetifyjs.com/en/components/selects/" target="_blank" rel="noreferrer">v-select</a></li><li>file: <a href="https://vuetifyjs.com/en/components/file-inputs/" target="_blank" rel="noreferrer">v-file-input</a></li><li>date: <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html">c-datetime-picker</a></li><li>model: <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select.html">c-select</a></li><li><a href="/Coalesce/modeling/model-components/attributes/many-to-many.html">[ManyToMany]</a> collection: <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html">c-select-many-to-many</a></li><li>Non-object collection: <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select-values.html">c-select-values</a></li></ul><p>Any other unsupported type will simply be displayed with <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>, unless a <a href="https://vuejs.org/guide/components/slots.html" target="_blank" rel="noreferrer">default slot</a> is provided - in that case, the default slot will be rendered instead.</p><p>When bound to a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a>, the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation">validation rules</a> for the bound property will be obtained from the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation">ViewModel</a> and passed to <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a>'s <code>rules</code> prop.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><p>Typical usage, providing an object and a property on that object:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"firstName"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Customizing the <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> component used:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">comment</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"content"</span><span style="color:#9CDCFE;"> textarea</span><span style="color:#9CDCFE;"> solo</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Binding to <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> args objects:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">setFirstName</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"newName"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Or, using a more verbose syntax:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">setFirstName</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person.methods.setFirstName.newName"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Binding to <a href="/Coalesce/modeling/model-components/data-sources.html#custom-parameters">Data Source Parameters</a>:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">personList</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$dataSource</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"startsWith"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Usage with <code>v-model</code> (this scenario is atypical - the model/for pair of props are used in almost all scenarios):</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-input</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">firstName</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person.firstName"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,21),u=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("A string with the name of the value belonging to "),e("code",null,"model"),s(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),y=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),s(" object.")],-1),D=e("p",null,[s("If binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(".")],-1),m=e("h2",{id:"slots",tabindex:"-1"},[s("Slots "),e("a",{class:"header-anchor",href:"#slots","aria-label":'Permalink to "Slots"'},"​")],-1),h=e("p",null,[e("code",null,"default"),s(" - Used to display fallback content if c-input does not support the type of the value being bound. Generally this does not need to be used, as you should avoid creating c-input components for unsupported types in the first place.")],-1);function f(v,C,g,b,_,k){const a=p("Prop");return c(),l("div",null,[i,o(a,{def:"for?: string | Property | Value",lang:"ts"}),u,d,o(a,{def:"model?: Model | DataSource",lang:"ts"}),y,o(a,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),D,m,h])}const F=t(r,[["render",f]]);export{q as __pageData,F as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.lean.js new file mode 100644 index 000000000..bad2f7a25 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-input.md.C7dBk70K.lean.js @@ -0,0 +1,2 @@ +import{_ as t,c as l,I as o,a7 as n,l as e,a as s,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const q=JSON.parse('{"title":"c-input","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-input.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-input.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-input.md"},i=n("",21),u=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("A string with the name of the value belonging to "),e("code",null,"model"),s(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),y=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),s(" object.")],-1),D=e("p",null,[s("If binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(".")],-1),m=e("h2",{id:"slots",tabindex:"-1"},[s("Slots "),e("a",{class:"header-anchor",href:"#slots","aria-label":'Permalink to "Slots"'},"​")],-1),h=e("p",null,[e("code",null,"default"),s(" - Used to display fallback content if c-input does not support the type of the value being bound. Generally this does not need to be used, as you should avoid creating c-input components for unsupported types in the first place.")],-1);function f(v,C,g,b,_,k){const a=p("Prop");return c(),l("div",null,[i,o(a,{def:"for?: string | Property | Value",lang:"ts"}),u,d,o(a,{def:"model?: Model | DataSource",lang:"ts"}),y,o(a,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),D,m,h])}const F=t(r,[["render",f]]);export{q as __pageData,F as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.js new file mode 100644 index 000000000..13ed89075 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as r,l as e,a as s,D as c,o as n}from"./chunks/framework.BkavzUpE.js";const C=JSON.parse('{"title":"c-list-filters","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md"},p=r('<h1 id="c-list-filters" tabindex="-1">c-list-filters <a class="header-anchor" href="#c-list-filters" aria-label="Permalink to "c-list-filters"">​</a></h1><p>A component that provides an interface for modifying the <code>filters</code> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>'s <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameters</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-list-filters</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',5),d=e("p",null,[s("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),s(" whose filters will be editable.")],-1);function m(f,h,u,_,D,v){const a=c("Prop");return n(),o("div",null,[p,l(a,{def:"list: ListViewModel",lang:"ts"}),d])}const g=t(i,[["render",m]]);export{C as __pageData,g as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.lean.js new file mode 100644 index 000000000..a3c64cf9b --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md.BuQssQ1-.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as r,l as e,a as s,D as c,o as n}from"./chunks/framework.BkavzUpE.js";const C=JSON.parse('{"title":"c-list-filters","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-filters.md"},p=r("",5),d=e("p",null,[s("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),s(" whose filters will be editable.")],-1);function m(f,h,u,_,D,v){const a=c("Prop");return n(),o("div",null,[p,l(a,{def:"list: ListViewModel",lang:"ts"}),d])}const g=t(i,[["render",m]]);export{C as __pageData,g as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.js new file mode 100644 index 000000000..769443824 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as t,a7 as c,l as e,a,D as n,o as p}from"./chunks/framework.BkavzUpE.js";const z=JSON.parse('{"title":"c-list-page-size","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md"},r=c('<h1 id="c-list-page-size" tabindex="-1">c-list-page-size <a class="header-anchor" href="#c-list-page-size" aria-label="Permalink to "c-list-page-size"">​</a></h1><p>A component that provides an dropdown for modifying the <code>pageSize</code> <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameter</a> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-list-page-size</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',5),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose pagination will be editable.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(". Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1);function m(h,_,g,f,v,D){const s=n("Prop");return p(),l("div",null,[r,t(s,{def:"list: ListViewModel",lang:"ts"}),d,t(s,{def:"pageSizes?: number[]",lang:"ts"}),u])}const C=o(i,[["render",m]]);export{z as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.lean.js new file mode 100644 index 000000000..7ece7f783 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md.ghTX5kic.lean.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as t,a7 as c,l as e,a,D as n,o as p}from"./chunks/framework.BkavzUpE.js";const z=JSON.parse('{"title":"c-list-page-size","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md"}'),i={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.md"},r=c("",5),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose pagination will be editable.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(". Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1);function m(h,_,g,f,v,D){const s=n("Prop");return p(),l("div",null,[r,t(s,{def:"list: ListViewModel",lang:"ts"}),d,t(s,{def:"pageSizes?: number[]",lang:"ts"}),u])}const C=o(i,[["render",m]]);export{z as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.js new file mode 100644 index 000000000..6a7779c78 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as c,l as e,a,D as n,o as p}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"c-list-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md"},i=c('<h1 id="c-list-page" tabindex="-1">c-list-page <a class="header-anchor" href="#c-list-page" aria-label="Permalink to "c-list-page"">​</a></h1><p>A component that provides previous/next buttons and a text field for modifying the <code>page</code> <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameter</a> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-list-page</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',5),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose current page will be changeable with the component.")],-1);function m(h,u,_,g,f,v){const s=n("Prop");return p(),o("div",null,[i,l(s,{def:"list: ListViewModel",lang:"ts"}),d])}const x=t(r,[["render",m]]);export{y as __pageData,x as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.lean.js new file mode 100644 index 000000000..7826bad8a --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-page.md.DBlTOD8T.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as c,l as e,a,D as n,o as p}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"c-list-page","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-page.md"},i=c("",5),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose current page will be changeable with the component.")],-1);function m(h,u,_,g,f,v){const s=n("Prop");return p(),o("div",null,[i,l(s,{def:"list: ListViewModel",lang:"ts"}),d])}const x=t(r,[["render",m]]);export{y as __pageData,x as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.js new file mode 100644 index 000000000..c3a93d198 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as t,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"c-list-pagination","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md"}'),p={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md"},r=n('<h1 id="c-list-pagination" tabindex="-1">c-list-pagination <a class="header-anchor" href="#c-list-pagination" aria-label="Permalink to "c-list-pagination"">​</a></h1><p>A component that provides an interface for modifying the pagination <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameters</a> of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><p>This is a composite of <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html">c-list-page-size</a>, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html">c-list-range-display</a>, and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html">c-list-page</a>, arranged horizontally. It is designed to be used above or below a table (e.g. <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-table.html">c-table</a>).</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-list-pagination</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose pagination will be editable.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(". Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1);function h(m,g,f,v,_,y){const s=c("Prop");return i(),l("div",null,[r,t(s,{def:"list: ListViewModel",lang:"ts"}),d,t(s,{def:"pageSizes?: number[]",lang:"ts"}),u])}const C=o(p,[["render",h]]);export{b as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.lean.js new file mode 100644 index 000000000..e6617eec6 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md.CL0iN7Kl.lean.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as t,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const b=JSON.parse('{"title":"c-list-pagination","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md"}'),p={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.md"},r=n("",6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" whose pagination will be editable.")],-1),u=e("p",null,[a("An optional list of available page sizes to offer through "),e("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html"},"c-list-page-size"),a(". Defaults to "),e("code",null,"[10, 25, 100]"),a(".")],-1);function h(m,g,f,v,_,y){const s=c("Prop");return i(),l("div",null,[r,t(s,{def:"list: ListViewModel",lang:"ts"}),d,t(s,{def:"pageSizes?: number[]",lang:"ts"}),u])}const C=o(p,[["render",h]]);export{b as __pageData,C as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.js new file mode 100644 index 000000000..d3d47a718 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"c-list-range-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md"},p=n('<h1 id="c-list-range-display" tabindex="-1">c-list-range-display <a class="header-anchor" href="#c-list-range-display" aria-label="Permalink to "c-list-range-display"">​</a></h1><p>Displays pagination information about the current <code>$items</code> of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a> in the format <code><start index> - <end index> of <total count></code>.</p><p>Uses the pagination information returned from the last successful <code>$load</code> call, not the current <code>$params</code> of the <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-list-range-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>',6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" to display pagination information for.")],-1);function u(m,h,y,_,f,D){const s=c("Prop");return i(),o("div",null,[p,l(s,{def:"list: ListViewModel",lang:"ts"}),d])}const k=t(r,[["render",u]]);export{v as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.lean.js new file mode 100644 index 000000000..ed5c8d0af --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md.BXap6sbk.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,I as l,a7 as n,l as e,a,D as c,o as i}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"c-list-range-display","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.md"},p=n("",6),d=e("p",null,[a("The "),e("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),a(" to display pagination information for.")],-1);function u(m,h,y,_,f,D){const s=c("Prop");return i(),o("div",null,[p,l(s,{def:"list: ListViewModel",lang:"ts"}),d])}const k=t(r,[["render",u]]);export{v as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.js new file mode 100644 index 000000000..164191389 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.js @@ -0,0 +1,44 @@ +import{_ as l,c as t,I as a,a7 as o,l as e,a as n,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"c-loader-status","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md"},i=o(`<h1 id="c-loader-status" tabindex="-1">c-loader-status <a class="header-anchor" href="#c-loader-status" aria-label="Permalink to "c-loader-status"">​</a></h1><p>A component for displaying progress and error information for one or more <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a>.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It is highly recommended that all <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a> utilized by your application that don't have any other kind of error handling should be represented by a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html">c-loader-status</a> so that users can be aware of any errors that occur.</p></div><p>Progress is indicated with a <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> <a href="https://vuetifyjs.com/en/components/progress-linear" target="_blank" rel="noreferrer">v-progress-linear</a> component, and errors are displayed in a <a href="https://vuetifyjs.com/en/components/alerts/" target="_blank" rel="noreferrer">v-alert</a>. <a href="https://vuetifyjs.com/en/styles/transitions/" target="_blank" rel="noreferrer">Transitions</a> are applied to smoothly fade between the different states the the caller can be in.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><p>Wrap contents of a details/edit page:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">h1</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">Person Details</span><span style="color:#808080;"></</span><span style="color:#569CD6;">h1</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{ </span></span> +<span class="line"><span style="color:#CE9178;"> 'no-initial-content no-error-content'</span><span style="color:#9CDCFE;">:</span><span style="color:#D4D4D4;"> [</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">],</span></span> +<span class="line"><span style="color:#CE9178;"> ''</span><span style="color:#9CDCFE;">:</span><span style="color:#D4D4D4;"> [</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$save</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$delete</span><span style="color:#D4D4D4;">],</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> #</span><span style="color:#9CDCFE;">default</span></span> +<span class="line"><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> First Name: {{ </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">firstName</span><span style="color:#D4D4D4;"> }}</span></span> +<span class="line"><span style="color:#D4D4D4;"> Last Name: {{ </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">lastName</span><span style="color:#D4D4D4;"> }}</span></span> +<span class="line"><span style="color:#D4D4D4;"> Employer: {{ </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">company</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">name</span><span style="color:#D4D4D4;"> }}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">c-loader-status</span><span style="color:#808080;">></span></span></code></pre></div><p>Use <code>c-loader-status</code> to render a progress bar and any error messages, but don't use it to control content:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Wrap a save/submit button:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$save</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$delete</span><span style="color:#D4D4D4;">]</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> no-loading-content</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">button</span><span style="color:#808080;">></span><span style="color:#D4D4D4;"> Save </span><span style="color:#808080;"></</span><span style="color:#569CD6;">button</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">button</span><span style="color:#808080;">></span><span style="color:#D4D4D4;"> Delete </span><span style="color:#808080;"></</span><span style="color:#569CD6;">button</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">c-loader-status</span><span style="color:#808080;">></span></span></code></pre></div><p>Hides the table before the first load has completed, or if loading the list encountered an error. Don't show the progress bar after we've already loaded the list for the first time (useful for loads that occur without user interaction, e.g. <code>setInterval</code>):</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#9CDCFE;"> no-initial-content</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> no-error-content</span></span> +<span class="line"><span style="color:#9CDCFE;"> no-secondary-progress</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">table</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">tr</span><span style="color:#9CDCFE;"> v-for</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">item</span><span style="color:#569CD6;"> in</span><span style="color:#9CDCFE;"> list</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$items</span><span style="color:#D4D4D4;">"</span><span style="color:#808080;">></span><span style="color:#D4D4D4;"> ... </span><span style="color:#808080;"></</span><span style="color:#569CD6;">tr</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">table</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">c-loader-status</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,14),d=o(`<div><p>This prop has multiple options that support simple or complex usage scenarios:</p><h4 id="flags-per-component" tabindex="-1">Flags Per Component <a class="header-anchor" href="#flags-per-component" aria-label="Permalink to "Flags Per Component"">​</a></h4><p>A single instance, or array of <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a>, whose status will be represented by the component. The <a href="#flags">flags</a> for these objects will be determined from the component-level <a href="#flags-props">flag props</a>.</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">product</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">]</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#9CDCFE;"> no-initial-content</span></span> +<span class="line"><span style="color:#9CDCFE;"> no-error-content</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><h4 id="flags-per-caller" tabindex="-1">Flags Per Caller <a class="header-anchor" href="#flags-per-caller" aria-label="Permalink to "Flags Per Caller"">​</a></h4><p>A more advanced usage allows passing different flags for different callers. Provide a dictionary object with entries mapping zero or more <a href="#flags">flags</a> to one or more <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a>. Multiple entries of flags/caller pairs may be specified in the dictionary to give different behavior to different API callers. These flags are layered on top of the base <a href="#flags-props">flag props</a>.</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-loader-status</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">loaders</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{ </span></span> +<span class="line"><span style="color:#CE9178;"> 'no-initial-content no-error-content'</span><span style="color:#9CDCFE;">:</span><span style="color:#D4D4D4;"> [</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$load</span><span style="color:#D4D4D4;">],</span></span> +<span class="line"><span style="color:#CE9178;"> 'no-loading-content'</span><span style="color:#9CDCFE;">:</span><span style="color:#D4D4D4;"> [</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$save</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$delete</span><span style="color:#D4D4D4;">],</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div></div><br>`,2),D=e("p",null,"Specify if space should be reserved for the progress indicator. If set to false, the content in the default slot may jump up and down slightly as the progress indicator shows and hides.",-1),y=e("p",null,"Positions the progress bar absolutely. This can be useful in compact interfaces where extra space for the progress bar is undesirable, allowing the progress bar to potentially overlap content while active.",-1),h=e("p",null,[n("Specifies the height in pixels of the "),e("a",{href:"https://vuetifyjs.com/en/components/progress-linear",target:"_blank",rel:"noreferrer"},"v-progress-linear"),n(" used to indicate progress.")],-1),u=o('<p>Component level <a href="#flags">flags</a> options that control behavior when the simple form of <code>loaders</code> (single instance or array) is used, as well as provide baseline defaults that can be overridden by the advanced form of <code>loaders</code> (object map) .</p><h2 id="flags" tabindex="-1">Flags <a class="header-anchor" href="#flags" aria-label="Permalink to "Flags"">​</a></h2><p>The available flags are as follows, all of which default to <code>true</code>. In the object literal syntax for <code>loaders</code>, the <code>no-</code> prefix may be omitted to set the flag to <code>true</code>.</p><table><thead><tr><th><div style="width:160px;">Flag</div></th><th>Description</th></tr></thead><tbody><tr><td><code>no-loading-content</code></td><td>Controls whether the default slot is rendered while any API caller is loading (i.e. when <code>caller.isLoading === true</code>).</td></tr><tr><td><code>no-error-content</code></td><td>Controls whether the default slot is rendered while any API Caller is in an error state (i.e. when <code>caller.wasSuccessful === false</code>).</td></tr><tr><td><code>no-initial-content</code></td><td>Controls whether the default slot is rendered while any API Caller has yet to receive a response for the first time (i.e. when <code>caller.wasSuccessful === null</code>).</td></tr><tr><td><code>no-progress</code></td><td>Master toggle for whether the progress indicator is shown in any scenario.</td></tr><tr><td><code>no-initial-progress</code></td><td>Controls whether the progress indicator is shown when an API Caller is loading for the very first time (i.e. when <code>caller.wasSuccessful === null</code>).</td></tr><tr><td><code>no-secondary-progress</code></td><td>Controls whether the progress indicator is shown when an API Caller is loading any time after its first invocation (i.e. when <code>caller.wasSuccessful !== null</code>).</td></tr></tbody></table><h2 id="slots" tabindex="-1">Slots <a class="header-anchor" href="#slots" aria-label="Permalink to "Slots"">​</a></h2><p><code>default</code> - Accepts the content whose visibility is controlled by the state of the supplied <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a>. It will be shown or hidden according to the flags defined for each caller.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>(Vue 2 Only): Define the default slot as a <a href="https://v2.vuejs.org/v2/guide/components-slots.html#Scoped-Slots" target="_blank" rel="noreferrer">scoped slot</a> (e.g. with <code>#default</code> or <code>v-slot:default</code> on the <code>c-loader-status</code>) to prevent the VNode tree from being created when the content should be hidden. This improves performance and helps avoid null reference errors that can be caused when trying to render objects that haven't been loaded yet.</p></div>',7);function C(f,g,m,b,v,_){const s=p("Prop");return r(),t("div",null,[i,a(s,{def:`loaders: + // Flags per component: + | ApiCaller + | ApiCaller[] + // Flags per caller: + | { [flags: string]: ApiCaller | ApiCaller[] } `,lang:"ts"}),d,a(s,{def:"progressPlaceholder: boolean = true",lang:"ts"}),D,a(s,{def:"progressAbsolute: boolean = false",lang:"ts"}),y,a(s,{def:"height: number = 10",lang:"ts"}),h,a(s,{def:` +no-loading-content?: boolean; +no-error-content?: boolean; +no-initial-content?: boolean; +no-progress?: boolean; +no-initial-progress?: boolean; +no-secondary-progress?: boolean;`,lang:"ts",id:"flags-props"}),u])}const w=l(c,[["render",C]]);export{F as __pageData,w as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.lean.js new file mode 100644 index 000000000..baf2d549f --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md.B1aKOMtk.lean.js @@ -0,0 +1,12 @@ +import{_ as l,c as t,I as a,a7 as o,l as e,a as n,D as p,o as r}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"c-loader-status","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md"}'),c={name:"stacks/vue/coalesce-vue-vuetify/components/c-loader-status.md"},i=o("",14),d=o("",2),D=e("p",null,"Specify if space should be reserved for the progress indicator. If set to false, the content in the default slot may jump up and down slightly as the progress indicator shows and hides.",-1),y=e("p",null,"Positions the progress bar absolutely. This can be useful in compact interfaces where extra space for the progress bar is undesirable, allowing the progress bar to potentially overlap content while active.",-1),h=e("p",null,[n("Specifies the height in pixels of the "),e("a",{href:"https://vuetifyjs.com/en/components/progress-linear",target:"_blank",rel:"noreferrer"},"v-progress-linear"),n(" used to indicate progress.")],-1),u=o("",7);function C(f,g,m,b,v,_){const s=p("Prop");return r(),t("div",null,[i,a(s,{def:`loaders: + // Flags per component: + | ApiCaller + | ApiCaller[] + // Flags per caller: + | { [flags: string]: ApiCaller | ApiCaller[] } `,lang:"ts"}),d,a(s,{def:"progressPlaceholder: boolean = true",lang:"ts"}),D,a(s,{def:"progressAbsolute: boolean = false",lang:"ts"}),y,a(s,{def:"height: number = 10",lang:"ts"}),h,a(s,{def:` +no-loading-content?: boolean; +no-error-content?: boolean; +no-initial-content?: boolean; +no-progress?: boolean; +no-initial-progress?: boolean; +no-secondary-progress?: boolean;`,lang:"ts",id:"flags-props"}),u])}const w=l(c,[["render",C]]);export{F as __pageData,w as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.js new file mode 100644 index 000000000..eebd391f3 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.js @@ -0,0 +1,10 @@ +import{_ as n,c as l,I as o,a7 as t,l as e,a,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-select-many-to-many","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md"},d=t(`<h1 id="c-select-many-to-many" tabindex="-1">c-select-many-to-many <a class="header-anchor" href="#c-select-many-to-many" aria-label="Permalink to "c-select-many-to-many"">​</a></h1><p>A multi-select dropdown component that allows for selecting values fetched from the generated <code>/list</code> API endpoints for collection navigation properties that were annotated with <a href="/Coalesce/modeling/model-components/attributes/many-to-many.html">[ManyToMany]</a>.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It is unlikely that you'll ever need to use this component directly - it is highly recommended that you use <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> instead and let it delegate to <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html">c-select-many-to-many</a> for you.</p></div><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-many-to-many</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">case</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"caseProducts"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-many-to-many</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">case</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"caseProducts"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> dense</span></span> +<span class="line"><span style="color:#9CDCFE;"> outlined</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-many-to-many</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">case</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">caseProducts</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Case.caseProducts"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,8),i=t('<p>A metadata specifier for the value being bound. One of:</p><ul><li>A string with the name of the value belonging to <code>model</code>.</li><li>A direct reference to a metadata object.</li><li>A string in dot-notation that starts with a type name.</li></ul><div class="tip custom-block"><p class="custom-block-title">Note</p><p>c-select-many-to-many expects metadata for the "real" collection navigation property on a model. If you provide it the string you passed to <a href="/Coalesce/modeling/model-components/attributes/many-to-many.html">[ManyToMany]</a>, an error wil be thrown.</p></div>',3),m=e("p",null,[a("An object owning the value that was specified by the "),e("code",null,"for"),a(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),a(" object.")],-1),y=e("p",null,[a("If binding the component with "),e("code",null,"v-model"),a(", accepts the "),e("code",null,"value"),a(" part of "),e("code",null,"v-model"),a(".")],-1),u=e("p",null,[a("An optional set of "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" to pass to API calls made to the server.")],-1),h=t('<p>If provided and non-false, enables <a href="/Coalesce/stacks/vue/layers/api-clients.html#response-caching">response caching</a> on the component's internal API caller.</p><h2 id="events" tabindex="-1">Events <a class="header-anchor" href="#events" aria-label="Permalink to "Events"">​</a></h2><p>The following events and automatic API calls are only used when bound to a <code>model</code> that has <a href="/Coalesce/stacks/vue/layers/viewmodels.html#auto-save">auto-saves</a> enabled.</p><ul><li><code>adding</code> - Fired when a new item has been selected, but before the call to <code>/save</code> has completed.</li><li><code>added</code> - Fired when the call to <code>/save</code> has completed after adding a new item.</li><li><code>deleting</code> - Fired when an item has been removed, but before the call to <code>/delete</code> has completed.</li><li><code>deleted</code> - Fired when the call to <code>/delete</code> has completed after removing an item.</li></ul>',4);function D(v,_,f,C,g,b){const s=c("Prop");return p(),l("div",null,[d,o(s,{def:"for: string | Property | Value",lang:"ts"}),i,o(s,{def:"model?: Model",lang:"ts"}),m,o(s,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),y,o(s,{def:"params?: ListParameters",lang:"ts"}),u,o(s,{def:"cache?: ResponseCachingConfiguration | boolean",lang:"ts"}),h])}const T=n(r,[["render",D]]);export{k as __pageData,T as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.lean.js new file mode 100644 index 000000000..9d7bba796 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md.DHuCgpUa.lean.js @@ -0,0 +1,2 @@ +import{_ as n,c as l,I as o,a7 as t,l as e,a,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-select-many-to-many","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.md"},d=t("",8),i=t("",3),m=e("p",null,[a("An object owning the value that was specified by the "),e("code",null,"for"),a(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),a(" object.")],-1),y=e("p",null,[a("If binding the component with "),e("code",null,"v-model"),a(", accepts the "),e("code",null,"value"),a(" part of "),e("code",null,"v-model"),a(".")],-1),u=e("p",null,[a("An optional set of "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" to pass to API calls made to the server.")],-1),h=t("",4);function D(v,_,f,C,g,b){const s=c("Prop");return p(),l("div",null,[d,o(s,{def:"for: string | Property | Value",lang:"ts"}),i,o(s,{def:"model?: Model",lang:"ts"}),m,o(s,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),y,o(s,{def:"params?: ListParameters",lang:"ts"}),u,o(s,{def:"cache?: ResponseCachingConfiguration | boolean",lang:"ts"}),h])}const T=n(r,[["render",D]]);export{k as __pageData,T as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.js new file mode 100644 index 000000000..ee7758f16 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.js @@ -0,0 +1,29 @@ +import{_ as l,c as o,I as n,a7 as t,l as s,a,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const T=JSON.parse('{"title":"c-select-string-value","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md"},D=t(`<h1 id="c-select-string-value" tabindex="-1">c-select-string-value <a class="header-anchor" href="#c-select-string-value" aria-label="Permalink to "c-select-string-value"">​</a></h1><p>A dropdown component that will present a list of suggested string values from a custom API endpoint. Allows users to input values that aren't provided by the endpoint.</p><p>Effectively, this is a server-driven autocomplete list.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-string-value</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"jobTitle"</span></span> +<span class="line"><span style="color:#9CDCFE;"> method</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"getSuggestedJobTitles"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> selectedTitle</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">ref</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">>();</span></span></code></pre></div><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-string-value</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">selectedTitle</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#9CDCFE;"> label</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Job Title"</span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person"</span></span> +<span class="line"><span style="color:#9CDCFE;"> method</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"getSuggestedJobTitles"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">class</span><span style="color:#4EC9B0;"> Person</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; } </span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> JobTitle</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">ICollection</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">string</span><span style="color:#D4D4D4;">>> </span><span style="color:#DCDCAA;">GetSuggestedJobTitles</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> search</span></span> +<span class="line"><span style="color:#D4D4D4;"> )</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">People</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">p</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">JobTitle</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Distinct</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">t</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">t</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">StartsWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">search</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">OrderBy</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">t</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">t</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Take</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">100</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ToListAsync</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,9),i=s("p",null,"A metadata specifier for the value being bound. One of:",-1),y=s("ul",null,[s("li",null,[a("A string with the name of the bound value belonging to "),s("code",null,"model"),a(", or a direct reference to a metadata object that describes the bound value belonging to "),s("code",null,"model"),a(".")]),s("li",null,[a("A string equal to the name of the type that owns the method described by "),s("code",null,"method"),a(". Use "),s("code",null,"v-model"),a(" to bind the selected string value.")])],-1),d=s("p",null,[a("An object owning the value that was specified by the "),s("code",null,"for"),a(" prop. If provided, the input will be bound to the corresponding property on the "),s("code",null,"model"),a(" object.")],-1),u=s("p",null,[a("The camel-cased name of the "),s("a",{href:"/Coalesce/modeling/model-components/methods.html"},"Custom Method"),a(" to invoke to get the list of valid values. Will be passed a single string parameter "),s("code",null,"search"),a(". Must be a static method on the type of the provided "),s("code",null,"model"),a(" object that returns a collection of strings.")],-1),C=s("p",null,[a("An optional set of "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" to pass to API calls made to the server.")],-1),h=s("p",null,"True if the method should be invoked and the list displayed when the entered search term is blank.",-1),g=s("p",null,"True if the bound value should be updated as the user types. Otherwise, the bound value is updated when focus is lost or when a suggested value is chosen. This is only applicable for Vuetify 2 - in Vuetify 3, this is the default behavior.",-1);function m(v,b,f,E,_,A){const e=p("Prop");return c(),o("div",null,[D,n(e,{def:"for: string | Property | Value",lang:"ts"}),i,y,n(e,{def:"model: Model",lang:"ts"}),d,n(e,{def:"method: string",lang:"ts"}),u,n(e,{def:"params?: DataSourceParameters",lang:"ts"}),C,n(e,{def:"listWhenEmpty?: boolean = false",lang:"ts"}),h,n(e,{def:"eager?: boolean = false",lang:"ts"}),g])}const k=l(r,[["render",m]]);export{T as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.lean.js new file mode 100644 index 000000000..7f9d7888e --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md.CBTE2rZs.lean.js @@ -0,0 +1 @@ +import{_ as l,c as o,I as n,a7 as t,l as s,a,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const T=JSON.parse('{"title":"c-select-string-value","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.md"},D=t("",9),i=s("p",null,"A metadata specifier for the value being bound. One of:",-1),y=s("ul",null,[s("li",null,[a("A string with the name of the bound value belonging to "),s("code",null,"model"),a(", or a direct reference to a metadata object that describes the bound value belonging to "),s("code",null,"model"),a(".")]),s("li",null,[a("A string equal to the name of the type that owns the method described by "),s("code",null,"method"),a(". Use "),s("code",null,"v-model"),a(" to bind the selected string value.")])],-1),d=s("p",null,[a("An object owning the value that was specified by the "),s("code",null,"for"),a(" prop. If provided, the input will be bound to the corresponding property on the "),s("code",null,"model"),a(" object.")],-1),u=s("p",null,[a("The camel-cased name of the "),s("a",{href:"/Coalesce/modeling/model-components/methods.html"},"Custom Method"),a(" to invoke to get the list of valid values. Will be passed a single string parameter "),s("code",null,"search"),a(". Must be a static method on the type of the provided "),s("code",null,"model"),a(" object that returns a collection of strings.")],-1),C=s("p",null,[a("An optional set of "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),a(" to pass to API calls made to the server.")],-1),h=s("p",null,"True if the method should be invoked and the list displayed when the entered search term is blank.",-1),g=s("p",null,"True if the bound value should be updated as the user types. Otherwise, the bound value is updated when focus is lost or when a suggested value is chosen. This is only applicable for Vuetify 2 - in Vuetify 3, this is the default behavior.",-1);function m(v,b,f,E,_,A){const e=p("Prop");return c(),o("div",null,[D,n(e,{def:"for: string | Property | Value",lang:"ts"}),i,y,n(e,{def:"model: Model",lang:"ts"}),d,n(e,{def:"method: string",lang:"ts"}),u,n(e,{def:"params?: DataSourceParameters",lang:"ts"}),C,n(e,{def:"listWhenEmpty?: boolean = false",lang:"ts"}),h,n(e,{def:"eager?: boolean = false",lang:"ts"}),g])}const k=l(r,[["render",m]]);export{T as __pageData,k as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.js new file mode 100644 index 000000000..d6c39569e --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.js @@ -0,0 +1,5 @@ +import{_ as l,c as o,I as t,a7 as n,l as e,a as s,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-select-values","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md"},i=n(`<h1 id="c-select-values" tabindex="-1">c-select-values <a class="header-anchor" href="#c-select-values" aria-label="Permalink to "c-select-values"">​</a></h1><p>A multi-select input component for collections of non-object values (primarily strings and numbers).</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It is unlikely that you'll ever need to use this component directly - it is highly recommended that you use <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> instead and let it delegate to <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select-values.html">c-select-values</a> for you.</p></div><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select-values</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">post</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">setTags</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Post.methods.setTags.params.tagNames"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,6),u=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("A string with the name of the value belonging to "),e("code",null,"model"),s(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),m=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop.")],-1),h=e("p",null,[s("If binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(".")],-1);function v(D,y,f,_,g,C){const a=c("Prop");return p(),o("div",null,[i,t(a,{def:"for: string | CollectionProperty | CollectionValue",lang:"ts"}),u,d,t(a,{def:"model?: Model",lang:"ts"}),m,t(a,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),h])}const P=l(r,[["render",v]]);export{k as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.lean.js new file mode 100644 index 000000000..48270ff30 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select-values.md.C97aC2Yx.lean.js @@ -0,0 +1,2 @@ +import{_ as l,c as o,I as t,a7 as n,l as e,a as s,D as c,o as p}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-select-values","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select-values.md"},i=n("",6),u=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("A string with the name of the value belonging to "),e("code",null,"model"),s(".")]),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name.")],-1),m=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop.")],-1),h=e("p",null,[s("If binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(".")],-1);function v(D,y,f,_,g,C){const a=c("Prop");return p(),o("div",null,[i,t(a,{def:"for: string | CollectionProperty | CollectionValue",lang:"ts"}),u,d,t(a,{def:"model?: Model",lang:"ts"}),m,t(a,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),h])}const P=l(r,[["render",v]]);export{k as __pageData,P as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.js new file mode 100644 index 000000000..5462531f0 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.js @@ -0,0 +1,35 @@ +import{_ as l,c as t,I as o,l as e,a7 as a,a as s,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const R=JSON.parse('{"title":"c-select","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select.md"},i=a(`<h1 id="c-select" tabindex="-1">c-select <a class="header-anchor" href="#c-select" aria-label="Permalink to "c-select"">​</a></h1><p>A dropdown component that allows for selecting values fetched from the generated <code>/list</code> API endpoints.</p><p>Used for selecting values for foreign key and navigation properties, or for selecting arbitrary objects or primary keys without a parent or owning object.</p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples"">​</a></h2><p>Binding to a navigation property or foreign key of a model:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-select</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"company"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#6A9955;"> <!-- OR: --></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-select</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"companyId"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Binding an arbitrary primary key value or an arbitrary object:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;"> <!-- Binding a key: --></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-select</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person"</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">:</span><span style="color:#9CDCFE;">key-value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">selectedPersonId</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> <!-- Binding an object: --></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-select</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person"</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">:</span><span style="color:#9CDCFE;">object-value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">selectedPerson</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-select</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person"</span><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">selectedPerson</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>Examples of other props:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Person"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> v-model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">selectedPerson</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">clearable</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#9CDCFE;"> preselect-first</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{ </span><span style="color:#9CDCFE;">pageSize:</span><span style="color:#B5CEA8;"> 42</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">filter:</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">isActive:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;"> } }</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">create</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">createMethods</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#9CDCFE;"> dense</span></span> +<span class="line"><span style="color:#9CDCFE;"> outlined</span></span> +<span class="line"><span style="color:#9CDCFE;"> color</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"pink"</span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#6A9955;"><!-- \`createMethods\` is defined in the docs of \`create\` below --></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,11),D=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("The name of a foreign key or reference navigation property belonging to "),e("code",null,"model"),s(".")]),e("li",null,"The name of a model type."),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name that resolves to a foreign key or reference navigation property.")],-1),y=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,"When binding by a key value, if the corresponding object cannot be found (e.g. there is no navigation property, or the navigation property is null), c-select will automatically attempt to load the object from the server so it can be displayed in the UI.")],-1),u=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),s(" object.")],-1),h=e("p",null,[s("If "),e("code",null,"for"),s(" specifies a foreign key or reference navigation property, both the foreign key and the navigation property of the "),e("code",null,"model"),s(" will be updated when the selected value is changed.")],-1),C=e("p",null,[s("When binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(". If "),e("code",null,"for"),s(" was specified as a foreign key, this will expect a key; likewise, if "),e("code",null,"for"),s(" was specified as a type or as a navigation property, this will expect an object.")],-1),m=e("p",null,[s("When bound with "),e("code",null,'v-model:key-value="keyValue"'),s(", allows binding the primary key of the selected object explicitly.")],-1),f=e("p",null,[s("When bound with "),e("code",null,'v-model:object-value="objectValue"'),s(", allows binding the selected object explicitly.")],-1),g=e("p",null,[s("Whether the selection can be cleared or not, emitting "),e("code",null,"null"),s(" as the input value.")],-1),b=e("p",null,[s("If not specified and the component is bound to a foreign key or reference navigation property, defaults to whether or not the foreign key has a "),e("code",null,"required"),s(" validation rule defined in its "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata"),s(".")],-1),v=e("p",null,"If true, then when the first list results for the component are received by the client just after the component is created, c-select will emit the first item in the list as the selected value.",-1),_=e("p",null,"If true, then when the first list results for the component are received by the client just after the component is created, if the results contained exactly one item, c-select will emit that only item as the selected value.",-1),E=e("p",null,[s("If true, the list results will be reloaded when the dropdown menu is opened. By default, list results are loaded when the component is mounted and also when any of its parameters change (either search input or the "),e("code",null,"params"),s(" prop).")],-1),w=e("p",null,[s("An optional set of "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),s(" to pass to API calls made to the server.")],-1),F=e("p",null,[s("If provided and non-false, enables "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#response-caching"},"response caching"),s(" on the component's internal API callers.")],-1),k=e("p",null,"A object containing a pair of methods that allowing users to create new items from directly within the c-select if a matching object is not found.",-1),q=e("p",null,[s("The object must contain the following two methods. You should define these in your component's "),e("code",null,"script"),s(" section - don't try to define them inline in your component.")],-1),A={style:{"margin-left":"20px"}},P=e("p",null,"A function that will be called with the user's current search term, as well as the collection of currently loaded items being presented to the user as valid selection options.",-1),I=e("p",null,[s("It should return either a "),e("code",null,"string"),s(" that will be presented to the user as an option in the dropdown that can be clicked to invoke the "),e("code",null,"getItem"),s(" function below, or it should return "),e("code",null,"false"),s(" to prevent such an option from being shown to the user.")],-1),x=e("p",null,[s("A function that will be invoked when the user clicks the option in the dropdown list described by "),e("code",null,"getLabel"),s(". It will be given the user's current search term as well as the value of the label returned from "),e("code",null,"getLabel"),s(" as parameters. It must perform the necessary operations to create the new object on the server and then return a reference to that object.")],-1),j=a(`<p>For example:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#9CDCFE;">createMethods</span><span style="color:#D4D4D4;"> = {</span></span> +<span class="line"><span style="color:#DCDCAA;"> getLabel</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">search</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">items</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">Person</span><span style="color:#D4D4D4;">[]) {</span></span> +<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> searchLower</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">search</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toLowerCase</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">items</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">some</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">a</span><span style="color:#569CD6;"> =></span><span style="color:#9CDCFE;"> a</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">name</span><span style="color:#D4D4D4;">?.</span><span style="color:#DCDCAA;">toLowerCase</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">indexOf</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">searchLower</span><span style="color:#D4D4D4;">) == </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">)) {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> false</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> search</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"><span style="color:#569CD6;"> async</span><span style="color:#DCDCAA;"> getItem</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">search</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">label</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> client</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonApiClient</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (</span><span style="color:#C586C0;">await</span><span style="color:#9CDCFE;"> client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">addPersonByName</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">label</span><span style="color:#D4D4D4;">)).</span><span style="color:#9CDCFE;">data</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">object</span><span style="color:#D4D4D4;">!;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="slots" tabindex="-1">Slots <a class="header-anchor" href="#slots" aria-label="Permalink to "Slots"">​</a></h2><p><code>#item="{ item, search }"</code> - Slot used to customize the text of both items inside the list, as well as the text of selected items. By default, items are rendered with <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>. Slot is passed a parameter <code>item</code> containing a <a href="/Coalesce/stacks/vue/layers/models.html">model instance</a>, and <code>search</code> containing the current search query.</p><p><code>#list-item="{ item, search }"</code> - Slot used to customize the text of items inside the list. If not provided, falls back to the <code>item</code> slot.</p><p><code>#selected-item="{ item, search }"</code> - Slot used to customize the text of selected items. If not provided, falls back to the <code>item</code> slot.</p>`,6);function T(S,B,V,L,M,N){const n=p("Prop");return c(),t("div",null,[i,o(n,{def:"for: string | ForeignKeyProperty | ModelReferenceNavigationProperty | ModelType",lang:"ts"}),D,d,y,o(n,{def:"model?: Model",lang:"ts"}),u,h,o(n,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),C,o(n,{def:"keyValue?: any",lang:"ts"}),m,o(n,{def:"objectValue?: any",lang:"ts"}),f,o(n,{def:"clearable?: boolean",lang:"ts"}),g,b,o(n,{def:"preselectFirst?: boolean = false",lang:"ts"}),v,o(n,{def:"preselectSingle?: boolean = false",lang:"ts"}),_,o(n,{def:"reloadOnOpen?: boolean = false",lang:"ts"}),E,o(n,{def:"params?: ListParameters",lang:"ts"}),w,o(n,{def:"cache?: ResponseCachingConfiguration | boolean",lang:"ts"}),F,o(n,{def:`create?: { + getLabel: (search: string, items: TModel[]) => string | false, + getItem: (search: string, label: string) => Promise<TModel> +}`,lang:"ts"}),k,q,e("div",A,[o(n,{def:"create.getLabel: (search: string, items: TModel[]) => string | false",lang:"ts",id:"member-create-getLabel"}),P,I,o(n,{def:"create.getItem: (search: string, label: string) => Promise<TModel>",lang:"ts",id:"member-create-getItem"}),x]),j])}const W=l(r,[["render",T]]);export{R as __pageData,W as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.lean.js new file mode 100644 index 000000000..fd399f9a7 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-select.md.DdKRtVnt.lean.js @@ -0,0 +1,5 @@ +import{_ as l,c as t,I as o,l as e,a7 as a,a as s,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const R=JSON.parse('{"title":"c-select","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-select.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-select.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-select.md"},i=a("",11),D=e("p",null,"A metadata specifier for the value being bound. One of:",-1),d=e("ul",null,[e("li",null,[s("The name of a foreign key or reference navigation property belonging to "),e("code",null,"model"),s(".")]),e("li",null,"The name of a model type."),e("li",null,"A direct reference to a metadata object."),e("li",null,"A string in dot-notation that starts with a type name that resolves to a foreign key or reference navigation property.")],-1),y=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,"When binding by a key value, if the corresponding object cannot be found (e.g. there is no navigation property, or the navigation property is null), c-select will automatically attempt to load the object from the server so it can be displayed in the UI.")],-1),u=e("p",null,[s("An object owning the value that was specified by the "),e("code",null,"for"),s(" prop. If provided, the input will be bound to the corresponding property on the "),e("code",null,"model"),s(" object.")],-1),h=e("p",null,[s("If "),e("code",null,"for"),s(" specifies a foreign key or reference navigation property, both the foreign key and the navigation property of the "),e("code",null,"model"),s(" will be updated when the selected value is changed.")],-1),C=e("p",null,[s("When binding the component with "),e("code",null,"v-model"),s(", accepts the "),e("code",null,"value"),s(" part of "),e("code",null,"v-model"),s(". If "),e("code",null,"for"),s(" was specified as a foreign key, this will expect a key; likewise, if "),e("code",null,"for"),s(" was specified as a type or as a navigation property, this will expect an object.")],-1),m=e("p",null,[s("When bound with "),e("code",null,'v-model:key-value="keyValue"'),s(", allows binding the primary key of the selected object explicitly.")],-1),f=e("p",null,[s("When bound with "),e("code",null,'v-model:object-value="objectValue"'),s(", allows binding the selected object explicitly.")],-1),g=e("p",null,[s("Whether the selection can be cleared or not, emitting "),e("code",null,"null"),s(" as the input value.")],-1),b=e("p",null,[s("If not specified and the component is bound to a foreign key or reference navigation property, defaults to whether or not the foreign key has a "),e("code",null,"required"),s(" validation rule defined in its "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata"),s(".")],-1),v=e("p",null,"If true, then when the first list results for the component are received by the client just after the component is created, c-select will emit the first item in the list as the selected value.",-1),_=e("p",null,"If true, then when the first list results for the component are received by the client just after the component is created, if the results contained exactly one item, c-select will emit that only item as the selected value.",-1),E=e("p",null,[s("If true, the list results will be reloaded when the dropdown menu is opened. By default, list results are loaded when the component is mounted and also when any of its parameters change (either search input or the "),e("code",null,"params"),s(" prop).")],-1),w=e("p",null,[s("An optional set of "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Data Source Standard Parameters"),s(" to pass to API calls made to the server.")],-1),F=e("p",null,[s("If provided and non-false, enables "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#response-caching"},"response caching"),s(" on the component's internal API callers.")],-1),k=e("p",null,"A object containing a pair of methods that allowing users to create new items from directly within the c-select if a matching object is not found.",-1),q=e("p",null,[s("The object must contain the following two methods. You should define these in your component's "),e("code",null,"script"),s(" section - don't try to define them inline in your component.")],-1),A={style:{"margin-left":"20px"}},P=e("p",null,"A function that will be called with the user's current search term, as well as the collection of currently loaded items being presented to the user as valid selection options.",-1),I=e("p",null,[s("It should return either a "),e("code",null,"string"),s(" that will be presented to the user as an option in the dropdown that can be clicked to invoke the "),e("code",null,"getItem"),s(" function below, or it should return "),e("code",null,"false"),s(" to prevent such an option from being shown to the user.")],-1),x=e("p",null,[s("A function that will be invoked when the user clicks the option in the dropdown list described by "),e("code",null,"getLabel"),s(". It will be given the user's current search term as well as the value of the label returned from "),e("code",null,"getLabel"),s(" as parameters. It must perform the necessary operations to create the new object on the server and then return a reference to that object.")],-1),j=a("",6);function T(S,B,V,L,M,N){const n=p("Prop");return c(),t("div",null,[i,o(n,{def:"for: string | ForeignKeyProperty | ModelReferenceNavigationProperty | ModelType",lang:"ts"}),D,d,y,o(n,{def:"model?: Model",lang:"ts"}),u,h,o(n,{def:`value?: any // Vue 2 +modelValue?: any // Vue 3`,lang:"ts"}),C,o(n,{def:"keyValue?: any",lang:"ts"}),m,o(n,{def:"objectValue?: any",lang:"ts"}),f,o(n,{def:"clearable?: boolean",lang:"ts"}),g,b,o(n,{def:"preselectFirst?: boolean = false",lang:"ts"}),v,o(n,{def:"preselectSingle?: boolean = false",lang:"ts"}),_,o(n,{def:"reloadOnOpen?: boolean = false",lang:"ts"}),E,o(n,{def:"params?: ListParameters",lang:"ts"}),w,o(n,{def:"cache?: ResponseCachingConfiguration | boolean",lang:"ts"}),F,o(n,{def:`create?: { + getLabel: (search: string, items: TModel[]) => string | false, + getItem: (search: string, label: string) => Promise<TModel> +}`,lang:"ts"}),k,q,e("div",A,[o(n,{def:"create.getLabel: (search: string, items: TModel[]) => string | false",lang:"ts",id:"member-create-getLabel"}),P,I,o(n,{def:"create.getItem: (search: string, label: string) => Promise<TModel>",lang:"ts",id:"member-create-getItem"}),x]),j])}const W=l(r,[["render",T]]);export{R as __pageData,W as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.js new file mode 100644 index 000000000..056357718 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.js @@ -0,0 +1,17 @@ +import{_ as o,c as t,I as l,a7 as n,l as s,a as e,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-table","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-table.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-table.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-table.md"},i=n(`<h1 id="c-table" tabindex="-1">c-table <a class="header-anchor" href="#c-table" aria-label="Permalink to "c-table"">​</a></h1><p>A table component for displaying the contents of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>. Also supports modifying the list's <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">sort parameters</a> by clicking on column headers. Pairs well with a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html">c-list-pagination</a>.</p><h2 id="example-usage" tabindex="-1">Example Usage <a class="header-anchor" href="#example-usage" aria-label="Permalink to "Example Usage"">​</a></h2><p>A simple table, rendering the items of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-table</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> /</span><span style="color:#808080;">></span></span></code></pre></div><p>A more complex example using more of the available options:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-table</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">props</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">'firstName'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'lastName'</span><span style="color:#D4D4D4;">]</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">extra-headers</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">'Actions'</span><span style="color:#D4D4D4;">]</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">template</span><span style="color:#D4D4D4;"> #</span><span style="color:#9CDCFE;">item-append</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">}</span><span style="color:#D4D4D4;">"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">td</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">v-btn</span></span> +<span class="line"><span style="color:#9CDCFE;"> title</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"Edit"</span></span> +<span class="line"><span style="color:#9CDCFE;"> text</span><span style="color:#9CDCFE;"> icon</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">to</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{</span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> 'edit-person'</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">params:</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">id:</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$primaryKey</span><span style="color:#D4D4D4;"> }}</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#808080;"> ></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">i</span><span style="color:#9CDCFE;"> class</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"fa fa-edit"</span><span style="color:#808080;">></</span><span style="color:#569CD6;">i</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">v-btn</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">td</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">c-table</span><span style="color:#808080;">></span></span></code></pre></div><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props"">​</a></h2>`,8),d=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" to display pagination information for.")],-1),D=s("p",null,"If provided, specifies which properties, and their ordering, should be given a column in the table.",-1),y=s("p",null,[e("If not provided, all non-key columns that aren't annotated with "),s("a",{href:"/Coalesce/modeling/model-components/attributes/hidden.html"},"[Hidden(HiddenAttribute.Areas.List)]"),e(" are given a column.")],-1),h=s("p",null,[e("The text contents of one or more extra "),s("code",null,"th"),e(" elements to render in the table. Each header can be defined as either fixed (sticky) or scrollable. Should be used in conjunction with the "),s("code",null,"item-append"),e(" slot.")],-1),u=s("p",null,[e("If true, properties in each table cell will be rendered with "),s("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html"},"c-input"),e(". Non-editable properties will be rendered in accordance with the value of the "),s("code",null,"admin"),e(" prop.")],-1),m=n('<p>If true, properties in each table cell will be rendered with <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-display.html">c-admin-display</a> instead of <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>.</p><h2 id="slots" tabindex="-1">Slots <a class="header-anchor" href="#slots" aria-label="Permalink to "Slots"">​</a></h2><p><code>item-append</code> - A slot rendered after the <code>td</code> elements on each row that render the properties of each item in the table. Should be provided zero or more additional <code>td</code> elements. The number should match the number of additional headers provided to the <code>extraHeaders</code> prop.</p>',3);function C(f,b,_,v,g,E){const a=p("Prop");return c(),t("div",null,[i,l(a,{def:"list: ListViewModel",lang:"ts"}),d,l(a,{def:"props?: string[]",lang:"ts"}),D,y,l(a,{def:"extraHeaders?: string[] | {header: string; isFixed: boolean }[]",lang:"ts"}),h,l(a,{def:"editable: boolean = false",lang:"ts"}),u,l(a,{def:"admin: boolean = false",lang:"ts"}),m])}const x=o(r,[["render",C]]);export{k as __pageData,x as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.lean.js new file mode 100644 index 000000000..6184b440f --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_components_c-table.md.CleDHzqH.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,I as l,a7 as n,l as s,a as e,D as p,o as c}from"./chunks/framework.BkavzUpE.js";const k=JSON.parse('{"title":"c-table","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/components/c-table.md","filePath":"stacks/vue/coalesce-vue-vuetify/components/c-table.md"}'),r={name:"stacks/vue/coalesce-vue-vuetify/components/c-table.md"},i=n("",8),d=s("p",null,[e("The "),s("a",{href:"/Coalesce/stacks/vue/layers/viewmodels.html"},"ListViewModel"),e(" to display pagination information for.")],-1),D=s("p",null,"If provided, specifies which properties, and their ordering, should be given a column in the table.",-1),y=s("p",null,[e("If not provided, all non-key columns that aren't annotated with "),s("a",{href:"/Coalesce/modeling/model-components/attributes/hidden.html"},"[Hidden(HiddenAttribute.Areas.List)]"),e(" are given a column.")],-1),h=s("p",null,[e("The text contents of one or more extra "),s("code",null,"th"),e(" elements to render in the table. Each header can be defined as either fixed (sticky) or scrollable. Should be used in conjunction with the "),s("code",null,"item-append"),e(" slot.")],-1),u=s("p",null,[e("If true, properties in each table cell will be rendered with "),s("a",{href:"/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html"},"c-input"),e(". Non-editable properties will be rendered in accordance with the value of the "),s("code",null,"admin"),e(" prop.")],-1),m=n("",3);function C(f,b,_,v,g,E){const a=p("Prop");return c(),t("div",null,[i,l(a,{def:"list: ListViewModel",lang:"ts"}),d,l(a,{def:"props?: string[]",lang:"ts"}),D,y,l(a,{def:"extraHeaders?: string[] | {header: string; isFixed: boolean }[]",lang:"ts"}),h,l(a,{def:"editable: boolean = false",lang:"ts"}),u,l(a,{def:"admin: boolean = false",lang:"ts"}),m])}const x=o(r,[["render",C]]);export{k as __pageData,x as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.js b/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.js new file mode 100644 index 000000000..7213dddeb --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Vuetify Components","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/overview.md","filePath":"stacks/vue/coalesce-vue-vuetify/overview.md"}'),s={name:"stacks/vue/coalesce-vue-vuetify/overview.md"},l=o('<h1 id="vuetify-components" tabindex="-1">Vuetify Components <a class="header-anchor" href="#vuetify-components" aria-label="Permalink to "Vuetify Components"">​</a></h1><p><a href="https://www.npmjs.com/package/coalesce-vue-vuetify2" target="_blank" rel="noreferrer"><img src="https://img.shields.io/npm/v/coalesce-vue-vuetify2/latest?color=0176b5&label=coalesce-vue-vuetify2%40latest&logo=npm" alt=""></a><a href="https://www.npmjs.com/package/coalesce-vue-vuetify3" target="_blank" rel="noreferrer"><img src="https://img.shields.io/npm/v/coalesce-vue-vuetify3/latest?color=0176b5&label=coalesce-vue-vuetify3%40latest&logo=npm" alt=""></a></p><p>The <a href="https://vuejs.org/" target="_blank" rel="noreferrer">Vue</a> stack for Coalesce provides <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">a set of components</a> based on <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a>, packaged up in an NPM package <a href="https://www.npmjs.com/package/coalesce-vue-vuetify2" target="_blank" rel="noreferrer">coalesce-vue-vuetify2</a> or <a href="https://www.npmjs.com/package/coalesce-vue-vuetify3" target="_blank" rel="noreferrer">coalesce-vue-vuetify3</a>. These components are driven primarily by the <a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata Layer</a>, and include both low level input and display components like <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> that are highly reusable in the custom pages you'll build in your application, as well as high-level components like <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html">c-admin-editor-page</a> that constitute entire pages.</p><h2 id="setup" tabindex="-1">Setup <a class="header-anchor" href="#setup" aria-label="Permalink to "Setup"">​</a></h2><p>All Coalesce projects should be started from the template described in <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started with Vue</a>, and will therefore have all the setup completed for you.</p><p>If for whatever reason you find yourself adding Coalesce to an existing project, use the template as a reference for what configuration needs to be added to your project.</p><h2 id="display-components" tabindex="-1">Display Components <a class="header-anchor" href="#display-components" aria-label="Permalink to "Display Components"">​</a></h2><table><thead><tr><th width="170px">Component</th><th>Description</th></tr></thead><tr><td><p><a href="./components/c-display.html">c-display</a></p></td><td><p>A general-purpose component for displaying any <a href="/Coalesce/stacks/vue/layers/metadata.html#value">Value</a> by rendering the value to a string with the <a href="/Coalesce/stacks/vue/layers/models.html#VueModelDisplayFunctions">display functions from the Models Layer</a>. For plain string and number <a href="/Coalesce/stacks/vue/layers/metadata.html">values</a>, usage of this component is largely superfluous. For all other value types including dates, booleans, enums, objects, and collections, it is very handy.</p></td></tr><tr><td><p><a href="./components/c-loader-status.html">c-loader-status</a></p></td><td><p>A component for displaying progress and error information for one or more <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a>.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It is highly recommended that all <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Callers</a> utilized by your application that don't have any other kind of error handling should be represented by a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html">c-loader-status</a> so that users can be aware of any errors that occur.</p></div></td></tr><tr><td><p><a href="./components/c-list-range-display.html">c-list-range-display</a></p></td><td><p>Displays pagination information about the current <code>$items</code> of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a> in the format <code><start index> - <end index> of <total count></code>.</p></td></tr><tr><td><p><a href="./components/c-table.html">c-table</a></p></td><td><p>A table component for displaying the contents of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>. Also supports modifying the list's <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">sort parameters</a> by clicking on column headers. Pairs well with a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html">c-list-pagination</a>.</p></td></tr></table><h2 id="input-components" tabindex="-1">Input Components <a class="header-anchor" href="#input-components" aria-label="Permalink to "Input Components"">​</a></h2><table><thead><tr><th width="170px">Component</th><th>Description</th></tr></thead><tr><td><p><a href="./components/c-input.html">c-input</a></p></td><td><p>A general-purpose input component for most <a href="/Coalesce/stacks/vue/layers/metadata.html">Values</a>. c-input delegates to other components based on the type of value it is bound to. This includes both other <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Coalesce Vuetify Components</a> as well as direct usages of some <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> components.</p></td></tr><tr><td><p><a href="./components/c-select.html">c-select</a></p></td><td><p>A dropdown component that allows for selecting values fetched from the generated <code>/list</code> API endpoints.</p><p>Used for selecting values for foreign key and navigation properties, or for selecting arbitrary objects or primary keys without a parent or owning object.</p></td></tr><tr><td><p><a href="./components/c-datetime-picker.html">c-datetime-picker</a></p></td><td><p>A general, all-purpose date/time input component that can be used either with <a href="/Coalesce/stacks/vue/layers/models.html">models</a> and <a href="/Coalesce/stacks/vue/layers/metadata.html">metadata</a> or as a standalone component using only <code>v-model</code>.</p></td></tr><tr><td><p><a href="./components/c-select-many-to-many.html">c-select-many-to-many</a></p></td><td><p>A multi-select dropdown component that allows for selecting values fetched from the generated <code>/list</code> API endpoints for collection navigation properties that were annotated with <a href="/Coalesce/modeling/model-components/attributes/many-to-many.html">[ManyToMany]</a>.</p></td></tr><tr><td><p><a href="./components/c-select-string-value.html">c-select-string-value</a></p></td><td><p>A dropdown component that will present a list of suggested string values from a custom API endpoint. Allows users to input values that aren't provided by the endpoint.</p><p>Effectively, this is a server-driven autocomplete list.</p></td></tr><tr><td><p><a href="./components/c-select-values.html">c-select-values</a></p></td><td><p>A multi-select input component for collections of non-object values (primarily strings and numbers).</p></td></tr><tr><td><p><a href="./components/c-list-filters.html">c-list-filters</a></p></td><td><p>A component that provides an interface for modifying the <code>filters</code> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>'s <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameters</a>.</p></td></tr><tr><td><p><a href="./components/c-list-pagination.html">c-list-pagination</a></p></td><td><p>A component that provides an interface for modifying the pagination <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameters</a> of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p><p>This is a composite of <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html">c-list-page-size</a>, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html">c-list-range-display</a>, and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html">c-list-page</a>, arranged horizontally. It is designed to be used above or below a table (e.g. <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-table.html">c-table</a>).</p></td></tr><tr><td><p><a href="./components/c-list-page-size.html">c-list-page-size</a></p></td><td><p>A component that provides an dropdown for modifying the <code>pageSize</code> <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameter</a> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p></td></tr><tr><td><p><a href="./components/c-list-page.html">c-list-page</a></p></td><td><p>A component that provides previous/next buttons and a text field for modifying the <code>page</code> <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">parameter</a> prop of a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p></td></tr></table><h2 id="admin-components" tabindex="-1">Admin Components <a class="header-anchor" href="#admin-components" aria-label="Permalink to "Admin Components"">​</a></h2><table><thead><tr><th width="170px">Component</th><th>Description</th></tr></thead><tr><td><p><a href="./components/c-admin-method.html">c-admin-method</a></p></td><td><p>Provides an interface for invoking a <a href="/Coalesce/modeling/model-components/methods.html">method</a> and rendering its result, designed to be use in an admin page.</p></td></tr><tr><td><p><a href="./components/c-admin-methods.html">c-admin-methods</a></p></td><td><p>Renders in a <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a> <a href="https://vuetifyjs.com/en/components/expansion-panels/" target="_blank" rel="noreferrer">v-expansion-panels</a> a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html">c-admin-method</a> for each method on a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> or <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>.</p></td></tr><tr><td><p><a href="./components/c-admin-display.html">c-admin-display</a></p></td><td><p>Behaves the same as <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a>, except any collection navigation properties will be rendered as links to an admin list page, and any models will be rendered as a link to an admin item page.</p></td></tr><tr><td><p><a href="./components/c-admin-editor.html">c-admin-editor</a></p></td><td><p>An editor for a single <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> instance. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> for each property of the model.</p></td></tr><tr><td><p><a href="./components/c-admin-editor-page.html">c-admin-editor-page</a></p></td><td><p>A page for a creating/editing single <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel</a> instance. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html">c-admin-editor</a> and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html">c-admin-methods</a> for the instance. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p></td></tr><tr><td><p><a href="./components/c-admin-table.html">c-admin-table</a></p></td><td><p>An full-featured table for a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>, including a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html">c-admin-table-toolbar</a>, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-table.html">c-table</a>, and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html">c-list-pagination</a>.</p></td></tr><tr><td><p><a href="./components/c-admin-table-toolbar.html">c-admin-table-toolbar</a></p></td><td><p>A full-featured toolbar for a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a> designed to be used on an admin page, including "Create" and "Reload" buttons, a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html">c-list-range-display</a>, a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html">c-list-page</a>, a search field, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html">c-list-filters</a>, and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html">c-list-page-size</a>.</p></td></tr><tr><td><p><a href="./components/c-admin-table-page.html">c-admin-table-page</a></p></td><td><p>A full-featured page for interacting with a <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ListViewModel</a>. Provides a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html">c-admin-table</a> and a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html">c-admin-methods</a> for the list. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p></td></tr><tr><td><p><a href="./components/c-admin-audit-log-page.html">c-admin-audit-log-page</a></p></td><td><p>A full-featured page for interacting with Coalesce's <a href="/Coalesce/topics/audit-logging.html">Audit Logging</a>. Presents a view similar to <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a> with content optimized for viewing audit log records. Designed to be routed to directly with <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>.</p></td></tr></table>',12),n=[l];function r(c,i,d,p,m,h){return a(),t("div",null,n)}const v=e(s,[["render",r]]);export{f as __pageData,v as default}; diff --git a/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.lean.js b/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.lean.js new file mode 100644 index 000000000..89ef3e8a4 --- /dev/null +++ b/assets/stacks_vue_coalesce-vue-vuetify_overview.md._zK0S1J_.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Vuetify Components","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/coalesce-vue-vuetify/overview.md","filePath":"stacks/vue/coalesce-vue-vuetify/overview.md"}'),s={name:"stacks/vue/coalesce-vue-vuetify/overview.md"},l=o("",12),n=[l];function r(c,i,d,p,m,h){return a(),t("div",null,n)}const v=e(s,[["render",r]]);export{f as __pageData,v as default}; diff --git a/assets/stacks_vue_getting-started.md.cvpjxbz6.js b/assets/stacks_vue_getting-started.md.cvpjxbz6.js new file mode 100644 index 000000000..570115804 --- /dev/null +++ b/assets/stacks_vue_getting-started.md.cvpjxbz6.js @@ -0,0 +1,42 @@ +import{d as w,a9 as f,g as k,j as D,x as A,o as c,c as d,l as e,F as x,E,m as T,a5 as C,aa as S,P as b,ab as I,t as l,a as o,e as v,h as _,I as P,a7 as g}from"./chunks/framework.BkavzUpE.js";const N="http://json.schemastore.org/template",F="IntelliTect",j=["Web","MVC","Vue"],q="IntelliTect.Coalesce.Vue.Template",M="IntelliTect Coalesce Web App Vue Template",V="coalescevue",R={language:"C#",type:"project"},$="Coalesce.Starter.Vue",B=!0,L={KestrelPortGenerated:{type:"generated",generator:"port",parameters:{fallback:5001},replaces:"5001"},VitePortGenerated:{type:"generated",generator:"port",parameters:{fallback:5002},replaces:"5002"},Identity:{type:"parameter",datatype:"bool",displayName:"ASP.NET Core Identity",description:"Adds ASP.NET Core Identity, providing user storage, authentication, and authorization mechanisms. Also includes a permission-based security model. If you don't include Identity, you'll have to build your auth stack from scratch.",$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity"},MicrosoftAuth:{type:"parameter",datatype:"bool",displayName:"Sign-in with Microsoft",description:"Adds Microsoft as an external authentication and account provider for Identity.",$coalesceRequires:["and","Identity"],$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins"},GoogleAuth:{type:"parameter",datatype:"bool",displayName:"Sign-in with Google",description:"Adds Google as an external authentication and account provider for Identity.",$coalesceRequires:["and","Identity"],$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins"},UserPictures:{type:"parameter",datatype:"bool",displayName:"User Profile Pictures",description:"Adds infrastructure for acquiring, saving, and displaying user profile pictures.",$coalesceRequires:["and","Identity"]},TrackingBase:{type:"parameter",datatype:"bool",displayName:"Tracking Base",description:"Include a base entity class for tracking created/modified by and date stamps on each entity, and infrastructure for automatically setting those fields."},AuditLogs:{type:"parameter",datatype:"bool",displayName:"Audit Logging",description:"Adds Coalesce audit logging infrastructure, logging each change made to the database through Entity Framework.",$coalesceLink:"/topics/audit-logging.html"},DarkMode:{type:"parameter",datatype:"bool",displayName:"Dark Mode Toggle",description:"Adds features for user-togglable dark mode. Don't use if you're developing a light-only or dark-only application."},ExampleModel:{type:"parameter",datatype:"bool",displayName:"Sample Page",description:"Includes a 'Widget' example model with a basic Vue page, frontend tests, and backend tests."},OpenAPI:{type:"parameter",datatype:"bool",displayName:"OpenAPI/Swagger",description:"Include configuration to expose an OpenAPI document and SwaggerUI using Swashbuckle."},Tenancy:{type:"parameter",datatype:"bool",displayName:"Tenancy: Core",description:"Includes core infrastructure for supporting multiple tenants within one shared database, with shared user accounts.",$coalesceRequires:["and","Identity"]},TenantCreateSelf:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation by Self-service",description:"Allows any signed in user to create additional tenants.",$coalesceRequires:["and","Tenancy"]},TenantCreateAdmin:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation by Global Admin",description:"Allows global admins to create new tenants.",$coalesceRequires:["and","Tenancy"]},TenantCreateExternal:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation/Membership by OIDC",description:"Automatically creates a new tenant for external organizations (Microsoft Entra, Google GSuite), and grants automatic tenant membership to other users within those organizations.",$coalesceRequires:["and","Tenancy",["or","MicrosoftAuth","GoogleAuth"]]},TenantMemberInvites:{type:"parameter",datatype:"bool",displayName:"Tenancy: Membership by Invitation",description:"Allows administrators within a tenant to create invitation links to grant membership to their tenant.",$coalesceRequires:["and","Tenancy"]},AppInsights:{type:"parameter",datatype:"bool",displayName:"Azure Application Insights",description:"Include configuration and integrations for Application Insights, both front-end and back-end.",$coalesceLink:"https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview"},AzurePipelines:{type:"parameter",datatype:"bool",displayName:"CI: Azure Pipelines",description:"Include an azure-pipelines.yml build template. For deployments, a release pipeline is recommended (which don't support YAML config files).",$coalesceLink:"https://learn.microsoft.com/en-us/azure/devops/pipelines/create-first-pipeline?view=azure-devops&tabs=net%2Cbrowser"},GithubActions:{type:"parameter",datatype:"bool",displayName:"CI: Github Actions",description:"Include an build-test-and-deploy.yml github action file template.",$coalesceLink:"https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service"}},z=[{modifiers:[{exclude:["**/[Bb]in/**","**/[Oo]bj/**","**/node_modules/**",".template.config/**/*","**/*.filelist","**/*.user","**/*.g.cs","**/*.g.ts","**/*.lock.json"]},{condition:"!Identity",exclude:["**/AuthenticationConfiguration.cs","**/Forbidden.vue","**/UserAvatar.vue","**/UserProfile.vue","**/SignIn.*","**/SignOut.*","**/AppClaimTypes.cs","**/ClaimsPrincipalFactory.cs","**/Permission.cs","**/User.cs","**/UserRole.cs","**/Role.cs"]},{condition:"!MicrosoftAuth && !GoogleAuth",exclude:["**/SignInService.cs"]},{condition:"!Tenancy",exclude:["**/Tenant.cs","**/DbContextFactoryExtensions.cs","**/TenantMembership.cs","**/ITenanted.cs","**/TenantedBase.cs","**/SelectTenant.*"]},{condition:"!TenantCreateSelf",exclude:["**/CreateTenant.*"]},{condition:"!(TenantMemberInvites || TenantCreateAdmin)",exclude:["**/Invitation.*","**/InvitationService.*","**/UserInvitation.*"]},{condition:"!(UserPictures && Identity)",exclude:["Coalesce.Starter.Vue.Data/Models/UserPhoto.cs"]},{condition:"!AuditLogs",exclude:["**/AuditOperationContext.cs","**/AuditLog.cs"]},{condition:"!TrackingBase",exclude:["**/TrackingBase.cs"]},{condition:"!AppInsights",exclude:["**/AppInsightsTelemetryEnricher.cs"]},{condition:"!GoogleAuth",exclude:["**/google-logo.svg"]},{condition:"!MicrosoftAuth",exclude:["**/microsoft-logo.svg"]},{condition:"!ExampleModel",exclude:["**/WidgetEdit.vue","**/WidgetEdit.spec.ts","**/Widget.cs"]},{condition:"!AzurePipelines",exclude:["**/azure-pipelines.yml"]},{condition:"!GithubActions",exclude:["**/.github"]}]}],W={"**.vue":{operations:[{type:"conditional",configuration:{if:["//#if"],else:["//#else"],elseif:["//#elseif"],endif:["//#endif"],actionableIf:["////#if"],actionableElse:["////#else"],actionableElseif:["////#elseif"],actions:["cStyleUncomment","cStyleReduceComment"],trim:!0,wholeLine:!0,evaluator:"C++"}},{type:"conditional",configuration:{endif:["#endif","<!--#endif"],actionableIf:["<!--#if"],actionableElse:["#else","<!--#else"],actionableElseif:["#elseif","<!--#elseif","#elif","<!--#elif"],trim:!0,wholeLine:!0,evaluator:"C++"}},{type:"replacement",configuration:{original:"//",replacement:"",id:"cStyleUncomment"}},{type:"replacement",configuration:{original:"////",replacement:"//",id:"cStyleReduceComment"}}]}},G={$schema:N,author:F,classifications:j,identity:q,name:M,shortName:V,tags:R,sourceName:$,preferNameDirectory:B,symbols:L,sources:z,SpecialCustomOperations:W},O={class:"template-builder"},U={class:"border",style:{padding:"4px"}},Y=["disabled","value"],J={style:{"flex-grow":"1"}},H={style:{"font-weight":"bold"}},K={style:{"font-size":"18px"}},Q={style:{float:"right"}},X={style:{"font-size":"small"}},Z={style:{"font-size":"12px","line-height":"1.3","margin-top":"4px"}},ee={style:{"white-space":"pre-wrap"}},se=["href"],te=e("hr",null,null,-1),ae={style:{padding:"0 12px 14px",display:"flex","align-items":"center"}},oe=e("span",{style:{"font-weight":"bold","font-size":"18px","padding-right":"8px"}}," Root Namespace: ",-1),ne=w({__name:"TemplateBuilder",props:{options:{},optionsModifiers:{},namespace:{},namespaceModifiers:{}},emits:["update:options","update:namespace"],setup(h){const u=f(h,"options"),r=f(h,"namespace"),p=Object.entries(G.symbols).map(([t,s])=>({...s,key:t,get meetsReqs(){return!("$coalesceRequires"in s)||y(s.$coalesceRequires)},get requires(){return"$coalesceRequires"in s?i(s.$coalesceRequires):null},link:"$coalesceLink"in s?s.$coalesceLink.startsWith("/")?k(s.$coalesceLink):s.$coalesceLink:void 0})).filter(t=>t.type=="parameter"),n=D(["Identity","TrackingBase","DarkMode","AuditLogs","UserPictures","ExampleModel"]);A(n,t=>{u.value=t.map(s=>"--"+s).join(" ")},{immediate:!0});function y(t){if(t[0]=="and")return t.slice(1).every(s=>typeof s=="string"?n.value.includes(s):y(s));if(t[0]=="or")return t.slice(1).some(s=>typeof s=="string"?n.value.includes(s):y(s))}function i(t){if(t[0]=="and")return t.slice(1).map(s=>{var a;return typeof s=="string"?(a=p.find(m=>m.key==s))==null?void 0:a.displayName:"("+i(s)+")"}).join(" and ");if(t[0]=="or")return t.slice(1).map(s=>{var a;return typeof s=="string"?(a=p.find(m=>m.key==s))==null?void 0:a.displayName:"("+i(s)+")"}).join(" or ")}return(t,s)=>(c(),d("div",O,[e("div",U,[(c(!0),d(x,null,E(T(p),a=>(c(),d("label",{key:a.key,style:b({opacity:a.meetsReqs?1:.5}),class:"template-builder-option"},[C(e("input",{type:"checkbox",disabled:!a.meetsReqs,"onUpdate:modelValue":s[0]||(s[0]=m=>n.value=m),value:a.key},null,8,Y),[[I,n.value]]),e("div",J,[e("div",H,[e("span",K,l(a.displayName),1),e("div",Q,[e("code",X,"--"+l(a.key),1)])]),e("div",Z,[e("div",ee,[o(l(a.description)+" ",1),a.link?(c(),d("a",{key:0,href:a.link,target:"_blank"}," Read More",8,se)):v("",!0)]),a.requires?(c(),d("div",{key:0,style:b([{"font-style":"italic","margin-top":"0px",transition:"max-height 0.25s",overflow:"hidden"},{maxHeight:a.meetsReqs?"0px":"30px"}])}," Requires "+l(a.requires),5)):v("",!0)])])],4))),128)),te,e("label",ae,[oe,C(e("input",{type:"text","onUpdate:modelValue":s[1]||(s[1]=a=>r.value=a),placeholder:"MyCompany.MyProject",class:"border",style:{padding:"6px 12px","font-family":"monospace","font-size":"16px","margin-top":"4px","border-color":"var(--v-c-text-2)","background-color":"field","flex-grow":"1"}},null,512),[[S,r.value]])])])]))}}),le=g('<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started"">​</a></h1><h2 id="environment-setup" tabindex="-1">Environment Setup <a class="header-anchor" href="#environment-setup" aria-label="Permalink to "Environment Setup"">​</a></h2><p>Before you begin, ensure that you have all the requisite tools installed</p><ul><li>Recent version of the <a href="https://dotnet.microsoft.com/en-us/download" target="_blank" rel="noreferrer">.NET SDK</a>. If you have Visual Studio, you already have this.</li><li>A recent version of <a href="https://nodejs.org/" target="_blank" rel="noreferrer">Node.js</a> (an LTS version is recommended).</li><li>A compatible IDE <ul><li>Recommended: <ul><li>Visual Studio for backend (C#) development</li><li>VS Code for frontend (Vue, TypeScript) development (with <a href="https://marketplace.visualstudio.com/items?itemName=Vue.volar" target="_blank" rel="noreferrer">Vue - Official</a>)</li></ul></li><li>Alternatively, you could use any of these: <ul><li>VS Code for full stack development</li><li>JetBrains Rider</li></ul></li></ul></li></ul><h2 id="creating-a-project" tabindex="-1">Creating a Project <a class="header-anchor" href="#creating-a-project" aria-label="Permalink to "Creating a Project"">​</a></h2><p>The quickest and easiest way to create a new Coalesce Vue application is to use the <code>dotnet new</code> template.</p><p>First, select the features that you would like included in your project, and choose the root .NET namespace of your project:</p>',7),ie=e("code",null,"sources",-1),re=e("code",null,"repos",-1),pe={class:"template-code"},ce={class:"language-sh"},de=e("button",{title:"Copy Code",class:"copy"},null,-1),ue=e("span",{class:"lang"},"sh",-1),ye={class:"shiki dark-plus vp-code"},me=g('<span class="line"><span style="color:#DCDCAA;">dotnet</span><span style="color:#CE9178;"> new</span><span style="color:#CE9178;"> install</span><span style="color:#CE9178;"> IntelliTect.Coalesce.Vue.Template</span></span>',1),he={class:"line"},De=e("span",{style:{color:"#DCDCAA"}},"dotnet",-1),ge=e("span",{style:{color:"#CE9178"}}," new",-1),fe=e("span",{style:{color:"#CE9178"}}," coalescevue",-1),Ce=e("span",{style:{color:"#569CD6"}}," -n",-1),be={style:{color:"#CE9178"}},ve=e("span",{style:{color:"#569CD6"}}," -o",-1),_e={style:{color:"#CE9178"}},we={style:{color:"#CE9178"}},ke={class:"line"},Ae=e("span",{style:{color:"#DCDCAA"}},"cd",-1),xe={style:{color:"#CE9178"}},Ee=e("span",{style:{color:"#569CD6"}},"*",-1),Te=e("span",{style:{color:"#CE9178"}},".Web",-1),Se=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," ci")],-1),Ie=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," lint:fix")],-1),Pe=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"dotnet"),e("span",{style:{color:"#CE9178"}}," restore")],-1),Ne=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"dotnet"),e("span",{style:{color:"#CE9178"}}," coalesce")],-1),Fe=g(`<p>You now have a new Coalesce project! For the recommended development experience, open the <code>.Web</code> project in VS Code and open the root <code>.sln</code> file in Visual Studio.</p><p>If any of the options you chose above require external integrations, you'll need to configure those - follow the instructions for each section that have been placed into <code>appsettings.json</code>.</p><h2 id="project-structure" tabindex="-1">Project Structure <a class="header-anchor" href="#project-structure" aria-label="Permalink to "Project Structure"">​</a></h2><h3 id="data-project" tabindex="-1">Data Project <a class="header-anchor" href="#data-project" aria-label="Permalink to "Data Project"">​</a></h3><p>The data project contains all your <a href="/Coalesce/modeling/model-types/entities.html">entity models</a>, <a href="/Coalesce/modeling/model-types/services.html">services</a>, and most other custom backend code that you'll write while building your application. The code within it acts as the inputs to Coalesce's code generation, which outputs generated files into the Web project.</p><h3 id="web-project" tabindex="-1">Web Project <a class="header-anchor" href="#web-project" aria-label="Permalink to "Web Project"">​</a></h3><p>The Web project is an ASP.NET Core application where the generated outputs from Coalesce are placed. It's also where you'll build your rich front-end pages that users will use to interact with your application.</p><p>The structure of the Web project follows the conventions of both ASP.NET Core and Vite. The frontend-specific folders are as follows:</p><ul><li><code>/src</code> - Files that should be compiled into your frontend application. CSS/SCSS, TypeScript, Vue SFCs, and so on.</li><li><code>/public</code> - Static assets that should be served directly as files.</li><li><code>/wwwroot</code> - Target for Vite's compiled output. This directory is excluded from git.</li><li><code>/Api/Generated</code> - Output target for Coalesce's generated API Controllers.</li><li><code>/Models/Generated</code> - Output target for Coalesce's <a href="/Coalesce/stacks/agnostic/dtos.html">generated DTOs</a>.</li><li><code>/Controllers/HomeController.cs</code> - Controller that serves the root page of your Vue SPA, both in development and production. Some customizations can be added here.</li></ul><div class="tip custom-block"><p class="custom-block-title">Important</p><p>The frontend build system uses <a href="https://vitejs.dev/" target="_blank" rel="noreferrer">Vite</a>. You are strongly encouraged to read through at least the first few pages of the <a href="https://vitejs.dev/guide/" target="_blank" rel="noreferrer">Vite Documentation</a> before getting started on any development.</p></div><p>During development, no special effort is required to build your frontend code. Coalesce's <code>UseViteDevelopmentServer</code> in ASP.NET Core will take care of that automatically when the application starts. Just make sure NPM packages have been installed (<code>npm ci</code>).</p><h2 id="data-modeling" tabindex="-1">Data Modeling <a class="header-anchor" href="#data-modeling" aria-label="Permalink to "Data Modeling"">​</a></h2><p>At this point, you can open up the newly-created solution in Visual Studio and run your application. However, your application won't do much without a data model, so you will probably want to do the following:</p><ul><li><p>Create an initial <a href="/Coalesce/modeling/model-types/entities.html">Data Model</a> by adding EF entity classes to the data project and the corresponding <code>DbSet<></code> properties to <code>AppDbContext</code>. You will notice that the starter project includes a single model, <code>Widget</code>, to start with. Feel free to change this model or remove it entirely. Read <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> for more information about creating a data model.</p></li><li><p>Run <code>dotnet ef migrations add Init</code> (Init can be any name) in the data project to create an initial database migration.</p></li><li><p>Run Coalesce's code generation by either:</p><ul><li>Running <code>dotnet coalesce</code> in the web project's root directory (<code>dotnet restore</code> first if you get an error about "command or file was not found").</li><li>Running the <code>coalesce</code> npm script in the Task Runner Explorer, or in a terminal with <code>npm run coalesce</code>.</li></ul></li></ul><p>You're now at a point where you can start creating your own pages!</p><h2 id="building-pages-features" tabindex="-1">Building Pages & Features <a class="header-anchor" href="#building-pages-features" aria-label="Permalink to "Building Pages & Features"">​</a></h2><p>Lets say we've created a <a href="/Coalesce/modeling/model-types/entities.html">model</a> called <code>Person</code> as follows, and we've ran code generation with <code>dotnet coalesce</code>:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">namespace</span><span style="color:#4EC9B0;"> MyApplication</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Data</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Models</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Person</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PersonId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">BirthDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>We can create a details page for a Person by creating a <a href="https://vuejs.org/guide/scaling-up/sfc.html" target="_blank" rel="noreferrer">Single File Component</a> in <code>MyApplication.Web/src/views/person-details.vue</code>:</p><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">dl</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">dt</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">Name</span><span style="color:#808080;"></</span><span style="color:#569CD6;">dt</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">dd</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"name"</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">dd</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">dt</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">Date of Birth</span><span style="color:#808080;"></</span><span style="color:#569CD6;">dt</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">dd</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">c-display</span><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"birthDate"</span><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"M/d/yyyy"</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">dd</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">dl</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> setup</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> props</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">defineProps</span><span style="color:#D4D4D4;"><{ </span><span style="color:#9CDCFE;">id</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;"> }>();</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$load</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">props</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">id</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">Note</p><p>In the code above, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> is a component that comes from the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Vuetify Components</a> for Coalesce.</p><p>For simple property types like <code>string</code> and <code>number</code> you can always use simple template interpolation syntax, but for more complex properties like dates, <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> is handy to use because it includes features like built-in date formatting.</p></div><p>We then need to add route to this new view. In <code>MyApplication.Web/src/router.ts</code>, add a new item to the <code>routes</code> array:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// In the \`routes\` array, add the following item:</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#C8C8C8;"> path</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">'/person/:id'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#C8C8C8;"> name</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">'person-details'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#C8C8C8;"> component</span><span style="color:#D4D4D4;">: () </span><span style="color:#569CD6;">=></span><span style="color:#569CD6;"> import</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'@/views/person-details.vue'</span><span style="color:#D4D4D4;">),</span></span> +<span class="line"><span style="color:#C8C8C8;"> props</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">route</span><span style="color:#569CD6;"> =></span><span style="color:#D4D4D4;"> ({ </span><span style="color:#9CDCFE;">id:</span><span style="color:#D4D4D4;"> +</span><span style="color:#9CDCFE;">route</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">id</span><span style="color:#D4D4D4;"> }),</span></span> +<span class="line"><span style="color:#D4D4D4;">},</span></span></code></pre></div><p>With these pieces in place, we now have a functioning page that will display details about a person. We can start up the application (or, if it was already running, refresh the page) and navigate to <code>/person/1</code> (assuming a person with ID 1 exists - if not, navigate to <code>/admin/Person</code> and create one).</p><p>From this point, you can start adding more fields, more features, and more flair to the page. Check out all the other documentation in the sidebar to see what else Coalesce has to offer, including the <a href="/Coalesce/stacks/vue/overview.html">Vue Overview</a>.</p>`,25),Me=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/getting-started.md","filePath":"stacks/vue/getting-started.md"}'),je={name:"stacks/vue/getting-started.md"},Ve=Object.assign(je,{setup(h){const u=D(""),r=D(""),p=_(()=>{var i;return((i=r.value)==null?void 0:i.replace(/\.+$/,""))||"MyCompany.MyProject"}),n=_(()=>p.value.split(".").at(-1));function y(){document.querySelector(".template-code .copy").click()}return(i,t)=>(c(),d("div",null,[le,P(ne,{options:u.value,"onUpdate:options":t[0]||(t[0]=s=>u.value=s),namespace:r.value,"onUpdate:namespace":t[1]||(t[1]=s=>r.value=s)},null,8,["options","namespace"]),e("p",null,[o("Next, click the button or manually copy the commands below into your favorite terminal, and execute them! This will create a root folder named "),e("code",null,l(n.value),1),o(" - execute the script in your "),ie,o("/"),re,o("/etc folder.")]),e("p",null,[e("button",{onClick:t[2]||(t[2]=s=>y()),style:{color:"var(--vp-button-brand-text)","background-color":"var(--vp-button-brand-bg)","border-radius":"20px",padding:"0 20px","line-height":"38px","font-size":"14px",display:"block",margin:"auto","font-weight":"600"}},"Copy CLI Commands")]),e("div",pe,[e("div",ce,[de,ue,e("pre",ye,[e("code",null,[me,o(` +`),e("span",he,[De,ge,fe,Ce,e("span",be," "+l(p.value),1),ve,e("span",_e," "+l(n.value),1),e("span",we," "+l(u.value),1)]),o(` +`),e("span",ke,[Ae,e("span",xe," "+l(n.value)+"/",1),Ee,Te]),o(` +`),Se,o(` +`),Ie,o(` +`),Pe,o(` +`),Ne])])])]),Fe]))}});export{Me as __pageData,Ve as default}; diff --git a/assets/stacks_vue_getting-started.md.cvpjxbz6.lean.js b/assets/stacks_vue_getting-started.md.cvpjxbz6.lean.js new file mode 100644 index 000000000..9ca9e260a --- /dev/null +++ b/assets/stacks_vue_getting-started.md.cvpjxbz6.lean.js @@ -0,0 +1,7 @@ +import{d as w,a9 as f,g as k,j as D,x as A,o as c,c as d,l as e,F as x,E,m as T,a5 as C,aa as S,P as b,ab as I,t as l,a as o,e as v,h as _,I as P,a7 as g}from"./chunks/framework.BkavzUpE.js";const N="http://json.schemastore.org/template",F="IntelliTect",j=["Web","MVC","Vue"],q="IntelliTect.Coalesce.Vue.Template",M="IntelliTect Coalesce Web App Vue Template",V="coalescevue",R={language:"C#",type:"project"},$="Coalesce.Starter.Vue",B=!0,L={KestrelPortGenerated:{type:"generated",generator:"port",parameters:{fallback:5001},replaces:"5001"},VitePortGenerated:{type:"generated",generator:"port",parameters:{fallback:5002},replaces:"5002"},Identity:{type:"parameter",datatype:"bool",displayName:"ASP.NET Core Identity",description:"Adds ASP.NET Core Identity, providing user storage, authentication, and authorization mechanisms. Also includes a permission-based security model. If you don't include Identity, you'll have to build your auth stack from scratch.",$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity"},MicrosoftAuth:{type:"parameter",datatype:"bool",displayName:"Sign-in with Microsoft",description:"Adds Microsoft as an external authentication and account provider for Identity.",$coalesceRequires:["and","Identity"],$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins"},GoogleAuth:{type:"parameter",datatype:"bool",displayName:"Sign-in with Google",description:"Adds Google as an external authentication and account provider for Identity.",$coalesceRequires:["and","Identity"],$coalesceLink:"https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins"},UserPictures:{type:"parameter",datatype:"bool",displayName:"User Profile Pictures",description:"Adds infrastructure for acquiring, saving, and displaying user profile pictures.",$coalesceRequires:["and","Identity"]},TrackingBase:{type:"parameter",datatype:"bool",displayName:"Tracking Base",description:"Include a base entity class for tracking created/modified by and date stamps on each entity, and infrastructure for automatically setting those fields."},AuditLogs:{type:"parameter",datatype:"bool",displayName:"Audit Logging",description:"Adds Coalesce audit logging infrastructure, logging each change made to the database through Entity Framework.",$coalesceLink:"/topics/audit-logging.html"},DarkMode:{type:"parameter",datatype:"bool",displayName:"Dark Mode Toggle",description:"Adds features for user-togglable dark mode. Don't use if you're developing a light-only or dark-only application."},ExampleModel:{type:"parameter",datatype:"bool",displayName:"Sample Page",description:"Includes a 'Widget' example model with a basic Vue page, frontend tests, and backend tests."},OpenAPI:{type:"parameter",datatype:"bool",displayName:"OpenAPI/Swagger",description:"Include configuration to expose an OpenAPI document and SwaggerUI using Swashbuckle."},Tenancy:{type:"parameter",datatype:"bool",displayName:"Tenancy: Core",description:"Includes core infrastructure for supporting multiple tenants within one shared database, with shared user accounts.",$coalesceRequires:["and","Identity"]},TenantCreateSelf:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation by Self-service",description:"Allows any signed in user to create additional tenants.",$coalesceRequires:["and","Tenancy"]},TenantCreateAdmin:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation by Global Admin",description:"Allows global admins to create new tenants.",$coalesceRequires:["and","Tenancy"]},TenantCreateExternal:{type:"parameter",datatype:"bool",displayName:"Tenancy: Creation/Membership by OIDC",description:"Automatically creates a new tenant for external organizations (Microsoft Entra, Google GSuite), and grants automatic tenant membership to other users within those organizations.",$coalesceRequires:["and","Tenancy",["or","MicrosoftAuth","GoogleAuth"]]},TenantMemberInvites:{type:"parameter",datatype:"bool",displayName:"Tenancy: Membership by Invitation",description:"Allows administrators within a tenant to create invitation links to grant membership to their tenant.",$coalesceRequires:["and","Tenancy"]},AppInsights:{type:"parameter",datatype:"bool",displayName:"Azure Application Insights",description:"Include configuration and integrations for Application Insights, both front-end and back-end.",$coalesceLink:"https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview"},AzurePipelines:{type:"parameter",datatype:"bool",displayName:"CI: Azure Pipelines",description:"Include an azure-pipelines.yml build template. For deployments, a release pipeline is recommended (which don't support YAML config files).",$coalesceLink:"https://learn.microsoft.com/en-us/azure/devops/pipelines/create-first-pipeline?view=azure-devops&tabs=net%2Cbrowser"},GithubActions:{type:"parameter",datatype:"bool",displayName:"CI: Github Actions",description:"Include an build-test-and-deploy.yml github action file template.",$coalesceLink:"https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service"}},z=[{modifiers:[{exclude:["**/[Bb]in/**","**/[Oo]bj/**","**/node_modules/**",".template.config/**/*","**/*.filelist","**/*.user","**/*.g.cs","**/*.g.ts","**/*.lock.json"]},{condition:"!Identity",exclude:["**/AuthenticationConfiguration.cs","**/Forbidden.vue","**/UserAvatar.vue","**/UserProfile.vue","**/SignIn.*","**/SignOut.*","**/AppClaimTypes.cs","**/ClaimsPrincipalFactory.cs","**/Permission.cs","**/User.cs","**/UserRole.cs","**/Role.cs"]},{condition:"!MicrosoftAuth && !GoogleAuth",exclude:["**/SignInService.cs"]},{condition:"!Tenancy",exclude:["**/Tenant.cs","**/DbContextFactoryExtensions.cs","**/TenantMembership.cs","**/ITenanted.cs","**/TenantedBase.cs","**/SelectTenant.*"]},{condition:"!TenantCreateSelf",exclude:["**/CreateTenant.*"]},{condition:"!(TenantMemberInvites || TenantCreateAdmin)",exclude:["**/Invitation.*","**/InvitationService.*","**/UserInvitation.*"]},{condition:"!(UserPictures && Identity)",exclude:["Coalesce.Starter.Vue.Data/Models/UserPhoto.cs"]},{condition:"!AuditLogs",exclude:["**/AuditOperationContext.cs","**/AuditLog.cs"]},{condition:"!TrackingBase",exclude:["**/TrackingBase.cs"]},{condition:"!AppInsights",exclude:["**/AppInsightsTelemetryEnricher.cs"]},{condition:"!GoogleAuth",exclude:["**/google-logo.svg"]},{condition:"!MicrosoftAuth",exclude:["**/microsoft-logo.svg"]},{condition:"!ExampleModel",exclude:["**/WidgetEdit.vue","**/WidgetEdit.spec.ts","**/Widget.cs"]},{condition:"!AzurePipelines",exclude:["**/azure-pipelines.yml"]},{condition:"!GithubActions",exclude:["**/.github"]}]}],W={"**.vue":{operations:[{type:"conditional",configuration:{if:["//#if"],else:["//#else"],elseif:["//#elseif"],endif:["//#endif"],actionableIf:["////#if"],actionableElse:["////#else"],actionableElseif:["////#elseif"],actions:["cStyleUncomment","cStyleReduceComment"],trim:!0,wholeLine:!0,evaluator:"C++"}},{type:"conditional",configuration:{endif:["#endif","<!--#endif"],actionableIf:["<!--#if"],actionableElse:["#else","<!--#else"],actionableElseif:["#elseif","<!--#elseif","#elif","<!--#elif"],trim:!0,wholeLine:!0,evaluator:"C++"}},{type:"replacement",configuration:{original:"//",replacement:"",id:"cStyleUncomment"}},{type:"replacement",configuration:{original:"////",replacement:"//",id:"cStyleReduceComment"}}]}},G={$schema:N,author:F,classifications:j,identity:q,name:M,shortName:V,tags:R,sourceName:$,preferNameDirectory:B,symbols:L,sources:z,SpecialCustomOperations:W},O={class:"template-builder"},U={class:"border",style:{padding:"4px"}},Y=["disabled","value"],J={style:{"flex-grow":"1"}},H={style:{"font-weight":"bold"}},K={style:{"font-size":"18px"}},Q={style:{float:"right"}},X={style:{"font-size":"small"}},Z={style:{"font-size":"12px","line-height":"1.3","margin-top":"4px"}},ee={style:{"white-space":"pre-wrap"}},se=["href"],te=e("hr",null,null,-1),ae={style:{padding:"0 12px 14px",display:"flex","align-items":"center"}},oe=e("span",{style:{"font-weight":"bold","font-size":"18px","padding-right":"8px"}}," Root Namespace: ",-1),ne=w({__name:"TemplateBuilder",props:{options:{},optionsModifiers:{},namespace:{},namespaceModifiers:{}},emits:["update:options","update:namespace"],setup(h){const u=f(h,"options"),r=f(h,"namespace"),p=Object.entries(G.symbols).map(([t,s])=>({...s,key:t,get meetsReqs(){return!("$coalesceRequires"in s)||y(s.$coalesceRequires)},get requires(){return"$coalesceRequires"in s?i(s.$coalesceRequires):null},link:"$coalesceLink"in s?s.$coalesceLink.startsWith("/")?k(s.$coalesceLink):s.$coalesceLink:void 0})).filter(t=>t.type=="parameter"),n=D(["Identity","TrackingBase","DarkMode","AuditLogs","UserPictures","ExampleModel"]);A(n,t=>{u.value=t.map(s=>"--"+s).join(" ")},{immediate:!0});function y(t){if(t[0]=="and")return t.slice(1).every(s=>typeof s=="string"?n.value.includes(s):y(s));if(t[0]=="or")return t.slice(1).some(s=>typeof s=="string"?n.value.includes(s):y(s))}function i(t){if(t[0]=="and")return t.slice(1).map(s=>{var a;return typeof s=="string"?(a=p.find(m=>m.key==s))==null?void 0:a.displayName:"("+i(s)+")"}).join(" and ");if(t[0]=="or")return t.slice(1).map(s=>{var a;return typeof s=="string"?(a=p.find(m=>m.key==s))==null?void 0:a.displayName:"("+i(s)+")"}).join(" or ")}return(t,s)=>(c(),d("div",O,[e("div",U,[(c(!0),d(x,null,E(T(p),a=>(c(),d("label",{key:a.key,style:b({opacity:a.meetsReqs?1:.5}),class:"template-builder-option"},[C(e("input",{type:"checkbox",disabled:!a.meetsReqs,"onUpdate:modelValue":s[0]||(s[0]=m=>n.value=m),value:a.key},null,8,Y),[[I,n.value]]),e("div",J,[e("div",H,[e("span",K,l(a.displayName),1),e("div",Q,[e("code",X,"--"+l(a.key),1)])]),e("div",Z,[e("div",ee,[o(l(a.description)+" ",1),a.link?(c(),d("a",{key:0,href:a.link,target:"_blank"}," Read More",8,se)):v("",!0)]),a.requires?(c(),d("div",{key:0,style:b([{"font-style":"italic","margin-top":"0px",transition:"max-height 0.25s",overflow:"hidden"},{maxHeight:a.meetsReqs?"0px":"30px"}])}," Requires "+l(a.requires),5)):v("",!0)])])],4))),128)),te,e("label",ae,[oe,C(e("input",{type:"text","onUpdate:modelValue":s[1]||(s[1]=a=>r.value=a),placeholder:"MyCompany.MyProject",class:"border",style:{padding:"6px 12px","font-family":"monospace","font-size":"16px","margin-top":"4px","border-color":"var(--v-c-text-2)","background-color":"field","flex-grow":"1"}},null,512),[[S,r.value]])])])]))}}),le=g("",7),ie=e("code",null,"sources",-1),re=e("code",null,"repos",-1),pe={class:"template-code"},ce={class:"language-sh"},de=e("button",{title:"Copy Code",class:"copy"},null,-1),ue=e("span",{class:"lang"},"sh",-1),ye={class:"shiki dark-plus vp-code"},me=g("",1),he={class:"line"},De=e("span",{style:{color:"#DCDCAA"}},"dotnet",-1),ge=e("span",{style:{color:"#CE9178"}}," new",-1),fe=e("span",{style:{color:"#CE9178"}}," coalescevue",-1),Ce=e("span",{style:{color:"#569CD6"}}," -n",-1),be={style:{color:"#CE9178"}},ve=e("span",{style:{color:"#569CD6"}}," -o",-1),_e={style:{color:"#CE9178"}},we={style:{color:"#CE9178"}},ke={class:"line"},Ae=e("span",{style:{color:"#DCDCAA"}},"cd",-1),xe={style:{color:"#CE9178"}},Ee=e("span",{style:{color:"#569CD6"}},"*",-1),Te=e("span",{style:{color:"#CE9178"}},".Web",-1),Se=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," ci")],-1),Ie=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"npm"),e("span",{style:{color:"#CE9178"}}," run"),e("span",{style:{color:"#CE9178"}}," lint:fix")],-1),Pe=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"dotnet"),e("span",{style:{color:"#CE9178"}}," restore")],-1),Ne=e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"dotnet"),e("span",{style:{color:"#CE9178"}}," coalesce")],-1),Fe=g("",25),Me=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/getting-started.md","filePath":"stacks/vue/getting-started.md"}'),je={name:"stacks/vue/getting-started.md"},Ve=Object.assign(je,{setup(h){const u=D(""),r=D(""),p=_(()=>{var i;return((i=r.value)==null?void 0:i.replace(/\.+$/,""))||"MyCompany.MyProject"}),n=_(()=>p.value.split(".").at(-1));function y(){document.querySelector(".template-code .copy").click()}return(i,t)=>(c(),d("div",null,[le,P(ne,{options:u.value,"onUpdate:options":t[0]||(t[0]=s=>u.value=s),namespace:r.value,"onUpdate:namespace":t[1]||(t[1]=s=>r.value=s)},null,8,["options","namespace"]),e("p",null,[o("Next, click the button or manually copy the commands below into your favorite terminal, and execute them! This will create a root folder named "),e("code",null,l(n.value),1),o(" - execute the script in your "),ie,o("/"),re,o("/etc folder.")]),e("p",null,[e("button",{onClick:t[2]||(t[2]=s=>y()),style:{color:"var(--vp-button-brand-text)","background-color":"var(--vp-button-brand-bg)","border-radius":"20px",padding:"0 20px","line-height":"38px","font-size":"14px",display:"block",margin:"auto","font-weight":"600"}},"Copy CLI Commands")]),e("div",pe,[e("div",ce,[de,ue,e("pre",ye,[e("code",null,[me,o(` +`),e("span",he,[De,ge,fe,Ce,e("span",be," "+l(p.value),1),ve,e("span",_e," "+l(n.value),1),e("span",we," "+l(u.value),1)]),o(` +`),e("span",ke,[Ae,e("span",xe," "+l(n.value)+"/",1),Ee,Te]),o(` +`),Se,o(` +`),Ie,o(` +`),Pe,o(` +`),Ne])])])]),Fe]))}});export{Me as __pageData,Ve as default}; diff --git a/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.js b/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.js new file mode 100644 index 000000000..4bc9fdac7 --- /dev/null +++ b/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.js @@ -0,0 +1,52 @@ +import{_ as t,c as l,I as n,a7 as o,l as e,a as s,D as r,o as c}from"./chunks/framework.BkavzUpE.js";const Q=JSON.parse('{"title":"Vue API Client Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/api-clients.md","filePath":"stacks/vue/layers/api-clients.md"}'),p={name:"stacks/vue/layers/api-clients.md"},i=o(`<h1 id="vue-api-client-layer" tabindex="-1">Vue API Client Layer <a class="header-anchor" href="#vue-api-client-layer" aria-label="Permalink to "Vue API Client Layer"">​</a></h1><p>The API client layer, generated as <code>api-clients.g.ts</code>, exports a class for each API controller that was generated for your data model. These classes are stateless and provide one method for each API endpoint. This includes both the standard set of endpoints created for <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, as well as any custom <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> on the aforementioned types, as well as any methods on your <a href="/Coalesce/modeling/model-types/services.html">Services</a>.</p><p>The API clients provided by Coalesce are based on <a href="https://github.com/axios/axios" target="_blank" rel="noreferrer">axios</a>. All API clients used a shared axios instance, exported from <code>coalesce-vue</code> as <code>AxiosClient</code>. This instance can be used to configure all HTTP requests made by Coalesce, including things like attaching <a href="https://axios-http.com/docs/interceptors" target="_blank" rel="noreferrer">interceptors</a> to modify the requests being made, or configuring <a href="https://axios-http.com/docs/config_defaults" target="_blank" rel="noreferrer">defaults</a>.</p><p>As with all the layers, the <a href="https://github.com/IntelliTect/Coalesce/blob/dev/src/coalesce-vue/src/api-client.ts" target="_blank" rel="noreferrer">source code of coalesce-vue</a> is also a great supplement to this documentation.</p><h2 id="concepts" tabindex="-1">Concepts <a class="header-anchor" href="#concepts" aria-label="Permalink to "Concepts"">​</a></h2><h3 id="api-client" tabindex="-1">API Client <a class="header-anchor" href="#api-client" aria-label="Permalink to "API Client"">​</a></h3><p>A class, generated for each controller-backed type in your data model as <code><ModelName>ApiClient</code> and exported from <code>api-clients.g.ts</code> containing one method for each API endpoint.</p><p>Each method on the API client takes in the regular parameters of the method as you would expect, as well as an optional <code>AxiosRequestConfig</code> parameter at the end that can be used to provide additional configuration for the single request, if needed.</p><p>For the methods that correspond to the standard set of CRUD endpoints that Coalesce provides (<code>get</code>, <code>list</code>, <code>count</code>, <code>save</code>, <code>delete</code>), an additional parameter <code>parameters</code> is available that accepts the set of <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a> appropriate for the endpoint.</p><p>Each method returns a <code>Promise<AxiosResponse<TApiResult>></code> where <code>TApiResult</code> is either <code>ItemResult</code>, <code>ItemResult<T></code>, or <code>ListResult<T></code>, depending on the return type of the API endpoint. <code>AxiosResponse</code> is the <a href="https://axios-http.com/docs/res_schema" target="_blank" rel="noreferrer">response object from axios</a>, containing the <code>TApiResult</code> in its <code>data</code> property, as well as other properties like <code>headers</code>. The returned type <code>T</code> is automatically converted into valid <a href="/Coalesce/stacks/vue/layers/models.html">Model implementations</a> for you.</p><h3 id="api-callers-api-states" tabindex="-1">API Callers/API States <a class="header-anchor" href="#api-callers-api-states" aria-label="Permalink to "API Callers/API States"">​</a></h3><p>A stateful function for invoking an API endpoint, created with the <code>$makeCaller</code> function on an API Client. API Callers provide a wide array of functionality that is useful for working with API endpoints that are utilized by a user interface.</p><p>Because they are such an integral part of the overall picture of <code>coalesce-vue</code>, they have <a href="/Coalesce/stacks/vue/layers/api-clients.html">their own section below</a> where they are explained in much greater detail.</p><h2 id="api-callers" tabindex="-1">API Callers <a class="header-anchor" href="#api-callers" aria-label="Permalink to "API Callers"">​</a></h2><p>API Callers (typed with the name <code>ApiState</code> in <code>coalesce-vue</code>, sometimes also referred to as "loaders" or "invokers") are stateful functions for invoking an API endpoint, created with the <code>$makeCaller</code> function on an API Client. A summary of features:</p><h4 id="endpoint-invocation" tabindex="-1">Endpoint Invocation <a class="header-anchor" href="#endpoint-invocation" aria-label="Permalink to "Endpoint Invocation"">​</a></h4><p>Each API Caller is itself a function, so it can be invoked to trigger an API request to the server.</p><h4 id="state-management" tabindex="-1">State management <a class="header-anchor" href="#state-management" aria-label="Permalink to "State management"">​</a></h4><p>API Callers contain properties about the last request made, including things like <code>wasSuccessful</code>, <code>isLoading</code>, <code>result</code>, and more.</p><h4 id="concurrency-management" tabindex="-1">Concurrency Management <a class="header-anchor" href="#concurrency-management" aria-label="Permalink to "Concurrency Management"">​</a></h4><p>Using <code>setConcurrency(mode)</code>, you can configure how each individual caller handles what happens when multiple requests are made simultaneously</p><h4 id="argument-binding" tabindex="-1">Argument Binding <a class="header-anchor" href="#argument-binding" aria-label="Permalink to "Argument Binding"">​</a></h4><p>API Callers can be created so that they have an <code>args</code> object that can be bound to, using <code>.invokeWithArgs()</code> to make a request using those arguments as the API endpoint's parameters. The API Callers created for the <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel Layer</a> are all created this way.</p><h3 id="creating-and-invoking-an-api-caller" tabindex="-1">Creating and Invoking an API Caller <a class="header-anchor" href="#creating-and-invoking-an-api-caller" aria-label="Permalink to "Creating and Invoking an API Caller"">​</a></h3><p>API Callers can be created with the <code>$makeCaller</code> method of an API Client. If desired, you can define parameters that will be accepted as input to each invocation.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>During typical development, it is unlikely that you'll need to make a custom API Caller - the ones created for you on the generated <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel Layer</a> will usually suffice. However, creating your own can allow for some more advanced functionality.</p></div><p>Some examples:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// Preamble for all the examples below:</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonApiClient</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> '@/api-clients.g'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> client</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#9CDCFE;"> PersonApiClient</span><span style="color:#D4D4D4;">;</span></span></code></pre></div><p>A caller that takes no additional parameters:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> caller</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$makeCaller</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#CE9178;"> "item"</span><span style="color:#D4D4D4;">, </span></span> +<span class="line"><span style="color:#9CDCFE;"> c</span><span style="color:#569CD6;"> =></span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">namesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"A"</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> caller</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">caller</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">)</span></span></code></pre></div><p>A caller that takes custom parameters:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> caller</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$makeCaller</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#9CDCFE;"> methods</span><span style="color:#569CD6;"> =></span><span style="color:#9CDCFE;"> methods</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">namesStartingWith</span><span style="color:#D4D4D4;">, </span></span> +<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">namesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> caller</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Rob"</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">caller</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">)</span></span></code></pre></div><p>A caller that has an args object that can be bound to. This is how the generated API Callers in the <a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel Layer</a> are created:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> caller</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$makeCaller</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"item"</span><span style="color:#D4D4D4;">, </span></span> +<span class="line"><span style="color:#6A9955;"> // The parameter-based version is always required, even if it won't be used.</span></span> +<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">namesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">),</span></span> +<span class="line"><span style="color:#6A9955;"> // A function which creates a blank instance of the args object.</span></span> +<span class="line"><span style="color:#6A9955;"> // All props should be initialized (i.e. not undefined) to work with Vue's reactivity.</span></span> +<span class="line"><span style="color:#D4D4D4;"> () </span><span style="color:#569CD6;">=></span><span style="color:#D4D4D4;"> ({</span><span style="color:#9CDCFE;">str:</span><span style="color:#569CD6;"> null</span><span style="color:#C586C0;"> as</span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;">, }),</span></span> +<span class="line"><span style="color:#6A9955;"> // The function that accepts the args object and uses it:</span></span> +<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">namesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;">caller</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Su"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">await</span><span style="color:#9CDCFE;"> caller</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">invokeWithArgs</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">caller</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">)</span></span></code></pre></div><p>A caller that performs multiple async operations:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> deleteFirstNameStartingWith</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">client</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$makeCaller</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#CE9178;"> "item"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#569CD6;"> async</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> namesResult</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">await</span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">namesStartingWith</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#C586C0;"> await</span><span style="color:#9CDCFE;"> c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">deletePersonByName</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">namesResult</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">data</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">object</span><span style="color:#D4D4D4;">[</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">])</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> caller</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Rob"</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">caller</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">)</span></span></code></pre></div><p>The first parameter, <code>resultType</code>, can either be one of <code>"item"</code> or <code>"list"</code>, indicating whether the method returns a <code>ItemResult</code> or <code>ListResult</code> (examples #1 and #3 above). It can also be a function which accepts the set of method metadata for the API Client and which returns the specific method metadata (example #2 above), or it can be a direct reference to a specific method metadata object.</p><h3 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to "Properties"">​</a></h3><p>The following state properties can be found on API Caller instances. These properties are useful for binding to in a user interface to display errors, results, or indicators of progress.</p><h4 id="all-callers" tabindex="-1">All Callers <a class="header-anchor" href="#all-callers" aria-label="Permalink to "All Callers"">​</a></h4>`,40),d=e("p",null,"True if there is currently a request pending for the API Caller.",-1),h=e("p",null,[s("A boolean indicating if the last request was successful. "),e("code",null,"null"),s(" if no request has been made yet or if a request has been made but has not yet completed.")],-1),u=e("p",null,[s("An message from the last request. Typically an error message if the last request failed, but messages can also be provided with successful "),e("code",null,"ApiResult"),s(" responses in your "),e("a",{href:"/Coalesce/modeling/model-components/methods.html"},"custom methods"),s(".")],-1),D=e("p",null,[s("True if "),e("code",null,"result"),s(" is non-null. This prop is useful in performance-critical scenarios where checking "),e("code",null,"result"),s(" directly will cause an overabundance of re-renders in high-churn scenarios.")],-1),y=e("p",null,[s("Holds an object for the arguments of the function, and will be used if the caller is invoked with its "),e("code",null,"invokeWithArgs()"),s(" method. Useful for binding the arguments of a caller to inputs in a user interface.")],-1),m=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),C=e("p",null,[s("Returns the URL for the method's HTTP endpoint. Any parameters are sourced from the "),e("code",null,"args"),s(" object. Useful for binding file-returning HTTP GET methods directly to "),e("code",null,"image"),s(" or "),e("code",null,"video"),s(" HTML elements.")],-1),f=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),g=e("br",null,null,-1),b=e("h4",{id:"itemresult-based-callers",tabindex:"-1"},[s("ItemResult-based Callers "),e("a",{class:"header-anchor",href:"#itemresult-based-callers","aria-label":'Permalink to "ItemResult-based Callers"'},"​")],-1),v=e("p",null,"The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response)",-1),A=e("p",null,[s("Any validation issues returned by the previous request. This is never populated automatically by Coalesce, and is therefore is only used if you have written custom code to populate it in your "),e("a",{href:"/Coalesce/modeling/model-components/behaviors.html"},"Behaviors"),s(" or "),e("a",{href:"/Coalesce/modeling/model-components/methods.html"},"Methods"),s(".")],-1),w=e("br",null,null,-1),q=e("h4",{id:"listresult-based-callers",tabindex:"-1"},[s("ListResult-based Callers "),e("a",{class:"header-anchor",href:"#listresult-based-callers","aria-label":'Permalink to "ListResult-based Callers"'},"​")],-1),k=e("p",null,"The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response).",-1),_=e("p",null,"Properties which contain the pagination information returned by the previous request.",-1),P=e("h3",{id:"concurrency-mode",tabindex:"-1"},[s("Concurrency Mode "),e("a",{class:"header-anchor",href:"#concurrency-mode","aria-label":'Permalink to "Concurrency Mode"'},"​")],-1),E=o('<p>API callers have a <code>setConcurrency</code> method that allows you to customize how they behave when additional invocations are performed when there is already a request pending. There are four options available, with <code>"disallow"</code> being the default:</p><h5 id="disallow" tabindex="-1"><code>"disallow"</code> <a class="header-anchor" href="#disallow" aria-label="Permalink to "`"disallow"`"">​</a></h5><p>The default behavior - simply throws an error for any secondary invocations.</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>Having <code>"disallow"</code> as the default prevents the unexpected behavior that can happen in a number of ways with the other modes:</p><ul><li>For requests that are performing data-mutating actions on the server, all other concurrency modes could lead to an unexpected end state of the data due to requests either being abandoned, cancelled, or potentially happening out-of-order.</li><li>Throwing errors for multiple concurrent requests quickly surfaces issues during development where concurrent requests are not being correctly guarded against in a user interface - e.g. not disabling a "Save" or "Submit" button while the request is pending, which would otherwise lead to double-posts.</li></ul></div><h5 id="debounce" tabindex="-1"><code>"debounce"</code> <a class="header-anchor" href="#debounce" aria-label="Permalink to "`"debounce"`"">​</a></h5><p>When a secondary invocation is performed, enqueue it after the current pending invocation completes.</p><p>If additional invocations are performed while there is already an invocation enqueued and waiting, the already-enqueued invocation is abandoned and replaced by the most recent invocation attempt. The promise of the abandoned invocation will be resolved with <code>undefined</code> (it is NOT rejected).</p><h5 id="cancel" tabindex="-1"><code>"cancel"</code> <a class="header-anchor" href="#cancel" aria-label="Permalink to "`"cancel"`"">​</a></h5><p>When a secondary invocation is performed, cancel the current pending invocation.</p><p>This completely aborts the request, propagating all the way back to the server where cancellation can be observed with <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext.requestaborted" target="_blank" rel="noreferrer">HttpContext.RequestAborted</a>. The promise of the cancelled invocation will be resolved with <code>undefined</code> (it is NOT rejected).</p><h5 id="allow" tabindex="-1"><code>"allow"</code> <a class="header-anchor" href="#allow" aria-label="Permalink to "`"allow"`"">​</a></h5><p>When a secondary invocation is performed, always continue normally, sending the request to the server.</p><p>The state of the properties on the caller at any time will reflect the most recent response received from the server, which is never guaranteed to correlate with the most recent request made to the server - that is, requests are not guaranteed to complete in the order they were made. In particular, the <code>isLoading</code> property will be <code>false</code> after the first response comes back, even if the second response has not yet been received.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>For the reasons outlined above, it is generally not recommended to use <code>"allow"</code> unless you fully understand the drawbacks. This mode mirrors the legacy behavior of the Knockout stack for Coalesce.</p></div><h3 id="response-caching" tabindex="-1">Response Caching <a class="header-anchor" href="#response-caching" aria-label="Permalink to "Response Caching"">​</a></h3><p>Response caching on API Callers is a feature that will save API responses to persistent storage (<code>sessionStorage</code> or <code>localStorage</code>). The next time a matching request is made, the <code>result</code> property of the API Caller will be populated with that saved response, allowing for a faster time to interactivity and reduced repaints and shifting of elements as initial data loads after a page navigation. It does not <em>prevent</em> any HTTP requests from being made, and does not affect the <code>Promise</code> returned from <code>invoke</code> or <code>invokeWithArgs</code>.</p><p>Common use cases include:</p><ul><li>Site-wide status or alert messages</li><li>Server-provided configuration</li><li>Dashboard data, like statistics or graphs</li></ul><p>When a cached response is loaded, <code>result</code> is populated with that response's data, <code>wasSuccessful</code> and <code>hasResult</code> are set to <code>true</code>, and <code>onFulfilled</code> callbacks are invoked.</p>',19),T=o(`<p>Enables response caching on the API Caller. Only <a href="/Coalesce/modeling/model-components/attributes/controller-action.html">HTTP GET methods</a> are supported, and <a href="/Coalesce/modeling/model-components/methods.html#file-downloads">file-returning methods</a> are not supported. Call with <code>false</code> to disable caching after it was previously enabled. The available options are as follows:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">export</span><span style="color:#569CD6;"> type</span><span style="color:#4EC9B0;"> ResponseCachingConfiguration</span><span style="color:#D4D4D4;"> = {</span></span> +<span class="line"><span style="color:#6A9955;"> /** Function that will determine the cache key used for a particular request.</span></span> +<span class="line"><span style="color:#6A9955;"> * Return a falsy value to prevent caching. The default key is the request URL.</span></span> +<span class="line"><span style="color:#6A9955;"> */</span></span> +<span class="line"><span style="color:#DCDCAA;"> key</span><span style="color:#D4D4D4;">?: (</span></span> +<span class="line"><span style="color:#9CDCFE;"> req</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">AxiosRequestConfig</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> defaultKey</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span></span> +<span class="line"><span style="color:#D4D4D4;"> ) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">undefined</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** The maximum age of a cached response. If null, the entry will not expire. Default 1 hour.</span></span> +<span class="line"><span style="color:#6A9955;"> *</span></span> +<span class="line"><span style="color:#6A9955;"> * The smallest of the current configured max age and the max age that was set at the time of the cached response is used. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> maxAgeSeconds</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** The Storage (default \`sessionStorage\`) that will hold cached responses. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> storage</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">Storage</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">};</span></span></code></pre></div><h3 id="other-methods" tabindex="-1">Other Methods <a class="header-anchor" href="#other-methods" aria-label="Permalink to "Other Methods"">​</a></h3><p>API Callers have a few other methods available as well:</p>`,4),I=e("p",null,[s("Manually cancel the current request. The promise of the cancelled invocation will be resolved with "),e("code",null,"undefined"),s(" (it is NOT rejected). If using concurrency mode "),e("code",null,'"allow"'),s(", only the most recent invocation is cancelled.")],-1),F=e("p",null,[s("Add a callback to the caller to be invoked when a success response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the "),e("code",null,"isLoading"),s(" prop to "),e("code",null,"false"),s(" until it completes.")],-1),x=e("p",null,[s("Add a callback to the caller to be invoked when a failure response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the "),e("code",null,"isLoading"),s(" prop to "),e("code",null,"false"),s(" until it completes.")],-1),R=e("p",null,"Invokes the endpoint with provided args.",-1),S=e("p",null,[s("The invoke function is a reference from the caller to itself. In other words, "),e("code",null,"caller.invoke === caller"),s(".")],-1),L=e("p",null,[s("Similar to "),e("code",null,"invoke"),s(", but prompts for confirmation from the user (via "),e("code",null,"window.confirm"),s(") with the provided message.")],-1),B=e("p",null,[s("Invokes the endpoint with the specified args, defaulting to "),e("code",null,"caller.args"),s(".")],-1),W=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),j=e("p",null,[s("Similar to "),e("code",null,"invokeWithArgs"),s(", but prompts for confirmation from the user (via "),e("code",null,"window.confirm"),s(") with the provided message.")],-1),V=e("p",null,[s("If the method returns a file, this method will return an "),e("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL",target:"_blank",rel:"noreferrer"},"Object URL"),s(" representing the value of the "),e("code",null,"result"),s(" prop.")],-1),N=e("p",null,[s("Accepts a "),e("code",null,"Vue"),s(" instance in order to manage the lifecycle of the URL, since object URLs must be manually released to avoid memory leaks. When the provided Vue component is destroyed, the object URL will be destroyed. If called inside the component template, the Vue instance can be acquired automatically.")],-1),M=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1);function O(U,$,H,z,G,K){const a=r("Prop");return c(),l("div",null,[i,n(a,{def:"isLoading: boolean",lang:"ts"}),d,n(a,{def:"wasSuccessful: boolean | null",lang:"ts"}),h,n(a,{def:"message: string | null",lang:"ts"}),u,n(a,{def:"hasResult: boolean",lang:"ts"}),D,n(a,{def:"args: {}",lang:"ts"}),y,m,n(a,{def:"get url(): string",lang:"ts"}),C,f,g,b,n(a,{def:"result: T | null",lang:"ts",id:"member-result-item"}),v,n(a,{def:"validationIssues: ValidationIssue[] | null",lang:"ts"}),A,w,q,n(a,{def:"result: Array<T> | null",lang:"ts",id:"member-result-list"}),k,n(a,{def:"page, pageSize, pageCount, totalCount: number | null",lang:"ts",id:"members-pagination"}),_,P,n(a,{def:"setConcurrency(mode: 'disallow' | 'debounce' | 'cancel' | 'allow')",lang:"ts"}),E,n(a,{def:"useResponseCaching(configuration?: ResponseCachingConfiguration | false)",lang:"ts"}),T,n(a,{def:"cancel(): void",lang:"ts"}),I,n(a,{def:"onFulfilled((state: TInvoker) => void | Promise<any>): void",lang:"ts"}),F,n(a,{def:"onRejected((state: TInvoker) => void | Promise<any>): void",lang:"ts"}),x,n(a,{def:"invoke(...args: TArgs)",lang:"ts"}),R,S,n(a,{def:"confirmInvoke(message: string, ...args: TArgs)",lang:"ts"}),L,n(a,{def:"invokeWithArgs(args?: TArgs)",lang:"ts"}),B,W,n(a,{def:"confirmInvokeWithArgs(message: string, args?: TArgs)",lang:"ts"}),j,n(a,{def:"getResultObjectUrl(vue?: Vue): string | undefined",lang:"ts"}),V,N,M])}const X=t(p,[["render",O]]);export{Q as __pageData,X as default}; diff --git a/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.lean.js b/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.lean.js new file mode 100644 index 000000000..7f7246051 --- /dev/null +++ b/assets/stacks_vue_layers_api-clients.md.ZFtUeqeR.lean.js @@ -0,0 +1 @@ +import{_ as t,c as l,I as n,a7 as o,l as e,a as s,D as r,o as c}from"./chunks/framework.BkavzUpE.js";const Q=JSON.parse('{"title":"Vue API Client Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/api-clients.md","filePath":"stacks/vue/layers/api-clients.md"}'),p={name:"stacks/vue/layers/api-clients.md"},i=o("",40),d=e("p",null,"True if there is currently a request pending for the API Caller.",-1),h=e("p",null,[s("A boolean indicating if the last request was successful. "),e("code",null,"null"),s(" if no request has been made yet or if a request has been made but has not yet completed.")],-1),u=e("p",null,[s("An message from the last request. Typically an error message if the last request failed, but messages can also be provided with successful "),e("code",null,"ApiResult"),s(" responses in your "),e("a",{href:"/Coalesce/modeling/model-components/methods.html"},"custom methods"),s(".")],-1),D=e("p",null,[s("True if "),e("code",null,"result"),s(" is non-null. This prop is useful in performance-critical scenarios where checking "),e("code",null,"result"),s(" directly will cause an overabundance of re-renders in high-churn scenarios.")],-1),y=e("p",null,[s("Holds an object for the arguments of the function, and will be used if the caller is invoked with its "),e("code",null,"invokeWithArgs()"),s(" method. Useful for binding the arguments of a caller to inputs in a user interface.")],-1),m=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),C=e("p",null,[s("Returns the URL for the method's HTTP endpoint. Any parameters are sourced from the "),e("code",null,"args"),s(" object. Useful for binding file-returning HTTP GET methods directly to "),e("code",null,"image"),s(" or "),e("code",null,"video"),s(" HTML elements.")],-1),f=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),g=e("br",null,null,-1),b=e("h4",{id:"itemresult-based-callers",tabindex:"-1"},[s("ItemResult-based Callers "),e("a",{class:"header-anchor",href:"#itemresult-based-callers","aria-label":'Permalink to "ItemResult-based Callers"'},"​")],-1),v=e("p",null,"The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response)",-1),A=e("p",null,[s("Any validation issues returned by the previous request. This is never populated automatically by Coalesce, and is therefore is only used if you have written custom code to populate it in your "),e("a",{href:"/Coalesce/modeling/model-components/behaviors.html"},"Behaviors"),s(" or "),e("a",{href:"/Coalesce/modeling/model-components/methods.html"},"Methods"),s(".")],-1),w=e("br",null,null,-1),q=e("h4",{id:"listresult-based-callers",tabindex:"-1"},[s("ListResult-based Callers "),e("a",{class:"header-anchor",href:"#listresult-based-callers","aria-label":'Permalink to "ListResult-based Callers"'},"​")],-1),k=e("p",null,"The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response).",-1),_=e("p",null,"Properties which contain the pagination information returned by the previous request.",-1),P=e("h3",{id:"concurrency-mode",tabindex:"-1"},[s("Concurrency Mode "),e("a",{class:"header-anchor",href:"#concurrency-mode","aria-label":'Permalink to "Concurrency Mode"'},"​")],-1),E=o("",19),T=o("",4),I=e("p",null,[s("Manually cancel the current request. The promise of the cancelled invocation will be resolved with "),e("code",null,"undefined"),s(" (it is NOT rejected). If using concurrency mode "),e("code",null,'"allow"'),s(", only the most recent invocation is cancelled.")],-1),F=e("p",null,[s("Add a callback to the caller to be invoked when a success response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the "),e("code",null,"isLoading"),s(" prop to "),e("code",null,"false"),s(" until it completes.")],-1),x=e("p",null,[s("Add a callback to the caller to be invoked when a failure response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the "),e("code",null,"isLoading"),s(" prop to "),e("code",null,"false"),s(" until it completes.")],-1),R=e("p",null,"Invokes the endpoint with provided args.",-1),S=e("p",null,[s("The invoke function is a reference from the caller to itself. In other words, "),e("code",null,"caller.invoke === caller"),s(".")],-1),L=e("p",null,[s("Similar to "),e("code",null,"invoke"),s(", but prompts for confirmation from the user (via "),e("code",null,"window.confirm"),s(") with the provided message.")],-1),B=e("p",null,[s("Invokes the endpoint with the specified args, defaulting to "),e("code",null,"caller.args"),s(".")],-1),W=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1),j=e("p",null,[s("Similar to "),e("code",null,"invokeWithArgs"),s(", but prompts for confirmation from the user (via "),e("code",null,"window.confirm"),s(") with the provided message.")],-1),V=e("p",null,[s("If the method returns a file, this method will return an "),e("a",{href:"https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL",target:"_blank",rel:"noreferrer"},"Object URL"),s(" representing the value of the "),e("code",null,"result"),s(" prop.")],-1),N=e("p",null,[s("Accepts a "),e("code",null,"Vue"),s(" instance in order to manage the lifecycle of the URL, since object URLs must be manually released to avoid memory leaks. When the provided Vue component is destroyed, the object URL will be destroyed. If called inside the component template, the Vue instance can be acquired automatically.")],-1),M=e("p",null,"Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.",-1);function O(U,$,H,z,G,K){const a=r("Prop");return c(),l("div",null,[i,n(a,{def:"isLoading: boolean",lang:"ts"}),d,n(a,{def:"wasSuccessful: boolean | null",lang:"ts"}),h,n(a,{def:"message: string | null",lang:"ts"}),u,n(a,{def:"hasResult: boolean",lang:"ts"}),D,n(a,{def:"args: {}",lang:"ts"}),y,m,n(a,{def:"get url(): string",lang:"ts"}),C,f,g,b,n(a,{def:"result: T | null",lang:"ts",id:"member-result-item"}),v,n(a,{def:"validationIssues: ValidationIssue[] | null",lang:"ts"}),A,w,q,n(a,{def:"result: Array<T> | null",lang:"ts",id:"member-result-list"}),k,n(a,{def:"page, pageSize, pageCount, totalCount: number | null",lang:"ts",id:"members-pagination"}),_,P,n(a,{def:"setConcurrency(mode: 'disallow' | 'debounce' | 'cancel' | 'allow')",lang:"ts"}),E,n(a,{def:"useResponseCaching(configuration?: ResponseCachingConfiguration | false)",lang:"ts"}),T,n(a,{def:"cancel(): void",lang:"ts"}),I,n(a,{def:"onFulfilled((state: TInvoker) => void | Promise<any>): void",lang:"ts"}),F,n(a,{def:"onRejected((state: TInvoker) => void | Promise<any>): void",lang:"ts"}),x,n(a,{def:"invoke(...args: TArgs)",lang:"ts"}),R,S,n(a,{def:"confirmInvoke(message: string, ...args: TArgs)",lang:"ts"}),L,n(a,{def:"invokeWithArgs(args?: TArgs)",lang:"ts"}),B,W,n(a,{def:"confirmInvokeWithArgs(message: string, args?: TArgs)",lang:"ts"}),j,n(a,{def:"getResultObjectUrl(vue?: Vue): string | undefined",lang:"ts"}),V,N,M])}const X=t(p,[["render",O]]);export{Q as __pageData,X as default}; diff --git a/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.js b/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.js new file mode 100644 index 000000000..5d9de684b --- /dev/null +++ b/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.js @@ -0,0 +1 @@ +import{_ as o,c as r,I as t,a7 as e,D as s,o as d}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"Vue Metadata Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/metadata.md","filePath":"stacks/vue/layers/metadata.md"}'),n={name:"stacks/vue/layers/metadata.md"},l=e('<h1 id="vue-metadata-layer" tabindex="-1">Vue Metadata Layer <a class="header-anchor" href="#vue-metadata-layer" aria-label="Permalink to "Vue Metadata Layer"">​</a></h1><p>The metadata layer, generated as <code>metadata.g.ts</code>, contains information about the types, properties, methods, and other components of your data model. Because Vue applications are typically compiled into a set of static assets, it is necessary for the frontend code to have a representation of your data model as an analog to the <code>ReflectionRepository</code> that is available at runtime in your .NET app.</p><h2 id="concepts" tabindex="-1">Concepts <a class="header-anchor" href="#concepts" aria-label="Permalink to "Concepts"">​</a></h2><p>The following is a non-exhaustive list of the general concepts used by the metadata layer. The <a href="https://github.com/IntelliTect/Coalesce/blob/dev/src/coalesce-vue/src/metadata.ts" target="_blank" rel="noreferrer">source code of coalesce-vue</a> provides the most exhaustive set of documentation about the metadata layer:</p><h3 id="metadata" tabindex="-1">Metadata <a class="header-anchor" href="#metadata" aria-label="Permalink to "Metadata"">​</a></h3><p>All objects in the metadata layer that represent any kind of metadata have, at the very least, a <code>name</code>, the name of the metadata element in code (type names, property names, parameter names, etc). and a <code>displayName</code>, the human-readable form of the name that is suitable for presentation when needed. Names follow the casing convention of their corresponding language elements - types are PascalCased, while other things like properties, methods, and parameters are camelCased.</p><h3 id="type" tabindex="-1">Type <a class="header-anchor" href="#type" aria-label="Permalink to "Type"">​</a></h3><p>All custom types exposed by your application's data model will have a Type metadata object generated. This includes both C# classes, and C# enums. Class types include <code>model</code> (for <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>) and <code>object</code> (for <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a>).</p><h3 id="value" tabindex="-1">Value <a class="header-anchor" href="#value" aria-label="Permalink to "Value"">​</a></h3><p>In the metadata layer, a Value is the usage of a type. This could be any type - strings, numbers, enums, classes, or even void. Values can be found in the collection of an object's properties, a method's parameters or return value, or as a data source's parameters.</p><p>All values have the following properties:</p>',11),c=e("<p>Type could be a language primitive like <code>string</code> or <code>number</code>, a non-primitive JavaScript type (<code>date</code>, <code>file</code>), or in the case of a custom Type, the type kind of that type (<code>model</code>, <code>enum</code>, <code>object</code>). For custom types, an additional property <code>typeDef</code> will refer to the Type metadata for that type.</p>",1),i=e('<p>Role represents what purpose the value serves in a relational model. Either <code>value</code> (the default - no relational role), <code>primaryKey</code>, <code>foreignKey</code>, <code>referenceNavigation</code>, or <code>collectionNavigation</code>.</p><h3 id="property" tabindex="-1">Property <a class="header-anchor" href="#property" aria-label="Permalink to "Property"">​</a></h3><p>A Property is a more refined Value that contains a number of additional fields based on the <code>role</code> of the property.</p><h3 id="domain" tabindex="-1">Domain <a class="header-anchor" href="#domain" aria-label="Permalink to "Domain"">​</a></h3><p>The type of the default export of the generated metadata. Serves as a single root from which all other metadata can be accessed. Contains fields <code>types</code>, <code>enums</code>, and <code>services</code> as organizing structures for the different kinds of custom types.</p>',5);function p(h,m,u,y,f,_){const a=s("Prop");return d(),r("div",null,[l,t(a,{def:"type: TypeDiscriminator",lang:"ts"}),c,t(a,{def:"role: ValueRole",lang:"ts"}),i])}const T=o(n,[["render",p]]);export{v as __pageData,T as default}; diff --git a/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.lean.js b/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.lean.js new file mode 100644 index 000000000..6f360e743 --- /dev/null +++ b/assets/stacks_vue_layers_metadata.md.lgKSP2Dg.lean.js @@ -0,0 +1 @@ +import{_ as o,c as r,I as t,a7 as e,D as s,o as d}from"./chunks/framework.BkavzUpE.js";const v=JSON.parse('{"title":"Vue Metadata Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/metadata.md","filePath":"stacks/vue/layers/metadata.md"}'),n={name:"stacks/vue/layers/metadata.md"},l=e("",11),c=e("",1),i=e("",5);function p(h,m,u,y,f,_){const a=s("Prop");return d(),r("div",null,[l,t(a,{def:"type: TypeDiscriminator",lang:"ts"}),c,t(a,{def:"role: ValueRole",lang:"ts"}),i])}const T=o(n,[["render",p]]);export{v as __pageData,T as default}; diff --git a/assets/stacks_vue_layers_models.md.ST5NLFOv.js b/assets/stacks_vue_layers_models.md.ST5NLFOv.js new file mode 100644 index 000000000..216e882d1 --- /dev/null +++ b/assets/stacks_vue_layers_models.md.ST5NLFOv.js @@ -0,0 +1,92 @@ +import{_ as p,c,I as a,w as t,a7 as n,l as e,a as s,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const Q=JSON.parse('{"title":"Vue Model Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/models.md","filePath":"stacks/vue/layers/models.md"}'),d={name:"stacks/vue/layers/models.md"},D=n(`<h1 id="vue-model-layer" tabindex="-1">Vue Model Layer <a class="header-anchor" href="#vue-model-layer" aria-label="Permalink to "Vue Model Layer"">​</a></h1><p>The model layer, generated as <code>models.g.ts</code>, contains a set of TypeScript interfaces that represent each client-exposed type in your data model. Each interface contains all the <a href="/Coalesce/modeling/model-components/properties.html">Properties</a> of that type, as well as a <code>$metadata</code> property that references the <a href="/Coalesce/stacks/vue/layers/metadata.html">metadata</a> object for that type. Enums and <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> are also represented in the model layer.</p><p>The model layer also includes a TypeScript class for each type that can be used to easily instantiate a valid implementation of its corresponding interface. However, it is not necessary for the classes to be used, and all parts of Coalesce that interact with the model layer don't perform any <code>instanceof</code> checks against models - the <code>$metadata</code> property is used to determine type identity.</p><h2 id="concepts" tabindex="-1">Concepts <a class="header-anchor" href="#concepts" aria-label="Permalink to "Concepts"">​</a></h2><p>The model layer is fairly simple - the only main concept it introduces on top of the <a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata Layer</a> is the notion of interfaces and enums that mirror the C# types in your data model. As with the <a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata Layer</a>, the <a href="https://github.com/IntelliTect/Coalesce/blob/dev/src/coalesce-vue/src/model.ts" target="_blank" rel="noreferrer">source code of coalesce-vue</a> is a great documentation supplement to this page.</p><h3 id="model" tabindex="-1">Model <a class="header-anchor" href="#model" aria-label="Permalink to "Model"">​</a></h3><p>An interface describing an instance of a class type from your application's data model. All Model interfaces contain members for all the <a href="/Coalesce/modeling/model-components/properties.html">Properties</a> of that type, as well as a <code>$metadata</code> property that references the metadata object for that type.</p><h3 id="datasource" tabindex="-1">DataSource <a class="header-anchor" href="#datasource" aria-label="Permalink to "DataSource"">​</a></h3><p>A class-based representation of a <a href="/Coalesce/modeling/model-components/data-sources.html">Data Source</a> containing properties for any of the <a href="/Coalesce/modeling/model-components/data-sources.html#custom-parameters">Custom Parameters</a> of the data source, as well as a <code>$metadata</code> property that references the metadata object for the data source.</p><p>Data sources are generated as concrete classes in a namespace named <code>DataSources</code> that is nested inside a namespace named after their parent model type. For example:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Person</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> '@/models.g'</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> dataSource</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#9CDCFE;"> Person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DataSources</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">NamesStartingWith</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;">dataSource</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">startsWith</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"A"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;">// Provide the dataSource to an API Client or a ViewModel...</span></span></code></pre></div><h2 id="model-functions" tabindex="-1">Model Functions <a class="header-anchor" href="#model-functions" aria-label="Permalink to "Model Functions"">​</a></h2><p>The following functions exported from <code>coalesce-vue</code> can be used with your models:</p>`,13),y=n(`<div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">export</span><span style="color:#569CD6;"> interface</span><span style="color:#4EC9B0;"> BindToQueryStringOptions</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TValue</span><span style="color:#D4D4D4;">> {</span></span> +<span class="line"><span style="color:#6A9955;"> /** The key in the query string that holds the bound value. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> queryKey</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;"> /** Convert the query string value to the model value. */</span></span> +<span class="line"><span style="color:#DCDCAA;"> parse</span><span style="color:#D4D4D4;">?: (</span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> TValue</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;"> /** Convert the bound value to a string representation to store in the query string. */</span></span> +<span class="line"><span style="color:#DCDCAA;"> stringify</span><span style="color:#D4D4D4;">?: (</span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">NonNullable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TValue</span><span style="color:#D4D4D4;">>) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> string</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">undefined</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;"> /** Controls whether changes are pushed as new history state entries, or replace the current history entry. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> mode</span><span style="color:#D4D4D4;">?: </span><span style="color:#CE9178;">"push"</span><span style="color:#D4D4D4;"> | </span><span style="color:#CE9178;">"replace"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Binds a value on an object, or the value of a ref, to the query string. When the object's value changes, the query string will be updated using <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a>. When the query string changes, the object's value will be updated.</p><p>For example:</p>`,3),u=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"bindToQueryString"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// In the 'created' Vue lifecycle hook on a component:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"created"),e("span",{style:{color:"#D4D4D4"}},"() {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}}," // Bind pagination information to the query string:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"listViewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"$params"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'pageSize'"),e("span",{style:{color:"#D4D4D4"}},", { "),e("span",{style:{color:"#9CDCFE"}},"parse:"),e("span",{style:{color:"#9CDCFE"}}," parseInt"),e("span",{style:{color:"#D4D4D4"}}," });")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}}," // Assuming the component has an 'activeTab' data member:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'activeTab'"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),h=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// Bind pagination information to the query string:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," list"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#569CD6"}},"new"),e("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),e("span",{style:{color:"#D4D4D4"}},"();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"list"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"$params"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'pageSize'"),e("span",{style:{color:"#D4D4D4"}},", { "),e("span",{style:{color:"#9CDCFE"}},"parse:"),e("span",{style:{color:"#9CDCFE"}}," parseInt"),e("span",{style:{color:"#D4D4D4"}}," });")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," activeTab"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#DCDCAA"}},"ref"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#CE9178"}},'"1"'),e("span",{style:{color:"#D4D4D4"}},")")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"activeTab"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'activeTab'"),e("span",{style:{color:"#D4D4D4"}},");")])])])],-1),m=e("p",null,[s(" The query string will be updated using either `router.push` or `router.replace` depending on the value of parameter `mode`. "),e("p",null,"If the query string contains a value when this is called, the object will be updated with that value immediately."),e("p",null,[s("If the object being bound to has "),e("code",null,"$metadata"),s(", information from that metadata will be used to serialize and parse values to and from the query string. Otherwise, the "),e("code",null,"stringify"),s(" option (default: "),e("code",null,"String(value)"),s(") will be used to serialize the value, and the "),e("code",null,"parse"),s(" option (if provided) will be used to parse the value from the query string.")])],-1),C=e("p",null,[s("When "),e("code",null,"model"),s(" is created (i.e. its primary key becomes non-null), replace the current URL with one that includes uses primary key for the route parameter named by "),e("code",null,"routeParamName"),s(".")],-1),f=e("p",null,[s("The query string will not be kept when the route is changed unless "),e("code",null,"true"),s(" is given to "),e("code",null,"keepQuery"),s(".")],-1),g=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"bindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// In the 'created' Vue lifecycle hook on a component:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"created"),e("span",{style:{color:"#D4D4D4"}},"() {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}}," if"),e("span",{style:{color:"#D4D4D4"}}," ("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},") {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}}," this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#DCDCAA"}},"$load"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"else"),e("span",{style:{color:"#D4D4D4"}}," {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}}," }")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),b=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"useBindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," props"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#DCDCAA"}},"defineProps"),e("span",{style:{color:"#D4D4D4"}},"<{"),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},": "),e("span",{style:{color:"#4EC9B0"}},"number"),e("span",{style:{color:"#D4D4D4"}},"}>();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," viewModel"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#569CD6"}},"new"),e("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),e("span",{style:{color:"#D4D4D4"}},"();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"if"),e("span",{style:{color:"#D4D4D4"}}," ("),e("span",{style:{color:"#9CDCFE"}},"props"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},") {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#9CDCFE"}}," viewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#DCDCAA"}},"$load"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"props"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"} "),e("span",{style:{color:"#C586C0"}},"else"),e("span",{style:{color:"#D4D4D4"}}," {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),v=n('<div class="tip custom-block"><p class="custom-block-title">Note</p><p>The route will be replaced directly via the <a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API" target="_blank" rel="noreferrer">HTML5 History API</a> such that <a href="https://router.vuejs.org/" target="_blank" rel="noreferrer">vue-router</a> will not observe the change as an actual route change, preventing the current view from being recreated if a path-based key is being used on the application's <code><router-view></code> component.</p></div><h2 id="advanced-model-functions" tabindex="-1">Advanced Model Functions <a class="header-anchor" href="#advanced-model-functions" aria-label="Permalink to "Advanced Model Functions"">​</a></h2><p>The following functions exported from <code>coalesce-vue</code> can be used with your models.</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>These functions are used to implement the <a href="/Coalesce/stacks/vue/overview.html">higher-order layers</a> in the Vue stack.</p><p>While you're absolutely free to use them in your own code and can rely on their interface and behavior to remain consistent, you will find that you seldom need to use them directly - that's why we've split them into their own section here in the documentation.</p></div>',4),_=n("<p>Given any JavaScript value <code>value</code>, convert it into a valid implementation of the value or type described by <code>metadata</code>.</p><p>For metadata describing a primitive or primitive-like value, the input will be parsed into a valid implementation of the correct JavaScript type. For example, for <code>metadata</code> that describes a boolean, a string <code>"true"</code> will return a boolean <code>true</code>, and ISO 8601 date strings will result in a JavaScript <code>Date</code> object.</p><p>For metadata describing a type, the input object will be mutated into a valid implementation of the appropriate model interface. Missing properties will be set to null, and any descendent properties of the provided object will be recursively processed with <code>convertToModel</code>.</p><p>If any values are encountered that are fundamentally incompatible with the requested type described by the metadata, an error will be thrown.</p>",4),T=e("p",null,[s("Performs the same operations as "),e("code",null,"convertToModel"),s(", except that any objects encountered will not be mutated - instead, a new object or array will always be created.")],-1),A=e("p",null,"Maps the input to a representation suitable for JSON serialization.",-1),w=e("p",null,[s("Will not serialize child objects or collections whose metadata includes "),e("code",null,"dontSerialize"),s(". Will only recurse to a maximum depth of 3.")],-1),E=e("p",null,[e("a",{id:"VueModelDisplayFunctions"})],-1),S=n('<p>Returns a string representing the <code>model</code> suitable for display in a user interface.</p><p>Uses the <code>displayProp</code> defined on the object's metadata. If no <code>displayProp</code> is defined, the object will be displayed as JSON. The display prop on a model can be defined in C# with <a href="/Coalesce/modeling/model-components/attributes/list-text.html">[ListText]</a>.</p><p>See <a href="#displayoptions">DisplayOptions</a> for available options.</p>',3),F=e("p",null,"Returns a string representing the specified property of the given object suitable for display in a user interface.",-1),k=e("p",null,[s("The property can either be a string, representing one of the model's properties, or the actual "),e("code",null,"Property"),s(" metadata object of the property.")],-1),P=e("p",null,[s("See "),e("a",{href:"#displayoptions"},"DisplayOptions"),s(" for available options.")],-1),q=n(`<p>Returns a string representing the given value (described by the given metadata).</p><p>See <a href="#displayoptions">DisplayOptions</a> for available options.</p><h2 id="displayoptions" tabindex="-1">DisplayOptions <a class="header-anchor" href="#displayoptions" aria-label="Permalink to "DisplayOptions"">​</a></h2><p>The following options are available to functions in coalesce-vue that render a value or object for display:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">export</span><span style="color:#569CD6;"> interface</span><span style="color:#4EC9B0;"> DisplayOptions</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> /** Date format options. One of:</span></span> +<span class="line"><span style="color:#6A9955;"> * - A UTS#35 date format string (https://date-fns.org/docs/format)</span></span> +<span class="line"><span style="color:#6A9955;"> * - An object with options for https://date-fns.org/docs/format or https://github.com/marnusw/date-fns-tz#format, including a string \`format\` for the format itself. If a \`timeZone\` option is provided per https://github.com/marnusw/date-fns-tz#format, the date being formatted will be converted to that timezone.</span></span> +<span class="line"><span style="color:#6A9955;"> * - An object with options for https://date-fns.org/docs/formatDistance */</span></span> +<span class="line"><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">?:</span></span> +<span class="line"><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">string</span></span> +<span class="line"><span style="color:#D4D4D4;"> | ({</span></span> +<span class="line"><span style="color:#6A9955;"> /** A UTS#35 date format string (https://date-fns.org/docs/format) */</span></span> +<span class="line"><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> } & </span><span style="color:#4EC9B0;">Parameters</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">typeof</span><span style="color:#9CDCFE;"> format</span><span style="color:#D4D4D4;">>[</span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">])</span></span> +<span class="line"><span style="color:#D4D4D4;"> | {</span></span> +<span class="line"><span style="color:#6A9955;"> /** Format date with https://date-fns.org/docs/formatDistanceToNow */</span></span> +<span class="line"><span style="color:#9CDCFE;"> distance</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;"> /** Append/prepend \`'in'\` or \`'ago'\` if date is after/before now. Default \`true\`. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> addSuffix</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#6A9955;"> /** Include detail smaller than one minute. Default \`false\`. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> includeSeconds</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> };</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;"> collection</span><span style="color:#D4D4D4;">?: {</span></span> +<span class="line"><span style="color:#6A9955;"> /** The maximum number of items to display individually.</span></span> +<span class="line"><span style="color:#6A9955;"> * When there are more than this number of items, the count of items will be displayed instead.</span></span> +<span class="line"><span style="color:#6A9955;"> * Default \`5\`.</span></span> +<span class="line"><span style="color:#6A9955;"> * */</span></span> +<span class="line"><span style="color:#9CDCFE;"> enumeratedItemsMax</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** The separator to place between enumerated items. Default \`', '\` */</span></span> +<span class="line"><span style="color:#9CDCFE;"> enumeratedItemsSeparator</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> };</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">Note</p><p>Dates rendered with the <code>formatDistanceToNow</code> function into a Vue component will not automatically be updated in realtime. If this is needed, you should use a strategy like using a <a href="https://vuejs.org/api/built-in-special-attributes.html#key" target="_blank" rel="noreferrer">key</a> that you periodically update to force a re-render.</p></div><h2 id="time-zones" tabindex="-1">Time Zones <a class="header-anchor" href="#time-zones" aria-label="Permalink to "Time Zones"">​</a></h2><p>In Coalesce Vue, all <code>DateTimeOffset</code>-based properties, for both inputs and display-only contexts, are by default formatted into the user's computer's system time zone. This is largely just a consequence of how the JavaScript Date type works. However, this behavior can be overridden by configuring a global default timezone, or by providing a time zone name to individual usages.</p><p>Fields with a type of <code>DateTime</code> are agnostic to time zone and UTC offset and so are not subject to any of the following rules.</p>`,9),V=n('<p>Gets or sets the default time zone used by Coalesce. The time zone should be an <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" target="_blank" rel="noreferrer">IANA Time Zone Database</a> name, e.g. <code>"America/Los_Angeles"</code>.</p><p>The time zone provided here is used in the following ways:</p><ul><li>It will be used as <code>DisplayOptions.format.timeZone</code> if no other value was provided for this option. This is used by functions <a href="#member-modeldisplay">modelDisplay</a>, <a href="#member-propdisplay">propDisplay</a>, and <a href="#member-valuedisplay">valueDisplay</a>, as well as the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> component.</li><li>It will be used by <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html">c-datetime-picker</a>, used to both interpret the user input and display the selected date. This can also be set on individual component usages via the <code>timeZone</code> prop.</li><li>It will be used when serializing DateTimeOffset fields into JSON DTOs, representing the ISO 8601 date string in the specified time zone rather than in the user's computer's system time zone.</li></ul>',3),I=e("p",null,[s("Returns the current configured default time zone. Default is "),e("code",null,"null"),s(", falling back on the user's computer's system time zone.")],-1);function B(M,O,x,j,N,z){const o=r("Prop"),l=r("CodeTabs");return i(),c("div",null,[D,a(o,{def:`// Vue Options API +bindToQueryString: { + (vue: Vue, obj: {}, key: string, options?: BindToQueryStringOptions); + (vue: Vue, ref: Ref<any>, queryKey: string); + (vue: Vue, ref: Ref<any>, options: BindToQueryStringOptions); +} +  +// Vue Composition API +useBindToQueryString: { + (obj: {}, key: string, options?: BindToQueryStringOptions); + (ref: Ref<any>, queryKey: string); + (ref: Ref<any>, options: BindToQueryStringOptions); +}`,lang:"ts",idPrefix:"member-bindToQuery"}),y,a(l,{name:"vue"},{options:t(()=>[u]),setup:t(()=>[h]),_:1}),m,a(o,{def:` +bindKeyToRouteOnCreate(vue: Vue, model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false) +  +useBindKeyToRouteOnCreate(model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false)`,lang:"ts",idPrefix:"member-bindKey"}),C,f,a(l,{name:"vue"},{options:t(()=>[g]),setup:t(()=>[b]),_:1}),v,a(o,{def:"convertToModel(value: any, metadata: Value | ClassType): any",lang:"ts"}),_,a(o,{def:"mapToModel(value: any, metadata: Value | ClassType): any",lang:"ts"}),T,a(o,{def:"mapToDto(value: any, metadata: Value | ClassType): any",lang:"ts"}),A,w,E,a(o,{def:"modelDisplay(model: Model, options?: DisplayOptions): string",lang:"ts"}),S,a(o,{def:"propDisplay(model: Model, prop: Property | string, options?: DisplayOptions): string",lang:"ts"}),F,k,P,a(o,{def:"valueDisplay(value: any, metadata: Value, options?: DisplayOptions): string",lang:"ts"}),q,a(o,{def:"setDefaultTimeZone(timeZoneName: string | null): void",lang:"ts"}),V,a(o,{def:"getDefaultTimeZone(): string | null",lang:"ts"}),I])}const $=p(d,[["render",B]]);export{Q as __pageData,$ as default}; diff --git a/assets/stacks_vue_layers_models.md.ST5NLFOv.lean.js b/assets/stacks_vue_layers_models.md.ST5NLFOv.lean.js new file mode 100644 index 000000000..ac320aae8 --- /dev/null +++ b/assets/stacks_vue_layers_models.md.ST5NLFOv.lean.js @@ -0,0 +1,49 @@ +import{_ as p,c,I as a,w as t,a7 as n,l as e,a as s,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const Q=JSON.parse('{"title":"Vue Model Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/models.md","filePath":"stacks/vue/layers/models.md"}'),d={name:"stacks/vue/layers/models.md"},D=n("",13),y=n("",3),u=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"bindToQueryString"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// In the 'created' Vue lifecycle hook on a component:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"created"),e("span",{style:{color:"#D4D4D4"}},"() {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}}," // Bind pagination information to the query string:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"listViewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"$params"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'pageSize'"),e("span",{style:{color:"#D4D4D4"}},", { "),e("span",{style:{color:"#9CDCFE"}},"parse:"),e("span",{style:{color:"#9CDCFE"}}," parseInt"),e("span",{style:{color:"#D4D4D4"}}," });")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}}," // Assuming the component has an 'activeTab' data member:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'activeTab'"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),h=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// Bind pagination information to the query string:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," list"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#569CD6"}},"new"),e("span",{style:{color:"#DCDCAA"}}," PersonListViewModel"),e("span",{style:{color:"#D4D4D4"}},"();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"list"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"$params"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'pageSize'"),e("span",{style:{color:"#D4D4D4"}},", { "),e("span",{style:{color:"#9CDCFE"}},"parse:"),e("span",{style:{color:"#9CDCFE"}}," parseInt"),e("span",{style:{color:"#D4D4D4"}}," });")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," activeTab"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#DCDCAA"}},"ref"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#CE9178"}},'"1"'),e("span",{style:{color:"#D4D4D4"}},")")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"activeTab"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#CE9178"}},"'activeTab'"),e("span",{style:{color:"#D4D4D4"}},");")])])])],-1),m=e("p",null,[s(" The query string will be updated using either `router.push` or `router.replace` depending on the value of parameter `mode`. "),e("p",null,"If the query string contains a value when this is called, the object will be updated with that value immediately."),e("p",null,[s("If the object being bound to has "),e("code",null,"$metadata"),s(", information from that metadata will be used to serialize and parse values to and from the query string. Otherwise, the "),e("code",null,"stringify"),s(" option (default: "),e("code",null,"String(value)"),s(") will be used to serialize the value, and the "),e("code",null,"parse"),s(" option (if provided) will be used to parse the value from the query string.")])],-1),C=e("p",null,[s("When "),e("code",null,"model"),s(" is created (i.e. its primary key becomes non-null), replace the current URL with one that includes uses primary key for the route parameter named by "),e("code",null,"routeParamName"),s(".")],-1),f=e("p",null,[s("The query string will not be kept when the route is changed unless "),e("code",null,"true"),s(" is given to "),e("code",null,"keepQuery"),s(".")],-1),g=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"bindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#6A9955"}},"// In the 'created' Vue lifecycle hook on a component:")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}},"created"),e("span",{style:{color:"#D4D4D4"}},"() {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}}," if"),e("span",{style:{color:"#D4D4D4"}}," ("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},") {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}}," this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#DCDCAA"}},"$load"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"else"),e("span",{style:{color:"#D4D4D4"}}," {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," bindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},", "),e("span",{style:{color:"#569CD6"}},"this"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}}," }")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),b=e("div",{class:"language-ts"},[e("button",{title:"Copy Code",class:"copy"}),e("span",{class:"lang"},"ts"),e("pre",{class:"shiki dark-plus vp-code"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"import"),e("span",{style:{color:"#D4D4D4"}}," { "),e("span",{style:{color:"#9CDCFE"}},"useBindKeyToRouteOnCreate"),e("span",{style:{color:"#D4D4D4"}}," } "),e("span",{style:{color:"#C586C0"}},"from"),e("span",{style:{color:"#CE9178"}}," 'coalesce-vue'"),e("span",{style:{color:"#D4D4D4"}},";")]),s(` +`),e("span",{class:"line"}),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," props"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#DCDCAA"}},"defineProps"),e("span",{style:{color:"#D4D4D4"}},"<{"),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},": "),e("span",{style:{color:"#4EC9B0"}},"number"),e("span",{style:{color:"#D4D4D4"}},"}>();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#569CD6"}},"const"),e("span",{style:{color:"#4FC1FF"}}," viewModel"),e("span",{style:{color:"#D4D4D4"}}," = "),e("span",{style:{color:"#569CD6"}},"new"),e("span",{style:{color:"#DCDCAA"}}," PersonViewModel"),e("span",{style:{color:"#D4D4D4"}},"();")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#C586C0"}},"if"),e("span",{style:{color:"#D4D4D4"}}," ("),e("span",{style:{color:"#9CDCFE"}},"props"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},") {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#9CDCFE"}}," viewModel"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#DCDCAA"}},"$load"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"props"),e("span",{style:{color:"#D4D4D4"}},"."),e("span",{style:{color:"#9CDCFE"}},"id"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"} "),e("span",{style:{color:"#C586C0"}},"else"),e("span",{style:{color:"#D4D4D4"}}," {")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#DCDCAA"}}," useBindToQueryString"),e("span",{style:{color:"#D4D4D4"}},"("),e("span",{style:{color:"#9CDCFE"}},"viewModel"),e("span",{style:{color:"#D4D4D4"}},");")]),s(` +`),e("span",{class:"line"},[e("span",{style:{color:"#D4D4D4"}},"}")])])])],-1),v=n("",4),_=n("",4),T=e("p",null,[s("Performs the same operations as "),e("code",null,"convertToModel"),s(", except that any objects encountered will not be mutated - instead, a new object or array will always be created.")],-1),A=e("p",null,"Maps the input to a representation suitable for JSON serialization.",-1),w=e("p",null,[s("Will not serialize child objects or collections whose metadata includes "),e("code",null,"dontSerialize"),s(". Will only recurse to a maximum depth of 3.")],-1),E=e("p",null,[e("a",{id:"VueModelDisplayFunctions"})],-1),S=n("",3),F=e("p",null,"Returns a string representing the specified property of the given object suitable for display in a user interface.",-1),k=e("p",null,[s("The property can either be a string, representing one of the model's properties, or the actual "),e("code",null,"Property"),s(" metadata object of the property.")],-1),P=e("p",null,[s("See "),e("a",{href:"#displayoptions"},"DisplayOptions"),s(" for available options.")],-1),q=n("",9),V=n("",3),I=e("p",null,[s("Returns the current configured default time zone. Default is "),e("code",null,"null"),s(", falling back on the user's computer's system time zone.")],-1);function B(M,O,x,j,N,z){const o=r("Prop"),l=r("CodeTabs");return i(),c("div",null,[D,a(o,{def:`// Vue Options API +bindToQueryString: { + (vue: Vue, obj: {}, key: string, options?: BindToQueryStringOptions); + (vue: Vue, ref: Ref<any>, queryKey: string); + (vue: Vue, ref: Ref<any>, options: BindToQueryStringOptions); +} +  +// Vue Composition API +useBindToQueryString: { + (obj: {}, key: string, options?: BindToQueryStringOptions); + (ref: Ref<any>, queryKey: string); + (ref: Ref<any>, options: BindToQueryStringOptions); +}`,lang:"ts",idPrefix:"member-bindToQuery"}),y,a(l,{name:"vue"},{options:t(()=>[u]),setup:t(()=>[h]),_:1}),m,a(o,{def:` +bindKeyToRouteOnCreate(vue: Vue, model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false) +  +useBindKeyToRouteOnCreate(model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false)`,lang:"ts",idPrefix:"member-bindKey"}),C,f,a(l,{name:"vue"},{options:t(()=>[g]),setup:t(()=>[b]),_:1}),v,a(o,{def:"convertToModel(value: any, metadata: Value | ClassType): any",lang:"ts"}),_,a(o,{def:"mapToModel(value: any, metadata: Value | ClassType): any",lang:"ts"}),T,a(o,{def:"mapToDto(value: any, metadata: Value | ClassType): any",lang:"ts"}),A,w,E,a(o,{def:"modelDisplay(model: Model, options?: DisplayOptions): string",lang:"ts"}),S,a(o,{def:"propDisplay(model: Model, prop: Property | string, options?: DisplayOptions): string",lang:"ts"}),F,k,P,a(o,{def:"valueDisplay(value: any, metadata: Value, options?: DisplayOptions): string",lang:"ts"}),q,a(o,{def:"setDefaultTimeZone(timeZoneName: string | null): void",lang:"ts"}),V,a(o,{def:"getDefaultTimeZone(): string | null",lang:"ts"}),I])}const $=p(d,[["render",B]]);export{Q as __pageData,$ as default}; diff --git a/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.js b/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.js new file mode 100644 index 000000000..7f3bb0f1d --- /dev/null +++ b/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.js @@ -0,0 +1,72 @@ +import{_ as n,c as l,I as o,a7 as s,l as e,a,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const je=JSON.parse('{"title":"Vue ViewModel Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/viewmodels.md","filePath":"stacks/vue/layers/viewmodels.md"}'),d={name:"stacks/vue/layers/viewmodels.md"},c=s('<h1 id="vue-viewmodel-layer" tabindex="-1">Vue ViewModel Layer <a class="header-anchor" href="#vue-viewmodel-layer" aria-label="Permalink to "Vue ViewModel Layer"">​</a></h1><p>The ViewModel layer, generated as <code>viewmodels.g.ts</code>, exports a ViewModel class for each API-backed type in your data model (<a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>, <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, and <a href="/Coalesce/modeling/model-types/services.html">Services</a>). It also exports a ListViewModel type for <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>.</p><p>These classes provide a wide array of functionality that is useful when interacting with your data model through a user interface. The generated ViewModels are the primary way that Coalesce is used when developing a Vue application.</p><h2 id="viewmodels" tabindex="-1">ViewModels <a class="header-anchor" href="#viewmodels" aria-label="Permalink to "ViewModels"">​</a></h2><p>The following members can be found on the generated <a href="/Coalesce/modeling/model-types/entities.html">Entity</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTO</a> ViewModels, exported from <code>viewmodels.g.ts</code> as <code><TypeName>ViewModel</code>.</p><h3 id="model-data-properties" tabindex="-1">Model Data Properties <a class="header-anchor" href="#model-data-properties" aria-label="Permalink to "Model Data Properties"">​</a></h3><p>Each ViewModel class implements the corresponding interface from the <a href="/Coalesce/stacks/vue/layers/models.html">Model Layer</a>, meaning that the ViewModel has a data property for each <a href="/Coalesce/modeling/model-components/properties.html">Property</a> on the model. Object-typed properties will be typed as the corresponding generated ViewModel.</p><p>Changing the value of a property will automatically flag that property as dirty. See <a href="/Coalesce/stacks/vue/layers/viewmodels.html">Auto-save & Dirty Flags</a> below for information on how property dirty flags are used.</p><p>There are a few special behaviors when assigning to different kinds of data properties on View Models as well:</p><h4 id="model-object-properties" tabindex="-1">Model Object Properties <a class="header-anchor" href="#model-object-properties" aria-label="Permalink to "Model Object Properties"">​</a></h4><ul><li>If the object being assigned to the property is not a ViewModel instance, a new instance will be created automatically and used instead of the incoming object.</li><li>If the model property is a reference navigation, the corresponding foreign key property will automatically be set to the primary key of that object. If the incoming value was null, the foreign key will be set to null.</li><li>If deep auto-saves are enabled on the instance being assigned to, auto-save will be spread to the incoming object, and to all other objects reachable from that object.</li></ul><h4 id="model-collection-properties" tabindex="-1">Model Collection Properties <a class="header-anchor" href="#model-collection-properties" aria-label="Permalink to "Model Collection Properties"">​</a></h4><ul><li>When assigning an entire array, any items in the array that are not a ViewModel instance will have an instance created for them.</li><li>The same rule goes for pushing items into the existing array for a model collection - a new ViewModel instance will be created and be used instead of the object(s) being pushed.</li></ul><h4 id="foreign-key-properties" tabindex="-1">Foreign Key Properties <a class="header-anchor" href="#foreign-key-properties" aria-label="Permalink to "Foreign Key Properties"">​</a></h4><p>If the corresponding navigation property contains an object, and that object's primary key doesn't match the new foreign key value being assigned, the navigation property will be set to null.</p><h3 id="other-data-properties-functions" tabindex="-1">Other Data Properties & Functions <a class="header-anchor" href="#other-data-properties-functions" aria-label="Permalink to "Other Data Properties & Functions"">​</a></h3>',16),p=e("p",null,[a("The metadata object from the "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata Layer"),a(" layer for the type represented by the ViewModel.")],-1),h=e("p",null,"An immutable number that is unique among all ViewModel instances, regardless of type.",-1),u=e("p",null,[a("Useful for uniquely identifying instances with "),e("code",null,':key="vm.$stableId"'),a(" in a Vue component, especially for instances that lack a primary key.")],-1),m=e("p",null,"A getter/setter property that wraps the primary key of the model. Used to interact with the primary key of any ViewModel in a polymorphic way.",-1),f=e("p",null,"Returns a string representation of the object, or one of its properties if specified, suitable for display.",-1),y=e("p",null,"This is especially useful for displaying enum properties, navigation properties, date properties, and other complex values.",-1),g=e("p",null,[a("Creates a new instance of an item for the specified child model collection, adds it to that collection, and returns the item. If "),e("code",null,"initialDirtyData"),a(" is provided, it will be loaded into the new instance with "),e("code",null,"$loadDirtyData()"),a(".")],-1),v=e("h3",{id:"loading-parameters",tabindex:"-1"},[a("Loading & Parameters "),e("a",{class:"header-anchor",href:"#loading-parameters","aria-label":'Permalink to "Loading & Parameters"'},"​")],-1),b=s('<p>An <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> for the <code>/get</code> endpoint. Accepts an optional <code>id</code> argument - if not provided, the ViewModel's <code>$primaryKey</code> is used instead. Uses the instance's <code>$params</code> object for the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a>.</p>',1),_=e("p",null,[a("An object containing the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(" to be used for the "),e("code",null,"$load"),a(", "),e("code",null,"$save"),a(", "),e("code",null,"$bulkSave"),a(", and "),e("code",null,"$delete"),a(" API callers.")],-1),w=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.dataSource"),a(". Takes an instance of a "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),a(" class "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"generated in the Model Layer"),a(".")],-1),D=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.includes"),a(". See "),e("a",{href:"/Coalesce/concepts/includes.html"},"Includes String"),a(" for more information.")],-1),C=e("p",null,"Loads data from the provided model into the current ViewModel, and then clears all dirty flags.",-1),A=e("p",null,"Data is loaded recursively into all related ViewModel instances, preserving existing instances whose primary keys match the incoming data.",-1),P=e("p",null,[a("If auto-save is enabled, only non-dirty properties are updated. This prevents user input that is pending a save from being overwritten by the response from an auto-save "),e("code",null,"/save"),a(" request.")],-1),T=e("p",null,[a("If "),e("code",null,"purgeUnsaved"),a(" is true, items without a primary key will be dropped from collection navigation properties. This is used by the "),e("code",null,"$load"),a(" caller in order to fully reset the object graph with the state from the server.")],-1),k=e("p",null,[a("Same as "),e("code",null,"$loadCleanData"),a(", but does not clear any existing dirty flags, nor does it clear any dirty flags that will be set while mutating the data properties of any ViewModel instance that gets loaded.")],-1),$=e("p",null,[a("Create a new instance of the ViewModel, loading the given initial data with "),e("code",null,"$loadDirtyData()"),a(" if provided.")],-1),S=e("h3",{id:"saving-and-deleting",tabindex:"-1"},[a("Saving and Deleting "),e("a",{class:"header-anchor",href:"#saving-and-deleting","aria-label":'Permalink to "Saving and Deleting"'},"​")],-1),M=s('<p>An <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> for the <code>/save</code> endpoint. Uses the instance's <code>$params</code> object for the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a>. A save operation saves only properties on the model it is called on - for deep/bulk saves, see <a href="#member-_bulksave">$bulkSave</a>.</p><p>This caller is used for both manually-triggered saves in custom code and for auto-saves. If the <a href="/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation">Rules/Validation</a> report any errors when the caller is invoked, an error will be thrown.</p><p><code>overrideProps</code> can provide properties to save that override the <a href="#model-data-properties">data properties</a> on the ViewModel instance. This allows for manually saving a change to a property without setting the property on the ViewModel instance into a dirty state. This makes it easier to handle some scenarios where changing the value of the property may put the UI into a logically inconsistent state until the save response has been returned from the server - for example, if a change to one property affects the computed value of other properties.</p><p>When a save creates a new record and a new primary key is returned from the server, any entities attached to the current ViewModel via a collection navigation property will have their foreign keys set to the new primary key. This behavior, combined with the usage of deep auto-saves, allows for complex object graphs to be constructed even before any model in the graph has been created.</p><p>When a save is in progress, the names of properties being saved are in contained in <code>$savingProps</code>.</p><p>Saving behavior can be further customized with <code>$loadResponseFromSaves</code> and <code>$saveMode</code>, listed below.</p>',6),V=e("p",null,[a("An "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(" for the "),e("code",null,"/delete"),a(" endpoint. Uses the instance's "),e("code",null,"$params"),a(" object for the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(".")],-1),I=e("p",null,"If the object was loaded as a child of a collection, it will be removed from that collection upon being deleted. Note that ViewModels currently only support tracking of a single parent collection, so if an object is programmatically added to additional collections, it will only be removed from one of them upon delete.",-1),x=e("p",null,[a("Default "),e("code",null,"true"),a(" - controls if a ViewModel will be loaded with the data from the model returned by the "),e("code",null,"/save"),a(" endpoint when saved with the "),e("code",null,"$save"),a(" API caller. There is seldom any reason to disable this.")],-1),E=e("p",null,[a("When "),e("code",null,"$save.isLoading == true"),a(", contains the properties of the model currently being saved by "),e("code",null,"$save"),a(" (including auto-saves). Does not include non-dirty properties even if "),e("code",null,"$saveMode == 'whole'"),a(".")],-1),q=e("p",null,"This can be used to make per-property UI state changes during saves - for example, displaying progress indicators on/near individual inputs, or disabling input controls.",-1),R=s('<p>Configures which properties of the model are sent to the server during a save or bulk save.</p><div style="margin-left:20px;"><p><code>"surgical"</code> (default)</p><p>By default, only dirty properties (and always the primary key) are sent to the server when performing a save.</p><p>This improves the handling of concurrent changes being made by multiple users against different fields of the same entity at the same time - specifically, it prevents a user with a stale value of some field X from overwriting a more recent value of X in the database when the user is only making changes to some other property Y and has no intention of changing X.</p><p>Save mode <code>"surgical"</code> doesn't help when multiple users are editing field X at the same time - if such a scenario is applicable to your application, you must implement <a href="https://learn.microsoft.com/en-us/ef/core/saving/concurrency" target="_blank" rel="noreferrer">more advanced handling of concurrency conflicts</a>.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Surgical saves require DTOs on the server that are capable of determining which of their properties have been set by the model binder, as surgical saves are sent from the client by entirely omitting properties from the <code>x-www-form-urlencoded</code> body that is sent to the server.</p><p>The <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a> implement the necessary logic for this; however, any <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a> must have this logic manually written by you, the developer. Either implement the same pattern that can be seen in the <a href="/Coalesce/stacks/agnostic/dtos.html">Generated C# DTOs</a>, or do not use surgical saves with Custom DTOs.</p></div><p><code>"whole"</code></p><p>All serializable properties of the object are sent back to the server with every save.</p></div>',2),j=e("p",null,"Returns true if the given property is flagged as dirty.",-1),O=e("p",null,"Manually set the dirty flag of the given property to the desired state. This seldom needs to be done explicitly, as mutating a property will automatically flag it as dirty.",-1),B=e("p",null,[a("If "),e("code",null,"dirty"),a(" is true and "),e("code",null,"triggerAutoSave"),a(" is false, auto-save (if enabled) will not be immediately triggered for this specific flag change. Note that a future change to any other property's dirty flag will still trigger a save of all dirty properties.")],-1),L=e("p",null,"Getter/setter that summarizes the model's property-level dirty flags. Returns true if any properties are dirty.",-1),N=e("p",null,"When set to false, all property dirty flags are cleared. When set to true, all properties are marked as dirty.",-1),F=e("h3",{id:"auto-save",tabindex:"-1"},[a("Auto-save "),e("a",{class:"header-anchor",href:"#auto-save","aria-label":'Permalink to "Auto-save"'},"​")],-1),G=s(`<p>Starts auto-saving of the instance when its savable data properties become dirty. Saves are performed with the <code>$save</code> <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> (documented above) and will not be performed if the ViewModel has any validation errors - see <a href="/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation">Rules/Validation</a> below.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">type</span><span style="color:#4EC9B0;"> AutoSaveOptions</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TThis</span><span style="color:#D4D4D4;">> = </span></span> +<span class="line"><span style="color:#D4D4D4;">{ </span></span> +<span class="line"><span style="color:#6A9955;"> /** Time, in milliseconds, to debounce saves for. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> wait</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#6A9955;"> /** If true, auto-saving will also be enabled for all view models that are</span></span> +<span class="line"><span style="color:#6A9955;"> reachable from the navigation properties & collections of the current view model. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> deep</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** Additional options to pass to the third parameter of lodash's \`debounce\` function. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> debounce</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">DebounceSettings</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** A function that will be called before autosaving that can return false to prevent a save. </span></span> +<span class="line"><span style="color:#6A9955;"> Only allowed if not using deep auto-saves.</span></span> +<span class="line"><span style="color:#6A9955;"> */</span></span> +<span class="line"><span style="color:#DCDCAA;"> predicate</span><span style="color:#D4D4D4;">?: (</span><span style="color:#9CDCFE;">viewModel</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">TThis</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,2),U=e("p",null,[a("Turns off auto-saving of the instance. Does not recursively disable auto-saves on related instances if "),e("code",null,"deep"),a(" was used when auto-save was enabled.")],-1),W=e("p",null,"Returns true if auto-save is currently active on the instance.",-1),z=e("h3",{id:"bulk-saves",tabindex:"-1"},[a("Bulk saves "),e("a",{class:"header-anchor",href:"#bulk-saves","aria-label":'Permalink to "Bulk saves"'},"​")],-1),K=s(`<p>Bulk saves save all changes to an object graph in one API call and one database transaction. This includes creation, updates, and deletions of entities.</p><p>To use bulk saves, you can work with your ViewModel instances on the client much in the same way you would on the server with Entity Framework. Assign objects to reference navigation properties and modify scalar values to perform creates and updates. To perform deletions, you must call <code>model.$remove()</code> on the ViewModel you want to remove, similar how you would call <code>DbSet<>.Remove(model)</code> on the server.</p><p>If the client-side <a href="/Coalesce/stacks/vue/layers/viewmodels.html#rules-validation">Rules/Validation</a> report any errors for any of the models being saved in the operation, an error will be thrown.</p><p>On the server, each affected entity is handled through the same standard mechanisms as are used by individual saves or deletes (<a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a>, <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a>, and <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">Security Attributes</a>), but with a bit of sugar on top:</p><ul><li>All operations are wrapped in a single database transaction that is rolled back if any individual operation fails.</li><li>Foreign keys will be fixed up as new items are created, allowing a parent and child record to be created at the same time even when the client has no foreign key to link the two together.</li></ul><p>For the response to a bulk save, the server will load and return the root ViewModel that <code>$bulkSave</code> was called upon, using the instance's <code>$params</code> object for the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a>.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">export</span><span style="color:#569CD6;"> interface</span><span style="color:#4EC9B0;"> BulkSaveOptions</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> /** A predicate that will be applied to each modified model</span></span> +<span class="line"><span style="color:#6A9955;"> * to determine if it should be included in the bulk save operation.</span></span> +<span class="line"><span style="color:#6A9955;"> *</span></span> +<span class="line"><span style="color:#6A9955;"> * The predicate is applied before validation (\`$hasError\`), allowing</span></span> +<span class="line"><span style="color:#6A9955;"> * it to be used to skip over entities that have client validation errors</span></span> +<span class="line"><span style="color:#6A9955;"> * that would otherwise cause the entire bulk save operation to fail.</span></span> +<span class="line"><span style="color:#6A9955;"> * */</span></span> +<span class="line"><span style="color:#DCDCAA;"> predicate</span><span style="color:#D4D4D4;">?: (</span><span style="color:#9CDCFE;">viewModel</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">ViewModel</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">action</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"save"</span><span style="color:#D4D4D4;"> | </span><span style="color:#CE9178;">"delete"</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** Additional root items that will be traversed for items that need saving.</span></span> +<span class="line"><span style="color:#6A9955;"> * Use to add items that aren't attached to the target of the bulk save,</span></span> +<span class="line"><span style="color:#6A9955;"> * but are still desired to be saved during the same operation.</span></span> +<span class="line"><span style="color:#6A9955;"> */</span></span> +<span class="line"><span style="color:#9CDCFE;"> additionalRoots</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">ViewModel</span><span style="color:#D4D4D4;">[];</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,7),X=e("p",null,[a("Returns the payload that will be used for the "),e("code",null,"$bulkSave"),a(" operation.")],-1),J=e("p",null,[a("Useful for driving UI state, like preemptively showing errors, or determining if there are any objects with pending modifications. If you are using this to drive UI state, it is strongly recommended to wrap this call in a "),e("code",null,"computed"),a(" in your component to reduce excessive invocations.")],-1),Y=e("p",null,"Removes the item from its parent collection (if it is in a collection), and marks the item for deletion in the next bulk save.",-1),H=e("p",null,[a("Returns true if the instance was previously removed by calling "),e("code",null,"$remove()"),a(".")],-1),Q=e("h3",{id:"rules-validation",tabindex:"-1"},[a("Rules/Validation "),e("a",{class:"header-anchor",href:"#rules-validation","aria-label":'Permalink to "Rules/Validation"'},"​")],-1),Z=e("p",null,[a("Add a custom validation rule to the ViewModel for the specified property. "),e("code",null,"identifier"),a(" should be a short, unique slug that describes the rule; it is not displayed in the UI, but is used if you wish to later remove the rule with "),e("code",null,"$removeRule()"),a(".")],-1),ee=e("p",null,[a("The function you provide should take a single argument that contains the current value of the property, and should either return "),e("code",null,"true"),a(" to indicate that the validation rule has succeeded, or a string that will be displayed as an error message to the user.")],-1),ae=e("p",null,[a("Any failing validation rules on a ViewModel will prevent that ViewModel's "),e("code",null,"$save"),a(" caller from being invoked.")],-1),te=e("p",null,"Remove a validation rule from the ViewModel for the specified property and rule identifier.",-1),oe=e("p",null,[a("This can be used to remove either a rule that was provided by the generated "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata Layer"),a(", or a custom rule that was added by "),e("code",null,"$addRule"),a(". Reference your generated metadata file "),e("code",null,"metadata.g.ts"),a(" to see any generated rules and the identifiers they use.")],-1),se=e("p",null,[a("Returns an array of active rule functions for the specified property, or "),e("code",null,"undefined"),a(" if the property has no active validation rules.")],-1),ne=e("p",null,[a("Returns a "),e("a",{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",target:"_blank",rel:"noreferrer"},"generator"),a(" that provides all error messages for either a specific property (if provided) or the entire model (if no prop argument is provided).")],-1),le=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[a("You can obtain an array from a generator with "),e("code",null,"Array.from(vm.$getErrors())"),a(" or "),e("code",null,"[...vm.$getErrors()]")])],-1),re=s('<p>Indicates if any properties have validation errors.</p><h3 id="generated-members" tabindex="-1">Generated Members <a class="header-anchor" href="#generated-members" aria-label="Permalink to "Generated Members"">​</a></h3><h4 id="api-callers" tabindex="-1">API Callers <a class="header-anchor" href="#api-callers" aria-label="Permalink to "API Callers"">​</a></h4><p>For each of the instance <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> of the type, an <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> will be generated.</p><h4 id="addto-functions" tabindex="-1"><code>addTo*()</code> Functions <a class="header-anchor" href="#addto-functions" aria-label="Permalink to "`addTo*()` Functions"">​</a></h4><p>For each <a href="/Coalesce/modeling/model-components/properties.html">collection navigation property</a>, a method is generated that will create a new instance of the ViewModel for the collected type, add it to the collection, and then return the new object.</p><h4 id="many-to-many-helper-collections" tabindex="-1">Many-to-many helper collections <a class="header-anchor" href="#many-to-many-helper-collections" aria-label="Permalink to "Many-to-many helper collections"">​</a></h4><p>For each <a href="/Coalesce/modeling/model-components/properties.html">collection navigation property</a> annotated with <a href="/Coalesce/modeling/model-components/attributes/many-to-many.html">[ManyToMany]</a>, a getter-only property is generated that returns a collection of the object on the far side of the many-to-many relationship. Nulls are filtered from this collection.</p><h2 id="listviewmodels" tabindex="-1">ListViewModels <a class="header-anchor" href="#listviewmodels" aria-label="Permalink to "ListViewModels"">​</a></h2><p>The following members can be found on the generated ListViewModels, exported from <code>viewmodels.g.ts</code> as <code>*TypeName*ListViewModel</code>.</p><h3 id="data-properties" tabindex="-1">Data Properties <a class="header-anchor" href="#data-properties" aria-label="Permalink to "Data Properties"">​</a></h3>',11),ie=e("p",null,[a("Collection holding the ViewModel instances from the last successful invocation of the "),e("code",null,"$load"),a(),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(".")],-1),de=e("p",null,[a("Collection holding plain Model instances from the last successful invocation of the "),e("code",null,"$load"),a(),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(".")],-1),ce=e("p",null,[a("When model-only mode is enabled, "),e("code",null,"$items"),a(" will not be populated with ViewModel instances. Result can instead be read from "),e("code",null,"$modelItems"),a(". This mode allows much better performance when loading large quantities of data, especially in read-only contexts where the features of ViewModel instances aren't needed.")],-1),pe=e("h3",{id:"parameters-api-callers",tabindex:"-1"},[a("Parameters & API Callers "),e("a",{class:"header-anchor",href:"#parameters-api-callers","aria-label":'Permalink to "Parameters & API Callers"'},"​")],-1),he=e("p",null,[a("An object containing the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(" to be used for the "),e("code",null,"$load"),a(" and "),e("code",null,"$count"),a(" API callers.")],-1),ue=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.dataSource"),a(". Takes an instance of a "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),a(" class "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"generated in the Model Layer"),a(".")],-1),me=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.includes"),a(". See "),e("a",{href:"/Coalesce/concepts/includes.html"},"Includes String"),a(" for more information.")],-1),fe=s('<p>An <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> for the <code>/list</code> endpoint. Uses the instance's <code>$params</code> object for the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a>.</p><p>Results are available in the <code>$items</code> property. The <code>result</code> property of the <code>$load</code> API Caller contains the raw results and is not recommended for use in general development - <code>$items</code> should always be preferred.</p>',2),ye=s('<p>An <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> for the <code>/count</code> endpoint. Uses the instance's <code>$params</code> object for the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-parameters">Standard Parameters</a>.</p><p>The result is available in <code>$count.result</code> - this API Caller does not interact with other properties on the ListViewModel like <code>$pageSize</code> or <code>$pageCount</code>.</p>',2),ge=e("p",null,[a("Properties which indicate if "),e("code",null,"$page"),a(" can be decremented or incremented, respectively. "),e("code",null,"$pageCount"),a(" and "),e("code",null,"$page"),a(" are used to make this determination.")],-1),ve=e("p",null,[a("Methods that will decrement or increment "),e("code",null,"$page"),a(", respectively. Each does nothing if there is no previous or next page as returned by "),e("code",null,"$hasPreviousPage"),a(" and "),e("code",null,"$hasNextPage"),a(".")],-1),be=e("p",null,[a("Getter/setter wrapper for "),e("code",null,"$params.page"),a(". Controls the page that will be requested on the next invocation of "),e("code",null,"$load"),a(".")],-1),_e=e("p",null,[a("Getter/setter wrapper for "),e("code",null,"$params.pageSize"),a(". Controls the page that will be requested on the next invocation of "),e("code",null,"$load"),a(".")],-1),we=e("p",null,[a("Shorthand for "),e("code",null,"$load.pageCount"),a(" - returns the page count reported by the last successful invocation of "),e("code",null,"$load"),a(".")],-1),De=e("h3",{id:"auto-load",tabindex:"-1"},[a("Auto-Load "),e("a",{class:"header-anchor",href:"#auto-load","aria-label":'Permalink to "Auto-Load"'},"​")],-1),Ce=s(`<p>Starts auto-loading of the list as changes to its parameters occur. Loads are performed with the <code>$load</code> <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a>.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">type</span><span style="color:#4EC9B0;"> AutoLoadOptions</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TThis</span><span style="color:#D4D4D4;">> =</span></span> +<span class="line"><span style="color:#D4D4D4;">{ </span></span> +<span class="line"><span style="color:#6A9955;"> /** Time, in milliseconds, to debounce loads for. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> wait</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">number</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** Additional options to pass to the third parameter of lodash's \`debounce\` function. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> debounce</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">DebounceSettings</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** A function that will be called before loading that can return false to prevent a load. */</span></span> +<span class="line"><span style="color:#DCDCAA;"> predicate</span><span style="color:#D4D4D4;">?: (</span><span style="color:#9CDCFE;">viewModel</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">TThis</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#4EC9B0;"> boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> /** If true, an immediate initial load of the list will be performed. </span></span> +<span class="line"><span style="color:#6A9955;"> * Otherwise, the initial auto-load of the list won't occur until </span></span> +<span class="line"><span style="color:#6A9955;"> * the first change to its parameters occur. */</span></span> +<span class="line"><span style="color:#9CDCFE;"> immediate</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">boolean</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div>`,2),Ae=e("p",null,"Manually turns off auto-loading of the instance.",-1),Pe=e("h3",{id:"auto-save-1",tabindex:"-1"},[a("Auto-save "),e("a",{class:"header-anchor",href:"#auto-save-1","aria-label":'Permalink to "Auto-save"'},"​")],-1),Te=e("p",null,[a("Enables auto-save for the items in the list, propagating to new items as they're added or loaded. See "),e("a",{href:"#member-item-autosave"},"ViewModel auto-save documentation"),a(" for more details.")],-1),ke=e("p",null,[a("Turns off auto-saving of the items in the list, and turns of propagation of auto-save to any future items if auto-save was previously turned on for the list. Only affects items that are currently in the list's "),e("code",null,"$items"),a(".")],-1),$e=s('<p>Returns true if auto-save is currently active on the instance.</p><h3 id="generated-members-1" tabindex="-1">Generated Members <a class="header-anchor" href="#generated-members-1" aria-label="Permalink to "Generated Members"">​</a></h3><h4 id="api-callers-1" tabindex="-1">API Callers <a class="header-anchor" href="#api-callers-1" aria-label="Permalink to "API Callers"">​</a></h4><p>For each of the static <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> on the type, an <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> will be created.</p><h2 id="service-viewmodels" tabindex="-1">Service ViewModels <a class="header-anchor" href="#service-viewmodels" aria-label="Permalink to "Service ViewModels"">​</a></h2><p>The following members can be found on the generated Service ViewModels, exported from <code>viewmodels.g.ts</code> as <code><ServiceName>ViewModel</code>.</p><h3 id="generated-members-2" tabindex="-1">Generated Members <a class="header-anchor" href="#generated-members-2" aria-label="Permalink to "Generated Members"">​</a></h3><h4 id="api-callers-2" tabindex="-1">API Callers <a class="header-anchor" href="#api-callers-2" aria-label="Permalink to "API Callers"">​</a></h4><p>For each method of the <a href="/Coalesce/modeling/model-types/services.html">Service</a>, an <a href="/Coalesce/stacks/vue/layers/api-clients.html#api-callers">API Caller</a> will be created.</p>',9);function Se(Me,Ve,Ie,xe,Ee,qe){const t=r("Prop");return i(),l("div",null,[c,o(t,{def:"readonly $metadata: ModelType",lang:"ts"}),p,o(t,{def:"readonly $stableId: number",lang:"ts"}),h,u,o(t,{def:"$primaryKey: string | number",lang:"ts"}),m,o(t,{def:"$display(prop?: string | Property): string",lang:"ts"}),f,y,o(t,{def:"$addChild(prop: string | ModelCollectionNavigationProperty, initialDirtyData?: {})",lang:"ts"}),g,v,o(t,{def:`$load: ItemApiState; +$load(id?: TKey) => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),b,o(t,{def:"$params: DataSourceParameters",lang:"ts",idPrefix:"member-item"}),_,o(t,{def:"$dataSource: DataSource",lang:"ts",idPrefix:"member-item"}),w,o(t,{def:"$includes: string | null",lang:"ts",idPrefix:"member-item"}),D,o(t,{def:"$loadCleanData(source: {} | TModel, purgeUnsaved = false)",lang:"ts"}),C,A,P,T,o(t,{def:"$loadDirtyData(source: {} | TModel)",lang:"ts"}),k,o(t,{def:"constructor(initialDirtyData?: {} | TModel | null)",lang:"ts"}),$,S,o(t,{def:`$save: ItemApiState; +$save(overrideProps?: Partial<TModel>) => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),M,o(t,{def:`$delete: ItemApiState; +$delete() => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),V,I,o(t,{def:"$loadResponseFromSaves: boolean",lang:"ts"}),x,o(t,{def:"$savingProps: ReadonlySet<string>",lang:"ts"}),E,q,o(t,{def:"$saveMode: 'surgical' | 'whole'",lang:"ts"}),R,o(t,{def:"$getPropDirty(propName: string): boolean",lang:"ts"}),j,o(t,{def:"$setPropDirty(propName: string, dirty: boolean = true, triggerAutoSave = true)",lang:"ts"}),O,B,o(t,{def:"$isDirty: boolean",lang:"ts"}),L,N,F,o(t,{def:`// Vue Options API +$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {}) +  +// Vue Composition API +$useAutoSave(options: AutoSaveOptions<this> = {})`,lang:"ts",id:"member-item-autosave"}),G,o(t,{def:"$stopAutoSave(): void",lang:"ts"}),U,o(t,{def:"readonly $isAutoSaveEnabled: boolean",lang:"ts"}),W,z,o(t,{def:`$bulkSave: ItemApiState; +$bulkSave(options: BulkSaveOptions) => ItemResultPromise<TModel>;`,lang:"ts"}),K,o(t,{def:`$bulkSavePreview(options?: BulkSaveOptions) => { + isDirty: boolean; + errors: string[]; + items: BulkSaveRequestItem[]; + rawItems: BulkSaveRequestRawItem[]; +}`,lang:"ts"}),X,J,o(t,{def:"$remove(): void",lang:"ts"}),Y,o(t,{def:"readonly $isRemoved: boolean",lang:"ts"}),H,Q,o(t,{def:"$addRule(prop: string | Property, identifier: string, rule: (val: any) => true | string)",lang:"ts"}),Z,ee,ae,o(t,{def:"$removeRule(prop: string | Property, identifier: string)",lang:"ts"}),te,oe,o(t,{def:"$getRules(prop: string | Property): ((val: any) => string | true)[]",lang:"ts"}),se,o(t,{def:"$getErrors(prop?: string | Property): Generator<string>",lang:"ts"}),ne,le,o(t,{def:"readonly $hasError: boolean",lang:"ts"}),re,o(t,{def:"readonly $items: T[]",lang:"ts"}),ie,o(t,{def:"readonly $modelItems: T[]",lang:"ts"}),de,o(t,{def:"$modelOnlyMode: boolean",lang:"ts"}),ce,pe,o(t,{def:"$params: ListParameters",lang:"ts",idPrefix:"member-list"}),he,o(t,{def:"$dataSource: DataSource",lang:"ts",idPrefix:"member-list"}),ue,o(t,{def:"$includes: string | null",lang:"ts",idPrefix:"member-list"}),me,o(t,{def:`$load: ListApiState; +$load() => ListResultPromise<TModel>`,lang:"ts",idPrefix:"member-list"}),fe,o(t,{def:`$count: ItemApiState; +$count() => ItemResultPromise<number>`,lang:"ts"}),ye,o(t,{def:`readonly $hasPreviousPage: boolean +readonly $hasNextPage: boolean`,lang:"ts"}),ge,o(t,{def:`$previousPage(): void +$nextPage(): void`,lang:"ts"}),ve,o(t,{def:"$page: number",lang:"ts"}),be,o(t,{def:"$pageSize: number",lang:"ts"}),_e,o(t,{def:"readonly $pageCount: number",lang:"ts"}),we,De,o(t,{def:`// Vue Options API +$startAutoLoad(vue: Vue, options: AutoLoadOptions<this> = {}) +  +// Vue Composition API +$useAutoLoad(options: AutoLoadOptions<this> = {})`,lang:"ts",id:"member-list-autoLoad"}),Ce,o(t,{def:"$stopAutoLoad()",lang:"ts"}),Ae,Pe,o(t,{def:`// Vue Options API +$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {}) +  +// Vue Composition API +$useAutoSave(options: AutoSaveOptions<this> = {})`,lang:"ts",id:"member-list-autosave"}),Te,o(t,{def:"$stopAutoSave(): void",lang:"ts"}),ke,o(t,{def:"readonly $isAutoSaveEnabled: boolean",lang:"ts"}),$e])}const Oe=n(d,[["render",Se]]);export{je as __pageData,Oe as default}; diff --git a/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.lean.js b/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.lean.js new file mode 100644 index 000000000..02ff72c3f --- /dev/null +++ b/assets/stacks_vue_layers_viewmodels.md.Bu5ItAZ9.lean.js @@ -0,0 +1,26 @@ +import{_ as n,c as l,I as o,a7 as s,l as e,a,D as r,o as i}from"./chunks/framework.BkavzUpE.js";const je=JSON.parse('{"title":"Vue ViewModel Layer","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/layers/viewmodels.md","filePath":"stacks/vue/layers/viewmodels.md"}'),d={name:"stacks/vue/layers/viewmodels.md"},c=s("",16),p=e("p",null,[a("The metadata object from the "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata Layer"),a(" layer for the type represented by the ViewModel.")],-1),h=e("p",null,"An immutable number that is unique among all ViewModel instances, regardless of type.",-1),u=e("p",null,[a("Useful for uniquely identifying instances with "),e("code",null,':key="vm.$stableId"'),a(" in a Vue component, especially for instances that lack a primary key.")],-1),m=e("p",null,"A getter/setter property that wraps the primary key of the model. Used to interact with the primary key of any ViewModel in a polymorphic way.",-1),f=e("p",null,"Returns a string representation of the object, or one of its properties if specified, suitable for display.",-1),y=e("p",null,"This is especially useful for displaying enum properties, navigation properties, date properties, and other complex values.",-1),g=e("p",null,[a("Creates a new instance of an item for the specified child model collection, adds it to that collection, and returns the item. If "),e("code",null,"initialDirtyData"),a(" is provided, it will be loaded into the new instance with "),e("code",null,"$loadDirtyData()"),a(".")],-1),v=e("h3",{id:"loading-parameters",tabindex:"-1"},[a("Loading & Parameters "),e("a",{class:"header-anchor",href:"#loading-parameters","aria-label":'Permalink to "Loading & Parameters"'},"​")],-1),b=s("",1),_=e("p",null,[a("An object containing the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(" to be used for the "),e("code",null,"$load"),a(", "),e("code",null,"$save"),a(", "),e("code",null,"$bulkSave"),a(", and "),e("code",null,"$delete"),a(" API callers.")],-1),w=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.dataSource"),a(". Takes an instance of a "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),a(" class "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"generated in the Model Layer"),a(".")],-1),D=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.includes"),a(". See "),e("a",{href:"/Coalesce/concepts/includes.html"},"Includes String"),a(" for more information.")],-1),C=e("p",null,"Loads data from the provided model into the current ViewModel, and then clears all dirty flags.",-1),A=e("p",null,"Data is loaded recursively into all related ViewModel instances, preserving existing instances whose primary keys match the incoming data.",-1),P=e("p",null,[a("If auto-save is enabled, only non-dirty properties are updated. This prevents user input that is pending a save from being overwritten by the response from an auto-save "),e("code",null,"/save"),a(" request.")],-1),T=e("p",null,[a("If "),e("code",null,"purgeUnsaved"),a(" is true, items without a primary key will be dropped from collection navigation properties. This is used by the "),e("code",null,"$load"),a(" caller in order to fully reset the object graph with the state from the server.")],-1),k=e("p",null,[a("Same as "),e("code",null,"$loadCleanData"),a(", but does not clear any existing dirty flags, nor does it clear any dirty flags that will be set while mutating the data properties of any ViewModel instance that gets loaded.")],-1),$=e("p",null,[a("Create a new instance of the ViewModel, loading the given initial data with "),e("code",null,"$loadDirtyData()"),a(" if provided.")],-1),S=e("h3",{id:"saving-and-deleting",tabindex:"-1"},[a("Saving and Deleting "),e("a",{class:"header-anchor",href:"#saving-and-deleting","aria-label":'Permalink to "Saving and Deleting"'},"​")],-1),M=s("",6),V=e("p",null,[a("An "),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(" for the "),e("code",null,"/delete"),a(" endpoint. Uses the instance's "),e("code",null,"$params"),a(" object for the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(".")],-1),I=e("p",null,"If the object was loaded as a child of a collection, it will be removed from that collection upon being deleted. Note that ViewModels currently only support tracking of a single parent collection, so if an object is programmatically added to additional collections, it will only be removed from one of them upon delete.",-1),x=e("p",null,[a("Default "),e("code",null,"true"),a(" - controls if a ViewModel will be loaded with the data from the model returned by the "),e("code",null,"/save"),a(" endpoint when saved with the "),e("code",null,"$save"),a(" API caller. There is seldom any reason to disable this.")],-1),E=e("p",null,[a("When "),e("code",null,"$save.isLoading == true"),a(", contains the properties of the model currently being saved by "),e("code",null,"$save"),a(" (including auto-saves). Does not include non-dirty properties even if "),e("code",null,"$saveMode == 'whole'"),a(".")],-1),q=e("p",null,"This can be used to make per-property UI state changes during saves - for example, displaying progress indicators on/near individual inputs, or disabling input controls.",-1),R=s("",2),j=e("p",null,"Returns true if the given property is flagged as dirty.",-1),O=e("p",null,"Manually set the dirty flag of the given property to the desired state. This seldom needs to be done explicitly, as mutating a property will automatically flag it as dirty.",-1),B=e("p",null,[a("If "),e("code",null,"dirty"),a(" is true and "),e("code",null,"triggerAutoSave"),a(" is false, auto-save (if enabled) will not be immediately triggered for this specific flag change. Note that a future change to any other property's dirty flag will still trigger a save of all dirty properties.")],-1),L=e("p",null,"Getter/setter that summarizes the model's property-level dirty flags. Returns true if any properties are dirty.",-1),N=e("p",null,"When set to false, all property dirty flags are cleared. When set to true, all properties are marked as dirty.",-1),F=e("h3",{id:"auto-save",tabindex:"-1"},[a("Auto-save "),e("a",{class:"header-anchor",href:"#auto-save","aria-label":'Permalink to "Auto-save"'},"​")],-1),G=s("",2),U=e("p",null,[a("Turns off auto-saving of the instance. Does not recursively disable auto-saves on related instances if "),e("code",null,"deep"),a(" was used when auto-save was enabled.")],-1),W=e("p",null,"Returns true if auto-save is currently active on the instance.",-1),z=e("h3",{id:"bulk-saves",tabindex:"-1"},[a("Bulk saves "),e("a",{class:"header-anchor",href:"#bulk-saves","aria-label":'Permalink to "Bulk saves"'},"​")],-1),K=s("",7),X=e("p",null,[a("Returns the payload that will be used for the "),e("code",null,"$bulkSave"),a(" operation.")],-1),J=e("p",null,[a("Useful for driving UI state, like preemptively showing errors, or determining if there are any objects with pending modifications. If you are using this to drive UI state, it is strongly recommended to wrap this call in a "),e("code",null,"computed"),a(" in your component to reduce excessive invocations.")],-1),Y=e("p",null,"Removes the item from its parent collection (if it is in a collection), and marks the item for deletion in the next bulk save.",-1),H=e("p",null,[a("Returns true if the instance was previously removed by calling "),e("code",null,"$remove()"),a(".")],-1),Q=e("h3",{id:"rules-validation",tabindex:"-1"},[a("Rules/Validation "),e("a",{class:"header-anchor",href:"#rules-validation","aria-label":'Permalink to "Rules/Validation"'},"​")],-1),Z=e("p",null,[a("Add a custom validation rule to the ViewModel for the specified property. "),e("code",null,"identifier"),a(" should be a short, unique slug that describes the rule; it is not displayed in the UI, but is used if you wish to later remove the rule with "),e("code",null,"$removeRule()"),a(".")],-1),ee=e("p",null,[a("The function you provide should take a single argument that contains the current value of the property, and should either return "),e("code",null,"true"),a(" to indicate that the validation rule has succeeded, or a string that will be displayed as an error message to the user.")],-1),ae=e("p",null,[a("Any failing validation rules on a ViewModel will prevent that ViewModel's "),e("code",null,"$save"),a(" caller from being invoked.")],-1),te=e("p",null,"Remove a validation rule from the ViewModel for the specified property and rule identifier.",-1),oe=e("p",null,[a("This can be used to remove either a rule that was provided by the generated "),e("a",{href:"/Coalesce/stacks/vue/layers/metadata.html"},"Metadata Layer"),a(", or a custom rule that was added by "),e("code",null,"$addRule"),a(". Reference your generated metadata file "),e("code",null,"metadata.g.ts"),a(" to see any generated rules and the identifiers they use.")],-1),se=e("p",null,[a("Returns an array of active rule functions for the specified property, or "),e("code",null,"undefined"),a(" if the property has no active validation rules.")],-1),ne=e("p",null,[a("Returns a "),e("a",{href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",target:"_blank",rel:"noreferrer"},"generator"),a(" that provides all error messages for either a specific property (if provided) or the entire model (if no prop argument is provided).")],-1),le=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[a("You can obtain an array from a generator with "),e("code",null,"Array.from(vm.$getErrors())"),a(" or "),e("code",null,"[...vm.$getErrors()]")])],-1),re=s("",11),ie=e("p",null,[a("Collection holding the ViewModel instances from the last successful invocation of the "),e("code",null,"$load"),a(),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(".")],-1),de=e("p",null,[a("Collection holding plain Model instances from the last successful invocation of the "),e("code",null,"$load"),a(),e("a",{href:"/Coalesce/stacks/vue/layers/api-clients.html#api-callers"},"API Caller"),a(".")],-1),ce=e("p",null,[a("When model-only mode is enabled, "),e("code",null,"$items"),a(" will not be populated with ViewModel instances. Result can instead be read from "),e("code",null,"$modelItems"),a(". This mode allows much better performance when loading large quantities of data, especially in read-only contexts where the features of ViewModel instances aren't needed.")],-1),pe=e("h3",{id:"parameters-api-callers",tabindex:"-1"},[a("Parameters & API Callers "),e("a",{class:"header-anchor",href:"#parameters-api-callers","aria-label":'Permalink to "Parameters & API Callers"'},"​")],-1),he=e("p",null,[a("An object containing the "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-parameters"},"Standard Parameters"),a(" to be used for the "),e("code",null,"$load"),a(" and "),e("code",null,"$count"),a(" API callers.")],-1),ue=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.dataSource"),a(". Takes an instance of a "),e("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Source"),a(" class "),e("a",{href:"/Coalesce/stacks/vue/layers/models.html"},"generated in the Model Layer"),a(".")],-1),me=e("p",null,[a("Getter/setter wrapper around "),e("code",null,"$params.includes"),a(". See "),e("a",{href:"/Coalesce/concepts/includes.html"},"Includes String"),a(" for more information.")],-1),fe=s("",2),ye=s("",2),ge=e("p",null,[a("Properties which indicate if "),e("code",null,"$page"),a(" can be decremented or incremented, respectively. "),e("code",null,"$pageCount"),a(" and "),e("code",null,"$page"),a(" are used to make this determination.")],-1),ve=e("p",null,[a("Methods that will decrement or increment "),e("code",null,"$page"),a(", respectively. Each does nothing if there is no previous or next page as returned by "),e("code",null,"$hasPreviousPage"),a(" and "),e("code",null,"$hasNextPage"),a(".")],-1),be=e("p",null,[a("Getter/setter wrapper for "),e("code",null,"$params.page"),a(". Controls the page that will be requested on the next invocation of "),e("code",null,"$load"),a(".")],-1),_e=e("p",null,[a("Getter/setter wrapper for "),e("code",null,"$params.pageSize"),a(". Controls the page that will be requested on the next invocation of "),e("code",null,"$load"),a(".")],-1),we=e("p",null,[a("Shorthand for "),e("code",null,"$load.pageCount"),a(" - returns the page count reported by the last successful invocation of "),e("code",null,"$load"),a(".")],-1),De=e("h3",{id:"auto-load",tabindex:"-1"},[a("Auto-Load "),e("a",{class:"header-anchor",href:"#auto-load","aria-label":'Permalink to "Auto-Load"'},"​")],-1),Ce=s("",2),Ae=e("p",null,"Manually turns off auto-loading of the instance.",-1),Pe=e("h3",{id:"auto-save-1",tabindex:"-1"},[a("Auto-save "),e("a",{class:"header-anchor",href:"#auto-save-1","aria-label":'Permalink to "Auto-save"'},"​")],-1),Te=e("p",null,[a("Enables auto-save for the items in the list, propagating to new items as they're added or loaded. See "),e("a",{href:"#member-item-autosave"},"ViewModel auto-save documentation"),a(" for more details.")],-1),ke=e("p",null,[a("Turns off auto-saving of the items in the list, and turns of propagation of auto-save to any future items if auto-save was previously turned on for the list. Only affects items that are currently in the list's "),e("code",null,"$items"),a(".")],-1),$e=s("",9);function Se(Me,Ve,Ie,xe,Ee,qe){const t=r("Prop");return i(),l("div",null,[c,o(t,{def:"readonly $metadata: ModelType",lang:"ts"}),p,o(t,{def:"readonly $stableId: number",lang:"ts"}),h,u,o(t,{def:"$primaryKey: string | number",lang:"ts"}),m,o(t,{def:"$display(prop?: string | Property): string",lang:"ts"}),f,y,o(t,{def:"$addChild(prop: string | ModelCollectionNavigationProperty, initialDirtyData?: {})",lang:"ts"}),g,v,o(t,{def:`$load: ItemApiState; +$load(id?: TKey) => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),b,o(t,{def:"$params: DataSourceParameters",lang:"ts",idPrefix:"member-item"}),_,o(t,{def:"$dataSource: DataSource",lang:"ts",idPrefix:"member-item"}),w,o(t,{def:"$includes: string | null",lang:"ts",idPrefix:"member-item"}),D,o(t,{def:"$loadCleanData(source: {} | TModel, purgeUnsaved = false)",lang:"ts"}),C,A,P,T,o(t,{def:"$loadDirtyData(source: {} | TModel)",lang:"ts"}),k,o(t,{def:"constructor(initialDirtyData?: {} | TModel | null)",lang:"ts"}),$,S,o(t,{def:`$save: ItemApiState; +$save(overrideProps?: Partial<TModel>) => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),M,o(t,{def:`$delete: ItemApiState; +$delete() => ItemResultPromise<TModel>;`,lang:"ts",idPrefix:"member-item"}),V,I,o(t,{def:"$loadResponseFromSaves: boolean",lang:"ts"}),x,o(t,{def:"$savingProps: ReadonlySet<string>",lang:"ts"}),E,q,o(t,{def:"$saveMode: 'surgical' | 'whole'",lang:"ts"}),R,o(t,{def:"$getPropDirty(propName: string): boolean",lang:"ts"}),j,o(t,{def:"$setPropDirty(propName: string, dirty: boolean = true, triggerAutoSave = true)",lang:"ts"}),O,B,o(t,{def:"$isDirty: boolean",lang:"ts"}),L,N,F,o(t,{def:`// Vue Options API +$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {}) +  +// Vue Composition API +$useAutoSave(options: AutoSaveOptions<this> = {})`,lang:"ts",id:"member-item-autosave"}),G,o(t,{def:"$stopAutoSave(): void",lang:"ts"}),U,o(t,{def:"readonly $isAutoSaveEnabled: boolean",lang:"ts"}),W,z,o(t,{def:`$bulkSave: ItemApiState; +$bulkSave(options: BulkSaveOptions) => ItemResultPromise<TModel>;`,lang:"ts"}),K,o(t,{def:`$bulkSavePreview(options?: BulkSaveOptions) => { + isDirty: boolean; + errors: string[]; + items: BulkSaveRequestItem[]; + rawItems: BulkSaveRequestRawItem[]; +}`,lang:"ts"}),X,J,o(t,{def:"$remove(): void",lang:"ts"}),Y,o(t,{def:"readonly $isRemoved: boolean",lang:"ts"}),H,Q,o(t,{def:"$addRule(prop: string | Property, identifier: string, rule: (val: any) => true | string)",lang:"ts"}),Z,ee,ae,o(t,{def:"$removeRule(prop: string | Property, identifier: string)",lang:"ts"}),te,oe,o(t,{def:"$getRules(prop: string | Property): ((val: any) => string | true)[]",lang:"ts"}),se,o(t,{def:"$getErrors(prop?: string | Property): Generator<string>",lang:"ts"}),ne,le,o(t,{def:"readonly $hasError: boolean",lang:"ts"}),re,o(t,{def:"readonly $items: T[]",lang:"ts"}),ie,o(t,{def:"readonly $modelItems: T[]",lang:"ts"}),de,o(t,{def:"$modelOnlyMode: boolean",lang:"ts"}),ce,pe,o(t,{def:"$params: ListParameters",lang:"ts",idPrefix:"member-list"}),he,o(t,{def:"$dataSource: DataSource",lang:"ts",idPrefix:"member-list"}),ue,o(t,{def:"$includes: string | null",lang:"ts",idPrefix:"member-list"}),me,o(t,{def:`$load: ListApiState; +$load() => ListResultPromise<TModel>`,lang:"ts",idPrefix:"member-list"}),fe,o(t,{def:`$count: ItemApiState; +$count() => ItemResultPromise<number>`,lang:"ts"}),ye,o(t,{def:`readonly $hasPreviousPage: boolean +readonly $hasNextPage: boolean`,lang:"ts"}),ge,o(t,{def:`$previousPage(): void +$nextPage(): void`,lang:"ts"}),ve,o(t,{def:"$page: number",lang:"ts"}),be,o(t,{def:"$pageSize: number",lang:"ts"}),_e,o(t,{def:"readonly $pageCount: number",lang:"ts"}),we,De,o(t,{def:`// Vue Options API +$startAutoLoad(vue: Vue, options: AutoLoadOptions<this> = {}) +  +// Vue Composition API +$useAutoLoad(options: AutoLoadOptions<this> = {})`,lang:"ts",id:"member-list-autoLoad"}),Ce,o(t,{def:"$stopAutoLoad()",lang:"ts"}),Ae,Pe,o(t,{def:`// Vue Options API +$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {}) +  +// Vue Composition API +$useAutoSave(options: AutoSaveOptions<this> = {})`,lang:"ts",id:"member-list-autosave"}),Te,o(t,{def:"$stopAutoSave(): void",lang:"ts"}),ke,o(t,{def:"readonly $isAutoSaveEnabled: boolean",lang:"ts"}),$e])}const Oe=n(d,[["render",Se]]);export{je as __pageData,Oe as default}; diff --git a/assets/stacks_vue_overview.md.D08uFQA2.js b/assets/stacks_vue_overview.md.D08uFQA2.js new file mode 100644 index 000000000..efd5b4a30 --- /dev/null +++ b/assets/stacks_vue_overview.md.D08uFQA2.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Vue Overview","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/overview.md","filePath":"stacks/vue/overview.md"}'),s={name:"stacks/vue/overview.md"},r=o('<h1 id="vue-overview" tabindex="-1">Vue Overview <a class="header-anchor" href="#vue-overview" aria-label="Permalink to "Vue Overview"">​</a></h1><p>The <code>Vue</code> stack for Coalesce has been designed from the ground up to be used to build modern web applications using current technologies like Vite, ES Modules, and more. It enables you to use all of the features of Vue.js, including building a SPA, and the ability to use modern component frameworks like <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a>.</p><h2 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started"">​</a></h2><p>Check out <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started with Vue</a> to learn how to get a new Coalesce Vue project up and running.</p><h2 id="typescript-layers" tabindex="-1">TypeScript Layers <a class="header-anchor" href="#typescript-layers" aria-label="Permalink to "TypeScript Layers"">​</a></h2><p><a href="https://www.npmjs.com/package/coalesce-vue" target="_blank" rel="noreferrer"><img src="https://img.shields.io/npm/v/coalesce-vue/latest?color=0176b5&label=coalesce-vue%40latest&logo=npm" alt=""></a></p><p>The generated code for the Vue stack all builds on the <a href="https://www.npmjs.com/package/coalesce-vue" target="_blank" rel="noreferrer">coalesce-vue</a> NPM package which contains most of the core functionality of the Vue stack. Its version should generally be kept in sync with the <a href="https://www.nuget.org/packages/IntelliTect.Coalesce/" target="_blank" rel="noreferrer">IntelliTect.Coalesce NuGet packages</a> in your project.</p><p>Both the generated code and <a href="https://www.npmjs.com/package/coalesce-vue" target="_blank" rel="noreferrer">coalesce-vue</a> are split into four layers, with each layer building on the layers underneath. From the bottom, these layers are:</p><h3 id="metadata-layer" tabindex="-1"><a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata Layer</a> <a class="header-anchor" href="#metadata-layer" aria-label="Permalink to "[Metadata Layer](/stacks/vue/layers/metadata.md)"">​</a></h3><p>The metadata layer, generated as <code>metadata.g.ts</code>, contains information about the types, properties, methods, and other components of your data model. Because Vue applications are typically compiled into a set of static assets, it is necessary for the frontend code to have a representation of your data model as an analog to the <code>ReflectionRepository</code> that is available at runtime in your .NET app.</p><p><a href="/Coalesce/stacks/vue/layers/metadata.html">Read more about the Metadata layer</a></p><h3 id="model-layer" tabindex="-1"><a href="/Coalesce/stacks/vue/layers/models.html">Model Layer</a> <a class="header-anchor" href="#model-layer" aria-label="Permalink to "[Model Layer](/stacks/vue/layers/models.md)"">​</a></h3><p>The model layer, generated as <code>models.g.ts</code>, contains a set of TypeScript interfaces that represent each client-exposed type in your data model. Each interface contains all the <a href="/Coalesce/modeling/model-components/properties.html">Properties</a> of that type, as well as a <code>$metadata</code> property that references the <a href="/Coalesce/stacks/vue/layers/metadata.html">metadata</a> object for that type. Enums and <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> are also represented in the model layer.</p><p><a href="/Coalesce/stacks/vue/layers/models.html">Read more about the Model layer</a></p><h3 id="api-client-layer" tabindex="-1"><a href="/Coalesce/stacks/vue/layers/api-clients.html">API Client Layer</a> <a class="header-anchor" href="#api-client-layer" aria-label="Permalink to "[API Client Layer](/stacks/vue/layers/api-clients.md)"">​</a></h3><p>The API client layer, generated as <code>api-clients.g.ts</code>, exports a class for each API controller that was generated for your data model. These classes are stateless and provide one method for each API endpoint. This includes both the standard set of endpoints created for <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, as well as any custom <a href="/Coalesce/modeling/model-components/methods.html">Methods</a> on the aforementioned types, as well as any methods on your <a href="/Coalesce/modeling/model-types/services.html">Services</a>.</p><p><a href="/Coalesce/stacks/vue/layers/api-clients.html">Read more about the API Client layer</a></p><h3 id="viewmodel-layer" tabindex="-1"><a href="/Coalesce/stacks/vue/layers/viewmodels.html">ViewModel Layer</a> <a class="header-anchor" href="#viewmodel-layer" aria-label="Permalink to "[ViewModel Layer](/stacks/vue/layers/viewmodels.md)"">​</a></h3><p>The ViewModel layer, generated as <code>viewmodels.g.ts</code>, exports a ViewModel class for each API-backed type in your data model (<a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a>, <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, and <a href="/Coalesce/modeling/model-types/services.html">Services</a>). It also exports a ListViewModel type for <a href="/Coalesce/modeling/model-types/entities.html">Entity Models</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>.</p><p>These classes provide a wide array of functionality that is useful when interacting with your data model through a user interface. The generated ViewModels are the primary way that Coalesce is used when developing a Vue application.</p><p><a href="/Coalesce/stacks/vue/layers/viewmodels.html">Read more about the ViewModel layer</a></p><h2 id="vue-components" tabindex="-1">Vue Components <a class="header-anchor" href="#vue-components" aria-label="Permalink to "Vue Components"">​</a></h2><p><a href="https://www.npmjs.com/package/coalesce-vue-vuetify2" target="_blank" rel="noreferrer"><img src="https://img.shields.io/npm/v/coalesce-vue-vuetify2/latest?color=0176b5&label=coalesce-vue-vuetify2%40latest&logo=npm" alt=""></a><a href="https://www.npmjs.com/package/coalesce-vue-vuetify3" target="_blank" rel="noreferrer"><img src="https://img.shields.io/npm/v/coalesce-vue-vuetify3/latest?color=0176b5&label=coalesce-vue-vuetify3%40latest&logo=npm" alt=""></a></p><p>The <a href="https://vuejs.org/" target="_blank" rel="noreferrer">Vue</a> stack for Coalesce provides <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">a set of components</a> based on <a href="https://vuetifyjs.com/" target="_blank" rel="noreferrer">Vuetify</a>, packaged up in an NPM package <a href="https://www.npmjs.com/package/coalesce-vue-vuetify2" target="_blank" rel="noreferrer">coalesce-vue-vuetify2</a> or <a href="https://www.npmjs.com/package/coalesce-vue-vuetify3" target="_blank" rel="noreferrer">coalesce-vue-vuetify3</a>. These components are driven primarily by the <a href="/Coalesce/stacks/vue/layers/metadata.html">Metadata Layer</a>, and include both low level input and display components like <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-input.html">c-input</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-display.html">c-display</a> that are highly reusable in the custom pages you'll build in your application, as well as high-level components like <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html">c-admin-editor-page</a> that constitute entire pages.</p><p><a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html">Read more about the Vuetify Components here</a>.</p><h2 id="admin-views" tabindex="-1">Admin Views <a class="header-anchor" href="#admin-views" aria-label="Permalink to "Admin Views"">​</a></h2><p>The Vue.js stack for Coalesce provides some high level components that provide functionality of whole pages like <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html">c-admin-table-page</a> and <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html">c-admin-editor-page</a>.</p><p>The template described in <a href="/Coalesce/stacks/vue/getting-started.html">Getting Started with Vue</a> comes with routes already in place for these page-level components. For example, <code>/admin/Person</code> for a table, <code>/admin/Person/edit</code> to create a new <code>Person</code>, and <code>/admin/Person/edit/:id</code> to edit a <code>Person</code>.</p>',28),l=[r];function c(n,i,d,h,p,m){return t(),a("div",null,l)}const v=e(s,[["render",c]]);export{f as __pageData,v as default}; diff --git a/assets/stacks_vue_overview.md.D08uFQA2.lean.js b/assets/stacks_vue_overview.md.D08uFQA2.lean.js new file mode 100644 index 000000000..d62d6539e --- /dev/null +++ b/assets/stacks_vue_overview.md.D08uFQA2.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BkavzUpE.js";const f=JSON.parse('{"title":"Vue Overview","description":"","frontmatter":{},"headers":[],"relativePath":"stacks/vue/overview.md","filePath":"stacks/vue/overview.md"}'),s={name:"stacks/vue/overview.md"},r=o("",28),l=[r];function c(n,i,d,h,p,m){return t(),a("div",null,l)}const v=e(s,[["render",c]]);export{f as __pageData,v as default}; diff --git a/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.js b/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.js new file mode 100644 index 000000000..dd0db42d5 --- /dev/null +++ b/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.js @@ -0,0 +1,177 @@ +import{_ as s,c as n,o as a,a7 as l}from"./chunks/framework.BkavzUpE.js";const d=JSON.parse('{"title":"Vue 2 to Vue 3","description":"","frontmatter":{"pageClass":"wide-page"},"headers":[],"relativePath":"stacks/vue/vue2-to-vue3.md","filePath":"stacks/vue/vue2-to-vue3.md"}'),p={name:"stacks/vue/vue2-to-vue3.md"},o=l(`<h1 id="vue-2-to-vue-3" tabindex="-1">Vue 2 to Vue 3 <a class="header-anchor" href="#vue-2-to-vue-3" aria-label="Permalink to "Vue 2 to Vue 3"">​</a></h1><p>If you're already experienced with Vue 2 but are new to Vue 3, or if you're migrating an existing Vue 2 app to Vue 3, you should first read through the <a href="https://v3-migration.vuejs.org/" target="_blank" rel="noreferrer">official migration guide</a>.</p><p>Vuetify also offers a <a href="https://vuetifyjs.com/en/getting-started/upgrade-guide/" target="_blank" rel="noreferrer">migration guide</a> to upgrade from Vuetify 2 to Vuetify 3.</p><p>If you're new to Vue entirely, check out the rest of Vue docs and <a href="https://vuejs.org/guide/introduction.html#pick-your-learning-path" target="_blank" rel="noreferrer">pick your learning path</a>.</p><h2 id="coalesce-upgrade-steps" tabindex="-1">Coalesce Upgrade Steps <a class="header-anchor" href="#coalesce-upgrade-steps" aria-label="Permalink to "Coalesce Upgrade Steps"">​</a></h2><p>The changes specific to Coalesce when migrating from Vue2 to Vue3 are pretty minimal. Most of your work will be in following the <a href="https://v3-migration.vuejs.org/" target="_blank" rel="noreferrer">Vue 3 Migration Guide</a> and the <a href="https://vuetifyjs.com/en/getting-started/upgrade-guide/" target="_blank" rel="noreferrer">Vuetify 3 Migration Guide</a>.</p><p>The table below contains the Coalesce-specific changes when migrating to Vue 3. However, the easiest migration path may be to disregard the table below and instead, <a href="/Coalesce/stacks/vue/getting-started.html#creating-a-project">instantiate the Coalesce Vue template</a> or <a href="https://github.com/IntelliTect/Coalesce.Vue.Template/tree/master/content/Coalesce.Starter.Vue.Web" target="_blank" rel="noreferrer">look at it on GitHub</a> and compare individual files between your project and the template side by side and ingest the changes that you observe.</p><table><thead><tr><th width="150px">Location</th><th>Old (Vue 2)</th><th>New (Vue 3)</th></tr></thead><tr><td><p>package.json</p></td><td style="vertical-align:top;"><div class="language-json"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> "dependencies"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#9CDCFE;"> "coalesce-vue-vuetify2"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"x"</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-json"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> "dependencies"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#9CDCFE;"> "coalesce-vue-vuetify3"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"x"</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div></td></tr><tr><td><p>vite.config.ts</p></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CoalesceVuetifyResolver</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "coalesce-vue-vuetify2/lib/build"</span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CoalesceVuetifyResolver</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "coalesce-vue-vuetify3/build"</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// Custom SASS options and \`optimizeDeps\` configuration can be removed</span></span> +<span class="line"><span style="color:#6A9955;">// since Vuetify3 no longer uses deprecated sass features,</span></span> +<span class="line"><span style="color:#6A9955;">// and pre-bundling styles no longer has appreciable benefit.</span></span></code></pre></div></td></tr><tr><td><p>main.ts</p></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#CE9178;"> "coalesce-vue-vuetify2/dist/coalesce-vue-vuetify.css"</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// Either of these:</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#9CDCFE;"> CoalesceVuetify</span><span style="color:#C586C0;"> from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify2/lib'</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#9CDCFE;"> CoalesceVuetify</span><span style="color:#C586C0;"> from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify2'</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">use</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">CoalesceVuetify</span><span style="color:#D4D4D4;">, {</span></span> +<span class="line"><span style="color:#9CDCFE;"> metadata:</span><span style="color:#9CDCFE;"> $metadata</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;">});</span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#CE9178;"> "coalesce-vue-vuetify3/styles.css"</span></span> +<span class="line"></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">createCoalesceVuetify</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "coalesce-vue-vuetify3"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> coalesceVuetify</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">createCoalesceVuetify</span><span style="color:#D4D4D4;">({</span></span> +<span class="line"><span style="color:#9CDCFE;"> metadata:</span><span style="color:#9CDCFE;"> $metadata</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;">});</span></span> +<span class="line"><span style="color:#9CDCFE;">app</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">use</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">coalesceVuetify</span><span style="color:#D4D4D4;">);</span></span></code></pre></div></td></tr><tr><td><p>router.ts</p></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// Either of these:</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminTablePage</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">CAdminEditorPage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify2/lib'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminTablePage</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">CAdminEditorPage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify2'</span><span style="color:#D4D4D4;">;</span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminEditorPage</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">CAdminTablePage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "coalesce-vue-vuetify3"</span><span style="color:#D4D4D4;">;</span></span></code></pre></div></td></tr><tr><td><p>Vitest/Jest tests</p></td><td style="vertical-align:top;"><p>If you had a global test setup file performing Vue configuration, you can likely remove it entirely, or at least remove the parts that configure Vue. Vue3 does not operate on global configuration like Vue2 did.</p></td><td style="vertical-align:top;"><p>See <a href="https://github.com/IntelliTect/Coalesce.Vue.Template/blob/master/content/Coalesce.Starter.Vue.Web/src/test-utils.ts" target="_blank" rel="noreferrer">test-utils.ts</a> and <a href="https://github.com/IntelliTect/Coalesce.Vue.Template/blob/master/content/Coalesce.Starter.Vue.Web/src/components/HelloWorld.spec.ts" target="_blank" rel="noreferrer">HelloWorld.spec.ts</a> in the template for examples of Vue3 component testing.</p></td></tr></table><h2 id="from-class-components-to-script-setup" tabindex="-1">From Class Components to <code><script setup></code> <a class="header-anchor" href="#from-class-components-to-script-setup" aria-label="Permalink to "From Class Components to \`<script setup>\`"">​</a></h2><p>The components in the Coalesce template for Vue 3 have switched from <code>vue-class-component</code> to Vue Composition API with <code><script setup></code>, the <a href="https://vuejs.org/guide/introduction.html#which-to-choose" target="_blank" rel="noreferrer">official recommendation</a> for building full Vue 3 applications.</p><p>If you're used to writing components in Vue 2 with <code>vue-class-component</code> and <code>vue-property-decorator</code>, you can use this table of comparisons as a quick reference of what the equivalent features are using <a href="https://vuejs.org/api/sfc-script-setup.html" target="_blank" rel="noreferrer"><code><script setup></code></a> and <a href="https://vuejs.org/guide/extras/composition-api-faq.html" target="_blank" rel="noreferrer">Vue Composition API</a>. That said, this is not a replacement for learning and understanding the composition API. You should read the <a href="https://vuejs.org/guide/extras/composition-api-faq.html" target="_blank" rel="noreferrer">Composition API FAQ</a> as well as the <a href="https://vuejs.org/guide/essentials/reactivity-fundamentals.html" target="_blank" rel="noreferrer">Reactivity Fundamentals</a> documentation (make sure to set the API preference in the top left to Composition!).</p><p>If you'd like to continue using class components with Vue 3 (e.g. upgrading an existing project where rewriting all components is not feasible), you can try switching to <a href="https://www.npmjs.com/package/vue-facing-decorator" target="_blank" rel="noreferrer"><code>vue-facing-decorator</code></a>.</p><div class="tip custom-block"><p class="custom-block-title">Note</p><p>The examples below assume that <code>unplugin-auto-import</code> is being used (included in the Coalesce Vue3 template), eliminating the need to manually import common Vue Composition API functions.</p></div><table><thead><tr><th width="150px">Feature</th><th>Class Component</th><th>Script Setup</th></tr></thead><tr><td><p>Coalesce <code>ViewModel</code> and <code>ListViewModel</code> usage</p></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Component</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "vue-property-decorator"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">PersonListViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">@</span><span style="color:#DCDCAA;">Component</span><span style="color:#D4D4D4;">({})</span></span> +<span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyComponent</span><span style="color:#569CD6;"> extends</span><span style="color:#4EC9B0;"> Vue</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> list</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonListViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> async</span><span style="color:#DCDCAA;"> created</span><span style="color:#D4D4D4;">() {</span></span> +<span class="line"><span style="color:#C586C0;"> await</span><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$load</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#C586C0;"> await</span><span style="color:#9CDCFE;"> list</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$load</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$startAutoSave</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#9CDCFE;"> list</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$startAutoLoad</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#9CDCFE;"> setup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">PersonListViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> list</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonListViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$useAutoSave</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$useAutoLoad</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// If you need to await an async operation during component creation, </span></span> +<span class="line"><span style="color:#6A9955;">// use an IIFE so that the component mount is not delayed.</span></span> +<span class="line"><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">async</span><span style="color:#569CD6;"> function</span><span style="color:#DCDCAA;"> created</span><span style="color:#D4D4D4;">() {</span></span> +<span class="line"><span style="color:#C586C0;"> await</span><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$load</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#C586C0;"> await</span><span style="color:#9CDCFE;"> list</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$load</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;">})();</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td></tr><tr><td><p>@Prop, @Watch</p></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Component</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Prop</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Watch</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "vue-property-decorator"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">@</span><span style="color:#DCDCAA;">Component</span><span style="color:#D4D4D4;">({})</span></span> +<span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyComponent</span><span style="color:#569CD6;"> extends</span><span style="color:#4EC9B0;"> Vue</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#DCDCAA;">Prop</span><span style="color:#D4D4D4;">({ </span><span style="color:#9CDCFE;">default:</span><span style="color:#CE9178;"> "Student"</span><span style="color:#D4D4D4;"> })</span></span> +<span class="line"><span style="color:#9CDCFE;"> label</span><span style="color:#D4D4D4;">!: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#DCDCAA;">Prop</span><span style="color:#D4D4D4;">({ </span><span style="color:#9CDCFE;">required:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;"> })</span></span> +<span class="line"><span style="color:#9CDCFE;"> student</span><span style="color:#D4D4D4;">!: </span><span style="color:#4EC9B0;">ApplicationUserViewModel</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#DCDCAA;">Watch</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"label"</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#DCDCAA;"> labelChanged</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">newVal</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">oldVal</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#9CDCFE;"> console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">\`label changed. new:</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">newVal</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">, old:</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">oldVal</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#9CDCFE;"> setup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> props</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">withDefaults</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">defineProps</span><span style="color:#D4D4D4;"><{</span></span> +<span class="line"><span style="color:#9CDCFE;"> label</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> student</span><span style="color:#D4D4D4;">?: </span><span style="color:#4EC9B0;">ApplicationUserViewModel</span></span> +<span class="line"><span style="color:#D4D4D4;">}>(), { </span><span style="color:#9CDCFE;">label:</span><span style="color:#CE9178;"> 'Student'</span><span style="color:#D4D4D4;"> })</span></span> +<span class="line"></span> +<span class="line"><span style="color:#DCDCAA;">watch</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#D4D4D4;"> () </span><span style="color:#569CD6;">=></span><span style="color:#9CDCFE;"> props</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">label</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">newVal</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">oldVal</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">\`label changed. new:</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">newVal</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">, old:</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">oldVal</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td></tr><tr><td><p>Reactive data</p></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Component</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "vue-property-decorator"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">@</span><span style="color:#DCDCAA;">Component</span><span style="color:#D4D4D4;">({})</span></span> +<span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyComponent</span><span style="color:#569CD6;"> extends</span><span style="color:#4EC9B0;"> Vue</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> checked</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> items</span><span style="color:#D4D4D4;"> = [</span></span> +<span class="line"><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "Foo"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">checked:</span><span style="color:#569CD6;"> false</span><span style="color:#D4D4D4;">, },</span></span> +<span class="line"><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "Bar"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">checked:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">, }</span></span> +<span class="line"><span style="color:#D4D4D4;"> ]</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#9CDCFE;"> setup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// Properties on coalesce-generated ViewModels have built in reactivity </span></span> +<span class="line"><span style="color:#6A9955;">// and don't need to be wrapped ref/reactive unless you're going to replace </span></span> +<span class="line"><span style="color:#6A9955;">// the entire top level object with a different instance.</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> checked</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">ref</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> items</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">reactive</span><span style="color:#D4D4D4;">([</span></span> +<span class="line"><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "Foo"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">checked:</span><span style="color:#569CD6;"> false</span><span style="color:#D4D4D4;">, },</span></span> +<span class="line"><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "Bar"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">checked:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">, }</span></span> +<span class="line"><span style="color:#D4D4D4;">])</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td></tr><tr><td><p>Computed values</p></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Component</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "vue-property-decorator"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">@</span><span style="color:#DCDCAA;">Component</span><span style="color:#D4D4D4;">({})</span></span> +<span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyComponent</span><span style="color:#569CD6;"> extends</span><span style="color:#4EC9B0;"> Vue</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#9CDCFE;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> get</span><span style="color:#DCDCAA;"> fullName</span><span style="color:#D4D4D4;">() {</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> \`</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">firstName</span><span style="color:#569CD6;">}</span><span style="color:#569CD6;"> \${</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">lastName</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#9CDCFE;"> setup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">PersonViewModel</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "@/viewmodels.g"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> person</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> PersonViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> fullName</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">computed</span><span style="color:#D4D4D4;">(() </span><span style="color:#569CD6;">=></span><span style="color:#CE9178;"> \`</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">firstName</span><span style="color:#569CD6;">}</span><span style="color:#569CD6;"> \${</span><span style="color:#9CDCFE;">person</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">lastName</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td></tr><tr><td><p>$emit, methods</p></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">input</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#9CDCFE;">input</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#DCDCAA;">inputChanged</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">$event</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">target</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">)</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Vue</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Component</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> "vue-property-decorator"</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">@</span><span style="color:#DCDCAA;">Component</span><span style="color:#D4D4D4;">({})</span></span> +<span class="line"><span style="color:#C586C0;">export</span><span style="color:#C586C0;"> default</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> MyComponent</span><span style="color:#569CD6;"> extends</span><span style="color:#4EC9B0;"> Vue</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#DCDCAA;">Prop</span><span style="color:#D4D4D4;">()</span></span> +<span class="line"><span style="color:#9CDCFE;"> value</span><span style="color:#D4D4D4;">!: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#DCDCAA;"> inputChanged</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">$emit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'update:input'</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td><td style="vertical-align:top;"><div class="language-vue"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">input</span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">modelValue</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#D4D4D4;"> @</span><span style="color:#9CDCFE;">input</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#DCDCAA;">inputChanged</span><span style="color:#D4D4D4;">((</span><span style="color:#9CDCFE;">$event</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">target</span><span style="color:#C586C0;"> as</span><span style="color:#4EC9B0;"> HTMLInputElement</span><span style="color:#D4D4D4;">).</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">)</span><span style="color:#D4D4D4;">"</span></span> +<span class="line"><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">template</span><span style="color:#808080;">></span></span> +<span class="line"></span> +<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"ts"</span><span style="color:#9CDCFE;"> setup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#DCDCAA;">defineProps</span><span style="color:#D4D4D4;"><{ </span><span style="color:#9CDCFE;">modelValue</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;"> }>();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// This may seem tedious, but it enables full Typescript intellisense!</span></span> +<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> emit</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">defineEmits</span><span style="color:#D4D4D4;"><{</span></span> +<span class="line"><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"update:modelValue"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;"> | </span><span style="color:#4EC9B0;">null</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">void</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}>();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">function</span><span style="color:#DCDCAA;"> inputChanged</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#DCDCAA;"> emit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'update:modelValue'</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">v</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span></code></pre></div></td></tr></table>`,14),e=[o];function t(c,r,D,y,i,C){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{d as __pageData,g as default}; diff --git a/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.lean.js b/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.lean.js new file mode 100644 index 000000000..770b86a8e --- /dev/null +++ b/assets/stacks_vue_vue2-to-vue3.md.DCun6C4Y.lean.js @@ -0,0 +1 @@ +import{_ as s,c as n,o as a,a7 as l}from"./chunks/framework.BkavzUpE.js";const d=JSON.parse('{"title":"Vue 2 to Vue 3","description":"","frontmatter":{"pageClass":"wide-page"},"headers":[],"relativePath":"stacks/vue/vue2-to-vue3.md","filePath":"stacks/vue/vue2-to-vue3.md"}'),p={name:"stacks/vue/vue2-to-vue3.md"},o=l("",14),e=[o];function t(c,r,D,y,i,C){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{d as __pageData,g as default}; diff --git a/assets/style.JLeBfkeF.css b/assets/style.JLeBfkeF.css new file mode 100644 index 000000000..808ad8ae3 --- /dev/null +++ b/assets/style.JLeBfkeF.css @@ -0,0 +1 @@ +.VPHero .text{font-size:42px;line-height:1.1;padding:16px 0;color:var(--logo-text-color)}.VPHero .VPImage{width:100%}.ext-logo{min-width:80px;max-width:80px;border-radius:8px}.hero-logo-horiz{font-size:calc(20px + max(35px,min(7vw,70px)))!important;white-space:nowrap;text-align:center;margin-bottom:.4em;color:var(--logo-text-color)}.hero-logo-horiz img{height:3ex;display:inline-block;vertical-align:middle;padding-bottom:.35ex;margin-right:-.3ex}.template-builder .border{border:1px solid var(--vp-code-bg);border-radius:4px}.template-builder-option{border-radius:4px;padding:8px;display:flex;align-items:start;cursor:pointer}.template-builder-option input[type=checkbox]{height:22px;width:22px;margin-right:16px;flex-shrink:0}.template-builder-option:hover{background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.template-code .copy{opacity:1!important}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Coalesce/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:lang(zh){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "DengXian", "Microsoft YaHei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-d1e76dde]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d1e76dde]{padding:96px 32px 168px}}.code[data-v-d1e76dde]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d1e76dde]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d1e76dde]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d1e76dde]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d1e76dde]{padding-top:20px}.link[data-v-d1e76dde]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d1e76dde]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-269d7ea7]{display:none}.VPDocAsideOutline.has-outline[data-v-269d7ea7]{display:block}.content[data-v-269d7ea7]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-269d7ea7]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-269d7ea7]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-19a7ae4e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-19a7ae4e]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-5941af80]{margin-top:64px}.edit-info[data-v-5941af80]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-5941af80]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-5941af80]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-5941af80]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-5941af80]{margin-right:8px}.prev-next[data-v-5941af80]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-5941af80]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-5941af80]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-5941af80]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-5941af80]{margin-left:auto;text-align:right}.desc[data-v-5941af80]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-5941af80]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-c9cf0e3c]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c9cf0e3c]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c9cf0e3c]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c9cf0e3c]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c9cf0e3c]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c9cf0e3c]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c9cf0e3c]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c9cf0e3c]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c9cf0e3c]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c9cf0e3c]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-b10c5094]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b10c5094]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b10c5094]{flex-direction:row}}.main[data-v-b10c5094]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b10c5094]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b10c5094]{text-align:left}}@media (min-width: 960px){.main[data-v-b10c5094]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b10c5094]{max-width:592px}}.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0 auto}.name[data-v-b10c5094]{color:var(--vp-home-hero-name-color)}.clip[data-v-b10c5094]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b10c5094],.text[data-v-b10c5094]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0}}.tagline[data-v-b10c5094]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b10c5094]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b10c5094]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0}}.actions[data-v-b10c5094]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b10c5094]{justify-content:center}@media (min-width: 640px){.actions[data-v-b10c5094]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b10c5094]{justify-content:flex-start}}.action[data-v-b10c5094]{flex-shrink:0;padding:6px}.image[data-v-b10c5094]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b10c5094]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b10c5094]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b10c5094]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b10c5094]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b10c5094]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b10c5094]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-b10c5094]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b10c5094]{width:320px;height:320px}}[data-v-b10c5094] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b10c5094] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b10c5094] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-d59ac166]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-d59ac166]{padding:0 48px}}@media (min-width: 960px){.container[data-v-d59ac166]{width:100%;padding:0 64px}}.vp-doc[data-v-d59ac166] .VPHomeSponsors,.vp-doc[data-v-d59ac166] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-d59ac166] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-d59ac166] .VPHomeSponsors a,.vp-doc[data-v-d59ac166] .VPTeamPage a{text-decoration:none}.VPHome[data-v-07b1ad08]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-07b1ad08]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-566314d4]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-883964e0]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-883964e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-883964e0]{color:var(--vp-c-text-1)}.icon[data-v-883964e0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-883964e0]{font-size:14px}.icon[data-v-883964e0]{font-size:16px}}.open>.icon[data-v-883964e0]{transform:rotate(90deg)}.items[data-v-883964e0]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-883964e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-883964e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-883964e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-883964e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-883964e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-883964e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-883964e0],.flyout-leave-to[data-v-883964e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-7df97737]{opacity:1}.moon[data-v-7df97737],.dark .sun[data-v-7df97737]{opacity:0}.dark .moon[data-v-7df97737]{opacity:1}.dark .VPSwitchAppearance[data-v-7df97737] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-283b26e9]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-283b26e9]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e42ed9b3]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-af5898d3]{position:relative}.VPFlyout[data-v-af5898d3]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-af5898d3]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-af5898d3]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-af5898d3]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-af5898d3]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-af5898d3],.button[aria-expanded=true]+.menu[data-v-af5898d3]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-af5898d3]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-af5898d3]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-af5898d3]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-af5898d3]{margin-right:0;font-size:16px}.text-icon[data-v-af5898d3]{margin-left:4px;font-size:14px}.icon[data-v-af5898d3]{font-size:20px;transition:fill .25s}.menu[data-v-af5898d3]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-358b6670]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-358b6670]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-358b6670]>svg,.VPSocialLink[data-v-358b6670]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8e87c032]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8e87c032]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8e87c032]{display:none}}.trans-title[data-v-8e87c032]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8e87c032],.item.social-links[data-v-8e87c032]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8e87c032]{min-width:176px}.appearance-action[data-v-8e87c032]{margin-right:-2px}.social-links-list[data-v-8e87c032]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-08fbf4b6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-08fbf4b6],.VPNavBarMenuLink[data-v-08fbf4b6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-0ad69264]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0ad69264]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0ad69264]{border-bottom-color:var(--vp-c-divider)}}[data-v-0ad69264] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-844edcde]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-844edcde]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-844edcde]:not(.home){background-color:transparent}.VPNavBar[data-v-844edcde]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-844edcde]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-844edcde]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-844edcde]{padding:0}}.container[data-v-844edcde]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-844edcde],.container>.content[data-v-844edcde]{pointer-events:none}.container[data-v-844edcde] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-844edcde]{max-width:100%}}.title[data-v-844edcde]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-844edcde]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-844edcde]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-844edcde]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-844edcde]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-844edcde]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-844edcde]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-844edcde]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-844edcde]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-844edcde]{column-gap:.5rem}}.menu+.translations[data-v-844edcde]:before,.menu+.appearance[data-v-844edcde]:before,.menu+.social-links[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before,.appearance+.social-links[data-v-844edcde]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before{margin-right:16px}.appearance+.social-links[data-v-844edcde]:before{margin-left:16px}.social-links[data-v-844edcde]{margin-right:-8px}.divider[data-v-844edcde]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-844edcde]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-844edcde]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-338d9b48]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-338d9b48]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-1a934d60]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-1a934d60]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d2212c70]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d2212c70]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d2212c70]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d2212c70]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d2212c70]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d2212c70]{transform:rotate(45deg)}.button[data-v-d2212c70]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-d2212c70]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d2212c70]{transition:transform .25s}.group[data-v-d2212c70]:first-child{padding-top:0}.group+.group[data-v-d2212c70],.group+.item[data-v-d2212c70]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-7ad780c2]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-c24f735a]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c24f735a]{padding-bottom:10px}.item[data-v-c24f735a]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c24f735a]{cursor:pointer}.indicator[data-v-c24f735a]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c24f735a]{background-color:var(--vp-c-brand-1)}.link[data-v-c24f735a]{display:flex;align-items:center;flex-grow:1}.text[data-v-c24f735a]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c24f735a]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c24f735a],.VPSidebarItem.level-2 .text[data-v-c24f735a],.VPSidebarItem.level-3 .text[data-v-c24f735a],.VPSidebarItem.level-4 .text[data-v-c24f735a],.VPSidebarItem.level-5 .text[data-v-c24f735a]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c24f735a]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.caret[data-v-c24f735a]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-c24f735a]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c24f735a]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c24f735a]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c24f735a]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c24f735a],.VPSidebarItem.level-2 .items[data-v-c24f735a],.VPSidebarItem.level-3 .items[data-v-c24f735a],.VPSidebarItem.level-4 .items[data-v-c24f735a],.VPSidebarItem.level-5 .items[data-v-c24f735a]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c24f735a]{display:none}.VPSidebar[data-v-4871f9f5]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-4871f9f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4871f9f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4871f9f5]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-4871f9f5]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-4871f9f5]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-4871f9f5]{outline:0}.group+.group[data-v-4871f9f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-4871f9f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-3bf2e850]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: rgb(39 152 212);--vp-c-brand-2: rgb(1 118 181);--vp-c-brand-3: rgb(24 65 113);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--logo-text-color: var(--vp-c-brand-3);--vp-code-block-bg: #2b2b2b}html:not(.dark) .vp-doc div[class*=language-] code{color:var(--vp-c-bg)}.dark{--vp-c-text-1: rgb(185, 185, 185);--logo-text-color: #e7e7e7;--vp-code-block-bg: var(--vp-c-bg-alt)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, var(--vp-c-brand-2) 30%, var(--vp-c-brand-1) );--vp-home-hero-image-background-image: linear-gradient( -45deg, var(--vp-c-brand-2) 50%, var(--vp-c-brand-1) 50% );--vp-home-hero-image-opacity: .5;--vp-home-hero-image-spread-mult: 1.5;--vp-home-hero-image-filter: blur(calc(44px * var(--vp-home-hero-image-spread-mult))) opacity(var(--vp-home-hero-image-opacity))}.dark{--vp-home-hero-image-background-image: linear-gradient( -45deg, var(--vp-c-brand-3) 50%, var(--vp-c-brand-2) 50% );--vp-home-hero-image-spread-mult: 1}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(calc(56px * var(--vp-home-hero-image-spread-mult))) opacity(var(--vp-home-hero-image-opacity))}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(calc(68px * var(--vp-home-hero-image-spread-mult))) opacity(var(--vp-home-hero-image-opacity))}}:root{--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand-1) !important}a{color:var(--vp-c-brand-1);text-decoration:none!important}.VPSidebarItem .text{padding:2px 0}html{overflow-y:scroll}.VPNavBarTitle .title{color:var(--logo-text-color)!important}.wide-page{--vp-layout-max-width: min(100vw, 2000px) }.wide-page .content-container{max-width:100%!important}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode)){padding:0}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode))>div{background-color:transparent!important;min-height:40px}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode))>div:before{top:0;right:.5em}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode))>div .copy{top:0}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode)) .shiki{padding-top:0;padding-bottom:0}td:has(>div[class*=language-]:only-child:not(.line-numbers-mode)) .shiki code{padding-left:16px}.dark .light-only{display:none!important}html:not(.dark) .dark-only{display:none!important}table td li,table td ul,table td p{margin:0!important}table td>ul{padding-left:1rem!important}.code-tabs__nav{margin-top:.85rem;margin-bottom:-20px;padding-left:10px;border-top-left-radius:6px;border-top-right-radius:6px;background-color:var(--vp-code-block-bg)}.code-tabs__ul{margin:auto 0 5px;padding-left:0;display:inline-flex;list-style:none!important}.code-tabs__li{margin-top:0!important}.code-tabs__nav-tab{border:0;padding:5px 10px;cursor:pointer;background-color:transparent;font-size:.9em;line-height:1.4;color:#ffffffe6;font-weight:600}.code-tabs__nav-tab:focus{outline:none}.code-tabs__nav-tab:focus-visible{outline:1px solid rgba(255,255,255,.9)}.code-tabs__nav-tab-active{border-bottom:var(--vp-c-brand-1) 2px solid}@media (max-width: 500px){.code-tabs__nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-tabs-item{color:#adbac7;background-color:var(--vp-code-block-bg)}.code-tabs-item div[class*=language-]:before{top:5px}.code-tabs-item>:not([class*=language-]){padding:0 24px}.code-tabs-item pre,.code-tabs-item pre+div{padding-top:8px!important}p+.code-prop{margin-top:36px}.code-prop{margin-top:10px;font-weight:inherit!important}.code-prop .shiki{margin:0;padding:2px 8px;white-space:normal;background-color:var(--vp-code-block-bg)!important;border-radius:5px}.code-prop .shiki .line{display:block;white-space:pre-wrap}.code-prop+:not(.code-prop,h1,h2,h3,h4,h5),.code-prop+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5),.code-prop+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5),.code-prop+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5),.code-prop+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5)+:not(.code-prop,h1,h2,h3,h4,h5){margin-top:4px;margin-left:20px}.intellitect-footer{margin:auto;text-align:center}.intellitect-footer img{max-height:6ex;margin:auto}.intellitect-footer>.content{margin:auto;max-width:800px;text-wrap:balance}.intellitect-footer.page-footer{font-size:14px}.intellitect-footer.page-footer hr{margin-bottom:20px!important}.intellitect-footer.page-footer *{line-height:1.75!important} diff --git a/assets/topics_audit-logging.md.CbcnfHuQ.js b/assets/topics_audit-logging.md.CbcnfHuQ.js new file mode 100644 index 000000000..8911a0aa2 --- /dev/null +++ b/assets/topics_audit-logging.md.CbcnfHuQ.js @@ -0,0 +1,101 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"Audit Logging","description":"","frontmatter":{},"headers":[],"relativePath":"topics/audit-logging.md","filePath":"topics/audit-logging.md"}'),o={name:"topics/audit-logging.md"},l=e(`<h1 id="audit-logging" tabindex="-1">Audit Logging <a class="header-anchor" href="#audit-logging" aria-label="Permalink to "Audit Logging"">​</a></h1><p>Keeping a history of all (or most) of the changes that are made to records in your database can be invaluable, both for <a href="https://csrc.nist.gov/glossary/term/non_repudiation" target="_blank" rel="noreferrer">non-repudiation</a> (i.e. proving what happened and who did it), and for troubleshooting or debugging.</p><p>Coalesce provides a package <code>IntelliTect.Coalesce.AuditLogging</code> that adds an easy way to inject this kind of audit logging into your EF Core <code>DbContext</code>. It also includes an out-of-the-box view <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html"><code>c-admin-audit-log-page</code></a> that enables browsing of this data on the frontend.</p><h2 id="setup" tabindex="-1">Setup <a class="header-anchor" href="#setup" aria-label="Permalink to "Setup"">​</a></h2><p>In this setup process, we're going to add an additional Coalesce Nuget package, define a custom entity to hold our audit logs, install the audit logging extension into our <code>DbContext</code>, and add a pre-made interface on the frontend to view our logs.</p><h3 id="_1-add-the-nuget-package" tabindex="-1">1. Add the NuGet package <a class="header-anchor" href="#_1-add-the-nuget-package" aria-label="Permalink to "1. Add the NuGet package"">​</a></h3><p>Add a reference to the Nuget package <code>IntelliTect.Coalesce.AuditLogging</code> to your data project:</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PackageReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"$(CoalesceVersion)"</span><span style="color:#808080;"> /></span></span> +<span class="line highlighted"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PackageReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce.AuditLogging"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"$(CoalesceVersion)"</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span></code></pre></div><h3 id="_2-define-the-log-entity" tabindex="-1">2. Define the log entity <a class="header-anchor" href="#_2-define-the-log-entity" aria-label="Permalink to "2. Define the log entity"">​</a></h3><p>Define the entity type that will hold the audit records in your database:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">AuditLogging</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"Administrator"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AuditLog</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DefaultAuditLog</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">UserId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> AppUser</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Other custom props as desired</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>This entity only needs to implement <code>IAuditLog</code>, but a default implementation of this interface <code>DefaultAuditLog</code> is provided for your convenience. <code>DefaultAuditLog</code> contains additional properties <code>ClientIp</code>, <code>Referrer</code>, and <code>Endpoint</code> for recording information about the HTTP request (if available), and also comes pre-configured for security with Create, Edit, and Delete APIs disabled.</p><p>You should further augment this type with any additional properties that you would like to track on each change record. A property to track the user who performed the change should be added, since it is not provided by the default implementation so that you can declare it yourself with the correct type for the foreign key and navigation property.</p><p>You should also apply security to restrict reading of these records to only the most privileged users with a <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html#read">Read Attribute</a> (as in the example above) and/or a <a href="/Coalesce/modeling/model-components/data-sources.html#defining-data-sources">custom Default Data Source</a>.</p><h3 id="_3-configure-your-dbcontext" tabindex="-1">3. Configure your <code>DbContext</code> <a class="header-anchor" href="#_3-configure-your-dbcontext" aria-label="Permalink to "3. Configure your \`DbContext\`"">​</a></h3><p>On your <code>DbContext</code>, implement the <code>IAuditLogDbContext<AuditLog></code> interface using the class you just created as the type parameter. Then register the Coalesce audit logging extension in your <code>DbContext</code>'s <code>OnConfiguring</code> method so that saves will be intercepted and audit log entries created.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IAuditLogDbContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DbSet</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">AuditLogs</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DbSet</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLogProperty</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">AuditLogProperties</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> protected</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> OnConfiguring</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">DbContextOptionsBuilder</span><span style="color:#9CDCFE;"> optionsBuilder</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> optionsBuilder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseCoalesceAuditLogging</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">x</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">WithAugmentation</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">OperationContext</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> );</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>You could also perform this setup in your web project when calling <code>.AddDbContext()</code>.</p><p>The above code also contains a reference to a class <code>OperationContext</code>. This is the service that will allow you to populate additional custom properties on your audit entries. You'll want to define it as follows:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> OperationContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DefaultAuditOperationContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // Inject any additional desired services in the constructor:</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> OperationContext</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IHttpContextAccessor</span><span style="color:#9CDCFE;"> accessor</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">accessor</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> Populate</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#9CDCFE;"> auditEntry</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">EntityEntry</span><span style="color:#9CDCFE;"> changedEntity</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> base</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Populate</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">auditEntry</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">changedEntity</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Adjust as needed to retrieve your UserId from the ClaimsPrincipal.</span></span> +<span class="line"><span style="color:#9CDCFE;"> auditEntry</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UserId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>When you're inheriting from <code>DefaultAuditLog</code> for your <code>IAuditLog</code> implementation, you'll want to similarly inherit from <code>DefaultAuditOperationContext<></code> for your operation context. It will take care of populating the HTTP request tracking fields on the <code>AuditLog</code> record. If you want a totally custom implementation, you only need to implement the <code>IAuditOperationContext<TAuditLog></code> interface.</p><p>The operation context class passed to <code>WithAugmentation</code> will be injected from the application service provider if available; otherwise, a new instance will be constructed using dependencies from the application service provider. To make an injected dependency optional, make the constructor parameter nullable with a default value of <code>null</code>, or create <a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection#multiple-constructor-discovery-rules" target="_blank" rel="noreferrer">alternate constructors</a>.</p><h3 id="_4-add-the-ui" tabindex="-1">4. Add the UI <a class="header-anchor" href="#_4-add-the-ui" aria-label="Permalink to "4. Add the UI"">​</a></h3><p>For Vue applications, the <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html">c-admin-audit-log-page</a> component provides an out-of-the-box user interface for browsing through audit logs. Simply define the following route in your application's router:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">CAdminAuditLogPage</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'coalesce-vue-vuetify3'</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#C8C8C8;"> path</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">'/admin/audit-logs'</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#C8C8C8;"> component</span><span style="color:#D4D4D4;">: </span><span style="color:#9CDCFE;">CAdminAuditLogPage</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#C8C8C8;"> props</span><span style="color:#D4D4D4;">: { </span><span style="color:#C8C8C8;">type</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">'AuditLog'</span><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to "Configuration"">​</a></h2><h3 id="suppression" tabindex="-1">Suppression <a class="header-anchor" href="#suppression" aria-label="Permalink to "Suppression"">​</a></h3><p>You can turn audit logging on or off for individual operations by implementing the <code>SuppressAudit</code> property on your DbContext. For example, implement it as an auto-property as follows and then set it to <code>true</code> in application code when desired:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IAuditLogDbContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> SuppressAudit</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="exclusions-formatting" tabindex="-1">Exclusions & Formatting <a class="header-anchor" href="#exclusions-formatting" aria-label="Permalink to "Exclusions & Formatting"">​</a></h3><p>Coalesce's audit logging is built on top of <a href="https://entityframework-plus.net/ef-core-audit" target="_blank" rel="noreferrer">Entity Framework Plus</a> and can be configured using all of its <a href="https://entityframework-plus.net/ef-core-audit#scenarios" target="_blank" rel="noreferrer">configuration</a>, including <a href="https://entityframework-plus.net/ef-core-audit-exclude-include-entity" target="_blank" rel="noreferrer">includes/excludes</a> and <a href="https://entityframework-plus.net/ef-core-audit-format-value" target="_blank" rel="noreferrer">custom property formatting</a>.</p><p>Coalesce will not use EF Plus's <code>AuditManager.DefaultConfiguration</code> global singleton instance. You must use Coalesce's configuration extensions which allow for more targeted configuration per context that does not rely on a global static singleton. For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppDbContext</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">DbContext</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">IAuditLogDbContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> protected</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> OnConfiguring</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">DbContextOptionsBuilder</span><span style="color:#9CDCFE;"> optionsBuilder</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> optionsBuilder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseCoalesceAuditLogging</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AuditLog</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">x</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">WithAugmentation</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">OperationContext</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ConfigureAudit</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">c</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Exclude</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">DataProtectionKey</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ExcludeProperty</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TrackingBase</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#569CD6;">new</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedOn</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ModifiedById</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ModifiedOn</span><span style="color:#D4D4D4;"> })</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">FormatType</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">DateTimeOffset</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">ToTimeZone</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"America/Los_Angeles"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ToString</span><span style="color:#D4D4D4;">())</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Format</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Image</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Content</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;"> => </span><span style="color:#CE9178;">$"{</span><span style="color:#9CDCFE;">Convert</span><span style="color:#CE9178;">.</span><span style="color:#DCDCAA;">ToHexString</span><span style="color:#CE9178;">(</span><span style="color:#9CDCFE;">SHA1</span><span style="color:#CE9178;">.</span><span style="color:#DCDCAA;">HashData</span><span style="color:#CE9178;">(</span><span style="color:#9CDCFE;">x</span><span style="color:#CE9178;">))}, {</span><span style="color:#9CDCFE;">x</span><span style="color:#CE9178;">.</span><span style="color:#9CDCFE;">Length</span><span style="color:#CE9178;">} bytes"</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> )</span></span> +<span class="line"><span style="color:#D4D4D4;"> );</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="property-descriptions" tabindex="-1">Property Descriptions <a class="header-anchor" href="#property-descriptions" aria-label="Permalink to "Property Descriptions"">​</a></h3><p>The <code>AuditLogProperty</code> children of your <code>IAuditLog</code> implementation have two properties <code>OldValueDescription</code> and <code>NewValueDescription</code> that can be used to hold a description of the old and new values. By default, Coalesce will populate the descriptions of foreign key properties with the <a href="/Coalesce/modeling/model-components/attributes/list-text.html">List Text</a> of the referenced principal entity. This greatly improves the usability of the audit logs, which would otherwise only show meaningless numbers or GUIDs for foreign keys that changed.</p><p>This feature will load principal entities into the <code>DbContext</code> if they are not already loaded, which could inflict subtle differences in application functionality in rare edge cases if your application is making assumptions about navigation properties not being loaded. Typically though, this will not be an issue and will not lead unintentional information disclosure to clients as long as <a href="/Coalesce/concepts/include-tree.html">IncludeTree</a>s are used correctly.</p><p>This feature may be disabled by calling <code>.WithPropertyDescriptions(PropertyDescriptionMode.None)</code> inside your call to <code>.UseCoalesceAuditLogging(...)</code> in your DbContext configuration. You may also populate these descriptions in your <code>IAuditOperationContext</code> implementation that was provided to <code>.WithAugmentation<T>()</code>.</p><h2 id="merging" tabindex="-1">Merging <a class="header-anchor" href="#merging" aria-label="Permalink to "Merging"">​</a></h2><p>When using a supported database provider (currently only SQL Server), audit records for changes to the same entity can be merged together when the change is identical in all aspects to the previous audit record for that entity, with the only allowed difference being the old/new property values.</p><p>In other words, if the same user is making repeated changes to the same property on the same entity from the same page, then those changes will merge together into one audit record.</p><p>This merging only happens together if the existing audit record is recent; the default cutoff for this is 30 seconds, but can be configured with <code>.WithMergeWindow(TimeSpan.FromSeconds(15))</code> when calling <code>UseCoalesceAuditLogging</code>. It can also be turned off by setting this value to <code>TimeSpan.Zero</code>. The merging logic respects all custom properties you add to your <code>IAuditLog</code> implementation, requiring their values to match between the existing and new audit records for a merge to occur.</p><p>By default, only non-discrete properties (those that are not foreign keys, booleans, or enums) are candidates for merging, since it is usually only such fields that will have repeated changes while a user is typing in an auto-save user interface. For other types of properties, it is usually better to capture each discrete change. This can be configured with <code>.WithMergeBehavior()</code> when calling <code>UseCoalesceAuditLogging</code>, and can be overridden on a case-by-case basis by setting <code>AuditLogProperty.CanMerge</code> in your <code>IAuditOperationContext.Populate</code> implementation.</p><h2 id="caveats" tabindex="-1">Caveats <a class="header-anchor" href="#caveats" aria-label="Permalink to "Caveats"">​</a></h2><p>Only changes that are tracked by the <code>DbContext</code>'s <code>ChangeTracker</code> can be audited. Changes that are made with raw SQL, or changes that are made with bulk update functions like <a href="https://learn.microsoft.com/en-us/ef/core/performance/efficient-updating?tabs=ef7" target="_blank" rel="noreferrer"><code>ExecuteUpdate</code> or <code>ExecuteDelete</code></a> will not be audited using this package.</p><h2 id="audit-stamping" tabindex="-1">Audit Stamping <a class="header-anchor" href="#audit-stamping" aria-label="Permalink to "Audit Stamping"">​</a></h2><p>A lightweight alternative or addition to full audit logging is audit stamping - the process of setting fields like <code>CreatedBy</code> or <code>ModifiedOn</code> on each changed entity. This cannot record a history of exact changes, but can at least record the age of an entity and how recently it changed.</p><p>Coalesce offers a simple mechanism to register an Entity Framework save interceptor to perform this kind of action (this <strong>does NOT</strong> require the <code>IntelliTect.Coalesce.AuditLogging</code> package). This mechanism operations on all saves that go through Entity Framework, eliminating the need to perform this manually in individual Behaviors, Services, and Custom Methods:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#9CDCFE;">services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddDbContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">options</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">options</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">UseSqlServer</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">connectionString</span><span style="color:#D4D4D4;">) </span><span style="color:#6A9955;">// (or other provider)</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">UseStamping</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">TrackingBase</span><span style="color:#D4D4D4;">>((</span><span style="color:#9CDCFE;">entity</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">user</span><span style="color:#D4D4D4;">) => </span><span style="color:#9CDCFE;">entity</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SetTracking</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">user</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span></code></pre></div><p>In the above example, <code>TrackingBase</code> is an interface or class that you would write as part of your application that defines the properties and mechanisms for performing the tracking operation. For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> abstract</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> TrackingBase</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1000</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ApplicationUser</span><span style="color:#9CDCFE;"> CreatedBy</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1001</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1002</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> CreatedOn</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1003</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ApplicationUser</span><span style="color:#9CDCFE;"> ModifiedBy</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1004</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">ModifiedById</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Display</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Order</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1005</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> ModifiedOn</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> SetTracking</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">ClaimsPrincipal</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">user</span><span style="color:#D4D4D4;">) </span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#DCDCAA;">SetTracking</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">user</span><span style="color:#D4D4D4;">?.</span><span style="color:#DCDCAA;">GetApplicationUserId</span><span style="color:#D4D4D4;">());</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> SetTracking</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">int</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">userId</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> == </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedById</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">userId</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">CreatedOn</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">DateTimeOffset</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Now</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ModifiedById</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">userId</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;"> this</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ModifiedOn</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">DateTimeOffset</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Now</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>The overload <code>UseStamping<TStampable></code> will provide the <code>ClaimsPrincipal</code> from the current HTTP request if present, defaulting to <code>null</code> if an operation occurs outside an HTTP request (e.g. a background job). The overloads <code>UseStamping<TStampable, TService></code> and <code>UseStamping<TStampable, TService1, TService2></code> can be used to inject services into the operation. If more than two services are needed, you should wrap those dependencies up into an additional service that takes them as dependencies.</p>`,51),t=[l];function p(r,c,D,i,y,d){return n(),a("div",null,t)}const g=s(o,[["render",p]]);export{u as __pageData,g as default}; diff --git a/assets/topics_audit-logging.md.CbcnfHuQ.lean.js b/assets/topics_audit-logging.md.CbcnfHuQ.lean.js new file mode 100644 index 000000000..5dfd90710 --- /dev/null +++ b/assets/topics_audit-logging.md.CbcnfHuQ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as e}from"./chunks/framework.BkavzUpE.js";const u=JSON.parse('{"title":"Audit Logging","description":"","frontmatter":{},"headers":[],"relativePath":"topics/audit-logging.md","filePath":"topics/audit-logging.md"}'),o={name:"topics/audit-logging.md"},l=e("",51),t=[l];function p(r,c,D,i,y,d){return n(),a("div",null,t)}const g=s(o,[["render",p]]);export{u as __pageData,g as default}; diff --git a/assets/topics_coalesce-json.md.DRbdr5a0.js b/assets/topics_coalesce-json.md.DRbdr5a0.js new file mode 100644 index 000000000..6b8461be4 --- /dev/null +++ b/assets/topics_coalesce-json.md.DRbdr5a0.js @@ -0,0 +1,60 @@ +import{_ as s,c as n,o as e,a7 as a}from"./chunks/framework.BkavzUpE.js";const D=JSON.parse('{"title":"Config: Code Gen","description":"","frontmatter":{"title":"Config: Code Gen"},"headers":[],"relativePath":"topics/coalesce-json.md","filePath":"topics/coalesce-json.md"}'),o={name:"topics/coalesce-json.md"},l=a(`<h1 id="code-generation-configuration" tabindex="-1">Code Generation Configuration <a class="header-anchor" href="#code-generation-configuration" aria-label="Permalink to "Code Generation Configuration"">​</a></h1><p>In Coalesce, all configuration of the code generation is done in a JSON file. This file is typically named <code>coalesce.json</code> and is typically placed in the solution root.</p><h2 id="file-resolution" tabindex="-1">File Resolution <a class="header-anchor" href="#file-resolution" aria-label="Permalink to "File Resolution"">​</a></h2><p>When the code generation is run by invoking <code>dotnet coalesce</code>, Coalesce will try to find a configuration file via the following means:</p><ol><li>If an argument is specified on the command line, it will be used as the location of the file. E.g. <code>dotnet coalesce C:/Projects/MyProject/config.json</code></li><li>If no argument is given, Coalesce will try to use a file in the working directory named <code>coalesce.json</code></li><li>If no file is found in the working directory, Coalesce will crawl up the directory tree from the working directory until a file named <code>coalesce.json</code> is found. If such a file is never found, an error will be thrown.</li></ol><h2 id="contents" tabindex="-1">Contents <a class="header-anchor" href="#contents" aria-label="Permalink to "Contents"">​</a></h2><p>A full example of a <code>coalesce.json</code> file, along with an explanation of each property, is as follows:</p><div class="language-js"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#CE9178;"> "webProject"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#6A9955;"> // Required: Path to the csproj of the web project. Path is relative to location of this coalesce.json file.</span></span> +<span class="line"><span style="color:#CE9178;"> "projectFile"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "src/Coalesce.Web/Coalesce.Web.csproj"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Framework to use when evaluating & building dependencies.</span></span> +<span class="line"><span style="color:#6A9955;"> // Not needed if your project only specifies a single framework - only required for multi-targeting projects.</span></span> +<span class="line"><span style="color:#CE9178;"> "framework"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "netcoreapp2.0"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Build configuration to use when evaluating & building dependencies.</span></span> +<span class="line"><span style="color:#6A9955;"> // Defaults to "Debug".</span></span> +<span class="line"><span style="color:#CE9178;"> "configuration"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "Debug"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Override the namespace prefix for generated C# code.</span></span> +<span class="line"><span style="color:#6A9955;"> // Defaults to MSBuild's \`$(RootNamespace)\` for the project.</span></span> +<span class="line"><span style="color:#CE9178;"> "rootNamespace"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "MyCompany.Coalesce.Web"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"></span> +<span class="line"><span style="color:#CE9178;"> "dataProject"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#6A9955;"> // Required: Path to the csproj of the data project. Path is relative to location of this coalesce.json file.</span></span> +<span class="line"><span style="color:#CE9178;"> "projectFile"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "src/Coalesce.Domain/Coalesce.Domain.csproj"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Framework to use when evaluating & building dependencies.</span></span> +<span class="line"><span style="color:#6A9955;"> // Not needed if your project only specifies a single framework - only required for multi-targeting projects.</span></span> +<span class="line"><span style="color:#CE9178;"> "framework"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "netstandard2.0"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Build configuration to use when evaluating & building dependencies.</span></span> +<span class="line"><span style="color:#6A9955;"> // Defaults to "Release".</span></span> +<span class="line"><span style="color:#CE9178;"> "configuration"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "Debug"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // The name of the root generator to use.</span></span> +<span class="line"><span style="color:#6A9955;"> // The only current available value is "Vue" (default).</span></span> +<span class="line"><span style="color:#CE9178;"> "rootGenerator"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Vue"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#6A9955;"> // If set, specifies a list of whitelisted root type names that will restrict</span></span> +<span class="line"><span style="color:#6A9955;"> // which types Coalesce will use for code generation. </span></span> +<span class="line"><span style="color:#6A9955;"> // Root types are those that must be annotated with [Coalesce].</span></span> +<span class="line"><span style="color:#6A9955;"> // Useful if want to segment a single data project into multiple web projects, </span></span> +<span class="line"><span style="color:#6A9955;"> // or into different areas/directories within a single web project.</span></span> +<span class="line"><span style="color:#CE9178;"> "rootTypesWhitelist"</span><span style="color:#D4D4D4;">: [</span></span> +<span class="line"><span style="color:#CE9178;"> "MyDbContext"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"MyCustomDto"</span></span> +<span class="line"><span style="color:#D4D4D4;"> ],</span></span> +<span class="line"></span> +<span class="line"><span style="color:#CE9178;"> "generatorConfig"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#6A9955;"> // A set of objects keyed by generator name.</span></span> +<span class="line"><span style="color:#6A9955;"> // Generator names may optionally be qualified by their full namespace.</span></span> +<span class="line"><span style="color:#6A9955;"> // All generators are listed when running 'dotnet coalesce' with '--verbosity debug'.</span></span> +<span class="line"><span style="color:#6A9955;"> // For example, "Controllers" or "IntelliTect.Coalesce.CodeGeneration.Vue.Generators.Controllers".</span></span> +<span class="line"><span style="color:#CE9178;"> "GeneratorName"</span><span style="color:#9CDCFE;">:</span><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Optional: true if the generator should be disabled.</span></span> +<span class="line"><span style="color:#CE9178;"> "disabled"</span><span style="color:#9CDCFE;">:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Configures a path relative to the default output path for the generator</span></span> +<span class="line"><span style="color:#6A9955;"> // where that generator's output should be placed instead.</span></span> +<span class="line"><span style="color:#CE9178;"> "targetDirectory"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "../DifferentFolder"</span></span> +<span class="line"><span style="color:#6A9955;"> // Optional: Indentation size</span></span> +<span class="line"><span style="color:#CE9178;"> "indentationSize"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> },</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="additional-cli-options" tabindex="-1">Additional CLI Options <a class="header-anchor" href="#additional-cli-options" aria-label="Permalink to "Additional CLI Options"">​</a></h2><p>There are a couple of extra options which are only available as CLI parameters to <code>dotnet coalesce</code>. These options do not affect the behavior of the code generation - only the behavior of the CLI itself.</p><p><code>--debug</code></p><p>When this flag is specified when running <code>dotnet coalesce</code>, Coalesce will wait up to 60 seconds for a debugger to be attached to its process before starting code generation.</p><p><code>-v|--verbosity <level></code></p><p>Set the verbosity of the output. Options are <code>trace</code>, <code>debug</code>, <code>information</code>, <code>warning</code>, <code>error</code>, <code>critical</code>, and <code>none</code>.</p>`,14),t=[l];function p(c,i,r,u,d,y){return e(),n("div",null,t)}const h=s(o,[["render",p]]);export{D as __pageData,h as default}; diff --git a/assets/topics_coalesce-json.md.DRbdr5a0.lean.js b/assets/topics_coalesce-json.md.DRbdr5a0.lean.js new file mode 100644 index 000000000..5d38dafa7 --- /dev/null +++ b/assets/topics_coalesce-json.md.DRbdr5a0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as n,o as e,a7 as a}from"./chunks/framework.BkavzUpE.js";const D=JSON.parse('{"title":"Config: Code Gen","description":"","frontmatter":{"title":"Config: Code Gen"},"headers":[],"relativePath":"topics/coalesce-json.md","filePath":"topics/coalesce-json.md"}'),o={name:"topics/coalesce-json.md"},l=a("",14),t=[l];function p(c,i,r,u,d,y){return e(),n("div",null,t)}const h=s(o,[["render",p]]);export{D as __pageData,h as default}; diff --git a/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.js b/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.js new file mode 100644 index 000000000..c355ca194 --- /dev/null +++ b/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.js @@ -0,0 +1,32 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const o="/Coalesce/assets/coalesce-swashbuckle-without.C9T1kd2R.jpg",l="/Coalesce/assets/coalesce-swashbuckle-with.CAm134Ta.jpg",g=JSON.parse('{"title":"OpenAPI/Swagger","description":"","frontmatter":{},"headers":[],"relativePath":"topics/coalesce-swashbuckle.md","filePath":"topics/coalesce-swashbuckle.md"}'),t={name:"topics/coalesce-swashbuckle.md"},p=n(`<h1 id="openapi-swagger" tabindex="-1">OpenAPI/Swagger <a class="header-anchor" href="#openapi-swagger" aria-label="Permalink to "OpenAPI/Swagger"">​</a></h1><p>When using Coalesce to generate API endpoints, the default OpenAPI generation <em>(sometimes referred to as its pre-2015 name "Swagger")</em> can sometimes result in verbose and confusing API definitions, especially when dealing with DataSources and Behaviors. To address these issues, the <code>IntelliTect.Coalesce.Swashbuckle</code> package offers enhancements for OpenAPI definitions, making your Coalesce-generated APIs clearer and more manageable.</p><h2 id="setup" tabindex="-1">Setup <a class="header-anchor" href="#setup" aria-label="Permalink to "Setup"">​</a></h2><p>In this setup process, we're going to add an additional Coalesce NuGet package, configure OpenAPI in your ASP.NET Core application, and specify a Coalesce-specific config property to improve the OpenAPI documentation for Coalesce-generated APIs.</p><h3 id="_1-add-the-nuget-package" tabindex="-1">1. Add the NuGet Package <a class="header-anchor" href="#_1-add-the-nuget-package" aria-label="Permalink to "1. Add the NuGet Package"">​</a></h3><p>Add a reference to the <code>IntelliTect.Coalesce.Swashbuckle</code> NuGet package to your web project:</p><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PackageReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce.Vue"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"$(CoalesceVersion)"</span><span style="color:#808080;"> /></span></span> +<span class="line highlighted"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PackageReference</span><span style="color:#9CDCFE;"> Include</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"IntelliTect.Coalesce.Swashbuckle"</span><span style="color:#9CDCFE;"> Version</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"$(CoalesceVersion)"</span><span style="color:#808080;"> /></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">ItemGroup</span><span style="color:#808080;">></span></span></code></pre></div><h3 id="configure-openapi-in-program-cs" tabindex="-1">Configure OpenAPI in Program.cs <a class="header-anchor" href="#configure-openapi-in-program-cs" aria-label="Permalink to "Configure OpenAPI in Program.cs"">​</a></h3><p>Update your Program.cs file to configure OpenAPI and include Coalesce-specific enhancements. This involves <a href="https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-8.0&tabs=visual-studio" target="_blank" rel="noreferrer">setting up OpenAPI as usual</a> and then applying the Coalesce configuration (Note: You do not need to install the <code>Swashbuckle.AspNetCore</code> package if you are using the Coalesce one).</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#9CDCFE;">builder</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddSwaggerGen</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">config</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> config</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">SwaggerDoc</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"v1"</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">new</span><span style="color:#4EC9B0;"> OpenApiInfo</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Title</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"My API"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">Version</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"v1"</span><span style="color:#D4D4D4;"> });</span></span> +<span class="line"><span style="color:#9CDCFE;"> config</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;">(); </span><span style="color:#6A9955;">// Add coalesce specific configuration</span></span> +<span class="line"><span style="color:#D4D4D4;">});</span></span></code></pre></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// Configure the HTTP request pipeline.</span></span> +<span class="line"><span style="color:#C586C0;">if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">app</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Environment</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsDevelopment</span><span style="color:#D4D4D4;">())</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> app</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseSwagger</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;"> app</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseSwaggerUI</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="improvements" tabindex="-1">Improvements <a class="header-anchor" href="#improvements" aria-label="Permalink to "Improvements"">​</a></h2><h3 id="default-openapi-generation" tabindex="-1">Default OpenAPI Generation <a class="header-anchor" href="#default-openapi-generation" aria-label="Permalink to "Default OpenAPI Generation"">​</a></h3><p>By default, OpenAPI in ASP.NET Core offers a simple way to document APIs. It generates API documentation based on the structure of your controller actions and data models. While this default setup is functional for many scenarios, it may fall short in representing more complex cases, especially when dealing with Coalesce-generated endpoints that include DataSources and Behaviors. These scenarios can lead to verbose and sometimes confusing OpenAPI documentation.</p><h3 id="coalesce-enhancements" tabindex="-1">Coalesce Enhancements <a class="header-anchor" href="#coalesce-enhancements" aria-label="Permalink to "Coalesce Enhancements"">​</a></h3><p>The <code>IntelliTect.Coalesce.Swashbuckle</code> package addresses the limitations of the default OpenAPI generation by providing custom OpenAPI filters. These filters enhance the readability and usability of your OpenAPI documentation for Coalesce-generated APIs.</p><p>The primary effect is an adjustment of parameter definitions to account for Coalesce's custom model binders that create instances of Data Sources and Behaviors on each request. These parameters will be updated in the OpenAPI document to account for data source parameters, filter parameters, and other model-specific customizations.</p><h2 id="visual-comparison" tabindex="-1">Visual Comparison <a class="header-anchor" href="#visual-comparison" aria-label="Permalink to "Visual Comparison"">​</a></h2><p>To illustrate the impact of the <code>IntelliTect.Coalesce.Swashbuckle</code> package, let's examine the Patient model and its representation in OpenAPI.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Patient</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> PatientId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">init</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> NextAppointment</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#6A9955;"> // Additional properties</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultDataSource</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PatientDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Patient</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> PatientsWithUpcomingAppointmentsDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Patient</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>(</span><span style="color:#4EC9B0;">context</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> MonthsOut</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // ...</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h4 id="without-intellitect-coalesce-swashbuckle" tabindex="-1">Without <code>IntelliTect.Coalesce.Swashbuckle</code> <a class="header-anchor" href="#without-intellitect-coalesce-swashbuckle" aria-label="Permalink to "Without \`IntelliTect.Coalesce.Swashbuckle\`"">​</a></h4><p>In the default OpenAPI configuration, DataSource and Behavior parameters are represented as generic objects. DataSource names are also shown as plain strings, hindering the discoverability of available data sources. <img src="`+o+'" alt=""></p><h4 id="with-intellitect-coalesce-swashbuckle" tabindex="-1">With <code>IntelliTect.Coalesce.Swashbuckle</code> <a class="header-anchor" href="#with-intellitect-coalesce-swashbuckle" aria-label="Permalink to "With `IntelliTect.Coalesce.Swashbuckle`"">​</a></h4><p>With the <code>IntelliTect.Coalesce.Swashbuckle</code> package, OpenAPI can interpret the DataSource as a dropdown menu and provides individual fields for each DataSource property. Additionally, it eliminates unnecessary behavior parameters. <img src="'+l+'" alt=""></p>',24),c=[p];function r(i,D,d,u,y,h){return e(),a("div",null,c)}const m=s(t,[["render",r]]);export{g as __pageData,m as default}; diff --git a/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.lean.js b/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.lean.js new file mode 100644 index 000000000..8eb6f8189 --- /dev/null +++ b/assets/topics_coalesce-swashbuckle.md.BLFJZ7Yn.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const o="/Coalesce/assets/coalesce-swashbuckle-without.C9T1kd2R.jpg",l="/Coalesce/assets/coalesce-swashbuckle-with.CAm134Ta.jpg",g=JSON.parse('{"title":"OpenAPI/Swagger","description":"","frontmatter":{},"headers":[],"relativePath":"topics/coalesce-swashbuckle.md","filePath":"topics/coalesce-swashbuckle.md"}'),t={name:"topics/coalesce-swashbuckle.md"},p=n("",24),c=[p];function r(i,D,d,u,y,h){return e(),a("div",null,c)}const m=s(t,[["render",r]]);export{g as __pageData,m as default}; diff --git a/assets/topics_immutability.md.CmCfIs-X.js b/assets/topics_immutability.md.CmCfIs-X.js new file mode 100644 index 000000000..560ade176 --- /dev/null +++ b/assets/topics_immutability.md.CmCfIs-X.js @@ -0,0 +1,35 @@ +import{_ as e,c as a,o as s,a7 as t}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Immutability","description":"","frontmatter":{},"headers":[],"relativePath":"topics/immutability.md","filePath":"topics/immutability.md"}'),n={name:"topics/immutability.md"},o=t(`<h1 id="immutability" tabindex="-1">Immutability <a class="header-anchor" href="#immutability" aria-label="Permalink to "Immutability"">​</a></h1><p>Immutability of data is an essential consideration of almost any system - it is usually important there is confidence in the correctness of historical data.</p><p>For example, a record of an invoice must not change when the prices for the line items are updated as the future progresses, and if a purchased item is later refunded, none of the data about the original purchase should be changed. Only new information describing the refund should be added to the database, including details about the refund and some indication of "refunded" on the original item (like a foreign key referencing the refund transaction)</p><p>It is ultimately up to each individual use case when deciding when data needs to be immutable, but at the very least, any data involving financial transactions and any data where auditing is a major concern should be immutable to at least some extent.</p><p>This page explores some techniques to achieve immutability in a Coalesce application.</p><h2 id="configuration-data-vs-transactional-data" tabindex="-1">Configuration data vs Transactional data <a class="header-anchor" href="#configuration-data-vs-transactional-data" aria-label="Permalink to "Configuration data vs Transactional data"">​</a></h2><h3 id="transactional-data" tabindex="-1">Transactional Data <a class="header-anchor" href="#transactional-data" aria-label="Permalink to "Transactional Data"">​</a></h3><p>In an application, transaction data is any data that represents an event or action that occurred at a particular time. A purchase, an invoice or account statement, a message or email, an audit or error log, a calendar event - these are all examples of transactional data.</p><p>For purposes of this exercise, we're also lumping non-configuration master data under the umbrella of transactional data. For example, a master Customer record, or a User record.</p><h3 id="configuration-data" tabindex="-1">Configuration Data <a class="header-anchor" href="#configuration-data" aria-label="Permalink to "Configuration Data"">​</a></h3><p>Configuration data (sometimes categorized under the umbrella of master data) is the data in a system that informs how transactions occur. The current price of an item, any kind of template, and even singleton configuration like a site's theme and colors.</p><p>If you have configuration data that is linked to transactional data and affects how that transactional data is interpreted, that configuration data becomes a strong candidate for immutability. For example, an <code>InvoiceLine</code> record that references a <code>Product</code> by foreign key instead of having columns on <code>InvoiceLine</code> to hold the price and description of the product - any future updates to the product should not affect past invoices.</p><h2 id="general-techniques" tabindex="-1">General Techniques <a class="header-anchor" href="#general-techniques" aria-label="Permalink to "General Techniques"">​</a></h2><p>The following immutability techniques are applicable to both transactional and configuration data.</p><h3 id="disable-edits" tabindex="-1">Disable edits <a class="header-anchor" href="#disable-edits" aria-label="Permalink to "Disable edits"">​</a></h3><p>One of the simplest ways to enforce immutability of data is to simply prevent it from being edited (and deleted, if applicable) at all.</p><p>Instead of using incremental saves (e.g. through <a href="/Coalesce/stacks/vue/layers/viewmodels.html#auto-save">auto-saves</a>), only create completed records or sets of records with an explicit <a href="/Coalesce/stacks/vue/layers/viewmodels.html#saving-and-deleting">save</a> or <a href="/Coalesce/stacks/vue/layers/viewmodels.html#bulk-saves">bulk save</a> operation, or a <a href="/Coalesce/modeling/model-components/methods.html">custom method</a>. Disable edits entirely to the immutable entities with <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html#edit">security attributes</a>.</p><p>Unfortunately, this approach is usually not feasible for anything but the simplest of data models. There are usually additional considerations to be had, including:</p><ul><li>Completely immutable hierarchical data models can be unreasonably difficult to work with, requiring a full clone of the hierarchy to make the smallest of change (although this <em>could</em> be a desirable characteristic, depending on the use case).</li><li>There's no ability to save in-progress or "draft" state. All data must be created all at once.</li></ul><h3 id="editable-until-finalized" tabindex="-1">Editable until finalized <a class="header-anchor" href="#editable-until-finalized" aria-label="Permalink to "Editable until finalized"">​</a></h3><p>A more nuanced approach to immutability is to only disable editing once a record has reached a "finalized" state. For example, an order that has transitioned from a "shopping cart" to a submitted, paid-for order. Or, a set of configuration that has transitioned from a "draft" state to a "published" state.</p><p>Using <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> on all entities in a hierarchy, prohibit any undesirable edits by overriding the <code>BeforeSave</code> or <code>BeforeSaveAsync</code> method and checking the state of the record in the database to determine if edits are permissible.</p><p>This technique has the advantage of being infinitely customizable, allowing for scenarios like administrative overrides of records that would otherwise be uneditable by an unprivileged user.</p><h3 id="soft-deletes" tabindex="-1">Soft deletes <a class="header-anchor" href="#soft-deletes" aria-label="Permalink to "Soft deletes"">​</a></h3><p>While not a immutability strategy on its own, implementing immutability usually requires the prevention hard deletes of existing records. However, the ability to retire or archive old records using soft deletes is still valuable and doesn't violate the principals of immutability. Doing so is fairly straightforward in Coalesce:</p><ul><li>Add a property to the type to indicate soft delete status (usually a <code>DateTimeOffset? DeletedDate { get; set; }</code>)</li><li>Choose how soft deletes will occur: <ul><li>To soft-delete items using the built-in <code>/delete</code> endpoint and <code>$delete</code> API on <code>ViewModel</code> instances, override <code>ExecuteDeleteAsync</code> on the type's <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> to set the <code>DeletedDate</code> and call <code>db.SaveChangesAsync()</code>. Do not call the base ExecuteDeleteAsync method (which will perform a hard delete). This approach also makes the Delete button in <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/overview.html#admin-components">admin pages</a> perform a soft delete.</li><li>Otherwise, set the soft delete flag using regular saves, just as you would change any other property. Don't forget to implement security restrictions around who can delete and un-delete records if that's important to your application.</li></ul></li><li>Filter out soft-deleted values from selection in your custom UI pages. There are a few options here: <ul><li><p>The simplest way is to use Coalesce's built-in <a href="/Coalesce/modeling/model-components/data-sources.html#member-applylistpropertyfilter">filtering</a> to exclude soft-deleted items. This can be done from a <a href="/Coalesce/stacks/vue/layers/viewmodels.html#member-item-_params">ListViewModel's $params.filter</a>:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> list</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> ItemTypeListViewModel</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;">list</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">$params</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">filter</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">deletedDate</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">;</span></span></code></pre></div><p>...or be passed directly to a <a href="/Coalesce/stacks/vue/coalesce-vue-vuetify/components/c-select.html#member-params"><code>c-input</code> or <code>c-select</code></a>:</p><div class="language-template"><button title="Copy Code" class="copy"></button><span class="lang">template</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">c-select</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#9CDCFE;"> for</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"itemType"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;"> :</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">=</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;">{ </span><span style="color:#9CDCFE;">filter:</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">deletedDate:</span><span style="color:#569CD6;"> null</span><span style="color:#D4D4D4;"> } }</span><span style="color:#D4D4D4;">"</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">/</span><span style="color:#808080;">></span></span></code></pre></div></li><li><p>You can also use a <a href="/Coalesce/modeling/model-components/data-sources.html">custom data source</a> if your needs around excluding soft-deleted items are more complex. For example, if there are certain classes of users in your application who should not be allowed to read soft-deleted items, enforce that in the <a href="/Coalesce/modeling/model-components/data-sources.html#defining-data-sources">default data source</a> for the type.</p></li></ul></li></ul><h2 id="configuration-immutability" tabindex="-1">Configuration Immutability <a class="header-anchor" href="#configuration-immutability" aria-label="Permalink to "Configuration Immutability"">​</a></h2><p>In addition to the general techniques above, the following are approaches are specifically relevant to handling configuration data:</p><h3 id="enforce-nothing-document-consequences" tabindex="-1">Enforce nothing, document consequences <a class="header-anchor" href="#enforce-nothing-document-consequences" aria-label="Permalink to "Enforce nothing, document consequences"">​</a></h3><p>The simplest and riskiest approach is to enforce nothing in the application, but ensure that configuration administrators are aware of the consequences of changing configuration that could have unintended consequences.</p><p>For example, in a scenario with a transactional "Item" record and a configuration "ItemType" record, changing the name of the ItemType would affect the apparent type of all existing Item records that use that type. This can be OK if modifications are performed with this understanding as to not alter the meaning of existing data, but can have undesirable consequences if an existing ItemType is renamed to something completely unrelated.</p><h3 id="disable-edits-1" tabindex="-1">Disable edits <a class="header-anchor" href="#disable-edits-1" aria-label="Permalink to "Disable edits"">​</a></h3><p>The next simplest approach is to make configuration records fully immutable by disabling edits and hard deletes using <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html#edit">security attributes</a>. This is largely foolproof, but comes with the same drawbacks <a href="#disable-edits">as described above</a>.</p><p>For simple cases like a table having not much more than a <code>Name</code> column that provides values in a dropdown, the burden on configuration administrators is usually small. However, for more complex configuration - especially hierarchical configuration - the burden imparted by pure immutability is often unreasonably high. For these scenarios, continue reading the next sections.</p><h3 id="editable-until-used" tabindex="-1">Editable until used <a class="header-anchor" href="#editable-until-used" aria-label="Permalink to "Editable until used"">​</a></h3><p>As an extension of the <a href="#editable-until-finalized">Editable until finalized</a> technique described above, configuration data could be left editable as long as it has not yet been referenced by any transactional data.</p><p>This can be useful for scenarios where a formal "publish" state for the configuration is excessive. Pick-lists for selection in a dropdown, for example, can benefit from this approach by allowing values to be created and worked on as long as changes would not affect the meaning of any existing transactional data that references those values.</p><p>To enforce this, use <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> to block edits to in-use configuration by looking in the database for uses of the configuration record being edited.</p><h3 id="copy-onto-transactional-records" tabindex="-1">Copy onto transactional records <a class="header-anchor" href="#copy-onto-transactional-records" aria-label="Permalink to "Copy onto transactional records"">​</a></h3><p>Another strategy for dealing with configuration changes is to leave configuration records mutable, but copy the important configuration values onto each transactional record as transactions occur.</p><p>This can work great for financial records especially - when a purchase is finalized and paid for, copy the fields like price and description onto each line item in the purchase. This way, future updates to products do not affect past purchases of that item.</p><p>Ensure that the properties in your transactional records that will hold the snapshotted configuration <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html#read">are immutable</a>, then populate these properties from configuration in your backend code (custom methods, services, or behaviors) when transactional records are created.</p><h3 id="versioned-configuration" tabindex="-1">Versioned configuration <a class="header-anchor" href="#versioned-configuration" aria-label="Permalink to "Versioned configuration"">​</a></h3><p>A more advanced but more powerful system of configuration is to use versioned configuration.</p><p>In this approach, there are two tables: A primary configuration table that is freely mutable, and a second table that is versioned and immutable. The primary table keeps track of active version of configuration as well as any configuration that does not need to be versioned or kept immutable, while the records in the versioned table are what get associated to transaction data that relies on the configuration.</p><p>For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> ProductConfiguration</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Sku</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> MarketingDescription</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> InternalNotes</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">CurrentVersionId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ProductConfigurationVersion</span><span style="color:#9CDCFE;"> CurrentVersion</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">DeletedDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> ProductConfigurationVersion</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ConfigurationId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ProductConfiguration</span><span style="color:#9CDCFE;"> Configuration</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Price</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTimeOffset</span><span style="color:#9CDCFE;"> CreatedOn</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>In this example, other configuration records that need to reference the product can reference the <code>ProductConfiguration</code> record and not need to worry about performing updates to foreign keys every time a new version of the product configuration is created.</p><p>Transactional records, on the other hand, should have foreign keys that reference the <code>ProductConfigurationVersion</code> record so that the exact active version at the time of purchase is known. The principal configuration record can be reached through the <code>Configuration</code> navigation property.</p>`,49),l=[o];function i(r,c,p,d,u,h){return s(),a("div",null,l)}const m=e(n,[["render",i]]);export{y as __pageData,m as default}; diff --git a/assets/topics_immutability.md.CmCfIs-X.lean.js b/assets/topics_immutability.md.CmCfIs-X.lean.js new file mode 100644 index 000000000..0003e792e --- /dev/null +++ b/assets/topics_immutability.md.CmCfIs-X.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a7 as t}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Immutability","description":"","frontmatter":{},"headers":[],"relativePath":"topics/immutability.md","filePath":"topics/immutability.md"}'),n={name:"topics/immutability.md"},o=t("",49),l=[o];function i(r,c,p,d,u,h){return s(),a("div",null,l)}const m=e(n,[["render",i]]);export{y as __pageData,m as default}; diff --git a/assets/topics_security.md.De1aPS0R.js b/assets/topics_security.md.De1aPS0R.js new file mode 100644 index 000000000..24fe5a723 --- /dev/null +++ b/assets/topics_security.md.De1aPS0R.js @@ -0,0 +1,291 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const o="/Coalesce/assets/security-overview.DKJVSAfO.jpg",h=JSON.parse('{"title":"Security","description":"","frontmatter":{},"headers":[],"relativePath":"topics/security.md","filePath":"topics/security.md"}'),l={name:"topics/security.md"},t=n(`<h1 id="security" tabindex="-1">Security <a class="header-anchor" href="#security" aria-label="Permalink to "Security"">​</a></h1><p>This page is a comprehensive overview of all the techniques that can be used in a Coalesce application to restrict the capabilities of API endpoints that Coalesce generates.</p><p>The following table is a quick reference of scenarios you might encounter and how you might handle them. If you're unfamiliar with these techniques, though, then you are encouraged to read through this page to get a deeper understanding of what's available before selecting a solution.</p><table><thead><tr><th width="150px">Feature</th><th width="190px">Restriction</th><th>Technique</th></tr></thead><tr><td rowspan="4"><p><a href="/Coalesce/modeling/model-types/entities.html">Entity</a> Reads: <code>/get</code>, <br> <code>/list</code>, <br> <code>/count</code></p></td><td>Disable</td><td><p><a href="#class-security-attributes">[Read(DenyAll)]</a></p></td></tr><tr><td>Roles</td><td><p><a href="#class-security-attributes">[Read("RoleName")]</a></p></td></tr><tr><td><p>Prevent <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">auto-include</a></p></td><td><ul><li>Omit <code>base</code> call in Data Source <code>GetQuery</code> override.</li><li><code>[Read(NoAutoInclude = true)]</code> on properties or types.</li><li><code>[assembly: CoalesceConfiguration(NoAutoInclude = true)]</code></li></ul></td></tr><tr><td><p>Any custom code:</p><ul><li>Query Predicates</li><li>Filtered Includes</li><li>Conditional Includes</li><li>Sort/search/filter overrides</li></ul></td><td><p><a href="#data-sources">Custom Default Data Source</a></p></td></tr><tr></tr><tr><td rowspan="5"><p><a href="/Coalesce/modeling/model-types/entities.html">Entity</a> Mutations: <code>/save</code>, <br> <code>/bulkSave</code>, <br> <code>/delete</code></p></td><td>Disable</td><td><p><a href="#class-security-attributes">[Create(DenyAll)] [Edit(DenyAll)] [Delete(DenyAll)]</a></p></td></tr><tr><td>Roles</td><td><p><a href="#class-security-attributes">[Create("Role")] [Edit("Role")] [Delete("Role")]</a></p></td></tr><tr><td>Restrict target records (edit/delete)</td><td><p><a href="#data-sources">Custom Default Data Source</a></p></td></tr><tr><td>Static Validation</td><td><p><a href="#attribute-validation">Validation attributes</a></p></td></tr><tr><td><p>Any custom code:</p><ul><li>Security</li><li>Validation</li></ul></td><td><p><a href="#behaviors">Custom Behaviors</a><br></p></td></tr><tr><td rowspan="5"><p><a href="/Coalesce/modeling/model-components/methods.html">Methods</a> and <a href="/Coalesce/modeling/model-types/services.html">Services</a></p></td><td>Disable</td><td><p>N/A - explicit opt-in required via <code>[Coalesce]</code></p></td></tr><tr><td>Roles</td><td><p><a href="#method-security-attributes">[Execute("RoleName")]</a></p></td></tr><tr><td>Static Validation</td><td><p><a href="#attribute-validation">Validation attributes</a></p></td></tr><tr><td><p>Restrict Targets (only <a href="/Coalesce/modeling/model-components/methods.html#instance-methods">instance methods</a>)</p></td><td><ul><li><a href="#data-sources">custom Default Data Source</a></li><li>specify data source: <a href="/Coalesce/modeling/model-components/attributes/execute.html#member-datasource">[Execute(DataSource = typeof(...))]</a></li></ul></td></tr><tr><td>Other</td><td><p>Write custom logic in the method.</p></td></tr><tr><td rowspan="8"><p><a href="/Coalesce/modeling/model-components/properties.html">Properties</a><br><small style="display:block;line-height:1.3;"> (All input and output for Entity CRUD, Methods, and Services) </small></p></td><td>Globally Exclude</td><td><ul><li><a href="#internal-properties">[InternalUse]</a></li><li><code>internal</code> access modifier</li></ul></td></tr><tr><td> Roles </td><td><p><a href="#role-restrictions">Property Security Attributes</a></p></td></tr><tr><td><p>Read-only</p></td><td><ul><li><code>internal</code> setter or no setter</li><li><code>[Read]</code> attribute without <code>[Edit]</code></li><li><a href="#read-only-properties">other techniques</a></li></ul></td></tr><tr><td><p>Init-only (write-once)</p></td><td><p><a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/init" target="_blank" rel="noreferrer"><code>init</code> setter</a></p></td></tr><tr><td><p>Custom security</p></td><td><ul><li>Navigation Properties: <a href="#data-sources">Data Sources</a></li><li>Scalar/Other Properties: <a href="#custom-restrictions">Property Restrictions</a></li></ul></td></tr></table><h2 id="endpoint-security" tabindex="-1">Endpoint Security <a class="header-anchor" href="#endpoint-security" aria-label="Permalink to "Endpoint Security"">​</a></h2><p>Coalesce generates API endpoints by traversing your data model's classes, starting from types annotated with <code>[Coalesce]</code>. This usually includes your <code>DbContext</code> class, as well as any <a href="/Coalesce/modeling/model-types/services.html">Service</a> classes or interfaces.</p><p>Classes can be hidden from Coalesce entirely by annotating them with <code>[InternalUse]</code>, preventing generation of API endpoints for that class, as well as preventing properties of that type from being exposed.</p><p><code>DbSet<></code> properties on your <code>DbContext</code> class can also be annotated with <code>[InternalUse]</code>, causing that type to be treated by Coalesce like an <a href="/Coalesce/modeling/model-types/external-types.html">External Type</a> rather than an <a href="/Coalesce/modeling/model-types/entities.html">Entity</a>, once again preventing generation of API endpoints but <em>without</em> preventing properties of that type from being exposed.</p><h3 id="class-security-attributes" tabindex="-1">Class Security Attributes <a class="header-anchor" href="#class-security-attributes" aria-label="Permalink to "Class Security Attributes"">​</a></h3><p>For each of your <a href="/Coalesce/modeling/model-types/entities.html">Entities</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>, Coalesce generates a set of CRUD API endpoints (<code>/get</code>, <code>/list</code>, <code>/count</code>, <code>/save</code>, <code>/bulkSave</code>, and <code>/delete</code>).</p><p>The default behavior is that all endpoints require an authenticated user (anonymous users are rejected).</p><p>These endpoints can be secured by placing any or all of the <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">[Read], [Create], [Edit], and [Delete] attributes</a> on the the class. Each attribute can specify required roles for that action, or open that action to anonymous, unauthenticated users, or disable the endpoint entirely.</p><p>This security is applied to the generated <a href="https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/actions" target="_blank" rel="noreferrer">controllers</a>. The <code>[Read]</code> attribute on a class <strong><em>does not</em></strong> affect instances of that class when those instances are present as child properties of other types, since in those scenarios the data will be coming from a different endpoint on a different controller.</p><table><thead><tr><th>Endpoints</th><th>Governing Attributes</th></tr></thead><tr><td><p><code>/get</code>, <code>/list</code>, <code>/count</code></p></td><td><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">ReadAttribute</span><span style="color:#D4D4D4;">]</span></span></code></pre></div></td></tr><tr><td><p><code>/save</code></p></td><td><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">CreateAttribute</span><span style="color:#D4D4D4;">] </span><span style="color:#6A9955;">// Affects saves of new entities</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">EditAttribute</span><span style="color:#D4D4D4;">] </span><span style="color:#6A9955;">// Affects saves of existing entities</span></span></code></pre></div></td></tr><tr><td><p><code>/delete</code></p></td><td><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">DeleteAttribute</span><span style="color:#D4D4D4;">]</span></span></code></pre></div></td></tr><tr><td><p><code>/bulkSave</code></p></td><td><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// Read permission required for the root entity:</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">ReadAttribute</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// Control of each entity affected by the bulk save:</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">CreateAttribute</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">EditAttribute</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">DeleteAttribute</span><span style="color:#D4D4D4;">]</span></span></code></pre></div></td></tr></table><p>Here are some examples of applying security attributes to an entity class. If a particular action doesn't need to be restricted, you can omit that attribute, but this example shows usages of all four:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// Allow read access by unauthenticated, anonymous users:</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AllowAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#6A9955;">// Allow creation of new entities by the Admin and HR roles (params string[] style):</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Admin"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#6A9955;">// Allow editing of existing Employee entities by users with the Admin or HR roles (CSV style):</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Admin,HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#6A9955;">// Prohibit deletion of Employee entities</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="method-security-attributes" tabindex="-1">Method Security Attributes <a class="header-anchor" href="#method-security-attributes" aria-label="Permalink to "Method Security Attributes"">​</a></h3><p>To secure the endpoints generated for your <a href="/Coalesce/modeling/model-components/methods.html">Custom Methods</a> and <a href="/Coalesce/modeling/model-types/services.html">Services</a>, the <a href="/Coalesce/modeling/model-components/attributes/execute.html">[Execute] attribute</a> can be used to specify a set of required roles for that endpoint, or to open that endpoint to anonymous users.</p><p>The default behavior is that all endpoints require an authenticated user (anonymous users are rejected).</p><p>For example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Execute</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll,HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> GiveRaise</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">int</span><span style="color:#9CDCFE;"> centsPerHour</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#6A9955;"> // Only Payroll and HR users can call this method</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Execute</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">AllowAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> SendMessage</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> message</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#6A9955;"> // Anyone (even anonymous, unauthenticated users) can call this method.</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="property-column-security" tabindex="-1">Property/Column Security <a class="header-anchor" href="#property-column-security" aria-label="Permalink to "Property/Column Security"">​</a></h2><p>Security applied via attributes to properties in Coalesce affects all usages of that property across all Coalesce-generated APIs. This includes usages of that property on types that occur as children of other types, which is a spot where class-level or endpoint-level security generally does not apply. <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">These attributes</a> can be placed on the properties on your <a href="/Coalesce/modeling/model-types/entities.html">Entities</a> and <a href="/Coalesce/modeling/model-types/external-types.html">External Types</a> to apply role-based restrictions to that property.</p><ul><li><code>ReadAttribute</code> limits the roles that can read values from that property in responses from the server.</li><li><code>EditAttribute</code> limits the roles that can write values to that property in requests made to the server.</li><li><code>RestrictAttribute</code> registers an implementation of <a href="#custom-restrictions">IPropertyRestriction</a> that allows for writing custom code to implement these restrictions.</li></ul><p>This security is executed and enforced by the mapping that occurs in the <a href="/Coalesce/stacks/agnostic/dtos.html">generated DTOs</a>, meaning it affects both entity CRUD APIs as well as <a href="/Coalesce/modeling/model-components/methods.html">Custom Methods</a>. It is also checked by the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a> to prevent sorting, searching, and filtering by properties that a user is not permitted to read.</p><h3 id="internal-properties" tabindex="-1">Internal Properties <a class="header-anchor" href="#internal-properties" aria-label="Permalink to "Internal Properties"">​</a></h3><p>Properties can be hidden from Coalesce entirely, either with the <a href="/Coalesce/modeling/model-components/attributes/internal-use.html">[InternalUse]</a> attribute or non-public C# access modifiers.</p><p>The properties in the following example are hidden entirely from all Coalesce functionality and generated APIs:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">DataAnnotations</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // InternalUseAttribute hides anything from Coalesce.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">InternalUse</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Non-public C# access modifiers will hide properties from Coalesce:</span></span> +<span class="line"><span style="color:#569CD6;"> internal</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Property's type is [InternalUse], so properties using that type are also internal.</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">InternalUse</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Department</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // All properties on an [InternalUse] type are non-exposed,</span></span> +<span class="line"><span style="color:#6A9955;"> // since the parent type is not exposed.</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="read-only-properties" tabindex="-1">Read-Only Properties <a class="header-anchor" href="#read-only-properties" aria-label="Permalink to "Read-Only Properties"">​</a></h3><p>A property in Coalesce can be made read-only in any of the following ways:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">DataAnnotations</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">ComponentModel</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // A property with a [Read] attribute but no [Edit] attribute is read-only:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Payroll users and HR users can read this property. Nobody can edit it:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll,HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Using System.ComponentModel.ReadOnlyAttribute:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">ReadOnly</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> BirthDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Non-public setter:</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> StartDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">internal</span><span style="color:#569CD6;"> set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // No setter:</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> EmploymentDuration</span><span style="color:#D4D4D4;"> => (</span><span style="color:#9CDCFE;">DateTime</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Now</span><span style="color:#D4D4D4;"> - </span><span style="color:#9CDCFE;">StartDate</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ToString</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Edits denied:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">SecurityPermissionLevels</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DenyAll</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> EmployeeNumber</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="role-restrictions" tabindex="-1">Role Restrictions <a class="header-anchor" href="#role-restrictions" aria-label="Permalink to "Role Restrictions"">​</a></h3><p>Reading and writing a property in Coalesce can be restricted by roles:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">DataAnnotations</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // A property with no attributes is readable and writable without restriction</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // When a [Read] and [Edit] attributes are both present,</span></span> +<span class="line"><span style="color:#6A9955;"> // the read roles are required for edits in addition to any edit roles.</span></span> +<span class="line"><span style="color:#6A9955;"> // Property is only readable by Payroll & HR,</span></span> +<span class="line"><span style="color:#6A9955;"> // and is also only editable by Payroll & HR.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll,HR"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> BirthDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Property is readable by Payroll and HR, and editable only by Payroll.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Property is readable by Payroll, and editable only by a user who is both Payroll AND HR.</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Payroll"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> DateTime</span><span style="color:#9CDCFE;"> StartDate</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Init-only properties on entities can only be set by the first /save of the entity.</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> EmployeeNumber</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">init</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>A few of the examples above point out that when a property is restricted for reading by roles, those roles are also required when editing that property. This is because it usually doesn't make sense for a user to change a value when they have no way of knowing what the original value was. If you have a situation where a property should be editable without knowing the original value, use a custom method on the model to accept and set the new value.</p><h3 id="custom-restrictions" tabindex="-1">Custom Restrictions <a class="header-anchor" href="#custom-restrictions" aria-label="Permalink to "Custom Restrictions"">​</a></h3><p><code>IntelliTect.Coalesce.DataAnnotations.RestrictAttribute<T></code></p><p>In addition to <a href="/Coalesce/modeling/model-components/attributes/security-attribute.html">role-based</a> property restrictions, you can also define property restrictions that can execute custom code for each model instance if your logic require more nuanced decisions than can be made with roles.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#C586C0;">using</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">DataAnnotations</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#D4D4D4;"> </span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> UserId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Restrict</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">SalaryRestriction</span><span style="color:#D4D4D4;">>]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> SalaryRestriction</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyUserService</span><span style="color:#9CDCFE;"> userService</span><span style="color:#D4D4D4;">) : </span><span style="color:#4EC9B0;">IPropertyRestriction</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanRead</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#9CDCFE;"> model</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetUserId</span><span style="color:#D4D4D4;">() == </span><span style="color:#9CDCFE;">model</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UserId</span><span style="color:#D4D4D4;"> || </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanWrite</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#9CDCFE;"> model</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">object</span><span style="color:#9CDCFE;"> incomingValue</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#DCDCAA;"> UserCanFilter</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IMappingContext</span><span style="color:#9CDCFE;"> context</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">string</span><span style="color:#9CDCFE;"> propertyName</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">userService</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsPayroll</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Restriction classes support dependency injection, so you can inject any supplemental services needed to make a determination.</p><p>The <code>UserCanRead</code> method controls whether values of the restricted property will be mapped from model instances to the generated DTO. Similarly, <code>UserCanWrite</code> controls whether the property can be mapped back to the model instance from the generated DTO.</p><p>The <code>UserCanFilter</code> method has a default implementation that returns <code>false</code>, but can be implemented if there is an appropriate, instance-agnostic way to determine if a user can sort, search, or filter values of that property.</p><p>Multiple different restrictions can be placed on a single property; all of them must succeed for the operation to be permitted. Restrictions also stack on top of role attribute restrictions (<code>[Read]</code> and <code>[Edit]</code>).</p><h2 id="row-level-security" tabindex="-1">Row-level Security <a class="header-anchor" href="#row-level-security" aria-label="Permalink to "Row-level Security"">​</a></h2><h3 id="data-sources" tabindex="-1">Data Sources <a class="header-anchor" href="#data-sources" aria-label="Permalink to "Data Sources"">​</a></h3><p>In Coalesce, <a href="/Coalesce/modeling/model-components/data-sources.html">Data Sources</a> are the mechanism that you can extend to implement row-level security on your <a href="/Coalesce/modeling/model-types/entities.html">Entities</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>.</p><p>Data Sources are used when fetching results for <code>/get</code>, <code>/list</code>, and <code>/count</code> endpoints, and when fetching the target or result of a <code>/save</code>, <code>/bulkSave</code>, or <code>/delete</code>, and when fetching the invocation target of an <a href="/Coalesce/modeling/model-components/methods.html#instance-methods">Instance Method</a>.</p><p>By default, your entities will be fetched using the <a href="/Coalesce/modeling/model-components/data-sources.html#standard-data-source">Standard Data Source</a>, but you can declare a custom default data source for each of your entities to override this default functionality. The default functionality here includes the <a href="/Coalesce/modeling/model-components/data-sources.html#default-loading-behavior">default loading behavior</a>, a feature where the Standard Data Source automatically includes the immediate relationships of requested entities. This can be suppressed by overriding the <code>GetQuery</code> method on your custom data source and not calling the base method, or by placing <code>[Read(NoAutoInclude = true)]</code> on classes or navigation properties that you do not want automatically included.</p><p>For most use cases, all your security rules will be implemented in the <a href="/Coalesce/modeling/model-components/data-sources.html#member-getquery">GetQuery/GetQueryAsync</a> method. This is the most foundational method of the data source that all other functions in the data source build upon. Any predicates applied to the query of a type's default data source will affect all of the type's generated API endpoints (except for static custom methods).</p><p>There are a few different techniques that you can use to apply filtering in a data source, each one working for a specific use case. The example below includes an example of each technique.</p><h4 id="query-predicates" tabindex="-1">Query Predicates <a class="header-anchor" href="#query-predicates" aria-label="Permalink to "Query Predicates"">​</a></h4><p>The <strong>Query Predicates</strong> technique involves applying a <code>.Where()</code> predicate to your query to filter the root entities that are returned by the query using some database-executed logic. This is a form of row-level security and can be used to only include a record based on the values of that record in the database.</p><h4 id="conditional-includes" tabindex="-1">Conditional Includes <a class="header-anchor" href="#conditional-includes" aria-label="Permalink to "Conditional Includes"">​</a></h4><p>The <strong>Conditional Includes</strong> technique involves conditionally appending <code>.Include()</code> calls to your query only when some server-executed criteria is met. Usually this involves checking the roles of a user and only including a navigation property if the user is in the requisite role. This technique cannot be used with database-executed logic and is therefore behaves more like table-level security than row-level security.</p><h4 id="filtered-includes" tabindex="-1">Filtered Includes <a class="header-anchor" href="#filtered-includes" aria-label="Permalink to "Filtered Includes"">​</a></h4><p>The <strong>Filtered Includes</strong> technique involves using <a href="https://learn.microsoft.com/en-us/ef/core/querying/related-data/eager#filtered-include" target="_blank" rel="noreferrer">EF Core filtered includes</a> to apply database-executed logic to filter the rows of child collection navigation properties.</p><p>EF filtered Includes <strong>cannot</strong> be used to apply database-executed filters to <em>reference</em> navigation properties due to <a href="https://github.com/dotnet/efcore/issues/24422" target="_blank" rel="noreferrer">lack of EF support</a> - see the sections below on <a href="#transform-results">transform results</a> and <a href="#ef-global-query-filters">global query filters</a> for two possible solutions.</p><p>A complex example using all three of the above techniques:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> IsIntern</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> List</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">DepartmentMember</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Override the default data source for Employee with a custom one:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultDataSource</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DefaultSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> DefaultSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // TECHNIQUE: Conditional Includes - subset child objects using server-executed logic:</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsInRole</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">)) {</span></span> +<span class="line"><span style="color:#6A9955;"> // HR can see everything. Return early so they are not subjected to the other filters:</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // TECHNIQUE: Query Predicates - subset root objects using database-executed logic:</span></span> +<span class="line"><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> employeeId</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetEmployeeId</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#6A9955;"> // Anyone can see interns</span></span> +<span class="line"><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">IsIntern</span><span style="color:#D4D4D4;"> ||</span></span> +<span class="line"><span style="color:#6A9955;"> // Otherwise, a user can only see employees in their own departments:</span></span> +<span class="line"><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Any</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Any</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">u</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">u</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">employeeId</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> );</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // TECHNIQUE: EF Core Filtered Includes - subset collections using database-executed logic.</span></span> +<span class="line"><span style="color:#6A9955;"> // Include the departments of employees, but only those that the current user is a member of.</span></span> +<span class="line"><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Any</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">u</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">u</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">employeeId</span><span style="color:#D4D4D4;">)))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Department</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Department</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> DepartmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> Name</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> List</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">DepartmentMember</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;"> // Override the default data source for Department with a custom one:</span></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultDataSource</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DefaultSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Department</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> DefaultSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Department</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Department</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Departments</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Include</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ThenInclude</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employee</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (!</span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsInRole</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Non-HR users can only see their own departments:</span></span> +<span class="line"><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">query</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">d</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DepartmentMembers</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Any</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">dm</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetEmployeeId</span><span style="color:#D4D4D4;">()));</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> query</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// Only HR can directly read or modify DepartmentMember records.</span></span> +<span class="line"><span style="color:#D4D4D4;">[</span><span style="color:#4EC9B0;">Read</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Create</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Edit</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">), </span><span style="color:#4EC9B0;">Delete</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HR"</span><span style="color:#D4D4D4;">)]</span></span> +<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DepartmentMember</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> Id</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> DepartmentId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Department</span><span style="color:#9CDCFE;"> Department</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#9CDCFE;"> Employee</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h4 id="transform-results" tabindex="-1">Transform Results <a class="header-anchor" href="#transform-results" aria-label="Permalink to "Transform Results"">​</a></h4><p>There exists a fourth technique in Data Sources for applying filtered includes: the <a href="/Coalesce/modeling/model-components/data-sources.html#member-transformresults">TransformResultsAsync</a> method. Unlike the other techniques above that are performed in the <code>GetQuery</code> method and applied at the beginning of the data source query pipeline, <code>TransformResults</code> is applied at the very end of the process against the materialized results. It also only affects the responses from the generated <code>/get</code>, <code>/list</code>, <code>/save</code>, <code>/bulkSave</code>, and <code>/delete</code> endpoints - it has no bearing on the invocation target of <a href="/Coalesce/modeling/model-components/methods.html#instance-methods">instance methods</a>.</p><p>The primary purpose of <code>TransformResults</code> is to conditionally load navigation properties. This was very useful before EF Core introduced native <a href="#filtered-includes">filtered includes</a> for collection navigation properties, and is still useful for applying filtered includes to <em>reference</em> navigation properties since EF <a href="https://github.com/dotnet/efcore/issues/24422" target="_blank" rel="noreferrer">does not support this</a>. It can also be used for any kind of filtered includes if native EF filtered includes get translated into poorly-performant SQL, or it can be used to populate <a href="/Coalesce/modeling/model-types/external-types.html">external type</a> or other non-database-mapped properties on your entities.</p><p>The general technique for using <code>TransformResults</code> involves using <a href="https://learn.microsoft.com/en-us/ef/core/querying/related-data/explicit#explicit-loading" target="_blank" rel="noreferrer">EF Core Explicit Loading</a> to attach additional navigation properties to the result set, and then using Coalesce's <code>.IncludedSeparately()</code> method in the data source's <code>GetQuery</code> so that Coalesce can still build the correct <a href="/Coalesce/concepts/include-tree.html">Include Tree</a> to shape the serialization of your results.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> EmployeeId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> ManagerId</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> Employee</span><span style="color:#9CDCFE;"> Manager</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">DefaultDataSource</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> DefaultSource</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardDataSource</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> DefaultSource</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> IQueryable</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GetQuery</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#6A9955;"> // Use IncludedSeparately to instruct Coalesce that we're going to</span></span> +<span class="line"><span style="color:#6A9955;"> // manually populate the Manager, and that it should be mapped to the result DTOs</span></span> +<span class="line"><span style="color:#6A9955;"> // despite not being eagerly loaded with EF's .Include() method.</span></span> +<span class="line"><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IncludedSeparately</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Manager</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> TransformResultsAsync</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#4EC9B0;"> IReadOnlyList</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">results</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#4EC9B0;"> IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span></span> +<span class="line"><span style="color:#D4D4D4;"> )</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> foreach</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">var</span><span style="color:#9CDCFE;"> employee</span><span style="color:#C586C0;"> in</span><span style="color:#9CDCFE;"> results</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // Only load the employee's manager if the current logged in user is that manager.</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">employee</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ManagerId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetEmployeeId</span><span style="color:#D4D4D4;">() && </span><span style="color:#9CDCFE;">employee</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Manager</span><span style="color:#569CD6;"> is</span><span style="color:#569CD6;"> null</span><span style="color:#D4D4D4;">) {</span></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">employee</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ManagerId</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">LoadAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Alternatively, and indeed preferably, you can often formulate a query that does not use iteration and requires only a single database round-trip:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> override</span><span style="color:#569CD6;"> async</span><span style="color:#4EC9B0;"> Task</span><span style="color:#DCDCAA;"> TransformResultsAsync</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#4EC9B0;"> IReadOnlyList</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">results</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#4EC9B0;"> IDataSourceParameters</span><span style="color:#9CDCFE;"> parameters</span></span> +<span class="line"><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> managerIds</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">results</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Select</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ManagerId</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">ToList</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#569CD6;"> await</span><span style="color:#9CDCFE;"> Db</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Employees</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Where</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">managerIds</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Contains</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ManagerId</span><span style="color:#D4D4D4;">) && </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">EmployeeId</span><span style="color:#D4D4D4;"> == </span><span style="color:#9CDCFE;">User</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">GetEmployeeId</span><span style="color:#D4D4D4;">())</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">LoadAsync</span><span style="color:#D4D4D4;">();</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="behaviors" tabindex="-1">Behaviors <a class="header-anchor" href="#behaviors" aria-label="Permalink to "Behaviors"">​</a></h3><p>In Coalesce, <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> are the extension point to implement row-level security or other customizations of create/edit/delete operations on your <a href="/Coalesce/modeling/model-types/entities.html">Entities</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a>. Behaviors are implemented on top of data sources, meaning the client request will be rejected if the requested entity for modification cannot be loaded from the entity's default data source.</p><p>By default, each entity will use the <a href="/Coalesce/modeling/model-components/behaviors.html#behaviors">Standard Behaviors</a>, but you can declare a <a href="/Coalesce/modeling/model-components/behaviors.html#defining-behaviors">custom behaviors class</a> for each of your entities to override this default functionality.</p><p>For most use cases, all your security rules will be implemented in the <a href="/Coalesce/modeling/model-components/behaviors.html#member-beforesaveasync">BeforeSave/BeforeSaveAsync</a> and <a href="/Coalesce/modeling/model-components/behaviors.html#member-beforedeleteasync">BeforeDelete/BeforeDeleteAsync</a> methods.</p><p>For a more complete explanation of everything you can do with behaviors, see the full <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> documentation page.</p><h3 id="ef-global-query-filters" tabindex="-1">EF Global Query Filters <a class="header-anchor" href="#ef-global-query-filters" aria-label="Permalink to "EF Global Query Filters"">​</a></h3><p>Since Coalesce's data access layer is built on top of Entity Framework, you can also use <a href="https://learn.microsoft.com/en-us/ef/core/querying/filters" target="_blank" rel="noreferrer">Entity Framework's Global Query Filters</a> feature to apply row-level security.</p><p>This approach is less flexible than custom Coalesce data sources and has other <a href="https://learn.microsoft.com/en-us/ef/core/querying/filters#accessing-entity-with-query-filter-using-required-navigation" target="_blank" rel="noreferrer">drawbacks</a> as well, but on the other hand it has more absolute authority, is less susceptible to issues like inadvertently returning data through unfiltered navigation properties, and can sometimes require less work to implement than individual data sources.</p><p>Global Query Filters are also the only way to implement database-executed <a href="#filtered-includes">filtered includes</a> of <a href="https://learn.microsoft.com/en-us/ef/core/modeling/relationships/glossary" target="_blank" rel="noreferrer">reference navigation properties</a>, as there is no version of <code>.Include()</code> for reference navigation properties that allows a database-executed predicate to be applied. See <a href="https://github.com/dotnet/efcore/issues/24422" target="_blank" rel="noreferrer">this open issue</a> on EF Core.</p><h3 id="foreign-key-injection-vulnerabilities" tabindex="-1">Foreign Key Injection Vulnerabilities <a class="header-anchor" href="#foreign-key-injection-vulnerabilities" aria-label="Permalink to "Foreign Key Injection Vulnerabilities"">​</a></h3><p>When a user is saving a model with Coalesce, they can provide values for the model's foreign key properties. When this interaction takes place through a user interface, the user is not likely to produce a foreign key referencing an object that the user is not allowed to view.</p><p>A malicious user, however, is a different story. Imagine a user who is brute-forcing the <code>/save</code> endpoint on one of your entities, enumerating values of a foreign key. The may be trying to leak data through navigation property values returned by the response from the save, or they may be trying to inject their data into an object graph that they do not otherwise have access to.</p><p>If this scenario sounds like a plausible threat vector your application, be sure to perform sufficient <a href="#server-side-data-validation">validation</a> of incoming foreign keys to ensure that the user is allowed to use a particular foreign key value before saving it to your database.</p><p>Also consider making any required foreign keys that should not change for the lifetime of an entity into init-only properties (i.e. use the <code>init</code> accessor in C# instead of the <code>set</code> accessor). While this does not entirely solve the foreign key injection issue, it eliminates the need to validate that a user is not changing the parent of an object if such an operation is not desirable.</p><h2 id="server-side-data-validation" tabindex="-1">Server-side Data Validation <a class="header-anchor" href="#server-side-data-validation" aria-label="Permalink to "Server-side Data Validation"">​</a></h2><p>Coalesce, as of version 4, will by default perform server-side validation of incoming data using validation attributes.</p><p>Your database will also enforce any constraints (referential integrity, <code>not null</code>, check constraints, etc.), but errors produced by your database will manifest as exceptions, which are not user-friendly.</p><p>For any custom validation that cannot be implemented by attributes, you must implement that yourself for <a href="#saves-and-deletes">saves and deletes</a> or <a href="#custom-methods-and-services">custom methods</a>.</p><h3 id="attribute-validation" tabindex="-1">Attribute Validation <a class="header-anchor" href="#attribute-validation" aria-label="Permalink to "Attribute Validation"">​</a></h3><p>Historically, Coalesce did not provide any automatic, attribute-based validation of incoming data. As of Coalesce 4.0, automatic server side validation using <a href="https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.validationattribute" target="_blank" rel="noreferrer">ValidationAttribute</a>-derived attributes on your models is enabled by default.</p><p>In addition to any validation attributes present on your model properties and method parameters, there are some other rules that work similarly to the default validation in ASP.NET Core:</p><ul><li>The C# 11 <code>required</code> keyword also acts like a <code>RequiredAttribute</code></li><li>If C# nullable reference types are enabled, non-nullable reference types are required required.</li><li>Non-nullable value types are implicitly optional, with the exception of non-nullable foreign keys, which are required.</li></ul><p>To disable this functionality for your entire application, disable the corresponding configuration options on <code>CoalesceOptions</code>. For example, in Startup.cs or Program.cs:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#9CDCFE;">services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>(</span><span style="color:#9CDCFE;">b</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">b</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Configure</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">o</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#6A9955;"> // Set either to false to disable:</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ValidateAttributesForSaves</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ValidateAttributesForMethods</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;">}));</span></span></code></pre></div><p>Each option also has a more granular override:</p><p>Enabling <code>ValidateAttributesForSaves</code> causes the <a href="/Coalesce/modeling/model-components/behaviors.html#standard-behaviors">Standard Behaviors</a> to perform validation of validation attributes during <code>/save</code> or <code>/bulkSave</code> calls, preventing a save when validation fails. This can be overridden per type or even per request by setting the <code>ValidateAttributesForSaves</code> property on a <a href="/Coalesce/modeling/model-components/behaviors.html#defining-behaviors">custom Behaviors</a> instance.</p><p>Enabling <a href="/Coalesce/modeling/model-components/attributes/execute.html#member-validateattributes"><code>ValidateAttributesForMethods</code></a> causes the generated controllers for <a href="/Coalesce/modeling/model-components/methods.html">custom methods</a> to perform validation of incoming parameters. Validation attributes may be placed on method parameters, and validation will also be performed against the members of any complex type parameters. This can be overridden per method by setting the <code>ValidateAttributes</code> property on <a href="/Coalesce/modeling/model-components/attributes/execute.html">ExecuteAttribute</a> for the method.</p><h3 id="saves-and-deletes" tabindex="-1">Saves and Deletes <a class="header-anchor" href="#saves-and-deletes" aria-label="Permalink to "Saves and Deletes"">​</a></h3><p>Validation of <code>/save</code>, <code>/bulkSave</code>, and <code>/delete</code> actions against <a href="/Coalesce/modeling/model-types/entities.html">Entities</a> and <a href="/Coalesce/modeling/model-types/dtos.html">Custom DTOs</a> are performed by the <a href="/Coalesce/modeling/model-components/behaviors.html">Behaviors</a> for the type. Automatic <a href="#attribute-validation">attribute based validation</a> can be used (saves only), or Behaviors can be overridden to perform validation and other customization of the save and delete process, as in the following example:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> int</span><span style="color:#9CDCFE;"> IsCeo</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Behaviors</span><span style="color:#D4D4D4;"> : </span><span style="color:#4EC9B0;">StandardBehaviors</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#DCDCAA;"> Behaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">CrudContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) : </span><span style="color:#569CD6;">base</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">context</span><span style="color:#D4D4D4;">) { }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> ItemResult</span><span style="color:#DCDCAA;"> BeforeSave</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">SaveKind</span><span style="color:#9CDCFE;"> kind</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#D4D4D4;">? </span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">Employee</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#6A9955;"> // \`oldItem\` is a shallow copy of entity from the database,</span></span> +<span class="line"><span style="color:#6A9955;"> // and \`item\` is the tracked entity with incoming user data applied to it.</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Salary</span><span style="color:#D4D4D4;"> > </span><span style="color:#B5CEA8;">1_000_000m</span><span style="color:#D4D4D4;"> && !</span><span style="color:#9CDCFE;">oldItem</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">IsCeo</span><span style="color:#D4D4D4;">) </span><span style="color:#C586C0;">return</span><span style="color:#CE9178;"> "Salary is too high."</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> override</span><span style="color:#4EC9B0;"> ItemResult</span><span style="color:#DCDCAA;"> BeforeDelete</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Case</span><span style="color:#9CDCFE;"> item</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">item</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">IsCeo</span><span style="color:#D4D4D4;">) </span><span style="color:#C586C0;">return</span><span style="color:#CE9178;"> "The CEO cannot be fired."</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h3 id="custom-methods-and-services" tabindex="-1">Custom Methods and Services <a class="header-anchor" href="#custom-methods-and-services" aria-label="Permalink to "Custom Methods and Services"">​</a></h3><p>For <a href="/Coalesce/modeling/model-components/methods.html">Custom Methods</a> and <a href="/Coalesce/modeling/model-types/services.html">Services</a>, you can perform your own custom validation and return errors when validation fails. You can also use <a href="#attribute-validation">attribute based validation</a>. Custom methods that need to return errors to the client are recommended to wrap their return type in an <code>ItemResult<T></code>, allowing errors to be received and handled elegantly by your Coalesce Typescript code.</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> Employee</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> decimal</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">get</span><span style="color:#D4D4D4;">; </span><span style="color:#569CD6;">set</span><span style="color:#D4D4D4;">; }</span></span> +<span class="line"></span> +<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">]</span></span> +<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#4EC9B0;"> ItemResult</span><span style="color:#D4D4D4;"><</span><span style="color:#569CD6;">decimal</span><span style="color:#D4D4D4;">> </span><span style="color:#DCDCAA;">GiveRaise</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">decimal</span><span style="color:#9CDCFE;"> raiseAmount</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">raiseAmount</span><span style="color:#D4D4D4;"> > </span><span style="color:#B5CEA8;">3.5m</span><span style="color:#D4D4D4;">) </span><span style="color:#C586C0;">return</span><span style="color:#CE9178;"> "Raises must be less than $3.50."</span></span> +<span class="line"><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;"> += </span><span style="color:#9CDCFE;">raiseAmount</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> Salary</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><h2 id="security-overview-page" tabindex="-1">Security Overview Page <a class="header-anchor" href="#security-overview-page" aria-label="Permalink to "Security Overview Page"">​</a></h2><p>Coalesce provides batteries-included page that you can view to review the effective security rules in place for all the Coalesce-generated code in your project. Add this page to your application by mapping it as a route, either directly on <code>WebHost</code> in .NET 6+, or in <code>UseEndpoints</code> for 3.1+.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you include the security overview in your production app, you should secure it with an authorization policy like in the example below. Alternatively, only map the endpoint in non-production environments.</p></div><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#6A9955;">// .NET 6+ Program.cs:</span></span> +<span class="line"><span style="color:#9CDCFE;">app</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">MapCoalesceSecurityOverview</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"coalesce-security"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">RequireAuthorization</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> AuthorizeAttribute</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">env</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsDevelopment</span><span style="color:#D4D4D4;">() ? </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;"> : </span><span style="color:#CE9178;">"Admin"</span><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">);</span></span> +<span class="line"></span> +<span class="line"><span style="color:#6A9955;">// .NET Core 3.1+ Startup.cs:</span></span> +<span class="line"><span style="color:#9CDCFE;">app</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">UseEndpoints</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">endpoints</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> endpoints</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">MapCoalesceSecurityOverview</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"coalesce-security"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">RequireAuthorization</span><span style="color:#D4D4D4;">(</span></span> +<span class="line"><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> AuthorizeAttribute</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">Roles</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">env</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">IsDevelopment</span><span style="color:#D4D4D4;">() ? </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;"> : </span><span style="color:#CE9178;">"Admin"</span><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;"> );</span></span> +<span class="line"><span style="color:#D4D4D4;">});</span></span></code></pre></div><p>Example of the contents of the security overview page: <img src="`+o+'" alt=""></p><h2 id="testing-your-security" tabindex="-1">Testing Your Security <a class="header-anchor" href="#testing-your-security" aria-label="Permalink to "Testing Your Security"">​</a></h2><p>If your application has complex security requirements and/or sensitive data that needs to be protected, you are encouraged to invest time into creating a set of automated tests to ensure that it is working how you expect.</p><p>The most comprehensive way to do this is to build a suite of integration tests using <a href="https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests" target="_blank" rel="noreferrer">Microsoft's in-memory test server infrastructure</a>. Follow Microsoft's documentation to set up a test project, and then write tests against your API endpoints. You will want to <a href="https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests#customize-webapplicationfactory" target="_blank" rel="noreferrer">substitute your Entity Framework database provider</a> with an in-memory Sqlite instance, and add a <a href="https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests#mock-authentication" target="_blank" rel="noreferrer">mock authentication handler</a> to simulate authentication (we're mainly focused on testing <em>authorization</em>, not <em>authentication</em>).</p>',108),p=[t];function r(c,D,i,y,d,C){return e(),a("div",null,p)}const m=s(l,[["render",r]]);export{h as __pageData,m as default}; diff --git a/assets/topics_security.md.De1aPS0R.lean.js b/assets/topics_security.md.De1aPS0R.lean.js new file mode 100644 index 000000000..a6ab17998 --- /dev/null +++ b/assets/topics_security.md.De1aPS0R.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as e,a7 as n}from"./chunks/framework.BkavzUpE.js";const o="/Coalesce/assets/security-overview.DKJVSAfO.jpg",h=JSON.parse('{"title":"Security","description":"","frontmatter":{},"headers":[],"relativePath":"topics/security.md","filePath":"topics/security.md"}'),l={name:"topics/security.md"},t=n("",108),p=[t];function r(c,D,i,y,d,C){return e(),a("div",null,p)}const m=s(l,[["render",r]]);export{h as __pageData,m as default}; diff --git a/assets/topics_startup.md.BqEryyXw.js b/assets/topics_startup.md.BqEryyXw.js new file mode 100644 index 000000000..226f93726 --- /dev/null +++ b/assets/topics_startup.md.BqEryyXw.js @@ -0,0 +1,28 @@ +import{_ as o,c as l,I as n,a7 as p,l as s,a as e,D as t,o as r}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"Config: ASP.NET Core","description":"","frontmatter":{"title":"Config: ASP.NET Core"},"headers":[],"relativePath":"topics/startup.md","filePath":"topics/startup.md"}'),c={name:"topics/startup.md"},D=p(`<h1 id="application-configuration" tabindex="-1">Application Configuration <a class="header-anchor" href="#application-configuration" aria-label="Permalink to "Application Configuration"">​</a></h1><p>In order for Coalesce to work in your application, you must register the needed services in your <code>Startup.cs</code> or <code>Program.cs</code>. Doing so is simple:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> ConfigureServices</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IServiceCollection</span><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>();</span></span> +<span class="line"><span style="color:#D4D4D4;"> ...</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>This registers all the basic services that Coalesce needs in order to work with your EF DbContext. However, there are many more options available. Here's a more complete invocation of <code>AddCoalesce</code> that takes advantage of many of the options available:</p><div class="language-c#"><button title="Copy Code" class="copy"></button><span class="lang">c#</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> void</span><span style="color:#DCDCAA;"> ConfigureServices</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">IServiceCollection</span><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> services</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">AddCoalesce</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">builder</span><span style="color:#D4D4D4;"> => </span><span style="color:#9CDCFE;">builder</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">AddContext</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">AppDbContext</span><span style="color:#D4D4D4;">>()</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">UseDefaultDataSource</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyDataSource</span><span style="color:#D4D4D4;"><,>))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">UseDefaultBehaviors</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">typeof</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">MyBehaviors</span><span style="color:#D4D4D4;"><,>))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">UseTimeZone</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">TimeZoneInfo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">FindSystemTimeZoneById</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Pacific Standard Time"</span><span style="color:#D4D4D4;">))</span></span> +<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">Configure</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">o</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ValidateAttributesForMethods</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// note: true is the default</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ValidateAttributesForSaves</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// note: true is the default</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DetailedExceptionMessages</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#9CDCFE;"> o</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ExceptionResponseFactory</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">ctx</span><span style="color:#D4D4D4;"> =></span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">ctx</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Exception</span><span style="color:#569CD6;"> is</span><span style="color:#4EC9B0;"> FileNotFoundException</span><span style="color:#D4D4D4;">)</span></span> +<span class="line"><span style="color:#D4D4D4;"> {</span></span> +<span class="line"><span style="color:#9CDCFE;"> ctx</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">HttpContext</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Response</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">StatusCode</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">404</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">// Optional - set a specific response code.</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> new</span><span style="color:#4EC9B0;"> IntelliTect</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Coalesce</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Models</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">ApiResult</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"File not found"</span><span style="color:#D4D4D4;">);</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> null</span><span style="color:#D4D4D4;">;</span></span> +<span class="line"><span style="color:#D4D4D4;"> };</span></span> +<span class="line"><span style="color:#D4D4D4;"> });</span></span> +<span class="line"><span style="color:#D4D4D4;"> );</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><p>Available builder methods include:</p>`,6),i=s("p",null,[e("Register services needed by Coalesce to use the specified context. This is done automatically when calling the "),s("code",null,"services.AddCoalesce<AppDbContext>();"),e(" overload.")],-1),y=s("p",null,[e("Overrides the default data source used, replacing the "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-data-source"},"Standard Data Source"),e(". See "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Sources"),e(" for more details.")],-1),d=s("p",null,[e("Overrides the default behaviors used, replacing the "),s("a",{href:"/Coalesce/modeling/model-components/behaviors.html#standard-behaviors"},"Standard Behaviors"),e(". See "),s("a",{href:"/Coalesce/modeling/model-components/behaviors.html"},"Behaviors"),e(" for more details.")],-1),C=s("p",null,"Specify a static time zone that should be used when Coalesce is performing operations on dates/times that lack timezone information. For example, when a user inputs a search term that contains only a date, Coalesce needs to know what timezone's midnight to use when performing the search.",-1),u=s("p",null,"Specify a service implementation to use to resolve the current timezone. This should be a scoped service, and will be automatically registered if it is not already. This allows retrieving timezone information on a per-request basis from HTTP headers, Cookies, or any other source.",-1),h=s("p",null,"Configure additional options for Coalesce runtime behavior. Current options include options for server-side validation, and options for exception handling. See individual members for details.",-1);function m(f,v,A,E,g,b){const a=t("Prop");return r(),l("div",null,[D,n(a,{def:"public Builder AddContext<TDbContext>()"}),i,n(a,{def:"public Builder UseDefaultDataSource(Type dataSource)"}),y,n(a,{def:"public Builder UseDefaultBehaviors(Type behaviors)"}),d,n(a,{def:"public Builder UseTimeZone(TimeZoneInfo timeZone)"}),C,n(a,{def:"public Builder UseTimeZone<ITimeZoneResolver>()"}),u,n(a,{def:"public Builder Configure(Action<CoalesceOptions> setupAction)"}),h])}const S=o(c,[["render",m]]);export{F as __pageData,S as default}; diff --git a/assets/topics_startup.md.BqEryyXw.lean.js b/assets/topics_startup.md.BqEryyXw.lean.js new file mode 100644 index 000000000..407fe66e6 --- /dev/null +++ b/assets/topics_startup.md.BqEryyXw.lean.js @@ -0,0 +1 @@ +import{_ as o,c as l,I as n,a7 as p,l as s,a as e,D as t,o as r}from"./chunks/framework.BkavzUpE.js";const F=JSON.parse('{"title":"Config: ASP.NET Core","description":"","frontmatter":{"title":"Config: ASP.NET Core"},"headers":[],"relativePath":"topics/startup.md","filePath":"topics/startup.md"}'),c={name:"topics/startup.md"},D=p("",6),i=s("p",null,[e("Register services needed by Coalesce to use the specified context. This is done automatically when calling the "),s("code",null,"services.AddCoalesce<AppDbContext>();"),e(" overload.")],-1),y=s("p",null,[e("Overrides the default data source used, replacing the "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html#standard-data-source"},"Standard Data Source"),e(". See "),s("a",{href:"/Coalesce/modeling/model-components/data-sources.html"},"Data Sources"),e(" for more details.")],-1),d=s("p",null,[e("Overrides the default behaviors used, replacing the "),s("a",{href:"/Coalesce/modeling/model-components/behaviors.html#standard-behaviors"},"Standard Behaviors"),e(". See "),s("a",{href:"/Coalesce/modeling/model-components/behaviors.html"},"Behaviors"),e(" for more details.")],-1),C=s("p",null,"Specify a static time zone that should be used when Coalesce is performing operations on dates/times that lack timezone information. For example, when a user inputs a search term that contains only a date, Coalesce needs to know what timezone's midnight to use when performing the search.",-1),u=s("p",null,"Specify a service implementation to use to resolve the current timezone. This should be a scoped service, and will be automatically registered if it is not already. This allows retrieving timezone information on a per-request basis from HTTP headers, Cookies, or any other source.",-1),h=s("p",null,"Configure additional options for Coalesce runtime behavior. Current options include options for server-side validation, and options for exception handling. See individual members for details.",-1);function m(f,v,A,E,g,b){const a=t("Prop");return r(),l("div",null,[D,n(a,{def:"public Builder AddContext<TDbContext>()"}),i,n(a,{def:"public Builder UseDefaultDataSource(Type dataSource)"}),y,n(a,{def:"public Builder UseDefaultBehaviors(Type behaviors)"}),d,n(a,{def:"public Builder UseTimeZone(TimeZoneInfo timeZone)"}),C,n(a,{def:"public Builder UseTimeZone<ITimeZoneResolver>()"}),u,n(a,{def:"public Builder Configure(Action<CoalesceOptions> setupAction)"}),h])}const S=o(c,[["render",m]]);export{F as __pageData,S as default}; diff --git a/assets/topics_upgrading.md.CIvStOB4.js b/assets/topics_upgrading.md.CIvStOB4.js new file mode 100644 index 000000000..58a61c53c --- /dev/null +++ b/assets/topics_upgrading.md.CIvStOB4.js @@ -0,0 +1,10 @@ +import{_ as e,c as s,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Upgrading Coalesce","description":"","frontmatter":{},"headers":[],"relativePath":"topics/upgrading.md","filePath":"topics/upgrading.md"}'),n={name:"topics/upgrading.md"},t=a(`<h1 id="upgrading-coalesce" tabindex="-1">Upgrading Coalesce <a class="header-anchor" href="#upgrading-coalesce" aria-label="Permalink to "Upgrading Coalesce"">​</a></h1><p>Upgrading your project's version of Coalesce is a relatively straightforward process, but the process does involve a few different steps.</p><h2 id="decide-new-version" tabindex="-1">Decide new version <a class="header-anchor" href="#decide-new-version" aria-label="Permalink to "Decide new version"">​</a></h2><p>The first step, which you may have already done, is decide which version you're upgrading to. Coalesce projects generally favor the use of CI builds which are released as soon as new features are developed, rather than formal release versions that come out at a much slower cadence.</p><p>The latest version of Coalesce can be viewed <a href="https://www.npmjs.com/package/coalesce-vue?activeTab=versions" target="_blank" rel="noreferrer">on npm</a> or <a href="https://www.nuget.org/packages/IntelliTect.Coalesce#versions-body-tab" target="_blank" rel="noreferrer">on NuGet</a>.</p><p>You should always use the same version for both NPM and NuGet dependencies. Having mismatched versions in a single project can introduce errors or subtle bugs.</p><h2 id="npm-upgrades" tabindex="-1">NPM upgrades <a class="header-anchor" href="#npm-upgrades" aria-label="Permalink to "NPM upgrades"">​</a></h2><p>Next, upgrade the NPM dependencies in your web project.</p><ol><li>Open <code>package.json</code> in your web project and replace the versions of <code>coalesce-vue</code> and <code>coalesce-vue-vuetify3</code> with the new version number.</li></ol><div class="language-json"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#D4D4D4;">{</span></span> +<span class="line"><span style="color:#9CDCFE;"> "dependencies"</span><span style="color:#D4D4D4;">: {</span></span> +<span class="line"><span style="color:#9CDCFE;"> "coalesce-vue"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"5.0.0-ci.20XX0806.2"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#9CDCFE;"> "coalesce-vue-vuetify3"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"5.0.0-ci.20XX0806.2"</span><span style="color:#D4D4D4;">,</span></span> +<span class="line"><span style="color:#D4D4D4;"> }</span></span> +<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre></div><ol start="2"><li>Save the changes to <code>package.json</code>.</li><li>Run <code>npm i</code> in your web project to install the new versions.</li></ol><h2 id="nuget-upgrades" tabindex="-1">NuGet upgrades <a class="header-anchor" href="#nuget-upgrades" aria-label="Permalink to "NuGet upgrades"">​</a></h2><p>Coalesce projects have a single variable, <code>CoalesceVersion</code>, to control all Coalesce NuGet package dependencies, declared in <code>Directory.Build.props</code>. This file is in the root of the solution, next to the <code>.sln</code> file; it is also included in the "Solution Items" folder in Visual Studio's Solution Explorer.</p><p>To upgrade the NuGet packages:</p><ol><li>Update the value of <code>CoalesceVersion</code> with the new version number.</li></ol><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki dark-plus vp-code"><code><span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">Project</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">PropertyGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">CoalesceVersion</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">5.0.0-ci.20XX0806.2</span><span style="color:#808080;"></</span><span style="color:#569CD6;">CoalesceVersion</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"> </</span><span style="color:#569CD6;">PropertyGroup</span><span style="color:#808080;">></span></span> +<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">Project</span><span style="color:#808080;">></span></span></code></pre></div><ol start="2"><li>Save the changes.</li><li>Run <code>dotnet restore</code> in the solution root or in the web project. Then, run code generation with <code>dotnet coalesce</code> or <code>npm run coalesce</code> in the web project.</li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The above information describes the default project configuration that originates from the Coalesce project template. If your project has diverged from this configuration, consult with your project team members, or just explore/search the files in your project.</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>It is not recommended to use the Visual Studio NuGet Package Manager to manage Coalesce versions because it will erase usages of the central <code>CoalesceVersion</code> variable, which can lead to version mismatches within your solution. It also fails to maintain the version of the <code>DotNetCliToolReference</code>, which provides Coalesce's code generator.</p></div>`,19),l=[t];function r(c,p,i,d,u,h){return o(),s("div",null,l)}const v=e(n,[["render",r]]);export{y as __pageData,v as default}; diff --git a/assets/topics_upgrading.md.CIvStOB4.lean.js b/assets/topics_upgrading.md.CIvStOB4.lean.js new file mode 100644 index 000000000..12b8e21e4 --- /dev/null +++ b/assets/topics_upgrading.md.CIvStOB4.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,o,a7 as a}from"./chunks/framework.BkavzUpE.js";const y=JSON.parse('{"title":"Upgrading Coalesce","description":"","frontmatter":{},"headers":[],"relativePath":"topics/upgrading.md","filePath":"topics/upgrading.md"}'),n={name:"topics/upgrading.md"},t=a("",19),l=[t];function r(c,p,i,d,u,h){return o(),s("div",null,l)}const v=e(n,[["render",r]]);export{y as __pageData,v as default}; diff --git a/coalesce-horizontal-color.svg b/coalesce-horizontal-color.svg new file mode 100644 index 000000000..fb32d410d --- /dev/null +++ b/coalesce-horizontal-color.svg @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 496.32 135.76" style="enable-background:new 0 0 496.32 135.76;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#003F72;} + .st1{fill:#0076B5;} + .st2{fill:#F3681C;} + .st3{fill:#009AE2;} +</style> +<g> + <g> + <path class="st0" d="M179.62,79.16c-0.51,7.06-3.12,12.62-7.82,16.68c-4.7,4.06-10.9,6.08-18.6,6.08c-8.42,0-15.03-2.83-19.86-8.5 + c-4.82-5.66-7.23-13.44-7.23-23.33v-4.01c0-6.31,1.11-11.87,3.34-16.68c2.22-4.81,5.4-8.5,9.53-11.07 + c4.13-2.57,8.93-3.85,14.4-3.85c7.57,0,13.67,2.03,18.3,6.09c4.63,4.06,7.3,9.75,8.02,17.09h-13.53 + c-0.33-4.24-1.51-7.31-3.54-9.22c-2.03-1.91-5.12-2.86-9.26-2.86c-4.51,0-7.88,1.61-10.12,4.85c-2.24,3.23-3.39,8.24-3.45,15.03 + v4.96c0,7.09,1.07,12.28,3.22,15.55c2.15,3.28,5.54,4.91,10.16,4.91c4.18,0,7.3-0.95,9.36-2.86c2.06-1.91,3.24-4.86,3.54-8.86 + H179.62z"/> + <path class="st0" d="M185.62,76.19c0-4.84,0.93-9.15,2.8-12.94c1.86-3.79,4.55-6.72,8.05-8.79c3.5-2.07,7.56-3.11,12.19-3.11 + c6.58,0,11.95,2.01,16.12,6.04c4.16,4.03,6.48,9.5,6.96,16.41l0.09,3.34c0,7.48-2.09,13.49-6.27,18.01 + c-4.18,4.52-9.78,6.78-16.81,6.78c-7.03,0-12.64-2.25-16.84-6.76c-4.19-4.51-6.29-10.64-6.29-18.39V76.19z M198.65,77.11 + c0,4.64,0.87,8.18,2.62,10.63c1.74,2.45,4.24,3.68,7.48,3.68c3.16,0,5.62-1.21,7.4-3.64c1.77-2.42,2.66-6.3,2.66-11.62 + c0-4.54-0.89-8.07-2.66-10.56c-1.78-2.5-4.27-3.75-7.48-3.75c-3.19,0-5.65,1.24-7.39,3.73C199.52,68.06,198.65,71.91,198.65,77.11 + z"/> + <path class="st0" d="M266.27,101.03c-0.6-1.17-1.04-2.63-1.3-4.37c-3.16,3.51-7.26,5.27-12.31,5.27c-4.78,0-8.74-1.38-11.88-4.15 + c-3.14-2.77-4.71-6.25-4.71-10.46c0-5.17,1.91-9.13,5.75-11.9c3.83-2.77,9.37-4.16,16.61-4.19h5.99v-2.8 + c0-2.26-0.58-4.06-1.74-5.41c-1.16-1.35-2.98-2.03-5.47-2.03c-2.2,0-3.92,0.53-5.16,1.58c-1.25,1.05-1.87,2.5-1.87,4.33h-13.03 + c0-2.82,0.87-5.44,2.62-7.85c1.74-2.4,4.21-4.29,7.39-5.66c3.19-1.37,6.76-2.05,10.73-2.05c6.01,0,10.78,1.51,14.31,4.53 + c3.53,3.02,5.3,7.27,5.3,12.73v21.14c0.03,4.63,0.68,8.13,1.94,10.51v0.77H266.27z M255.5,91.97c1.92,0,3.7-0.43,5.32-1.28 + s2.82-2.01,3.61-3.45v-8.39h-4.87c-6.52,0-9.99,2.26-10.41,6.76l-0.05,0.77c0,1.62,0.57,2.96,1.72,4.01 + C251.95,91.44,253.51,91.97,255.5,91.97z"/> + <path class="st0" d="M299.4,101.03h-13.07V31.78h13.07V101.03z"/> + <path class="st0" d="M330.74,101.93c-7.15,0-12.98-2.19-17.47-6.58c-4.49-4.39-6.74-10.23-6.74-17.54v-1.26 + c0-4.9,0.95-9.28,2.84-13.14c1.89-3.86,4.57-6.84,8.04-8.93s7.43-3.13,11.88-3.13c6.67,0,11.92,2.1,15.75,6.31 + c3.83,4.21,5.75,10.17,5.75,17.89v5.32h-31.06c0.42,3.19,1.69,5.74,3.81,7.66c2.12,1.92,4.8,2.88,8.05,2.88 + c5.02,0,8.94-1.82,11.77-5.45l6.4,7.17c-1.95,2.77-4.6,4.92-7.94,6.47S334.79,101.93,330.74,101.93z M329.25,61.85 + c-2.58,0-4.68,0.88-6.29,2.63c-1.61,1.75-2.64,4.26-3.09,7.52h18.12v-1.04c-0.06-2.9-0.84-5.14-2.34-6.72 + C334.14,62.65,332.01,61.85,329.25,61.85z"/> + <path class="st0" d="M384.61,87.55c0-1.59-0.79-2.85-2.36-3.76c-1.58-0.92-4.11-1.74-7.6-2.46c-11.6-2.43-17.4-7.37-17.4-14.79 + c0-4.33,1.8-7.94,5.39-10.84c3.59-2.9,8.29-4.35,14.09-4.35c6.19,0,11.14,1.46,14.85,4.37c3.71,2.91,5.57,6.7,5.57,11.36h-13.03 + c0-1.86-0.6-3.4-1.8-4.62c-1.2-1.22-3.08-1.82-5.63-1.82c-2.2,0-3.89,0.5-5.09,1.49c-1.2,0.99-1.8,2.26-1.8,3.79 + c0,1.44,0.68,2.61,2.05,3.49c1.37,0.89,3.68,1.66,6.92,2.3c3.25,0.65,5.98,1.37,8.2,2.19c6.88,2.52,10.32,6.9,10.32,13.12 + c0,4.45-1.91,8.04-5.72,10.8c-3.82,2.75-8.75,4.12-14.79,4.12c-4.09,0-7.72-0.73-10.89-2.19c-3.17-1.46-5.66-3.45-7.46-5.99 + c-1.8-2.54-2.71-5.28-2.71-8.23h12.35c0.12,2.31,0.98,4.09,2.57,5.32s3.73,1.85,6.4,1.85c2.49,0,4.38-0.47,5.66-1.42 + C383.97,90.32,384.61,89.08,384.61,87.55z"/> + <path class="st0" d="M425.95,91.43c2.4,0,4.36-0.66,5.86-1.98c1.5-1.32,2.28-3.08,2.34-5.28h12.21c-0.03,3.31-0.93,6.34-2.7,9.08 + c-1.78,2.75-4.2,4.88-7.28,6.4c-3.08,1.52-6.48,2.28-10.21,2.28c-6.97,0-12.47-2.22-16.5-6.65c-4.03-4.43-6.04-10.56-6.04-18.37 + v-0.86c0-7.51,2-13.51,6-17.99s9.48-6.72,16.45-6.72c6.1,0,10.99,1.74,14.67,5.21c3.68,3.47,5.55,8.09,5.61,13.86h-12.21 + c-0.06-2.54-0.84-4.6-2.34-6.19c-1.5-1.59-3.49-2.38-5.95-2.38c-3.04,0-5.33,1.11-6.88,3.32c-1.55,2.21-2.32,5.8-2.32,10.77v1.35 + c0,5.03,0.77,8.64,2.3,10.84C420.49,90.33,422.82,91.43,425.95,91.43z"/> + <path class="st0" d="M476.26,101.93c-7.15,0-12.98-2.19-17.47-6.58c-4.49-4.39-6.74-10.23-6.74-17.54v-1.26 + c0-4.9,0.95-9.28,2.84-13.14c1.89-3.86,4.57-6.84,8.04-8.93s7.43-3.13,11.88-3.13c6.67,0,11.92,2.1,15.75,6.31 + c3.83,4.21,5.75,10.17,5.75,17.89v5.32h-31.06c0.42,3.19,1.69,5.74,3.81,7.66c2.12,1.92,4.8,2.88,8.05,2.88 + c5.02,0,8.94-1.82,11.77-5.45l6.4,7.17c-1.95,2.77-4.6,4.92-7.94,6.47S480.31,101.93,476.26,101.93z M474.77,61.85 + c-2.58,0-4.68,0.88-6.29,2.63c-1.61,1.75-2.64,4.26-3.09,7.52h18.12v-1.04c-0.06-2.9-0.84-5.14-2.34-6.72 + C479.66,62.65,477.53,61.85,474.77,61.85z"/> + </g> + <g> + <g> + <path class="st1" d="M116.4,100.35L116.4,100.35L116.4,100.35c-4.08,6.06-9.28,11.34-15.41,15.56 + c-9.81,6.75-21.32,10.32-33.28,10.32c-32.08,0-58.18-26.18-58.18-58.35c0-32.18,26.1-58.35,58.18-58.35 + c11.97,0,23.48,3.57,33.28,10.32c6.26,4.31,11.55,9.72,15.66,15.95l8.97-3.68C120.72,24.21,114.2,17.37,106.4,12 + C95,4.15,81.62,0,67.71,0C49.56,0,32.53,7.07,19.76,19.91C7.02,32.72,0,49.75,0,67.88s7.02,35.16,19.76,47.97 + c12.77,12.84,29.8,19.91,47.95,19.91c13.91,0,27.28-4.15,38.69-12c7.67-5.28,14.1-11.98,18.98-19.72L116.4,100.35z"/> + </g> + <g> + <path class="st2" d="M130.91,42.85"/> + </g> + <g> + <path class="st3" d="M87.93,88.67c-5.22,4.93-12.15,7.74-19.54,7.74c-15.74,0-28.54-12.8-28.54-28.54 + c0-15.74,12.8-28.54,28.54-28.54c7.57,0,14.65,2.95,19.92,8.1l21.24-8.71c-3.39-4.79-7.61-8.97-12.51-12.36 + c-8.44-5.83-18.34-8.92-28.64-8.92c-27.81,0-50.43,22.62-50.43,50.43s22.62,50.43,50.43,50.43c10.3,0,20.2-3.08,28.64-8.92 + c4.77-3.3,8.89-7.34,12.23-11.96L87.93,88.67z"/> + </g> + <g> + <path class="st1" d="M87.93,88.67c-5.22,4.93-12.15,7.74-19.54,7.74c-15.74,0-28.54-12.8-28.54-28.54 + c0-6.28,2.04-12.1,5.49-16.82L27.2,38.79c-5.82,8.22-9.25,18.26-9.25,29.08c0,27.81,22.62,50.43,50.43,50.43 + c10.3,0,20.2-3.08,28.64-8.92c4.77-3.3,8.89-7.34,12.23-11.96L87.93,88.67z"/> + </g> + <g> + <path class="st3" d="M116.66,35.8l8.97-3.68C120.72,24.21,114.2,17.37,106.4,12C95,4.15,81.62,0,67.71,0 + C49.56,0,32.53,7.07,19.76,19.91c-2.83,2.85-5.39,5.91-7.64,9.14l7.98,5.33C30.63,19.36,48.05,9.53,67.71,9.53 + c11.97,0,23.48,3.57,33.28,10.32C107.26,24.16,112.55,29.57,116.66,35.8z"/> + </g> + <g> + <path class="st0" d="M116.4,100.35c-4.08,6.06-9.28,11.34-15.41,15.56c-9.81,6.75-21.32,10.32-33.28,10.32 + c-6.66,0-13.05-1.13-19.02-3.2l-2.61,9.22c6.87,2.31,14.16,3.5,21.63,3.5c13.91,0,27.28-4.15,38.69-12 + c7.67-5.28,14.1-11.98,18.98-19.72L116.4,100.35z"/> + </g> + <g> + <path class="st0" d="M87.93,88.67c-5.22,4.93-12.15,7.74-19.54,7.74c-3.72,0-7.28-0.72-10.55-2.02l-6.36,21 + c5.29,1.89,10.98,2.91,16.9,2.91c10.3,0,20.2-3.08,28.64-8.92c4.77-3.3,8.89-7.34,12.23-11.96L87.93,88.67z"/> + </g> + </g> +</g> +</svg> diff --git a/coalesce-icon-color.svg b/coalesce-icon-color.svg new file mode 100644 index 000000000..fdcfcb93b --- /dev/null +++ b/coalesce-icon-color.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 358.97 372.28" style="enable-background:new 0 0 358.97 372.28;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#0176B5;} + .st1{fill:#F26A21;} + .st2{fill:#2798D4;} + .st3{fill:#184171;} +</style> +<g> + <g> + <path class="st0" d="M319.2,275.19L319.2,275.19L319.2,275.19c-11.18,16.63-25.44,31.09-42.25,42.67 + c-26.89,18.52-58.45,28.3-91.27,28.3c-87.98,0-159.55-71.78-159.55-160.02c0-88.23,71.58-160.02,159.55-160.02 + c32.82,0,64.38,9.79,91.27,28.3c17.17,11.82,31.68,26.66,42.95,43.74l24.61-10.09c-13.48-21.69-31.35-40.44-52.74-55.17 + C260.5,11.38,223.81,0,185.68,0c-49.77,0-96.47,19.39-131.5,54.6C19.24,89.72,0,136.44,0,186.14s19.24,96.42,54.18,131.54 + c35.03,35.21,81.73,54.6,131.5,54.6c38.13,0,74.82-11.38,106.09-32.91c21.04-14.48,38.66-32.86,52.06-54.09L319.2,275.19z"/> + <path class="st1" d="M358.97,117.52"/> + <path class="st2" d="M241.11,243.16c-14.33,13.51-33.31,21.22-53.59,21.22c-43.16,0-78.27-35.11-78.27-78.27 + c0-43.16,35.11-78.27,78.27-78.27c20.77,0,40.18,8.09,54.62,22.22l58.24-23.88c-9.3-13.13-20.85-24.6-34.32-33.91 + c-23.15-16-50.31-24.46-78.54-24.46c-76.26,0-138.3,62.04-138.3,138.29s62.04,138.29,138.3,138.29c28.24,0,55.39-8.46,78.54-24.45 + c13.09-9.04,24.38-20.14,33.54-32.81L241.11,243.16z"/> + <path class="st0" d="M241.11,243.16c-14.33,13.51-33.31,21.22-53.59,21.22c-43.16,0-78.27-35.11-78.27-78.27 + c0-17.23,5.59-33.17,15.06-46.11l-49.72-33.64c-15.97,22.55-25.37,50.07-25.37,79.75c0,76.26,62.04,138.29,138.3,138.29 + c28.24,0,55.39-8.46,78.54-24.45c13.09-9.04,24.37-20.14,33.53-32.81L241.11,243.16z"/> + <path class="st2" d="M319.91,98.17l24.61-10.09c-13.48-21.69-31.35-40.44-52.74-55.17C260.5,11.38,223.81,0,185.68,0 + c-49.77,0-96.47,19.39-131.5,54.6c-7.77,7.81-14.77,16.2-20.95,25.07L55.1,94.28C84,53.09,131.76,26.12,185.68,26.12 + c32.82,0,64.38,9.79,91.27,28.3C294.12,66.25,308.63,81.09,319.91,98.17z"/> + <path class="st3" d="M319.2,275.19c-11.18,16.63-25.44,31.09-42.25,42.67c-26.89,18.52-58.45,28.3-91.27,28.3 + c-18.25,0-35.8-3.09-52.15-8.78l-7.16,25.29c18.85,6.32,38.82,9.61,59.31,9.61c38.13,0,74.82-11.38,106.09-32.91 + c21.04-14.48,38.66-32.86,52.06-54.09L319.2,275.19z"/> + <path class="st3" d="M241.11,243.16c-14.33,13.51-33.31,21.22-53.59,21.22c-10.21,0-19.97-1.97-28.92-5.54l-17.43,57.57 + c14.5,5.17,30.1,7.99,46.36,7.99c28.24,0,55.39-8.46,78.54-24.45c13.09-9.04,24.37-20.14,33.53-32.81L241.11,243.16z"/> + </g> +</g> +</svg> diff --git a/concepts/include-tree.html b/concepts/include-tree.html new file mode 100644 index 000000000..0fe608b0e --- /dev/null +++ b/concepts/include-tree.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Include Tree | Coalesce + + + + + + + + + + + + + + +
Skip to content

Include Tree

When Coalesce maps from the your POCO objects that are returned from EF Core queries, it will follow a structure called an IncludeTree to determine what relationships to follow and how deep to go in re-creating that structure in the mapped DTOs.

Purpose

Without an IncludeTree present, Coalesce will map the entire object graph that is reachable from the root object. This can often spiral out of control if there aren't any rules defining how far to go while turning this graph into a tree.

For example, suppose you had the following model with a many-to-many relationship (key properties omitted for brevity):

c#
public class Employee
+{
+    [ManyToMany("Projects")]
+    public ICollection<EmployeeProject> EmployeeProjects { get; set; }
+            
+    public static IQueryable<Employee> WithProjectsAndMembers(AppDbContext db, ClaimsPrincipal user)
+    {
+        // Load all projects of an employee, as well as all members of those projects.
+        return db.Employees
+            .Include(e => e.EmployeeProjects)
+                .ThenInclude(ep => ep.Project.EmployeeProjects)
+                .ThenInclude(ep => ep.Employee);
+    }
+}
+
+public class Project
+{
+    [ManyToMany("Employees")]
+    public ICollection<EmployeeProject> EmployeeProjects { get; set; }
+}
+
+public class EmployeeProject
+{
+    public Employee Employee { get; set; }
+    public Project Project { get; set; }
+}

Now, imagine that you have five employees and five projects, with every employee being a member of every project (i.e. there are 25 EmployeeProject rows).

Your client code makes a call to the Coalesce-generated API to load Employee #1 using the custom data source:

 
ts
import { Employee } from '@/viewmodels.g'
+import { EmployeeViewModel } from '@/viewmodels.g'
+
+var employee = new EmployeeViewModel();
+employee.$dataSource = new Employee.DataSources.WithProjectsAndMembers();
+employee.$load(1);

If you're already familiar with the fact that an IncludeTree is implicitly created in this scenario, then imagine for a moment that this is not the case (if you're not familiar with this fact, then keep reading!).

After Coalesce has called your Data Sources and evaluated the EF IQueryable returned, there are now 35 objects loaded into the current DbContext being used to handle this request - the 5 employees, 5 projects, and 25 relationships.

To map these objects to DTOs, we start with the root (employee #1) and expand outward from there until the entire object graph has been faithfully re-created with DTO objects, including all navigation properties.

The root DTO object (employee #1) then eventually is passed to the JSON serializer by ASP.NET Core to formulate the response to the request. As the object is serialized to JSON, the only objects that are not serialized are those that were already serialized as an ancestor of itself. What this ultimately means is that the structure of the serialized JSON with our example scenario ends up following a pattern like this (the vast majority of items have been omitted):

Employee#1
+    EmployeeProject#1
+        Project#1
+            EmployeeProject#6
+                Employee#2
+                    EmployeeProject#7
+                        Project#2
+                            ... continues down through all remaining employees and projects.
+                    ...
+            EmployeeProject#11
+                Employee#3
+            ...
+    EmployeeProject#2
+        Project#2
+    ...

See how the structure includes the EmployeeProjects of Employee#2? We didn't write our custom data source calls to .Include in such a way that indicated that we wanted the root employee, their projects, the employees of those projects, and then the projects of those employees. But, because the JSON serializer blindly follows the object graph, that's what gets serialized. It turns out that the depth of the tree increases on the order of O(n^2), and the total size increases on the order of Ω(n!).

This is where IncludeTree comes in. When you use a custom data source like we did above, Coalesce automatically captures the structure of the calls to .Include and .ThenInclude, and uses this to perform trimming during creation of the DTO objects.

With an IncludeTree in place, our new serialized structure looks like this:

Employee#1
+    EmployeeProject#1
+        Project#1
+            EmployeeProject#6
+                Employee#2
+            EmployeeProject#11
+                Employee#3
+            ...
+    EmployeeProject#2
+        Project#2
+    ...

No more extra data trailing off the end of the projects' employees!

Usage

Custom Data Sources

In most cases, you don't have to worry about creating an IncludeTree. When using the Standard Data Source (or a derivative), the structure of the .Include and .ThenInclude calls will be captured automatically and be turned into an IncludeTree. Projected queries are also supported, although very complex projections might not capture all paths - please open an issue if you find a scenario that doesn't work.

However, there are sometimes cases where you perform complex loading in these methods that involves loading data into the current DbContext outside of the IQueryable that is returned from the method. The most common situation for this is needing to conditionally load related data - for example, load all children of an object where the child has a certain value of a Status property.

In these cases, Coalesce provides a pair of extension methods, .IncludedSeparately and .ThenIncluded, that can be used to merge in the structure of the data that was loaded separately from the main IQueryable.

For example:

c#
public override IQueryable<Employee> GetQuery()
+{
+    // Load all projects that are complete, and their members, into the db context.
+    Db.Projects
+        .Include(p => p.EmployeeProjects).ThenInclude(ep => ep.Employee)
+        .Where(p => p.Status == ProjectStatus.Complete)
+        .Load();
+
+    // Return an employee query, and notify Coalesce that we loaded the projects in a different query.
+    return Db.Employees
+        .IncludedSeparately(e => e.EmployeeProjects)
+        .ThenIncluded(ep => ep.Project.EmployeeProjects)
+        .ThenIncluded(ep => ep.Employee);
+}

You can also override the GetIncludeTree method of the Standard Data Source to achieve the same result:

c#
public override IncludeTree GetIncludeTree(IQueryable<T> query, IDataSourceParameters parameters) => Db
+    .Employees
+    .IncludedSeparately(e => e.EmployeeProjects)
+    .ThenIncluded(ep => ep.Project.EmployeeProjects)
+    .ThenIncluded(ep => ep.Employee)
+    .GetIncludeTree();

Model Methods

If you have custom methods that return object data, you may also want to control the structure of the returned data when it is serialized. Fortunately, you can also use IncludeTree in these situations. Without an IncludeTree, the entire object graph is traversed and serialized without limit.

TIP

An IncludeTree can be obtained from any IQueryable by calling the GetIncludeTree extension method (using IntelliTect.Coalesce.Helpers.IncludeTree).

In situations where your root object isn't on your DbContext (see External Types), you can use Enumerable.Empty<MyNonDbClass>().AsQueryable() to get an IQueryable to start from. When you do this, you must use IncludedSeparately - the regular EF Include method won't work without a DbSet.

To return an IncludeTree from a custom method is to make that method return an ItemResult<T>, and then set the IncludeTree property of the ItemResult object. For example:

c#
public class Employee
+{
+    public async Task<ItemResult<ICollection<Employee>>> GetChainOfCommand(AppDbContext db)
+    {
+        IQueryable<Employee> query = db.Employees
+            .Include(e => e.Supervisor);
+
+        var ret = new List<Employee>();
+        var current = this;
+        while (current.Supervisor != null)
+        {
+            ret.Push(current);
+            current = await query.FirstOrDefaultAsync(e => e.EmployeeId == current.SupervisorId);
+        }
+
+        return new(ret, includeTree: query.GetIncludeTree());
+    }
+}

External Type Caveats

One important point remains regarding IncludeTree - it is not used to control the serialization of objects which are not mapped to the database, known as External Types. External Types are always put into the DTOs when encountered (unless otherwise prevented by [DtoIncludes] & [DtoExcludes] or Security Attributes), with the assumption that because these objects are created by you (as opposed to Entity Framework), you are responsible for preventing any undesired circular references.

By not filtering unmapped properties, you as the developer don't need to account for them in every place throughout your application where they appear - instead, they 'just work' and show up on the client as expected.

Note also that this statement does not apply to database-mapped objects that hang off of unmapped objects - any time a database-mapped object appears, it will be controlled by your include tree. If no include tree is present (because nothing was specified for the unmapped property), these mapped objects hanging off of unmapped objects will be serialized freely and with all circular references, unless you include some calls to .IncludedSeparately(m => m.MyUnmappedProperty.MyMappedProperty) to limit those objects down.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/concepts/includes.html b/concepts/includes.html new file mode 100644 index 000000000..25429b6db --- /dev/null +++ b/concepts/includes.html @@ -0,0 +1,61 @@ + + + + + + Includes String | Coalesce + + + + + + + + + + + + + + +
Skip to content

Includes String

Coalesce provides a number of extension points for loading & serialization which make use of a concept called an "includes string" (also referred to as "include string" or just "includes").

Includes String

The includes string is simply a string which can be set to any arbitrary value. It is passed from the client to the server in order to customize data loading and serialization. It can be set on both the TypeScript ViewModels and the ListViewModels.

 
ts
import { PersonViewModel, PersonListViewModel } from '@/viewmodels.g'
+
+var person = new PersonViewModel();
+person.$includes = "details";
+
+var personList = new PersonListViewModel();
+personList.$includes = "details";

The default value (i.e. no action) is the empty string.

Special Values

There are a few values of includes that are either set by default in the auto-generated views, or otherwise have special meaning:

ValueDescription
'none'Setting includes to none suppresses the Default Loading Behavior provided by the Standard Data Source - The resulting data will be the requested object (or list of objects) and nothing more.
'admin-list'Used when loading a list of objects in the Vue admin list page.
'admin-editor'Used when loading an object in the Vue admin editor component.
'Editor'Legacy. Used when loading an object in the generated Knockout CreateEdit views.
'<ModelName>ListGen'Legacy. Used when loading a list of objects in the generated Knockout Table and Cards views. For example, PersonListGen

DtoIncludes & DtoExcludes

Main document: [DtoIncludes] & [DtoExcludes].

There are two C# attributes, DtoIncludes and DtoExcludes, that can be used to annotate your data model in order to customize what data gets put into the DTOs and ultimately serialized to JSON and sent out to the client.

When the database entries are returned to the client they will be trimmed based on the requested includes string and the values in DtoExcludes and DtoIncludes.

DANGER

These attributes are not security attributes - consumers of your application's API can set the includes string to any value when making a request.

Do not use them to keep certain data private - use the Security Attributes family of attributes for that.

It is important to note that the value of the includes string will match against these attributes on any of your models that appears in the object graph being mapped to DTOs - it is not limited only to the model type of the root object.

Important

DtoIncludes does not ensure that specific data will be loaded from the database. It only permits what is already loaded into the current EF DbContext to be returned from the API. See Data Sources to learn how to control what data gets loaded from the database.

Example Usage

Server code:

c#
public class Person
+{
+    // Don't include CreatedBy when editing - will be included for all other views
+    [DtoExcludes("Editor")]
+    public AppUser CreatedBy { get; set; }
+
+    // Only include the Person's Department when `includes == "details"` on the TypeScript ViewModel.
+    [DtoIncludes("details")]
+    public Department Department { get; set; }
+
+    // LastName will be included in all views
+    public string LastName { get; set; }
+}
+
+public class Department
+{
+    [DtoIncludes("details")]
+    public ICollection<Person> People { get; set; }
+}

Client code:

 
ts
import { PersonListViewModel } from '@/viewmodels.g'
+
+const personList = new PersonListViewModel();
+personList.$includes = "Editor";
+await personList.$load();
+// Objects in personList.$items will not contain CreatedBy nor Department objects.
+
+const personList2 = new PersonListViewModel();
+personList2.$includes = "details";
+await personList.$load();
+// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. 
+// Department will be allowed to include its other Person objects.

Properties

// Also settable via constructor parameter #1
+public string ContentViews { get; set; }

A comma-delimited list of values of includes on which to operate.

For DtoIncludes, this will be the values of includes for which this property will be allowed to be serialized and sent to the client.

For DtoExcludes, this will be the values of includes for which this property will not be serialized and sent to the client.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/ef-logo.svg b/ef-logo.svg new file mode 100644 index 000000000..c6fa67bbc --- /dev/null +++ b/ef-logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..72230b4569a868a0d1e98d6622fb8747fb453056 GIT binary patch literal 15086 zcmdU$349gB9mn_O-_UA!VK%>HkNgvWmy>+!Q-Zu^$*gT66$>aSj!qmhPLFPh;=I{-T7r6 z3+nU#m+y}A<#!DPGiIE%VE;rB+n1MT55ZY)&`Id zUwU5cL6?p=ka3;=XwqA zQMYk{u14?>90b$u6~q_A<-lxr?Dy0iNijon0xbu3P3tkZOWJVS_8C|V%V7m9g%>zC ziafo!PU*vY1pKCaez!nl&fkpwQjZV2NxyYiZdKn+*>EA+5@7-y0;7FD@zHRKDf4!r zKWy*umV{aR}`-O=gqP@4G>q&gc8QMLNXzFA9X39@|FmtcU?3E8C zSJrG?qfh;PD7f2w2gf%0exnB+?#0w|iXdA}!DO87)LlAJ_|~-9IOOwJAfJC!qay(zcpBnuq4}Pq69F(X>W8 zx0AkANFPj+ogv*){$;YGLt+Aza(U+Q_`6cvMKq>K&=;vvv>JLp_z};`=bL`}$&**t!JVey4 zKJ?UY5^Zdl_N;SA9naI39NUcP*36^V61FUkaBo3Z0{k9Kd+s8BiSd&DehbH6yUv?@ zp-^M^wSloV^R;w;4?EyvC}Y0)jLF-??R8ez&x2G^7y*2s4>uau}oI(6$+0^t|Eq;cL#l!<;&R z{2A{1Lk;v#a%tL0yuHdS9v-K;^l{g@NIqyh&%oF0l@t9{?z3+D^xre_L*sI-cxSwraKX8(w>NEl zzpj&xBjv3w9s6Cu%!eAE*PAlL$3Zmh-=h7l#lz#Hwz;YAM1<%oaB195ytV8wU$!8= z&UG%FAG6;sjIHwgb|Q3!s}pVN-!Hf{E+XFGnEseci63yC^XmVUwvT#03}>@G)6kX- zD_j~UoB9_N#N6#l_iESi>?OqwPFlZ_PBfee?zwSbNdHiu=Fo7ul~zI9UuW{3tPmY~ zhWvL>=Mlmiq-9A_g8J1f!SrxGe2IQ-ah%j2`ZPc4UMr27dwNUIqTz9RURW4R52ycM z=+8K*;xUfCy6WHlKce5;f1J60aZ&vLOaJ+QAHNajPx?o7^XIIkBToAK8SVac8RH|` z{Yzu`q~5O58zX^lvsj zk=?&+_Bj#v++-u%k8(Z{?p$rs(5~m_4PfSZ_w#cH(zPBi=j?@re)}&EHnTTOZEa&; zd;xu-#?Q~>je*`U8M;8@+GzIXMW1*5(m{E6E@phhOf~wK7B{e0KYSXRvy65VevO95 zp$$ZBQ_i0Tqdr2O9W-Q>N>t+Bc|K2+L2d3#vw{11Mc)=cHfW}h8TedFM8Ei`yF)#ms) z>?F%J?UuD^Mpiyy`;F7vL>y!2*Z$RXu>Ux+p}ltU85NW%DV^TNS({Q{5=?^=?ZaGb zID2r|ZbJMekng%Cb4q8lIbD8*`=LE^`MBmAH%!YkZM7dCZZUZ&ulgoHZTf<#tGe(I z^*#fRcC|J0#8{5q?KKadoa1W3G4R1=17XcF+QFHDK;I_M$^jp_Y$*9$R0iBJ}JCVBF*Fkgi66))WkIo*Kd?76c zT0##P2I|L)V0n-wgwKQSTe|P2Luk*6x*AjG&7|qx;P!hr>9=vOuhTw(a~)=6sbB8( z)cYmJv#Glyd7S+gb4`N&=-Ec&q!G{#PP~c+jYaC{!}$f^y>?qT*Nb~*t=iqKLviLJ zKlP~1Hh{Zr6qjG~7%zRvb1uF#`S9^p5$(~A)YYa1c{@@@*GbpM-Op90=9@Rk^Fyze z<2k0jv#3|kIBI*ZA9^0x1uNlM`rR0~mooCJA6f^KuDm zXmRzC&tU=e+zGAdTPIw%*N?wWY30*=iv2G1ks|c`0rb44Yh&g>`K7Tby{q79^7n@e zXoutae#W-T{kCmcqC{bZWhE;t_iam1xUG}zQ@G6LAECb@p}fShjwUR#4t63;x2#K` z;xfxh=dOOR(6SO(O_rBimVYwgHoiZyEo-|8m-)+8?|Y+?E7F~?lP%ltW8EE&N0E+A z_=xY=aZN*0&V=6j-y7A*E^+DDjxImPMyJv3_%Z&!ei=WF-=-Z*yM)@ww3}&1)2`T% zUDNLRPAda0htPLg&Rahc>hSwxv6VdG=S_2YFZ3|z+mfANz6H>G+&!?GcScirXVi!H z(J6H>Q>6&coz37j-hsX|`}T(Wso(u>P48Z%L7_YS8;(Cf$3S#A?`x}6TulNtV?g@{ z@4z9wgMH>#y>C}A}TmwC!5A;LZWX`<@a67&{F?dn4u>jg`cEK-{_sR_v_X8eM=5eKYkEbuNd$!fK8e!X(}w=JEcm zSwZ(yAIBGB`z_G*IYPcU(fS28^bJ}ud=J{Qe-2LPU5Jl&CO_dCJkK@Q!!>YUYj6A@ zw$@;~FYo`7u$PS8@uWHLn2GakOZa!0*t!nB0=4n$^W@G%uz!_l#ca5iJ18+M&_pULA5sZae&--F1`44o&u2F&<#+kX|?sopx=$3t=g zvFHdeCsfhr&S&D-$%21^e7jcZginFnuHqkKJKL12uaJ6sg7#>4!`ax-e7^y__D9y2 zO?N%mxdVgu1>8=M` zC)>Vh|IKJo`?n+Xw*Ob8pQ!e)Y5yDHZnyf1<7-XFU)i5Z8fDd&T~iPC6G8VI^|fR3 zPeDwj`G@^hd&T$`HtX%*e>AgQ)aN?Z5V4Q}p}iMlD^iGE&;09ri>T)=vtMe~TUrmk z39QflyGLT`B`pQCKeiR-!SxU@=OcyKsdE2eU;j$>JNF&i?`&)An{Ws9vKG(o2ioJ1 zow2Y6+xA#BcmVWl#^?9Gk?i>?K`UOC&|;4Q2T|0Ky6-Ao64tldmY+hoBiVKV$gn__UVf8 zvFe`Hj4btC)8=YZ_QbPJC)BmL2(-7c2cqeajn&W>k|>`{I3CPilKhJJOu#v{x$>(X z*?FJ6h@SYM{ZMfMXwT;*SPtt!_PA!wwaO!G#$GY&|Evp%zXkHy_!D*f>Y7l_w7KzB zdrJ78)tz(B`h#P&NdhE+G&}1L_8bz)(~)CcYwdl@hXXK?^oY-3-oC*8LkxYj8|B^w zGp6)zL1Sz>+y&QAXHRr#4EBS`@E(+d?8@i0oWB-bHC}(YwNU>l)S-6*(qa0h>K1BO z^)rPgO`&vZ%nhV`#BuMoQ(c^Tn$jM*)cG*10JW`|8`M6!R_X`S)E?xo_BzX^&8~^P zj7<>#wvwai73l|ylami_^N-)Z%-Zp(W&Qen%j&e=x2$As!uR&1WZQls9XdsTbIPN< zDxxvpl@HK-&qsR9T;2AchyVCr}dC@==sr ze*X{FS$U7$(8Ss2Cx3IuVTz4$O%Ht6}N!qBgI4aSnNC3 zk7ud7S58R1XXErtb5GU&@*;Q+G-oJX<=|3>-^FachnyfbHSdFnjf2eq&L5!?t@z)V;LrSLB3d=5;3jc}>^0#R23((VE6 zCC>%TyLq5?_yvpx%|r63()cm;Fc<6Iq5BwfRdyNd2F+jEhyF7RU=FJ^eh;Qw)`9me fYb~iC^JMu3Ek1|+&TPmHqPWs@PI;79WmNV*Dg&oQ literal 0 HcmV?d00001 diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 000000000..c2fd1dd4f --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"concepts_include-tree.md":"DXBP6NUV","concepts_includes.md":"BXk9quAA","history.md":"LjVhoNRC","index.md":"BKf9wlWP","introduction.md":"DjUq3clO","modeling_model-components_attributes.md":"BuUuuAHM","modeling_model-components_attributes_client-validation.md":"BXI5mU5c","modeling_model-components_attributes_coalesce.md":"DMD85T4j","modeling_model-components_attributes_controller-action.md":"B2Y3z3V6","modeling_model-components_attributes_controller.md":"bBfqifUV","modeling_model-components_attributes_create-controller.md":"Ddy0AhTl","modeling_model-components_attributes_date-type.md":"DFK8RwS4","modeling_model-components_attributes_default-order-by.md":"DDS6LyOo","modeling_model-components_attributes_dto-includes-excludes.md":"Cgp7nqWy","modeling_model-components_attributes_execute.md":"CyJLTcXq","modeling_model-components_attributes_hidden.md":"CGb-z8S2","modeling_model-components_attributes_inject.md":"CXstKKLV","modeling_model-components_attributes_internal-use.md":"BC-btFh9","modeling_model-components_attributes_list-text.md":"BlG0OrE0","modeling_model-components_attributes_load-from-data-source.md":"Blwt71Fn","modeling_model-components_attributes_many-to-many.md":"BViHlIRH","modeling_model-components_attributes_restrict.md":"B_Bl8ZiC","modeling_model-components_attributes_search.md":"Dpcvv62F","modeling_model-components_attributes_security-attribute.md":"Cbz4NAzW","modeling_model-components_behaviors.md":"0-hD_ijP","modeling_model-components_data-sources.md":"CaS_Mjop","modeling_model-components_methods.md":"SII-fa1f","modeling_model-components_properties.md":"CufQlWZR","modeling_model-types_dtos.md":"Bx3ZDY0X","modeling_model-types_entities.md":"4anHzKSX","modeling_model-types_external-types.md":"CRyS6x6A","modeling_model-types_services.md":"DQfWD0nS","modeling_model-types_standalone-entities.md":"DdXeY2JZ","stacks_agnostic_dtos.md":"CupGMBl4","stacks_agnostic_generation.md":"BSeflgOu","stacks_agnostic_getting-started-modeling.md":"C_tRTIWZ","stacks_vue_coalesce-vue-vuetify_components_c-admin-audit-log-page.md":"Cekg3y3b","stacks_vue_coalesce-vue-vuetify_components_c-admin-display.md":"CXEkndPQ","stacks_vue_coalesce-vue-vuetify_components_c-admin-editor-page.md":"CheGzyNt","stacks_vue_coalesce-vue-vuetify_components_c-admin-editor.md":"CUq0AktO","stacks_vue_coalesce-vue-vuetify_components_c-admin-method.md":"CZeeeZRL","stacks_vue_coalesce-vue-vuetify_components_c-admin-methods.md":"AwHFHYrl","stacks_vue_coalesce-vue-vuetify_components_c-admin-table-page.md":"5WfiKk12","stacks_vue_coalesce-vue-vuetify_components_c-admin-table-toolbar.md":"DVzTVuuC","stacks_vue_coalesce-vue-vuetify_components_c-admin-table.md":"Av5UFE83","stacks_vue_coalesce-vue-vuetify_components_c-datetime-picker.md":"BLmOIX_G","stacks_vue_coalesce-vue-vuetify_components_c-display.md":"KwuI7LyG","stacks_vue_coalesce-vue-vuetify_components_c-input.md":"C7dBk70K","stacks_vue_coalesce-vue-vuetify_components_c-list-filters.md":"BuQssQ1-","stacks_vue_coalesce-vue-vuetify_components_c-list-page-size.md":"ghTX5kic","stacks_vue_coalesce-vue-vuetify_components_c-list-page.md":"DBlTOD8T","stacks_vue_coalesce-vue-vuetify_components_c-list-pagination.md":"CL0iN7Kl","stacks_vue_coalesce-vue-vuetify_components_c-list-range-display.md":"BXap6sbk","stacks_vue_coalesce-vue-vuetify_components_c-loader-status.md":"B1aKOMtk","stacks_vue_coalesce-vue-vuetify_components_c-select-many-to-many.md":"DHuCgpUa","stacks_vue_coalesce-vue-vuetify_components_c-select-string-value.md":"CBTE2rZs","stacks_vue_coalesce-vue-vuetify_components_c-select-values.md":"C97aC2Yx","stacks_vue_coalesce-vue-vuetify_components_c-select.md":"DdKRtVnt","stacks_vue_coalesce-vue-vuetify_components_c-table.md":"CleDHzqH","stacks_vue_coalesce-vue-vuetify_overview.md":"_zK0S1J_","stacks_vue_getting-started.md":"cvpjxbz6","stacks_vue_layers_api-clients.md":"ZFtUeqeR","stacks_vue_layers_metadata.md":"lgKSP2Dg","stacks_vue_layers_models.md":"ST5NLFOv","stacks_vue_layers_viewmodels.md":"Bu5ItAZ9","stacks_vue_overview.md":"D08uFQA2","stacks_vue_vue2-to-vue3.md":"DCun6C4Y","topics_audit-logging.md":"CbcnfHuQ","topics_coalesce-json.md":"DRbdr5a0","topics_coalesce-swashbuckle.md":"BLFJZ7Yn","topics_immutability.md":"CmCfIs-X","topics_security.md":"De1aPS0R","topics_startup.md":"BqEryyXw","topics_upgrading.md":"CIvStOB4"} diff --git a/history.html b/history.html new file mode 100644 index 000000000..f89839f70 --- /dev/null +++ b/history.html @@ -0,0 +1,25 @@ + + + + + + Welcome to Coalesce's documentation! | Coalesce + + + + + + + + + + + + + + +
Skip to content

Welcome to Coalesce's documentation!

Coalesce is a framework based on ASP.NET Core that makes rapidly building awesome websites much easier. A project that would take a 3 months to complete now takes 1 month. We built this because we got tired of writing all the boiler plate code that is necessary to make amazing sites.

It does this by allowing developers to focus on the creative aspects of the solution. The more mundane parts are generated automatically. This means that you get to focus on data modeling, business logic and front-end development. Coalesce does the plumbing.

Here is a typical workflow

  1. Build an EF Core data model with business logic
  2. Coalesce generates controllers, TypeScript view models, API and view model documentation, and admin pages/examples
  3. Build an interactive and intuitive user experience
  4. Rinse and repeat

Core Features

  • Built on the latest Microsoft ASP.NET Core
  • Easy to learn
  • TypeScript from the ground up
  • Flexibility to use MVC patterns as required
  • Admin pages for all your models are build automatically and include features like searching, sorting, and paging
  • Robust documentation for the framework
  • Automatically generated documentation for the API layer and TypeScript view models
  • Feature rich TypeScript view models that can be easily extended
  • Many extension points for customizations
  • Abstraction that doesn't require you know how everything works
  • Security and data trimming by role is built in
  • Flexibility about which data to return to the client
  • Open source

Is Coalesce for Everyone and Every Project?

Coalesce was designed to create line-of-business applications. It provides a more customizable and maintainable alternative to off the shelf customizable products like SharePoint and Sales Force.

You should consider using Coalesce if your project:

  • Is small to medium size (1-200 classes)
  • Requires an interactive user experience
  • Has data entry requirements, especially forms, tables, etc.
  • Needs to get started quickly with functional prototypes that can become production software

Design Decisions and Limitations

Coalesce is specifically designed to meet the needs of web developers. However, there are lots of ways to do this. We have made a set of decisions which we believe makes for a great development experience

  • ASP.NET Core: there is no intent to back port this to an earlier version
  • EF Core for the object relational mapper
  • Currently uses the full framework because .NET Core doesn't supported the required functionality, yet
  • Knockout for client-side data binding
  • Business logic most easily lives in the model classes
  • Coalesce is designed for relational databases. This might change in the future, but not until we have a compelling use case.

How Does it Work?

After you create your classes and the EF data context, Coalesce uses this information to generate code. When the Coalesce CLI (command line interface) is run, the following things happen:

  1. The model is validated to ensure that all the Coalesce specific requirements are met. This includes things like ensuring that all classes have a primary key assigned, validating that linked child objects have a key to their parent, etc. If issues are found, generation stops and the errors are displayed with advise to fix the issues.
  2. The core files needed for Coalesce are copied to the target project. This includes TypeScript base classes, customizable templates, and other files for extension points. Each file is copied twice, once as a file that can be modified in the project and once as an original file. This ensures that if any changes are made by the user these files Coalesce will not overwrite the your changes.
  3. The API controllers are generated. One is generated for each object. This includes methods that get a list of items, get a specific item, save an item, etc.
  4. The TypeScript view models are created. There are two view models for each object. One is a list view model which allows for getting an displaying lists of a type of object. This includes full functionality to sort, filter, search, page, etc. Additionally, a view model that represents the individual object is also created. This has all the properties and methods of the server side object. This is basically a client-side proxy object for representing and manipulating the object on the server side. These objects seamlessly use the API controllers to interact with the server.
  5. Next, the View controller are created. One is create for each model class and provide a tabular view, a card view (for mobile), an editor, and documentation.
  6. Finally, the CSHTML views for the controller are created. These are the actual CSHTML for the above controllers. These not only provide administrative view and editing features, but also serve as an example of how to use the framework

General Guidance

Here are a few things we have found helpful when using Coalesce

  • Learn and embrace the Coalesce paradigm and work with it rather than trying to do things another way.
  • Following what we refer to as the 'well worn path' is very helpful. Try to stick to standard ways to do things rather than trying to use esoteric features.
  • Keep your models as consistent and straightforward as possible. Use relational modeling best practices.
  • Remember that public methods on your class models are added to the client side view models and this makes calling business logic from the client really easy.
  • Don't be afraid to fall back to building parts of your site using traditional methods. Coalesce isn't right for everything. But, honestly, we have only done this a few times, like 3.

The Story

Why Coalesce

In 2014 several developers from IntelliTect got together to talk about our craft. There were lots of different backgrounds, but recently we had all been writing web code in C#. We discussed things we enjoyed and things we dreaded. There was an underlying commitment to providing customers with great sites at a reasonable cost. However, those things often seemed at odds because of the complexity of web development.

The Problem

For example, writing AJAX drop down lists with type ahead takes quite a bit of plumbing. Layer onto this the need for view models that allow for validation and saving as the user moves from field to field. We absolutely want want to deliver visually pleasing sites with complex UI paradigms. However, all this excellence adds up: complex view models, complex APIs, data binding, ugh.

Then there is that sinking feeling when you have to add another class to the project knowing that you are going to need to create all this yet again and you consider taking short cuts. Will there really be more than about 20 items in this table, maybe we don't need paging. Inevitably, the customer asks for admin screens. We consider giving them SQL Server Management Console and then consider using the built in ASP.NET list and editor pages. Better sense wins out and we end up spending two weeks building slick admin pages with paging, searching, sorting, etc.

The Path to the Solution

That evening we starting talking about the things we loved to do:

  • Data modeling
  • Figuring out and writing business logic
  • Working with customers
  • Making cool user interfaces
  • Creating something new and awesome

We also lists things that we didn't enjoy

  • Writing the same controller again
  • Creating a view model for a class that is similar but different from another one in the project
  • Putting sorting and paging on every admin page
  • Basically doing anything that feels repetitive or boilerplate

Over the next few months we talked about this issue, but couldn't find the right abstraction. We talked about other solutions that solve parts of the problem and considered putting together something from several pieces. Nothing felt unified and we ended up with leaky abstractions. We needed some way to divide the problem so that we could build the fun stuff and have something generate the boring stuff. This solution needed to be robust enough to satisfy our customer's needs and also be of use to developers without their needing to know the inner workings of the system.

Our Solution

What if we could build the models and business logic and have a tool build everything except the UI? There are great tools like Entity Framework for modeling and good tooling for minimizing duplicate code in user interfaces. And so Coalesce was born, a tool that would bring together the backend and front end development. '

Coalesce takes Entity Framework Core models and builds controllers, TypeScript view models, and admin pages automatically. These are built in a general way so that they can be applied to many different scenarios. There will always be pages that need to be written by hand and we intentionally don't support many edge cases in order to keep things simple. There is nothing wrong with building something by hand.

How has it Worked?

We have been using Coalesce for many of our web projects with great success. Typically, a project is taking about 1/3 the time it was taking before once developers ramp up. The ramp up on Coalesce has typically been a couple of days. We realized that in order for Coalesce to be useful it need to be intuitive to use and easy to understand. We have intentionally used simple paradigms to minimize the learning curve. There are complex bits, but hopefully, those are well hidden and documented as needed.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..7c6b59a15 --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + + + Coalesce + + + + + + + + + + + + + + +
Skip to content

Coalesce

Accelerated Web App Development

ASP.NET Core • EF Core • Vue.js • TypeScript

Coalesce

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/intellitect-text-black.svg b/intellitect-text-black.svg new file mode 100644 index 000000000..f2236edae --- /dev/null +++ b/intellitect-text-black.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + diff --git a/intellitect-text-white.svg b/intellitect-text-white.svg new file mode 100644 index 000000000..07e2a13c3 --- /dev/null +++ b/intellitect-text-white.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + diff --git a/introduction.html b/introduction.html new file mode 100644 index 000000000..e2639bb0e --- /dev/null +++ b/introduction.html @@ -0,0 +1,25 @@ + + + + + + Introduction | Coalesce + + + + + + + + + + + + + + +
Skip to content

Coalesce

Designed to help you quickly build amazing web applications, Coalesce is a rapid-development, code generation-based web application framework created by IntelliTect and built on top of:

C#, .NET, and ASP.NET Core are the backend foundation of all Coalesce applications.
Entity Framework provides the interface between your database and C# code. Coalesce will use your EF data model to generate an extensible, customizable CRUD API that will drive both your custom pages and the out-of-the-box admin pages.
TypeScript enables discovery of Coalesce features through Intellisense and provides confidence that your frontend code won't break as your application grows.
Vue.js provides data binding and interactivity for your application as it runs in a browser. Coalesce will generate TypeScript ViewModels to facilitate rapid development of custom pages.
Vite is the development and build tooling for your frontend Vue code, enabling lightning-fast single-page application development. Coalesce integrates ASP.NET Core and Vite together, streamlining local development to require nothing more than a dotnet run or a single-click launch in your IDE.

What do I do?

You are responsible for the interesting parts of your application:

  • Data Model
  • Business Logic
  • External Integrations
  • Page Content
  • Site Design
  • Custom Scripting

What is done for me?

Coalesce builds the part of your application that are mundane and monotonous to build:

  • Client side TypeScript ViewModels that mirror your data model for both lists and individual objects. Utilize these to rapidly build out your application's various pages.
  • APIs to interact with your models via endpoints like List, Get, Save, and more.
  • Out-of-the-box Vue Components for common controls like dates, selecting objects via drop downs, enums, etc. Dropdowns support searching and paging automatically.
  • A complete set of admin pages are provided, allowing you to read, create, edit, and delete data straight away without writing any additional code.

Getting Started

To get started with Coalesce, check out Getting Started.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes.html b/modeling/model-components/attributes.html new file mode 100644 index 000000000..a2c9b8e65 --- /dev/null +++ b/modeling/model-components/attributes.html @@ -0,0 +1,25 @@ + + + + + + Attributes | Coalesce + + + + + + + + + + + + + + +
Skip to content

Attributes

Coalesce provides a number of C# attributes that can be used to decorate your model classes and their properties in order to customize behavior, appearance, security, and more. Coalesce also supports a number of annotations from System.ComponentModel.DataAnnotations.

Coalesce Attributes

Browse the list in the sidebar to learn about the attributes that Coalesce provides that can be used to decorate your models.

ComponentModel Attributes

Coalesce also supports a number of the built-in System.ComponentModel.DataAnnotations attributes and will use these to shape the generated code.

[Display]

The displayed name and description of a property, as well as the order in which it appears in generated views, can be set via the [Display] attribute. By default, properties will be displayed in the order in which they are defined in their class.

[DisplayName]

The displayed name of a property can also be set via the [DisplayName] attribute.

[Description]

The description of a type or member, such as a class, property, method, or parameter.

[Required]

Properties with [Required] will generate client validation and server validation rules.

[Range]

Properties with [Range] will generate client validation and server validation rules.

[MinLength]

Properties with [MinLength] will generate client validation and server validation rules.

[MaxLength]

Properties with [MaxLength] will generate client validation and server validation rules.

[DataType]

Some values of DataType when provided to DataTypeAttribute on a string property will alter the behavior of the Vue Components. See c-display and c-input for details.

[ForeignKey]

Normally, Coalesce figures out which properties are foreign keys, but if you don't use standard EF naming conventions then you'll need to annotate with [ForeignKey] to help out both EF and Coalesce. See the Entity Framework Relationships documentation for more.

[InverseProperty]

Sometimes, Coalesce (and EF, too) can have trouble figuring out what the foreign key is supposed to be for a collection navigation property. See the Entity Framework Relationships documentation for details on how and why to use [InverseProperty].

[DatabaseGenerated]

Primary Keys with [DatabaseGenerated(DatabaseGeneratedOption.None)] will be settable on the client and will be appropriately handled by the Standard Behaviors on the server.

[NotMapped]

Model properties that aren't mapped to the database should be marked with [NotMapped] so that Coalesce doesn't try to load them from the database when searching or carrying out the Default Loading Behavior.

[DefaultValue]

Properties with [DefaultValue] will receive the specified value when a new ViewModel is instantiated on the client. This enables scenarios like pre-filling a required property with a suggested value.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/client-validation.html b/modeling/model-components/attributes/client-validation.html new file mode 100644 index 000000000..616d5b222 --- /dev/null +++ b/modeling/model-components/attributes/client-validation.html @@ -0,0 +1,41 @@ + + + + + + [ClientValidation] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[ClientValidation]

IntelliTect.Coalesce.DataAnnotations.ClientValidationAttribute

The ClientValidation attribute is used to control the behavior of client-side model validation and to add additional client-only validation parameters. Database validation is available via standard System.ComponentModel.DataAnnotations annotations.

These propagate to the client as validations in TypeScript via generated Metadata and ViewModel rules. Any failing validation rules prevent saves from going to the server.

WARNING

This attribute controls client-side validation only. To perform server-side validation, create a custom Behaviors class for your types and/or place C# validation attributes on your models. Read More.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+
+    [ClientValidation(IsRequired = true, AllowSave = true)]
+    public string FirstName { get; set; }
+
+    [ClientValidation(IsRequired = true, AllowSave = false, MinLength = 1, MaxLength = 100)]
+    public string LastName { get; set; }
+}

Properties

public string ErrorMessage { get; set; }

Set an error message to be used if any client validations fail

Validation Rule Properties

 

In addition to the following properties, you also customize validation on a per-instance basis of the ViewModels using the Rules/Validation methods.

c#
public bool IsRequired { get; set; }
+public double MinValue { get; set; } = double.MaxValue;
+public double MaxValue { get; set; } = double.MinValue;
+public double MinLength { get; set; } = double.MaxValue;
+public double MaxLength { get; set; } = double.MinValue;
+public string Pattern { get; set; }
+public bool IsEmail { get; set; }
+public bool IsPhoneUs { get; set; }

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/coalesce.html b/modeling/model-components/attributes/coalesce.html new file mode 100644 index 000000000..653cd972c --- /dev/null +++ b/modeling/model-components/attributes/coalesce.html @@ -0,0 +1,25 @@ + + + + + + [Coalesce] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Coalesce]

IntelliTect.Coalesce.CoalesceAttribute

Used to mark a type or member for generation by Coalesce.

Some types and members will be implicitly included in generation - for example, all types represented by a DbSet<T> on a DbContext that has a [Coalesce] attribute will automatically be included. Properties on these types will also be generated for unless explicitly excluded, since this is by far the most common usage scenario in Coalesce.

On the other hand, Methods on these types will not have endpoints generated unless they are explicitly annotated with [Coalesce] to avoid accidentally exposing methods that were perhaps not intended to be exposed.

The documentation pages for types and members that require/accept this attribute will state as such. An exhaustive list of all valid targets for [Coalesce] will not be found on this page.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/controller-action.html b/modeling/model-components/attributes/controller-action.html new file mode 100644 index 000000000..6f2f9a948 --- /dev/null +++ b/modeling/model-components/attributes/controller-action.html @@ -0,0 +1,52 @@ + + + + + + [ControllerAction] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[ControllerAction]

IntelliTect.Coalesce.DataAnnotations.ControllerActionAttribute

Specifies how a custom method is exposed via HTTP. Can be used to customize the HTTP method/verb for the method, as well as caching behavior.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+    public string LastName { get; set; }
+
+    public string PictureHash { get; set; }
+
+    [Coalesce]
+    [ControllerAction(Method = HttpMethod.Get)]
+    public static long PersonCount(AppDbContext db, string lastNameStartsWith = "")
+    {
+        return db.People.Count(f => f.LastName.StartsWith(lastNameStartsWith));
+    }
+
+    [Coalesce]
+    [ControllerAction(HttpMethod.Get, VaryByProperty = nameof(PictureHash))]
+    public IFile GetPicture(AppDbContext db)
+    {
+        return new IntelliTect.Coalesce.Models.File(db.PersonPictures
+            .Where(x => x.PersonId == this.PersonId)
+            .Select(x => x.Content)
+        )
+        {
+            ContentType = "image/jpg",
+        };
+    }
+}

Properties

// Also settable via constructor parameter #1
+public HttpMethod Method { get; set; } = HttpMethod.Post;

The HTTP method to use on the generated API Controller.

Enum values are:

  • HttpMethod.Post Use the POST method.
  • HttpMethod.Get Use the GET method.
  • HttpMethod.Put Use the PUT method.
  • HttpMethod.Delete Use the DELETE method.
  • HttpMethod.Patch Use the PATCH method.

public string VaryByProperty { get; set; }

For HTTP GET model instance methods, if VaryByProperty is set to the name of a property on the parent model class, ETag headers based on the value of this property will be used to implement caching. If the client provides a matching If-None-Match Header with the request, the method will not be invoked and HTTP Status `304 Not Modified`` will be returned.

Additionally, if the VaryByProperty is set to a client-exposed property, the value of the property will be included in the query string when performing API calls to invoke the method. If the query string value matches the current value on the model, a long-term Cache-Control header will be set on the response, allowing the client to avoid making future invocations to the same method while the value of the VaryByProperty remains the same.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/controller.html b/modeling/model-components/attributes/controller.html new file mode 100644 index 000000000..2a6a7866c --- /dev/null +++ b/modeling/model-components/attributes/controller.html @@ -0,0 +1,31 @@ + + + + + + [Controller] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Controller]

IntelliTect.Coalesce.DataAnnotations.ControllerAttribute

Allows for control over the generated MVC Controllers.

Currently only controls over the API controllers are present, but additional properties may be added in the future.

This attribute may be placed on any type from which an API controller is generated, including Entity Models, Custom DTOs, and Services.

Example Usage

c#
[Controller(ApiRouted = false, ApiControllerSuffix = "Gen", ApiActionsProtected = true)]
+public class Person
+{
+    public int PersonId { get; set; }
+    
+    ...
+}

Properties

public bool ApiRouted { get; set; } = true;

Determines whether or not a [Route] annotation will be placed on the generated API controller. Set to false to prevent emission of the [Route] attribute.

Use cases include:

  • Defining your routes through IRouteBuilder in Startup.cs instead
  • Preventing API controllers from being exposed by default.
  • Routing to your own custom controller that inherits from the generated API controller in order to implement more granular or complex authorization logic.

public string ApiControllerName { get; set; } = null;

If set, will determine the name of the generated API controller.

Takes precedence over the value of ApiControllerSuffix.

public string ApiControllerSuffix { get; set; } = null;

If set, will be appended to the default name of the API controller generated for this model.

Will be overridden by the value of ApiControllerName if it is set.

public bool ApiActionsProtected { get; set; } = false;

If true, actions on the generated API controller will have an access modifier of protected instead of public.

In order to consume the generated API controller, you must inherit from the generated controller and override each desired generated action method via hiding (i.e. use public new ..., not public override ...).

Note

If you inherit from the generated API controllers and override their methods without setting ApiActionsProtected = true, all non-overridden actions from the generated controller will still be exposed as normal.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/create-controller.html b/modeling/model-components/attributes/create-controller.html new file mode 100644 index 000000000..20c2f888a --- /dev/null +++ b/modeling/model-components/attributes/create-controller.html @@ -0,0 +1,33 @@ + + + + + + [CreateController] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[CreateController]

IntelliTect.Coalesce.DataAnnotations.CreateControllerAttribute

By default an API and View controller are both created. This allows for suppressing the creation of either or both of these.

Example Usage

c#
[CreateController(view: false, api: true)]
+public class Person
+{
+    public int PersonId { get; set; }
+    
+    ...
+}

Properties

// Also settable via constructor parameter #1
+public bool WillCreateView { get; set; } = true

// Also settable via constructor parameter #2
+public bool WillCreateApi { get; set; } = true


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/date-type.html b/modeling/model-components/attributes/date-type.html new file mode 100644 index 000000000..ea7d092e7 --- /dev/null +++ b/modeling/model-components/attributes/date-type.html @@ -0,0 +1,32 @@ + + + + + + [DateType] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[DateType]

IntelliTect.Coalesce.DataAnnotations.DateTypeAttribute

WARNING

This attribute is deprecated and not recommended for use in new development. Instead, use the native .NET types System.DateOnly and System.TimeOnly.

Specifies whether a DateTime type will have a date and a time, or only a date.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+
+    [DateType(DateTypeAttribute.DateTypes.DateOnly)]
+    public DateTimeOffset? BirthDate { get; set; }
+}

Properties

// Also settable via constructor parameter #1
+public DateTypes DateType { get; set; } = DateTypes.DateTime; 

The type of date the property represents.

Enum values are:

  • DateTypeAttribute.DateTypes.DateTime Subject is both a date and time.
  • DateTypeAttribute.DateTypes.DateOnly Subject is only a date with no significant time component.
  • DateTypeAttribute.DateTypes.TimeOnly Subject is only a time with no significant date component.

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/default-order-by.html b/modeling/model-components/attributes/default-order-by.html new file mode 100644 index 000000000..1c1e6cc7e --- /dev/null +++ b/modeling/model-components/attributes/default-order-by.html @@ -0,0 +1,49 @@ + + + + + + [DefaultOrderBy] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[DefaultOrderBy]

IntelliTect.Coalesce.DataAnnotations.DefaultOrderByAttribute

Allows setting of the default manner in which the data returned to the client will be sorted. Multiple fields can be used to sort an object by specifying an index.

This affects the sort order both when requesting a list of the model itself, as well as when the model appears as a child collection off of a navigation property of another object.

In the first case (a list of the model itself), this can be overridden by setting the orderBy or orderByDescending property on the TypeScript ListViewModel's $params.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+    
+    public int DepartmentId { get; set; }
+
+    [DefaultOrderBy(FieldOrder = 0, FieldName = nameof(Department.Order))]
+    public Department Department { get; set; }
+    
+    [DefaultOrderBy(FieldOrder = 1)]
+    public string LastName { get; set; }
+}
c#
public class Person
+{
+    public int PersonId { get; set; }
+    
+    public int DepartmentId { get; set; }
+
+    [DefaultOrderBy(FieldOrder = 0, FieldName = nameof(Department.Order))]
+    public Department Department { get; set; }
+    
+    [DefaultOrderBy(FieldOrder = 1)]
+    public string LastName { get; set; }
+}

Properties

// Also settable via constructor parameter #1
+public int FieldOrder { get; set; } = 0; 

Specify the index of this field when sorting by multiple fields.

Lower-valued properties will be used first; higher-valued properties will be used as a tiebreaker (i.e. .ThenBy(...)).

// Also settable via constructor parameter #2
+public OrderByDirections OrderByDirection { get; set; } = OrderByDirections.Ascending;

Specify the direction of the ordering for the property.

Enum values are:

  • DefaultOrderByAttribute.OrderByDirections.Ascending
  • DefaultOrderByAttribute.OrderByDirections.Descending

public string FieldName { get; set; }

When using the DefaultOrderByAttribute on an object property, specifies the field on the object to use for sorting. See the first example above.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/dto-includes-excludes.html b/modeling/model-components/attributes/dto-includes-excludes.html new file mode 100644 index 000000000..b1e8bcccd --- /dev/null +++ b/modeling/model-components/attributes/dto-includes-excludes.html @@ -0,0 +1,55 @@ + + + + + + [DtoIncludes] & [DtoExcludes] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[DtoIncludes] & [DtoExcludes]

IntelliTect.Coalesce.DataAnnotations.DtoIncludesAttribute
IntelliTect.Coalesce.DataAnnotations.DtoExcludesAttribute

Allows for easily controlling what data gets set to the client. When requesting data from the generated client-side list view models, you can specify an includes property on the ViewModel or ListViewModel.

For more information about the includes string, see Includes String.

When the database entries are returned to the client they will be trimmed based on the requested includes string and the values in DtoExcludes and DtoIncludes.

DANGER

These attributes are not security attributes - consumers of your application's API can set the includes string to any value when making a request.

Do not use them to keep certain data private - use the Security Attributes family of attributes for that.

It is important to note that the value of the includes string will match against these attributes on any of your models that appears in the object graph being mapped to DTOs - it is not limited only to the model type of the root object.

Important

DtoIncludes does not ensure that specific data will be loaded from the database. It only permits what is already loaded into the current EF DbContext to be returned from the API. See Data Sources to learn how to control what data gets loaded from the database.

Example Usage

Server code:

c#
public class Person
+{
+    // Don't include CreatedBy when editing - will be included for all other views
+    [DtoExcludes("Editor")]
+    public AppUser CreatedBy { get; set; }
+
+    // Only include the Person's Department when `includes == "details"` on the TypeScript ViewModel.
+    [DtoIncludes("details")]
+    public Department Department { get; set; }
+
+    // LastName will be included in all views
+    public string LastName { get; set; }
+}
+
+public class Department
+{
+    [DtoIncludes("details")]
+    public ICollection<Person> People { get; set; }
+}

Client code:

 
ts
import { PersonListViewModel } from '@/viewmodels.g'
+
+const personList = new PersonListViewModel();
+personList.$includes = "Editor";
+await personList.$load();
+// Objects in personList.$items will not contain CreatedBy nor Department objects.
+
+const personList2 = new PersonListViewModel();
+personList2.$includes = "details";
+await personList.$load();
+// Objects in personList2.items will be allowed to contain both CreatedBy and Department objects. 
+// Department will be allowed to include its other Person objects.

Properties

// Also settable via constructor parameter #1
+public string ContentViews { get; set; }

A comma-delimited list of values of includes on which to operate.

For DtoIncludes, this will be the values of includes for which this property will be allowed to be serialized and sent to the client.

For DtoExcludes, this will be the values of includes for which this property will not be serialized and sent to the client.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/execute.html b/modeling/model-components/attributes/execute.html new file mode 100644 index 000000000..23b5ad16e --- /dev/null +++ b/modeling/model-components/attributes/execute.html @@ -0,0 +1,35 @@ + + + + + + [Execute] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Execute]

IntelliTect.Coalesce.DataAnnotations.ExecuteAttribute

Controls various aspects of Custom Methods, including role-based permissions, HTTP behavior, and more.

For other security controls, see Security Attributes.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+    
+    [Coalesce, Execute(Roles = "Payroll,HR")]
+    public void GiveRaise(int centsPerHour) {
+        ...
+    }
+
+    ...
+}

Properties

public string Roles { get; set; }

A comma-separated list of roles which are allowed to execute the method.

public SecurityPermissionLevels PermissionLevel { get; set; } = SecurityPermissionLevels.AllowAuthorized;

The level of access to allow for the action for the method.

Enum values are:

  • SecurityPermissionLevels.AllowAll Allow all users to perform the action for the attribute, including users who are not authenticated at all.
  • SecurityPermissionLevels.AllowAuthorized Allow only users who are members of the roles specified on the attribute to perform the action. If no roles are specified on the attribute, then all authenticated users are allowed (no anonymous access).
  • SecurityPermissionLevels.DenyAll Deny the action to all users, regardless of authentication status or authorization level. If DenyAll is used, no API endpoint for the action will be generated.

public bool AutoClear { get; set; }

If true, the method's arguments will be cleared after a successful invocation on admin pages.

public bool? ValidateAttributes { get; set; }

If non-null, overrides the value of CoalesceOptions.ValidateAttributesForMethods when determining whether to perform automatic server-side validation of the method's parameters.

If validation is performed, the method's parameters will be validated by the server and the method invocation prevented if errors are found.

public HttpMethod HttpMethod { get; set; } = HttpMethod.Post;

The HTTP method to use on the generated API Controller.

Enum values are:

  • HttpMethod.Post Use the POST method.
  • HttpMethod.Get Use the GET method.
  • HttpMethod.Put Use the PUT method.
  • HttpMethod.Delete Use the DELETE method.
  • HttpMethod.Patch Use the PATCH method.

public string? VaryByProperty { get; set; }

For HTTP GET model instance methods, if VaryByProperty is set to the name of a property on the parent model class, ETag headers based on the value of this property will be used to implement caching. If the client provides a matching If-None-Match Header with the request, the method will not be invoked and HTTP Status `304 Not Modified`` will be returned.

Additionally, if the VaryByProperty is set to a client-exposed property, the value of the property will be included in the query string when performing API calls to invoke the method. If the query string value matches the current value on the model, a long-term Cache-Control header will be set on the response, allowing the client to avoid making future invocations to the same method while the value of the VaryByProperty remains the same.

public Type? DataSource { get; set; }

Specifies that the targeted model instance method should load the instance it is called on from the specified data source when invoked from an API endpoint. If not defined, the model's default data source is used.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/hidden.html b/modeling/model-components/attributes/hidden.html new file mode 100644 index 000000000..1e027fe2e --- /dev/null +++ b/modeling/model-components/attributes/hidden.html @@ -0,0 +1,32 @@ + + + + + + [Hidden] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Hidden]

IntelliTect.Coalesce.DataAnnotations.HiddenAttribute

Mark an property as hidden from the edit, List or All areas.

DANGER

This attribute is not a security attribute - it only affects the rendering of the admin pages. It has no impact on data visibility in the API.

Do not use it to keep certain data private - use the Security Attributes family of attributes for that.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+
+    [Hidden(HiddenAttribute.Areas.All)]
+    public int? IncomeLevelId { get; set; }
+}

Properties

// Also settable via constructor parameter #1
+public Areas Area { get; set; } = Areas.All;

The areas in which the property should be hidden.

Enum values are:

  • HiddenAttribute.Areas.None Hide from no generated views. Primary and Foreign keys are hidden by default - setting this value explicitly can override this default behavior.
  • HiddenAttribute.Areas.All Hide from all generated views
  • HiddenAttribute.Areas.List Hide from admin list views only (c-admin-table)
  • HiddenAttribute.Areas.Edit Hide from admin editor only (c-admin-editor)

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/inject.html b/modeling/model-components/attributes/inject.html new file mode 100644 index 000000000..b4c4bf137 --- /dev/null +++ b/modeling/model-components/attributes/inject.html @@ -0,0 +1,36 @@ + + + + + + [Inject] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Inject]

IntelliTect.Coalesce.DataAnnotations.InjectAttribute

Used to mark a Method parameter for dependency injection from the application's IServiceProvider.

See Methods for more.

This gets translated to a Microsoft.AspNetCore.Mvc.FromServicesAttribute in the generated API controller's action.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+
+    public string GetFullName([Inject] ILogger<Person> logger)
+    {
+        logger.LogInformation("Person " + PersonId + "'s full name was requested");
+        return FirstName + " " + LastName;
+    }
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/internal-use.html b/modeling/model-components/attributes/internal-use.html new file mode 100644 index 000000000..53c7e0c69 --- /dev/null +++ b/modeling/model-components/attributes/internal-use.html @@ -0,0 +1,44 @@ + + + + + + [InternalUse] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[InternalUse]

IntelliTect.Coalesce.DataAnnotations.InternalUseAttribute

Used to mark a type, property or method for internal use. Internal Use members are:

  • Not exposed via the API.
  • Not present in the generated TypeScript view models.
  • Not present nor accounted for in the generated C# DTOs.
  • Not present in the generated editor or list views.

Effectively, an Internal Use member is invisible to Coalesce. This attribute can be considered a Security Attribute.

Note that this only needs to be used on members that are public. Non-public members (including internal) are always invisible to Coalesce.

Example Usage

In this example, Color is the property exposed to the API, but ColorHex is the property that maps to the database that stores the value. A helper method also exists for the color generation, but needs no attribute to be hidden since methods must be explicitly exposed with [Coalesce].

If no color is saved in the database (the user hasn't picked a color), one is deterministically created.

c#
public class ApplicationUser
+{
+    public int ApplicationUserId { get; set; }
+
+    [InternalUse]
+    public string ColorHex { get; set; }
+
+    [NotMapped]
+    public string Color
+    {
+        get => ColorHex ?? GenerateColor(ApplicationUserId).ToRGBHexString();
+        set => ColorHex = value;
+    }
+
+    public static HSLColor GenerateColor(int? seed = null)
+    {
+        var random = seed.HasValue ? new Random(seed.Value) : new Random();
+        return new HSLColor(random.NextDouble(), random.Next(40, 100) / 100d, random.Next(25, 65) / 100d);
+    }
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/list-text.html b/modeling/model-components/attributes/list-text.html new file mode 100644 index 000000000..3e641acca --- /dev/null +++ b/modeling/model-components/attributes/list-text.html @@ -0,0 +1,36 @@ + + + + + + [ListText] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[ListText]

IntelliTect.Coalesce.DataAnnotations.ListTextAttribute

When a textual representation of an object needs to be displayed in the UI, this attribute controls which property will be used. Examples include dropdowns and cells in admin UI tables.

If this attribute is not used, and a property named Name exists on the model, that property will be used. Otherwise, the primary key will be used.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+
+    public string FirstName { get; set; }
+
+    public string LastName { get; set; }
+
+    [ListText]
+    [NotMapped]
+    public string Name => FirstName + " " + LastName
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/load-from-data-source.html b/modeling/model-components/attributes/load-from-data-source.html new file mode 100644 index 000000000..824199848 --- /dev/null +++ b/modeling/model-components/attributes/load-from-data-source.html @@ -0,0 +1,36 @@ + + + + + + [LoadFromDataSource] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[LoadFromDataSource]

IntelliTect.Coalesce.DataAnnotations.LoadFromDataSourceAttribute

Specifies that the targeted model instance method should load the instance it is called on from the specified data source when invoked from an API endpoint. If not defined, the model's default data source is used.

Example Usage

c#
public class Person
+{
+    public int PersonId { get; set; }
+    public string FirstName { get; set; }
+
+    [Coalesce, LoadFromDataSource(typeof(WithoutCases))]
+    public void ChangeSpacesToDashesInName()
+    {
+        FirstName = FirstName.Replace(" ", "-");
+    }
+}

Properties

// ONLY settable via constructor parameter #1
+public Type DataSourceType { get; }

The name of the Data Source to load the instance object from.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/many-to-many.html b/modeling/model-components/attributes/many-to-many.html new file mode 100644 index 000000000..8d45ab955 --- /dev/null +++ b/modeling/model-components/attributes/many-to-many.html @@ -0,0 +1,78 @@ + + + + + + [ManyToMany] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[ManyToMany]

IntelliTect.Coalesce.DataAnnotations.ManyToManyAttribute

Used to specify a Many to Many relationship. Because EF core does not support automatic intermediate mapping tables, this field is used to allow for direct reference of the many-to-many collections from the ViewModel.

The named specified in the attribute will be used as the name of a collection of the objects on the other side of the relationship in the generated TypeScript ViewModels.

Example Usage

In this example, we have a Person entity and an Appointment entity that share a many-to-many relationship. The PersonAppointment entity serves as the required middle table.

c#
public class Person
+{
+    public int PersonId { get; set; }
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+
+    [ManyToMany("Appointments")]
+    public ICollection<PersonAppointment> PersonAppointments { get; set; }
+}
+
+public class Appointment
+{
+    public int AppointmentId { get; set; }
+    public DateTime AppointmentDate { get; set; }
+
+    [ManyToMany("People")]
+    public ICollection<PersonAppointment> PersonAppointments { get; set; }
+}
+
+public class PersonAppointment
+{
+    public int PersonAppointmentId { get; set; }
+
+    public int PersonId { get; set; }
+    public Person Person { get; set; }
+
+    public int AppointmentId { get; set; }
+    public Appointment Appointment { get; set; }
+}

Properties

// ONLY settable via constructor parameter #1
+public string CollectionName { get; }

The name of the collection that will contain the set of objects on the other side of the many-to-many relationship.

public string FarNavigationProperty { get; set; }

The name of the navigation property on the middle entity that points at the far side of the many-to-many relationship. Use this to resolve ambiguities when the middle table of the many-to-many relationship has more than two reference navigation properties on it.

c#
public class Person
+{
+    ...
+    
+    [ManyToMany("Appointments", FarNavigationProperty = nameof(PersonAppointment.Appointment))]
+    public ICollection<PersonAppointment> PersonAppointments { get; set; }
+}
+
+public class Appointment
+{
+    ...
+
+    [ManyToMany("People", FarNavigationProperty = nameof(PersonAppointment.Person))]
+    public ICollection<PersonAppointment> PersonAppointments { get; set; }
+}
+
+public class PersonAppointment
+{
+    ...
+
+    // Adding a third reference navigation property in the middle table requires 
+    // the use of FarNavigationProperty in order to resolve ambiguity.
+    public int WaiverId { get; set; }
+    public Waiver Waiver { get; set; }
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/restrict.html b/modeling/model-components/attributes/restrict.html new file mode 100644 index 000000000..a4b18d10f --- /dev/null +++ b/modeling/model-components/attributes/restrict.html @@ -0,0 +1,47 @@ + + + + + + [Restrict] | Coalesce + + + + + + + + + + + + + + +
Skip to content

[Restrict]

IntelliTect.Coalesce.DataAnnotations.RestrictAttribute<T>

In addition to role-based property restrictions, you can also define property restrictions that can execute custom code for each model instance if your logic require more nuanced decisions than can be made with roles.

c#
using IntelliTect.Coalesce.DataAnnotations;
+public class Employee 
+{
+  public int Id { get; set; }
+
+  [Read]
+  public string UserId { get; set; }
+
+  [Restrict<SalaryRestriction>]
+  public decimal Salary { get; set; }
+}
+
+public class SalaryRestriction(MyUserService userService) : IPropertyRestriction<Employee>
+{
+  public bool UserCanRead(IMappingContext context, string propertyName, Employee model)
+    => context.User.GetUserId() == model.UserId || userService.IsPayroll(context.User);
+
+  public bool UserCanWrite(IMappingContext context, string propertyName, Employee model, object incomingValue)
+    => userService.IsPayroll(context.User);
+
+  public bool UserCanFilter(IMappingContext context, string propertyName)
+    => userService.IsPayroll(context.User);
+}

Restriction classes support dependency injection, so you can inject any supplemental services needed to make a determination.

The UserCanRead method controls whether values of the restricted property will be mapped from model instances to the generated DTO. Similarly, UserCanWrite controls whether the property can be mapped back to the model instance from the generated DTO.

The UserCanFilter method has a default implementation that returns false, but can be implemented if there is an appropriate, instance-agnostic way to determine if a user can sort, search, or filter values of that property.

Multiple different restrictions can be placed on a single property; all of them must succeed for the operation to be permitted. Restrictions also stack on top of role attribute restrictions ([Read] and [Edit]).

A non-generic variant of IPropertyRestriction also exists for restrictions that might be reused across multiple model types.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/search.html b/modeling/model-components/attributes/search.html new file mode 100644 index 000000000..f1b969c96 --- /dev/null +++ b/modeling/model-components/attributes/search.html @@ -0,0 +1,42 @@ + + + + + + [Search] | Coalesce + + + + + + + + + + + + + + +
Skip to content

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/attributes/security-attribute.html b/modeling/model-components/attributes/security-attribute.html new file mode 100644 index 000000000..cee01f288 --- /dev/null +++ b/modeling/model-components/attributes/security-attribute.html @@ -0,0 +1,58 @@ + + + + + + Security Attributes | Coalesce + + + + + + + + + + + + + + +
Skip to content

Security Attributes

Coalesce provides a collection of attributes which can provide class-level (and property-level, where appropriate) security controls over the generated API.

TIP

This page provides API-level documentation for a specific set of attributes. For a complete overview of all the security-focused techniques that can be used in a Coalesce application, see the Security page.

Class vs. Property Security

There are important differences between class-level security and property-level security, beyond the usage of the attributes themselves:

  • Class-level security is enforced in the generated API Controllers, primarily as [Authorize] attributes on the generated actions.
  • Property security is enforced in the Generated C# DTOs.

This means that class-level security only affects calls made to that type's standard API endpoints (and any type's bulk save endpoint), but does not affect usages of that type on other types' navigation properties. For details on how to control navigation properties, see the Security page section on Entity Reads

Implementations

[Read]

IntelliTect.Coalesce.DataAnnotations.ReadAttribute

For class-level security, controls access to the type's generated /get, /list, and /count endpoints, as well as stacking with [Edit]/[Save] to control the /bulkSave endpoint.

For property-level security, controls reading of that property any time it would be returned by any Coalesce built-in or custom endpoint. If a [Read] attribute is present without an [Edit] attribute, the property is read-only.

Additionally, you can set NoAutoInclude = true on the [Read] attribute to suppress the Default Loading Behavior. When targeted at a class, prevents all navigation properties of that class' type from being auto-included. When targeted at a navigation property, only that specific navigation property is affected.

Example Usage

c#
[Read(Roles = "Management")]
+public class Employee
+{
+    public int EmployeeId { get; set; }
+
+    [Read("Payroll")]
+    public string LastFourSsn { get; set; }
+    
+    [Read("Payroll", NoAutoInclude = true)]
+    public List<Paycheck> Paychecks { get; set; }
+    ...
+}

[Edit]

IntelliTect.Coalesce.DataAnnotations.EditAttribute

For class-level security, controls saving of existing instances of the type through the generated /save and /bulkSave endpoints.

For property-level security, controls access to the property any time it accepted as input by any Coalesce built-in or custom endpoint. If a [Read] attribute is present, one of its roles must be fulfilled in addition to the roles specified (if any) for the [Edit] attribute.

Example Usage

c#
[Edit(Roles = "Management,Payroll")]
+public class Employee
+{
+    public int EmployeeId { get; set; }
+
+    [Read("Payroll,HumanResources"), Edit("Payroll")]
+    public string LastFourSsn { get; set; }
+    
+    ...
+}
+
+[Edit(PermissionLevel = SecurityPermissionLevels.DenyAll)]
+public class Paycheck { ... }

[Create]

IntelliTect.Coalesce.DataAnnotations.CreateAttribute

For class-level security, controls saving of new instances of the type through the generated /save and /bulkSave endpoints.

Not applicable to properties.

Example Usage

c#
[Create(Roles = "HumanResources")]
+public class Employee { ... }
+
+[Create(PermissionLevel = SecurityPermissionLevels.DenyAll)]
+public class Paycheck { ... }

[Delete]

IntelliTect.Coalesce.DataAnnotations.DeleteAttribute

For class-level security, controls deleting of existing instances of the type through the generated /delete and /bulkSave endpoints.

Not applicable to properties.

Example Usage

c#
[Delete("HumanResources", "Management")]
+public class Employee { ... }
+
+[Delete(PermissionLevel = SecurityPermissionLevels.DenyAll)]
+public class Paycheck { ... }

[Execute]

A separate attribute for controlling custom method execution exists. Its documentation may be found on the ExecuteAttribute page.

[Restrict]

For property security, [Read] and [Edit] can be used to apply role-based security. If you need logic more complicated than checking for the presence of a role, RestrictAttribute offers the ability to write custom code to control the read and write permissions of a property.

Attribute Properties

// Also settable via constructor parameter #1
+public string Roles { get; set; }

A comma-delimited list of roles that are authorized to take perform the action represented by the attribute. If the current user belongs to any of the listed roles, the action will be allowed.

// Also settable via constructor parameter #1
+public SecurityPermissionLevels PermissionLevel { get; set; }

The level of access to allow for the action for class-level security only. Has no effect for property-level security.

Enum values are:

  • SecurityPermissionLevels.AllowAll Allow all users to perform the action for the attribute, including users who are not authenticated at all.
  • SecurityPermissionLevels.AllowAuthorized Default. Allow only users who are members of the roles specified on the attribute to perform the action. If no roles are specified on the attribute, then all authenticated users are allowed (no anonymous access).
  • SecurityPermissionLevels.DenyAll Deny the action to all users, regardless of authentication status or authorization level. If DenyAll is used on a class, no API endpoint for the governed actions will be generated.

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/behaviors.html b/modeling/model-components/behaviors.html new file mode 100644 index 000000000..3dc4c44fb --- /dev/null +++ b/modeling/model-components/behaviors.html @@ -0,0 +1,94 @@ + + + + + + Behaviors | Coalesce + + + + + + + + + + + + + + +
Skip to content

Behaviors

In a CRUD system, creating, updating, and deleting are considered especially different from reading. In Coalesce, the dedicated classes that perform these operations are derivatives of a special interface known as the IBehaviors<T>. These are their stories.


Coalesce separates out the parts of your API that read your data from the parts that mutate it. The read portion is performed by Data Sources, and the mutations are performed by behaviors. Like data sources, there exists a standard set of behaviors that Coalesce provides out-of-the-box that cover the most common use cases for creating, updating, and deleting objects in your data model.

Also like data sources, these functions can be easily overridden on a per-model basis, allowing complete control over the ways in which your data is mutated by the APIs that Coalesce generates. However, unlike data sources which can have as many implementations per model as you like, you can only have one set of behaviors.

Defining Behaviors

By default, each of your models that Coalesce exposes will utilize the standard behaviors (IntelliTect.Coalesce.StandardBehaviors<T, TContext>) for the out-of-the-box API endpoints that Coalesce provides. These behaviors provide a set of create, update, and delete methods for an EF Core DbContext, as well as a plethora of virtual methods that make the StandardBehaviors a great base class for your custom implementations. Unlike data sources which require an annotation to override the Coalesce-provided standard class, the simple presence of an explicitly declared set of behaviors will suppress the standard behaviors.

Note

When you define a set of custom behaviors, take note that these are only used by the standard set of API endpoints that Coalesce always provides. They will not be used to handle any mutations in any Methods you write for your models.

To create your own behaviors, you simply need to define a class that implements IntelliTect.Coalesce.IBehaviors<T>. To expose your behaviors to Coalesce, either place it as a nested class of the type T that your behaviors are for, or annotate it with the [Coalesce] attribute. Of course, the easiest way to create behaviors that doesn't require you to re-engineer a great deal of logic would be to inherit from IntelliTect.Coalesce.StandardBehaviors<T, TContext>, and then override only the parts that you need.

c#
public class Case
+{
+    public int CaseId { get; set; }
+    public int OwnerId { get; set; }
+    public bool IsDeleted { get; set; }
+    ...
+}
+
+[Coalesce]
+public class CaseBehaviors : StandardBehaviors<Case, AppDbContext>
+{
+    public CaseBehaviors(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override ItemResult BeforeSave(SaveKind kind, Case oldItem, Case item)
+    {
+        // Allow admins to bypass all validation.
+        if (User.IsInRole("Admin")) return true;
+
+        if (kind == SaveKind.Update && oldItem.OwnerId != item.OwnerId)
+            return "The owner of a case may not be changed";
+
+        // This is a new item, OR its an existing item and the owner isn't being modified.
+        if (item.CreatedById != User.GetUserId())
+            return "You are not the owner of this item.";
+
+        return true;
+    }
+
+    public override ItemResult BeforeDelete(Case item) 
+        => User.IsInRole("Manager") ? true : "Unauthorized";
+
+    public override Task ExecuteDeleteAsync(Case item)
+    {
+        // Soft delete the item.
+        item.IsDeleted = true;
+        return Db.SaveChangesAsync();
+    }
+}

Dependency Injection

All behaviors are instantiated using dependency injection and your application's IServiceProvider. As a result, you can add whatever constructor parameters you desire to your behaviors as long as a value for them can be resolved from your application's services. The single parameter to the StandardBehaviors is resolved in this way - the CrudContext<TContext> contains the common set of objects most commonly used, including the DbContext and the ClaimsPrincipal representing the current user.

Standard Behaviors

The standard behaviors, IntelliTect.Coalesce.StandardBehaviors<T> and its EntityFramework-supporting sibling IntelliTect.Coalesce.StandardBehaviors<T, TContext>, contain a significant number of properties and methods that can be utilized and/or overridden at your leisure.

Properties

CrudContext<TContext> Context

The object passed to the constructor that contains the set of objects needed by the standard behaviors, and those that are most likely to be used in custom implementations.

TContext Db

An instance of the db context that contains a DbSet<T> for the entity handled by the behaviors

ClaimsPrincipal User

The user making the current request.

IDataSource<T> OverrideFetchForUpdateDataSource

A data source that, if set, will override the data source that is used to retrieve the target of an update operation from the database. The incoming values will then be set on this retrieved object. Null by default; override by setting a value in the constructor.

IDataSource<T> OverridePostSaveResultDataSource

A data source that, if set, will override the data source that is used to retrieve a newly-created or just-updated object from the database after a save. The retrieved object will be returned to the client. Null by default; override by setting a value in the constructor.

IDataSource<T> OverrideFetchForDeleteDataSource

A data source that, if set, will override the data source that is used to retrieve the target of an delete operation from the database. The retrieved object will then be deleted. Null by default; override by setting a value in the constructor.

IDataSource<T> OverridePostDeleteResultDataSource

A data source that, if set, will override the data source that is used to retrieve the target of an delete operation from the database after it has been deleted. If an object is able to be retrieved from this data source, it will be sent back to the client. This allows soft-deleted items to be returned to the client when the user is able to see them. Null by default; override by setting a value in the constructor.

Method Overview

The standard behaviors implementation contains many different methods which can be overridden in your derived class to control functionality.

These methods often call one another, so overriding one method may cause some other method to no longer be called. The hierarchy of method calls, ignoring any logic or conditions contained within, is as follows:

SaveAsync
+    DetermineSaveKindAsync
+    GetDbSet
+    ValidateDto
+    MapIncomingDto
+    BeforeSaveAsync
+        BeforeSave
+    ExecuteSaveAsync
+    AfterSaveAsync
+
+DeleteAsync
+    BeforeDeleteAsync
+        BeforeDelete
+    ExecuteDeleteAsync
+        GetDbSet
+    AfterDelete

Method Details

All of the methods outlined above can be overridden. A description of each of the methods is as follows:

Task<ItemResult<TDto?>> SaveAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)

Save the given item. This is the main entry point for saving, and takes a DTO as a parameter. This method is responsible for performing mapping to your EF models and ultimately saving to your database. If it is required that you access properties from the incoming DTO in this method, a set of extension methods GetValue and GetObject are available on the DTO for accessing properties that are mapped 1:1 with your EF models.

Task<(SaveKind Kind, object? IncomingKey)> DetermineSaveKindAsync<TDto>(TDto incomingDto, IDataSource<T> dataSource, IDataSourceParameters parameters)

Given the incoming DTO on which Save has been called, examine its properties to determine if the operation is meant to be a create or an update operation. Return this distinction along with the key that was used to make the distinction.

This method is called outside of the standard data source by the base API controller to perform role-based security on saves at the controller level.

DbSet<T> GetDbSet()

Returns a DbSet<T> that items can be added to (creates) or remove from (deletes).

ItemResult ValidateDto(SaveKind kind, IClassDto<T> dto)

Provides a chance to validate the properties of the DTO object itself, as opposed to doing validation in BeforeSave of the properties of the model after the DTO has been mapped to the model. This also where attribute-based validation is performed.

To perform custom validation in this method (uncommon), there are a number of extension methods on IClassDto<T> that can be used to access the value of the properties of Generated C# DTOs. For behaviors on Custom DTOs where the DTO type is known, simply cast to the correct type.

T MapIncomingDto<TDto>(SaveKind kind, T? item, TDto dto, IDataSourceParameters parameters)

Map the properties of the incoming DTO to the model that will be saved to the database. For a SaveKind.Create, this will call the MapToNew method on the DTO and a new instance must be returned (item will be null). For a SaveKind.Update, this will call the MapTo method on the DTO, and the incoming item must be returned. If more precise control is needed, extension methods on IClassDto<T> or casting to a known type can be used to get specific values. If all else fails, the DTO can be reflected upon.

Task<ItemResult> BeforeSaveAsync(SaveKind kind, T? oldItem, T item);
+ItemResult BeforeSave(SaveKind kind, T? oldItem, T item)

Extension point for derived classes to intercept a save attempt and either reject it by returning an unsuccessful result, or approve it by returning success. The incoming item can also be modified at will in this method to override changes that the client made as desired.

ItemResult<T> AfterSaveAsync(SaveKind kind, T? oldItem, T item)

Extension point for derived classes to perform actions after a save operation has been completed.

If a non-successful ItemResult is returned, a failure response will be returned immediately without the updated item attached to the response. This will not prevent modifications to the database since changes have already been saved at this point.

If a successful ItemResult is returned, then a non-null Object on the result will override the item sent in the response, and a non-null IncludeTree on the result will override the include tree used to map that item to the DTO. If these properties are left null (e.g. you return true), the original item will be returned in the response to the client.

Task<ItemResult<TDto?>> DeleteAsync<TDto>(object id, IDataSource<T> dataSource, IDataSourceParameters parameters)

Deletes the given item.

Task<ItemResult> BeforeDeleteAsync(T item);
+ItemResult BeforeDelete(T item)

Provides an easy way to intercept a delete request and potentially reject it (by returning a non-success ItemResult).

Task ExecuteDeleteAsync(T item)

Performs the delete action against the database. The implementation of this method removes the item from its corresponding DbSet<T>, and then calls Db.SaveChangesAsync().

Overriding this allows for changing this row-deletion implementation to something else, like setting of a soft delete flag, or copying the data into another archival table before deleting.

void AfterDelete(ref T item, ref IncludeTree? includeTree)

Allows for performing any sort of cleanup actions after a delete has completed. If the item was still able to be retrieved from the database after the delete operation completed, this method allows lets you modify or replace the item that is sent back to the client by setting ref T item to another object or to null. Setting ref IncludeTree includeTree will override the Include Tree used to shape the response object.

Globally Replacing the Standard Behaviors

You can, of course, create a custom base behaviors class that all your custom implementations inherit from. But, what if you want to override the standard behaviors across your entire application, so that StandardBehaviors<,> will never be instantiated? You can do that too!

Simply create a class that implements IEntityFrameworkBehaviors<,> (the StandardBehaviors<,> already does - feel free to inherit from it), then register it at application startup like so:

c#
public class MyBehaviors<T, TContext> : StandardBehaviors<T, TContext>
+    where T : class
+    where TContext : DbContext
+{
+    public MyBehaviors(CrudContext<TContext> context) : base(context)
+    {
+    }
+
+    ...
+}
c#
public void ConfigureServices(IServiceCollection services)
+{
+    services.AddCoalesce(b =>
+    {
+        b.AddContext<AppDbContext>();
+        b.UseDefaultBehaviors(typeof(MyBehaviors<,>));
+    });

Your custom behaviors class must have the same generic type parameters - <T, TContext>. Otherwise, the Microsoft.Extensions.DependencyInjection service provider won't know how to inject it.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/data-sources.html b/modeling/model-components/data-sources.html new file mode 100644 index 000000000..7b3d76534 --- /dev/null +++ b/modeling/model-components/data-sources.html @@ -0,0 +1,124 @@ + + + + + + Data Sources | Coalesce + + + + + + + + + + + + + + +
Skip to content

Data Sources

In Coalesce, all data that is retrieved from your database through the generated controllers is done so by a data source. These data sources control what data gets loaded and how it gets loaded. By default, there is a single generic data source that serves all data for your models in a generic way that fits many of the most common use cases - the Standard Data Source.

In addition to this standard data source, Coalesce allows you to create custom data sources that provide complete control over the way data is loaded and serialized for transfer to a requesting client. These data sources are defined on a per-model basis, and you can have as many of them as you like for each model.

Defining Data Sources

By default, each of your models that Coalesce exposes will expose the standard data source (IntelliTect.Coalesce.StandardDataSource<T, TContext>). This data source provides all the standard functionality one would expect - paging, sorting, searching, filtering, and so on. Each of these component pieces is implemented in one or more virtual methods, making the StandardDataSource a great place to start from when implementing your own data source. To suppress this behavior of always exposing the raw StandardDataSource, create your own custom data source and annotate it with [DefaultDataSource].

To implement your own custom data source, you simply need to define a class that implements IntelliTect.Coalesce.IDataSource<T>. To expose your data source to Coalesce, either place it as a nested class of the type T that you data source serves, or annotate it with the [Coalesce] attribute. Of course, the easiest way to create a data source that doesn't require you to re-engineer a great deal of logic would be to inherit from IntelliTect.Coalesce.StandardDataSource<T, TContext>, and then override only the parts that you need.

c#
public class Person
+{
+    [DefaultDataSource]
+    public class IncludeFamily : StandardDataSource<Person, AppDbContext>
+    {
+        public IncludeFamily(CrudContext<AppDbContext> context) : base(context) { }
+
+        public override IQueryable<Person> GetQuery(IDataSourceParameters parameters) 
+            => Db.People
+            .Where(f => User.IsInRole("Admin") || f.CreatedById == User.GetUserId())
+            .Include(f => f.Parents).ThenInclude(s => s.Parents)
+            .Include(f => f.Cousins).ThenInclude(s => s.Parents);
+    }
+}
+
+[Coalesce]
+public class NamesStartingWithA : StandardDataSource<Person, AppDbContext>
+{
+    public NamesStartingWithA(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override IQueryable<Person> GetQuery(IDataSourceParameters parameters) 
+        => Db.People.Include(f => f.Siblings).Where(f => f.FirstName.StartsWith("A"));
+}

The structure of the IQueryable built by the various methods of StandardDataSource is used to shape and trim the structure of the DTO as it is serialized and sent out to the client. One may also override method IncludeTree GetIncludeTree(IQueryable<Person> query, IDataSourceParameters parameters) to control this explicitly. See Include Tree for more information on how this works.

WARNING

If you create a custom data source that has custom logic for securing your data, be aware that the default implementation of StandardDataSource (or your custom default implementation - see below) is still exposed unless you annotate one of your custom data sources with [DefaultDataSource]. Doing so will replace the default data source with the annotated class for your type T.

Dependency Injection

All data sources are instantiated using dependency injection and your application's IServiceProvider. As a result, you can add whatever constructor parameters you desire to your data sources as long as a value for them can be resolved from your application's services. The single parameter to the StandardDataSource is resolved in this way - the CrudContext<TContext> contains the common set of objects most commonly used, including the DbContext and the ClaimsPrincipal representing the current user.

Consuming Data Sources

 

The ViewModels and ListViewModels each have a property called $dataSource. This property accepts an instance of a DataSource class generated in the Model Layer.

ts
import { Person } from '@/models.g'
+import { PersonViewModel, PersonListViewModel } from '@/viewmodels.g'
+
+var viewModel = new PersonViewModel();
+viewModel.$dataSource = new Person.DataSources.IncludeFamily();
+viewModel.$load(1);
+
+var list = new PersonListViewModel();
+list.$dataSource = new Person.DataSources.NamesStartingWith();
+list.$load(1);

Standard Parameters

All methods on IDataSource<T> take a parameter that contains all the client-specified parameters for things paging, searching, sorting, and filtering information. Almost all virtual methods on StandardDataSource are also passed the relevant set of parameters.

Custom Parameters

On any data source that you create, you may add additional properties annotated with [Coalesce] that will then be exposed as parameters to the client. These property parameters can be primitives (numeric types, strings, enums), dates (DateTime, DateTimeOffset, DateOnly, TimeOnly), and collections of the preceding types.

c#
[Coalesce]
+public class NamesStartingWith : StandardDataSource<Person, AppDbContext>
+{
+    public NamesStartingWith(CrudContext<AppDbContext> context) : base(context) { }
+
+    [Coalesce]
+    public string StartsWith { get; set; }
+
+    public override IQueryable<Person> GetQuery(IDataSourceParameters parameters) 
+        => Db.People.Include(f => f.Siblings)
+        .Where(f => string.IsNullOrWhitespace(StartsWith) ? true : f.FirstName.StartsWith(StartsWith));
+}

List Auto-loading

You can setup TypeScript List ViewModels to automatically reload from the server when data source parameters change:

 

To automatically reload a ListViewModel when data source parameters change, simply use the list's $useAutoLoad or $startAutoLoad function:

ts
import { Person } from '@/models.g';
+import { PersonListViewModel } from '@/viewmodels.g';
+
+const list = new PersonListViewModel;
+const dataSource = list.$dataSource = new Person.DataSources.NamesStartingWith
+list.$useAutoLoad(); // When using options API, use $startAutoLoad(this) instead.
+
+// Trigger a reload:
+dataSource.startsWith = "Jo";

Standard Data Source

The standard data sources, IntelliTect.Coalesce.StandardDataSource<T> and its EntityFramework-supporting sibling IntelliTect.Coalesce.StandardDataSource<T, TContext>, contain a significant number of properties and methods that can be utilized and/or overridden at your leisure.

Default Loading Behavior

When an object or list of objects is requested, the default behavior of the the StandardDataSource is to load all of the immediate relationships of the object (parent objects and child collections), as well as the far side of many-to-many relationships. This is performed in StandardDataSource.GetQuery(), so in order to suppress this behavior in a custom data source, don't build you query off of base.GetQuery(), but instead start directly from the DbSet for your entity when building your custom query.

Clients can suppress this per-request by setting .$includes = "none" on your TypeScript ViewModel or ListViewModel, but note this is not a security mechanism and should only be used to reduce payload size or improve response time.

On the server, you can suppress this behavior by placing [Read(NoAutoInclude = true)] on either an entire class (affecting all navigation properties of that type), or on specific navigation properties. When placed on a entity class that holds sensitive data, this can help ensure you don't accidentally leak records due to forgetting to customize the data sources of the types whose navigation properties reference your sensitive entity.

You can also suppress this for your entire application by placing [assembly: CoalesceConfiguration(NoAutoInclude = true)] on the assembly that holds your models.

Properties

The following properties are available for use on the StandardDataSource any any derived instances.

CrudContext<TContext> Context

The object passed to the constructor that contains the set of objects needed by the standard data source, and those that are most likely to be used in custom implementations.

TContext Db

An instance of the DbContext that contains a DbSet<T> for the entity served by the data source.

ClaimsPrincipal User

The user making the current request.

int MaxSearchTerms

The max number of search terms to process when interpreting a search term word-by-word. Override by setting a value in the constructor.

int DefaultPageSize

The page size to use if none is specified by the client. Override by setting a value in the constructor.

int MaxPageSize

The maximum page size that will be served. By default, client-specified page sizes will be clamped to this value. Override by setting a value in the constructor.

Method Overview

The standard data source contains 19 different methods which can be overridden in your derived class to control its behavior.

These methods often call one another, so overriding one method may cause some other method to no longer be called. The hierarchy of method calls, ignoring any logic or conditions contained within, is as follows:

GetMappedItemAsync
+    GetItemAsync
+        GetQueryAsync
+            GetQuery
+        GetIncludeTree
+    TransformResults
+
+GetMappedListAsync
+    GetListAsync
+        GetQueryAsync
+            GetQuery
+        ApplyListFiltering
+            ApplyListPropertyFilters
+                ApplyListPropertyFilter
+            ApplyListSearchTerm
+        GetListTotalCountAsync
+        ApplyListSorting
+            ApplyListClientSpecifiedSorting
+            ApplyListDefaultSorting
+        ApplyListPaging
+        GetIncludeTree
+    TrimListFields
+    TransformResults
+
+GetCountAsync
+    GetQueryAsync
+        GetQuery
+    ApplyListFiltering
+        ApplyListPropertyFilters
+            ApplyListPropertyFilter
+        ApplyListSearchTerm
+    GetListTotalCountAsync

Method Details

All of the methods outlined above can be overridden. A description of each of the non-interface inner methods is as follows:

IQueryable<T> GetQuery(IDataSourceParameters parameters);
+Task<IQueryable<T>> GetQueryAsync(IDataSourceParameters parameters);

The method is the one that you will most commonly be override in order to implement custom query logic. The default implementation of GetQueryAsync simply calls GetQuery - be aware of this in cases of complex overrides/inheritance. From this method, you could:

  • Specify additional query filtering such as row-level security or soft-delete logic. Or, restrict the data source entirely for users or whole roles by returning an empty query.
  • Include additional data using EF's .Include() and .ThenInclude().
  • Add additional edges to the serialized object graph using Coalesce's .IncludedSeparately() and .ThenIncluded().

Note

When GetQuery is overridden, the Default Loading Behavior is overridden as well. To restore this behavior, use the IQueryable<T>.IncludeChildren() extension method to build your query.

IncludeTree? GetIncludeTree(IQueryable<T> query, IDataSourceParameters parameters)

Allows for explicitly specifying the Include Tree that will be used when serializing results obtained from this data source into DTOs. By default, the query that is build up through all the other methods in the data source will be used to build the include tree.

bool CanEvalQueryAsynchronously(IQueryable<T> query)

Called by other methods in the standard data source to determine whether or not EF Core async methods will be used to evaluate queries. This may be globally disabled when bugs like https://github.com/dotnet/SqlClient/issues/593 are present in EF Core.

IQueryable<T> ApplyListFiltering(IQueryable<T> query, IFilterParameters parameters)

A simple wrapper that calls ApplyListPropertyFilters and ApplyListSearchTerm.

IQueryable<T> ApplyListPropertyFilters(IQueryable<T> query, IFilterParameters parameters)

For each value in parameters.Filter that the user is allowed to read and filter by, invoke ApplyListPropertyFilter to apply a filter to the query.

IQueryable<T> ApplyListPropertyFilter(IQueryable<T> query, PropertyViewModel prop, string value)

Given a property and a client-provided string value, perform some filtering on that property.

  • Dates with a time component will be matched exactly.
  • Dates with no time component will match any dates that fell on that day.
  • Strings will match exactly unless an asterisk is found in the filter, in which case they will be matched with string.StartsWith with the asterisk stripped out.
  • Enums will match by string or numeric value. Multiple comma-delimited values will create a filter that will match on any of the provided values.
  • Numeric values will match exactly. Multiple comma-delimited values will create a filter that will match on any of the provided values.
  • The values null and "null" match a null property value (except string properties).

IQueryable<T> ApplyListSearchTerm(IQueryable<T> query, IFilterParameters parameters)

Applies filters to the query based on the specified search term. See [Search] for a detailed look at how searching works in Coalesce.

IQueryable<T> ApplyListSorting(IQueryable<T> query, IListParameters parameters)

If any client-specified sort orders are present, invokes ApplyListClientSpecifiedSorting. Otherwise, invokes ApplyListDefaultSorting.

IQueryable<T> ApplyListClientSpecifiedSorting(IQueryable<T> query, IListParameters parameters)

Applies sorting to the query based on sort orders specified by the client. If the client specified "none" as the sort field, no sorting will take place.

IQueryable<T> ApplyListDefaultSorting(IQueryable<T> query)

Applies default sorting behavior to the query, including behavior defined with use of [DefaultOrderBy] in C# POCOs, as well as fallback sorting to "Name" or primary key properties.

IQueryable<T> ApplyListPaging(IQueryable<T> query, IListParameters parameters, int? totalCount, out int page, out int pageSize)

Applies paging to the query based on incoming parameters. Provides the actual page and pageSize that were used as out parameters.

Task<int> GetListTotalCountAsync(IQueryable<T> query, IFilterParameters parameters)

Simple wrapper around invoking .Count() on a query.

void TransformResults(IReadOnlyList<T> results, IDataSourceParameters parameters);
+Task TransformResultsAsync(IReadOnlyList<T> results, IDataSourceParameters parameters);

Allows for transformation of a result set after the query has been evaluated. This will be called for both lists of items and for single items. This can be used for populating non-mapped properties on a model, or conditionally loading navigation properties using logic that depends upon the contents of each loaded record.

This method is only called immediately before mapping to a DTO; it does not affect operations that don't involve mapping to a DTO - e.g. when loading the target of a /save operation or when loading the invocation target of an instance method.

See the Security page for an example on how to use TransformResults to apply filtered includes.

Do not use TransformResults to modify any database-mapped scalar properties, since such changes could be inadvertently persisted to the database.

IList<TDto> TrimListFields<TDto>(IList<TDto> mappedResult, IListParameters parameters)

Performs trimming of the fields of the result set based on the parameters given to the data source. Can be overridden to forcibly disable this, override the behavior to always trim specific fields, or any other functionality desired.

Globally Replacing the Standard Data Source

You can, of course, create a custom base data source that all your custom implementations inherit from. But, what if you want to override the standard data source across your entire application, so that StandardDataSource<,> will never be instantiated? You can do that too!

Simply create a class that implements IEntityFrameworkDataSource<,> (the StandardDataSource<,> already does - feel free to inherit from it), then register it at application startup like so:

c#
public class MyDataSource<T, TContext> : StandardDataSource<T, TContext>
+    where T : class
+    where TContext : DbContext
+{
+    public MyDataSource(CrudContext<TContext> context) : base(context)
+    {
+    }
+
+    ...
+}
c#
public void ConfigureServices(IServiceCollection services)
+{
+    services.AddCoalesce(b =>
+    {
+        b.AddContext<AppDbContext>();
+        b.UseDefaultDataSource(typeof(MyDataSource<,>));
+    });
+}

Your custom data source must have the same generic type parameters - <T, TContext>. Otherwise, the Microsoft.Extensions.DependencyInjection service provider won't know how to inject it.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/methods.html b/modeling/model-components/methods.html new file mode 100644 index 000000000..3e67940c8 --- /dev/null +++ b/modeling/model-components/methods.html @@ -0,0 +1,154 @@ + + + + + + Methods | Coalesce + + + + + + + + + + + + + + +
Skip to content

Methods

Any public methods annotated with the [Coalesce] attribute that are placed on your model classes will have API endpoints and Typescript generated by Coalesce. Both instance methods and static methods are supported. Additionally, any instance methods on Services will also have API endpoints and TypeScript generated.

These custom methods allow you to implement any custom server-side functionality in your Coalesce application that falls outside of the standard CRUD functions that are generated for your entities.

Declaring Methods

Instance Methods

Instance Methods can be declared on your Entity classes. For example:

c#
public class User
+{
+    public int UserId { get; set; }
+
+    public string Email { get; set; }
+
+    [Coalesce]
+    public async Task<ItemResult> SendMessage(
+        [Inject] SmtpClient client,
+        ClaimsPrincipal sender,
+        string message
+    ) {
+        if (string.IsNullOrWhitespace(Email)) return "Recipient has no email";
+        if (string.IsNullOrWhitespace(message)) return "Message is required";
+
+        await client.SendMailAsync(new MailMessage(  
+            from: sender.GetEmailAddress(),
+            to: Email,
+            subject: "Message from MyApp",  
+            body: message
+        ));
+        return true;
+    }
+}

When an instance method is invoked, the target model instance will be loaded using the data source specified by [Execute(DataSource = typeof(MyDataSource))] if present. Otherwise, the model instance will be loaded using the default data source for the model's type. If you have a Custom Data Source annotated with [DefaultDataSource], that data source will be used. Otherwise, the Standard Data Source will be used. The consequence of this is that a user cannot call a method on an instance of entity that they're not allowed to see or load.

Instance methods are generated onto the TypeScript ViewModels.

When should I use Instance Methods?

Instance methods, as opposed to static or service methods, are a good fit when implementing an action that directly acts on or depends upon a specific instance of one of your entity types. One of their biggest benefits is the automatic row-level security from data sources as described above.

Static Methods

Static Methods can be declared on your Entity classes. For example:

c#
public class Person 
+{
+    public int PersonId { get; set; }
+
+    public string FirstName { get; set; }
+
+    [Coalesce]
+    public static ICollection<string> NamesStartingWith(
+        AppDbContext db,
+        string characters 
+    ) {
+        return db.People
+            .Select(p => p.FirstName)
+            .Where(f => f.StartsWith(characters))
+            .ToList();
+    }
+}

Static methods are generated onto the TypeScript ListViewModels. All of the same members that are generated for instance methods are also generated for static methods.

When should I use Static Methods?

Static methods are a good fit for actions that don't operate on a specific instance of an entity type, but whose functionality is still closely coupled with a specific, concrete entity type.

For example, imagine you have a File entity class. You could make a static method on that class that accepts a file as a parameter. This method would persist that file to storage and then save a new entity to the database. You would then disable Create on that entity, since the default /save endpoint cannot accept file uploads.

Or, imagine an Invoice class. You might make a static method that returns a summary of sales information for a given time range. Since this summarization would be performing aggregate functions against your Invoice entities and is therefore tightly coupled to Invoices, a static method would be suitable.

Service Methods

Service methods can be declared on a Coalesce Service class:

c#
[Coalesce, Service]
+public class MyService 
+{
+  [Coalesce]
+  public string MyServiceMethod() => "Hello, World!";
+}

Or, they can be declared via a Coalesce Service interface that has an implementation registered with dependency injection:

c#
[Coalesce, Service]
+public interface IMyService 
+{
+  string MyServiceMethod() => "Hello, World!";
+}

When declaring service methods by interface, a [Coalesce] attribute on each method is not needed - the entire interface is exposed by Coalesce.

When should I use Service Methods?

Services are a catch-all feature and can be used for almost any conceivable purpose in Coalesce to implement custom functionality that needs to be invoked by your front-end app.

However, there are some reasons why you might not want to use a service:

  • If the method logically operates on a single entity instance, and/or if using an instance method would let you utilize the row-level security already implemented by one of your data sources to authorize who can invoke the method.
  • If the service would only have one or two methods and would logically make sense as a static or instance method. In other words, if adding a new service class would be detrimental to the organization of your codebase and create "file sprawl".

On the other hand, services have some benefits that instance and static methods cannot provide:

  • Coalesce Services can be declared with an interface, rather than a concrete type, allowing for their implementation to be substituted more easily. For example, a service providing an external integration that you want to mock or stub during automated testing and/or local development.

Parameters

The following parameters can be added to your methods:

TypeDescription

Primitives, Dates, and other Scalars

Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, DateTime, DateTimeOffset), and their nullable variants, are accepted as parameters to be passed from the client to the method call.

Entity Models

When invoking the method on the client, the object's properties will only be serialized one level deep. If an entity model parameter has additional child object properties, they will not be included in the invocation of the method - only the object's primitive & date properties will be deserialized from the client.

External Types

Unlike entity model parameters, external type parameters will be serialized and sent by the client to an arbitrarily deep level, excluding any entity model properties that may be nested inside an external type.

Files

Methods can accept file uploads by using a parameter of type IntelliTect.Coalesce.Models.IFile (or any derived type, like IntelliTect.Coalesce.Models.File).

ICollection<T>, IEnumerable<T>

Collections of any of the above valid parameter types above are also valid parameter types.

DbContext

EF Core DbContext types are injected automatically.

ClaimsPrincipal

Passes through from HttpContext.User.

CancellationToken

Passes through from HttpContext.RequestAborted.

[Inject]

Parameters with the [Inject] attribute are injected from the application's IServiceProvider.

out IncludeTree

Deprecated. If you need to return an Include Tree to shape the serialization of the method's return value, you should use an ItemResult<T> return value and populate the IncludeTree property on the ItemResult object.

Return Values

You can return virtually anything from these methods:

TypeDescription

Primitives, Dates, and other Scalars

Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, DateTime, DateTimeOffset), and their nullable variants, may be returned from methods.

Entity Models

Any of the types of your models may be returned.

External Types

Any External Types you define may also be returned from a method.

When returning custom types from methods, be careful of the types of their properties. Coalesce will recursively discover and generate code for all public properties of your External Types. If you accidentally include a type that you do not own, these generated types could get out of hand extremely quickly.

Mark any properties you don't want generated with the [InternalUse] attribute, or give them a non-public access modifier. Whenever possible, don't return types that you don't own or control.

ICollection<T>, IEnumerable<T>

Collections of any of the above valid return types above are also valid return types. IEnumerables are useful for generator functions using yield. ICollection is highly suggested over IEnumerable whenever appropriate, though.

IQueryable<T>

Queryables of the valid return types above are valid return types. The query will be evaluated, and Coalesce will attempt to pull an Include Tree from the queryable to shape the response.

When Include Tree functionality is needed to shape the response but an IQueryable<> return type is not feasible, an ItemResult return value with an IncludeTree set on it will do the trick as well.

Files

Methods can return file downloads using type IntelliTect.Coalesce.Models.IFile (or any derived type, like IntelliTect.Coalesce.Models.File).

Please see the File Downloads section below for more details

ItemResult<T>, ItemResult, ListResult<T>

An IntelliTect.Coalesce.Models.ItemResult<T> of any of the valid return types above, including collections, is valid, as well as its non-generic variant ItemResult, and its list variant ListResult<T>.

Use an ItemResult whenever you might need to signal failure and return an error message from a custom method. The WasSuccessful and Message properties on the result object will be sent along to the client to indicate success or failure of the method. The type T will be mapped to the appropriate DTO object before being serialized as normal.

An Include Tree can be set on the object's IncludeTree parameter to shape the serialization of the method's returned value.

Security

You can implement role-based security on a method by placing the [Execute] on the method. Placing this attribute on the method with no roles specified will simply require that the calling user be authenticated.

Security for instance methods is also controlled by the data source that loads the instance - if the data source can't provide an instance of the requested model, the method won't be executed.

See the Security page to read more about custom method security, as well as all other security mechanisms in Coalesce.

Generated TypeScript

See API Callers and ViewModel Layer for details on the code that is generated for your custom methods.

Note

Any Task-returning methods with "Async" as a suffix to the C# method's name will have the "Async" suffix stripped from the generated Typescript.

Method Annotations

Methods can be annotated with attributes to control API exposure and TypeScript generation.

[Coalesce]

The [Coalesce] attribute causes the method to be exposed via a generated API controller. This is not needed for methods defined on an interface marked with [Service] - Coalesce assumes that all methods on the interface are intended to be exposed. If this is not desired, create a new, more restricted interface with only the desired methods to be exposed.

[Display]

The displayed name and description of a method, can be set via the [Display] attribute.

[Execute]

The [Execute] controls most other aspects of custom methods:

  • Role-based security
  • HTTP Method
  • HTTP Caching
  • Data Source (for model instance methods)
  • Attribute validation enable/disable
  • Parameter auto-clear after execute in admin UI

File Downloads

Coalesce supports exposing file downloads via custom methods. Simply return a IntelliTect.Coalesce.Models.IFile (or any derived type, like IntelliTect.Coalesce.Models.File), or an ItemResult<> of such.

Consuming file downloads

There are a few conveniences for easily consuming downloaded files from your custom pages.

 

The API Callers have a property url. This can be provided directly to your HTML template, with the browser invoking the endpoint automatically.

ts
import { PersonViewModel } from '@/viewmodels.g'
+
+var viewModel = new PersonViewModel();
+viewModel.$load(1);
html
<img :src="downloadPicture.url">

Alternatively, the API Callers for file-returning methods have a method getResultObjectUrl(vue). If the method was invoked programmatically (i.e. via caller(), caller.invoke(), or caller.invokeWithArgs()), this method returns an Object URL that can be set as the src of an image or video HTML tag.

ts
import { PersonViewModel } from '@/viewmodels.g'
+
+var viewModel = new PersonViewModel();
+await viewModel.$load(1);
+await viewModel.downloadPicture();
html
<img :src="downloadPicture.getResultObjectUrl()">

Database-stored Files

When storing large byte[] objects in your EF models, it is important that these are never loaded unless necessary. Loading these can cause significant garbage collector churn, or even bring your app to a halt. To achieve this with EF, you can either utilize Table Splitting, or you can use an entire dedicated table that only contains a primary key and the binary content, and nothing else.

WARNING

Storing large binary objects in relational databases comes with significant drawbacks. For large-volume cloud solutions, it is much more costly than dedicated cloud-native file storage like Azure Storage or S3. Also of note is that the larger a database is, the more difficult its backup process becomes.

For files that are stored in your database, Coalesce supports a pattern that allows the file to be streamed directly to the HTTP response without needing to allocate a chunk of memory for the whole file at once. Simply pass an EF IQueryable<byte[]> to the constructor of IntelliTect.Coalesce.Models.File. This implementation, however, is specific to the underlying EF database provider. Currently, only SQL Server and SQLite are supported. Please open a Github issue to request support for other providers. An example of this mechanism is included in the DownloadAttachment method in the code sample below.

The following is an example of utilizing Table Splitting for database-stored files. Generally speaking, metadata about the file should be stored on the "main" entity, and only the bytes of the content should be split into a separate entity.

c#
public class AppDbContext : DbContext
+{
+    public DbSet<Case> Cases { get; set; }
+
+    protected override void OnModelCreating(ModelBuilder modelBuilder)
+    {
+        modelBuilder
+            .Entity<Case>()
+            .ToTable("Cases")
+            .HasOne(c => c.AttachmentContent)
+            .WithOne()
+            .HasForeignKey<CaseAttachmentContent>(c => c.CaseId);
+        modelBuilder
+            .Entity<CaseAttachmentContent>()
+            .ToTable("Cases")
+            .HasKey(d => d.CaseId);
+    }
+}
+
+public class Case
+{
+    public int CaseId { get; set; }
+
+    [Read]
+    public string AttachmentName { get; set; }
+
+    [Read]
+    public long AttachmentSize { get; set; }
+
+    [Read]
+    public string AttachmentType { get; set; }
+
+    [Read, MaxLength(32)] // Adjust max length based on chosen hash algorithm.
+    public byte[] AttachmentHash { get; set; } // Could also be a base64 string if so desired.
+
+    [InternalUse]
+    public CaseAttachmentContent AttachmentContent { get; set; } = new();
+
+    [Coalesce]
+    public async Task UploadAttachment(AppDbContext db, IFile file)
+    {
+        if (file.Content == null) return;
+
+        var content = new byte[file.Length];
+        await file.Content.ReadAsync(content.AsMemory());
+
+        AttachmentContent = new () { CaseId = CaseId, Content = content };
+        AttachmentName = file.Name;
+        AttachmentSize = file.Length;
+        AttachmentType = file.ContentType;
+        AttachmentHash = SHA256.HashData(content);
+    }
+
+    [Coalesce]
+    [Execute(HttpMethod = HttpMethod.Get, VaryByProperty = nameof(AttachmentHash))]
+    public IFile DownloadAttachment(AppDbContext db)
+    {
+        return new IntelliTect.Coalesce.Models.File(db.Cases
+            .Where(c => c.CaseId == this.CaseId)
+            .Select(c => c.AttachmentContent.Content)
+        )
+        {
+            Name = AttachmentName,
+            ContentType = AttachmentType,
+        };
+    }
+}
+
+public class CaseAttachmentContent
+{
+    public int CaseId { get; set; }
+
+    [Required]
+    public byte[] Content { get; set; }
+}

Other File Storage

For any other storage mechanism, implementations are similar to the database storage approach above. However, instead of table splitting or using a whole separate table, the file contents are simply stored elsewhere. Continue storing metadata about the file on the primary entity, and implement upload/download methods as desired that wrap the storage provider.

For downloads, prefer directly providing the underlying Stream to the IFile versus wrapping a byte[] in a MemoryStream. This will reduce server memory usage and garbage collector churn.

For cloud storage providers where complex security logic is not needed, consider having clients consume the URL of the cloud resource directly rather than passing the file content through your own server.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-components/properties.html b/modeling/model-components/properties.html new file mode 100644 index 000000000..60e4d89a3 --- /dev/null +++ b/modeling/model-components/properties.html @@ -0,0 +1,25 @@ + + + + + + Properties | Coalesce + + + + + + + + + + + + + + +
Skip to content

Properties

Models in a Coalesce application are just EF Core POCOs. The properties defined on your models should fit within the constraints of EF Core.

Coalesce currently has a few more restrictions than what EF Core allows, but hopefully over time some of these restrictions can be relaxed as Coalesce grows in capability.

Property Varieties

The following kinds of properties may be declared on your models.

Primary Key

To work with Coalesce, your model must have a single property for a primary key. By convention, this property should be named the same as your model class with Id appended to that name, but you can also annotate a property with [Key] or name it exactly "Id" to denote it as the primary key.

Foreign Keys & Reference Navigation Properties

While a foreign key may be declared on your model using only the EF OnModuleBuilding method to specify its purpose, Coalesce won't know what the property is a key for. Therefore, foreign key properties should always be accompanied by a reference navigation property, and vice versa.

In cases where the foreign key is not named after the navigation property with "Id" appended, the [ForeignKeyAttribute] may be used on either the key or the navigation property to denote the other property of the pair, in accordance with the recommendations set forth by EF Core's Modeling Guidelines.

Collection Navigation Properties

Collection navigation properties can be used in a straightforward manner. In the event where the inverse property on the other side of the relationship cannot be determined, [InversePropertyAttribute] will need to be used. EF Core provides documentation on how to use this attribute. Errors will be displayed at generation time if an inverse property cannot be determined without the attribute. We recommend recommended that you declare the type of collection navigation properties as ICollection<T>.

Non-mapped POCOs

Properties of a type that are not on your DbContext will also have corresponding properties generated on the TypeScript ViewModels typed as Plain Models, and the values of such properties will be sent with the object to the client when requested. Properties of this type will also be sent back to the server by the client when they are encountered.

See External Types for more information.

Primitives, Scalars, & Dates

Most common built-in primitive and scalar data types (numerics, strings, booleans, enums, DateTime, DateTimeOffset), and their nullable variants, are all supported as model properties.

Getter-only Properties

Any property that only has a getter will also have a corresponding property generated in the TypeScript ViewModels and will receive values of the property from the server, but values won't be sent back to the server.

If such a property is defined as an auto-property, the [NotMapped] attribute should be used to prevent EF Core from attempting to map such a property to your database.

Init-only Properties

Properties on Entity Models that use an init accessor rather than a set accessor will be implicitly treated as required, and can also only have a value provided when the entity is created for the first time. Any values provided during save actions for init-only properties when updating an existing entity will be ignored.

Property Customization

For any of the kinds of properties outlined above, the following customizations can be applied:

Attributes

Coalesce provides a number of Attributes, and supports a number of other .NET attributes, that allow for further customization of your model.

Security

Property values received by the server from the client will be ignored if rejected by any property-level Security. This security is implemented in the Generated C# DTOs.

Loading & Serialization

The Default Loading Behavior, any custom functionality defined in Data Sources, and [DtoIncludes] & [DtoExcludes] may also restrict which properties are sent to the client when requested.

NotMapped

While Coalesce does not do anything special for the [NotMapped] attribute, it is still an important attribute to keep in mind while building your model, as it prevents EF Core from doing anything with the property.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-types/dtos.html b/modeling/model-types/dtos.html new file mode 100644 index 000000000..052f75e8b --- /dev/null +++ b/modeling/model-types/dtos.html @@ -0,0 +1,110 @@ + + + + + + Custom DTOs | Coalesce + + + + + + + + + + + + + + +
Skip to content

Custom DTOs

In addition to the generated Generated C# DTOs that Coalesce will create for you, you may also create your own implementations of an IClassDto. These types are first-class citizens in Coalesce - you will get a full suite of features surrounding them as if they were entities. This includes generated API Controllers, admin pages, and full TypeScript ViewModels and TypeScript ListViewModels.

Purpose

Custom DTOs have a fair amount of overlap with the capabilities of Standalone Entities.

  • Both can expose a lightweight or alternate representation of an entity. For example, a "listing" version of an entity with large data members omitted (such that for performance, they've never retrieved from the database).
  • Both choose exactly how each property value is mapped between the client and the database. Each property mapping is written by hand by the developer.
  • Both expose their own set of API endpoints (/get, /list, /save, etc).

However, standalone entities have the following advantages over custom DTOs:

  • Standalone entities are significantly easier to write than custom DTOs for read-only use cases.
  • Standalone entities aren't limited to being based on an EF entity, while custom DTOs must always choose an entity type to be based upon.
  • Standalone entities support all security attributes, while custom DTOs do not support property-level Security Attributes, nor [DtoIncludes] & [DtoExcludes]. In custom DTOs, this logic must be written by hand in the MapTo/MapFrom methods when it is needed.
  • Standalone entities support surgical saves easily, while custom DTOs require significant extra code.

Custom DTOs have the following advantages over standalone entities:

  • You write all the mapping logic between the DTO and the entity, which can make it easier to implement large amounts of custom logic at this layer that standalone entities would need to implement with Restrictions. While these kinds of mapping restrictions can also be written in a standalone entity's projected EF query, some logic can be difficult or impossible to represent in an EF query expression.

Creating a Custom DTO

To create a custom DTO, define a class annotated with [Coalesce] that implements IClassDTO<T>, where T is an EF Core POCO with a corresponding DbSet<T> on a DbContext that has also been exposed with [Coalesce]. Add any Properties to it just as you would add model properties to a regular EF model. If you are not exposing a DbContext class with [Coalesce] but still wish to create a Custom DTO based upon one of its entities, you can inherit from IClassDTO<T, TContext> instead as a means of explicitly declaring the type of the DbContext.

Next, ensure that one property is annotated with [Key] so that Coalesce can know the primary key of your DTO in order to perform database lookups and keep track of your object uniquely in the client-side TypeScript.

Now, populate the required MapTo and MapFrom methods with code for mapping from and to your DTO, respectively (the methods are named with respect to the underlying entity, not the DTO). Most properties probably map one-to-one in both directions, but you probably created a DTO because you wanted some sort of custom mapping - say, mapping a collection on your entity with a comma-delimited string on the DTO. This is also the place to perform any user-based, role-based, property-level security. You can access the current user on the IMappingContext object.

c#
[Coalesce]
+public class CaseDto : IClassDto<Case>
+{
+    [Key]
+    public int CaseId { get; set; }
+
+    public string Title { get; set; }
+
+    [Read]
+    public string AssignedToName { get; set; }
+
+    public void MapTo(Case obj, IMappingContext context)
+    {
+        obj.Title = Title;
+    }
+
+    public void MapFrom(Case obj, IMappingContext context = null, IncludeTree tree = null)
+    {
+        CaseId = obj.CaseKey;
+        Title = obj.Title;
+        if (obj.AssignedTo != null)
+        {
+            AssignedToName = obj.AssignedTo.Name;
+        }
+    }
+}

WARNING

Custom DTOs do not utilize property-level Security Attributes nor [DtoIncludes] & [DtoExcludes], since these are handled in the Generated DTOs. If you need property-level security or trimming, you must write it yourself in the MapTo and MapFrom methods.

If you have any child objects on your DTO, you can invoke the mapper for some other object using the static Mapper class. Also seen in this example is how to respect the Include Tree when mapping entity types; however, respecting the IncludeTree is optional. Since this DTO is a custom type that you've written, if you're certain your use cases don't need to worry about object graph trimming, then you can ignore the IncludeTree. If you do ignore the IncludeTree, you should pass null to calls to Mapper - don't pass in the incoming IncludeTree, as this could cause unexpected results.

c#
using IntelliTect.Coalesce.Mapping;
+
+[Coalesce]
+public class CaseDto : IClassDto<Case>
+{
+    public int ProductId { get; set; }
+    public Product Product { get; set; }
+    ...
+
+    public void MapFrom(Case obj, IMappingContext context = null, IncludeTree tree = null)
+    {
+        ProductId = obj.ProductId;
+
+        if (tree == null || tree[nameof(this.Product)] != null)
+            Product = Mapper.MapToDto<Product, ProductDtoGen>(obj.Product, context, tree?[nameof(this.Product)]
+        ...
+    }
+}

Using Custom DataSources and Behaviors

Declaring an IClassDto DataSource

When you create a custom DTO, it will use the Standard Data Source and Standard Behaviors just like any of your regular Entity Models. If you wish to override this, your custom data source and/or behaviors MUST be declared in one of the following ways:

  1. As a nested class of the DTO. The relationship between your data source or behaviors and your DTO will be picked up automatically.

    c#
    [Coalesce]
    +public class CaseDto : IClassDto<Case>
    +{
    +    [Key]
    +    public int CaseId { get; set; }
    +
    +    public string Title { get; set; }
    +    
    +    ...
    +
    +    public class MyCaseDtoSource : StandardDataSource<Case, AppDbContext>
    +    {
    +        ...
    +    }
    +}
  2. With a [DeclaredFor] attribute that references the DTO type:

    c#
    [Coalesce]
    +public class CaseDto : IClassDto<Case>
    +{
    +    [Key]
    +    public int CaseId { get; set; }
    +
    +    public string Title { get; set; }
    +    
    +    ...
    +}
    +
    +[Coalesce, DeclaredFor(typeof(CaseDto))]
    +public class MyCaseDtoSource : StandardDataSource<Case, AppDbContext>
    +{
    +    ...
    +}

ProjectedDtoDataSource

In addition to creating a Data Source by deriving from Standard Data Source, there also exists a class ProjectedDtoDataSource that can be used to easily perform projection from EF model types to your custom DTO types using EF query projections. ProjectedDtoDataSource inherits from Standard Data Source.

c#
[Coalesce, DeclaredFor(typeof(CaseDto))]
+public class CaseDtoSource : ProjectedDtoDataSource<Case, CaseDto, AppDbContext>
+{
+    public CaseDtoSource(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override IQueryable<CaseDto> ApplyProjection(IQueryable<Case> query, IDataSourceParameters parameters)
+    {
+        return query.Select(c => new CaseDto
+        {
+            CaseId = c.CaseKey,
+            Title = c.Title,
+            AssignedToName = c.AssignedTo == null ? null : c.AssignedTo.Name
+        });
+    }
+}

Surgical Saves

Surgical saves require DTOs on the server that are capable of determining which of their properties have been set by the model binder, as surgical saves are sent from the client by entirely omitting properties from the x-www-form-urlencoded body that is sent to the server.

The Generated C# DTOs implement the necessary logic for this; however, any Custom DTOs must have this logic manually written by you, the developer. Either implement the same pattern that can be seen in the Generated C# DTOs, or do not use surgical saves with Custom DTOs.

The Vue ViewModels for custom DTOs have surgical saves disabled by default. This can be re-enabled through the $saveMode property if you've implemented the necessary logic on the server side.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-types/entities.html b/modeling/model-types/entities.html new file mode 100644 index 000000000..2a89de870 --- /dev/null +++ b/modeling/model-types/entities.html @@ -0,0 +1,25 @@ + + + + + + Entity Models | Coalesce + + + + + + + + + + + + + + +
Skip to content

Entity Models

Models are the core business objects of your application - they serve as the fundamental representation of data in your application. The design of your models is very important. In Entity Framework Core (EF), data models are just Plain Old CLR Objects (POCOs).

Building a Data Model

To start building your data model that Coalesce will generate code for, follow the best practices for EF Core. Guidance on this topic is available in abundance in the Entity Framework Core documentation.

Don't worry about querying or saving data when you're just getting started - Coalesce will provide a lot of that functionality for you, and it is very easy to customize what Coalesce offers later. To get started, just build your POCOs and DbContext classes. Annotate your DbContext class with [Coalesce] so that Coalesce will discover it and generate code based off of your context for you.

Before you start building, you are highly encouraged to read the sections below. The linked pages explain in greater detail what Coalesce will build for you for each part of your data model.

Properties

Read Properties for an outline of the different types of properties that you may place on your models and the code that Coalesce will generate for each of them.

Attributes

Coalesce provides a number of C# attributes that can be used to decorate your model classes and their properties in order to customize behavior, appearance, security, and more. Coalesce also supports a number of annotations from System.ComponentModel.DataAnnotations.

Read Attributes to learn more.

Methods

You can place both static and interface methods on your model classes. Any public methods annotated with [Coalesce] will have a generated API endpoint and corresponding generated TypeScript members for calling this API endpoint. Read Methods to learn more.

Customizing CRUD Operations

Once you've got a solid data model in place, its time to start customizing the way that Coalesce will read your data, as well as the way that it will handle your data when processing creates, updates, and deletes.

Data Sources

The method by which you can control what data the users of your application can access through Coalesce's generated APIs is by creating custom data sources. These are classes that allow complete control over the way that data is retrieved from your database and provided to clients. Read Data Sources to learn more.

Behaviors

Behaviors in Coalesce are to mutating data as data sources are to reading data. Defining a behaviors class for a model allows complete control over the way that Coalesce will create, update, and delete your application's data in response to requests made through its generated API. Read Behaviors to learn more.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-types/external-types.html b/modeling/model-types/external-types.html new file mode 100644 index 000000000..ab4b95f0b --- /dev/null +++ b/modeling/model-types/external-types.html @@ -0,0 +1,65 @@ + + + + + + External Types | Coalesce + + + + + + + + + + + + + + +
Skip to content

External Types

In Coalesce, any type which is connected to your data model but is not directly part of it is considered to be an "external type".

The collection of external types for a data model looks like this:

  1. Take all of the api-served types in your data model. This includes Entity Models and Custom DTOs.
  2. Take all of the property types, method parameters, and method return types of these types.
  3. Any of these types which are not built-in scalar types and not one of the aforementioned api-served types are external types.
  4. For any external type discovered, any of the property types which qualify under the above rules are also external types.

WARNING

Be careful when using types that you do not own for properties and method returns in your data model. When Coalesce generates external type ViewModels and DTOs, it will not stop until it has exhausted all paths that can be reached by following public property types and method returns.

In general, you should only expose types that you have created so that you will always have full control over them. Mark any properties you don't wish to expose with [InternalUse], or make those members non-public.

Generated Code

For each external type found in your application's model, Coalesce will generate:

Example Data Model

For example, in the following scenario, the following classes are considered as external types:

  • PluginMetadata, exposed through a getter-only property on ApplicationPlugin.
  • PluginResult, exposed through a method return on ApplicationPlugin.

PluginHandler is not because it not exposed by the model, neither directly nor through any of the other external types.

c#
public class AppDbContext : DbContext {
+    public DbSet<Application> Applications { get; set; }
+    public DbSet<ApplicationPlugin> ApplicationPlugins { get; set; }
+}
+
+public class Application {
+    public int ApplicationId { get; set; }
+    public string Name { get; set; }
+    public ICollection<ApplicationPlugin> Plugins { get; set; }
+}
+
+public class ApplicationPlugin {
+    public int ApplicationPluginId { get; set; }
+    public int ApplicationId { get; set; }
+    public Application Application { get; set; }
+
+    public string TypeName { get; set; }
+
+    private PluginHandler GetInstance() => 
+        ((PluginHandler)Activator.CreateInstance(Type.GetType(TypeName)));
+
+    public PluginMetadata Metadata => GetInstance().GetMetadata();
+
+    public PluginResult Invoke(string action, string data) => GetInstance().Invoke(Application, action, data);
+}
+
+public abstract class PluginHandler { 
+    public abstract PluginMetadata GetMetadata();
+    public abstract PluginResult Invoke(Application app, string action, string data);
+}
+
+public abstract class PluginMetadata { 
+    public bool Name { get; set; }
+    public string Version { get; set; }
+    public ICollection<string> Actions { get; set; }
+}
+
+public abstract class PluginResult { 
+    public bool Success { get; set; }
+    public string Message { get; set; }
+}

Loading & Serialization

External types have slightly different behavior when undergoing serialization to be sent to the client. Unlike database-mapped types which are subject to the rules of Include Tree, external types ignore the Include Tree when being mapped to DTOs for serialization. Read External Type Caveats for a more detailed explanation of this exception.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-types/services.html b/modeling/model-types/services.html new file mode 100644 index 000000000..419cba6d2 --- /dev/null +++ b/modeling/model-types/services.html @@ -0,0 +1,65 @@ + + + + + + Services | Coalesce + + + + + + + + + + + + + + +
Skip to content

Services

In a Coalesce application, you are likely to end up with a need for some API endpoints that aren't closely tied with your regular data model. While you could stick Static Methods on one of your entities, to do so is detrimental to the organization of your code.

Instead, Coalesce allows you to generate API Controllers and a TypeScript client from a service. A service, in this case, is nothing more than a C# class or an interface with methods on it, annotated with [Coalesce, Service]. An implementation of this class or interface must be injectable from your application's service container, so a registration in Program.cs is needed.

The instance methods of these services work just like other custom Methods in Coalesce, with one notable distinction: Instance methods don't operate on an instance of a model, but instead on a dependency injected instance of the service.

Generated Code

For each external type found in your application's model, Coalesce will generate:

  • An API controller with endpoints that correspond to the service's instance methods.
  • A TypeScript client containing the members outlined in Methods for invoking these endpoints.

Example Service

An example of a service might look something like this:

c#
[Coalesce, Service]
+public interface IWeatherService
+{
+    WeatherData GetWeather(string zipCode);
+}

With an implementation:

c#
public class WeatherService : IWeatherService
+{
+    public WeatherService(AppDbContext db)
+    {
+        this.db = db;
+    }
+
+    public WeatherData GetWeather(string zipCode)
+    {
+        // Assuming some magic HttpGet method that works as follows...
+        var response = HttpGet("http://www.example.com/api/weather/" + zipCode);
+        return response.Body.SerializeTo<WeatherData>();
+    }
+
+    // This method is not exposed because it is not defined on the interface
+    public void MethodThatIsNotExposed() {  }
+}

And a registration:

c#
// In Program.cs
+builder.Services.AddCoalesce<AppDbContext>();
+builder.Services.AddScoped<IWeatherService, WeatherService>();

Using Interfaces With Services

Interfaces annotated with [Coalesce, Service] will automatically expose all methods on that interface. Your interfaces should precisely define the service you intend to expose through Coalesce. Any members you do not want to expose should not be included in the interface.

Although it is not required to use an interface (you can generate endpoints directly from the implementation), it is highly recommended. Interfaces improve testability and reduce the risk of inadvertently changing the signature of a published API.

If you choose to generate directly from the implementation, annotate the class itself with [Coalesce, Service] rather than the interface. Unlike interfaces, each method you want to expose on the class must be explicitly annotated with the [Coalesce] attribute.

c#
[Coalesce, Service]
+public class WeatherService
+{
+    public WeatherService(AppDbContext db)
+    {
+        this.db = db;
+    }
+
+    [Coalesce]
+    public WeatherData GetWeather(string zipCode)
+    {
+        // Assuming some magic HttpGet method that works as follows...
+        var response = HttpGet("http://www.example.com/api/weather/" + zipCode);
+        return response.Body.SerializeTo<WeatherData>();
+    }
+
+    // This method is not exposed because it lacks the [Coalesce] attribute
+    private void MethodThatIsNotExposed() { }
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/modeling/model-types/standalone-entities.html b/modeling/model-types/standalone-entities.html new file mode 100644 index 000000000..382b7932f --- /dev/null +++ b/modeling/model-types/standalone-entities.html @@ -0,0 +1,171 @@ + + + + + + Standalone Entities | Coalesce + + + + + + + + + + + + + + +
Skip to content

Standalone Entities

In Coalesce, Standalone Entities are types that behave like entity types (they can support the full suite of generated CRUD API endpoints), but are not required to be based on Entity Framework. These types are discovered by Coalesce by annotating them with [Coalesce, StandaloneEntity].

For these types, you must define at least one custom Data Source, and optionally a Behaviors class as well. If no behaviors are defined, the type is implicitly read-only, equivalent to turning off create/edit/delete via the Security Attributes.

Read-only with EF backing store

In the below example, the standalone entity PageListing is used as a lightweight, read-only representation of a Page EF entity, with some properties omitted for performance (Content) and other properties simplified (Author).

c#
[Coalesce, StandaloneEntity]
+public class PageListing
+{
+    public int Id { get; set; }
+
+    [Search(SearchMethod = SearchAttribute.SearchMethods.Contains), ListText]
+    public string Title { get; set; } = "";
+
+    [DefaultOrderBy(OrderByDirections.Descending)]
+    public DateTimeOffset Date { get; set; }
+
+    public string Author { get; set; }
+
+    public class DefaultSource(CrudContext<AppDbContext> context) : StandardDataSource<PageListing>(context)
+    {
+        public override Task<IQueryable<PageListing>> GetQueryAsync(IDataSourceParameters parameters)
+          => context.DbContext.Pages
+            .Where(p => p.IsPublished)
+            .Select(p => new PageListing 
+            {
+                Id = p.Id,
+                Title = p.Title,
+                DateModified = p.Date,
+                Author = p.CreatedBy.FullName
+            });
+    }
+}
+
+// EF entity model
+public class Page 
+{
+    public int Id { get; set; }
+    public string Title { get; set; }
+    public DateTimeOffset DateModified { get; set; }
+    public string Content { get; set; }
+    public bool IsPublished { get; set; }
+    public int CreatedById { get; set; }
+    public User CreatedBy { get; set; }
+}

Read/write with EF backing store

Building on the previous example, we can make the Title of a PageListing editable as follows:

c#
[Coalesce, StandaloneEntity]
+[Create(DenyAll)]
+[Delete(DenyAll)]
+public class PageListing
+{
+    // properties and data source same as previous example.
+
+    public class Behaviors(CrudContext<AppDbContext> context) : StandardBehaviors<PageListing>(context)
+    {
+        public override Task ExecuteSaveAsync(SaveKind kind, PageListing? oldItem, PageListing item)
+        {
+            // Note: `page` is guaranteed to exist here because the `PageListing item` instance
+            // is a projection from the Page table and was loaded from the type's data source 
+            // immediately before ExecuteSaveAsync was called.
+            var page = await context.DbContext.Pages.FindAsync(item.Id)!;
+
+            // Perform mapping of properties that should be savable, from `item` to the backing entity.
+            page.Title = item.Title;
+
+            await context.DbContext.SaveChangesAsync();
+        }
+
+        public override Task ExecuteDeleteAsync(PageListing item) => throw new NotSupportedException();
+    }
+}

To add support for creates or deletes, implement the additional necessary actions in the overridden methods on the behaviors, and remove the DenyAll attributes.

c#
[Coalesce, StandaloneEntity]
+[Create(DenyAll)]
+[Delete(DenyAll)]
+public class PageListing
+{
+    // properties and data source same as previous example.
+
+    public class Behaviors(CrudContext<AppDbContext> context) : StandardBehaviors<PageListing>(context)
+    {
+        public override async Task ExecuteSaveAsync(SaveKind kind, PageListing? oldItem, PageListing item)
+        {
+            Page page;
+            if (kind == SaveKind.Create)
+            {
+                context.DbContext.Add(page = new Page { CreatedById = User.GetUserId() });
+            }
+            else
+            {
+                page = await context.DbContext.Pages.FindAsync(item.Id)!;
+            }
+
+            page.Title = item.Title;
+            await context.DbContext.SaveChangesAsync();
+
+            // Propagate the new primary key back to the standalone entity instance 
+            // (in case this was a Create action instead of an Update).
+            item.Id = page.Id;
+        }
+
+        public override async Task ExecuteDeleteAsync(PageListing item)
+        {
+            var page = await context.DbContext.Pages.FindAsync(item.Id)!;
+            context.DbContext.Remove(page);
+            await context.DbContext.SaveChangesAsync();
+        }
+    }
+}

Read-only without EF

Standalone entities can be created with any kind of backing store you can imagine - an in-memory store, a Redis instance, or an external REST API, for example.

The below example is admittedly contrived, as it is unlikely that you would be using an in-memory collection as a data persistence mechanism. A more likely real-world scenario would be to dependency inject an interface to some other data store.

c#
[Coalesce, StandaloneEntity]
+public class StandaloneExample
+{
+    public int Id { get; set; }
+
+    [Search(SearchMethod = SearchAttribute.SearchMethods.Contains), ListText]
+    public string Name { get; set; } = "";
+
+    [DefaultOrderBy]
+    public DateTimeOffset Date { get; set; }
+
+    private static int nextId = 0;
+    private static ConcurrentDictionary<int, StandaloneExample> backingStore = new ConcurrentDictionary<int, StandaloneExample>();
+
+    public class DefaultSource(CrudContext context) : StandardDataSource<StandaloneExample>(context)
+    {
+        public override Task<IQueryable<StandaloneExample>> GetQueryAsync(IDataSourceParameters parameters)
+            => Task.FromResult(backingStore.Values.AsQueryable());
+    }
+}

Read/write without EF

Building on the previous example, we can add support for saves and deletes by adding a Behaviors implementation:

c#

+[Coalesce, StandaloneEntity]
+public class StandaloneExample
+{
+    // properties and data source same as previous example.
+
+    public class Behaviors(CrudContext context) : StandardBehaviors<StandaloneExample>(context)
+    {
+        public override Task ExecuteDeleteAsync(StandaloneExample item)
+        {
+            backingStore.TryRemove(item.Id, out _);
+            return Task.CompletedTask;
+        }
+
+        public override Task ExecuteSaveAsync(SaveKind kind, StandaloneExample? oldItem, StandaloneExample item)
+        {
+            if (kind == SaveKind.Create)
+            {
+                item.Id = Interlocked.Increment(ref nextId);
+                backingStore.TryAdd(item.Id, item);
+            }
+            else if (backingStore.TryGetValue(item.Id, out var storeItem))
+            {
+                storeItem.Name = item.Name;
+                storeItem.Date = item.Date;
+            }
+            return Task.CompletedTask;
+        }
+    }
+}

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/net-logo.svg b/net-logo.svg new file mode 100644 index 000000000..d204a0904 --- /dev/null +++ b/net-logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/stacks/agnostic/dtos.html b/stacks/agnostic/dtos.html new file mode 100644 index 000000000..a4b271291 --- /dev/null +++ b/stacks/agnostic/dtos.html @@ -0,0 +1,25 @@ + + + + + + DTOs | Coalesce + + + + + + + + + + + + + + +
Skip to content

DTOs

Data Transfer Objects, or DTOs, allow for transformations of data from the data store into a format more suited for transfer and use on the client side. This often means trimming properties and flattening structures to provide a leaner over-the-wire experience. Coalesce aims to support this as seamlessly as possible.

Coalesce supports two types of DTOs:

Automatically Generated DTOs

Every class that is exposed through Coalesce's generated API will have a corresponding DTO generated for it. These DTOs are used to shuttle data back and forth to the client. They are generated classes that have nullable versions of all the properties on the POCO class.

The [Read], [Edit], and [Restrict] attributes can be used to apply property-level security, which manifests as conditional logic in the mapping methods on the generated DTOs. These attributes are enforced in the mapping operations to and from the generated DTO.

See the Security page to read more about property-level security, as well as all other security mechanisms in Coalesce.

[DtoIncludes] & [DtoExcludes] can be used to indicate which properties should be transferred to the client in which cases, and Include Trees are used to dictate how these DTOs are shaped when mapping from your domain objects. Do note that these are not security features.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/agnostic/generation.html b/stacks/agnostic/generation.html new file mode 100644 index 000000000..ff4cf9c32 --- /dev/null +++ b/stacks/agnostic/generation.html @@ -0,0 +1,42 @@ + + + + + + Code Generation Overview | Coalesce + + + + + + + + + + + + + + +
Skip to content

Code Generation Overview

Coalesce's principal purpose is a code generation framework for automating the creation of the boring-but-necessary parts of a web application. Below, you find an overview of the different components of Coalesce's code generation features.

Running Code Generation

Coalesce's code generation is ran via a dotnet CLI tool, dotnet coalesce. In order to invoke this tool, you must have the appropriate references to the package that provides it in your .csproj file:

xml
<Project Sdk="Microsoft.NET.Sdk.Web">
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+
+    <!-- Necessary to use DotNetCliToolReference with modern framework versions -->
+    <DotnetCliToolTargetFramework>net8.0</DotnetCliToolTargetFramework>
+  </PropertyGroup>
+
+  ...
+
+  <ItemGroup>
+    <PackageReference Include="IntelliTect.Coalesce" Version="..." />
+  </ItemGroup>
+
+  <ItemGroup>
+    <DotNetCliToolReference Include="IntelliTect.Coalesce.Tools" Version="..." />
+  </ItemGroup>  
+</Project>

CLI Options

All configuration of the way that Coalesce interacts with your projects, including locating, analyzing, and producing generated code, is done in a json configuration file, coalesce.json. Read more about this file at Code Generation Configuration.

There are a couple of extra options which are only available as CLI parameters to dotnet coalesce. These options do not affect the behavior of the code generation - only the behavior of the CLI itself.

  • <configFile> - First positional parameter. Path to the coalesce.json configuration file. If not specified, will search upwards from the current folder for a file named coalesce.json.
  • --debug - When this flag is specified when running dotnet coalesce, Coalesce will wait for a debugger to be attached to its process before starting code generation.
  • --what-if|-WhatIf - Runs all code generation, but does not make changes to disk.
  • --verify - Assert that the code generation does not have any pending changes to its output. Useful in CI builds when combined with --what-if to ensure that developers haven't forgotten to run code gen before committing changes.
  • -v|--verbosity <level> - Set the verbosity of the output. Options are trace, debug, information, warning, error, critical, and none.

Generated Code

Coalesce will generate a full vertical stack of code for you:

Backend C#

API Controllers

For each of your Entity Models, Custom DTOs, and Services, an API controller is created in the /Api/Generated directory of your web project. These controllers provide a number of endpoints for interacting with your data.

These controllers can be secured at a high level using Security Attributes, and when applicable to the type, with Data Sources and Behaviors.

C# DTOs

For each of your Entity Models, a C# DTO class is created. These classes are used to hold the data that will be serialized and sent to the client, as well as data that has been received from the client before it has been mapped back to your EF POCO class.

See Generated C# DTOs for more information.

Frontend - Vue

An overview of the Vue generated code can be found at Vue Overview.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/agnostic/getting-started-modeling.html b/stacks/agnostic/getting-started-modeling.html new file mode 100644 index 000000000..fe46b603e --- /dev/null +++ b/stacks/agnostic/getting-started-modeling.html @@ -0,0 +1,25 @@ + + + + + + Data Modeling | Coalesce + + + + + + + + + + + + + + +
Skip to content

Data Modeling

At this point, you can open up the newly-created solution in Visual Studio and run your application. However, your application won't do much without a data model, so you will probably want to do the following:

  • Create an initial Data Model by adding EF entity classes to the data project and the corresponding DbSet<> properties to AppDbContext. You will notice that the starter project includes a single model, Widget, to start with. Feel free to change this model or remove it entirely. Read Entity Models for more information about creating a data model.

  • Run dotnet ef migrations add Init (Init can be any name) in the data project to create an initial database migration.

  • Run Coalesce's code generation by either:

    • Running dotnet coalesce in the web project's root directory (dotnet restore first if you get an error about "command or file was not found").
    • Running the coalesce npm script in the Task Runner Explorer, or in a terminal with npm run coalesce.

You're now at a point where you can start creating your own pages!


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html new file mode 100644 index 000000000..78ca47cfa --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-audit-log-page.html @@ -0,0 +1,38 @@ + + + + + + c-admin-audit-log-page | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-audit-log-page

A full-featured page for interacting with Coalesce's Audit Logging. Presents a view similar to c-admin-table-page with content optimized for viewing audit log records. Designed to be routed to directly with vue-router.

Examples

ts
import { CAdminAuditLogPage } from 'coalesce-vue-vuetify3';
+const router = new Router({
+  // ...
+  routes: [
+    // ... other routes
+    {
+      path: '/admin/audit-logs',
+      component: CAdminAuditLogPage,
+      props: {
+        type: 'AuditLog'
+      }
+    },
+  ]
+})

Props

type: string

The PascalCase name of your IAuditLog implementation.

list?: ListViewModel

An optional ListViewModel that will be used if provided instead of the one the component will create automatically from the provided type prop.

color: string = 'primary'

A Vuetify color name to be applied to the toolbar at the top of the page.

Slots

row-detail: { item: AuditLogViewModel }

A slot that can be used to replace the entire content of the Detail column on the page.

row-detail-append: { item: AuditLogViewModel }

A slot that can be used to append additional content to the Detail column on the page.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-display.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-display.html new file mode 100644 index 000000000..318f80b84 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-display.html @@ -0,0 +1,32 @@ + + + + + + c-admin-display | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-display

Behaves the same as c-display, except any collection navigation properties will be rendered as links to an admin list page, and any models will be rendered as a link to an admin item page.

Links for collections are resolved from vue-router with a route name of coalesce-admin-list, a type route param containing the name of the collection's type, and a query parameter filter.<foreign key name> with a value of the primary key of the owner of the collection. This route is expected to resolve to a c-admin-table-page, which is setup by default by the template outlined in Getting Started with Vue.

Links for single models are resolved from vue-router with a route name of coalesce-admin-item, a type route param containing the name of the model's type, and a id route param containing the object's primary key. This route is expected to resolve to a c-admin-editor-page, which is setup by default by the template outlined in Getting Started with Vue.

Examples

template
<!-- Renders regularly as text: -->
+<c-admin-display :model="person" for="firstName" />
+
+<!-- Renders as a link to an item: -->
+<c-admin-display :model="person" for="company" />
+
+<!-- Renders as a link to a list: -->
+<c-admin-display :model="person" for="casesAssigned" />

Props

Same as c-display.

Slots

Same as c-display.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html new file mode 100644 index 000000000..168bb4cf8 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor-page.html @@ -0,0 +1,38 @@ + + + + + + c-admin-editor-page | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-editor-page

A page for a creating/editing single ViewModel instance. Provides a c-admin-editor and a c-admin-methods for the instance. Designed to be routed to directly with vue-router.

Examples

ts
import { CAdminEditorPage } from 'coalesce-vue-vuetify3';
+
+const router = new Router({
+  // ...
+  routes: [
+    // ... other routes
+    {
+      path: '/admin/:type/edit/:id?',
+      name: 'coalesce-admin-item',
+      component: CAdminEditorPage,
+      props: true,
+    },
+  ]
+})

Props

type: string

The PascalCase name of the type to be created/edited.

id?: number | string

The primary key of the item being edited. If null or not provided, the page will be creating a new instance of the provided type instead.

autoSave?: 'auto' | boolean = 'auto'

Controls whether auto-save is used for the item. If auto (the default), auto-saves are used as long as the type has no unsaved init-only properties.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html new file mode 100644 index 000000000..3cc6a84c2 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-editor.html @@ -0,0 +1,25 @@ + + + + + + c-admin-editor | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-editor

An editor for a single ViewModel instance. Provides a c-input for each property of the model.

Does not automatically enable auto-save - if desired, this must be enabled by the implementor of this component.

Examples

template
<c-admin-editor :model="person" />

Props

model: ViewModel | ListViewModel

The ViewModel to render an editor for.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html new file mode 100644 index 000000000..2140694a0 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-method.html @@ -0,0 +1,25 @@ + + + + + + c-admin-method | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-method

Provides an interface for invoking a method and rendering its result, designed to be use in an admin page.

For each parameter of a method, a c-input will be rendered to accept the input of that parameter. A button is provided to trigger an invocation of the method, progress and errors are rendered with a c-loader-status, and results are rendered with c-display.

Examples

template
<c-admin-method :model="person" for="setTitle" auto-reload-model />

Props

for: string | Method

A metadata specifier for the method. One of:

  • A string with the name of the method belonging to model.
  • A direct reference to a method's metadata object.
  • A string in dot-notation that starts with a type name and ending with a method name.

model: ViewModel | ListViewModel | ServiceViewModel

An ViewModel or ListViewModel or ServiceViewModel owning the method and API Caller that was specified by the for prop.

autoReloadModel?: boolean = false

True if the model should have its $load invoked after a successful invocation of the method.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html new file mode 100644 index 000000000..741104bf3 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-methods.html @@ -0,0 +1,25 @@ + + + + + + c-admin-methods | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-methods

Renders in a Vuetify v-expansion-panels a c-admin-method for each method on a ViewModel or ListViewModel.

Examples

template
<c-admin-methods :model="person" class="x" auto-reload-model />
template
<c-admin-methods :model="person" auto-reload-model />
template
<c-admin-methods :model="personList" auto-reload-model />

Props

model: ViewModel | ListViewModel

An ViewModel or ListViewModel or ServiceViewModel whose methods should each render as a c-admin-method.

autoReloadModel?: boolean = false

True if the model should have its $load invoked after a successful invocation of any method.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html new file mode 100644 index 000000000..7f31dc7fd --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-page.html @@ -0,0 +1,38 @@ + + + + + + c-admin-table-page | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-table-page

A full-featured page for interacting with a ListViewModel. Provides a c-admin-table and a c-admin-methods for the list. Designed to be routed to directly with vue-router.

Examples

ts
import { CAdminTablePage } from 'coalesce-vue-vuetify3';
+
+const router = new Router({
+  // ...
+  routes: [
+    // ... other routes
+    {
+      path: '/admin/:type',
+      name: 'coalesce-admin-list',
+      component: CAdminTablePage,
+      props: true,
+    },
+  ]
+})

Props

type: string

The PascalCase name of the type to be listed.

autoSave?: 'auto' | boolean = 'auto'

Controls whether auto-save is used for items when in edit mode. If auto (the default), auto-saves are used as long as the type has no init-only properties.

list?: ListViewModel

An optional ListViewModel that will be used if provided instead of the one the component will otherwise create automatically.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html new file mode 100644 index 000000000..c584e31a3 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table-toolbar.html @@ -0,0 +1,25 @@ + + + + + + c-admin-table-toolbar | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-table-toolbar

A full-featured toolbar for a ListViewModel designed to be used on an admin page, including "Create" and "Reload" buttons, a c-list-range-display, a c-list-page, a search field, c-list-filters, and a c-list-page-size.

Examples

template
<c-admin-table-toolbar :list="personList" />
template
<c-admin-table-toolbar :list="personList" color="pink" v-model:editable="isEditable" />

Props

list: ListViewModel

The ListViewModel to render the toolbar for.

color: string = 'primary'

The color of the toolbar.

editable?: boolean

'update:editable'?: (boolean: $event) => void

If provided, adds a button to toggle editing state. Should be two-way bound with v-model.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html new file mode 100644 index 000000000..daf5c1de2 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-admin-table.html @@ -0,0 +1,25 @@ + + + + + + c-admin-table | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-admin-table

An full-featured table for a ListViewModel, including a c-admin-table-toolbar, c-table, and c-list-pagination.

The table can be in read mode (default), or toggled into edit mode with the button provided by the c-admin-table-toolbar. When placed into edit mode, auto-save is enabled.

Examples

template
<c-admin-table :list="personList" />

Props

list: ListViewModel

The ListViewModel to render a table for.

pageSizes?: number[]

An optional list of available page sizes to offer through the c-list-pagination's c-list-page-size component. Defaults to [10, 25, 100].

autoSave?: 'auto' | boolean = 'auto'

Controls whether auto-save is used for items when in edit mode. If auto (the default), auto-saves are used as long as the type has no init-only properties.

queryBind?: boolean

If true, the Data Source Standard Parameters of the provided ListViewModel will be read from and written to the window's query string. The "Editable" state of the table will also be bound to the query string.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html b/stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html new file mode 100644 index 000000000..2ee9a4194 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-datetime-picker.html @@ -0,0 +1,34 @@ + + + + + + c-datetime-picker | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-datetime-picker

A general, all-purpose date/time input component that can be used either with models and metadata or as a standalone component using only v-model.

Examples

template
<c-datetime-picker :model="person" for="birthDate" />
+
+<c-datetime-picker v-model="standaloneDate" />
+
+<c-datetime-picker 
+    v-model="standaloneTime" 
+    date-kind="time"
+    date-format="h:mm a"
+/>

Props

for?: string | DateProperty | DateValue

A metadata specifier for the value being bound. One of:

  • A string with the name of the value belonging to model.
  • A direct reference to a metadata object.
  • A string in dot-notation that starts with a type name.

model?: Model | DataSource

An object owning the value that was specified by the for prop. If provided, the input will be bound to the corresponding property on the model object.

value?: Date // Vue 2
+modelValue?: Date // Vue 3

If binding the component with v-model, accepts the value part of v-model.

dateKind?: 'date' | 'time' | 'datetime' = 'datetime'

Whether the date is only a date, only a time, or contains significant date and time information.

If the component was bound with metadata using the for prop, this will default to the kind specified by [DateType].

dateFormat?: string

The format of the date that will be rendered in the component's text field, and the format that will be attempted first when parsing user input in the text field.

Defaults to:

  • M/d/yyyy h:mm a if dateKind == 'datetime',
  • M/d/yyyy if dateKind == 'date', or
  • h:mm a if dateKind == 'time'.

WARNING

When parsing a user's text input into the text field, c-datetime-picker will first attempt to parse it with the format specified by dateFormat, or the default as described above if not explicitly specified.

If this fails, Coalesce then tries a large number of common formats.

If that failed, then finally the date will be parsed with the Date constructor, but only if the dateKind is datetime or date. This works fairly well on all modern browsers, but can still occasionally have issues. c-datetime-picker tries its best to filter out bad parses from the Date constructor, like dates with a year earlier than 1000.

step?: number

The increments, in minutes, of the selectable value. Values should divide 60 evenly, or be multiples of 60. For example, a step of 15 allows selection of :00, :15, :30, and :45 minute time values.

min?: Date

The smallest allowable date/time selection.

max?: Date

The largest allowable date/time selection.

allowedDates?: Date[] | ((date: Date) => boolean)

An array of permitted dates (items should have a time of midnight), or a function that returns true if a date is allowed for selection. Does not impact time selection.

timeZone?: string

The IANA Time Zone Database name that the user will pick the date/time value in. Defaults to the value configured with setDefaultTimeZone if the value bound to with model/for is a DateTimeOffset.

native?: boolean

True if a native HTML5 input should be used instead of a popup menu with date/time pickers inside of it.

readonly?: boolean

True if the component should be read-only. This state is also inherited from any wrapping v-form.

disabled?: boolean

True if the component should be disabled. This state is also inherited from any wrapping v-form.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-display.html b/stacks/vue/coalesce-vue-vuetify/components/c-display.html new file mode 100644 index 000000000..f6acc8354 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-display.html @@ -0,0 +1,30 @@ + + + + + + c-display | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-display

A general-purpose component for displaying any Value by rendering the value to a string with the display functions from the Models Layer. For plain string and number values, usage of this component is largely superfluous. For all other value types including dates, booleans, enums, objects, and collections, it is very handy.

Examples

Typical usage, providing an object and a property on that object:

template
<c-display :model="person" for="gender" />

Customizing date formatting (view format patterns):

template
<c-display :model="person" for="birthDate" format="M/d/yyyy" />

A contrived example of using c-display to render the result of an API Caller:

template
<c-display 
+    :value="person.setFirstName.result" 
+    :for="person.$metadata.methods.setFirstName.return" 
+    element="div"
+/>

Displaying a standalone date value without a model or other source of metadata:

template
<c-display :value="dateProp" format="M/d/yyyy" />

Props

for: string | Property | Value

A metadata specifier for the value being bound. Either a direct reference to the metadata object, or a string with the name of the value belonging to model, or a string in dot-notation that starts with a type name.

model?: Model | DataSource

An object owning the value that was specified by the for prop.

format: DisplayOptions["format"]

Shorthand for :options="{ format: format }", allowing for specification of the format to be used when displaying dates.

See DisplayOptions for details on the options available for format.

options: DisplayOptions

Specify options for formatting some kinds of values, including dates. See DisplayOptions for details.

value: any // Vue 2
+modelValue: any // Vue 3

Can be provided the value to be displayed in conjunction with the for prop, as an alternative to the model prop.

This is an uncommon scenario - it is generally easier to use the for/model props together.

Slots

default - Used to display fallback content if the value being displayed is either null or "" (empty string).

[DataTypeAttribute]

For properties and other values annotated with [DataTypeAttribute], the following special handling occurs based on the data type:

  • DataType.MultilineText: Renders with white-space: pre-wrap.
  • DataType.Password: Renders with a show/hide toggle (hidden by default), showing a fixed number of dot characters when hidden.
  • DataType.Url: Renders as a clickable link.
  • DataType.EmailAddress: Renders as a clickable mailto link.
  • DataType.PhoneNumber: Renders as a clickable tel link.
  • DataType.ImageUrl: Renders as an img element.
  • "Color": Renders a colored dot next to the value, interpreting the field value as a 7-character HTML hex color code.

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-input.html b/stacks/vue/coalesce-vue-vuetify/components/c-input.html new file mode 100644 index 000000000..53af20deb --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-input.html @@ -0,0 +1,30 @@ + + + + + + c-input | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-input

A general-purpose input component for most Values. c-input delegates to other components based on the type of value it is bound to. This includes both other Coalesce Vuetify Components as well as direct usages of some Vuetify components.

All attributes are passed through to the delegated-to component, allowing for full customization of the underlying Vuetify component.

A summary of the components delegated to, by type:

Any other unsupported type will simply be displayed with c-display, unless a default slot is provided - in that case, the default slot will be rendered instead.

When bound to a ViewModel, the validation rules for the bound property will be obtained from the ViewModel and passed to Vuetify's rules prop.

Examples

Typical usage, providing an object and a property on that object:

template
<c-input :model="person" for="firstName" />

Customizing the Vuetify component used:

template
<c-input :model="comment" for="content" textarea solo />

Binding to API Caller args objects:

template
<c-input 
+    :model="person.setFirstName" 
+    for="newName" />

Or, using a more verbose syntax:

template
<c-input 
+    :model="person.setFirstName.args" 
+    for="Person.methods.setFirstName.newName" />

Binding to Data Source Parameters:

template
<c-input :model="personList.$dataSource" for="startsWith" />

Usage with v-model (this scenario is atypical - the model/for pair of props are used in almost all scenarios):

template
<c-input v-model="person.firstName" for="Person.firstName" />

Props

for?: string | Property | Value

A metadata specifier for the value being bound. One of:

  • A string with the name of the value belonging to model.
  • A direct reference to a metadata object.
  • A string in dot-notation that starts with a type name.

model?: Model | DataSource

An object owning the value that was specified by the for prop. If provided, the input will be bound to the corresponding property on the model object.

value?: any // Vue 2
+modelValue?: any // Vue 3

If binding the component with v-model, accepts the value part of v-model.

Slots

default - Used to display fallback content if c-input does not support the type of the value being bound. Generally this does not need to be used, as you should avoid creating c-input components for unsupported types in the first place.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html b/stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html new file mode 100644 index 000000000..70b4b5e81 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-list-filters.html @@ -0,0 +1,25 @@ + + + + + + c-list-filters | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-list-filters

A component that provides an interface for modifying the filters prop of a ListViewModel's parameters.

Example Usage

template
<c-list-filters :list="list" />

Props

list: ListViewModel

The ListViewModel whose filters will be editable.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html b/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html new file mode 100644 index 000000000..790d10dd8 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-list-page-size.html @@ -0,0 +1,25 @@ + + + + + + c-list-page-size | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-list-page-size

A component that provides an dropdown for modifying the pageSize parameter prop of a ListViewModel.

Example Usage

template
<c-list-page-size :list="list" />

Props

list: ListViewModel

The ListViewModel whose pagination will be editable.

pageSizes?: number[]

An optional list of available page sizes to offer through c-list-page-size. Defaults to [10, 25, 100].


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html b/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html new file mode 100644 index 000000000..45eeb1dda --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-list-page.html @@ -0,0 +1,25 @@ + + + + + + c-list-page | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-list-page

A component that provides previous/next buttons and a text field for modifying the page parameter prop of a ListViewModel.

Example Usage

template
<c-list-page :list="list" />

Props

list: ListViewModel

The ListViewModel whose current page will be changeable with the component.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html b/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html new file mode 100644 index 000000000..3b8df5844 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-list-pagination.html @@ -0,0 +1,25 @@ + + + + + + c-list-pagination | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-list-pagination

A component that provides an interface for modifying the pagination parameters of a ListViewModel.

This is a composite of c-list-page-size, c-list-range-display, and c-list-page, arranged horizontally. It is designed to be used above or below a table (e.g. c-table).

Example Usage

template
<c-list-pagination :list="list" />

Props

list: ListViewModel

The ListViewModel whose pagination will be editable.

pageSizes?: number[]

An optional list of available page sizes to offer through c-list-page-size. Defaults to [10, 25, 100].


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html b/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html new file mode 100644 index 000000000..43700d69b --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-list-range-display.html @@ -0,0 +1,25 @@ + + + + + + c-list-range-display | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-list-range-display

Displays pagination information about the current $items of a ListViewModel in the format <start index> - <end index> of <total count>.

Uses the pagination information returned from the last successful $load call, not the current $params of the ListViewModel.

Examples

template
<c-list-range-display :list="list" />

Props

list: ListViewModel

The ListViewModel to display pagination information for.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html b/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html new file mode 100644 index 000000000..dc5a17d0a --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-loader-status.html @@ -0,0 +1,68 @@ + + + + + + c-loader-status | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-loader-status

A component for displaying progress and error information for one or more API Callers.

TIP

It is highly recommended that all API Callers utilized by your application that don't have any other kind of error handling should be represented by a c-loader-status so that users can be aware of any errors that occur.

Progress is indicated with a Vuetify v-progress-linear component, and errors are displayed in a v-alert. Transitions are applied to smoothly fade between the different states the the caller can be in.

Examples

Wrap contents of a details/edit page:

template
<h1>Person Details</h1>
+<c-loader-status
+    :loaders="{ 
+        'no-initial-content no-error-content': [person.$load],
+        '': [person.$save, person.$delete],
+    }"
+    #default
+>
+    First Name: {{ person.firstName }}
+    Last Name: {{ person.lastName }}
+    Employer: {{ person.company.name }}
+</c-loader-status>

Use c-loader-status to render a progress bar and any error messages, but don't use it to control content:

template
<c-loader-status :loaders="list.$load" />

Wrap a save/submit button:

template
<c-loader-status :loaders="[person.$save, person.$delete]" no-loading-content>
+    <button> Save </button>
+    <button> Delete </button>
+</c-loader-status>

Hides the table before the first load has completed, or if loading the list encountered an error. Don't show the progress bar after we've already loaded the list for the first time (useful for loads that occur without user interaction, e.g. setInterval):

template
<c-loader-status
+    :loaders="list.$load"
+    no-initial-content 
+    no-error-content
+    no-secondary-progress 
+>
+    <table>
+        <tr v-for="item in list.$items"> ... </tr>
+    </table>
+</c-loader-status>

Props

loaders: 
+  // Flags per component:
+  | ApiCaller 
+  | ApiCaller[]
+  // Flags per caller:
+  | { [flags: string]: ApiCaller | ApiCaller[] } 

This prop has multiple options that support simple or complex usage scenarios:

Flags Per Component

A single instance, or array of API Callers, whose status will be represented by the component. The flags for these objects will be determined from the component-level flag props.

template
<c-loader-status
+  :loaders="[product.$load, person.$load]"
+  no-initial-content
+  no-error-content
+/>

Flags Per Caller

A more advanced usage allows passing different flags for different callers. Provide a dictionary object with entries mapping zero or more flags to one or more API Callers. Multiple entries of flags/caller pairs may be specified in the dictionary to give different behavior to different API callers. These flags are layered on top of the base flag props.

template
<c-loader-status
+  :loaders="{ 
+    'no-initial-content no-error-content': [person.$load],
+    'no-loading-content': [person.$save, person.$delete],
+  }"
+/>

progressPlaceholder: boolean = true

Specify if space should be reserved for the progress indicator. If set to false, the content in the default slot may jump up and down slightly as the progress indicator shows and hides.

progressAbsolute: boolean = false

Positions the progress bar absolutely. This can be useful in compact interfaces where extra space for the progress bar is undesirable, allowing the progress bar to potentially overlap content while active.

height: number = 10

Specifies the height in pixels of the v-progress-linear used to indicate progress.


+no-loading-content?: boolean;
+no-error-content?: boolean;
+no-initial-content?: boolean;
+no-progress?: boolean;
+no-initial-progress?: boolean;
+no-secondary-progress?: boolean;

Component level flags options that control behavior when the simple form of loaders (single instance or array) is used, as well as provide baseline defaults that can be overridden by the advanced form of loaders (object map) .

Flags

The available flags are as follows, all of which default to true. In the object literal syntax for loaders, the no- prefix may be omitted to set the flag to true.

Flag
Description
no-loading-contentControls whether the default slot is rendered while any API caller is loading (i.e. when caller.isLoading === true).
no-error-contentControls whether the default slot is rendered while any API Caller is in an error state (i.e. when caller.wasSuccessful === false).
no-initial-contentControls whether the default slot is rendered while any API Caller has yet to receive a response for the first time (i.e. when caller.wasSuccessful === null).
no-progressMaster toggle for whether the progress indicator is shown in any scenario.
no-initial-progressControls whether the progress indicator is shown when an API Caller is loading for the very first time (i.e. when caller.wasSuccessful === null).
no-secondary-progressControls whether the progress indicator is shown when an API Caller is loading any time after its first invocation (i.e. when caller.wasSuccessful !== null).

Slots

default - Accepts the content whose visibility is controlled by the state of the supplied API Callers. It will be shown or hidden according to the flags defined for each caller.

TIP

(Vue 2 Only): Define the default slot as a scoped slot (e.g. with #default or v-slot:default on the c-loader-status) to prevent the VNode tree from being created when the content should be hidden. This improves performance and helps avoid null reference errors that can be caused when trying to render objects that haven't been loaded yet.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html b/stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html new file mode 100644 index 000000000..d317a4e9a --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-select-many-to-many.html @@ -0,0 +1,34 @@ + + + + + + c-select-many-to-many | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-select-many-to-many

A multi-select dropdown component that allows for selecting values fetched from the generated /list API endpoints for collection navigation properties that were annotated with [ManyToMany].

TIP

It is unlikely that you'll ever need to use this component directly - it is highly recommended that you use c-input instead and let it delegate to c-select-many-to-many for you.

Examples

template
<c-select-many-to-many :model="case" for="caseProducts" />
template
<c-select-many-to-many 
+    :model="case" 
+    for="caseProducts" 
+    dense
+    outlined
+/>
template
<c-select-many-to-many 
+    v-model="case.caseProducts" 
+    for="Case.caseProducts" 
+/>

Props

for: string | Property | Value

A metadata specifier for the value being bound. One of:

  • A string with the name of the value belonging to model.
  • A direct reference to a metadata object.
  • A string in dot-notation that starts with a type name.

Note

c-select-many-to-many expects metadata for the "real" collection navigation property on a model. If you provide it the string you passed to [ManyToMany], an error wil be thrown.

model?: Model

An object owning the value that was specified by the for prop. If provided, the input will be bound to the corresponding property on the model object.

value?: any // Vue 2
+modelValue?: any // Vue 3

If binding the component with v-model, accepts the value part of v-model.

params?: ListParameters

An optional set of Data Source Standard Parameters to pass to API calls made to the server.

cache?: ResponseCachingConfiguration | boolean

If provided and non-false, enables response caching on the component's internal API caller.

Events

The following events and automatic API calls are only used when bound to a model that has auto-saves enabled.

  • adding - Fired when a new item has been selected, but before the call to /save has completed.
  • added - Fired when the call to /save has completed after adding a new item.
  • deleting - Fired when an item has been removed, but before the call to /delete has completed.
  • deleted - Fired when the call to /delete has completed after removing an item.

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.html b/stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.html new file mode 100644 index 000000000..b79063281 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-select-string-value.html @@ -0,0 +1,53 @@ + + + + + + c-select-string-value | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-select-string-value

A dropdown component that will present a list of suggested string values from a custom API endpoint. Allows users to input values that aren't provided by the endpoint.

Effectively, this is a server-driven autocomplete list.

Examples

template
<c-select-string-value 
+    :model="person" 
+    for="jobTitle"
+    method="getSuggestedJobTitles"
+/>
ts
const selectedTitle = ref<string>();
template
<c-select-string-value 
+    v-model="selectedTitle"
+    label="Job Title"
+    for="Person"
+    method="getSuggestedJobTitles"
+/>
c#
class Person 
+{
+    public int PersonId { get; set; } 
+
+    public string JobTitle { get; set; }
+
+    [Coalesce]
+    public static async Task<ICollection<string>> GetSuggestedJobTitles(
+      AppDbContext db, string search
+    )
+    {
+        return await db.People
+            .Select(p => p.JobTitle)
+            .Distinct()
+            .Where(t => t.StartsWith(search))
+            .OrderBy(t => t)
+            .Take(100)
+            .ToListAsync()
+    }
+}

Props

for: string | Property | Value

A metadata specifier for the value being bound. One of:

  • A string with the name of the bound value belonging to model, or a direct reference to a metadata object that describes the bound value belonging to model.
  • A string equal to the name of the type that owns the method described by method. Use v-model to bind the selected string value.

model: Model

An object owning the value that was specified by the for prop. If provided, the input will be bound to the corresponding property on the model object.

method: string

The camel-cased name of the Custom Method to invoke to get the list of valid values. Will be passed a single string parameter search. Must be a static method on the type of the provided model object that returns a collection of strings.

params?: DataSourceParameters

An optional set of Data Source Standard Parameters to pass to API calls made to the server.

listWhenEmpty?: boolean = false

True if the method should be invoked and the list displayed when the entered search term is blank.

eager?: boolean = false

True if the bound value should be updated as the user types. Otherwise, the bound value is updated when focus is lost or when a suggested value is chosen. This is only applicable for Vuetify 2 - in Vuetify 3, this is the default behavior.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-select-values.html b/stacks/vue/coalesce-vue-vuetify/components/c-select-values.html new file mode 100644 index 000000000..b20bfdfa7 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-select-values.html @@ -0,0 +1,29 @@ + + + + + + c-select-values | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-select-values

A multi-select input component for collections of non-object values (primarily strings and numbers).

TIP

It is unlikely that you'll ever need to use this component directly - it is highly recommended that you use c-input instead and let it delegate to c-select-values for you.

Examples

template
<c-select-values 
+    :model="post.setTags.args" 
+    for="Post.methods.setTags.params.tagNames" 
+/>

Props

for: string | CollectionProperty | CollectionValue

A metadata specifier for the value being bound. One of:

  • A string with the name of the value belonging to model.
  • A direct reference to a metadata object.
  • A string in dot-notation that starts with a type name.

model?: Model

An object owning the value that was specified by the for prop.

value?: any // Vue 2
+modelValue?: any // Vue 3

If binding the component with v-model, accepts the value part of v-model.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-select.html b/stacks/vue/coalesce-vue-vuetify/components/c-select.html new file mode 100644 index 000000000..417d90723 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-select.html @@ -0,0 +1,59 @@ + + + + + + c-select | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-select

A dropdown component that allows for selecting values fetched from the generated /list API endpoints.

Used for selecting values for foreign key and navigation properties, or for selecting arbitrary objects or primary keys without a parent or owning object.

Examples

Binding to a navigation property or foreign key of a model:

template
  <c-select :model="person" for="company" />
+  <!-- OR: -->
+  <c-select :model="person" for="companyId" />

Binding an arbitrary primary key value or an arbitrary object:

template
  <!-- Binding a key: -->
+  <c-select for="Person" v-model:key-value="selectedPersonId" />
+
+  <!-- Binding an object: -->
+  <c-select for="Person" v-model:object-value="selectedPerson" />
+  <c-select for="Person" v-model="selectedPerson" />

Examples of other props:

template
<c-select 
+  for="Person" 
+  v-model="selectedPerson"
+  :clearable="false"
+  preselect-first
+  :params="{ pageSize: 42, filter: { isActive: true } }"
+  :create="createMethods"
+  dense
+  outlined
+  color="pink"
+/>
+<!-- `createMethods` is defined in the docs of `create` below -->

Props

for: string | ForeignKeyProperty | ModelReferenceNavigationProperty | ModelType

A metadata specifier for the value being bound. One of:

  • The name of a foreign key or reference navigation property belonging to model.
  • The name of a model type.
  • A direct reference to a metadata object.
  • A string in dot-notation that starts with a type name that resolves to a foreign key or reference navigation property.

TIP

When binding by a key value, if the corresponding object cannot be found (e.g. there is no navigation property, or the navigation property is null), c-select will automatically attempt to load the object from the server so it can be displayed in the UI.

model?: Model

An object owning the value that was specified by the for prop. If provided, the input will be bound to the corresponding property on the model object.

If for specifies a foreign key or reference navigation property, both the foreign key and the navigation property of the model will be updated when the selected value is changed.

value?: any // Vue 2
+modelValue?: any // Vue 3

When binding the component with v-model, accepts the value part of v-model. If for was specified as a foreign key, this will expect a key; likewise, if for was specified as a type or as a navigation property, this will expect an object.

keyValue?: any

When bound with v-model:key-value="keyValue", allows binding the primary key of the selected object explicitly.

objectValue?: any

When bound with v-model:object-value="objectValue", allows binding the selected object explicitly.

clearable?: boolean

Whether the selection can be cleared or not, emitting null as the input value.

If not specified and the component is bound to a foreign key or reference navigation property, defaults to whether or not the foreign key has a required validation rule defined in its Metadata.

preselectFirst?: boolean = false

If true, then when the first list results for the component are received by the client just after the component is created, c-select will emit the first item in the list as the selected value.

preselectSingle?: boolean = false

If true, then when the first list results for the component are received by the client just after the component is created, if the results contained exactly one item, c-select will emit that only item as the selected value.

reloadOnOpen?: boolean = false

If true, the list results will be reloaded when the dropdown menu is opened. By default, list results are loaded when the component is mounted and also when any of its parameters change (either search input or the params prop).

params?: ListParameters

An optional set of Data Source Standard Parameters to pass to API calls made to the server.

cache?: ResponseCachingConfiguration | boolean

If provided and non-false, enables response caching on the component's internal API callers.

create?: {
+  getLabel: (search: string, items: TModel[]) => string | false,
+  getItem: (search: string, label: string) => Promise<TModel>
+}

A object containing a pair of methods that allowing users to create new items from directly within the c-select if a matching object is not found.

The object must contain the following two methods. You should define these in your component's script section - don't try to define them inline in your component.

create.getLabel: (search: string, items: TModel[]) => string | false

A function that will be called with the user's current search term, as well as the collection of currently loaded items being presented to the user as valid selection options.

It should return either a string that will be presented to the user as an option in the dropdown that can be clicked to invoke the getItem function below, or it should return false to prevent such an option from being shown to the user.

create.getItem: (search: string, label: string) => Promise<TModel>

A function that will be invoked when the user clicks the option in the dropdown list described by getLabel. It will be given the user's current search term as well as the value of the label returned from getLabel as parameters. It must perform the necessary operations to create the new object on the server and then return a reference to that object.

For example:

ts
createMethods = {
+  getLabel(search: string, items: Person[]) {
+    const searchLower = search.toLowerCase();
+    if (items.some(a => a.name?.toLowerCase().indexOf(searchLower) == 0)) {
+      return false;
+    }
+    return search;
+  },
+  async getItem(search: string, label: string) {
+    const client = new PersonApiClient();
+    return (await client.addPersonByName(label)).data.object!;
+  }
+}

Slots

#item="{ item, search }" - Slot used to customize the text of both items inside the list, as well as the text of selected items. By default, items are rendered with c-display. Slot is passed a parameter item containing a model instance, and search containing the current search query.

#list-item="{ item, search }" - Slot used to customize the text of items inside the list. If not provided, falls back to the item slot.

#selected-item="{ item, search }" - Slot used to customize the text of selected items. If not provided, falls back to the item slot.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/components/c-table.html b/stacks/vue/coalesce-vue-vuetify/components/c-table.html new file mode 100644 index 000000000..3209528b9 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/components/c-table.html @@ -0,0 +1,41 @@ + + + + + + c-table | Coalesce + + + + + + + + + + + + + + +
Skip to content

c-table

A table component for displaying the contents of a ListViewModel. Also supports modifying the list's sort parameters by clicking on column headers. Pairs well with a c-list-pagination.

Example Usage

A simple table, rendering the items of a ListViewModel:

template
<c-table :list="list" />

A more complex example using more of the available options:

template
<c-table
+  :list="list"
+  :props="['firstName', 'lastName']"
+  :extra-headers="['Actions']"
+>
+  <template #item-append="{item}">
+    <td>
+      <v-btn
+        title="Edit"
+        text icon
+        :to="{name: 'edit-person', params: { id: item.$primaryKey }}"
+      >
+        <i class="fa fa-edit"></i>
+      </v-btn>
+    </td>
+  </template>
+</c-table>

Props

list: ListViewModel

The ListViewModel to display pagination information for.

props?: string[]

If provided, specifies which properties, and their ordering, should be given a column in the table.

If not provided, all non-key columns that aren't annotated with [Hidden(HiddenAttribute.Areas.List)] are given a column.

extraHeaders?: string[] | {header: string; isFixed: boolean }[]

The text contents of one or more extra th elements to render in the table. Each header can be defined as either fixed (sticky) or scrollable. Should be used in conjunction with the item-append slot.

editable: boolean = false

If true, properties in each table cell will be rendered with c-input. Non-editable properties will be rendered in accordance with the value of the admin prop.

admin: boolean = false

If true, properties in each table cell will be rendered with c-admin-display instead of c-display.

Slots

item-append - A slot rendered after the td elements on each row that render the properties of each item in the table. Should be provided zero or more additional td elements. The number should match the number of additional headers provided to the extraHeaders prop.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/coalesce-vue-vuetify/overview.html b/stacks/vue/coalesce-vue-vuetify/overview.html new file mode 100644 index 000000000..6163ea276 --- /dev/null +++ b/stacks/vue/coalesce-vue-vuetify/overview.html @@ -0,0 +1,25 @@ + + + + + + Vuetify Components | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vuetify Components

The Vue stack for Coalesce provides a set of components based on Vuetify, packaged up in an NPM package coalesce-vue-vuetify2 or coalesce-vue-vuetify3. These components are driven primarily by the Metadata Layer, and include both low level input and display components like c-input and c-display that are highly reusable in the custom pages you'll build in your application, as well as high-level components like c-admin-table-page and c-admin-editor-page that constitute entire pages.

Setup

All Coalesce projects should be started from the template described in Getting Started with Vue, and will therefore have all the setup completed for you.

If for whatever reason you find yourself adding Coalesce to an existing project, use the template as a reference for what configuration needs to be added to your project.

Display Components

ComponentDescription

c-display

A general-purpose component for displaying any Value by rendering the value to a string with the display functions from the Models Layer. For plain string and number values, usage of this component is largely superfluous. For all other value types including dates, booleans, enums, objects, and collections, it is very handy.

c-loader-status

A component for displaying progress and error information for one or more API Callers.

TIP

It is highly recommended that all API Callers utilized by your application that don't have any other kind of error handling should be represented by a c-loader-status so that users can be aware of any errors that occur.

c-list-range-display

Displays pagination information about the current $items of a ListViewModel in the format <start index> - <end index> of <total count>.

c-table

A table component for displaying the contents of a ListViewModel. Also supports modifying the list's sort parameters by clicking on column headers. Pairs well with a c-list-pagination.

Input Components

ComponentDescription

c-input

A general-purpose input component for most Values. c-input delegates to other components based on the type of value it is bound to. This includes both other Coalesce Vuetify Components as well as direct usages of some Vuetify components.

c-select

A dropdown component that allows for selecting values fetched from the generated /list API endpoints.

Used for selecting values for foreign key and navigation properties, or for selecting arbitrary objects or primary keys without a parent or owning object.

c-datetime-picker

A general, all-purpose date/time input component that can be used either with models and metadata or as a standalone component using only v-model.

c-select-many-to-many

A multi-select dropdown component that allows for selecting values fetched from the generated /list API endpoints for collection navigation properties that were annotated with [ManyToMany].

c-select-string-value

A dropdown component that will present a list of suggested string values from a custom API endpoint. Allows users to input values that aren't provided by the endpoint.

Effectively, this is a server-driven autocomplete list.

c-select-values

A multi-select input component for collections of non-object values (primarily strings and numbers).

c-list-filters

A component that provides an interface for modifying the filters prop of a ListViewModel's parameters.

c-list-pagination

A component that provides an interface for modifying the pagination parameters of a ListViewModel.

This is a composite of c-list-page-size, c-list-range-display, and c-list-page, arranged horizontally. It is designed to be used above or below a table (e.g. c-table).

c-list-page-size

A component that provides an dropdown for modifying the pageSize parameter prop of a ListViewModel.

c-list-page

A component that provides previous/next buttons and a text field for modifying the page parameter prop of a ListViewModel.

Admin Components

ComponentDescription

c-admin-method

Provides an interface for invoking a method and rendering its result, designed to be use in an admin page.

c-admin-methods

Renders in a Vuetify v-expansion-panels a c-admin-method for each method on a ViewModel or ListViewModel.

c-admin-display

Behaves the same as c-display, except any collection navigation properties will be rendered as links to an admin list page, and any models will be rendered as a link to an admin item page.

c-admin-editor

An editor for a single ViewModel instance. Provides a c-input for each property of the model.

c-admin-editor-page

A page for a creating/editing single ViewModel instance. Provides a c-admin-editor and a c-admin-methods for the instance. Designed to be routed to directly with vue-router.

c-admin-table

An full-featured table for a ListViewModel, including a c-admin-table-toolbar, c-table, and c-list-pagination.

c-admin-table-toolbar

A full-featured toolbar for a ListViewModel designed to be used on an admin page, including "Create" and "Reload" buttons, a c-list-range-display, a c-list-page, a search field, c-list-filters, and a c-list-page-size.

c-admin-table-page

A full-featured page for interacting with a ListViewModel. Provides a c-admin-table and a c-admin-methods for the list. Designed to be routed to directly with vue-router.

c-admin-audit-log-page

A full-featured page for interacting with Coalesce's Audit Logging. Presents a view similar to c-admin-table-page with content optimized for viewing audit log records. Designed to be routed to directly with vue-router.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/getting-started.html b/stacks/vue/getting-started.html new file mode 100644 index 000000000..a00710408 --- /dev/null +++ b/stacks/vue/getting-started.html @@ -0,0 +1,66 @@ + + + + + + Getting Started | Coalesce + + + + + + + + + + + + + + +
Skip to content

Getting Started

Environment Setup

Before you begin, ensure that you have all the requisite tools installed

  • Recent version of the .NET SDK. If you have Visual Studio, you already have this.
  • A recent version of Node.js (an LTS version is recommended).
  • A compatible IDE
    • Recommended:
      • Visual Studio for backend (C#) development
      • VS Code for frontend (Vue, TypeScript) development (with Vue - Official)
    • Alternatively, you could use any of these:
      • VS Code for full stack development
      • JetBrains Rider

Creating a Project

The quickest and easiest way to create a new Coalesce Vue application is to use the dotnet new template.

First, select the features that you would like included in your project, and choose the root .NET namespace of your project:


Next, click the button or manually copy the commands below into your favorite terminal, and execute them! This will create a root folder named MyProject - execute the script in your sources/repos/etc folder.

sh
dotnet new install IntelliTect.Coalesce.Vue.Template
+dotnet new coalescevue -n MyCompany.MyProject -o MyProject --Identity --TrackingBase --DarkMode --AuditLogs --UserPictures --ExampleModel
+cd MyProject/*.Web
+npm ci
+npm run lint:fix
+dotnet restore
+dotnet coalesce

You now have a new Coalesce project! For the recommended development experience, open the .Web project in VS Code and open the root .sln file in Visual Studio.

If any of the options you chose above require external integrations, you'll need to configure those - follow the instructions for each section that have been placed into appsettings.json.

Project Structure

Data Project

The data project contains all your entity models, services, and most other custom backend code that you'll write while building your application. The code within it acts as the inputs to Coalesce's code generation, which outputs generated files into the Web project.

Web Project

The Web project is an ASP.NET Core application where the generated outputs from Coalesce are placed. It's also where you'll build your rich front-end pages that users will use to interact with your application.

The structure of the Web project follows the conventions of both ASP.NET Core and Vite. The frontend-specific folders are as follows:

  • /src - Files that should be compiled into your frontend application. CSS/SCSS, TypeScript, Vue SFCs, and so on.
  • /public - Static assets that should be served directly as files.
  • /wwwroot - Target for Vite's compiled output. This directory is excluded from git.
  • /Api/Generated - Output target for Coalesce's generated API Controllers.
  • /Models/Generated - Output target for Coalesce's generated DTOs.
  • /Controllers/HomeController.cs - Controller that serves the root page of your Vue SPA, both in development and production. Some customizations can be added here.

Important

The frontend build system uses Vite. You are strongly encouraged to read through at least the first few pages of the Vite Documentation before getting started on any development.

During development, no special effort is required to build your frontend code. Coalesce's UseViteDevelopmentServer in ASP.NET Core will take care of that automatically when the application starts. Just make sure NPM packages have been installed (npm ci).

Data Modeling

At this point, you can open up the newly-created solution in Visual Studio and run your application. However, your application won't do much without a data model, so you will probably want to do the following:

  • Create an initial Data Model by adding EF entity classes to the data project and the corresponding DbSet<> properties to AppDbContext. You will notice that the starter project includes a single model, Widget, to start with. Feel free to change this model or remove it entirely. Read Entity Models for more information about creating a data model.

  • Run dotnet ef migrations add Init (Init can be any name) in the data project to create an initial database migration.

  • Run Coalesce's code generation by either:

    • Running dotnet coalesce in the web project's root directory (dotnet restore first if you get an error about "command or file was not found").
    • Running the coalesce npm script in the Task Runner Explorer, or in a terminal with npm run coalesce.

You're now at a point where you can start creating your own pages!

Building Pages & Features

Lets say we've created a model called Person as follows, and we've ran code generation with dotnet coalesce:

c#
namespace MyApplication.Data.Models 
+{
+    public class Person
+    {
+        public int PersonId { get; set; }
+        public string Name { get; set; }
+        public DateTimeOffset? BirthDate { get; set; }
+    }
+}

We can create a details page for a Person by creating a Single File Component in MyApplication.Web/src/views/person-details.vue:

vue
<template>
+  <dl>
+    <dt>Name</dt>
+    <dd>
+      <c-display :model="person" for="name" />
+    </dd>
+
+    <dt>Date of Birth</dt>
+    <dd>
+      <c-display :model="person" for="birthDate" format="M/d/yyyy" />
+    </dd>
+  </dl>
+</template>
+
+<script setup lang="ts"> 
+import { PersonViewModel } from "@/viewmodels.g";
+
+const props = defineProps<{ id: number }>();
+const person = new PersonViewModel();
+
+person.$load(props.id);
+</script>

Note

In the code above, c-display is a component that comes from the Vuetify Components for Coalesce.

For simple property types like string and number you can always use simple template interpolation syntax, but for more complex properties like dates, c-display is handy to use because it includes features like built-in date formatting.

We then need to add route to this new view. In MyApplication.Web/src/router.ts, add a new item to the routes array:

ts
// In the `routes` array, add the following item:
+{
+  path: '/person/:id',
+  name: 'person-details',
+  component: () => import('@/views/person-details.vue'),
+  props: route => ({ id: +route.params.id }),
+},

With these pieces in place, we now have a functioning page that will display details about a person. We can start up the application (or, if it was already running, refresh the page) and navigate to /person/1 (assuming a person with ID 1 exists - if not, navigate to /admin/Person and create one).

From this point, you can start adding more fields, more features, and more flair to the page. Check out all the other documentation in the sidebar to see what else Coalesce has to offer, including the Vue Overview.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/layers/api-clients.html b/stacks/vue/layers/api-clients.html new file mode 100644 index 000000000..249df31e2 --- /dev/null +++ b/stacks/vue/layers/api-clients.html @@ -0,0 +1,76 @@ + + + + + + Vue API Client Layer | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vue API Client Layer

The API client layer, generated as api-clients.g.ts, exports a class for each API controller that was generated for your data model. These classes are stateless and provide one method for each API endpoint. This includes both the standard set of endpoints created for Entity Models and Custom DTOs, as well as any custom Methods on the aforementioned types, as well as any methods on your Services.

The API clients provided by Coalesce are based on axios. All API clients used a shared axios instance, exported from coalesce-vue as AxiosClient. This instance can be used to configure all HTTP requests made by Coalesce, including things like attaching interceptors to modify the requests being made, or configuring defaults.

As with all the layers, the source code of coalesce-vue is also a great supplement to this documentation.

Concepts

API Client

A class, generated for each controller-backed type in your data model as <ModelName>ApiClient and exported from api-clients.g.ts containing one method for each API endpoint.

Each method on the API client takes in the regular parameters of the method as you would expect, as well as an optional AxiosRequestConfig parameter at the end that can be used to provide additional configuration for the single request, if needed.

For the methods that correspond to the standard set of CRUD endpoints that Coalesce provides (get, list, count, save, delete), an additional parameter parameters is available that accepts the set of Standard Parameters appropriate for the endpoint.

Each method returns a Promise<AxiosResponse<TApiResult>> where TApiResult is either ItemResult, ItemResult<T>, or ListResult<T>, depending on the return type of the API endpoint. AxiosResponse is the response object from axios, containing the TApiResult in its data property, as well as other properties like headers. The returned type T is automatically converted into valid Model implementations for you.

API Callers/API States

A stateful function for invoking an API endpoint, created with the $makeCaller function on an API Client. API Callers provide a wide array of functionality that is useful for working with API endpoints that are utilized by a user interface.

Because they are such an integral part of the overall picture of coalesce-vue, they have their own section below where they are explained in much greater detail.

API Callers

API Callers (typed with the name ApiState in coalesce-vue, sometimes also referred to as "loaders" or "invokers") are stateful functions for invoking an API endpoint, created with the $makeCaller function on an API Client. A summary of features:

Endpoint Invocation

Each API Caller is itself a function, so it can be invoked to trigger an API request to the server.

State management

API Callers contain properties about the last request made, including things like wasSuccessful, isLoading, result, and more.

Concurrency Management

Using setConcurrency(mode), you can configure how each individual caller handles what happens when multiple requests are made simultaneously

Argument Binding

API Callers can be created so that they have an args object that can be bound to, using .invokeWithArgs() to make a request using those arguments as the API endpoint's parameters. The API Callers created for the ViewModel Layer are all created this way.

Creating and Invoking an API Caller

API Callers can be created with the $makeCaller method of an API Client. If desired, you can define parameters that will be accepted as input to each invocation.

TIP

During typical development, it is unlikely that you'll need to make a custom API Caller - the ones created for you on the generated ViewModel Layer will usually suffice. However, creating your own can allow for some more advanced functionality.

Some examples:

ts
// Preamble for all the examples below:
+import { PersonApiClient } from '@/api-clients.g';
+const client = new PersonApiClient;

A caller that takes no additional parameters:

ts
const caller = client.$makeCaller(
+    "item", 
+    c => c.namesStartingWith("A")
+);
+
+await caller();
+console.log(caller.result)

A caller that takes custom parameters:

ts
const caller = client.$makeCaller(
+    methods => methods.namesStartingWith, 
+    (c, str: string) => c.namesStartingWith(str)
+);
+
+await caller("Rob");
+console.log(caller.result)

A caller that has an args object that can be bound to. This is how the generated API Callers in the ViewModel Layer are created:

ts
const caller = client.$makeCaller("item", 
+    // The parameter-based version is always required, even if it won't be used.
+    (c, str: string) => c.namesStartingWith(str),
+    // A function which creates a blank instance of the args object.
+    // All props should be initialized (i.e. not undefined) to work with Vue's reactivity.
+    () => ({str: null as string | null, }),
+    // The function that accepts the args object and uses it:
+    (c, args) => c.namesStartingWith(args.str)
+);
+
+caller.args.str = "Su";
+await caller.invokeWithArgs();
+console.log(caller.result)

A caller that performs multiple async operations:

ts
const deleteFirstNameStartingWith = client.$makeCaller(
+    "item",
+    async (c, str: string) => {
+        const namesResult = await c.namesStartingWith(str)
+        return await c.deletePersonByName(namesResult.data.object[0])
+    }
+);
+
+await caller("Rob");
+console.log(caller.result)

The first parameter, resultType, can either be one of "item" or "list", indicating whether the method returns a ItemResult or ListResult (examples #1 and #3 above). It can also be a function which accepts the set of method metadata for the API Client and which returns the specific method metadata (example #2 above), or it can be a direct reference to a specific method metadata object.

Properties

The following state properties can be found on API Caller instances. These properties are useful for binding to in a user interface to display errors, results, or indicators of progress.

All Callers

isLoading: boolean

True if there is currently a request pending for the API Caller.

wasSuccessful: boolean | null

A boolean indicating if the last request was successful. null if no request has been made yet or if a request has been made but has not yet completed.

message: string | null

An message from the last request. Typically an error message if the last request failed, but messages can also be provided with successful ApiResult responses in your custom methods.

hasResult: boolean

True if result is non-null. This prop is useful in performance-critical scenarios where checking result directly will cause an overabundance of re-renders in high-churn scenarios.

args: {}

Holds an object for the arguments of the function, and will be used if the caller is invoked with its invokeWithArgs() method. Useful for binding the arguments of a caller to inputs in a user interface.

Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.

get url(): string

Returns the URL for the method's HTTP endpoint. Any parameters are sourced from the args object. Useful for binding file-returning HTTP GET methods directly to image or video HTML elements.

Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.


ItemResult-based Callers

result: T | null

The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response)

validationIssues: ValidationIssue[] | null

Any validation issues returned by the previous request. This is never populated automatically by Coalesce, and is therefore is only used if you have written custom code to populate it in your Behaviors or Methods.


ListResult-based Callers

result: Array<T> | null

The principal data returned by the previous request. Will be set to null if the last response received returned no data (e.g. if the response was an error response).

page, pageSize, pageCount, totalCount: number | null

Properties which contain the pagination information returned by the previous request.

Concurrency Mode

setConcurrency(mode: 'disallow' | 'debounce' | 'cancel' | 'allow')

API callers have a setConcurrency method that allows you to customize how they behave when additional invocations are performed when there is already a request pending. There are four options available, with "disallow" being the default:

"disallow"

The default behavior - simply throws an error for any secondary invocations.

Note

Having "disallow" as the default prevents the unexpected behavior that can happen in a number of ways with the other modes:

  • For requests that are performing data-mutating actions on the server, all other concurrency modes could lead to an unexpected end state of the data due to requests either being abandoned, cancelled, or potentially happening out-of-order.
  • Throwing errors for multiple concurrent requests quickly surfaces issues during development where concurrent requests are not being correctly guarded against in a user interface - e.g. not disabling a "Save" or "Submit" button while the request is pending, which would otherwise lead to double-posts.
"debounce"

When a secondary invocation is performed, enqueue it after the current pending invocation completes.

If additional invocations are performed while there is already an invocation enqueued and waiting, the already-enqueued invocation is abandoned and replaced by the most recent invocation attempt. The promise of the abandoned invocation will be resolved with undefined (it is NOT rejected).

"cancel"

When a secondary invocation is performed, cancel the current pending invocation.

This completely aborts the request, propagating all the way back to the server where cancellation can be observed with HttpContext.RequestAborted. The promise of the cancelled invocation will be resolved with undefined (it is NOT rejected).

"allow"

When a secondary invocation is performed, always continue normally, sending the request to the server.

The state of the properties on the caller at any time will reflect the most recent response received from the server, which is never guaranteed to correlate with the most recent request made to the server - that is, requests are not guaranteed to complete in the order they were made. In particular, the isLoading property will be false after the first response comes back, even if the second response has not yet been received.

WARNING

For the reasons outlined above, it is generally not recommended to use "allow" unless you fully understand the drawbacks. This mode mirrors the legacy behavior of the Knockout stack for Coalesce.

Response Caching

Response caching on API Callers is a feature that will save API responses to persistent storage (sessionStorage or localStorage). The next time a matching request is made, the result property of the API Caller will be populated with that saved response, allowing for a faster time to interactivity and reduced repaints and shifting of elements as initial data loads after a page navigation. It does not prevent any HTTP requests from being made, and does not affect the Promise returned from invoke or invokeWithArgs.

Common use cases include:

  • Site-wide status or alert messages
  • Server-provided configuration
  • Dashboard data, like statistics or graphs

When a cached response is loaded, result is populated with that response's data, wasSuccessful and hasResult are set to true, and onFulfilled callbacks are invoked.

useResponseCaching(configuration?: ResponseCachingConfiguration | false)

Enables response caching on the API Caller. Only HTTP GET methods are supported, and file-returning methods are not supported. Call with false to disable caching after it was previously enabled. The available options are as follows:

ts
export type ResponseCachingConfiguration = {
+  /** Function that will determine the cache key used for a particular request.
+   * Return a falsy value to prevent caching. The default key is the request URL.
+   */
+  key?: (
+    req: AxiosRequestConfig,
+    defaultKey: string
+  ) => string | null | undefined;
+
+  /** The maximum age of a cached response. If null, the entry will not expire. Default 1 hour.
+   *
+   * The smallest of the current configured max age and the max age that was set at the time of the cached response is used. */
+  maxAgeSeconds?: number | null;
+
+  /** The Storage (default `sessionStorage`) that will hold cached responses. */
+  storage?: Storage;
+};

Other Methods

API Callers have a few other methods available as well:

cancel(): void

Manually cancel the current request. The promise of the cancelled invocation will be resolved with undefined (it is NOT rejected). If using concurrency mode "allow", only the most recent invocation is cancelled.

onFulfilled((state: TInvoker) => void | Promise<any>): void

Add a callback to the caller to be invoked when a success response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the isLoading prop to false until it completes.

onRejected((state: TInvoker) => void | Promise<any>): void

Add a callback to the caller to be invoked when a failure response is received from the server. If a promise is returned, this promise will be awaited and will delay the setting of the isLoading prop to false until it completes.

invoke(...args: TArgs)

Invokes the endpoint with provided args.

The invoke function is a reference from the caller to itself. In other words, caller.invoke === caller.

confirmInvoke(message: string, ...args: TArgs)

Similar to invoke, but prompts for confirmation from the user (via window.confirm) with the provided message.

invokeWithArgs(args?: TArgs)

Invokes the endpoint with the specified args, defaulting to caller.args.

Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.

confirmInvokeWithArgs(message: string, args?: TArgs)

Similar to invokeWithArgs, but prompts for confirmation from the user (via window.confirm) with the provided message.

getResultObjectUrl(vue?: Vue): string | undefined

If the method returns a file, this method will return an Object URL representing the value of the result prop.

Accepts a Vue instance in order to manage the lifecycle of the URL, since object URLs must be manually released to avoid memory leaks. When the provided Vue component is destroyed, the object URL will be destroyed. If called inside the component template, the Vue instance can be acquired automatically.

Only exists if the caller was created with the option of being invoked with an args object as described in the sections above.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/layers/metadata.html b/stacks/vue/layers/metadata.html new file mode 100644 index 000000000..fd8b81fe3 --- /dev/null +++ b/stacks/vue/layers/metadata.html @@ -0,0 +1,25 @@ + + + + + + Vue Metadata Layer | Coalesce + + + + + + + + + + + + + + +
Skip to content

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/layers/models.html b/stacks/vue/layers/models.html new file mode 100644 index 000000000..3c90b713a --- /dev/null +++ b/stacks/vue/layers/models.html @@ -0,0 +1,116 @@ + + + + + + Vue Model Layer | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vue Model Layer

The model layer, generated as models.g.ts, contains a set of TypeScript interfaces that represent each client-exposed type in your data model. Each interface contains all the Properties of that type, as well as a $metadata property that references the metadata object for that type. Enums and Data Sources are also represented in the model layer.

The model layer also includes a TypeScript class for each type that can be used to easily instantiate a valid implementation of its corresponding interface. However, it is not necessary for the classes to be used, and all parts of Coalesce that interact with the model layer don't perform any instanceof checks against models - the $metadata property is used to determine type identity.

Concepts

The model layer is fairly simple - the only main concept it introduces on top of the Metadata Layer is the notion of interfaces and enums that mirror the C# types in your data model. As with the Metadata Layer, the source code of coalesce-vue is a great documentation supplement to this page.

Model

An interface describing an instance of a class type from your application's data model. All Model interfaces contain members for all the Properties of that type, as well as a $metadata property that references the metadata object for that type.

DataSource

A class-based representation of a Data Source containing properties for any of the Custom Parameters of the data source, as well as a $metadata property that references the metadata object for the data source.

Data sources are generated as concrete classes in a namespace named DataSources that is nested inside a namespace named after their parent model type. For example:

ts
import { Person } from '@/models.g'
+
+const dataSource = new Person.DataSources.NamesStartingWith;
+dataSource.startsWith = "A";
+// Provide the dataSource to an API Client or a ViewModel...

Model Functions

The following functions exported from coalesce-vue can be used with your models:

// Vue Options API
+bindToQueryString: {
+  (vue: Vue, obj: {}, key: string, options?: BindToQueryStringOptions);
+  (vue: Vue, ref: Ref<any>, queryKey: string);
+  (vue: Vue, ref: Ref<any>, options: BindToQueryStringOptions);
+}
+ 
+// Vue Composition API
+useBindToQueryString: {
+  (obj: {}, key: string, options?: BindToQueryStringOptions);
+  (ref: Ref<any>, queryKey: string);
+  (ref: Ref<any>, options: BindToQueryStringOptions);
+}

ts
export interface BindToQueryStringOptions<TValue> {
+  /** The key in the query string that holds the bound value. */
+  queryKey?: string;
+  /** Convert the query string value to the model value. */
+  parse?: (v: string) => TValue;
+  /** Convert the bound value to a string representation to store in the query string. */
+  stringify?: (v: NonNullable<TValue>) => string | null | undefined;
+  /** Controls whether changes are pushed as new history state entries, or replace the current history entry. */
+  mode?: "push" | "replace";
+}

Binds a value on an object, or the value of a ref, to the query string. When the object's value changes, the query string will be updated using vue-router. When the query string changes, the object's value will be updated.

For example:

ts
import { useBindToQueryString } from 'coalesce-vue';
+
+// Bind pagination information to the query string:
+const list = new PersonListViewModel();
+useBindToQueryString(list.$params, 'pageSize', { parse: parseInt });
+
+const activeTab = ref("1")
+useBindToQueryString(activeTab, 'activeTab');

The query string will be updated using either `router.push` or `router.replace` depending on the value of parameter `mode`.

If the query string contains a value when this is called, the object will be updated with that value immediately.

If the object being bound to has $metadata, information from that metadata will be used to serialize and parse values to and from the query string. Otherwise, the stringify option (default: String(value)) will be used to serialize the value, and the parse option (if provided) will be used to parse the value from the query string.


+bindKeyToRouteOnCreate(vue: Vue, model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false)
+ 
+useBindKeyToRouteOnCreate(model: Model<ModelType>, routeParamName: string = 'id', keepQuery: boolean = false)

When model is created (i.e. its primary key becomes non-null), replace the current URL with one that includes uses primary key for the route parameter named by routeParamName.

The query string will not be kept when the route is changed unless true is given to keepQuery.

ts
import { useBindKeyToRouteOnCreate } from 'coalesce-vue';
+
+const props = defineProps<{id: number}>();
+const viewModel = new PersonViewModel();
+if (props.id) {
+  viewModel.$load(props.id);
+} else {
+  useBindToQueryString(viewModel);
+}

Note

The route will be replaced directly via the HTML5 History API such that vue-router will not observe the change as an actual route change, preventing the current view from being recreated if a path-based key is being used on the application's <router-view> component.

Advanced Model Functions

The following functions exported from coalesce-vue can be used with your models.

Note

These functions are used to implement the higher-order layers in the Vue stack.

While you're absolutely free to use them in your own code and can rely on their interface and behavior to remain consistent, you will find that you seldom need to use them directly - that's why we've split them into their own section here in the documentation.

convertToModel(value: any, metadata: Value | ClassType): any

Given any JavaScript value value, convert it into a valid implementation of the value or type described by metadata.

For metadata describing a primitive or primitive-like value, the input will be parsed into a valid implementation of the correct JavaScript type. For example, for metadata that describes a boolean, a string "true" will return a boolean true, and ISO 8601 date strings will result in a JavaScript Date object.

For metadata describing a type, the input object will be mutated into a valid implementation of the appropriate model interface. Missing properties will be set to null, and any descendent properties of the provided object will be recursively processed with convertToModel.

If any values are encountered that are fundamentally incompatible with the requested type described by the metadata, an error will be thrown.

mapToModel(value: any, metadata: Value | ClassType): any

Performs the same operations as convertToModel, except that any objects encountered will not be mutated - instead, a new object or array will always be created.

mapToDto(value: any, metadata: Value | ClassType): any

Maps the input to a representation suitable for JSON serialization.

Will not serialize child objects or collections whose metadata includes dontSerialize. Will only recurse to a maximum depth of 3.

modelDisplay(model: Model, options?: DisplayOptions): string

Returns a string representing the model suitable for display in a user interface.

Uses the displayProp defined on the object's metadata. If no displayProp is defined, the object will be displayed as JSON. The display prop on a model can be defined in C# with [ListText].

See DisplayOptions for available options.

propDisplay(model: Model, prop: Property | string, options?: DisplayOptions): string

Returns a string representing the specified property of the given object suitable for display in a user interface.

The property can either be a string, representing one of the model's properties, or the actual Property metadata object of the property.

See DisplayOptions for available options.

valueDisplay(value: any, metadata: Value, options?: DisplayOptions): string

Returns a string representing the given value (described by the given metadata).

See DisplayOptions for available options.

DisplayOptions

The following options are available to functions in coalesce-vue that render a value or object for display:

ts
export interface DisplayOptions {
+  /** Date format options. One of:
+   * - A UTS#35 date format string (https://date-fns.org/docs/format)
+   * - An object with options for https://date-fns.org/docs/format or https://github.com/marnusw/date-fns-tz#format, including a string `format` for the format itself. If a `timeZone` option is provided per https://github.com/marnusw/date-fns-tz#format, the date being formatted will be converted to that timezone.
+   * - An object with options for https://date-fns.org/docs/formatDistance */
+  format?:
+    | string
+    | ({
+        /** A UTS#35 date format string (https://date-fns.org/docs/format) */
+        format: string;
+      } & Parameters<typeof format>[2])
+    | {
+        /** Format date with https://date-fns.org/docs/formatDistanceToNow */
+        distance: true;
+        /** Append/prepend `'in'` or `'ago'` if date is after/before now. Default `true`. */
+        addSuffix?: boolean;
+        /** Include detail smaller than one minute. Default `false`. */
+        includeSeconds?: boolean;
+      };
+
+  collection?: {
+    /** The maximum number of items to display individually.
+     * When there are more than this number of items, the count of items will be displayed instead.
+     * Default `5`.
+     * */
+    enumeratedItemsMax?: number;
+
+    /** The separator to place between enumerated items. Default `', '` */
+    enumeratedItemsSeparator?: string;
+  };
+}

Note

Dates rendered with the formatDistanceToNow function into a Vue component will not automatically be updated in realtime. If this is needed, you should use a strategy like using a key that you periodically update to force a re-render.

Time Zones

In Coalesce Vue, all DateTimeOffset-based properties, for both inputs and display-only contexts, are by default formatted into the user's computer's system time zone. This is largely just a consequence of how the JavaScript Date type works. However, this behavior can be overridden by configuring a global default timezone, or by providing a time zone name to individual usages.

Fields with a type of DateTime are agnostic to time zone and UTC offset and so are not subject to any of the following rules.

setDefaultTimeZone(timeZoneName: string | null): void

Gets or sets the default time zone used by Coalesce. The time zone should be an IANA Time Zone Database name, e.g. "America/Los_Angeles".

The time zone provided here is used in the following ways:

  • It will be used as DisplayOptions.format.timeZone if no other value was provided for this option. This is used by functions modelDisplay, propDisplay, and valueDisplay, as well as the c-display component.
  • It will be used by c-datetime-picker, used to both interpret the user input and display the selected date. This can also be set on individual component usages via the timeZone prop.
  • It will be used when serializing DateTimeOffset fields into JSON DTOs, representing the ISO 8601 date string in the specified time zone rather than in the user's computer's system time zone.

getDefaultTimeZone(): string | null

Returns the current configured default time zone. Default is null, falling back on the user's computer's system time zone.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/layers/viewmodels.html b/stacks/vue/layers/viewmodels.html new file mode 100644 index 000000000..b4d017ca7 --- /dev/null +++ b/stacks/vue/layers/viewmodels.html @@ -0,0 +1,96 @@ + + + + + + Vue ViewModel Layer | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vue ViewModel Layer

The ViewModel layer, generated as viewmodels.g.ts, exports a ViewModel class for each API-backed type in your data model (Entity Models, Custom DTOs, and Services). It also exports a ListViewModel type for Entity Models and Custom DTOs.

These classes provide a wide array of functionality that is useful when interacting with your data model through a user interface. The generated ViewModels are the primary way that Coalesce is used when developing a Vue application.

ViewModels

The following members can be found on the generated Entity and Custom DTO ViewModels, exported from viewmodels.g.ts as <TypeName>ViewModel.

Model Data Properties

Each ViewModel class implements the corresponding interface from the Model Layer, meaning that the ViewModel has a data property for each Property on the model. Object-typed properties will be typed as the corresponding generated ViewModel.

Changing the value of a property will automatically flag that property as dirty. See Auto-save & Dirty Flags below for information on how property dirty flags are used.

There are a few special behaviors when assigning to different kinds of data properties on View Models as well:

Model Object Properties

  • If the object being assigned to the property is not a ViewModel instance, a new instance will be created automatically and used instead of the incoming object.
  • If the model property is a reference navigation, the corresponding foreign key property will automatically be set to the primary key of that object. If the incoming value was null, the foreign key will be set to null.
  • If deep auto-saves are enabled on the instance being assigned to, auto-save will be spread to the incoming object, and to all other objects reachable from that object.

Model Collection Properties

  • When assigning an entire array, any items in the array that are not a ViewModel instance will have an instance created for them.
  • The same rule goes for pushing items into the existing array for a model collection - a new ViewModel instance will be created and be used instead of the object(s) being pushed.

Foreign Key Properties

If the corresponding navigation property contains an object, and that object's primary key doesn't match the new foreign key value being assigned, the navigation property will be set to null.

Other Data Properties & Functions

readonly $metadata: ModelType

The metadata object from the Metadata Layer layer for the type represented by the ViewModel.

readonly $stableId: number

An immutable number that is unique among all ViewModel instances, regardless of type.

Useful for uniquely identifying instances with :key="vm.$stableId" in a Vue component, especially for instances that lack a primary key.

$primaryKey: string | number

A getter/setter property that wraps the primary key of the model. Used to interact with the primary key of any ViewModel in a polymorphic way.

$display(prop?: string | Property): string

Returns a string representation of the object, or one of its properties if specified, suitable for display.

This is especially useful for displaying enum properties, navigation properties, date properties, and other complex values.

$addChild(prop: string | ModelCollectionNavigationProperty, initialDirtyData?: {})

Creates a new instance of an item for the specified child model collection, adds it to that collection, and returns the item. If initialDirtyData is provided, it will be loaded into the new instance with $loadDirtyData().

Loading & Parameters

$load: ItemApiState;
+$load(id?: TKey) => ItemResultPromise<TModel>;

An API Caller for the /get endpoint. Accepts an optional id argument - if not provided, the ViewModel's $primaryKey is used instead. Uses the instance's $params object for the Standard Parameters.

$params: DataSourceParameters

An object containing the Standard Parameters to be used for the $load, $save, $bulkSave, and $delete API callers.

$dataSource: DataSource

Getter/setter wrapper around $params.dataSource. Takes an instance of a Data Source class generated in the Model Layer.

$includes: string | null

Getter/setter wrapper around $params.includes. See Includes String for more information.

$loadCleanData(source: {} | TModel, purgeUnsaved = false)

Loads data from the provided model into the current ViewModel, and then clears all dirty flags.

Data is loaded recursively into all related ViewModel instances, preserving existing instances whose primary keys match the incoming data.

If auto-save is enabled, only non-dirty properties are updated. This prevents user input that is pending a save from being overwritten by the response from an auto-save /save request.

If purgeUnsaved is true, items without a primary key will be dropped from collection navigation properties. This is used by the $load caller in order to fully reset the object graph with the state from the server.

$loadDirtyData(source: {} | TModel)

Same as $loadCleanData, but does not clear any existing dirty flags, nor does it clear any dirty flags that will be set while mutating the data properties of any ViewModel instance that gets loaded.

constructor(initialDirtyData?: {} | TModel | null)

Create a new instance of the ViewModel, loading the given initial data with $loadDirtyData() if provided.

Saving and Deleting

$save: ItemApiState;
+$save(overrideProps?: Partial<TModel>) => ItemResultPromise<TModel>;

An API Caller for the /save endpoint. Uses the instance's $params object for the Standard Parameters. A save operation saves only properties on the model it is called on - for deep/bulk saves, see $bulkSave.

This caller is used for both manually-triggered saves in custom code and for auto-saves. If the Rules/Validation report any errors when the caller is invoked, an error will be thrown.

overrideProps can provide properties to save that override the data properties on the ViewModel instance. This allows for manually saving a change to a property without setting the property on the ViewModel instance into a dirty state. This makes it easier to handle some scenarios where changing the value of the property may put the UI into a logically inconsistent state until the save response has been returned from the server - for example, if a change to one property affects the computed value of other properties.

When a save creates a new record and a new primary key is returned from the server, any entities attached to the current ViewModel via a collection navigation property will have their foreign keys set to the new primary key. This behavior, combined with the usage of deep auto-saves, allows for complex object graphs to be constructed even before any model in the graph has been created.

When a save is in progress, the names of properties being saved are in contained in $savingProps.

Saving behavior can be further customized with $loadResponseFromSaves and $saveMode, listed below.

$delete: ItemApiState;
+$delete() => ItemResultPromise<TModel>;

An API Caller for the /delete endpoint. Uses the instance's $params object for the Standard Parameters.

If the object was loaded as a child of a collection, it will be removed from that collection upon being deleted. Note that ViewModels currently only support tracking of a single parent collection, so if an object is programmatically added to additional collections, it will only be removed from one of them upon delete.

$loadResponseFromSaves: boolean

Default true - controls if a ViewModel will be loaded with the data from the model returned by the /save endpoint when saved with the $save API caller. There is seldom any reason to disable this.

$savingProps: ReadonlySet<string>

When $save.isLoading == true, contains the properties of the model currently being saved by $save (including auto-saves). Does not include non-dirty properties even if $saveMode == 'whole'.

This can be used to make per-property UI state changes during saves - for example, displaying progress indicators on/near individual inputs, or disabling input controls.

$saveMode: 'surgical' | 'whole'

Configures which properties of the model are sent to the server during a save or bulk save.

"surgical" (default)

By default, only dirty properties (and always the primary key) are sent to the server when performing a save.

This improves the handling of concurrent changes being made by multiple users against different fields of the same entity at the same time - specifically, it prevents a user with a stale value of some field X from overwriting a more recent value of X in the database when the user is only making changes to some other property Y and has no intention of changing X.

Save mode "surgical" doesn't help when multiple users are editing field X at the same time - if such a scenario is applicable to your application, you must implement more advanced handling of concurrency conflicts.

WARNING

Surgical saves require DTOs on the server that are capable of determining which of their properties have been set by the model binder, as surgical saves are sent from the client by entirely omitting properties from the x-www-form-urlencoded body that is sent to the server.

The Generated C# DTOs implement the necessary logic for this; however, any Custom DTOs must have this logic manually written by you, the developer. Either implement the same pattern that can be seen in the Generated C# DTOs, or do not use surgical saves with Custom DTOs.

"whole"

All serializable properties of the object are sent back to the server with every save.

$getPropDirty(propName: string): boolean

Returns true if the given property is flagged as dirty.

$setPropDirty(propName: string, dirty: boolean = true, triggerAutoSave = true)

Manually set the dirty flag of the given property to the desired state. This seldom needs to be done explicitly, as mutating a property will automatically flag it as dirty.

If dirty is true and triggerAutoSave is false, auto-save (if enabled) will not be immediately triggered for this specific flag change. Note that a future change to any other property's dirty flag will still trigger a save of all dirty properties.

$isDirty: boolean

Getter/setter that summarizes the model's property-level dirty flags. Returns true if any properties are dirty.

When set to false, all property dirty flags are cleared. When set to true, all properties are marked as dirty.

Auto-save

// Vue Options API
+$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {})
+ 
+// Vue Composition API
+$useAutoSave(options: AutoSaveOptions<this> = {})

Starts auto-saving of the instance when its savable data properties become dirty. Saves are performed with the $save API Caller (documented above) and will not be performed if the ViewModel has any validation errors - see Rules/Validation below.

ts
type AutoSaveOptions<TThis> = 
+{ 
+    /** Time, in milliseconds, to debounce saves for.  */
+    wait?: number;
+    
+    /** If true, auto-saving will also be enabled for all view models that are
+        reachable from the navigation properties & collections of the current view model. */
+    deep?: boolean;
+
+    /** Additional options to pass to the third parameter of lodash's `debounce` function. */
+    debounce?: DebounceSettings;
+
+    /** A function that will be called before autosaving that can return false to prevent a save. 
+        Only allowed if not using deep auto-saves.
+    */
+    predicate?: (viewModel: TThis) => boolean;
+}

$stopAutoSave(): void

Turns off auto-saving of the instance. Does not recursively disable auto-saves on related instances if deep was used when auto-save was enabled.

readonly $isAutoSaveEnabled: boolean

Returns true if auto-save is currently active on the instance.

Bulk saves

$bulkSave: ItemApiState;
+$bulkSave(options: BulkSaveOptions) => ItemResultPromise<TModel>;

Bulk saves save all changes to an object graph in one API call and one database transaction. This includes creation, updates, and deletions of entities.

To use bulk saves, you can work with your ViewModel instances on the client much in the same way you would on the server with Entity Framework. Assign objects to reference navigation properties and modify scalar values to perform creates and updates. To perform deletions, you must call model.$remove() on the ViewModel you want to remove, similar how you would call DbSet<>.Remove(model) on the server.

If the client-side Rules/Validation report any errors for any of the models being saved in the operation, an error will be thrown.

On the server, each affected entity is handled through the same standard mechanisms as are used by individual saves or deletes (Behaviors, Data Sources, and Security Attributes), but with a bit of sugar on top:

  • All operations are wrapped in a single database transaction that is rolled back if any individual operation fails.
  • Foreign keys will be fixed up as new items are created, allowing a parent and child record to be created at the same time even when the client has no foreign key to link the two together.

For the response to a bulk save, the server will load and return the root ViewModel that $bulkSave was called upon, using the instance's $params object for the Standard Parameters.

ts
export interface BulkSaveOptions {
+  /** A predicate that will be applied to each modified model
+   * to determine if it should be included in the bulk save operation.
+   *
+   * The predicate is applied before validation (`$hasError`), allowing
+   * it to be used to skip over entities that have client validation errors
+   * that would otherwise cause the entire bulk save operation to fail.
+   * */
+  predicate?: (viewModel: ViewModel, action: "save" | "delete") => boolean;
+
+  /** Additional root items that will be traversed for items that need saving.
+   * Use to add items that aren't attached to the target of the bulk save,
+   * but are still desired to be saved during the same operation.
+   */
+  additionalRoots?: ViewModel[];
+}

$bulkSavePreview(options?: BulkSaveOptions) => {
+  isDirty: boolean;
+  errors: string[];
+  items: BulkSaveRequestItem[];
+  rawItems: BulkSaveRequestRawItem[];
+}

Returns the payload that will be used for the $bulkSave operation.

Useful for driving UI state, like preemptively showing errors, or determining if there are any objects with pending modifications. If you are using this to drive UI state, it is strongly recommended to wrap this call in a computed in your component to reduce excessive invocations.

$remove(): void

Removes the item from its parent collection (if it is in a collection), and marks the item for deletion in the next bulk save.

readonly $isRemoved: boolean

Returns true if the instance was previously removed by calling $remove().

Rules/Validation

$addRule(prop: string | Property, identifier: string, rule: (val: any) => true | string)

Add a custom validation rule to the ViewModel for the specified property. identifier should be a short, unique slug that describes the rule; it is not displayed in the UI, but is used if you wish to later remove the rule with $removeRule().

The function you provide should take a single argument that contains the current value of the property, and should either return true to indicate that the validation rule has succeeded, or a string that will be displayed as an error message to the user.

Any failing validation rules on a ViewModel will prevent that ViewModel's $save caller from being invoked.

$removeRule(prop: string | Property, identifier: string)

Remove a validation rule from the ViewModel for the specified property and rule identifier.

This can be used to remove either a rule that was provided by the generated Metadata Layer, or a custom rule that was added by $addRule. Reference your generated metadata file metadata.g.ts to see any generated rules and the identifiers they use.

$getRules(prop: string | Property): ((val: any) => string | true)[]

Returns an array of active rule functions for the specified property, or undefined if the property has no active validation rules.

$getErrors(prop?: string | Property): Generator<string>

Returns a generator that provides all error messages for either a specific property (if provided) or the entire model (if no prop argument is provided).

TIP

You can obtain an array from a generator with Array.from(vm.$getErrors()) or [...vm.$getErrors()]

readonly $hasError: boolean

Indicates if any properties have validation errors.

Generated Members

API Callers

For each of the instance Methods of the type, an API Caller will be generated.

addTo*() Functions

For each collection navigation property, a method is generated that will create a new instance of the ViewModel for the collected type, add it to the collection, and then return the new object.

Many-to-many helper collections

For each collection navigation property annotated with [ManyToMany], a getter-only property is generated that returns a collection of the object on the far side of the many-to-many relationship. Nulls are filtered from this collection.

ListViewModels

The following members can be found on the generated ListViewModels, exported from viewmodels.g.ts as *TypeName*ListViewModel.

Data Properties

readonly $items: T[]

Collection holding the ViewModel instances from the last successful invocation of the $load API Caller.

readonly $modelItems: T[]

Collection holding plain Model instances from the last successful invocation of the $load API Caller.

$modelOnlyMode: boolean

When model-only mode is enabled, $items will not be populated with ViewModel instances. Result can instead be read from $modelItems. This mode allows much better performance when loading large quantities of data, especially in read-only contexts where the features of ViewModel instances aren't needed.

Parameters & API Callers

$params: ListParameters

An object containing the Standard Parameters to be used for the $load and $count API callers.

$dataSource: DataSource

Getter/setter wrapper around $params.dataSource. Takes an instance of a Data Source class generated in the Model Layer.

$includes: string | null

Getter/setter wrapper around $params.includes. See Includes String for more information.

$load: ListApiState;
+$load() => ListResultPromise<TModel>

An API Caller for the /list endpoint. Uses the instance's $params object for the Standard Parameters.

Results are available in the $items property. The result property of the $load API Caller contains the raw results and is not recommended for use in general development - $items should always be preferred.

$count: ItemApiState;
+$count() => ItemResultPromise<number>

An API Caller for the /count endpoint. Uses the instance's $params object for the Standard Parameters.

The result is available in $count.result - this API Caller does not interact with other properties on the ListViewModel like $pageSize or $pageCount.

readonly $hasPreviousPage: boolean 
+readonly $hasNextPage: boolean

Properties which indicate if $page can be decremented or incremented, respectively. $pageCount and $page are used to make this determination.

$previousPage(): void 
+$nextPage(): void

Methods that will decrement or increment $page, respectively. Each does nothing if there is no previous or next page as returned by $hasPreviousPage and $hasNextPage.

$page: number

Getter/setter wrapper for $params.page. Controls the page that will be requested on the next invocation of $load.

$pageSize: number

Getter/setter wrapper for $params.pageSize. Controls the page that will be requested on the next invocation of $load.

readonly $pageCount: number

Shorthand for $load.pageCount - returns the page count reported by the last successful invocation of $load.

Auto-Load

// Vue Options API
+$startAutoLoad(vue: Vue, options: AutoLoadOptions<this> = {})
+ 
+// Vue Composition API
+$useAutoLoad(options: AutoLoadOptions<this> = {})

Starts auto-loading of the list as changes to its parameters occur. Loads are performed with the $load API Caller.

ts
type AutoLoadOptions<TThis> =
+{ 
+  /** Time, in milliseconds, to debounce loads for.  */
+  wait?: number;
+
+  /** Additional options to pass to the third parameter of lodash's `debounce` function. */
+  debounce?: DebounceSettings;
+
+  /** A function that will be called before loading that can return false to prevent a load. */
+  predicate?: (viewModel: TThis) => boolean;
+
+  /** If true, an immediate initial load of the list will be performed. 
+   * Otherwise, the initial auto-load of the list won't occur until 
+   * the first change to its parameters occur. */
+  immediate?: boolean;
+}

$stopAutoLoad()

Manually turns off auto-loading of the instance.

Auto-save

// Vue Options API
+$startAutoSave(vue: Vue, options: AutoSaveOptions<this> = {})
+ 
+// Vue Composition API
+$useAutoSave(options: AutoSaveOptions<this> = {})

Enables auto-save for the items in the list, propagating to new items as they're added or loaded. See ViewModel auto-save documentation for more details.

$stopAutoSave(): void

Turns off auto-saving of the items in the list, and turns of propagation of auto-save to any future items if auto-save was previously turned on for the list. Only affects items that are currently in the list's $items.

readonly $isAutoSaveEnabled: boolean

Returns true if auto-save is currently active on the instance.

Generated Members

API Callers

For each of the static Methods on the type, an API Caller will be created.

Service ViewModels

The following members can be found on the generated Service ViewModels, exported from viewmodels.g.ts as <ServiceName>ViewModel.

Generated Members

API Callers

For each method of the Service, an API Caller will be created.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/overview.html b/stacks/vue/overview.html new file mode 100644 index 000000000..98d8cade9 --- /dev/null +++ b/stacks/vue/overview.html @@ -0,0 +1,25 @@ + + + + + + Vue Overview | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vue Overview

The Vue stack for Coalesce has been designed from the ground up to be used to build modern web applications using current technologies like Vite, ES Modules, and more. It enables you to use all of the features of Vue.js, including building a SPA, and the ability to use modern component frameworks like Vuetify.

Getting Started

Check out Getting Started with Vue to learn how to get a new Coalesce Vue project up and running.

TypeScript Layers

The generated code for the Vue stack all builds on the coalesce-vue NPM package which contains most of the core functionality of the Vue stack. Its version should generally be kept in sync with the IntelliTect.Coalesce NuGet packages in your project.

Both the generated code and coalesce-vue are split into four layers, with each layer building on the layers underneath. From the bottom, these layers are:

Metadata Layer

The metadata layer, generated as metadata.g.ts, contains information about the types, properties, methods, and other components of your data model. Because Vue applications are typically compiled into a set of static assets, it is necessary for the frontend code to have a representation of your data model as an analog to the ReflectionRepository that is available at runtime in your .NET app.

Read more about the Metadata layer

Model Layer

The model layer, generated as models.g.ts, contains a set of TypeScript interfaces that represent each client-exposed type in your data model. Each interface contains all the Properties of that type, as well as a $metadata property that references the metadata object for that type. Enums and Data Sources are also represented in the model layer.

Read more about the Model layer

API Client Layer

The API client layer, generated as api-clients.g.ts, exports a class for each API controller that was generated for your data model. These classes are stateless and provide one method for each API endpoint. This includes both the standard set of endpoints created for Entity Models and Custom DTOs, as well as any custom Methods on the aforementioned types, as well as any methods on your Services.

Read more about the API Client layer

ViewModel Layer

The ViewModel layer, generated as viewmodels.g.ts, exports a ViewModel class for each API-backed type in your data model (Entity Models, Custom DTOs, and Services). It also exports a ListViewModel type for Entity Models and Custom DTOs.

These classes provide a wide array of functionality that is useful when interacting with your data model through a user interface. The generated ViewModels are the primary way that Coalesce is used when developing a Vue application.

Read more about the ViewModel layer

Vue Components

The Vue stack for Coalesce provides a set of components based on Vuetify, packaged up in an NPM package coalesce-vue-vuetify2 or coalesce-vue-vuetify3. These components are driven primarily by the Metadata Layer, and include both low level input and display components like c-input and c-display that are highly reusable in the custom pages you'll build in your application, as well as high-level components like c-admin-table-page and c-admin-editor-page that constitute entire pages.

Read more about the Vuetify Components here.

Admin Views

The Vue.js stack for Coalesce provides some high level components that provide functionality of whole pages like c-admin-table-page and c-admin-editor-page.

The template described in Getting Started with Vue comes with routes already in place for these page-level components. For example, /admin/Person for a table, /admin/Person/edit to create a new Person, and /admin/Person/edit/:id to edit a Person.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/stacks/vue/vue2-to-vue3.html b/stacks/vue/vue2-to-vue3.html new file mode 100644 index 000000000..615622385 --- /dev/null +++ b/stacks/vue/vue2-to-vue3.html @@ -0,0 +1,201 @@ + + + + + + Vue 2 to Vue 3 | Coalesce + + + + + + + + + + + + + + +
Skip to content

Vue 2 to Vue 3

If you're already experienced with Vue 2 but are new to Vue 3, or if you're migrating an existing Vue 2 app to Vue 3, you should first read through the official migration guide.

Vuetify also offers a migration guide to upgrade from Vuetify 2 to Vuetify 3.

If you're new to Vue entirely, check out the rest of Vue docs and pick your learning path.

Coalesce Upgrade Steps

The changes specific to Coalesce when migrating from Vue2 to Vue3 are pretty minimal. Most of your work will be in following the Vue 3 Migration Guide and the Vuetify 3 Migration Guide.

The table below contains the Coalesce-specific changes when migrating to Vue 3. However, the easiest migration path may be to disregard the table below and instead, instantiate the Coalesce Vue template or look at it on GitHub and compare individual files between your project and the template side by side and ingest the changes that you observe.

LocationOld (Vue 2)New (Vue 3)

package.json

json
{
+  "dependencies": {
+    "coalesce-vue-vuetify2": "x"
+  }
+}
json
{
+  "dependencies": {
+    "coalesce-vue-vuetify3": "x"
+  }
+}

vite.config.ts

ts
import { CoalesceVuetifyResolver } from "coalesce-vue-vuetify2/lib/build"
ts
import { CoalesceVuetifyResolver } from "coalesce-vue-vuetify3/build"
+
+// Custom SASS options and `optimizeDeps` configuration can be removed
+// since Vuetify3 no longer uses deprecated sass features,
+// and pre-bundling styles no longer has appreciable benefit.

main.ts

ts
import "coalesce-vue-vuetify2/dist/coalesce-vue-vuetify.css"
+
+// Either of these:
+import CoalesceVuetify from 'coalesce-vue-vuetify2/lib'
+import CoalesceVuetify from 'coalesce-vue-vuetify2'
+
+Vue.use(CoalesceVuetify, {
+  metadata: $metadata,
+});
ts
import "coalesce-vue-vuetify3/styles.css"
+
+
+import { createCoalesceVuetify } from "coalesce-vue-vuetify3";
+
+
+const coalesceVuetify = createCoalesceVuetify({
+  metadata: $metadata,
+});
+app.use(coalesceVuetify);

router.ts

ts
// Either of these:
+import { CAdminTablePage, CAdminEditorPage } from 'coalesce-vue-vuetify2/lib';
+import { CAdminTablePage, CAdminEditorPage } from 'coalesce-vue-vuetify2';
ts

+import { CAdminEditorPage, CAdminTablePage } from "coalesce-vue-vuetify3";

Vitest/Jest tests

If you had a global test setup file performing Vue configuration, you can likely remove it entirely, or at least remove the parts that configure Vue. Vue3 does not operate on global configuration like Vue2 did.

See test-utils.ts and HelloWorld.spec.ts in the template for examples of Vue3 component testing.

From Class Components to <script setup>

The components in the Coalesce template for Vue 3 have switched from vue-class-component to Vue Composition API with <script setup>, the official recommendation for building full Vue 3 applications.

If you're used to writing components in Vue 2 with vue-class-component and vue-property-decorator, you can use this table of comparisons as a quick reference of what the equivalent features are using <script setup> and Vue Composition API. That said, this is not a replacement for learning and understanding the composition API. You should read the Composition API FAQ as well as the Reactivity Fundamentals documentation (make sure to set the API preference in the top left to Composition!).

If you'd like to continue using class components with Vue 3 (e.g. upgrading an existing project where rewriting all components is not feasible), you can try switching to vue-facing-decorator.

Note

The examples below assume that unplugin-auto-import is being used (included in the Coalesce Vue3 template), eliminating the need to manually import common Vue Composition API functions.

FeatureClass ComponentScript Setup

Coalesce ViewModel and ListViewModel usage

vue
<script lang="ts">
+import { Vue, Component } from "vue-property-decorator";
+import { PersonViewModel, PersonListViewModel } from "@/viewmodels.g";
+
+@Component({})
+export default class MyComponent extends Vue {
+  public person = new PersonViewModel();
+  public list = new PersonListViewModel();
+
+  async created() {
+    await person.$load();
+    await list.$load();
+
+    person.$startAutoSave(this);
+    list.$startAutoLoad(this);
+  }
+}
+</script>
vue
<script lang="ts" setup>
+import { PersonViewModel, PersonListViewModel } from "@/viewmodels.g";
+
+const person = new PersonViewModel();
+const list = new PersonListViewModel();
+
+person.$useAutoSave();
+list.$useAutoLoad();
+
+// If you need to await an async operation during component creation, 
+// use an IIFE so that the component mount is not delayed.
+(async function created() {
+  await person.$load();
+  await list.$load();
+})();
+</script>

@Prop, @Watch

vue
<script lang="ts">
+import { Vue, Component, Prop, Watch } from "vue-property-decorator";
+
+@Component({})
+export default class MyComponent extends Vue {
+  @Prop({ default: "Student" })
+  label!: string;
+
+  @Prop({ required: true })
+  student!: ApplicationUserViewModel;
+
+  @Watch("label")
+  labelChanged(newVal, oldVal) {
+    console.log(`label changed. new:${newVal}, old:${oldVal}`)
+  }
+}
+</script>
vue
<script lang="ts" setup>
+const props = withDefaults(defineProps<{
+  label?: string,
+  student?: ApplicationUserViewModel
+}>(), { label: 'Student' })
+
+watch(
+  () => props.label,
+  (newVal, oldVal) => {
+    console.log(`label changed. new:${newVal}, old:${oldVal}`);
+  }
+);
+</script>

Reactive data

vue
<script lang="ts">
+import { Vue, Component } from "vue-property-decorator";
+import { PersonViewModel } from "@/viewmodels.g";
+
+@Component({})
+export default class MyComponent extends Vue {
+  public person = new PersonViewModel();
+
+  public checked = false;
+
+  public items = [
+    { name: "Foo", checked: false, },
+    { name: "Bar", checked: true, }
+  ]
+}
+</script>
vue
<script lang="ts" setup>
+import { PersonViewModel } from "@/viewmodels.g";
+
+// Properties on coalesce-generated ViewModels have built in reactivity 
+// and don't need to be wrapped ref/reactive unless you're going to replace 
+// the entire top level object with a different instance.
+const person = new PersonViewModel();
+
+const checked = ref(false);
+
+const items = reactive([
+  { name: "Foo", checked: false, },
+  { name: "Bar", checked: true, }
+])
+</script>

Computed values

vue
<script lang="ts">
+import { Vue, Component } from "vue-property-decorator";
+import { PersonViewModel } from "@/viewmodels.g";
+
+@Component({})
+export default class MyComponent extends Vue {
+  public person = new PersonViewModel()
+
+  get fullName() {
+    return `${person.firstName} ${person.lastName}`
+  }
+}
+</script>
vue
<script lang="ts" setup>
+import { PersonViewModel } from "@/viewmodels.g";
+
+const person = new PersonViewModel();
+
+const fullName = computed(() => `${person.firstName} ${person.lastName}`)
+</script>

$emit, methods

vue
<template>
+  <input
+    :value="value"
+    @input="inputChanged($event.target.value)"
+  />
+</template>
+
+<script lang="ts">
+import { Vue, Component } from "vue-property-decorator";
+
+@Component({})
+export default class MyComponent extends Vue {
+  @Prop()
+  value!: string;
+
+  inputChanged(v: string) {
+    this.$emit('update:input', v)
+  }
+}
+</script>
vue
<template>
+  <input
+    :value="modelValue"
+    @input="inputChanged(($event.target as HTMLInputElement).value)"
+  />
+</template>
+
+<script lang="ts" setup>
+defineProps<{ modelValue: string | null }>();
+
+// This may seem tedious, but it enables full Typescript intellisense!
+const emit = defineEmits<{
+  (e: "update:modelValue", value: string | null): void;
+}>();
+
+function inputChanged(v: string) {
+  emit('update:modelValue', v)
+}
+</script>

Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/audit-logging.html b/topics/audit-logging.html new file mode 100644 index 000000000..5e93b2205 --- /dev/null +++ b/topics/audit-logging.html @@ -0,0 +1,125 @@ + + + + + + Audit Logging | Coalesce + + + + + + + + + + + + + + +
Skip to content

Audit Logging

Keeping a history of all (or most) of the changes that are made to records in your database can be invaluable, both for non-repudiation (i.e. proving what happened and who did it), and for troubleshooting or debugging.

Coalesce provides a package IntelliTect.Coalesce.AuditLogging that adds an easy way to inject this kind of audit logging into your EF Core DbContext. It also includes an out-of-the-box view c-admin-audit-log-page that enables browsing of this data on the frontend.

Setup

In this setup process, we're going to add an additional Coalesce Nuget package, define a custom entity to hold our audit logs, install the audit logging extension into our DbContext, and add a pre-made interface on the frontend to view our logs.

1. Add the NuGet package

Add a reference to the Nuget package IntelliTect.Coalesce.AuditLogging to your data project:

xml
<ItemGroup>
+  <PackageReference Include="IntelliTect.Coalesce" Version="$(CoalesceVersion)" />
+  <PackageReference Include="IntelliTect.Coalesce.AuditLogging" Version="$(CoalesceVersion)" />
+</ItemGroup>

2. Define the log entity

Define the entity type that will hold the audit records in your database:

c#
using IntelliTect.Coalesce.AuditLogging;
+
+[Read(Roles = "Administrator")]
+public class AuditLog : DefaultAuditLog
+{
+    public string? UserId { get; set; }
+    public AppUser? User { get; set; }
+
+    // Other custom props as desired
+}

This entity only needs to implement IAuditLog, but a default implementation of this interface DefaultAuditLog is provided for your convenience. DefaultAuditLog contains additional properties ClientIp, Referrer, and Endpoint for recording information about the HTTP request (if available), and also comes pre-configured for security with Create, Edit, and Delete APIs disabled.

You should further augment this type with any additional properties that you would like to track on each change record. A property to track the user who performed the change should be added, since it is not provided by the default implementation so that you can declare it yourself with the correct type for the foreign key and navigation property.

You should also apply security to restrict reading of these records to only the most privileged users with a Read Attribute (as in the example above) and/or a custom Default Data Source.

3. Configure your DbContext

On your DbContext, implement the IAuditLogDbContext<AuditLog> interface using the class you just created as the type parameter. Then register the Coalesce audit logging extension in your DbContext's OnConfiguring method so that saves will be intercepted and audit log entries created.

c#
[Coalesce]
+public class AppDbContext : DbContext, IAuditLogDbContext<AuditLog>
+{
+    public DbSet<AuditLog> AuditLogs { get; set; }
+    public DbSet<AuditLogProperty> AuditLogProperties { get; set; }
+
+    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+    {
+        optionsBuilder.UseCoalesceAuditLogging<AuditLog>(x => x
+            .WithAugmentation<OperationContext>()
+        );
+    }
+}

You could also perform this setup in your web project when calling .AddDbContext().

The above code also contains a reference to a class OperationContext. This is the service that will allow you to populate additional custom properties on your audit entries. You'll want to define it as follows:

c#
public class OperationContext : DefaultAuditOperationContext<AuditLog>
+{
+    // Inject any additional desired services in the constructor:
+    public OperationContext(IHttpContextAccessor accessor) : base(accessor) { }
+
+    public override void Populate(AuditLog auditEntry, EntityEntry changedEntity)
+    {
+        base.Populate(auditEntry, changedEntity);
+
+        // Adjust as needed to retrieve your UserId from the ClaimsPrincipal.
+        auditEntry.UserId = User.GetUserId();
+    }
+}

When you're inheriting from DefaultAuditLog for your IAuditLog implementation, you'll want to similarly inherit from DefaultAuditOperationContext<> for your operation context. It will take care of populating the HTTP request tracking fields on the AuditLog record. If you want a totally custom implementation, you only need to implement the IAuditOperationContext<TAuditLog> interface.

The operation context class passed to WithAugmentation will be injected from the application service provider if available; otherwise, a new instance will be constructed using dependencies from the application service provider. To make an injected dependency optional, make the constructor parameter nullable with a default value of null, or create alternate constructors.

4. Add the UI

For Vue applications, the c-admin-audit-log-page component provides an out-of-the-box user interface for browsing through audit logs. Simply define the following route in your application's router:

ts
import { CAdminAuditLogPage } from 'coalesce-vue-vuetify3';
+
+{
+  path: '/admin/audit-logs',
+  component: CAdminAuditLogPage,
+  props: { type: 'AuditLog' }
+}

Configuration

Suppression

You can turn audit logging on or off for individual operations by implementing the SuppressAudit property on your DbContext. For example, implement it as an auto-property as follows and then set it to true in application code when desired:

c#
[Coalesce]
+public class AppDbContext : DbContext, IAuditLogDbContext<AuditLog>
+{
+    ...
+    public bool SuppressAudit { get; set; }
+}

Exclusions & Formatting

Coalesce's audit logging is built on top of Entity Framework Plus and can be configured using all of its configuration, including includes/excludes and custom property formatting.

Coalesce will not use EF Plus's AuditManager.DefaultConfiguration global singleton instance. You must use Coalesce's configuration extensions which allow for more targeted configuration per context that does not rely on a global static singleton. For example:

c#
public class AppDbContext : DbContext, IAuditLogDbContext<AuditLog>
+{
+    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+    {
+        optionsBuilder.UseCoalesceAuditLogging<AuditLog>(x => x
+            .WithAugmentation<OperationContext>()
+            .ConfigureAudit(c => c
+                .Exclude<DataProtectionKey>()
+                .ExcludeProperty<TrackingBase>(x => new { x.CreatedById, x.CreatedOn, x.ModifiedById, x.ModifiedOn })
+                .FormatType<DateTimeOffset>(d => d.ToTimeZone("America/Los_Angeles").ToString())
+                .Format<Image>(x => x.Content, x => $"{Convert.ToHexString(SHA1.HashData(x))}, {x.Length} bytes")
+            )
+        );
+    }
+}

Property Descriptions

The AuditLogProperty children of your IAuditLog implementation have two properties OldValueDescription and NewValueDescription that can be used to hold a description of the old and new values. By default, Coalesce will populate the descriptions of foreign key properties with the List Text of the referenced principal entity. This greatly improves the usability of the audit logs, which would otherwise only show meaningless numbers or GUIDs for foreign keys that changed.

This feature will load principal entities into the DbContext if they are not already loaded, which could inflict subtle differences in application functionality in rare edge cases if your application is making assumptions about navigation properties not being loaded. Typically though, this will not be an issue and will not lead unintentional information disclosure to clients as long as IncludeTrees are used correctly.

This feature may be disabled by calling .WithPropertyDescriptions(PropertyDescriptionMode.None) inside your call to .UseCoalesceAuditLogging(...) in your DbContext configuration. You may also populate these descriptions in your IAuditOperationContext implementation that was provided to .WithAugmentation<T>().

Merging

When using a supported database provider (currently only SQL Server), audit records for changes to the same entity can be merged together when the change is identical in all aspects to the previous audit record for that entity, with the only allowed difference being the old/new property values.

In other words, if the same user is making repeated changes to the same property on the same entity from the same page, then those changes will merge together into one audit record.

This merging only happens together if the existing audit record is recent; the default cutoff for this is 30 seconds, but can be configured with .WithMergeWindow(TimeSpan.FromSeconds(15)) when calling UseCoalesceAuditLogging. It can also be turned off by setting this value to TimeSpan.Zero. The merging logic respects all custom properties you add to your IAuditLog implementation, requiring their values to match between the existing and new audit records for a merge to occur.

By default, only non-discrete properties (those that are not foreign keys, booleans, or enums) are candidates for merging, since it is usually only such fields that will have repeated changes while a user is typing in an auto-save user interface. For other types of properties, it is usually better to capture each discrete change. This can be configured with .WithMergeBehavior() when calling UseCoalesceAuditLogging, and can be overridden on a case-by-case basis by setting AuditLogProperty.CanMerge in your IAuditOperationContext.Populate implementation.

Caveats

Only changes that are tracked by the DbContext's ChangeTracker can be audited. Changes that are made with raw SQL, or changes that are made with bulk update functions like ExecuteUpdate or ExecuteDelete will not be audited using this package.

Audit Stamping

A lightweight alternative or addition to full audit logging is audit stamping - the process of setting fields like CreatedBy or ModifiedOn on each changed entity. This cannot record a history of exact changes, but can at least record the age of an entity and how recently it changed.

Coalesce offers a simple mechanism to register an Entity Framework save interceptor to perform this kind of action (this does NOT require the IntelliTect.Coalesce.AuditLogging package). This mechanism operations on all saves that go through Entity Framework, eliminating the need to perform this manually in individual Behaviors, Services, and Custom Methods:

c#
services.AddDbContext<AppDbContext>(options => options
+    .UseSqlServer(connectionString) // (or other provider)
+    .UseStamping<TrackingBase>((entity, user) => entity.SetTracking(user))
+);

In the above example, TrackingBase is an interface or class that you would write as part of your application that defines the properties and mechanisms for performing the tracking operation. For example:

c#
public abstract class TrackingBase
+{
+    [Read, Display(Order = 1000)]
+    public ApplicationUser CreatedBy { get; set; }
+    
+    [Read, Display(Order = 1001)]
+    public string? CreatedById { get; set; }
+    
+    [Read, Display(Order = 1002)]
+    public DateTimeOffset CreatedOn { get; set; }
+
+
+    [Read, Display(Order = 1003)]
+    public ApplicationUser ModifiedBy { get; set; }
+    
+    [Read, Display(Order = 1004)]
+    public string? ModifiedById { get; set; }
+    
+    [Read, Display(Order = 1005)]
+    public DateTimeOffset ModifiedOn { get; set; }
+
+
+    public void SetTracking(ClaimsPrincipal? user) 
+        => SetTracking(user?.GetApplicationUserId());
+    
+    public void SetTracking(int? userId)
+    {
+        if (this.CreatedById == null)
+        {
+            this.CreatedById = userId;
+            this.CreatedOn = DateTimeOffset.Now;
+        }
+
+        this.ModifiedById = userId;
+        this.ModifiedOn = DateTimeOffset.Now;
+    }
+}

The overload UseStamping<TStampable> will provide the ClaimsPrincipal from the current HTTP request if present, defaulting to null if an operation occurs outside an HTTP request (e.g. a background job). The overloads UseStamping<TStampable, TService> and UseStamping<TStampable, TService1, TService2> can be used to inject services into the operation. If more than two services are needed, you should wrap those dependencies up into an additional service that takes them as dependencies.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/coalesce-json.html b/topics/coalesce-json.html new file mode 100644 index 000000000..c287abfab --- /dev/null +++ b/topics/coalesce-json.html @@ -0,0 +1,84 @@ + + + + + + Config: Code Gen | Coalesce + + + + + + + + + + + + + + +
Skip to content

Code Generation Configuration

In Coalesce, all configuration of the code generation is done in a JSON file. This file is typically named coalesce.json and is typically placed in the solution root.

File Resolution

When the code generation is run by invoking dotnet coalesce, Coalesce will try to find a configuration file via the following means:

  1. If an argument is specified on the command line, it will be used as the location of the file. E.g. dotnet coalesce C:/Projects/MyProject/config.json
  2. If no argument is given, Coalesce will try to use a file in the working directory named coalesce.json
  3. If no file is found in the working directory, Coalesce will crawl up the directory tree from the working directory until a file named coalesce.json is found. If such a file is never found, an error will be thrown.

Contents

A full example of a coalesce.json file, along with an explanation of each property, is as follows:

js
{
+    "webProject": {
+        // Required: Path to the csproj of the web project. Path is relative to location of this coalesce.json file.
+        "projectFile": "src/Coalesce.Web/Coalesce.Web.csproj",
+
+        // Optional: Framework to use when evaluating & building dependencies.
+        // Not needed if your project only specifies a single framework - only required for multi-targeting projects.
+        "framework": "netcoreapp2.0",
+
+        // Optional: Build configuration to use when evaluating & building dependencies.
+        // Defaults to "Debug".
+        "configuration": "Debug",
+
+        // Optional: Override the namespace prefix for generated C# code.
+        // Defaults to MSBuild's `$(RootNamespace)` for the project.
+        "rootNamespace": "MyCompany.Coalesce.Web",
+    },
+
+    "dataProject": {
+        // Required: Path to the csproj of the data project. Path is relative to location of this coalesce.json file.
+        "projectFile": "src/Coalesce.Domain/Coalesce.Domain.csproj",
+
+        // Optional: Framework to use when evaluating & building dependencies.
+        // Not needed if your project only specifies a single framework - only required for multi-targeting projects.
+        "framework": "netstandard2.0",
+
+        // Optional: Build configuration to use when evaluating & building dependencies.
+        // Defaults to "Release".
+        "configuration": "Debug",
+    },
+
+    // The name of the root generator to use.
+    // The only current available value is "Vue" (default).
+    "rootGenerator": "Vue",
+            
+    // If set, specifies a list of whitelisted root type names that will restrict
+    // which types Coalesce will use for code generation. 
+    // Root types are those that must be annotated with [Coalesce].
+    // Useful if want to segment a single data project into multiple web projects, 
+    // or into different areas/directories within a single web project.
+    "rootTypesWhitelist": [
+        "MyDbContext", "MyCustomDto"
+    ],
+
+    "generatorConfig": {
+        // A set of objects keyed by generator name.
+        // Generator names may optionally be qualified by their full namespace.
+        // All generators are listed when running 'dotnet coalesce' with '--verbosity debug'.
+        // For example, "Controllers" or "IntelliTect.Coalesce.CodeGeneration.Vue.Generators.Controllers".
+        "GeneratorName": {
+            // Optional: true if the generator should be disabled.
+            "disabled": true,
+            // Optional: Configures a path relative to the default output path for the generator
+            // where that generator's output should be placed instead.
+            "targetDirectory": "../DifferentFolder"
+            // Optional: Indentation size
+            "indentationSize": 2 
+        },
+    }
+}

Additional CLI Options

There are a couple of extra options which are only available as CLI parameters to dotnet coalesce. These options do not affect the behavior of the code generation - only the behavior of the CLI itself.

--debug

When this flag is specified when running dotnet coalesce, Coalesce will wait up to 60 seconds for a debugger to be attached to its process before starting code generation.

-v|--verbosity <level>

Set the verbosity of the output. Options are trace, debug, information, warning, error, critical, and none.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/coalesce-swashbuckle.html b/topics/coalesce-swashbuckle.html new file mode 100644 index 000000000..a9d5a9f94 --- /dev/null +++ b/topics/coalesce-swashbuckle.html @@ -0,0 +1,56 @@ + + + + + + OpenAPI/Swagger | Coalesce + + + + + + + + + + + + + + +
Skip to content

OpenAPI/Swagger

When using Coalesce to generate API endpoints, the default OpenAPI generation (sometimes referred to as its pre-2015 name "Swagger") can sometimes result in verbose and confusing API definitions, especially when dealing with DataSources and Behaviors. To address these issues, the IntelliTect.Coalesce.Swashbuckle package offers enhancements for OpenAPI definitions, making your Coalesce-generated APIs clearer and more manageable.

Setup

In this setup process, we're going to add an additional Coalesce NuGet package, configure OpenAPI in your ASP.NET Core application, and specify a Coalesce-specific config property to improve the OpenAPI documentation for Coalesce-generated APIs.

1. Add the NuGet Package

Add a reference to the IntelliTect.Coalesce.Swashbuckle NuGet package to your web project:

xml
<ItemGroup>
+  <PackageReference Include="IntelliTect.Coalesce.Vue" Version="$(CoalesceVersion)" />
+  <PackageReference Include="IntelliTect.Coalesce.Swashbuckle" Version="$(CoalesceVersion)" />
+</ItemGroup>

Configure OpenAPI in Program.cs

Update your Program.cs file to configure OpenAPI and include Coalesce-specific enhancements. This involves setting up OpenAPI as usual and then applying the Coalesce configuration (Note: You do not need to install the Swashbuckle.AspNetCore package if you are using the Coalesce one).

c#
builder.Services.AddSwaggerGen(config =>
+{
+    config.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
+    config.AddCoalesce(); // Add coalesce specific configuration
+});
c#
// Configure the HTTP request pipeline.
+if (app.Environment.IsDevelopment())
+{
+    app.UseSwagger();
+    app.UseSwaggerUI();
+}

Improvements

Default OpenAPI Generation

By default, OpenAPI in ASP.NET Core offers a simple way to document APIs. It generates API documentation based on the structure of your controller actions and data models. While this default setup is functional for many scenarios, it may fall short in representing more complex cases, especially when dealing with Coalesce-generated endpoints that include DataSources and Behaviors. These scenarios can lead to verbose and sometimes confusing OpenAPI documentation.

Coalesce Enhancements

The IntelliTect.Coalesce.Swashbuckle package addresses the limitations of the default OpenAPI generation by providing custom OpenAPI filters. These filters enhance the readability and usability of your OpenAPI documentation for Coalesce-generated APIs.

The primary effect is an adjustment of parameter definitions to account for Coalesce's custom model binders that create instances of Data Sources and Behaviors on each request. These parameters will be updated in the OpenAPI document to account for data source parameters, filter parameters, and other model-specific customizations.

Visual Comparison

To illustrate the impact of the IntelliTect.Coalesce.Swashbuckle package, let's examine the Patient model and its representation in OpenAPI.

c#
public class Patient
+{
+    public int PatientId { get; init; }
+    public DateTime NextAppointment { get; set; }
+    // Additional properties
+
+    [DefaultDataSource]
+    public class PatientDataSource(CrudContext<AppDbContext> context) : StandardDataSource<Patient, AppDbContext>(context)
+    {
+        // ...
+    }
+
+    public class PatientsWithUpcomingAppointmentsDataSource(CrudContext<AppDbContext> context) : StandardDataSource<Patient, AppDbContext>(context)
+    {
+        [Coalesce]
+        public int MonthsOut { get; set; }
+
+        // ...
+    }
+}

Without IntelliTect.Coalesce.Swashbuckle

In the default OpenAPI configuration, DataSource and Behavior parameters are represented as generic objects. DataSource names are also shown as plain strings, hindering the discoverability of available data sources.

With IntelliTect.Coalesce.Swashbuckle

With the IntelliTect.Coalesce.Swashbuckle package, OpenAPI can interpret the DataSource as a dropdown menu and provides individual fields for each DataSource property. Additionally, it eliminates unnecessary behavior parameters.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/immutability.html b/topics/immutability.html new file mode 100644 index 000000000..8821fd33b --- /dev/null +++ b/topics/immutability.html @@ -0,0 +1,59 @@ + + + + + + Immutability | Coalesce + + + + + + + + + + + + + + +
Skip to content

Immutability

Immutability of data is an essential consideration of almost any system - it is usually important there is confidence in the correctness of historical data.

For example, a record of an invoice must not change when the prices for the line items are updated as the future progresses, and if a purchased item is later refunded, none of the data about the original purchase should be changed. Only new information describing the refund should be added to the database, including details about the refund and some indication of "refunded" on the original item (like a foreign key referencing the refund transaction)

It is ultimately up to each individual use case when deciding when data needs to be immutable, but at the very least, any data involving financial transactions and any data where auditing is a major concern should be immutable to at least some extent.

This page explores some techniques to achieve immutability in a Coalesce application.

Configuration data vs Transactional data

Transactional Data

In an application, transaction data is any data that represents an event or action that occurred at a particular time. A purchase, an invoice or account statement, a message or email, an audit or error log, a calendar event - these are all examples of transactional data.

For purposes of this exercise, we're also lumping non-configuration master data under the umbrella of transactional data. For example, a master Customer record, or a User record.

Configuration Data

Configuration data (sometimes categorized under the umbrella of master data) is the data in a system that informs how transactions occur. The current price of an item, any kind of template, and even singleton configuration like a site's theme and colors.

If you have configuration data that is linked to transactional data and affects how that transactional data is interpreted, that configuration data becomes a strong candidate for immutability. For example, an InvoiceLine record that references a Product by foreign key instead of having columns on InvoiceLine to hold the price and description of the product - any future updates to the product should not affect past invoices.

General Techniques

The following immutability techniques are applicable to both transactional and configuration data.

Disable edits

One of the simplest ways to enforce immutability of data is to simply prevent it from being edited (and deleted, if applicable) at all.

Instead of using incremental saves (e.g. through auto-saves), only create completed records or sets of records with an explicit save or bulk save operation, or a custom method. Disable edits entirely to the immutable entities with security attributes.

Unfortunately, this approach is usually not feasible for anything but the simplest of data models. There are usually additional considerations to be had, including:

  • Completely immutable hierarchical data models can be unreasonably difficult to work with, requiring a full clone of the hierarchy to make the smallest of change (although this could be a desirable characteristic, depending on the use case).
  • There's no ability to save in-progress or "draft" state. All data must be created all at once.

Editable until finalized

A more nuanced approach to immutability is to only disable editing once a record has reached a "finalized" state. For example, an order that has transitioned from a "shopping cart" to a submitted, paid-for order. Or, a set of configuration that has transitioned from a "draft" state to a "published" state.

Using Behaviors on all entities in a hierarchy, prohibit any undesirable edits by overriding the BeforeSave or BeforeSaveAsync method and checking the state of the record in the database to determine if edits are permissible.

This technique has the advantage of being infinitely customizable, allowing for scenarios like administrative overrides of records that would otherwise be uneditable by an unprivileged user.

Soft deletes

While not a immutability strategy on its own, implementing immutability usually requires the prevention hard deletes of existing records. However, the ability to retire or archive old records using soft deletes is still valuable and doesn't violate the principals of immutability. Doing so is fairly straightforward in Coalesce:

  • Add a property to the type to indicate soft delete status (usually a DateTimeOffset? DeletedDate { get; set; })
  • Choose how soft deletes will occur:
    • To soft-delete items using the built-in /delete endpoint and $delete API on ViewModel instances, override ExecuteDeleteAsync on the type's Behaviors to set the DeletedDate and call db.SaveChangesAsync(). Do not call the base ExecuteDeleteAsync method (which will perform a hard delete). This approach also makes the Delete button in admin pages perform a soft delete.
    • Otherwise, set the soft delete flag using regular saves, just as you would change any other property. Don't forget to implement security restrictions around who can delete and un-delete records if that's important to your application.
  • Filter out soft-deleted values from selection in your custom UI pages. There are a few options here:
    • The simplest way is to use Coalesce's built-in filtering to exclude soft-deleted items. This can be done from a ListViewModel's $params.filter:

      ts
      const list = new ItemTypeListViewModel();
      +list.$params.filter.deletedDate = null;

      ...or be passed directly to a c-input or c-select:

      template
      <c-select 
      +  :model="item" 
      +  for="itemType" 
      +  :params="{ filter: { deletedDate: null } }" 
      +/>
    • You can also use a custom data source if your needs around excluding soft-deleted items are more complex. For example, if there are certain classes of users in your application who should not be allowed to read soft-deleted items, enforce that in the default data source for the type.

Configuration Immutability

In addition to the general techniques above, the following are approaches are specifically relevant to handling configuration data:

Enforce nothing, document consequences

The simplest and riskiest approach is to enforce nothing in the application, but ensure that configuration administrators are aware of the consequences of changing configuration that could have unintended consequences.

For example, in a scenario with a transactional "Item" record and a configuration "ItemType" record, changing the name of the ItemType would affect the apparent type of all existing Item records that use that type. This can be OK if modifications are performed with this understanding as to not alter the meaning of existing data, but can have undesirable consequences if an existing ItemType is renamed to something completely unrelated.

Disable edits

The next simplest approach is to make configuration records fully immutable by disabling edits and hard deletes using security attributes. This is largely foolproof, but comes with the same drawbacks as described above.

For simple cases like a table having not much more than a Name column that provides values in a dropdown, the burden on configuration administrators is usually small. However, for more complex configuration - especially hierarchical configuration - the burden imparted by pure immutability is often unreasonably high. For these scenarios, continue reading the next sections.

Editable until used

As an extension of the Editable until finalized technique described above, configuration data could be left editable as long as it has not yet been referenced by any transactional data.

This can be useful for scenarios where a formal "publish" state for the configuration is excessive. Pick-lists for selection in a dropdown, for example, can benefit from this approach by allowing values to be created and worked on as long as changes would not affect the meaning of any existing transactional data that references those values.

To enforce this, use Behaviors to block edits to in-use configuration by looking in the database for uses of the configuration record being edited.

Copy onto transactional records

Another strategy for dealing with configuration changes is to leave configuration records mutable, but copy the important configuration values onto each transactional record as transactions occur.

This can work great for financial records especially - when a purchase is finalized and paid for, copy the fields like price and description onto each line item in the purchase. This way, future updates to products do not affect past purchases of that item.

Ensure that the properties in your transactional records that will hold the snapshotted configuration are immutable, then populate these properties from configuration in your backend code (custom methods, services, or behaviors) when transactional records are created.

Versioned configuration

A more advanced but more powerful system of configuration is to use versioned configuration.

In this approach, there are two tables: A primary configuration table that is freely mutable, and a second table that is versioned and immutable. The primary table keeps track of active version of configuration as well as any configuration that does not need to be versioned or kept immutable, while the records in the versioned table are what get associated to transaction data that relies on the configuration.

For example:

c#

+[Delete(DenyAll)]
+public class ProductConfiguration 
+{
+    public int Id { get; set; }
+
+    public string Sku { get; set; }
+    public string MarketingDescription { get; set; }
+    public string InternalNotes { get; set; }
+
+    public int? CurrentVersionId { get; set; }
+    public ProductConfigurationVersion CurrentVersion { get; set; }
+
+    public DateTimeOffset? DeletedDate { get; set; }
+}
+
+[Edit(DenyAll)]
+[Delete(DenyAll)]
+public class ProductConfigurationVersion
+{
+    public int Id { get; set; }
+
+    public int ConfigurationId { get; set; }
+    public ProductConfiguration Configuration { get; set; }
+
+    public string Name { get; set; }
+    public decimal Price { get; set; }
+
+    public DateTimeOffset CreatedOn { get; set; }
+}

In this example, other configuration records that need to reference the product can reference the ProductConfiguration record and not need to worry about performing updates to foreign keys every time a new version of the product configuration is created.

Transactional records, on the other hand, should have foreign keys that reference the ProductConfigurationVersion record so that the exact active version at the time of purchase is known. The principal configuration record can be reached through the Configuration navigation property.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/security.html b/topics/security.html new file mode 100644 index 000000000..58b6fe0b9 --- /dev/null +++ b/topics/security.html @@ -0,0 +1,315 @@ + + + + + + Security | Coalesce + + + + + + + + + + + + + + +
Skip to content

Security

This page is a comprehensive overview of all the techniques that can be used in a Coalesce application to restrict the capabilities of API endpoints that Coalesce generates.

The following table is a quick reference of scenarios you might encounter and how you might handle them. If you're unfamiliar with these techniques, though, then you are encouraged to read through this page to get a deeper understanding of what's available before selecting a solution.

FeatureRestrictionTechnique

Entity Reads: /get,
/list,
/count

Disable

[Read(DenyAll)]

Roles

[Read("RoleName")]

Prevent auto-include

  • Omit base call in Data Source GetQuery override.
  • [Read(NoAutoInclude = true)] on properties or types.
  • [assembly: CoalesceConfiguration(NoAutoInclude = true)]

Any custom code:

  • Query Predicates
  • Filtered Includes
  • Conditional Includes
  • Sort/search/filter overrides

Custom Default Data Source

Entity Mutations: /save,
/bulkSave,
/delete

Disable

[Create(DenyAll)] [Edit(DenyAll)] [Delete(DenyAll)]

Roles

[Create("Role")] [Edit("Role")] [Delete("Role")]

Restrict target records (edit/delete)

Custom Default Data Source

Static Validation

Validation attributes

Any custom code:

  • Security
  • Validation

Custom Behaviors

Methods and Services

Disable

N/A - explicit opt-in required via [Coalesce]

Roles

[Execute("RoleName")]

Static Validation

Validation attributes

Restrict Targets (only instance methods)

Other

Write custom logic in the method.

Properties
(All input and output for Entity CRUD, Methods, and Services)

Globally Exclude
Roles

Property Security Attributes

Read-only

Init-only (write-once)

init setter

Custom security

Endpoint Security

Coalesce generates API endpoints by traversing your data model's classes, starting from types annotated with [Coalesce]. This usually includes your DbContext class, as well as any Service classes or interfaces.

Classes can be hidden from Coalesce entirely by annotating them with [InternalUse], preventing generation of API endpoints for that class, as well as preventing properties of that type from being exposed.

DbSet<> properties on your DbContext class can also be annotated with [InternalUse], causing that type to be treated by Coalesce like an External Type rather than an Entity, once again preventing generation of API endpoints but without preventing properties of that type from being exposed.

Class Security Attributes

For each of your Entities and Custom DTOs, Coalesce generates a set of CRUD API endpoints (/get, /list, /count, /save, /bulkSave, and /delete).

The default behavior is that all endpoints require an authenticated user (anonymous users are rejected).

These endpoints can be secured by placing any or all of the [Read], [Create], [Edit], and [Delete] attributes on the the class. Each attribute can specify required roles for that action, or open that action to anonymous, unauthenticated users, or disable the endpoint entirely.

This security is applied to the generated controllers. The [Read] attribute on a class does not affect instances of that class when those instances are present as child properties of other types, since in those scenarios the data will be coming from a different endpoint on a different controller.

EndpointsGoverning Attributes

/get, /list, /count

c#
[ReadAttribute]

/save

c#
[CreateAttribute] // Affects saves of new entities
+[EditAttribute]   // Affects saves of existing entities

/delete

c#
[DeleteAttribute]

/bulkSave

c#
// Read permission required for the root entity:
+[ReadAttribute]
+
+// Control of each entity affected by the bulk save:
+[CreateAttribute]
+[EditAttribute]
+[DeleteAttribute]

Here are some examples of applying security attributes to an entity class. If a particular action doesn't need to be restricted, you can omit that attribute, but this example shows usages of all four:

c#
// Allow read access by unauthenticated, anonymous users:
+[Read(SecurityPermissionLevels.AllowAll)]
+// Allow creation of new entities by the Admin and HR roles (params string[] style):
+[Create("Admin", "HR")]
+// Allow editing of existing Employee entities by users with the Admin or HR roles (CSV style):
+[Edit("Admin,HR")]
+// Prohibit deletion of Employee entities
+[Delete(SecurityPermissionLevels.DenyAll)]
+public class Employee
+{
+    public int EmployeeId { get; set; }
+}

Method Security Attributes

To secure the endpoints generated for your Custom Methods and Services, the [Execute] attribute can be used to specify a set of required roles for that endpoint, or to open that endpoint to anonymous users.

The default behavior is that all endpoints require an authenticated user (anonymous users are rejected).

For example:

c#
public class Employee
+{
+    public int EmployeeId { get; set; }
+
+    [Coalesce, Execute("Payroll,HR")]
+    public void GiveRaise(int centsPerHour) {
+        // Only Payroll and HR users can call this method
+    }
+
+    [Coalesce, Execute(SecurityPermissionLevels.AllowAll)]
+    public void SendMessage(string message) {
+        // Anyone (even anonymous, unauthenticated users) can call this method.
+    }
+}

Property/Column Security

Security applied via attributes to properties in Coalesce affects all usages of that property across all Coalesce-generated APIs. This includes usages of that property on types that occur as children of other types, which is a spot where class-level or endpoint-level security generally does not apply. These attributes can be placed on the properties on your Entities and External Types to apply role-based restrictions to that property.

  • ReadAttribute limits the roles that can read values from that property in responses from the server.
  • EditAttribute limits the roles that can write values to that property in requests made to the server.
  • RestrictAttribute registers an implementation of IPropertyRestriction that allows for writing custom code to implement these restrictions.

This security is executed and enforced by the mapping that occurs in the generated DTOs, meaning it affects both entity CRUD APIs as well as Custom Methods. It is also checked by the Standard Data Source to prevent sorting, searching, and filtering by properties that a user is not permitted to read.

Internal Properties

Properties can be hidden from Coalesce entirely, either with the [InternalUse] attribute or non-public C# access modifiers.

The properties in the following example are hidden entirely from all Coalesce functionality and generated APIs:

c#
using IntelliTect.Coalesce.DataAnnotations;
+public class Employee
+{
+  // InternalUseAttribute hides anything from Coalesce.
+  [InternalUse]
+  public string Name { get; set; }
+
+  // Non-public C# access modifiers will hide properties from Coalesce:
+  internal decimal Salary { get; set; }
+
+  // Property's type is [InternalUse], so properties using that type are also internal.
+  public Department Department { get; set; }
+}
+
+[InternalUse]
+public class Department
+{
+  // All properties on an [InternalUse] type are non-exposed,
+  // since the parent type is not exposed.
+  public string Name { get; set; }
+}

Read-Only Properties

A property in Coalesce can be made read-only in any of the following ways:

c#
using IntelliTect.Coalesce.DataAnnotations;
+using System.ComponentModel;
+public class Employee
+{
+  // A property with a [Read] attribute but no [Edit] attribute is read-only:
+  [Read]
+  public string Name { get; set; }
+
+  // Payroll users and HR users can read this property. Nobody can edit it:
+  [Read("Payroll,HR")]
+  public decimal Salary { get; set; }
+
+  // Using System.ComponentModel.ReadOnlyAttribute:
+  [ReadOnly(true)]
+  public DateTime BirthDate { get; set; }
+
+  // Non-public setter:
+  public DateTime StartDate { get; internal set; }
+
+  // No setter:
+  public string EmploymentDuration => (DateTime.Now - StartDate).ToString();
+
+  // Edits denied:
+  [Edit(SecurityPermissionLevels.DenyAll)]
+  public string EmployeeNumber { get; set; }
+}

Role Restrictions

Reading and writing a property in Coalesce can be restricted by roles:

c#
using IntelliTect.Coalesce.DataAnnotations;
+public class Employee
+{
+  // A property with no attributes is readable and writable without restriction
+  public string Name { get; set; }
+
+  // When a [Read] and [Edit] attributes are both present,
+  // the read roles are required for edits in addition to any edit roles.
+  // Property is only readable by Payroll & HR,
+  // and is also only editable by Payroll & HR.
+  [Read("Payroll,HR"), Edit]
+  public DateTime BirthDate { get; set; }
+
+  // Property is readable by Payroll and HR, and editable only by Payroll.
+  [Read("Payroll", "HR"), Edit("Payroll")]
+  public decimal Salary { get; set; }
+
+  // Property is readable by Payroll, and editable only by a user who is both Payroll AND HR.
+  [Read("Payroll"), Edit("HR")]
+  public DateTime StartDate { get; set; }
+
+  // Init-only properties on entities can only be set by the first /save of the entity.
+  public string EmployeeNumber { get; init; }
+}

A few of the examples above point out that when a property is restricted for reading by roles, those roles are also required when editing that property. This is because it usually doesn't make sense for a user to change a value when they have no way of knowing what the original value was. If you have a situation where a property should be editable without knowing the original value, use a custom method on the model to accept and set the new value.

Custom Restrictions

IntelliTect.Coalesce.DataAnnotations.RestrictAttribute<T>

In addition to role-based property restrictions, you can also define property restrictions that can execute custom code for each model instance if your logic require more nuanced decisions than can be made with roles.

c#
using IntelliTect.Coalesce.DataAnnotations;
+public class Employee 
+{
+  public int Id { get; set; }
+
+  [Read]
+  public string UserId { get; set; }
+
+  [Restrict<SalaryRestriction>]
+  public decimal Salary { get; set; }
+}
+
+public class SalaryRestriction(MyUserService userService) : IPropertyRestriction<Employee>
+{
+  public bool UserCanRead(IMappingContext context, string propertyName, Employee model)
+    => context.User.GetUserId() == model.UserId || userService.IsPayroll(context.User);
+
+  public bool UserCanWrite(IMappingContext context, string propertyName, Employee model, object incomingValue)
+    => userService.IsPayroll(context.User);
+
+  public bool UserCanFilter(IMappingContext context, string propertyName)
+    => userService.IsPayroll(context.User);
+}

Restriction classes support dependency injection, so you can inject any supplemental services needed to make a determination.

The UserCanRead method controls whether values of the restricted property will be mapped from model instances to the generated DTO. Similarly, UserCanWrite controls whether the property can be mapped back to the model instance from the generated DTO.

The UserCanFilter method has a default implementation that returns false, but can be implemented if there is an appropriate, instance-agnostic way to determine if a user can sort, search, or filter values of that property.

Multiple different restrictions can be placed on a single property; all of them must succeed for the operation to be permitted. Restrictions also stack on top of role attribute restrictions ([Read] and [Edit]).

Row-level Security

Data Sources

In Coalesce, Data Sources are the mechanism that you can extend to implement row-level security on your Entities and Custom DTOs.

Data Sources are used when fetching results for /get, /list, and /count endpoints, and when fetching the target or result of a /save, /bulkSave, or /delete, and when fetching the invocation target of an Instance Method.

By default, your entities will be fetched using the Standard Data Source, but you can declare a custom default data source for each of your entities to override this default functionality. The default functionality here includes the default loading behavior, a feature where the Standard Data Source automatically includes the immediate relationships of requested entities. This can be suppressed by overriding the GetQuery method on your custom data source and not calling the base method, or by placing [Read(NoAutoInclude = true)] on classes or navigation properties that you do not want automatically included.

For most use cases, all your security rules will be implemented in the GetQuery/GetQueryAsync method. This is the most foundational method of the data source that all other functions in the data source build upon. Any predicates applied to the query of a type's default data source will affect all of the type's generated API endpoints (except for static custom methods).

There are a few different techniques that you can use to apply filtering in a data source, each one working for a specific use case. The example below includes an example of each technique.

Query Predicates

The Query Predicates technique involves applying a .Where() predicate to your query to filter the root entities that are returned by the query using some database-executed logic. This is a form of row-level security and can be used to only include a record based on the values of that record in the database.

Conditional Includes

The Conditional Includes technique involves conditionally appending .Include() calls to your query only when some server-executed criteria is met. Usually this involves checking the roles of a user and only including a navigation property if the user is in the requisite role. This technique cannot be used with database-executed logic and is therefore behaves more like table-level security than row-level security.

Filtered Includes

The Filtered Includes technique involves using EF Core filtered includes to apply database-executed logic to filter the rows of child collection navigation properties.

EF filtered Includes cannot be used to apply database-executed filters to reference navigation properties due to lack of EF support - see the sections below on transform results and global query filters for two possible solutions.

A complex example using all three of the above techniques:

c#
public class Employee
+{
+  public int EmployeeId { get; set; }
+  public bool IsIntern { get; set; }
+  public List<DepartmentMember> DepartmentMembers { get; set; }
+
+  // Override the default data source for Employee with a custom one:
+  [DefaultDataSource]
+  public class DefaultSource : StandardDataSource<Employee, AppDbContext>
+  {
+    public DefaultSource(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override IQueryable<Employee> GetQuery(IDataSourceParameters parameters) {
+      IQueryable<Employee> query = Db.Employees;
+
+      // TECHNIQUE: Conditional Includes - subset child objects using server-executed logic:
+      if (User.IsInRole("HR")) {
+        // HR can see everything. Return early so they are not subjected to the other filters:
+        return query.Include(e => e.DepartmentMembers).ThenInclude(dm => dm.Department);
+      }
+
+      // TECHNIQUE: Query Predicates - subset root objects using database-executed logic:
+      int employeeId = User.GetEmployeeId();
+      query = query.Where(e =>
+          // Anyone can see interns
+          e.IsIntern ||
+          // Otherwise, a user can only see employees in their own departments:
+          e.DepartmentMembers.Any(dm => dm.Department.DepartmentMembers.Any(u => u.EmployeeId == employeeId))
+        );
+
+      // TECHNIQUE: EF Core Filtered Includes - subset collections using database-executed logic.
+      // Include the departments of employees, but only those that the current user is a member of.
+      query = query.Include(e => e.DepartmentMembers
+        .Where(dm => dm.Department.DepartmentMembers.Any(u => u.EmployeeId == employeeId)))
+        .ThenInclude(dm => dm.Department);
+
+      return query;
+    }
+  }
+}
+
+public class Department
+{
+  public int DepartmentId { get; set; }
+  public string Name { get; set; }
+  public List<DepartmentMember> DepartmentMembers { get; set; }
+
+  // Override the default data source for Department with a custom one:
+  [DefaultDataSource]
+  public class DefaultSource : StandardDataSource<Department, AppDbContext>
+  {
+    public DefaultSource(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override IQueryable<Department> GetQuery(IDataSourceParameters parameters) {
+      IQueryable<Department> query = Db.Departments
+        .Include(e => e.DepartmentMembers).ThenInclude(dm => dm.Employee);
+
+      if (!User.IsInRole("HR"))
+      {
+        // Non-HR users can only see their own departments:
+        query = query.Where(d => d.DepartmentMembers.Any(dm => dm.EmployeeId == User.GetEmployeeId()));
+      }
+
+      return query;
+    }
+  }
+}
+
+// Only HR can directly read or modify DepartmentMember records.
+[Read("HR"), Create("HR"), Edit("HR"), Delete("HR")]
+public class DepartmentMember
+{
+  public int Id { get; set; }
+
+  public int DepartmentId { get; set; }
+  public Department Department { get; set; }
+  public int EmployeeId { get; set; }
+  public Employee Employee { get; set; }
+}

Transform Results

There exists a fourth technique in Data Sources for applying filtered includes: the TransformResultsAsync method. Unlike the other techniques above that are performed in the GetQuery method and applied at the beginning of the data source query pipeline, TransformResults is applied at the very end of the process against the materialized results. It also only affects the responses from the generated /get, /list, /save, /bulkSave, and /delete endpoints - it has no bearing on the invocation target of instance methods.

The primary purpose of TransformResults is to conditionally load navigation properties. This was very useful before EF Core introduced native filtered includes for collection navigation properties, and is still useful for applying filtered includes to reference navigation properties since EF does not support this. It can also be used for any kind of filtered includes if native EF filtered includes get translated into poorly-performant SQL, or it can be used to populate external type or other non-database-mapped properties on your entities.

The general technique for using TransformResults involves using EF Core Explicit Loading to attach additional navigation properties to the result set, and then using Coalesce's .IncludedSeparately() method in the data source's GetQuery so that Coalesce can still build the correct Include Tree to shape the serialization of your results.

c#
public class Employee
+{
+  public int EmployeeId { get; set; }
+  public int ManagerId { get; set; }
+  public Employee Manager { get; set; }
+
+  [DefaultDataSource]
+  public class DefaultSource : StandardDataSource<Employee, AppDbContext>
+  {
+    public DefaultSource(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override IQueryable<Employee> GetQuery(IDataSourceParameters parameters)
+      // Use IncludedSeparately to instruct Coalesce that we're going to
+      // manually populate the Manager, and that it should be mapped to the result DTOs
+      // despite not being eagerly loaded with EF's .Include() method.
+      => Db.Employees.IncludedSeparately(e => e.Manager);
+
+    public override async Task TransformResultsAsync(
+      IReadOnlyList<Employee> results,
+      IDataSourceParameters parameters
+    )
+    {
+      foreach (var employee in results)
+      {
+        // Only load the employee's manager if the current logged in user is that manager.
+        if (employee.ManagerId == User.GetEmployeeId() && employee.Manager is null) {
+          await Db.Employees.Where(e => e.EmployeeId == employee.ManagerId).LoadAsync();
+        }
+      }
+    }
+  }
+}

Alternatively, and indeed preferably, you can often formulate a query that does not use iteration and requires only a single database round-trip:

c#
public override async Task TransformResultsAsync(
+  IReadOnlyList<Employee> results,
+  IDataSourceParameters parameters
+)
+{
+  var managerIds = results.Select(e => e.ManagerId).ToList();
+  await Db.Employees
+    .Where(e => managerIds.Contains(e.ManagerId) && e.EmployeeId == User.GetEmployeeId())
+    .LoadAsync();
+}

Behaviors

In Coalesce, Behaviors are the extension point to implement row-level security or other customizations of create/edit/delete operations on your Entities and Custom DTOs. Behaviors are implemented on top of data sources, meaning the client request will be rejected if the requested entity for modification cannot be loaded from the entity's default data source.

By default, each entity will use the Standard Behaviors, but you can declare a custom behaviors class for each of your entities to override this default functionality.

For most use cases, all your security rules will be implemented in the BeforeSave/BeforeSaveAsync and BeforeDelete/BeforeDeleteAsync methods.

For a more complete explanation of everything you can do with behaviors, see the full Behaviors documentation page.

EF Global Query Filters

Since Coalesce's data access layer is built on top of Entity Framework, you can also use Entity Framework's Global Query Filters feature to apply row-level security.

This approach is less flexible than custom Coalesce data sources and has other drawbacks as well, but on the other hand it has more absolute authority, is less susceptible to issues like inadvertently returning data through unfiltered navigation properties, and can sometimes require less work to implement than individual data sources.

Global Query Filters are also the only way to implement database-executed filtered includes of reference navigation properties, as there is no version of .Include() for reference navigation properties that allows a database-executed predicate to be applied. See this open issue on EF Core.

Foreign Key Injection Vulnerabilities

When a user is saving a model with Coalesce, they can provide values for the model's foreign key properties. When this interaction takes place through a user interface, the user is not likely to produce a foreign key referencing an object that the user is not allowed to view.

A malicious user, however, is a different story. Imagine a user who is brute-forcing the /save endpoint on one of your entities, enumerating values of a foreign key. The may be trying to leak data through navigation property values returned by the response from the save, or they may be trying to inject their data into an object graph that they do not otherwise have access to.

If this scenario sounds like a plausible threat vector your application, be sure to perform sufficient validation of incoming foreign keys to ensure that the user is allowed to use a particular foreign key value before saving it to your database.

Also consider making any required foreign keys that should not change for the lifetime of an entity into init-only properties (i.e. use the init accessor in C# instead of the set accessor). While this does not entirely solve the foreign key injection issue, it eliminates the need to validate that a user is not changing the parent of an object if such an operation is not desirable.

Server-side Data Validation

Coalesce, as of version 4, will by default perform server-side validation of incoming data using validation attributes.

Your database will also enforce any constraints (referential integrity, not null, check constraints, etc.), but errors produced by your database will manifest as exceptions, which are not user-friendly.

For any custom validation that cannot be implemented by attributes, you must implement that yourself for saves and deletes or custom methods.

Attribute Validation

Historically, Coalesce did not provide any automatic, attribute-based validation of incoming data. As of Coalesce 4.0, automatic server side validation using ValidationAttribute-derived attributes on your models is enabled by default.

In addition to any validation attributes present on your model properties and method parameters, there are some other rules that work similarly to the default validation in ASP.NET Core:

  • The C# 11 required keyword also acts like a RequiredAttribute
  • If C# nullable reference types are enabled, non-nullable reference types are required required.
  • Non-nullable value types are implicitly optional, with the exception of non-nullable foreign keys, which are required.

To disable this functionality for your entire application, disable the corresponding configuration options on CoalesceOptions. For example, in Startup.cs or Program.cs:

c#
services.AddCoalesce<AppDbContext>(b => b.Configure(o =>
+{
+    // Set either to false to disable:
+    o.ValidateAttributesForSaves = true;
+    o.ValidateAttributesForMethods = true;
+}));

Each option also has a more granular override:

Enabling ValidateAttributesForSaves causes the Standard Behaviors to perform validation of validation attributes during /save or /bulkSave calls, preventing a save when validation fails. This can be overridden per type or even per request by setting the ValidateAttributesForSaves property on a custom Behaviors instance.

Enabling ValidateAttributesForMethods causes the generated controllers for custom methods to perform validation of incoming parameters. Validation attributes may be placed on method parameters, and validation will also be performed against the members of any complex type parameters. This can be overridden per method by setting the ValidateAttributes property on ExecuteAttribute for the method.

Saves and Deletes

Validation of /save, /bulkSave, and /delete actions against Entities and Custom DTOs are performed by the Behaviors for the type. Automatic attribute based validation can be used (saves only), or Behaviors can be overridden to perform validation and other customization of the save and delete process, as in the following example:

c#
public class Employee
+{
+  public int IsCeo { get; set; }
+  public decimal Salary { get; set; }
+
+  [Coalesce]
+  public class Behaviors : StandardBehaviors<Employee, AppDbContext>
+  {
+    public Behaviors(CrudContext<AppDbContext> context) : base(context) { }
+
+    public override ItemResult BeforeSave(SaveKind kind, Employee? oldItem, Employee item)
+    {
+      // `oldItem` is a shallow copy of entity from the database,
+      // and `item` is the tracked entity with incoming user data applied to it.
+      if (item.Salary > 1_000_000m && !oldItem.IsCeo) return "Salary is too high.";
+      return true;
+    }
+
+    public override ItemResult BeforeDelete(Case item)
+    {
+      if (item.IsCeo) return "The CEO cannot be fired.";
+      return true;
+    }
+  }
+}

Custom Methods and Services

For Custom Methods and Services, you can perform your own custom validation and return errors when validation fails. You can also use attribute based validation. Custom methods that need to return errors to the client are recommended to wrap their return type in an ItemResult<T>, allowing errors to be received and handled elegantly by your Coalesce Typescript code.

c#
public class Employee
+{
+  public decimal Salary { get; set; }
+
+  [Coalesce]
+  public ItemResult<decimal> GiveRaise(decimal raiseAmount)
+  {
+    if (raiseAmount > 3.5m) return "Raises must be less than $3.50."
+    Salary += raiseAmount;
+    return Salary;
+  }
+}

Security Overview Page

Coalesce provides batteries-included page that you can view to review the effective security rules in place for all the Coalesce-generated code in your project. Add this page to your application by mapping it as a route, either directly on WebHost in .NET 6+, or in UseEndpoints for 3.1+.

TIP

If you include the security overview in your production app, you should secure it with an authorization policy like in the example below. Alternatively, only map the endpoint in non-production environments.

c#
// .NET 6+ Program.cs:
+app.MapCoalesceSecurityOverview("coalesce-security").RequireAuthorization(
+    new AuthorizeAttribute { Roles = env.IsDevelopment() ? null : "Admin" }
+);
+
+// .NET Core 3.1+ Startup.cs:
+app.UseEndpoints(endpoints =>
+{
+    endpoints.MapCoalesceSecurityOverview("coalesce-security").RequireAuthorization(
+        new AuthorizeAttribute { Roles = env.IsDevelopment() ? null : "Admin" }
+    );
+});

Example of the contents of the security overview page:

Testing Your Security

If your application has complex security requirements and/or sensitive data that needs to be protected, you are encouraged to invest time into creating a set of automated tests to ensure that it is working how you expect.

The most comprehensive way to do this is to build a suite of integration tests using Microsoft's in-memory test server infrastructure. Follow Microsoft's documentation to set up a test project, and then write tests against your API endpoints. You will want to substitute your Entity Framework database provider with an in-memory Sqlite instance, and add a mock authentication handler to simulate authentication (we're mainly focused on testing authorization, not authentication).


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/startup.html b/topics/startup.html new file mode 100644 index 000000000..fe8f1a516 --- /dev/null +++ b/topics/startup.html @@ -0,0 +1,52 @@ + + + + + + Config: ASP.NET Core | Coalesce + + + + + + + + + + + + + + +
Skip to content

Application Configuration

In order for Coalesce to work in your application, you must register the needed services in your Startup.cs or Program.cs. Doing so is simple:

c#
public void ConfigureServices(IServiceCollection services)
+{
+    services.AddCoalesce<AppDbContext>();
+    ...
+}

This registers all the basic services that Coalesce needs in order to work with your EF DbContext. However, there are many more options available. Here's a more complete invocation of AddCoalesce that takes advantage of many of the options available:

c#
public void ConfigureServices(IServiceCollection services)
+{
+    services.AddCoalesce(builder => builder
+        .AddContext<AppDbContext>()
+        .UseDefaultDataSource(typeof(MyDataSource<,>))
+        .UseDefaultBehaviors(typeof(MyBehaviors<,>))
+        .UseTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"))
+        .Configure(o =>
+        {
+            o.ValidateAttributesForMethods = true; // note: true is the default
+            o.ValidateAttributesForSaves = true; // note: true is the default
+            o.DetailedExceptionMessages = true;
+            o.ExceptionResponseFactory = ctx =>
+            {
+                if (ctx.Exception is FileNotFoundException)
+                {
+                    ctx.HttpContext.Response.StatusCode = 404; // Optional - set a specific response code.
+                    return new IntelliTect.Coalesce.Models.ApiResult(false, "File not found");
+                }
+                return null;
+            };
+        });
+    );
+}

Available builder methods include:

public Builder AddContext<TDbContext>()

Register services needed by Coalesce to use the specified context. This is done automatically when calling the services.AddCoalesce<AppDbContext>(); overload.

public Builder UseDefaultDataSource(Type dataSource)

Overrides the default data source used, replacing the Standard Data Source. See Data Sources for more details.

public Builder UseDefaultBehaviors(Type behaviors)

Overrides the default behaviors used, replacing the Standard Behaviors. See Behaviors for more details.

public Builder UseTimeZone(TimeZoneInfo timeZone)

Specify a static time zone that should be used when Coalesce is performing operations on dates/times that lack timezone information. For example, when a user inputs a search term that contains only a date, Coalesce needs to know what timezone's midnight to use when performing the search.

public Builder UseTimeZone<ITimeZoneResolver>()

Specify a service implementation to use to resolve the current timezone. This should be a scoped service, and will be automatically registered if it is not already. This allows retrieving timezone information on a per-request basis from HTTP headers, Cookies, or any other source.

public Builder Configure(Action<CoalesceOptions> setupAction)

Configure additional options for Coalesce runtime behavior. Current options include options for server-side validation, and options for exception handling. See individual members for details.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/topics/upgrading.html b/topics/upgrading.html new file mode 100644 index 000000000..45aaaf90a --- /dev/null +++ b/topics/upgrading.html @@ -0,0 +1,34 @@ + + + + + + Upgrading Coalesce | Coalesce + + + + + + + + + + + + + + +
Skip to content

Upgrading Coalesce

Upgrading your project's version of Coalesce is a relatively straightforward process, but the process does involve a few different steps.

Decide new version

The first step, which you may have already done, is decide which version you're upgrading to. Coalesce projects generally favor the use of CI builds which are released as soon as new features are developed, rather than formal release versions that come out at a much slower cadence.

The latest version of Coalesce can be viewed on npm or on NuGet.

You should always use the same version for both NPM and NuGet dependencies. Having mismatched versions in a single project can introduce errors or subtle bugs.

NPM upgrades

Next, upgrade the NPM dependencies in your web project.

  1. Open package.json in your web project and replace the versions of coalesce-vue and coalesce-vue-vuetify3 with the new version number.
json
{
+  "dependencies": {
+    "coalesce-vue": "5.0.0-ci.20XX0806.2",
+    "coalesce-vue-vuetify3": "5.0.0-ci.20XX0806.2",
+  }
+}
  1. Save the changes to package.json.
  2. Run npm i in your web project to install the new versions.

NuGet upgrades

Coalesce projects have a single variable, CoalesceVersion, to control all Coalesce NuGet package dependencies, declared in Directory.Build.props. This file is in the root of the solution, next to the .sln file; it is also included in the "Solution Items" folder in Visual Studio's Solution Explorer.

To upgrade the NuGet packages:

  1. Update the value of CoalesceVersion with the new version number.
xml
<Project>
+  <PropertyGroup>
+    <CoalesceVersion>5.0.0-ci.20XX0806.2</CoalesceVersion>
+  </PropertyGroup>
+</Project>
  1. Save the changes.
  2. Run dotnet restore in the solution root or in the web project. Then, run code generation with dotnet coalesce or npm run coalesce in the web project.

TIP

The above information describes the default project configuration that originates from the Coalesce project template. If your project has diverged from this configuration, consult with your project team members, or just explore/search the files in your project.

WARNING

It is not recommended to use the Visual Studio NuGet Package Manager to manage Coalesce versions because it will erase usages of the central CoalesceVersion variable, which can lead to version mismatches within your solution. It also fails to maintain the version of the DotNetCliToolReference, which provides Coalesce's code generator.


Coalesce is a free and open-source framework created by IntelliTect to fill our desire to create better apps, faster. IntelliTect is a high-end software architecture and development consulting firm based in Spokane, Washington.

If you're looking for help with your software project, whether it be a Coalesce application, other technologies, or even just an idea, reach out to us at info@intellitect.com — we'd love to start a conversation! Our clients range from Fortune 100 companies to local small businesses and non-profits.

+ + + + \ No newline at end of file diff --git a/ts-logo-128.svg b/ts-logo-128.svg new file mode 100644 index 000000000..b65a93a8d --- /dev/null +++ b/ts-logo-128.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ts-logo-512.svg b/ts-logo-512.svg new file mode 100644 index 000000000..a46d53d49 --- /dev/null +++ b/ts-logo-512.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vite-logo.svg b/vite-logo.svg new file mode 100644 index 000000000..de4aeddc1 --- /dev/null +++ b/vite-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/vue-logo.svg b/vue-logo.svg new file mode 100644 index 000000000..d4d5f0bdf --- /dev/null +++ b/vue-logo.svg @@ -0,0 +1,8 @@ + + + + +