@rhinostone/swig 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/HISTORY.md CHANGED
@@ -1,3 +1,20 @@
1
+ [2.5.1](https://github.com/gina-io/swig/tree/v2.5.1) / 2026-05-28
2
+ -----------------------------------------------------------------
3
+
4
+ * **Fixed** Restored the JSDoc blocks on the top-level Swig public API methods (setFilter, setTag, setExtension, precompile, compile, compileFile, render, renderFile, run, invalidateCache) that were inadvertently stripped from lib/swig.js when the Swig constructor body was carved into @rhinostone/swig-core/lib/engine.js. The documentation comments now sit above the corresponding exports.* re-exports where make build-docs and IDE hover tooling read them. No runtime behavior change — the published lib/ code is byte-identical and only the JSDoc surface is updated.
5
+
6
+ * **Changed** Rephrased two stale internal-process tracker references in lib/tags/set.js source comments that survived the prior single-line audit sweep because the markers spanned a line wrap. The explanatory content is preserved verbatim; only the dead tracker tokens are dropped, per the in-repo no-internal-markers-in-shipping-source convention. No behavior change.
7
+
8
+ * **Changed** Migrated the test toolchain from mocha 1.12.0 to the Node.js built-in test runner (node:test) with built-in line coverage, removing the mocha, blanket, and travis-cov dev dependencies. This clears all 6 npm audit advisories (4 high, 2 critical) that were rooted in mocha's transitive dependency tree; the full suite passes unchanged and the 95% coverage gate over lib/ is preserved. The published package is unaffected — its only runtime dependency remains @rhinostone/swig-core.
9
+
10
+ * **Changed** Removed the unmaintained phantomjs and mocha-phantomjs browser-test toolchain, dropping the vulnerable form-data (CVE-2025-7783) and the rest of the legacy request dependency subtree from the dev dependency tree. Browser parity is verified through the production bundle build, pending a modern browser-test harness.
11
+
12
+ * **Changed** Upgraded the ESLint dev dependency from 8.57.1 to 9.x and migrated the lint configuration from the deprecated .eslintrc.json (eslintrc format) to the flat-config eslint.config.js, adding the globals dev dependency. The lenient rule set is preserved exactly (no indent enforcement, eqeqeq/no-eval/no-new-func off, semi always, max-len 600, plus an explicit linterOptions.reportUnusedDisableDirectives off to match the eslintrc default). ESLint 9 raises the lint toolchain Node floor to >=18.18, which affects development and CI only; the published package is unaffected and its only runtime dependency remains @rhinostone/swig-core.
13
+
14
+ * **Changed** Upgraded the example/development express dependency from the abandoned 3.x line to 4.x, dropping the vulnerable transitive morgan (CVE-2019-5413) and the legacy connect subtree from the dev dependency tree. The Express view-engine example runs unchanged. The published package is unaffected; its only runtime dependency remains @rhinostone/swig-core.
15
+
16
+ * **Changed** Upgraded the development lodash dependency from 1.3.x to 4.x, dropping the prototype-pollution and command-injection advisories (affecting lodash through 4.17.23) from the dev dependency tree. lodash is a test-only utility and the full suite passes unchanged on 4.x. The published package is unaffected; its only runtime dependency remains @rhinostone/swig-core.
17
+
1
18
  [2.5.0](https://github.com/gina-io/swig/tree/v2.5.0) / 2026-05-27
2
19
  -----------------------------------------------------------------
3
20
 
package/README.md CHANGED
@@ -3,7 +3,7 @@ Swig
3
3
 
4
4
  [![CI](https://github.com/gina-io/swig/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/gina-io/swig/actions/workflows/ci.yml) [![NPM version](http://img.shields.io/npm/v/@rhinostone/swig.svg?style=flat)](https://www.npmjs.com/package/@rhinostone/swig) [![NPM Downloads](http://img.shields.io/npm/dm/@rhinostone/swig.svg?style=flat)](https://www.npmjs.com/package/@rhinostone/swig) [![Socket Badge](https://socket.dev/api/badge/npm/package/@rhinostone/swig)](https://socket.dev/npm/package/@rhinostone/swig)
5
5
 
6
- > **Multi-flavor template engine** for Node.js and browsers — native Swig syntax (Jinja2/Django-inspired) and Twig syntax via dedicated frontends sharing one IR backend. [gina-io/swig](https://github.com/gina-io/swig) started as a maintained continuation of the abandoned [paularmstrong/swig](https://github.com/paularmstrong/swig) (last released 2014) and is now a standalone project. Security and bug fixes ship here.
6
+ > **Multi-flavor template engine** for Node.js and browsers — native Swig syntax (Jinja2/Django-inspired), Twig syntax, and Python Jinja2 syntax via dedicated frontends sharing one IR backend. [gina-io/swig](https://github.com/gina-io/swig) started as a maintained continuation of the abandoned [paularmstrong/swig](https://github.com/paularmstrong/swig) (last released 2014) and is now a standalone project. Security and bug fixes ship here.
7
7
 
8
8
  > **Part of the [Gina](https://github.com/gina-io/gina) ecosystem.** This is the built-in template engine for [Gina](https://gina.io) ([npm](https://www.npmjs.com/package/gina)), a Node.js MVC framework with HTTP/2, multi-bundle architecture, and scope-based data isolation.
9
9
 
@@ -11,6 +11,8 @@ Swig is a **Jinja2/Django-inspired** template engine for node.js and browsers. T
11
11
 
12
12
  > **Coming from Twig?** Install [@rhinostone/swig-twig](https://www.npmjs.com/package/@rhinostone/swig-twig) instead — a dedicated Twig-syntax frontend with closer parity than working around incompatibilities here.
13
13
 
14
+ > **Coming from Python Jinja2?** Install [@rhinostone/swig-jinja2](https://www.npmjs.com/package/@rhinostone/swig-jinja2) — a dedicated Jinja2-syntax frontend (near-subset) with closer parity than porting to native Swig syntax here.
15
+
14
16
  Workspace packages
15
17
  ------------------
16
18
 
@@ -18,9 +20,10 @@ Workspace packages
18
20
  | --- | --- | --- |
19
21
  | [`@rhinostone/swig`](https://www.npmjs.com/package/@rhinostone/swig) | Native Swig syntax (Jinja2/Django-inspired). Drop-in for `@rhinostone/swig@1.x` consumers. | Upgrading from `@rhinostone/swig@1.x`, or starting fresh with Swig syntax. |
20
22
  | [`@rhinostone/swig-twig`](https://www.npmjs.com/package/@rhinostone/swig-twig) | Twig-syntax frontend with closer Twig parity. | Migrating from PHP Twig, or writing new templates in Twig syntax. |
23
+ | [`@rhinostone/swig-jinja2`](https://www.npmjs.com/package/@rhinostone/swig-jinja2) | Python Jinja2-syntax frontend (near-subset). | Migrating from Python Jinja2, or writing new templates in Jinja2 syntax. |
21
24
  | [`@rhinostone/swig-core`](https://www.npmjs.com/package/@rhinostone/swig-core) | Shared IR, backend, and runtime primitives. | Building a custom flavor frontend. Otherwise pulled in transitively. |
22
25
 
23
- Each frontend pins the matching `@rhinostone/swig-core` version exactly during the alpha cyclethe IR is not stable across alpha minors. From `2.0.0` stable onward, frontends and the core release in lockstep.
26
+ Each frontend pins the matching `@rhinostone/swig-core` version exactly (no caret, no tilde) — frontends and the core release in lockstep on every cut.
24
27
 
25
28
  Features
26
29
  --------
@@ -29,7 +32,7 @@ Features
29
32
  * [Express](http://expressjs.com/) compatible.
30
33
  * Object-Oriented template inheritance.
31
34
  * Apply filters and transformations to output in your templates.
32
- * **Hardened against prototype-pollution** — `__proto__` / `constructor` / `prototype` blocked at parser, tag-side, and IR-emission layers. CVE-2023-25345 fully patched. 9 regression cases under [`tests/regressions.test.js`](./tests/regressions.test.js).
35
+ * **Hardened against prototype-pollution** — `__proto__` / `constructor` / `prototype` blocked at parser, tag-side, and IR-emission layers. CVE-2023-25345 fully patched. 11 CVE regression cases under [`tests/regressions.test.js`](./tests/regressions.test.js).
33
36
  * Automatically escapes all variable output (HTML by default; configurable per-call).
34
37
  * Lots of iteration and conditionals supported.
35
38
  * Robust without the bloat.
@@ -61,6 +64,10 @@ For Twig syntax:
61
64
 
62
65
  npm install @rhinostone/swig-twig
63
66
 
67
+ For Python Jinja2 syntax:
68
+
69
+ npm install @rhinostone/swig-jinja2
70
+
64
71
  Documentation
65
72
  -------------
66
73
 
@@ -109,7 +116,7 @@ Migrating from `@rhinostone/swig@1.x`
109
116
 
110
117
  `@rhinostone/swig@2.x` is **drop-in for `1.x` consumers** — `swig.compileFile`, `swig.renderFile`, `swig.setFilter`, `swig.setTag`, and the rest of the public API are unchanged. The internal carve into [@rhinostone/swig-core](https://www.npmjs.com/package/@rhinostone/swig-core) is transparent (test gate during the alpha cycle: byte-identical compiled output against the `1.x` test suite).
111
118
 
112
- `2.0.0` also ships [@rhinostone/swig-twig](https://www.npmjs.com/package/@rhinostone/swig-twig), a sibling Twig-syntax frontend. Switching is opt-in — your existing `@rhinostone/swig` install keeps working.
119
+ `2.0.0` also ships [@rhinostone/swig-twig](https://www.npmjs.com/package/@rhinostone/swig-twig), a sibling Twig-syntax frontend, and `2.5.0` adds [@rhinostone/swig-jinja2](https://www.npmjs.com/package/@rhinostone/swig-jinja2) for Python Jinja2 syntax. Switching is opt-in — your existing `@rhinostone/swig` install keeps working.
113
120
 
114
121
  Migrating from Jinja2 or Django
115
122
  -------------------------------
@@ -132,7 +139,7 @@ How it works
132
139
 
133
140
  Swig reads template files and translates them into cached JavaScript functions. The pipeline is: parse → emit IR → lower IR to JS source → `new Function(...)`. At render time, the compiled function runs against a context object to produce the output string.
134
141
 
135
- In `2.x`, frontend parsers (native Swig syntax in [@rhinostone/swig](https://www.npmjs.com/package/@rhinostone/swig), Twig syntax in [@rhinostone/swig-twig](https://www.npmjs.com/package/@rhinostone/swig-twig)) emit a shared intermediate representation. The backend in [@rhinostone/swig-core](https://www.npmjs.com/package/@rhinostone/swig-core) lowers IR to JS. New flavors plug in at the frontend without touching the runtime.
142
+ In `2.x`, frontend parsers (native Swig syntax in [@rhinostone/swig](https://www.npmjs.com/package/@rhinostone/swig), Twig syntax in [@rhinostone/swig-twig](https://www.npmjs.com/package/@rhinostone/swig-twig), Python Jinja2 syntax in [@rhinostone/swig-jinja2](https://www.npmjs.com/package/@rhinostone/swig-jinja2)) emit a shared intermediate representation. The backend in [@rhinostone/swig-core](https://www.npmjs.com/package/@rhinostone/swig-core) lowers IR to JS. New flavors plug in at the frontend without touching the runtime.
136
143
 
137
144
  License
138
145
  -------
package/ROADMAP.md CHANGED
@@ -16,12 +16,19 @@ _No near-term scheduled items. See [Future (post-2.0)](#future-post-20) for upco
16
16
  | --- | --- |
17
17
  | Planned | Async parse path for dynamic targets — full support for `{% extends parent_var %}`, `{% include user_template %}`, and runtime-resolved `import` / `from` paths on the async-codegen branch. Static-target async dispatch shipped in 2.2.0; dynamic-target support is on hold pending consumer demand. |
18
18
  | Planned | Ship a Django frontend as an additional `@rhinostone/swig-*` package. On demand — when there's concrete user demand. (The Jinja2 frontend shipped in `2.5.0`.) |
19
- | Planned | Test framework migration. Replace mocha 1.x + expect.js with `node:test` + `node:assert/strict`, swap mocha-phantomjs for a modern browser-test harness, swap blanket for `c8`. (The Node engines bump is upstream-driven by gina and is being treated as done.) |
19
+ | Planned | Test framework migration. Replace mocha 1.x + expect.js with `node:test` + `node:assert/strict`, add a modern browser-test harness (the legacy phantomjs runner has been removed), swap blanket for `c8`. (The Node engines bump is upstream-driven by gina and is being treated as done.) |
20
20
 
21
21
  ---
22
22
 
23
23
  ## Completed
24
24
 
25
+ ### v2.5.1 (May 2026)
26
+
27
+ - Restored JSDoc on the top-level `@rhinostone/swig` public API methods (`setFilter`, `setTag`, `setExtension`, `precompile`, `compile`, `compileFile`, `render`, `renderFile`, `run`, `invalidateCache`). The blocks were inadvertently stripped from `lib/swig.js` when the Swig constructor body was carved into `@rhinostone/swig-core` during the `2.0.0-alpha.1` cycle; `make build-docs` and IDE hover tooling read from `lib/swig.js`, so the documented surface for all ten methods had been missing since the carve. Doc-only restoration; `renderFile`'s block also documents the `v2.2.0` async-codegen dispatch (set `loader.async === true` on the loader to opt in).
28
+ - Cleaned two stale internal-process tracker references from `lib/tags/set.js` source comments; the explanatory content is preserved and only the dead reference tokens were dropped.
29
+ - Dev-tooling modernization riding the same release: retired the unmaintained `phantomjs` browser-test toolchain (also dropped the vulnerable `form-data` from the dev tree); bumped the example/development `express` dependency from `~3` to `^4` (also dropped the vulnerable `morgan` and `minimist` from the dev tree); bumped the test-utility `lodash` dependency from `~1.3.1` to `^4` (cleared five `lodash` advisories from the dev tree); migrated the test toolchain from `mocha` 1.12.0 to the Node built-in `node:test` runner with built-in line coverage (cleared the six remaining dev-tree audit findings, taking `npm audit` to zero); migrated the ESLint dev dependency from 8.x to 9.x with the new flat-config (`.eslintrc.json` → `eslint.config.js`), clearing the six "deprecated by maintainer" Socket Low alerts on the repo scan. None of this affects the published runtime — only the dev/CI toolchain.
30
+ - All four packages (`@rhinostone/swig`, `@rhinostone/swig-core`, `@rhinostone/swig-twig`, `@rhinostone/swig-jinja2`) released in lockstep at `2.5.1`. The runtime in `@rhinostone/swig-core` / `@rhinostone/swig-twig` / `@rhinostone/swig-jinja2` is functionally identical to `2.5.0`; only `@rhinostone/swig`'s `lib/swig.js` and `lib/tags/set.js` carry source-comment changes.
31
+
25
32
  ### v2.5.0 (May 2026)
26
33
 
27
34
  - Added `@rhinostone/swig-jinja2`, a Python Jinja2-syntax frontend on the shared `@rhinostone/swig-core` engine — the third dialect in the multi-flavor family alongside native swig and `@rhinostone/swig-twig`. Ships 13 tags (`set`, `if` / `elif` / `else`, `for` with `else`, `block`, `extends`, `include`, `macro`, `import`, `from`, `raw`, `filter`, `with`, `autoescape`), 39 filters, and 16 `is` tests, plus the `**` / `//` / `~` operators, inline-if, Python slicing, and `{{- … -}}` whitespace control. Async loader support via `renderFileAsync` / `compileFileAsync`. Autoescape and the CVE-2023-25345 guards are inherited from `@rhinostone/swig-core`. Every filter and is-test was cross-checked against Python Jinja2 3.x; the behavioural differences (where the JavaScript runtime diverges from CPython) and the explicit non-goals (no sandboxed rendering, `{% call %}` / `{% do %}` / `{% trans %}`, the `map` / `select` filter family, macro kwargs) are documented in the Jinja2 templating guide.
package/dist/swig.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! Swig v2.5.0 | https://github.com/gina-io/swig | @license https://github.com/gina-io/swig/blob/master/LICENSE */
1
+ /*! Swig v2.5.1 | https://github.com/gina-io/swig | @license https://github.com/gina-io/swig/blob/master/LICENSE */
2
2
  /*! DateZ (c) 2011 Tomo Universalis | @license https://github.com/ocrybit/DateZ/blob/master/LISENCE */
3
3
  (() => {
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -4682,7 +4682,7 @@
4682
4682
  var loaders = require_loaders2();
4683
4683
  var preWalker = require_pre_walker();
4684
4684
  var engine = require_engine();
4685
- exports.version = "2.5.0";
4685
+ exports.version = "2.5.1";
4686
4686
  var defaultOptions = {
4687
4687
  autoescape: true,
4688
4688
  varControls: ["{{", "}}"],
package/dist/swig.min.js CHANGED
@@ -1,6 +1,6 @@
1
- /*! Swig v2.5.0 | https://github.com/gina-io/swig | @license https://github.com/gina-io/swig/blob/master/LICENSE */
1
+ /*! Swig v2.5.1 | https://github.com/gina-io/swig | @license https://github.com/gina-io/swig/blob/master/LICENSE */
2
2
  /*! DateZ (c) 2011 Tomo Universalis | @license https://github.com/ocrybit/DateZ/blob/master/LISENCE */
3
- (()=>{var e=Object.getOwnPropertyNames,t=(t,r)=>function(){return r||(0,t[e(t)[0]])((r={exports:{}}).exports,r),r.exports},r=t({"packages/swig-core/lib/utils.js"(e){var t;e.strip=function(e){return e.replace(/^\s+|\s+$/g,"")},e.startsWith=function(e,t){return 0===e.indexOf(t)},e.endsWith=function(e,t){return-1!==e.indexOf(t,e.length-t.length)},e.each=function(e,r){var n,o;if(t(e))for(n=0,o=e.length;n<o&&!1!==r(e[n],n,e);n+=1);else for(n in e)if(e.hasOwnProperty(n)&&!1===r(e[n],n,e))break;return e},e.isArray=t=Array.hasOwnProperty("isArray")?Array.isArray:function(e){return!!e&&("object"==typeof e&&-1!==Object.prototype.toString.call(e).indexOf())},e.some=function(r,n){var o,a,i=0;if(t(r))for(a=r.length;i<a&&!(o=n(r[i],i,r));i+=1);else e.each(r,function(e,t){return!(o=n(e,t,r))});return!!o},e.map=function(e,r){var n,o=0,a=[];if(t(e))for(n=e.length;o<n;o+=1)a[o]=r(e[o],o);else for(o in e)e.hasOwnProperty(o)&&(a[o]=r(e[o],o));return a},e.extend=function(){for(var e,t,r=arguments,n=r[0],o=r.length>1?Array.prototype.slice.call(r,1):[],a=0,i=o.length;a<i;a+=1)for(e in t=o[a]||{})t.hasOwnProperty(e)&&(n[e]=t[e]);return n},e.keys=function(t){return t?Object.keys?Object.keys(t):e.map(t,function(e,t){return t}):[]},e.throwError=function(e,t,r){throw t&&(e+=" on line "+t),r&&(e+=" in file "+r),new Error(e+".")},e.range=function(e,t){var r,n,o,a=[];if("number"==typeof e&&"number"==typeof t){if(e<=t)for(r=e;r<=t;r+=1)a.push(r);else for(r=e;r>=t;r-=1)a.push(r);return a}if("string"==typeof e&&"string"==typeof t&&1===e.length&&1===t.length){if((n=e.charCodeAt(0))<=(o=t.charCodeAt(0)))for(r=n;r<=o;r+=1)a.push(String.fromCharCode(r));else for(r=n;r>=o;r-=1)a.push(String.fromCharCode(r));return a}return a},e.slice=function(e,t,r,n){var o,a,i,s,c,l,p="string"==typeof e,u=[];function f(e){return e=Number(e),isNaN(e)?NaN:e<0?Math.ceil(e):Math.floor(e)}function h(e,t){return null==e?t:(e=f(e),isNaN(e)?t:(e<0?(e+=o)<a&&(e=a):e>i&&(e=i),e))}if(null==e||"number"!=typeof e.length)return p?"":[];if(o=e.length,null==n?n=1:(n=f(n),(isNaN(n)||0===n)&&(n=1)),n<0?(a=-1,i=o-1):(a=0,i=o),s=h(t,n<0?i:a),c=h(r,n<0?a:i),n>0)for(l=s;l<c;l+=n)u.push(e[l]);else for(l=s;l>c;l+=n)u.push(e[l]);return p?u.join(""):u},e.coerceOutput=function(e){return null==e?"":e}}}),n=t({"lib/utils.js"(e,t){t.exports=r()}}),o=t({"packages/swig-core/lib/ir.js"(e){function t(e,t){return void 0!==t&&(e.loc=t),e}e.template=function(e,r,n,o){var a={type:"Template",body:e};return void 0!==r&&(a.parent=r),void 0!==n&&(a.blocks=n),t(a,o)},e.text=function(e,r){return t({type:"Text",value:e},r)},e.output=function(e,r,n,o){var a={type:"Output",expr:e};return void 0!==r&&(a.filters=r),void 0!==n&&(a.safe=n),t(a,o)},e.filterCall=function(e,t){var r={name:e};return void 0!==t&&(r.args=t),r},e.ifStmt=function(e,r){return t({type:"If",branches:e},r)},e.ifBranch=function(e,t){return{test:e,body:t}},e.forStmt=function(e,r,n,o,a,i){var s={type:"For",value:e,iterable:r,body:n};return void 0!==o&&(s.key=o),void 0!==a&&(s.emptyBody=a),t(s,i)},e.block=function(e,r,n){return t({type:"Block",name:e,body:r},n)},e.include=function(e,r,n,o,a,i){var s={type:"Include",path:e};return void 0!==r&&(s.context=r),void 0!==n&&(s.isolated=n),void 0!==o&&(s.ignoreMissing=o),void 0!==a&&(s.resolveFrom=a),t(s,i)},e.importStmt=function(e,r,n){return t({type:"Import",path:e,alias:r},n)},e.macro=function(e,r,n,o){return t({type:"Macro",name:e,params:r,body:n},o)},e.macroParam=function(e,t){var r={name:e};return void 0!==t&&(r.default=t),r},e.call=function(e,r,n){return t({type:"Call",callee:e,args:r},n)},e.set=function(e,r,n,o){return t({type:"Set",target:e,op:r,value:n},o)},e.raw=function(e,r){return t({type:"Raw",value:e},r)},e.parent=function(e,r){var n={type:"Parent"};return void 0!==e&&(n.body=e),t(n,r)},e.autoescape=function(e,r,n){return t({type:"Autoescape",strategy:e,body:r},n)},e.filter=function(e,r,n,o){var a={type:"Filter",name:e,body:r};return void 0!==n&&(a.args=n),t(a,o)},e.withStmt=function(e,r,n,o){var a={type:"With",body:n};return void 0!==e&&(a.context=e),void 0!==r&&(a.isolated=r),t(a,o)},e.legacyJS=function(e,r){return t({type:"LegacyJS",js:e},r)},e.extendsDeferred=function(e,r,n,o,a){var i={type:"ExtendsDeferred",path:e};return void 0!==r&&(i.childBlocks=r),void 0!==n&&(i.childIRs=n),void 0!==o&&(i.resolveFrom=o),t(i,a)},e.includeDeferred=function(e,r,n,o,a,i){var s={type:"IncludeDeferred",path:e};return void 0!==r&&(s.context=r),void 0!==n&&(s.isolated=n),void 0!==o&&(s.ignoreMissing=o),void 0!==a&&(s.resolveFrom=a),t(s,i)},e.importDeferred=function(e,r,n,o){var a={type:"ImportDeferred",path:e,alias:r};return void 0!==n&&(a.resolveFrom=n),t(a,o)},e.fromImportDeferred=function(e,r,n,o){var a={type:"FromImportDeferred",path:e,imports:r};return void 0!==n&&(a.resolveFrom=n),t(a,o)},e.literal=function(e,r,n){return t({type:"Literal",kind:e,value:r},n)},e.varRef=function(e,r){return t({type:"VarRef",path:e},r)},e.varRefExists=function(e,r){return t({type:"VarRefExists",path:e},r)},e.access=function(e,r,n){return t({type:"Access",object:e,key:r},n)},e.binaryOp=function(e,r,n,o){return t({type:"BinaryOp",op:e,left:r,right:n},o)},e.unaryOp=function(e,r,n){return t({type:"UnaryOp",op:e,operand:r},n)},e.conditional=function(e,r,n,o){var a={type:"Conditional",test:e,then:r};return a.else=n,t(a,o)},e.arrayLiteral=function(e,r){return t({type:"ArrayLiteral",elements:e},r)},e.objectLiteral=function(e,r){return t({type:"ObjectLiteral",properties:e},r)},e.objectProperty=function(e,t){return{key:e,value:t}},e.fnCall=function(e,r,n){return t({type:"FnCall",callee:e,args:r},n)},e.filterCallExpr=function(e,r,n,o){var a={type:"FilterCall",name:e,input:r};return void 0!==n&&(a.args=n),t(a,o)}}}),a=t({"lib/tags/autoescape.js"(e){var t=n(),r=o(),a=["html","js"];e.compile=function(e,t,n,o,a,i){var s=e(n,o,a,i);return r.autoescape(function(e){if("true"===e)return!0;if("false"===e)return!1;if("string"==typeof e&&e.length>=2){var t=e.charAt(0),r=e.charAt(e.length-1);if('"'===t&&'"'===r||"'"===t&&"'"===r)return e.slice(1,-1)}return e}(t[0]),[r.legacyJS(s)])},e.parse=function(e,r,n,o,i,s){var c;return n.on("*",function(e){if(!c&&(e.type===o.BOOL||e.type===o.STRING&&-1===a.indexOf(e.match)))return this.out.push(e.match),void(c=!0);t.throwError('Unexpected token "'+e.match+'" in autoescape tag',r,s.filename)}),!0},e.ends=!0}}),i=t({"lib/tags/block.js"(e){var t=o();e.compile=function(e,r,n,o,a){var i=r.join("");return t.block(i,[t.legacyJS(e(n,o,a,i))])},e.parse=function(e,t,r){return r.on("*",function(e){this.out.push(e.match)}),!0},e.ends=!0,e.block=!0}}),s=t({"lib/tags/else.js"(e){e.compile=function(){return"} else {\n"},e.parse=function(e,t,r,n,o){return r.on("*",function(e){throw new Error('"else" tag does not accept any tokens. Found "'+e.match+'" on line '+t+".")}),o.length&&"if"===o[o.length-1].name}}}),c=t({"packages/swig-core/lib/tokentypes.js"(e,t){t.exports={WHITESPACE:0,STRING:1,FILTER:2,FILTEREMPTY:3,FUNCTION:4,FUNCTIONEMPTY:5,PARENOPEN:6,PARENCLOSE:7,COMMA:8,VAR:9,NUMBER:10,OPERATOR:11,BRACKETOPEN:12,BRACKETCLOSE:13,DOTKEY:14,ARRAYOPEN:15,CURLYOPEN:17,CURLYCLOSE:18,COLON:19,COMPARATOR:20,LOGIC:21,NOT:22,BOOL:23,ASSIGNMENT:24,METHODOPEN:25,QMARK:27,UNKNOWN:100}}}),l=t({"lib/tags/if.js"(e){var t=o(),r=c();e.compile=function(e,r,n,o,a,i,s){var c,l,p=[],u=s&&s.irExpr?s.irExpr:t.legacyJS(r.join(" ")),f=[];for(c=0;c<n.length;c++)!(l=n[c])||"elseif"!==l.name&&"else"!==l.name?f.push(l):(p.push(t.ifBranch(u,[t.legacyJS(e(f,o,a,i))])),u="else"===l.name?null:l.irExpr?l.irExpr:t.legacyJS(l.args.join(" ")),f=[]);return p.push(t.ifBranch(u,[t.legacyJS(e(f,o,a,i))])),t.ifStmt(p)},e.lowerExpr=function(e,t){var n;for(n=0;n<t.length;n++)if(t[n].type===r.FILTER||t[n].type===r.FILTEREMPTY)return;return e.parseExpr(t)},e.parse=function(e,t,r,n){if(void 0===e)throw new Error("No conditional statement provided on line "+t+".");return r.on(n.COMPARATOR,function(e){if(this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");if(this.prevToken.type===n.NOT)throw new Error('Attempted logic "not '+e.match+'" on line '+t+". Use !(foo "+e.match+") instead.");this.out.push(e.match),this.filterApplyIdx.push(this.out.length)}),r.on(n.NOT,function(e){if(this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");this.out.push(e.match)}),r.on(n.BOOL,function(e){this.out.push(e.match)}),r.on(n.LOGIC,function(e){if(!this.out.length||this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");this.out.push(e.match),this.filterApplyIdx.pop()}),!0},e.ends=!0}}),p=t({"lib/tags/elseif.js"(e){var t=l().parse,r=c();e.compile=function(e,t){return"} else if ("+t.join(" ")+") {\n"},e.lowerExpr=function(e,t){var n;for(n=0;n<t.length;n++)if(t[n].type===r.FILTER||t[n].type===r.FILTEREMPTY)return;return e.parseExpr(t)},e.parse=function(e,r,n,o,a){return t(e,r,n,o,a)&&a.length&&"if"===a[a.length-1].name}}}),u=t({"lib/tags/extends.js"(e){e.compile=function(){},e.parse=function(){return!0},e.ends=!1}}),f=t({"packages/swig-core/lib/dateformatter.js"(e){var t=r(),n={full:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},o={full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],alt:{"-1":"Yesterday",0:"Today",1:"Tomorrow"}};e.tzOffset=0,e.DateZ=function(){var r=["getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","toISOString","toGMTString","toUTCString","valueOf","getTime"],n=["getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getYear","toDateString","toLocaleDateString","toLocaleTimeString"],o=this;o.date=o.dateZ=arguments.length>1?new Date(Date.UTC.apply(Date,arguments)+6e4*(new Date).getTimezoneOffset()):1===arguments.length?new Date(new Date(arguments[0])):new Date,o.timezoneOffset=o.dateZ.getTimezoneOffset(),t.each(n,function(e){o[e]=function(){return o.dateZ[e]()}}),t.each(r,function(e){o[e]=function(){return o.date[e]()}}),this.setTimezoneOffset(e.tzOffset)},e.DateZ.prototype={getTimezoneOffset:function(){return this.timezoneOffset},setTimezoneOffset:function(e){return this.timezoneOffset=e,this.dateZ=new Date(this.date.getTime()+6e4*this.date.getTimezoneOffset()-6e4*this.timezoneOffset),this}},e.d=function(e){return(e.getDate()<10?"0":"")+e.getDate()},e.D=function(e){return o.abbr[e.getDay()]},e.j=function(e){return e.getDate()},e.l=function(e){return o.full[e.getDay()]},e.N=function(e){var t=e.getDay();return t>=1?t:7},e.S=function(e){var t=e.getDate();return t%10==1&&11!==t?"st":t%10==2&&12!==t?"nd":t%10==3&&13!==t?"rd":"th"},e.w=function(e){return e.getDay()},e.z=function(t,r,n){var o=t.getFullYear(),a=new e.DateZ(o,t.getMonth(),t.getDate(),12,0,0),i=new e.DateZ(o,0,1,12,0,0);return a.setTimezoneOffset(r,n),i.setTimezoneOffset(r,n),Math.round((a-i)/864e5)},e.W=function(e){var t,r=new Date(e.valueOf()),n=(e.getDay()+6)%7;return r.setDate(r.getDate()-n+3),t=r.valueOf(),r.setMonth(0,1),4!==r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),1+Math.ceil((t-r)/6048e5)},e.F=function(e){return n.full[e.getMonth()]},e.m=function(e){return(e.getMonth()<9?"0":"")+(e.getMonth()+1)},e.M=function(e){return n.abbr[e.getMonth()]},e.n=function(e){return e.getMonth()+1},e.t=function(e){return 32-new Date(e.getFullYear(),e.getMonth(),32).getDate()},e.L=function(e){return 29===new Date(e.getFullYear(),1,29).getDate()},e.o=function(e){var t=new Date(e.valueOf());return t.setDate(t.getDate()-(e.getDay()+6)%7+3),t.getFullYear()},e.Y=function(e){return e.getFullYear()},e.y=function(e){return e.getFullYear().toString().substr(2)},e.a=function(e){return e.getHours()<12?"am":"pm"},e.A=function(e){return e.getHours()<12?"AM":"PM"},e.B=function(e){var t,r=e.getUTCHours();return r=23===r?0:r+1,t=Math.abs((60*(60*r+e.getUTCMinutes())+e.getUTCSeconds())/86.4).toFixed(0),"000".concat(t).slice(t.length)},e.g=function(e){var t=e.getHours();return 0===t?12:t>12?t-12:t},e.G=function(e){return e.getHours()},e.h=function(e){var t=e.getHours();return(t<10||12<t&&22>t?"0":"")+(t<12?t:t-12)},e.H=function(e){var t=e.getHours();return(t<10?"0":"")+t},e.i=function(e){var t=e.getMinutes();return(t<10?"0":"")+t},e.s=function(e){var t=e.getSeconds();return(t<10?"0":"")+t},e.O=function(e){var t=e.getTimezoneOffset();return(t<0?"-":"+")+(t/60<10?"0":"")+Math.abs(t/60)+"00"},e.Z=function(e){return 60*e.getTimezoneOffset()},e.c=function(e){return e.toISOString()},e.r=function(e){return e.toUTCString()},e.U=function(e){return e.getTime()/1e3}}}),h=t({"lib/dateformatter.js"(e,t){t.exports=f()}}),d=t({"packages/swig-core/lib/filters.js"(e){var t=r();e.iterateFilter=function(e){var r=this,n={};return t.isArray(e)?t.map(e,function(e){return r.apply(null,arguments)}):"object"==typeof e?(t.each(e,function(e,t){n[t]=r.apply(null,arguments)}),n):void 0}}}),y=t({"lib/filters.js"(e){var t=n(),r=h(),o=d().iterateFilter;function a(e){return"<"===e?"&lt;":">"===e?"&gt;":'"'===e?"&quot;":"&#39;"}e.addslashes=function(t){var r=o.apply(e.addslashes,arguments);return void 0!==r?r:t.replace(/\\/g,"\\\\").replace(/\'/g,"\\'").replace(/\"/g,'\\"')},e.capitalize=function(t){var r=o.apply(e.capitalize,arguments);return void 0!==r?r:t.toString().charAt(0).toUpperCase()+t.toString().substr(1).toLowerCase()},e.date=function(e,t,n,o){var a,i=t.length,s=new r.DateZ(e),c=0,l="";for(n&&s.setTimezoneOffset(n,o);c<i;c+=1)"\\"===(a=t.charAt(c))?l+=(c+=1)<i?t.charAt(c):a:r.hasOwnProperty(a)?l+=r[a](s,n,o):l+=a;return l},e.default=function(e,t){return void 0===e||!e&&"number"!=typeof e?t:e},e.escape=function(t,r){var n,i,s,c,l;if(null==t)return t;if("string"!==(n=typeof t))return"object"===n&&void 0!==(s=o.apply(e.escape,arguments))?s:t;if("js"===r){for(i=t.replace(/\\/g,"\\u005C"),s="",c=0;c<i.length;c+=1)s+=(l=i.charCodeAt(c))<32?"\\u00"+(l=(l=l.toString(16).toUpperCase()).length<2?"0"+l:l):i[c];return s.replace(/&/g,"\\u0026").replace(/</g,"\\u003C").replace(/>/g,"\\u003E").replace(/\'/g,"\\u0027").replace(/"/g,"\\u0022").replace(/\=/g,"\\u003D").replace(/-/g,"\\u002D").replace(/;/g,"\\u003B")}return t.replace(/&(?!amp;|lt;|gt;|quot;|#39;)/g,"&amp;").replace(/[<>"']/g,a)},e.e=e.escape,e.first=function(e){return"object"!=typeof e||t.isArray(e)?"string"==typeof e?e.substr(0,1):e[0]:e[t.keys(e)[0]]},e.groupBy=function(e,r){if(!t.isArray(e))return e;var n={};return t.each(e,function(e){if(e.hasOwnProperty(r)){var o=e[r],a=t.extend({},e);delete a[r],n[o]||(n[o]=[]),n[o].push(a)}}),n},e.join=function(e,r){if(t.isArray(e))return e.join(r);if("object"==typeof e){var n=[];return t.each(e,function(e){n.push(e)}),n.join(r)}return e},e.json=function(e,t){return JSON.stringify(e,null,t||0)},e.json_encode=e.json,e.last=function(e){if("object"==typeof e&&!t.isArray(e)){var r=t.keys(e);return e[r[r.length-1]]}return"string"==typeof e?e.charAt(e.length-1):e[e.length-1]},e.length=function(e){return"object"!=typeof e||t.isArray(e)?e.hasOwnProperty("length")?e.length:"":t.keys(e).length},e.lower=function(t){var r=o.apply(e.lower,arguments);return void 0!==r?r:t.toString().toLowerCase()},e.raw=function(t){return e.safe(t)},e.raw.safe=!0,e.replace=function(e,t,r,n){var o=new RegExp(t,n);return e.replace(o,r)},e.reverse=function(t){return e.sort(t,!0)},e.safe=function(e){return e},e.safe.safe=!0,e.sort=function(e,r){var n;if(t.isArray(e))n=t.extend([],e).sort();else switch(typeof e){case"object":n=t.keys(e).sort();break;case"string":return n=e.split(""),r?n.reverse().join(""):n.sort().join("")}return n&&r?n.reverse():n||e},e.striptags=function(t){var r=o.apply(e.striptags,arguments);return void 0!==r?r:t.toString().replace(/(<([^>]+)>)/gi,"")},e.title=function(t){var r=o.apply(e.title,arguments);return void 0!==r?r:t.toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},e.uniq=function(e){var r;return e&&t.isArray(e)?(r=[],t.each(e,function(e){-1===r.indexOf(e)&&r.push(e)}),r):""},e.upper=function(t){var r=o.apply(e.upper,arguments);return void 0!==r?r:t.toString().toUpperCase()},e.url_encode=function(t){var r=o.apply(e.url_encode,arguments);return void 0!==r?r:encodeURIComponent(t)},e.url_decode=function(t){var r=o.apply(e.url_decode,arguments);return void 0!==r?r:decodeURIComponent(t)}}}),g=t({"lib/tags/filter.js"(e){var t=y(),r=o(),n=c();e.compile=function(e,t,n,o,a,i,s){var c=t.shift().replace(/\($/,""),l=e(n,o,a,i);")"===t[t.length-1]&&t.pop();var p=s&&s.irExpr?s.irExpr:t.length?t:void 0;return r.filter(c,[r.legacyJS(l)],p)},e.lowerExpr=function(e,t){for(var r=0;r<t.length&&t[r].type===n.WHITESPACE;)r+=1;if(!(r>=t.length)){var o=t[r];if(o.type!==n.VAR){if(o.type===n.FUNCTIONEMPTY)return[];if(o.type===n.FUNCTION){var a,i=1,s=r+1,c=[];for(a=r+1;a<t.length;a+=1){var l=t[a];if(l.type===n.FILTER||l.type===n.FILTEREMPTY)return;if(l.type!==n.PARENOPEN&&l.type!==n.FUNCTION&&l.type!==n.BRACKETOPEN&&l.type!==n.CURLYOPEN){if(l.type!==n.PARENCLOSE&&l.type!==n.BRACKETCLOSE&&l.type!==n.CURLYCLOSE)l.type===n.COMMA&&1===i&&(c.push(t.slice(s,a)),s=a+1);else if(0===(i-=1)){a>s&&c.push(t.slice(s,a));break}}else i+=1}if(0===i){var p=[];for(a=0;a<c.length;a+=1)p.push(e.parseExpr(c[a]));return p}}}}},e.parse=function(e,r,n,o){var a;function i(e){if(!t.hasOwnProperty(e))throw new Error('Filter "'+e+'" does not exist on line '+r+".")}return n.on(o.FUNCTION,function(e){return!!a||(i(a=e.match.replace(/\($/,"")),this.out.push(e.match),void this.state.push(e.type))}),n.on(o.VAR,function(e){return!!a||(i(a=e.match),void this.out.push(a))}),!0},e.ends=!0}}),m=t({"packages/swig-core/lib/security.js"(e){e.dangerousProps=["__proto__","constructor","prototype"]}}),v=t({"lib/tags/for.js"(e){var t=o(),r=c(),n=m().dangerousProps;e.compile=function(e,r,n,o,a,i,s){var c,l=r.shift(),p="__k";r[0]&&","===r[0]&&(r.shift(),p=l,l=r.shift()),c=s&&s.irExpr?s.irExpr:r.join("");var u=e(n,o,a,i);return t.forStmt(l,c,[t.legacyJS(u)],p)},e.lowerExpr=function(e,t){var n,o=-1;for(n=0;n<t.length;n++)if(t[n].type===r.COMPARATOR&&"in"===t[n].match){o=n;break}if(-1!==o){var a=t.slice(o+1);for(n=0;n<a.length;n++)if(a[n].type===r.FILTER||a[n].type===r.FILTEREMPTY)return;return e.parseExpr(a)}},e.parse=function(e,t,r,o){var a,i;return r.on(o.NUMBER,function(e){var r=this.state.length?this.state[this.state.length-1]:null;if(!i||r!==o.ARRAYOPEN&&r!==o.CURLYOPEN&&r!==o.CURLYCLOSE&&r!==o.FUNCTION&&r!==o.FILTER)throw new Error('Unexpected number "'+e.match+'" on line '+t+".");return!0}),r.on(o.VAR,function(e){if(i&&a)return!0;if(-1!==e.match.indexOf("."))throw new Error('Loop variable "'+e.match+'" must be a bare identifier in "for" tag on line '+t+".");if(-1!==n.indexOf(e.match))throw new Error('Unsafe loop variable "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");this.out.length||(a=!0),this.out.push(e.match)}),r.on(o.COMMA,function(e){if(!a||this.prevToken.type!==o.VAR)return!0;this.out.push(e.match)}),r.on(o.COMPARATOR,function(e){if("in"!==e.match||!a)throw new Error('Unexpected token "'+e.match+'" on line '+t+".");i=!0,this.filterApplyIdx.push(this.out.length)}),!0},e.ends=!0}}),E=t({"packages/swig-core/lib/backend.js"(e){var t=r(),n=m(),a=o();function i(e){return e.replace(/\\/g,"\\\\").replace(/\n|\r/g,"\\n").replace(/"/g,'\\"')}function s(e){return{dangerousProps:(e=e||{}).dangerousProps||n.dangerousProps,throwError:e.throwError||t.throwError}}function c(e,r){switch(e&&"string"==typeof e.type||r.throwError("emitExpr: expected an IR expression node"),e.type){case"Literal":return function(e,t){switch(e.kind){case"string":return JSON.stringify(e.value);case"number":return String(e.value);case"bool":return e.value?"true":"false";case"null":return"null";case"undefined":return"undefined"}t.throwError('emitLiteral: unknown literal kind "'+e.kind+'"')}(e,r);case"VarRef":return function(e,r){t.isArray(e.path)&&0!==e.path.length||r.throwError("emitVarRef: path must be a non-empty array");return t.each(e.path,function(t){l(t,r,e)}),f(e.path)}(e,r);case"VarRefExists":return p(e,r);case"Access":return function(e,t){e.key&&"Literal"===e.key.type&&"string"===e.key.kind&&l(e.key.value,t,e);return c(e.object,t)+"["+c(e.key,t)+"]"}(e,r);case"BinaryOp":return function(e,t){var r=c(e.left,t),n=c(e.right,t);if(o=e.op,"+"===o||"-"===o||"*"===o||"/"===o||"%"===o)return r+" "+e.op+" "+n;var o;if("in"===e.op)return r+" in "+n;if("~"===e.op)return"(String("+r+") + String("+n+"))";if("??"===e.op&&e.left&&"VarRef"===e.left.type){return"("+p(a.varRefExists(e.left.path,e.left.loc),t)+" ? "+r+" : "+n+")"}return r+e.op+n}(e,r);case"UnaryOp":return function(e,t){var r=c(e.operand,t);e.operand&&"BinaryOp"===e.operand.type&&(r="("+r+")");return e.op+r}(e,r);case"Conditional":return function(e,t){return"("+c(e.test,t)+" ? "+c(e.then,t)+" : "+c(e.else,t)+")"}(e,r);case"ArrayLiteral":return function(e,r){var n=[];return t.each(e.elements,function(e){n.push(c(e,r))}),"["+n.join(", ")+"]"}(e,r);case"ObjectLiteral":return function(e,r){var n=[];return t.each(e.properties,function(e){n.push(c(e.key,r)+":"+c(e.value,r))}),"{"+n.join(", ")+"}"}(e,r);case"FnCall":return function(e,r){var n,o,a,i=[],s=e.callee;if(t.each(e.args,function(e){i.push(c(e,r))}),a=i.join(", "),s&&"VarRef"===s.type&&t.isArray(s.path))return t.each(s.path,function(e){l(e,r,s)}),1===s.path.length?"((typeof _ctx."+(n=s.path[0])+' !== "undefined") ? _ctx.'+n+" : ((typeof "+n+' !== "undefined") ? '+n+" : _fn))("+a+")":(o=s.path.slice(0,-1),"("+f(s.path)+" || _fn).call("+f(o)+(a?", "+a:"")+")");return"("+c(s,r)+")("+a+")"}(e,r);case"FilterCall":return function(e,r){var n=c(e.input,r),o="";if(e.args&&e.args.length){var a=[];t.each(e.args,function(e){a.push(c(e,r))}),o=", "+a.join(", ")}return'_filters["'+e.name+'"]('+n+o+")"}(e,r)}r.throwError('emitExpr: unknown IR expression type "'+e.type+'"')}function l(e,t,r){if(-1!==t.dangerousProps.indexOf(e)){var n=r&&r.loc&&r.loc.line||void 0,o=r&&r.loc&&r.loc.filename||void 0;t.throwError('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)',n,o)}}function p(e,r){return t.isArray(e.path)&&0!==e.path.length||r.throwError("emitVarRefExists: path must be a non-empty array"),t.each(e.path,function(t){l(t,r,e)}),"("+u(e.path,"_ctx.")+" || "+u(e.path,"")+")"}function u(e,r){var n=r+e[0],o="";return o="(typeof "+n+' !== "undefined" && '+n+" !== null",t.each(e,function(e,t){0!==t&&(o+=" && "+n+"."+e+" !== undefined && "+n+"."+e+" !== null",n+="."+e)}),o+=")"}function f(e){var t=e.join(".");return"("+u(e,"_ctx.")+" ? _ctx."+t+" : ("+u(e,"")+" ? "+t+' : ""))'}e.compile=function(r,o,c,p){var u="",f=t.isArray(r)?r:r.tokens,h=[];return t.each(f,function(r){if("string"!=typeof r)if(r&&"object"==typeof r&&"string"==typeof r.type&&"function"!=typeof r.compile)h.push(r);else{var n=r.compile(e.compile,r.args?r.args.slice(0):[],r.content?r.content.slice(0):[],o,c,p,r);null!=n&&""!==n&&("string"!=typeof n?t.isArray(n)?t.each(n,function(e){h.push(e)}):"object"!=typeof n||"string"!=typeof n.type?h.push(a.legacyJS(String(n))):h.push(n):h.push(a.legacyJS(n)))}else h.push(a.text(r))}),t.each(h,function(r){if("Text"!==r.type&&"Raw"!==r.type)if("LegacyJS"!==r.type)if("Autoescape"!==r.type){if("If"===r.type){var a="";return t.each(r.branches,function(r,n){var o,s="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(s+='_output += "'+i(e.value)+'";\n'):s+=e.js}),null!==r.test?(o=r.test&&"object"==typeof r.test&&"LegacyJS"===r.test.type?r.test.js:"object"==typeof r.test&&"string"==typeof r.test.type?e.emitExpr(r.test):r.test,a+=0===n?"if ("+o+") { \n"+s:"} else if ("+o+") {\n"+s):a+="} else {\n"+s}),void(u+=a+"\n}")}if("Set"===r.type){var p,f;if(r.target&&"object"==typeof r.target&&"VarRef"===r.target.type){var h=s();t.isArray(r.target.path)&&0!==r.target.path.length||h.throwError("Set: target VarRef must have a non-empty path"),t.each(r.target.path,function(e){l(e,h,r.target)}),p="_ctx."+r.target.path.join(".")}else p=r.target;return f=r.value&&"object"==typeof r.value&&"string"==typeof r.value.type?e.emitExpr(r.value):r.value,void(u+=p+" "+r.op+" "+f+";\n")}if("For"!==r.type)if("Macro"!==r.type)if("Parent"!==r.type)if("Block"!==r.type){var d,y,g;if("Include"===r.type)return d=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path,void 0!==r.context&&(y="object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context),g=r.isolated&&y?y:y?"_utils.extend({}, _ctx, "+y+")":"_ctx",void(u+=(r.ignoreMissing?" try {\n":"")+"_output += _swig.compileFile("+d+', {resolveFrom: "'+r.resolveFrom+'"})('+g+");\n"+(r.ignoreMissing?"} catch (e) {}\n":""));if("IncludeDeferred"!==r.type)if("ImportDeferred"!==r.type){if("FromImportDeferred"===r.type){var m,v=r.imports||[];t.each(v,function(e){if(-1!==n.dangerousProps.indexOf(e.name))throw new Error('From-import name "'+e.name+'" is reserved.');var t=e.alias||e.name;if(-1!==n.dangerousProps.indexOf(t))throw new Error('From-import binding "'+t+'" is reserved.')}),m=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var E='{resolveFrom: "'+(r.resolveFrom||"")+'"}',x="";return t.each(v,function(e){var t=e.alias||e.name;x+=" _ctx."+t+' = _imp["'+e.name+'"];\n'}),void(u+="await (async function () {\n var _imp = (await (await _swig.getTemplate("+m+", "+E+"))(_ctx)).exports;\n"+x+"})();\n")}if("ExtendsDeferred"===r.type){var O;r.childIRs&&r.childIRs.length&&(u+=e.compile(r.childIRs,o,c)),u+="var _localChildBlocks = {};\n",r.childBlocks&&t.each(r.childBlocks,function(e,r){var n="";t.each(e.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(n+='_output += "'+i(e.value)+'";\n'):n+=e.js}),u+="_localChildBlocks["+JSON.stringify(r)+'] = async function (_ctx) {\n var _output = "";\n'+n+" return _output;\n};\n"}),u+="var _mergedBlocks = _utils.extend({}, _localChildBlocks, _blocks || {});\n",O=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var w='{resolveFrom: "'+(r.resolveFrom||"")+'"}';return u+="var _parentTpl = await _swig.getTemplate("+O+", "+w+");\n",u+="var _parentResult = await _parentTpl(_ctx, _mergedBlocks);\n",void(u+="_output = _parentResult.output;\n")}if("With"===r.type){var C;void 0!==r.context&&(C=r.context&&"object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context);var b,T="";return t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(T+='_output += "'+i(e.value)+'";\n'):T+=e.js}),b=r.isolated?void 0!==C?C:"{}":void 0!==C?"_utils.extend({}, _ctx, "+C+")":"_utils.extend({}, _ctx)",void(u+="(function (_ctx) {\n"+T+"})("+b+");\n")}if("Output"===r.type){if(r.expr&&"LegacyJS"===r.expr.type)return void(u+=r.expr.js);var R=e.emitExpr(r.expr);return r.filters&&r.filters.length&&t.each(r.filters,function(r){var n="";if(r.args&&r.args.length){var o=[];t.each(r.args,function(t){o.push(e.emitExpr(t))}),n=", "+o.join(", ")}R='_filters["'+r.name+'"]('+R+n+")"}),void(r.coerce?u+="_output += _utils.coerceOutput("+R+");\n":u+="_output += "+R+";\n")}if("Filter"!==r.type);else{var A="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(A+='_output += "'+i(e.value)+'";\n'):A+=e.js});var N='(function () {\n var _output = "";\n'+A+" return _output;\n})()",k="";if(r.args&&r.args.length){var P=[];t.each(r.args,function(t){t&&"object"==typeof t&&"string"==typeof t.type?P.push(e.emitExpr(t)):P.push(t)}),k=", "+P.join(", ")}u+='_output += _filters["'+r.name+'"]('+N+k+");\n"}}else{if(-1!==n.dangerousProps.indexOf(r.alias))throw new Error('Import alias "'+r.alias+'" is reserved.');var _;_=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var L='{resolveFrom: "'+(r.resolveFrom||"")+'"}';u+="_ctx."+r.alias+" = (await (await _swig.getTemplate("+_+", "+L+"))(_ctx)).exports;\n"}else{var S,I,F;S=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path,void 0!==r.context&&(I="object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context),F=r.isolated&&I?I:I?"_utils.extend({}, _ctx, "+I+")":"_ctx";var j='{resolveFrom: "'+(r.resolveFrom||"")+'"}';u+=(r.ignoreMissing?" try {\n":"")+"_output += (await (await _swig.getTemplate("+S+", "+j+"))("+F+")).output;\n"+(r.ignoreMissing?"} catch (e) {}\n":"")}}else{if(c&&"async"===c.codegenMode){var U=JSON.stringify(r.name);return u+="if (_blocks && _blocks["+U+"]) {\n",u+=" _output += await _blocks["+U+"](_ctx);\n",u+="} else {\n",t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js}),void(u+="}\n")}t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js})}else t.each(r.body||[],function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js});else{var M="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(M+='_output += "'+i(e.value)+'";\n'):M+=e.js});var Y,D,B=r.params||[],V="";if(B.length&&"object"==typeof B[0]&&null!==B[0]&&"string"==typeof B[0].name){var J=[];t.each(B,function(t){J.push(t.name),t.default&&(V+=" if ("+t.name+" === undefined) { "+t.name+" = "+e.emitExpr(t.default)+"; }\n")}),Y=J.join(", ");var K=[];t.each(J,function(e){K.push(JSON.stringify(e))}),D=K.join(",")}else Y=B.join(""),D='"'+B.join('","')+'"';if(u+="_ctx."+r.name+" = function ("+Y+') {\n var _output = "",\n __ctx = _utils.extend({}, _ctx);\n'+V+" _utils.each(_ctx, function (v, k) {\n if (["+D+"].indexOf(k) !== -1) { delete _ctx[k]; }\n });\n"+M+"\n _ctx = _utils.extend(_ctx, __ctx);\n return _output;\n};\n_ctx."+r.name+".safe = true;\n",c&&"async"===c.codegenMode){if(-1!==n.dangerousProps.indexOf(r.name))throw new Error('Macro name "'+r.name+'" is reserved.');u+="_exports."+r.name+" = _ctx."+r.name+";\n"}}else{var W,$=r.value,z=r.key,G="",H=("_ctx.__loopcache"+Math.random()).replace(/\./g,""),Z="_ctx.",Q="_ctx.loop";W=r.iterable&&"object"==typeof r.iterable&&"string"==typeof r.iterable.type?e.emitExpr(r.iterable):r.iterable,t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(G+='_output += "'+i(e.value)+'";\n'):G+=e.js});var q=" if (!__l) { return; }\n";if(r.emptyBody){var X="";t.each(r.emptyBody,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(X+='_output += "'+i(e.value)+'";\n'):X+=e.js}),q=" if (!__l || !__len) {\n"+X+" return;\n }\n"}u+="(function () {\n var __l = "+W+', __len = (_utils.isArray(__l) || typeof __l === "string") ? __l.length : _utils.keys(__l).length;\n'+q+" var "+H+" = { loop: "+Q+", "+$+": "+Z+$+", "+z+": "+Z+z+" };\n "+Q+" = { first: false, index: 1, index0: 0, revindex: __len, revindex0: __len - 1, length: __len, last: false };\n _utils.each(__l, function ("+$+", "+z+") {\n "+Z+$+" = "+$+";\n "+Z+z+" = "+z+";\n "+Q+".key = "+z+";\n "+Q+".first = ("+Q+".index0 === 0);\n "+Q+".last = ("+Q+".revindex0 === 0);\n "+G+" "+Q+".index += 1; "+Q+".index0 += 1; "+Q+".revindex -= 1; "+Q+".revindex0 -= 1;\n });\n "+Q+" = "+H+".loop;\n "+Z+$+" = "+H+"."+$+";\n "+Z+z+" = "+H+"."+z+";\n "+H+" = undefined;\n})();\n"}}else t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js});else u+=r.js;else u+='_output += "'+i(r.value)+'";\n'}),u},e.emitExpr=function(e,t){return c(e,s(t))}}}),x=t({"lib/lexer.js"(e){var t=n(),r=c(),o=[{type:r.WHITESPACE,regex:[/^\s+/]},{type:r.STRING,regex:[/^""/,/^".*?[^\\]"/,/^''/,/^'.*?[^\\]'/]},{type:r.FILTER,regex:[/^\|\s*(\w+)\(/],idx:1},{type:r.FILTEREMPTY,regex:[/^\|\s*(\w+)/],idx:1},{type:r.FUNCTIONEMPTY,regex:[/^\s*(\w+)\(\)/],idx:1},{type:r.FUNCTION,regex:[/^\s*(\w+)\(/],idx:1},{type:r.PARENOPEN,regex:[/^\(/]},{type:r.PARENCLOSE,regex:[/^\)/]},{type:r.COMMA,regex:[/^,/]},{type:r.LOGIC,regex:[/^(&&|\|\|)\s*/,/^(and|or)\s+/],idx:1,replace:{and:"&&",or:"||"}},{type:r.COMPARATOR,regex:[/^(===|==|\!==|\!=|<=|<|>=|>|in\s|gte\s|gt\s|lte\s|lt\s)\s*/],idx:1,replace:{gte:">=",gt:">",lte:"<=",lt:"<"}},{type:r.ASSIGNMENT,regex:[/^(=|\+=|-=|\*=|\/=)/]},{type:r.NOT,regex:[/^\!\s*/,/^not\s+/],replace:{not:"!"}},{type:r.BOOL,regex:[/^(true|false)\s+/,/^(true|false)$/],idx:1},{type:r.VAR,regex:[/^[a-zA-Z_$]\w*((\.\$?\w*)+)?/,/^[a-zA-Z_$]\w*/]},{type:r.BRACKETOPEN,regex:[/^\[/]},{type:r.BRACKETCLOSE,regex:[/^\]/]},{type:r.CURLYOPEN,regex:[/^\{/]},{type:r.COLON,regex:[/^\:/]},{type:r.CURLYCLOSE,regex:[/^\}/]},{type:r.DOTKEY,regex:[/^\.(\w+)/],idx:1},{type:r.NUMBER,regex:[/^\d+(\.\d+)?/]},{type:r.QMARK,regex:[/^\?/]},{type:r.OPERATOR,regex:[/^(\+|\-|\/|\*|%)/]}];function a(e){var n;return t.some(o,function(r){return t.some(r.regex,function(t){var o,a=e.match(t);if(a)return o=a[r.idx||0].replace(/\s*$/,""),o=r.hasOwnProperty("replace")&&r.replace.hasOwnProperty(o)?r.replace[o]:o,n={match:o,type:r.type,length:a[0].length},!0})}),n||(n={match:e,type:r.UNKNOWN,length:e.length}),n}e.types=r,e.read=function(e){for(var t,r=0,n=[];r<e.length;)r+=(t=a(e.substring(r))).length,n.push(t);return n}}}),O=t({"packages/swig-core/lib/tokenparser.js"(e){var t=r(),n=c(),a=o(),i=m().dangerousProps,s=["break","case","catch","continue","debugger","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","this","throw","try","typeof","var","void","while","with"];function l(e,r,o,a,i){this.out=[],this.state=[],this.filterApplyIdx=[],this._parsers={},this.line=a,this.filename=i,this.filters=r,this.escape=o,this.parse=function(){var r=this;return r._parsers.start&&r._parsers.start.call(r),t.each(e,function(t,o){var a=e[o-1];if(r.isLast=o===e.length-1,a)for(;a.type===n.WHITESPACE;)a=e[(o-=1)-1];r.prevToken=a,r.parseToken(t)}),r._parsers.end&&r._parsers.end.call(r),r.escape&&(r.filterApplyIdx=[0],"string"==typeof r.escape?(r.parseToken({type:n.FILTER,match:"e"}),r.parseToken({type:n.COMMA,match:","}),r.parseToken({type:n.STRING,match:String(o)}),r.parseToken({type:n.PARENCLOSE,match:")"})):r.parseToken({type:n.FILTEREMPTY,match:"e"})),r.out}}l.prototype={on:function(e,t){this._parsers[e]=t},parseToken:function(e){var r,o=this,a=o._parsers[e.type]||o._parsers["*"],s=e.match,c=o.prevToken,l=c?c.type:null,p=o.state.length?o.state[o.state.length-1]:null;if(!a||"function"!=typeof a||a.call(this,e))switch(p&&c&&p===n.FILTER&&l===n.FILTER&&e.type!==n.PARENCLOSE&&e.type!==n.COMMA&&e.type!==n.OPERATOR&&e.type!==n.FILTER&&e.type!==n.FILTEREMPTY&&o.out.push(", "),p&&p===n.METHODOPEN&&(o.state.pop(),e.type!==n.PARENCLOSE&&o.out.push(", ")),e.type){case n.WHITESPACE:break;case n.STRING:if(p===n.BRACKETOPEN){var u=s.replace(/^['"]|['"]$/g,"");-1!==i.indexOf(u)&&t.throwError('Unsafe access to "'+u+'" via bracket notation is not allowed in templates (CVE-2023-25345)',o.line,o.filename)}o.filterApplyIdx.push(o.out.length),o.out.push(s.replace(/\\/g,"\\\\"));break;case n.NUMBER:case n.BOOL:o.filterApplyIdx.push(o.out.length),o.out.push(s);break;case n.FILTER:o.filters.hasOwnProperty(s)&&"function"==typeof o.filters[s]||t.throwError('Invalid filter "'+s+'"',o.line,o.filename),o.escape=!o.filters[s].safe&&o.escape,o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,'_filters["'+s+'"]('),o.state.push(e.type);break;case n.FILTEREMPTY:o.filters.hasOwnProperty(s)&&"function"==typeof o.filters[s]||t.throwError('Invalid filter "'+s+'"',o.line,o.filename),o.escape=!o.filters[s].safe&&o.escape,o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,'_filters["'+s+'"]('),o.out.push(")");break;case n.FUNCTION:case n.FUNCTIONEMPTY:o.out.push("((typeof _ctx."+s+' !== "undefined") ? _ctx.'+s+" : ((typeof "+s+' !== "undefined") ? '+s+" : _fn))("),o.escape=!1,e.type===n.FUNCTIONEMPTY?o.out[o.out.length-1]=o.out[o.out.length-1]+")":o.state.push(e.type),o.filterApplyIdx.push(o.out.length-1);break;case n.PARENOPEN:o.state.push(e.type),o.filterApplyIdx.length?(o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,"("),c&&l===n.VAR?(r=c.match.split(".").slice(0,-1),o.out.push(" || _fn).call("+o.checkMatch(r)),o.state.push(n.METHODOPEN),o.escape=!1):o.out.push(" || _fn)("),o.filterApplyIdx.push(o.out.length-3)):(o.out.push("("),o.filterApplyIdx.push(o.out.length-1));break;case n.PARENCLOSE:(r=o.state.pop())!==n.PARENOPEN&&r!==n.FUNCTION&&r!==n.FILTER&&t.throwError("Mismatched nesting state",o.line,o.filename),o.out.push(")"),o.filterApplyIdx.pop(),r!==n.FILTER&&o.filterApplyIdx.pop();break;case n.COMMA:p!==n.FUNCTION&&p!==n.FILTER&&p!==n.ARRAYOPEN&&p!==n.CURLYOPEN&&p!==n.PARENOPEN&&p!==n.COLON&&t.throwError("Unexpected comma",o.line,o.filename),p===n.COLON&&o.state.pop(),o.out.push(", "),o.filterApplyIdx.pop();break;case n.LOGIC:case n.COMPARATOR:c&&l!==n.COMMA&&l!==e.type&&l!==n.BRACKETOPEN&&l!==n.CURLYOPEN&&l!==n.PARENOPEN&&l!==n.FUNCTION||t.throwError("Unexpected logic",o.line,o.filename),o.out.push(e.match);break;case n.NOT:o.out.push(e.match);break;case n.VAR:o.parseVar(e,s,p);break;case n.BRACKETOPEN:!c||l!==n.VAR&&l!==n.BRACKETCLOSE&&l!==n.PARENCLOSE?(o.state.push(n.ARRAYOPEN),o.filterApplyIdx.push(o.out.length)):o.state.push(e.type),o.out.push("[");break;case n.BRACKETCLOSE:(r=o.state.pop())!==n.BRACKETOPEN&&r!==n.ARRAYOPEN&&t.throwError("Unexpected closing square bracket",o.line,o.filename),o.out.push("]"),o.filterApplyIdx.pop();break;case n.CURLYOPEN:o.state.push(e.type),o.out.push("{"),o.filterApplyIdx.push(o.out.length-1);break;case n.QMARK:o.out.push(" ? "),o.state.push(e.type),o.filterApplyIdx.pop();break;case n.COLON:p===n.CURLYOPEN?(o.state.push(e.type),o.out.push(":")):p===n.QMARK?(o.state.pop()," ? "===o.out[o.out.length-1]?o.out[o.out.length-1]=" || ":o.out.push(" : ")):t.throwError("Unexpected colon",o.line,o.filename),o.filterApplyIdx.pop();break;case n.CURLYCLOSE:p===n.COLON&&o.state.pop(),o.state.pop()!==n.CURLYOPEN&&t.throwError("Unexpected closing curly brace",o.line,o.filename),o.out.push("}"),o.filterApplyIdx.pop();break;case n.DOTKEY:(!c||l!==n.VAR&&l!==n.BRACKETCLOSE&&l!==n.DOTKEY&&l!==n.PARENCLOSE&&l!==n.FUNCTIONEMPTY&&l!==n.FILTEREMPTY&&l!==n.CURLYCLOSE)&&t.throwError('Unexpected key "'+s+'"',o.line,o.filename),-1!==i.indexOf(s)&&t.throwError('Unsafe access to "'+s+'" is not allowed in templates (CVE-2023-25345)',o.line,o.filename),o.out.push("."+s);break;case n.OPERATOR:o.out.push(" "+s+" "),o.filterApplyIdx.pop()}},parseVar:function(e,r,o){var a=this;if(r=r.split("."),-1!==s.indexOf(r[0])&&t.throwError('Reserved keyword "'+r[0]+'" attempted to be used as a variable',a.line,a.filename),t.each(r,function(e){-1!==i.indexOf(e)&&t.throwError('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)',a.line,a.filename)}),a.filterApplyIdx.push(a.out.length),o===n.CURLYOPEN)return r.length>1&&t.throwError("Unexpected dot",a.line,a.filename),void a.out.push(r[0]);a.out.push(a.checkMatch(r))},parseExpr:function(e,r){var o=this,c=0;function l(){return function(){for(;c<e.length&&e[c].type===n.WHITESPACE;)c+=1}(),c<e.length?e[c]:null}function p(){var e=l();return e&&(c+=1),e}function u(e){t.throwError(e,o.line,o.filename)}function f(e){-1!==i.indexOf(e)&&u('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)')}function h(e){-1!==i.indexOf(e)&&u('Unsafe access to "'+e+'" via bracket notation is not allowed in templates (CVE-2023-25345)')}function d(e){var t;if(e.type===n.LOGIC){if("||"===e.match)return{op:"||",prec:1};if("&&"===e.match)return{op:"&&",prec:2}}if(e.type===n.COMPARATOR)return"==="===(t=e.match)||"!=="===t||"=="===t||"!="===t?{op:t,prec:3}:{op:t,prec:4};if(e.type===n.OPERATOR){if("+"===(t=e.match)||"-"===t)return{op:t,prec:5};if("*"===t||"/"===t||"%"===t)return{op:t,prec:6}}return null}function y(e){return e.replace(/^['"]|['"]$/g,"")}function g(e){var t=[],r=l();if(r&&r.type===e)return p(),t;for(;;){t.push(x(0));var o=p();if(o||u("Unexpected end of expression"),o.type===e)break;o.type!==n.COMMA&&u("Expected comma or closing delimiter")}return t}function m(e){for(;;){var t=l();if(!t)break;if(t.type===n.DOTKEY)p(),f(t.match),e="VarRef"===e.type?a.varRef(e.path.concat([t.match])):a.access(e,a.literal("string",t.match));else if(t.type===n.BRACKETOPEN){p();var r=x(0);"Literal"===r.type&&"string"===r.kind&&h(r.value);var i=p();i&&i.type===n.BRACKETCLOSE||u("Unexpected closing square bracket"),e=a.access(e,r)}else if(t.type===n.PARENOPEN)p(),e=a.fnCall(e,g(n.PARENCLOSE));else{if(t.type!==n.FILTER&&t.type!==n.FILTEREMPTY)break;p();var s,c=t.match;o.filters.hasOwnProperty(c)&&"function"==typeof o.filters[c]||u('Invalid filter "'+c+'"'),t.type===n.FILTER&&(s=g(n.PARENCLOSE)),e=a.filterCallExpr(c,e,s)}}return e}function v(){var e,r=p();switch(r||u("Unexpected end of expression"),r.type){case n.STRING:return a.literal("string",y(r.match));case n.NUMBER:return a.literal("number",parseFloat(r.match));case n.BOOL:return a.literal("bool","true"===r.match);case n.NOT:return a.unaryOp("!",E());case n.OPERATOR:if("+"===(e=r.match)||"-"===e)return a.unaryOp(e,E());u('Unexpected operator "'+e+'"');break;case n.PARENOPEN:var o=x(0),i=p();return i&&i.type===n.PARENCLOSE||u("Mismatched nesting state"),m(o);case n.BRACKETOPEN:return m(a.arrayLiteral(g(n.BRACKETCLOSE)));case n.CURLYOPEN:return m(function(){var e=[],t=l();if(t&&t.type===n.CURLYCLOSE)return p(),a.objectLiteral([]);for(;;){var r,o=p();o||u("Unclosed object literal"),o.type===n.STRING?r=a.literal("string",y(o.match)):o.type===n.VAR?(-1!==o.match.indexOf(".")&&u("Unexpected dot"),r=a.literal("string",o.match)):o.type===n.NUMBER?r=a.literal("number",parseFloat(o.match)):u("Unexpected object key");var i=p();i&&i.type===n.COLON||u("Unexpected colon");var s=x(0);e.push(a.objectProperty(r,s));var c=p();if(c||u("Unclosed object literal"),c.type===n.CURLYCLOSE)break;c.type!==n.COMMA&&u("Expected comma or closing curly brace")}return a.objectLiteral(e)}());case n.VAR:var c=r.match.split(".");return-1!==s.indexOf(c[0])&&u('Reserved keyword "'+c[0]+'" attempted to be used as a variable'),t.each(c,function(e){f(e)}),m(a.varRef(c));case n.FUNCTION:case n.FUNCTIONEMPTY:return e=r.match,-1!==s.indexOf(e)&&u('Reserved keyword "'+e+'" attempted to be used as a variable'),f(e),r.type===n.FUNCTIONEMPTY?m(a.fnCall(a.varRef([e]),[])):m(a.fnCall(a.varRef([e]),g(n.PARENCLOSE)))}return u('Unexpected token "'+r.match+'"'),null}function E(){return v()}function x(e){for(var t=E();;){var r=l();if(!r)break;if(r.type===n.FILTER||r.type===n.FILTEREMPTY)break;var o=d(r);if(!o||o.prec<e)break;p();var i=x(o.prec+1);t=a.binaryOp(o.op,t,i)}if(0===e){var s=l();if(s&&s.type===n.QMARK){p();var c,f=l();if(f&&f.type===n.COLON)p(),c=x(0),t=a.conditional(t,t,c);else{var h=x(0),y=p();y&&y.type===n.COLON||u("Expected colon in ternary expression"),c=x(0),t=a.conditional(t,h,c)}}}return t}var O=x(0);return r&&(r.pos=c),O},parseOutput:function(e){var r=this;function o(){var e=r.parse().join("");return a.output(a.legacyJS("_output += "+e+";\n"))}var i,s,c=!1;for(i=0;i<e.length;i+=1)if(e[i].type!==n.WHITESPACE){c=!0;break}if(!c)return o();if("string"==typeof r.escape)return o();var l=0,p=!1,u=!1,f=!1,h=-1;for(i=0;i<e.length;i+=1)s=e[i],0===l&&(s.type!==n.OPERATOR&&s.type!==n.LOGIC&&s.type!==n.COMPARATOR&&s.type!==n.NOT||(p=!0),s.type!==n.FILTER&&s.type!==n.FILTEREMPTY||(u=!0,h<0&&(h=i)),s.type===n.QMARK&&(f=!0)),s.type===n.PARENOPEN||s.type===n.FUNCTION||s.type===n.BRACKETOPEN||s.type===n.CURLYOPEN||s.type===n.FILTER?l+=1:s.type!==n.PARENCLOSE&&s.type!==n.BRACKETCLOSE&&s.type!==n.CURLYCLOSE||(l-=1);if(0===h)return o();try{var d=r.escape;for(i=0;i<e.length;i+=1)if((s=e[i]).type!==n.FUNCTION&&s.type!==n.FUNCTIONEMPTY||(d=!1),s.type!==n.FILTER&&s.type!==n.FILTEREMPTY||r.filters.hasOwnProperty(s.match)&&"function"==typeof r.filters[s.match]&&r.filters[s.match].safe&&(d=!1),s.type===n.PARENOPEN){for(var y=i-1;y>=0&&e[y].type===n.WHITESPACE;)y-=1;y>=0&&e[y].type===n.VAR&&(d=!1)}if(f||p&&u){var g=r.parseExpr(e),m=d?[a.filterCall("e")]:[];return a.output(g,m.length>0?m:void 0)}var v=h>=0?h:e.length,E=e.slice(0,v),x={pos:0},O=r.parseExpr(E,x),w=!1;for(i=x.pos;i<E.length;i+=1)if(E[i].type!==n.WHITESPACE){w=!0;break}if(w)return o();var C=[];if(h>=0)for(var b=h;b<e.length;){var T=e[b];if(T.type!==n.WHITESPACE)if(T.type!==n.FILTEREMPTY)if(T.type!==n.FILTER)t.throwError('Unexpected token "'+T.match+'"',r.line,r.filename);else{r.filters.hasOwnProperty(T.match)&&"function"==typeof r.filters[T.match]||t.throwError('Invalid filter "'+T.match+'"',r.line,r.filename),r.filters[T.match].safe&&(d=!1);for(var R=1,A=b+1,N=b+1;N<e.length&&R>0;){var k=e[N];if(k.type===n.PARENOPEN||k.type===n.FUNCTION||k.type===n.BRACKETOPEN||k.type===n.CURLYOPEN||k.type===n.FILTER)R+=1;else if((k.type===n.PARENCLOSE||k.type===n.BRACKETCLOSE||k.type===n.CURLYCLOSE)&&0===(R-=1))break;N+=1}0!==R&&t.throwError('Unable to parse filter "'+T.match+'"',r.line,r.filename);var P,_=[],L=A,S=1;for(P=A;P<N;P+=1){var I=e[P];I.type===n.PARENOPEN||I.type===n.FUNCTION||I.type===n.BRACKETOPEN||I.type===n.CURLYOPEN||I.type===n.FILTER?S+=1:I.type===n.PARENCLOSE||I.type===n.BRACKETCLOSE||I.type===n.CURLYCLOSE?S-=1:I.type===n.COMMA&&1===S&&(_.push(e.slice(L,P)),L=P+1)}L<N&&_.push(e.slice(L,N));var F,j=[];for(F=0;F<_.length;F+=1){var U,M=_[F],Y=!1;for(U=0;U<M.length;U+=1)if(M[U].type!==n.WHITESPACE){Y=!0;break}Y&&j.push(r.parseExpr(M))}C.push(a.filterCall(T.match,j)),b=N+1}else r.filters.hasOwnProperty(T.match)&&"function"==typeof r.filters[T.match]||t.throwError('Invalid filter "'+T.match+'"',r.line,r.filename),r.filters[T.match].safe&&(d=!1),C.push(a.filterCall(T.match)),b+=1;else b+=1}return d&&C.push(a.filterCall("e")),a.output(O,C.length>0?C:void 0)}catch(e){if(f)throw e;return o()}},checkMatch:function(e){var r=e[0],n=e.join(".");function o(n){var o=n+r,a=e,i="";return i="(typeof "+o+' !== "undefined" && '+o+" !== null",t.each(a,function(e,t){0!==t&&(i+=" && "+o+"."+e+" !== undefined && "+o+"."+e+" !== null",o+="."+e)}),i+=")"}return"("+o("_ctx.")+" ? _ctx."+n+" : ("+o("")+" ? "+n+' : ""))'}},e.TokenParser=l}}),w=t({"lib/parser.js"(e){var t=n(),r=x(),o=r.types,a=O().TokenParser;function i(e){return e.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}e.parse=function(n,s,c,l,p){s=s.replace(/\r\n/g,"\n");var u,f=c.autoescape,h=c.tagControls[0],d=c.tagControls[1],y=c.varControls[0],g=c.varControls[1],m=i(h),v=i(d),E=i(y),x=i(g),O=new RegExp("^"+m+"-?\\s*|\\s*-?"+v+"$","g"),w=new RegExp("^"+m+"-"),C=new RegExp("-"+v+"$"),b=new RegExp("^"+E+"-?\\s*|\\s*-?"+x+"$","g"),T=new RegExp("^"+E+"-"),R=new RegExp("-"+x+"$"),A=c.cmtControls[0],N=c.cmtControls[1],k="[\\s\\S]*?",P=new RegExp("("+m+k+v+"|"+E+k+x+"|"+i(A)+k+i(N)+")"),_=1,L=[],S=null,I=[],F={},j=!1;function U(e,n){var o,i,s=r.read(t.strip(e));return i=(o=new a(s,p,f,n,c.filename)).parseOutput(s),o.state.length&&t.throwError('Unable to parse "'+e+'"',n,c.filename),i}function M(e){return"string"==typeof e&&(e=e.replace(/\s*$/,"")),e}return e.parseVariable=U,t.each(s.split(P),function(e){var i,s,m,v,E;if(e){if(!j&&t.startsWith(e,y)&&t.endsWith(e,g))m=T.test(e),u=R.test(e),i=U(e.replace(b,""),_);else if(t.startsWith(e,h)&&t.endsWith(e,d))m=w.test(e),u=C.test(e),(i=function(e,i){var s,u,h,d,y,g,m;if(t.startsWith(e,"end")){if((m=L[L.length-1])&&m.name===e.split(/\s+/)[0].replace(/^end/,"")&&m.ends){switch(m.name){case"autoescape":f=c.autoescape;break;case"raw":j=!1}return void L.pop()}j||t.throwError('Unexpected end of tag "'+e.replace(/^end/,"")+'"',i,c.filename)}if(!j){switch(d=(h=e.split(/\s+(.+)?/)).shift(),l.hasOwnProperty(d)||t.throwError('Unexpected tag "'+e+'"',i,c.filename),s=r.read(t.strip(h.join(" "))),u=new a(s,p,!1,i,c.filename),(y=l[d]).parse(h[1],i,u,o,L,c,n)||t.throwError('Unexpected tag "'+d+'"',i,c.filename),u.parse(),g=u.out,d){case"autoescape":f="false"!==g[0]&&g[0];break;case"raw":j=!0}var v;return"function"==typeof y.lowerExpr&&(v=y.lowerExpr(u,s,h[1],i)),{block:!!l[d].block,compile:y.compile,args:g,content:[],ends:y.ends,name:d,irExpr:v}}}(e.replace(O,""),_))&&("extends"===i.name?S=i.args.join("").replace(/^\'|\'$/g,"").replace(/^\"|\"$/g,""):i.block&&!L.length&&(F[i.args.join("")]=i)),j&&!i&&(i=e);else if(j||!t.startsWith(e,A)&&!t.endsWith(e,N))i=u?e.replace(/^\s*/,""):e,u=!1;else if(t.startsWith(e,A)&&t.endsWith(e,N))return;m&&I.length&&("string"==typeof(v=I.pop())?v=M(v):v.content&&v.content.length&&(E=M(v.content.pop()),v.content.push(E)),I.push(v)),i&&(L.length?L[L.length-1].content.push(i):I.push(i),i.name&&i.ends&&L.push(i),s=e.match(/\n/g),_+=s?s.length:0)}}),{name:c.filename,parent:S,tokens:I,blocks:F}},e.compile=E().compile}}),C=t({"lib/tags/import.js"(e){var t=n(),r=o(),a=E(),i=m().dangerousProps;e.compile=function(e,n,o,a,i){if(i&&"async"===i.codegenMode){var s=n[n.length-1],c=n[0].path;return r.importDeferred(r.literal("string",c),s,i.filename||"")}var l=n.pop(),p=[],u=[];t.each(n,function(e){(e.isImport?u:p).push(e)});var f=t.map(p,function(e){return e.name}).join("|"),h="_ctx."+l+' = {};\n var _output = "";\n',d=t.map(p,function(e){return{ex:new RegExp("_ctx."+e.name+"(\\W)(?!"+f+")","g"),re:"_ctx."+l+"."+e.name+"$1"}}),y=[];return t.each(u,function(e){t.each(e.boundNames,function(e){y.push({ex:new RegExp("_ctx\\."+e+"(\\W)","g"),re:"_ctx."+l+"."+e+"$1"})})}),t.each(u,function(e){var r=e.compiled;t.each(y,function(e){r=r.replace(e.ex,e.re)}),h+=r}),t.each(p,function(e){var r=e.compiled;t.each(d,function(e){r=r.replace(e.ex,e.re)}),t.each(y,function(e){r=r.replace(e.ex,e.re)}),h+=r}),h},e.parse=function(e,r,n,o,s,c,l){var p,u,f=w().compile,h={resolveFrom:c.filename},d=t.extend({},c,h),y=!(!c||"async"!==c.codegenMode);return n.on(o.STRING,function(e){var n=this;if(void 0!==p)throw new Error("Unexpected string "+e.match+" on line "+r+".");if(p=e.match.replace(/^("|')|("|')$/g,""),y)n.out.push({path:p});else{var o=l.parseFile(p,h).tokens;t.each(o,function(e){var t,r="";e&&e.compile&&("import"!==e.name?"macro"===e.name&&(t=e.args[0],r+=a.compile([e.compile(f,e.args,e.content,[],d)],[],d)+"\n",n.out.push({compiled:r,name:t})):n.out.push({compiled:e.compile(f,e.args.slice(),e.content,[],d)+"\n",isImport:!0,boundNames:[e.args[e.args.length-1]]}))})}}),n.on(o.VAR,function(e){if(void 0===p||u)throw new Error('Unexpected variable "'+e.match+'" on line '+r+".");if("as"!==e.match){if(-1!==i.indexOf(e.match))throw new Error('Unsafe import alias "'+e.match+'" is not allowed (CVE-2023-25345) on line '+r+".");return u=e.match,this.out.push(u),!1}}),!0},e.block=!0}}),b=t({"lib/tags/include.js"(e){var t=o(),r=c(),n="ignore",a="missing",i="only";e.compile=function(e,r,n,o,s,c,l){var p=r.shift(),u=r.indexOf(i),f=-1!==u&&r.splice(u,1),h=(r.pop()||"").replace(/\\/g,"\\\\"),d=r[r.length-1]===a&&r.pop(),y=r.join("");return l&&l.irExpr&&(p=l.irExpr.file,y=void 0!==l.irExpr.context?l.irExpr.context:void 0),s&&"async"===s.codegenMode?t.includeDeferred(p,y||void 0,!!f,!!d,h):t.include(p,y||void 0,!!f,!!d,h)},e.lowerExpr=function(e,t){var o,a,s=0,c=-1,l=-1,p=-1;for(o=0;o<t.length;o++){if((a=t[o]).type===r.FILTER||a.type===r.FILTEREMPTY)return;a.type!==r.PARENOPEN&&a.type!==r.BRACKETOPEN&&a.type!==r.ARRAYOPEN&&a.type!==r.CURLYOPEN&&a.type!==r.FUNCTION&&a.type!==r.METHODOPEN?a.type!==r.PARENCLOSE&&a.type!==r.BRACKETCLOSE&&a.type!==r.CURLYCLOSE?0===s&&a.type===r.VAR&&(-1===c&&"with"===a.match?c=o:-1!==c&&-1===l&&a.match===i?l=o:-1===p&&a.match===n&&(p=o)):s--:s++}var u=t.length;-1!==c?u=c:-1!==p&&(u=p);var f=t.slice(0,u);if(0!==f.length){var h={file:e.parseExpr(f)};if(-1!==c){var d=t.length;-1!==l?d=l:-1!==p&&(d=p);var y=t.slice(c+1,d);y.length>0&&(h.context=e.parseExpr(y))}return h}},e.parse=function(e,t,r,o,s,c){var l,p;return r.on(o.STRING,function(e){return!!l||(l=e.match,void this.out.push(l))}),r.on(o.VAR,function(e){if(!l)return l=e.match,!0;if(p||"with"!==e.match){if(!p||e.match!==i||"with"===this.prevToken.match){if(e.match===n)return!1;if(e.match===a){if(this.prevToken.match!==n)throw new Error('Unexpected token "'+a+'" on line '+t+".");return this.out.push(e.match),!1}if(this.prevToken.match===n)throw new Error('Expected "'+a+'" on line '+t+' but found "'+e.match+'".');return!0}this.out.push(e.match)}else p=!0}),r.on("end",function(){this.out.push(c.filename||null)}),!0}}}),T=t({"lib/tags/macro.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){var s=r.shift();return t.macro(s,r,[t.legacyJS(e(n,o,a,i))])};var r=m().dangerousProps;e.parse=function(e,t,n,o){var a;return n.on(o.VAR,function(e){if(-1!==e.match.indexOf("."))throw new Error('Unexpected dot in macro argument "'+e.match+'" on line '+t+".");if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");return a=e.match,void this.out.push(a)}if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro argument "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");this.out.push({name:e.match})}),n.on(o.FUNCTION,function(e){if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");a=e.match,this.out.push(a),this.state.push(o.FUNCTION)}}),n.on(o.FUNCTIONEMPTY,function(e){if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");a=e.match,this.out.push(a)}}),n.on(o.PARENCLOSE,function(){if(!this.isLast)throw new Error("Unexpected parenthesis close on line "+t+".")}),n.on(o.COMMA,function(){}),n.on("*",function(){}),!0},e.ends=!0,e.block=!0}}),R=t({"lib/tags/parent.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){if(!o||!o.length)return"";for(var s,c,l=r[0],p=o.length,u=0;u<p;u+=1)if((s=o[u]).blocks&&s.blocks.hasOwnProperty(i)&&l!==s.name){var f=(c=s.blocks[i]).compile(e,[i],c.content,o.slice(u+1),a);return t.parent(f&&f.body?f.body.concat([t.legacyJS("\n")]):[t.legacyJS("\n")])}},e.parse=function(e,t,r,n,o,a){return r.on("*",function(e){throw new Error('Unexpected argument "'+e.match+'" on line '+t+".")}),r.on("end",function(){this.out.push(a.filename)}),!0}}}),A=t({"lib/tags/raw.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){var s,c=[];for(s=0;s<n.length;s++)"string"==typeof n[s]?c.push(t.raw(n[s])):c.push(t.legacyJS(e([n[s]],o,a,i)));return c},e.parse=function(e,t,r){return r.on("*",function(e){throw new Error('Unexpected token "'+e.match+'" in raw tag on line '+t+".")}),!0},e.ends=!0}}),N=t({"lib/tags/set.js"(e){var t=o(),r=c(),n=/^_ctx\.([a-zA-Z_$][\w$]*)((?:\.[a-zA-Z_$][\w$]*)*)$/;e.compile=function(e,r,o,a,i,s,c){var l=r[0],p="string"==typeof l&&n.exec(l);if(p){var u=[p[1]];if(p[2])for(var f=p[2].split("."),h=1;h<f.length;h++)u.push(f[h]);l=t.varRef(u)}var d=c&&c.irExpr?c.irExpr:r.slice(2).join(" ");return t.set(l,r[1],d)};var a=m().dangerousProps;e.lowerExpr=function(e,t){var n,o=-1;for(n=0;n<t.length;n++)if(t[n].type===r.ASSIGNMENT){o=n;break}if(-1!==o){var a=t.slice(o+1);for(n=0;n<a.length;n++)if(a[n].type===r.FILTER||a[n].type===r.FILTEREMPTY||a[n].type===r.ASSIGNMENT)return;return e.parseExpr(a)}},e.parse=function(e,t,r,n){var o,i="";return r.on(n.VAR,function(e){if(o)o+="_ctx."+e.match;else{if(r.out.length)return!0;for(var n=e.match.split("."),s=0;s<n.length;s++)if(-1!==a.indexOf(n[s]))throw new Error('Unsafe assignment to "'+n[s]+'" is not allowed (CVE-2023-25345) on line '+t+".");i+=e.match}}),r.on(n.BRACKETOPEN,function(e){if(o||this.out.length)return!0;o=e.match}),r.on(n.STRING,function(e){if(!o||this.out.length)return!0;var r=e.match.replace(/^['"]|['"]$/g,"");if(-1!==a.indexOf(r))throw new Error('Unsafe assignment to "'+r+'" via bracket notation is not allowed (CVE-2023-25345) on line '+t+".");o+=e.match}),r.on(n.BRACKETCLOSE,function(e){return!(o&&!this.out.length)||(i+=o+e.match,void(o=void 0))}),r.on(n.DOTKEY,function(e){if(!o&&!i)return!0;if(-1!==a.indexOf(e.match))throw new Error('Unsafe assignment to "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");i+="."+e.match}),r.on(n.ASSIGNMENT,function(e){if(this.out.length||!i)throw new Error('Unexpected assignment "'+e.match+'" on line '+t+".");this.out.push("_ctx."+i),this.out.push(e.match),this.filterApplyIdx.push(this.out.length)}),!0},e.block=!0}}),k=t({"lib/tags/spaceless.js"(e){n();e.compile=function(e,t,r,n,o,a){var i=e(r,n,o,a);return i+='_output = _output.replace(/^\\s+/, "")\n .replace(/>\\s+</g, "><")\n .replace(/\\s+$/, "");\n'},e.parse=function(e,t,r){return r.on("*",function(e){throw new Error('Unexpected token "'+e.match+'" on line '+t+".")}),!0},e.ends=!0}}),P=t({"lib/tags/index.js"(e){e.autoescape=a(),e.block=i(),e.else=s(),e.elseif=p(),e.elif=e.elseif,e.extends=u(),e.filter=g(),e.for=v(),e.if=l(),e.import=C(),e.include=b(),e.macro=T(),e.parent=R(),e.raw=A(),e.set=N(),e.spaceless=k()}}),_=t({"browser/stubs/fs.js"(e,t){t.exports={}}}),L=t({"node_modules/path-browserify/index.js"(e,t){"use strict";function r(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var r,n="",o=0,a=-1,i=0,s=0;s<=e.length;++s){if(s<e.length)r=e.charCodeAt(s);else{if(47===r)break;r=47}if(47===r){if(a===s-1||1===i);else if(a!==s-1&&2===i){if(n.length<2||2!==o||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var c=n.lastIndexOf("/");if(c!==n.length-1){-1===c?(n="",o=0):o=(n=n.slice(0,c)).length-1-n.lastIndexOf("/"),a=s,i=0;continue}}else if(2===n.length||1===n.length){n="",o=0,a=s,i=0;continue}t&&(n.length>0?n+="/..":n="..",o=2)}else n.length>0?n+="/"+e.slice(a+1,s):n=e.slice(a+1,s),o=s-a-1;a=s,i=0}else 46===r&&-1!==i?++i:i=-1}return n}var o={resolve:function(){for(var e,t="",o=!1,a=arguments.length-1;a>=-1&&!o;a--){var i;a>=0?i=arguments[a]:(void 0===e&&(e=process.cwd()),i=e),r(i),0!==i.length&&(t=i+"/"+t,o=47===i.charCodeAt(0))}return t=n(t,!o),o?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),o=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!t)).length||t||(e="."),e.length>0&&o&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t<arguments.length;++t){var n=arguments[t];r(n),n.length>0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(r(e),r(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var n=1;n<e.length&&47===e.charCodeAt(n);++n);for(var a=e.length,i=a-n,s=1;s<t.length&&47===t.charCodeAt(s);++s);for(var c=t.length-s,l=i<c?i:c,p=-1,u=0;u<=l;++u){if(u===l){if(c>l){if(47===t.charCodeAt(s+u))return t.slice(s+u+1);if(0===u)return t.slice(s+u)}else i>l&&(47===e.charCodeAt(n+u)?p=u:0===u&&(p=0));break}var f=e.charCodeAt(n+u);if(f!==t.charCodeAt(s+u))break;47===f&&(p=u)}var h="";for(u=n+p+1;u<=a;++u)u!==a&&47!==e.charCodeAt(u)||(0===h.length?h+="..":h+="/..");return h.length>0?h+t.slice(s+p):(s+=p,47===t.charCodeAt(s)&&++s,t.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,o=-1,a=!0,i=e.length-1;i>=1;--i)if(47===(t=e.charCodeAt(i))){if(!a){o=i;break}}else a=!1;return-1===o?n?"/":".":n&&1===o?"//":e.slice(0,o)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');r(e);var n,o=0,a=-1,i=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,c=-1;for(n=e.length-1;n>=0;--n){var l=e.charCodeAt(n);if(47===l){if(!i){o=n+1;break}}else-1===c&&(i=!1,c=n+1),s>=0&&(l===t.charCodeAt(s)?-1===--s&&(a=n):(s=-1,a=c))}return o===a?a=c:-1===a&&(a=e.length),e.slice(o,a)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){o=n+1;break}}else-1===a&&(i=!1,a=n+1);return-1===a?"":e.slice(o,a)},extname:function(e){r(e);for(var t=-1,n=0,o=-1,a=!0,i=0,s=e.length-1;s>=0;--s){var c=e.charCodeAt(s);if(47!==c)-1===o&&(a=!1,o=s+1),46===c?-1===t?t=s:1!==i&&(i=1):-1!==t&&(i=-1);else if(!a){n=s+1;break}}return-1===t||-1===o||0===i||1===i&&t===o-1&&t===n+1?"":e.slice(t,o)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var r=t.dir||t.root,n=t.base||(t.name||"")+(t.ext||"");return r?r===t.root?r+n:r+e+n:n}("/",e)},parse:function(e){r(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,o=e.charCodeAt(0),a=47===o;a?(t.root="/",n=1):n=0;for(var i=-1,s=0,c=-1,l=!0,p=e.length-1,u=0;p>=n;--p)if(47!==(o=e.charCodeAt(p)))-1===c&&(l=!1,c=p+1),46===o?-1===i?i=p:1!==u&&(u=1):-1!==i&&(u=-1);else if(!l){s=p+1;break}return-1===i||-1===c||0===u||1===u&&i===c-1&&i===s+1?-1!==c&&(t.base=t.name=0===s&&a?e.slice(1,c):e.slice(s,c)):(0===s&&a?(t.name=e.slice(1,i),t.base=e.slice(1,c)):(t.name=e.slice(s,i),t.base=e.slice(s,c)),t.ext=e.slice(i,c)),s>0?t.dir=e.slice(0,s-1):a&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,t.exports=o}}),S=t({"packages/swig-core/lib/loaders/filesystem.js"(e,t){var r=_(),n=L();t.exports=function(e,t){var o={};return t=t||"utf8",e=e?n.normalize(e):null,o.resolve=function(t,r){return r=e||(r?n.dirname(r):process.cwd()),n.resolve(r,t)},o.load=function(e,n){if(!r||n&&!r.readFile||!r.readFileSync)throw new Error("Unable to find file "+e+" because there is no filesystem to read from.");if(e=o.resolve(e),!n)return r.readFileSync(e,t);r.readFile(e,t,n)},o}}}),I=t({"packages/swig-core/lib/loaders/memory.js"(e,t){var n=L(),o=r();t.exports=function(e,t){var r={};return t=t?n.normalize(t):null,r.resolve=function(e,r){return r=t||(r?n.dirname(r):"/"),n.resolve(r,e)},r.load=function(t,r){var n,a;if(a=[t,t.replace(/^(\/|\\)/,"")],(n=e[a[0]]||e[a[1]])||o.throwError('Unable to find template "'+t+'".'),!r)return n;r(null,n)},r}}}),F=t({"packages/swig-core/lib/loaders/index.js"(e){e.fs=S(),e.memory=I()}}),j=t({"lib/loaders/index.js"(e,t){t.exports=F()}}),U=t({"lib/async/pre-walker.js"(e){var t=n();function r(e){return e.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}function o(e,t,r){var n=e.substr(t.length,e.length-t.length-r.length);return"-"===n.charAt(0)&&(n=n.substr(1)),"-"===n.charAt(n.length-1)&&(n=n.substr(0,n.length-1)),n.replace(/^\s+|\s+$/g,"")}e.scan=function(e,n){e=e.replace(/\r\n/g,"\n");var a,i,s,c,l,p=function(e){var t="[\\s\\S]*?",n=r(e.varControls[0]),o=r(e.varControls[1]),a=r(e.tagControls[0]),i=r(e.tagControls[1]),s=r(e.cmtControls[0]),c=r(e.cmtControls[1]);return new RegExp("("+a+t+i+"|"+n+t+o+"|"+s+t+c+")")}(n),u=n.tagControls[0],f=n.tagControls[1],h=n.rawTag,d="end"+h,y=new RegExp("^("+n.keywords.join("|")+")\\s+[\"\\']([^\"\\']+)[\"\\']"),g=e.split(p),m=[],v=!1;for(a=0;a<g.length;a+=1)"string"==typeof(i=g[a])&&i&&t.startsWith(i,u)&&t.endsWith(i,f)&&((c=(s=o(i,u,f)).split(/\s+/)[0])!==h?c!==d?v||(l=y.exec(s))&&m.push({kind:l[1],path:l[2]}):v=!1:v=!0);return m},e.walk=function(t,r,n){var o={},a={};return new Promise(function(i,s){var c=0,l=[],p=!1;function u(e){o.hasOwnProperty(e)||a[e]||(a[e]=!0,l.push(e))}function f(){for(;l.length>0&&!p;){var e=l.shift();c+=1,h(e)}0!==c||p||0!==l.length||i(o)}function h(t){r.load(t,function(a,i){if(!p){if(a)return p=!0,void s(a);if("string"!=typeof i)return p=!0,void s(new Error('Async loader returned non-string source for "'+t+'"'));var l,h,d;o[t]=i;try{l=e.scan(i,n)}catch(e){return p=!0,void s(e)}for(h=0;h<l.length;h+=1){try{d=r.resolve(l[h].path,t)}catch(e){return p=!0,void s(e)}u(d)}c-=1,f()}})}u(t),f()})},e.makeMemoryWrapper=function(e,t){return{resolve:function(t,r){return e.resolve(t,r)},load:function(e,r){var n=t[e];if("string"!=typeof n){var o=new Error('Pre-walked map missing path: "'+e+'"');if(r)return void r(o);throw o}if(!r)return n;r(null,n)}}}}}),M=t({"packages/swig-core/lib/cache.js"(e){e.shouldCache=function(e,t){return(e=e||{}).hasOwnProperty("cache")&&!e.cache||!t},e.cacheGet=function(t,r,n,o){if(!e.shouldCache(r,n))return"memory"===n?o[t]:n.get(t)},e.cacheSet=function(t,r,n,o,a){e.shouldCache(r,o)||("memory"!==o?o.set(t,n):a[t]=n)}}}),Y=t({"packages/swig-core/lib/engine.js"(e){var t=r(),n=o(),a=E(),i=M(),s=Object.getPrototypeOf(async function(){}).constructor;function c(){return""}function l(e,r){var o={},i=[];return t.each(e.blocks,function(e){var s=e.args?e.args.slice(0):[],c=e.content?e.content.slice(0):[];if("block"!==e.name){var l=e.compile(a.compile,s,c,[],r,void 0,e);null!=l&&""!==l&&("string"!=typeof l?t.isArray(l)?t.each(l,function(e){i.push(e)}):"object"==typeof l&&"string"==typeof l.type&&i.push(l):i.push(n.legacyJS(l)))}else{var p=s.join(""),u=e.compile(a.compile,s,c,[],r,p,e);u&&"object"==typeof u&&"string"==typeof u.type&&(o[p]=u)}}),n.extendsDeferred(n.literal("string",e.parent),o,i,r.filename||"")}e.remapBlocks=function e(r,n){return t.map(n,function(t){var n=t.args?t.args.join(""):"";return"block"===t.name&&r[n]&&(t=r[n]),t.content&&t.content.length&&(t.content=e(r,t.content)),t})},e.importNonBlocks=function(e,r){var n=[];t.each(e,function(e){n.push(e)}),t.each(n.reverse(),function(e){"block"!==e.name&&r.unshift(e)})},e.getParents=function(r,n,o){for(var a,i,s,c=r.parent,l=[],p=[];c;){if(!n||!n.filename)throw new Error('Cannot extend "'+c+'" because current template has no filename.');if(a=a||n.filename,a=o.resolve(c,a),c=(i=o.cacheGet(a,n)||o.parseFile(a,t.extend({},n,{filename:a}))).parent,-1!==l.indexOf(a))throw new Error('Illegal circular extends of "'+a+'".');l.push(a),p.push(i)}for(s=p.length,s=p.length-2;s>=0;s-=1)p[s].tokens=e.remapBlocks(p[s].blocks,p[s+1].tokens),e.importNonBlocks(p[s].blocks,p[s].tokens);return p},e.buildTemplateFunction=function(e,t,r){if(r&&"async"===r.codegenMode){var n=' var _ext = _swig.extensions,\n _output = "",\n _exports = {};\n'+a.compile(e,t,r)+"\n return { output: _output, exports: _exports };\n";return new s("_swig","_ctx","_filters","_utils","_fn","_blocks",n)}var o=' var _ext = _swig.extensions,\n _output = "";\n'+a.compile(e,t,r)+"\n return _output;\n";return new Function("_swig","_ctx","_filters","_utils","_fn",o)},e.install=function(r,n){var o=n.parser,a=t.extend({},n.tags),s=t.extend({},n.filters),p=n.validateOptions,u=n.onCompileError;function f(e){return e&&e.locals?t.extend({},r.options.locals,e.locals):r.options.locals}function h(e,t){return i.cacheGet(e,t,r.options.cache,r.cache)}function d(e,t,n){i.cacheSet(e,t,n,r.options.cache,r.cache)}r.invalidateCache=function(){"memory"===r.options.cache&&(r.cache={})},r.setFilter=function(e,t){if("function"!=typeof t)throw new Error('Filter "'+e+'" is not a valid function.');s[e]=t},r.setTag=function(e,t,r,n,o){if("function"!=typeof t)throw new Error('Tag "'+e+'" parse method is not a valid function.');if("function"!=typeof r)throw new Error('Tag "'+e+'" compile method is not a valid function.');a[e]={parse:t,compile:r,ends:n||!1,block:!!o}},r.setExtension=function(e,t){r.extensions[e]=t},r.parse=function(e,n){p(n);var i,c=f(n),l={};for(i in n)n.hasOwnProperty(i)&&"locals"!==i&&(l[i]=n[i]);return(n=t.extend({},r.options,l)).locals=c,o.parse(r,e,n,a,s)},r.parseFile=function(e,n){var o;return n||(n={}),e=r.options.loader.resolve(e,n.resolveFrom),o=r.options.loader.load(e),n.filename||(n=t.extend({filename:e},n)),r.parse(o,n)},r.precompile=function(t,n){var o,a,i=r.parse(t,n);n&&"async"===n.codegenMode&&i.parent?(o=[],i.tokens=[l(i,n)]):(o=function(t,n){return e.getParents(t,n,{resolve:function(e,t){return r.options.loader.resolve(e,t)},parseFile:r.parseFile,cacheGet:h})}(i,n),o.length&&(i.tokens=e.remapBlocks(i.blocks,o[0].tokens),e.importNonBlocks(i.blocks,i.tokens)));try{a=e.buildTemplateFunction(i,o,n)}catch(e){u(e,n)}return{tpl:a,tokens:i}},r.compile=function(e,n){var o,a,i,l=n?n.filename:null,p=l?h(l,n):null;if(p)return p;function u(e,n){var l;return l=e&&a?t.extend({},o,e):e&&!a?e:!e&&a?o:{},i.tpl(r,l,s,t,c,n)}return o=f(n),a=t.keys(o).length,i=r.precompile(e,n),t.extend(u,i.tokens),l&&d(l,n,u),u},r.compileFile=function(e,n,o){var a,i;return n||(n={}),e=r.options.loader.resolve(e,n.resolveFrom),n.filename||(n=t.extend({filename:e},n)),(i=h(e,n))?o?void o(null,i):i:o?void r.options.loader.load(e,function(e,t){if(e)o(e);else{var a;try{a=r.compile(t,n)}catch(e){return void o(e)}o(e,a)}}):(a=r.options.loader.load(e),r.compile(a,n))},r.getTemplate=function(e,n){var o;n=n||{};try{o=r.options.loader.resolve(e,n.resolveFrom)}catch(e){return Promise.reject(e)}var a=t.extend({},n,{filename:n.filename||o,codegenMode:"async",cache:!1});return new Promise(function(e,t){function n(n,o){if(n)t(n);else{var i;try{i=r.compile(o,a)}catch(e){return void t(e)}e(i)}}if(r.options.loader.load.length>=2)try{r.options.loader.load(o,n)}catch(e){n(e)}else{var i;try{i=r.options.loader.load(o)}catch(e){return void n(e)}n(null,i)}})},r.render=function(e,t){return r.compile(e,t)()},r.renderFile=function(e,t,n){return n?r.options.loader&&!0===r.options.loader.async?void r.getTemplate(e).then(function(e){return e(t)}).then(function(e){n(null,e.output)}).catch(n):void r.compileFile(e,{},function(e,r){var o;if(e)n(e);else{try{o=r(t)}catch(e){return void n(e)}n(null,o)}}):r.compileFile(e)(t)},r.run=function(e,n,o){var a=f({locals:n});return o&&d(o,{},e),e(r,a,s,t,c)}}}}),D=t({"lib/swig.js"(e){var t=n(),r=P(),o=y(),a=w(),i=h(),s=j(),c=U(),l=Y();e.version="2.5.0";var p,u={autoescape:!0,varControls:["{{","}}"],tagControls:["{%","%}"],cmtControls:["{#","#}"],locals:{},cache:"memory",loader:s.fs()};function f(e){if(e){if(t.each(["varControls","tagControls","cmtControls"],function(r){if(e.hasOwnProperty(r)){if(!t.isArray(e[r])||2!==e[r].length)throw new Error('Option "'+r+'" must be an array containing 2 different control strings.');if(e[r][0]===e[r][1])throw new Error('Option "'+r+'" open and close controls must not be the same.');t.each(e[r],function(e,t){if(e.length<2)throw new Error('Option "'+r+'" '+(t?"open ":"close ")+'control must be at least 2 characters. Saw "'+e+'" instead.')})}}),e.hasOwnProperty("cache")&&e.cache&&"memory"!==e.cache&&(!e.cache.get||!e.cache.set))throw new Error("Invalid cache option "+JSON.stringify(e.cache)+' found. Expected "memory" or { get: function (key) { ... }, set: function (key, value) { ... } }.');if(e.hasOwnProperty("loader")&&e.loader&&(!e.loader.load||!e.loader.resolve))throw new Error("Invalid loader option "+JSON.stringify(e.loader)+" found. Expected { load: function (pathname, cb) { ... }, resolve: function (to, from) { ... } }.")}}e.setDefaults=function(e){f(e),p.options=t.extend(p.options,e)},e.setDefaultTZOffset=function(e){i.tzOffset=e},e.Swig=function(e){f(e),this.options=t.extend({},u,e||{}),this.cache={},this.extensions={},l.install(this,{parser:a,tags:r,filters:o,validateOptions:f,onCompileError:function(e,r){t.throwError(e,null,r.filename)}});var n=this;function i(){return{varControls:n.options.varControls,tagControls:n.options.tagControls,cmtControls:n.options.cmtControls,rawTag:"raw",keywords:["extends","include","import"]}}this.renderFileAsync=function(e,t,r){"function"==typeof t&&(r=t,t=void 0);var o,a=n.options.loader;try{o=a.resolve(e)}catch(e){return void r(e)}c.walk(o,a,i()).then(function(e){var i,s,l=c.makeMemoryWrapper(a,e),p=n.options.loader;n.options.loader=l;try{i=n.renderFile(o,t)}catch(e){s=e}n.options.loader=p,s?r(s):r(null,i)},function(e){r(e)})},this.compileFileAsync=function(e,t,r){"function"==typeof t&&(r=t,t={});var o,a=n.options.loader;try{o=a.resolve(e)}catch(e){return void r(e)}c.walk(o,a,i()).then(function(e){var i,s,l=c.makeMemoryWrapper(a,e),p=n.options.loader;n.options.loader=l;try{i=n.compileFile(o,t)}catch(e){s=e}if(n.options.loader=p,s)r(s);else{r(null,function(e){var t=n.options.loader;n.options.loader=l;try{var r=i(e);return n.options.loader=t,r}catch(e){throw n.options.loader=t,e}})}},function(e){r(e)})}},p=new e.Swig,e.setFilter=p.setFilter,e.setTag=p.setTag,e.setExtension=p.setExtension,e.parseFile=p.parseFile,e.precompile=p.precompile,e.compile=p.compile,e.compileFile=p.compileFile,e.compileFileAsync=p.compileFileAsync,e.render=p.render,e.renderFile=p.renderFile,e.renderFileAsync=p.renderFileAsync,e.run=p.run,e.invalidateCache=p.invalidateCache,e.loaders=s}})();"function"==typeof window.define&&"object"==typeof window.define.amd?window.define("swig",[],function(){return D}):window.swig=D})();
3
+ (()=>{var e=Object.getOwnPropertyNames,t=(t,r)=>function(){return r||(0,t[e(t)[0]])((r={exports:{}}).exports,r),r.exports},r=t({"packages/swig-core/lib/utils.js"(e){var t;e.strip=function(e){return e.replace(/^\s+|\s+$/g,"")},e.startsWith=function(e,t){return 0===e.indexOf(t)},e.endsWith=function(e,t){return-1!==e.indexOf(t,e.length-t.length)},e.each=function(e,r){var n,o;if(t(e))for(n=0,o=e.length;n<o&&!1!==r(e[n],n,e);n+=1);else for(n in e)if(e.hasOwnProperty(n)&&!1===r(e[n],n,e))break;return e},e.isArray=t=Array.hasOwnProperty("isArray")?Array.isArray:function(e){return!!e&&("object"==typeof e&&-1!==Object.prototype.toString.call(e).indexOf())},e.some=function(r,n){var o,a,i=0;if(t(r))for(a=r.length;i<a&&!(o=n(r[i],i,r));i+=1);else e.each(r,function(e,t){return!(o=n(e,t,r))});return!!o},e.map=function(e,r){var n,o=0,a=[];if(t(e))for(n=e.length;o<n;o+=1)a[o]=r(e[o],o);else for(o in e)e.hasOwnProperty(o)&&(a[o]=r(e[o],o));return a},e.extend=function(){for(var e,t,r=arguments,n=r[0],o=r.length>1?Array.prototype.slice.call(r,1):[],a=0,i=o.length;a<i;a+=1)for(e in t=o[a]||{})t.hasOwnProperty(e)&&(n[e]=t[e]);return n},e.keys=function(t){return t?Object.keys?Object.keys(t):e.map(t,function(e,t){return t}):[]},e.throwError=function(e,t,r){throw t&&(e+=" on line "+t),r&&(e+=" in file "+r),new Error(e+".")},e.range=function(e,t){var r,n,o,a=[];if("number"==typeof e&&"number"==typeof t){if(e<=t)for(r=e;r<=t;r+=1)a.push(r);else for(r=e;r>=t;r-=1)a.push(r);return a}if("string"==typeof e&&"string"==typeof t&&1===e.length&&1===t.length){if((n=e.charCodeAt(0))<=(o=t.charCodeAt(0)))for(r=n;r<=o;r+=1)a.push(String.fromCharCode(r));else for(r=n;r>=o;r-=1)a.push(String.fromCharCode(r));return a}return a},e.slice=function(e,t,r,n){var o,a,i,s,c,l,p="string"==typeof e,u=[];function f(e){return e=Number(e),isNaN(e)?NaN:e<0?Math.ceil(e):Math.floor(e)}function h(e,t){return null==e?t:(e=f(e),isNaN(e)?t:(e<0?(e+=o)<a&&(e=a):e>i&&(e=i),e))}if(null==e||"number"!=typeof e.length)return p?"":[];if(o=e.length,null==n?n=1:(n=f(n),(isNaN(n)||0===n)&&(n=1)),n<0?(a=-1,i=o-1):(a=0,i=o),s=h(t,n<0?i:a),c=h(r,n<0?a:i),n>0)for(l=s;l<c;l+=n)u.push(e[l]);else for(l=s;l>c;l+=n)u.push(e[l]);return p?u.join(""):u},e.coerceOutput=function(e){return null==e?"":e}}}),n=t({"lib/utils.js"(e,t){t.exports=r()}}),o=t({"packages/swig-core/lib/ir.js"(e){function t(e,t){return void 0!==t&&(e.loc=t),e}e.template=function(e,r,n,o){var a={type:"Template",body:e};return void 0!==r&&(a.parent=r),void 0!==n&&(a.blocks=n),t(a,o)},e.text=function(e,r){return t({type:"Text",value:e},r)},e.output=function(e,r,n,o){var a={type:"Output",expr:e};return void 0!==r&&(a.filters=r),void 0!==n&&(a.safe=n),t(a,o)},e.filterCall=function(e,t){var r={name:e};return void 0!==t&&(r.args=t),r},e.ifStmt=function(e,r){return t({type:"If",branches:e},r)},e.ifBranch=function(e,t){return{test:e,body:t}},e.forStmt=function(e,r,n,o,a,i){var s={type:"For",value:e,iterable:r,body:n};return void 0!==o&&(s.key=o),void 0!==a&&(s.emptyBody=a),t(s,i)},e.block=function(e,r,n){return t({type:"Block",name:e,body:r},n)},e.include=function(e,r,n,o,a,i){var s={type:"Include",path:e};return void 0!==r&&(s.context=r),void 0!==n&&(s.isolated=n),void 0!==o&&(s.ignoreMissing=o),void 0!==a&&(s.resolveFrom=a),t(s,i)},e.importStmt=function(e,r,n){return t({type:"Import",path:e,alias:r},n)},e.macro=function(e,r,n,o){return t({type:"Macro",name:e,params:r,body:n},o)},e.macroParam=function(e,t){var r={name:e};return void 0!==t&&(r.default=t),r},e.call=function(e,r,n){return t({type:"Call",callee:e,args:r},n)},e.set=function(e,r,n,o){return t({type:"Set",target:e,op:r,value:n},o)},e.raw=function(e,r){return t({type:"Raw",value:e},r)},e.parent=function(e,r){var n={type:"Parent"};return void 0!==e&&(n.body=e),t(n,r)},e.autoescape=function(e,r,n){return t({type:"Autoescape",strategy:e,body:r},n)},e.filter=function(e,r,n,o){var a={type:"Filter",name:e,body:r};return void 0!==n&&(a.args=n),t(a,o)},e.withStmt=function(e,r,n,o){var a={type:"With",body:n};return void 0!==e&&(a.context=e),void 0!==r&&(a.isolated=r),t(a,o)},e.legacyJS=function(e,r){return t({type:"LegacyJS",js:e},r)},e.extendsDeferred=function(e,r,n,o,a){var i={type:"ExtendsDeferred",path:e};return void 0!==r&&(i.childBlocks=r),void 0!==n&&(i.childIRs=n),void 0!==o&&(i.resolveFrom=o),t(i,a)},e.includeDeferred=function(e,r,n,o,a,i){var s={type:"IncludeDeferred",path:e};return void 0!==r&&(s.context=r),void 0!==n&&(s.isolated=n),void 0!==o&&(s.ignoreMissing=o),void 0!==a&&(s.resolveFrom=a),t(s,i)},e.importDeferred=function(e,r,n,o){var a={type:"ImportDeferred",path:e,alias:r};return void 0!==n&&(a.resolveFrom=n),t(a,o)},e.fromImportDeferred=function(e,r,n,o){var a={type:"FromImportDeferred",path:e,imports:r};return void 0!==n&&(a.resolveFrom=n),t(a,o)},e.literal=function(e,r,n){return t({type:"Literal",kind:e,value:r},n)},e.varRef=function(e,r){return t({type:"VarRef",path:e},r)},e.varRefExists=function(e,r){return t({type:"VarRefExists",path:e},r)},e.access=function(e,r,n){return t({type:"Access",object:e,key:r},n)},e.binaryOp=function(e,r,n,o){return t({type:"BinaryOp",op:e,left:r,right:n},o)},e.unaryOp=function(e,r,n){return t({type:"UnaryOp",op:e,operand:r},n)},e.conditional=function(e,r,n,o){var a={type:"Conditional",test:e,then:r};return a.else=n,t(a,o)},e.arrayLiteral=function(e,r){return t({type:"ArrayLiteral",elements:e},r)},e.objectLiteral=function(e,r){return t({type:"ObjectLiteral",properties:e},r)},e.objectProperty=function(e,t){return{key:e,value:t}},e.fnCall=function(e,r,n){return t({type:"FnCall",callee:e,args:r},n)},e.filterCallExpr=function(e,r,n,o){var a={type:"FilterCall",name:e,input:r};return void 0!==n&&(a.args=n),t(a,o)}}}),a=t({"lib/tags/autoescape.js"(e){var t=n(),r=o(),a=["html","js"];e.compile=function(e,t,n,o,a,i){var s=e(n,o,a,i);return r.autoescape(function(e){if("true"===e)return!0;if("false"===e)return!1;if("string"==typeof e&&e.length>=2){var t=e.charAt(0),r=e.charAt(e.length-1);if('"'===t&&'"'===r||"'"===t&&"'"===r)return e.slice(1,-1)}return e}(t[0]),[r.legacyJS(s)])},e.parse=function(e,r,n,o,i,s){var c;return n.on("*",function(e){if(!c&&(e.type===o.BOOL||e.type===o.STRING&&-1===a.indexOf(e.match)))return this.out.push(e.match),void(c=!0);t.throwError('Unexpected token "'+e.match+'" in autoescape tag',r,s.filename)}),!0},e.ends=!0}}),i=t({"lib/tags/block.js"(e){var t=o();e.compile=function(e,r,n,o,a){var i=r.join("");return t.block(i,[t.legacyJS(e(n,o,a,i))])},e.parse=function(e,t,r){return r.on("*",function(e){this.out.push(e.match)}),!0},e.ends=!0,e.block=!0}}),s=t({"lib/tags/else.js"(e){e.compile=function(){return"} else {\n"},e.parse=function(e,t,r,n,o){return r.on("*",function(e){throw new Error('"else" tag does not accept any tokens. Found "'+e.match+'" on line '+t+".")}),o.length&&"if"===o[o.length-1].name}}}),c=t({"packages/swig-core/lib/tokentypes.js"(e,t){t.exports={WHITESPACE:0,STRING:1,FILTER:2,FILTEREMPTY:3,FUNCTION:4,FUNCTIONEMPTY:5,PARENOPEN:6,PARENCLOSE:7,COMMA:8,VAR:9,NUMBER:10,OPERATOR:11,BRACKETOPEN:12,BRACKETCLOSE:13,DOTKEY:14,ARRAYOPEN:15,CURLYOPEN:17,CURLYCLOSE:18,COLON:19,COMPARATOR:20,LOGIC:21,NOT:22,BOOL:23,ASSIGNMENT:24,METHODOPEN:25,QMARK:27,UNKNOWN:100}}}),l=t({"lib/tags/if.js"(e){var t=o(),r=c();e.compile=function(e,r,n,o,a,i,s){var c,l,p=[],u=s&&s.irExpr?s.irExpr:t.legacyJS(r.join(" ")),f=[];for(c=0;c<n.length;c++)!(l=n[c])||"elseif"!==l.name&&"else"!==l.name?f.push(l):(p.push(t.ifBranch(u,[t.legacyJS(e(f,o,a,i))])),u="else"===l.name?null:l.irExpr?l.irExpr:t.legacyJS(l.args.join(" ")),f=[]);return p.push(t.ifBranch(u,[t.legacyJS(e(f,o,a,i))])),t.ifStmt(p)},e.lowerExpr=function(e,t){var n;for(n=0;n<t.length;n++)if(t[n].type===r.FILTER||t[n].type===r.FILTEREMPTY)return;return e.parseExpr(t)},e.parse=function(e,t,r,n){if(void 0===e)throw new Error("No conditional statement provided on line "+t+".");return r.on(n.COMPARATOR,function(e){if(this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");if(this.prevToken.type===n.NOT)throw new Error('Attempted logic "not '+e.match+'" on line '+t+". Use !(foo "+e.match+") instead.");this.out.push(e.match),this.filterApplyIdx.push(this.out.length)}),r.on(n.NOT,function(e){if(this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");this.out.push(e.match)}),r.on(n.BOOL,function(e){this.out.push(e.match)}),r.on(n.LOGIC,function(e){if(!this.out.length||this.isLast)throw new Error('Unexpected logic "'+e.match+'" on line '+t+".");this.out.push(e.match),this.filterApplyIdx.pop()}),!0},e.ends=!0}}),p=t({"lib/tags/elseif.js"(e){var t=l().parse,r=c();e.compile=function(e,t){return"} else if ("+t.join(" ")+") {\n"},e.lowerExpr=function(e,t){var n;for(n=0;n<t.length;n++)if(t[n].type===r.FILTER||t[n].type===r.FILTEREMPTY)return;return e.parseExpr(t)},e.parse=function(e,r,n,o,a){return t(e,r,n,o,a)&&a.length&&"if"===a[a.length-1].name}}}),u=t({"lib/tags/extends.js"(e){e.compile=function(){},e.parse=function(){return!0},e.ends=!1}}),f=t({"packages/swig-core/lib/dateformatter.js"(e){var t=r(),n={full:["January","February","March","April","May","June","July","August","September","October","November","December"],abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},o={full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],alt:{"-1":"Yesterday",0:"Today",1:"Tomorrow"}};e.tzOffset=0,e.DateZ=function(){var r=["getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","toISOString","toGMTString","toUTCString","valueOf","getTime"],n=["getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getYear","toDateString","toLocaleDateString","toLocaleTimeString"],o=this;o.date=o.dateZ=arguments.length>1?new Date(Date.UTC.apply(Date,arguments)+6e4*(new Date).getTimezoneOffset()):1===arguments.length?new Date(new Date(arguments[0])):new Date,o.timezoneOffset=o.dateZ.getTimezoneOffset(),t.each(n,function(e){o[e]=function(){return o.dateZ[e]()}}),t.each(r,function(e){o[e]=function(){return o.date[e]()}}),this.setTimezoneOffset(e.tzOffset)},e.DateZ.prototype={getTimezoneOffset:function(){return this.timezoneOffset},setTimezoneOffset:function(e){return this.timezoneOffset=e,this.dateZ=new Date(this.date.getTime()+6e4*this.date.getTimezoneOffset()-6e4*this.timezoneOffset),this}},e.d=function(e){return(e.getDate()<10?"0":"")+e.getDate()},e.D=function(e){return o.abbr[e.getDay()]},e.j=function(e){return e.getDate()},e.l=function(e){return o.full[e.getDay()]},e.N=function(e){var t=e.getDay();return t>=1?t:7},e.S=function(e){var t=e.getDate();return t%10==1&&11!==t?"st":t%10==2&&12!==t?"nd":t%10==3&&13!==t?"rd":"th"},e.w=function(e){return e.getDay()},e.z=function(t,r,n){var o=t.getFullYear(),a=new e.DateZ(o,t.getMonth(),t.getDate(),12,0,0),i=new e.DateZ(o,0,1,12,0,0);return a.setTimezoneOffset(r,n),i.setTimezoneOffset(r,n),Math.round((a-i)/864e5)},e.W=function(e){var t,r=new Date(e.valueOf()),n=(e.getDay()+6)%7;return r.setDate(r.getDate()-n+3),t=r.valueOf(),r.setMonth(0,1),4!==r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),1+Math.ceil((t-r)/6048e5)},e.F=function(e){return n.full[e.getMonth()]},e.m=function(e){return(e.getMonth()<9?"0":"")+(e.getMonth()+1)},e.M=function(e){return n.abbr[e.getMonth()]},e.n=function(e){return e.getMonth()+1},e.t=function(e){return 32-new Date(e.getFullYear(),e.getMonth(),32).getDate()},e.L=function(e){return 29===new Date(e.getFullYear(),1,29).getDate()},e.o=function(e){var t=new Date(e.valueOf());return t.setDate(t.getDate()-(e.getDay()+6)%7+3),t.getFullYear()},e.Y=function(e){return e.getFullYear()},e.y=function(e){return e.getFullYear().toString().substr(2)},e.a=function(e){return e.getHours()<12?"am":"pm"},e.A=function(e){return e.getHours()<12?"AM":"PM"},e.B=function(e){var t,r=e.getUTCHours();return r=23===r?0:r+1,t=Math.abs((60*(60*r+e.getUTCMinutes())+e.getUTCSeconds())/86.4).toFixed(0),"000".concat(t).slice(t.length)},e.g=function(e){var t=e.getHours();return 0===t?12:t>12?t-12:t},e.G=function(e){return e.getHours()},e.h=function(e){var t=e.getHours();return(t<10||12<t&&22>t?"0":"")+(t<12?t:t-12)},e.H=function(e){var t=e.getHours();return(t<10?"0":"")+t},e.i=function(e){var t=e.getMinutes();return(t<10?"0":"")+t},e.s=function(e){var t=e.getSeconds();return(t<10?"0":"")+t},e.O=function(e){var t=e.getTimezoneOffset();return(t<0?"-":"+")+(t/60<10?"0":"")+Math.abs(t/60)+"00"},e.Z=function(e){return 60*e.getTimezoneOffset()},e.c=function(e){return e.toISOString()},e.r=function(e){return e.toUTCString()},e.U=function(e){return e.getTime()/1e3}}}),h=t({"lib/dateformatter.js"(e,t){t.exports=f()}}),d=t({"packages/swig-core/lib/filters.js"(e){var t=r();e.iterateFilter=function(e){var r=this,n={};return t.isArray(e)?t.map(e,function(e){return r.apply(null,arguments)}):"object"==typeof e?(t.each(e,function(e,t){n[t]=r.apply(null,arguments)}),n):void 0}}}),y=t({"lib/filters.js"(e){var t=n(),r=h(),o=d().iterateFilter;function a(e){return"<"===e?"&lt;":">"===e?"&gt;":'"'===e?"&quot;":"&#39;"}e.addslashes=function(t){var r=o.apply(e.addslashes,arguments);return void 0!==r?r:t.replace(/\\/g,"\\\\").replace(/\'/g,"\\'").replace(/\"/g,'\\"')},e.capitalize=function(t){var r=o.apply(e.capitalize,arguments);return void 0!==r?r:t.toString().charAt(0).toUpperCase()+t.toString().substr(1).toLowerCase()},e.date=function(e,t,n,o){var a,i=t.length,s=new r.DateZ(e),c=0,l="";for(n&&s.setTimezoneOffset(n,o);c<i;c+=1)"\\"===(a=t.charAt(c))?l+=(c+=1)<i?t.charAt(c):a:r.hasOwnProperty(a)?l+=r[a](s,n,o):l+=a;return l},e.default=function(e,t){return void 0===e||!e&&"number"!=typeof e?t:e},e.escape=function(t,r){var n,i,s,c,l;if(null==t)return t;if("string"!==(n=typeof t))return"object"===n&&void 0!==(s=o.apply(e.escape,arguments))?s:t;if("js"===r){for(i=t.replace(/\\/g,"\\u005C"),s="",c=0;c<i.length;c+=1)s+=(l=i.charCodeAt(c))<32?"\\u00"+(l=(l=l.toString(16).toUpperCase()).length<2?"0"+l:l):i[c];return s.replace(/&/g,"\\u0026").replace(/</g,"\\u003C").replace(/>/g,"\\u003E").replace(/\'/g,"\\u0027").replace(/"/g,"\\u0022").replace(/\=/g,"\\u003D").replace(/-/g,"\\u002D").replace(/;/g,"\\u003B")}return t.replace(/&(?!amp;|lt;|gt;|quot;|#39;)/g,"&amp;").replace(/[<>"']/g,a)},e.e=e.escape,e.first=function(e){return"object"!=typeof e||t.isArray(e)?"string"==typeof e?e.substr(0,1):e[0]:e[t.keys(e)[0]]},e.groupBy=function(e,r){if(!t.isArray(e))return e;var n={};return t.each(e,function(e){if(e.hasOwnProperty(r)){var o=e[r],a=t.extend({},e);delete a[r],n[o]||(n[o]=[]),n[o].push(a)}}),n},e.join=function(e,r){if(t.isArray(e))return e.join(r);if("object"==typeof e){var n=[];return t.each(e,function(e){n.push(e)}),n.join(r)}return e},e.json=function(e,t){return JSON.stringify(e,null,t||0)},e.json_encode=e.json,e.last=function(e){if("object"==typeof e&&!t.isArray(e)){var r=t.keys(e);return e[r[r.length-1]]}return"string"==typeof e?e.charAt(e.length-1):e[e.length-1]},e.length=function(e){return"object"!=typeof e||t.isArray(e)?e.hasOwnProperty("length")?e.length:"":t.keys(e).length},e.lower=function(t){var r=o.apply(e.lower,arguments);return void 0!==r?r:t.toString().toLowerCase()},e.raw=function(t){return e.safe(t)},e.raw.safe=!0,e.replace=function(e,t,r,n){var o=new RegExp(t,n);return e.replace(o,r)},e.reverse=function(t){return e.sort(t,!0)},e.safe=function(e){return e},e.safe.safe=!0,e.sort=function(e,r){var n;if(t.isArray(e))n=t.extend([],e).sort();else switch(typeof e){case"object":n=t.keys(e).sort();break;case"string":return n=e.split(""),r?n.reverse().join(""):n.sort().join("")}return n&&r?n.reverse():n||e},e.striptags=function(t){var r=o.apply(e.striptags,arguments);return void 0!==r?r:t.toString().replace(/(<([^>]+)>)/gi,"")},e.title=function(t){var r=o.apply(e.title,arguments);return void 0!==r?r:t.toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},e.uniq=function(e){var r;return e&&t.isArray(e)?(r=[],t.each(e,function(e){-1===r.indexOf(e)&&r.push(e)}),r):""},e.upper=function(t){var r=o.apply(e.upper,arguments);return void 0!==r?r:t.toString().toUpperCase()},e.url_encode=function(t){var r=o.apply(e.url_encode,arguments);return void 0!==r?r:encodeURIComponent(t)},e.url_decode=function(t){var r=o.apply(e.url_decode,arguments);return void 0!==r?r:decodeURIComponent(t)}}}),g=t({"lib/tags/filter.js"(e){var t=y(),r=o(),n=c();e.compile=function(e,t,n,o,a,i,s){var c=t.shift().replace(/\($/,""),l=e(n,o,a,i);")"===t[t.length-1]&&t.pop();var p=s&&s.irExpr?s.irExpr:t.length?t:void 0;return r.filter(c,[r.legacyJS(l)],p)},e.lowerExpr=function(e,t){for(var r=0;r<t.length&&t[r].type===n.WHITESPACE;)r+=1;if(!(r>=t.length)){var o=t[r];if(o.type!==n.VAR){if(o.type===n.FUNCTIONEMPTY)return[];if(o.type===n.FUNCTION){var a,i=1,s=r+1,c=[];for(a=r+1;a<t.length;a+=1){var l=t[a];if(l.type===n.FILTER||l.type===n.FILTEREMPTY)return;if(l.type!==n.PARENOPEN&&l.type!==n.FUNCTION&&l.type!==n.BRACKETOPEN&&l.type!==n.CURLYOPEN){if(l.type!==n.PARENCLOSE&&l.type!==n.BRACKETCLOSE&&l.type!==n.CURLYCLOSE)l.type===n.COMMA&&1===i&&(c.push(t.slice(s,a)),s=a+1);else if(0===(i-=1)){a>s&&c.push(t.slice(s,a));break}}else i+=1}if(0===i){var p=[];for(a=0;a<c.length;a+=1)p.push(e.parseExpr(c[a]));return p}}}}},e.parse=function(e,r,n,o){var a;function i(e){if(!t.hasOwnProperty(e))throw new Error('Filter "'+e+'" does not exist on line '+r+".")}return n.on(o.FUNCTION,function(e){return!!a||(i(a=e.match.replace(/\($/,"")),this.out.push(e.match),void this.state.push(e.type))}),n.on(o.VAR,function(e){return!!a||(i(a=e.match),void this.out.push(a))}),!0},e.ends=!0}}),m=t({"packages/swig-core/lib/security.js"(e){e.dangerousProps=["__proto__","constructor","prototype"]}}),v=t({"lib/tags/for.js"(e){var t=o(),r=c(),n=m().dangerousProps;e.compile=function(e,r,n,o,a,i,s){var c,l=r.shift(),p="__k";r[0]&&","===r[0]&&(r.shift(),p=l,l=r.shift()),c=s&&s.irExpr?s.irExpr:r.join("");var u=e(n,o,a,i);return t.forStmt(l,c,[t.legacyJS(u)],p)},e.lowerExpr=function(e,t){var n,o=-1;for(n=0;n<t.length;n++)if(t[n].type===r.COMPARATOR&&"in"===t[n].match){o=n;break}if(-1!==o){var a=t.slice(o+1);for(n=0;n<a.length;n++)if(a[n].type===r.FILTER||a[n].type===r.FILTEREMPTY)return;return e.parseExpr(a)}},e.parse=function(e,t,r,o){var a,i;return r.on(o.NUMBER,function(e){var r=this.state.length?this.state[this.state.length-1]:null;if(!i||r!==o.ARRAYOPEN&&r!==o.CURLYOPEN&&r!==o.CURLYCLOSE&&r!==o.FUNCTION&&r!==o.FILTER)throw new Error('Unexpected number "'+e.match+'" on line '+t+".");return!0}),r.on(o.VAR,function(e){if(i&&a)return!0;if(-1!==e.match.indexOf("."))throw new Error('Loop variable "'+e.match+'" must be a bare identifier in "for" tag on line '+t+".");if(-1!==n.indexOf(e.match))throw new Error('Unsafe loop variable "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");this.out.length||(a=!0),this.out.push(e.match)}),r.on(o.COMMA,function(e){if(!a||this.prevToken.type!==o.VAR)return!0;this.out.push(e.match)}),r.on(o.COMPARATOR,function(e){if("in"!==e.match||!a)throw new Error('Unexpected token "'+e.match+'" on line '+t+".");i=!0,this.filterApplyIdx.push(this.out.length)}),!0},e.ends=!0}}),E=t({"packages/swig-core/lib/backend.js"(e){var t=r(),n=m(),a=o();function i(e){return e.replace(/\\/g,"\\\\").replace(/\n|\r/g,"\\n").replace(/"/g,'\\"')}function s(e){return{dangerousProps:(e=e||{}).dangerousProps||n.dangerousProps,throwError:e.throwError||t.throwError}}function c(e,r){switch(e&&"string"==typeof e.type||r.throwError("emitExpr: expected an IR expression node"),e.type){case"Literal":return function(e,t){switch(e.kind){case"string":return JSON.stringify(e.value);case"number":return String(e.value);case"bool":return e.value?"true":"false";case"null":return"null";case"undefined":return"undefined"}t.throwError('emitLiteral: unknown literal kind "'+e.kind+'"')}(e,r);case"VarRef":return function(e,r){t.isArray(e.path)&&0!==e.path.length||r.throwError("emitVarRef: path must be a non-empty array");return t.each(e.path,function(t){l(t,r,e)}),f(e.path)}(e,r);case"VarRefExists":return p(e,r);case"Access":return function(e,t){e.key&&"Literal"===e.key.type&&"string"===e.key.kind&&l(e.key.value,t,e);return c(e.object,t)+"["+c(e.key,t)+"]"}(e,r);case"BinaryOp":return function(e,t){var r=c(e.left,t),n=c(e.right,t);if(o=e.op,"+"===o||"-"===o||"*"===o||"/"===o||"%"===o)return r+" "+e.op+" "+n;var o;if("in"===e.op)return r+" in "+n;if("~"===e.op)return"(String("+r+") + String("+n+"))";if("??"===e.op&&e.left&&"VarRef"===e.left.type){return"("+p(a.varRefExists(e.left.path,e.left.loc),t)+" ? "+r+" : "+n+")"}return r+e.op+n}(e,r);case"UnaryOp":return function(e,t){var r=c(e.operand,t);e.operand&&"BinaryOp"===e.operand.type&&(r="("+r+")");return e.op+r}(e,r);case"Conditional":return function(e,t){return"("+c(e.test,t)+" ? "+c(e.then,t)+" : "+c(e.else,t)+")"}(e,r);case"ArrayLiteral":return function(e,r){var n=[];return t.each(e.elements,function(e){n.push(c(e,r))}),"["+n.join(", ")+"]"}(e,r);case"ObjectLiteral":return function(e,r){var n=[];return t.each(e.properties,function(e){n.push(c(e.key,r)+":"+c(e.value,r))}),"{"+n.join(", ")+"}"}(e,r);case"FnCall":return function(e,r){var n,o,a,i=[],s=e.callee;if(t.each(e.args,function(e){i.push(c(e,r))}),a=i.join(", "),s&&"VarRef"===s.type&&t.isArray(s.path))return t.each(s.path,function(e){l(e,r,s)}),1===s.path.length?"((typeof _ctx."+(n=s.path[0])+' !== "undefined") ? _ctx.'+n+" : ((typeof "+n+' !== "undefined") ? '+n+" : _fn))("+a+")":(o=s.path.slice(0,-1),"("+f(s.path)+" || _fn).call("+f(o)+(a?", "+a:"")+")");return"("+c(s,r)+")("+a+")"}(e,r);case"FilterCall":return function(e,r){var n=c(e.input,r),o="";if(e.args&&e.args.length){var a=[];t.each(e.args,function(e){a.push(c(e,r))}),o=", "+a.join(", ")}return'_filters["'+e.name+'"]('+n+o+")"}(e,r)}r.throwError('emitExpr: unknown IR expression type "'+e.type+'"')}function l(e,t,r){if(-1!==t.dangerousProps.indexOf(e)){var n=r&&r.loc&&r.loc.line||void 0,o=r&&r.loc&&r.loc.filename||void 0;t.throwError('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)',n,o)}}function p(e,r){return t.isArray(e.path)&&0!==e.path.length||r.throwError("emitVarRefExists: path must be a non-empty array"),t.each(e.path,function(t){l(t,r,e)}),"("+u(e.path,"_ctx.")+" || "+u(e.path,"")+")"}function u(e,r){var n=r+e[0],o="";return o="(typeof "+n+' !== "undefined" && '+n+" !== null",t.each(e,function(e,t){0!==t&&(o+=" && "+n+"."+e+" !== undefined && "+n+"."+e+" !== null",n+="."+e)}),o+=")"}function f(e){var t=e.join(".");return"("+u(e,"_ctx.")+" ? _ctx."+t+" : ("+u(e,"")+" ? "+t+' : ""))'}e.compile=function(r,o,c,p){var u="",f=t.isArray(r)?r:r.tokens,h=[];return t.each(f,function(r){if("string"!=typeof r)if(r&&"object"==typeof r&&"string"==typeof r.type&&"function"!=typeof r.compile)h.push(r);else{var n=r.compile(e.compile,r.args?r.args.slice(0):[],r.content?r.content.slice(0):[],o,c,p,r);null!=n&&""!==n&&("string"!=typeof n?t.isArray(n)?t.each(n,function(e){h.push(e)}):"object"!=typeof n||"string"!=typeof n.type?h.push(a.legacyJS(String(n))):h.push(n):h.push(a.legacyJS(n)))}else h.push(a.text(r))}),t.each(h,function(r){if("Text"!==r.type&&"Raw"!==r.type)if("LegacyJS"!==r.type)if("Autoescape"!==r.type){if("If"===r.type){var a="";return t.each(r.branches,function(r,n){var o,s="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(s+='_output += "'+i(e.value)+'";\n'):s+=e.js}),null!==r.test?(o=r.test&&"object"==typeof r.test&&"LegacyJS"===r.test.type?r.test.js:"object"==typeof r.test&&"string"==typeof r.test.type?e.emitExpr(r.test):r.test,a+=0===n?"if ("+o+") { \n"+s:"} else if ("+o+") {\n"+s):a+="} else {\n"+s}),void(u+=a+"\n}")}if("Set"===r.type){var p,f;if(r.target&&"object"==typeof r.target&&"VarRef"===r.target.type){var h=s();t.isArray(r.target.path)&&0!==r.target.path.length||h.throwError("Set: target VarRef must have a non-empty path"),t.each(r.target.path,function(e){l(e,h,r.target)}),p="_ctx."+r.target.path.join(".")}else p=r.target;return f=r.value&&"object"==typeof r.value&&"string"==typeof r.value.type?e.emitExpr(r.value):r.value,void(u+=p+" "+r.op+" "+f+";\n")}if("For"!==r.type)if("Macro"!==r.type)if("Parent"!==r.type)if("Block"!==r.type){var d,y,g;if("Include"===r.type)return d=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path,void 0!==r.context&&(y="object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context),g=r.isolated&&y?y:y?"_utils.extend({}, _ctx, "+y+")":"_ctx",void(u+=(r.ignoreMissing?" try {\n":"")+"_output += _swig.compileFile("+d+', {resolveFrom: "'+r.resolveFrom+'"})('+g+");\n"+(r.ignoreMissing?"} catch (e) {}\n":""));if("IncludeDeferred"!==r.type)if("ImportDeferred"!==r.type){if("FromImportDeferred"===r.type){var m,v=r.imports||[];t.each(v,function(e){if(-1!==n.dangerousProps.indexOf(e.name))throw new Error('From-import name "'+e.name+'" is reserved.');var t=e.alias||e.name;if(-1!==n.dangerousProps.indexOf(t))throw new Error('From-import binding "'+t+'" is reserved.')}),m=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var E='{resolveFrom: "'+(r.resolveFrom||"")+'"}',x="";return t.each(v,function(e){var t=e.alias||e.name;x+=" _ctx."+t+' = _imp["'+e.name+'"];\n'}),void(u+="await (async function () {\n var _imp = (await (await _swig.getTemplate("+m+", "+E+"))(_ctx)).exports;\n"+x+"})();\n")}if("ExtendsDeferred"===r.type){var O;r.childIRs&&r.childIRs.length&&(u+=e.compile(r.childIRs,o,c)),u+="var _localChildBlocks = {};\n",r.childBlocks&&t.each(r.childBlocks,function(e,r){var n="";t.each(e.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(n+='_output += "'+i(e.value)+'";\n'):n+=e.js}),u+="_localChildBlocks["+JSON.stringify(r)+'] = async function (_ctx) {\n var _output = "";\n'+n+" return _output;\n};\n"}),u+="var _mergedBlocks = _utils.extend({}, _localChildBlocks, _blocks || {});\n",O=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var w='{resolveFrom: "'+(r.resolveFrom||"")+'"}';return u+="var _parentTpl = await _swig.getTemplate("+O+", "+w+");\n",u+="var _parentResult = await _parentTpl(_ctx, _mergedBlocks);\n",void(u+="_output = _parentResult.output;\n")}if("With"===r.type){var C;void 0!==r.context&&(C=r.context&&"object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context);var b,T="";return t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(T+='_output += "'+i(e.value)+'";\n'):T+=e.js}),b=r.isolated?void 0!==C?C:"{}":void 0!==C?"_utils.extend({}, _ctx, "+C+")":"_utils.extend({}, _ctx)",void(u+="(function (_ctx) {\n"+T+"})("+b+");\n")}if("Output"===r.type){if(r.expr&&"LegacyJS"===r.expr.type)return void(u+=r.expr.js);var R=e.emitExpr(r.expr);return r.filters&&r.filters.length&&t.each(r.filters,function(r){var n="";if(r.args&&r.args.length){var o=[];t.each(r.args,function(t){o.push(e.emitExpr(t))}),n=", "+o.join(", ")}R='_filters["'+r.name+'"]('+R+n+")"}),void(r.coerce?u+="_output += _utils.coerceOutput("+R+");\n":u+="_output += "+R+";\n")}if("Filter"!==r.type);else{var A="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(A+='_output += "'+i(e.value)+'";\n'):A+=e.js});var N='(function () {\n var _output = "";\n'+A+" return _output;\n})()",k="";if(r.args&&r.args.length){var P=[];t.each(r.args,function(t){t&&"object"==typeof t&&"string"==typeof t.type?P.push(e.emitExpr(t)):P.push(t)}),k=", "+P.join(", ")}u+='_output += _filters["'+r.name+'"]('+N+k+");\n"}}else{if(-1!==n.dangerousProps.indexOf(r.alias))throw new Error('Import alias "'+r.alias+'" is reserved.');var _;_=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path;var L='{resolveFrom: "'+(r.resolveFrom||"")+'"}';u+="_ctx."+r.alias+" = (await (await _swig.getTemplate("+_+", "+L+"))(_ctx)).exports;\n"}else{var S,I,F;S=r.path&&"object"==typeof r.path&&"string"==typeof r.path.type?e.emitExpr(r.path):r.path,void 0!==r.context&&(I="object"==typeof r.context&&"string"==typeof r.context.type?e.emitExpr(r.context):r.context),F=r.isolated&&I?I:I?"_utils.extend({}, _ctx, "+I+")":"_ctx";var j='{resolveFrom: "'+(r.resolveFrom||"")+'"}';u+=(r.ignoreMissing?" try {\n":"")+"_output += (await (await _swig.getTemplate("+S+", "+j+"))("+F+")).output;\n"+(r.ignoreMissing?"} catch (e) {}\n":"")}}else{if(c&&"async"===c.codegenMode){var U=JSON.stringify(r.name);return u+="if (_blocks && _blocks["+U+"]) {\n",u+=" _output += await _blocks["+U+"](_ctx);\n",u+="} else {\n",t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js}),void(u+="}\n")}t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js})}else t.each(r.body||[],function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js});else{var M="";t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(M+='_output += "'+i(e.value)+'";\n'):M+=e.js});var Y,D,B=r.params||[],V="";if(B.length&&"object"==typeof B[0]&&null!==B[0]&&"string"==typeof B[0].name){var J=[];t.each(B,function(t){J.push(t.name),t.default&&(V+=" if ("+t.name+" === undefined) { "+t.name+" = "+e.emitExpr(t.default)+"; }\n")}),Y=J.join(", ");var K=[];t.each(J,function(e){K.push(JSON.stringify(e))}),D=K.join(",")}else Y=B.join(""),D='"'+B.join('","')+'"';if(u+="_ctx."+r.name+" = function ("+Y+') {\n var _output = "",\n __ctx = _utils.extend({}, _ctx);\n'+V+" _utils.each(_ctx, function (v, k) {\n if (["+D+"].indexOf(k) !== -1) { delete _ctx[k]; }\n });\n"+M+"\n _ctx = _utils.extend(_ctx, __ctx);\n return _output;\n};\n_ctx."+r.name+".safe = true;\n",c&&"async"===c.codegenMode){if(-1!==n.dangerousProps.indexOf(r.name))throw new Error('Macro name "'+r.name+'" is reserved.');u+="_exports."+r.name+" = _ctx."+r.name+";\n"}}else{var W,$=r.value,z=r.key,G="",H=("_ctx.__loopcache"+Math.random()).replace(/\./g,""),Z="_ctx.",Q="_ctx.loop";W=r.iterable&&"object"==typeof r.iterable&&"string"==typeof r.iterable.type?e.emitExpr(r.iterable):r.iterable,t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(G+='_output += "'+i(e.value)+'";\n'):G+=e.js});var q=" if (!__l) { return; }\n";if(r.emptyBody){var X="";t.each(r.emptyBody,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(X+='_output += "'+i(e.value)+'";\n'):X+=e.js}),q=" if (!__l || !__len) {\n"+X+" return;\n }\n"}u+="(function () {\n var __l = "+W+', __len = (_utils.isArray(__l) || typeof __l === "string") ? __l.length : _utils.keys(__l).length;\n'+q+" var "+H+" = { loop: "+Q+", "+$+": "+Z+$+", "+z+": "+Z+z+" };\n "+Q+" = { first: false, index: 1, index0: 0, revindex: __len, revindex0: __len - 1, length: __len, last: false };\n _utils.each(__l, function ("+$+", "+z+") {\n "+Z+$+" = "+$+";\n "+Z+z+" = "+z+";\n "+Q+".key = "+z+";\n "+Q+".first = ("+Q+".index0 === 0);\n "+Q+".last = ("+Q+".revindex0 === 0);\n "+G+" "+Q+".index += 1; "+Q+".index0 += 1; "+Q+".revindex -= 1; "+Q+".revindex0 -= 1;\n });\n "+Q+" = "+H+".loop;\n "+Z+$+" = "+H+"."+$+";\n "+Z+z+" = "+H+"."+z+";\n "+H+" = undefined;\n})();\n"}}else t.each(r.body,function(e){"LegacyJS"!==e.type?"Text"!==e.type&&"Raw"!==e.type||(u+='_output += "'+i(e.value)+'";\n'):u+=e.js});else u+=r.js;else u+='_output += "'+i(r.value)+'";\n'}),u},e.emitExpr=function(e,t){return c(e,s(t))}}}),x=t({"lib/lexer.js"(e){var t=n(),r=c(),o=[{type:r.WHITESPACE,regex:[/^\s+/]},{type:r.STRING,regex:[/^""/,/^".*?[^\\]"/,/^''/,/^'.*?[^\\]'/]},{type:r.FILTER,regex:[/^\|\s*(\w+)\(/],idx:1},{type:r.FILTEREMPTY,regex:[/^\|\s*(\w+)/],idx:1},{type:r.FUNCTIONEMPTY,regex:[/^\s*(\w+)\(\)/],idx:1},{type:r.FUNCTION,regex:[/^\s*(\w+)\(/],idx:1},{type:r.PARENOPEN,regex:[/^\(/]},{type:r.PARENCLOSE,regex:[/^\)/]},{type:r.COMMA,regex:[/^,/]},{type:r.LOGIC,regex:[/^(&&|\|\|)\s*/,/^(and|or)\s+/],idx:1,replace:{and:"&&",or:"||"}},{type:r.COMPARATOR,regex:[/^(===|==|\!==|\!=|<=|<|>=|>|in\s|gte\s|gt\s|lte\s|lt\s)\s*/],idx:1,replace:{gte:">=",gt:">",lte:"<=",lt:"<"}},{type:r.ASSIGNMENT,regex:[/^(=|\+=|-=|\*=|\/=)/]},{type:r.NOT,regex:[/^\!\s*/,/^not\s+/],replace:{not:"!"}},{type:r.BOOL,regex:[/^(true|false)\s+/,/^(true|false)$/],idx:1},{type:r.VAR,regex:[/^[a-zA-Z_$]\w*((\.\$?\w*)+)?/,/^[a-zA-Z_$]\w*/]},{type:r.BRACKETOPEN,regex:[/^\[/]},{type:r.BRACKETCLOSE,regex:[/^\]/]},{type:r.CURLYOPEN,regex:[/^\{/]},{type:r.COLON,regex:[/^\:/]},{type:r.CURLYCLOSE,regex:[/^\}/]},{type:r.DOTKEY,regex:[/^\.(\w+)/],idx:1},{type:r.NUMBER,regex:[/^\d+(\.\d+)?/]},{type:r.QMARK,regex:[/^\?/]},{type:r.OPERATOR,regex:[/^(\+|\-|\/|\*|%)/]}];function a(e){var n;return t.some(o,function(r){return t.some(r.regex,function(t){var o,a=e.match(t);if(a)return o=a[r.idx||0].replace(/\s*$/,""),o=r.hasOwnProperty("replace")&&r.replace.hasOwnProperty(o)?r.replace[o]:o,n={match:o,type:r.type,length:a[0].length},!0})}),n||(n={match:e,type:r.UNKNOWN,length:e.length}),n}e.types=r,e.read=function(e){for(var t,r=0,n=[];r<e.length;)r+=(t=a(e.substring(r))).length,n.push(t);return n}}}),O=t({"packages/swig-core/lib/tokenparser.js"(e){var t=r(),n=c(),a=o(),i=m().dangerousProps,s=["break","case","catch","continue","debugger","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","this","throw","try","typeof","var","void","while","with"];function l(e,r,o,a,i){this.out=[],this.state=[],this.filterApplyIdx=[],this._parsers={},this.line=a,this.filename=i,this.filters=r,this.escape=o,this.parse=function(){var r=this;return r._parsers.start&&r._parsers.start.call(r),t.each(e,function(t,o){var a=e[o-1];if(r.isLast=o===e.length-1,a)for(;a.type===n.WHITESPACE;)a=e[(o-=1)-1];r.prevToken=a,r.parseToken(t)}),r._parsers.end&&r._parsers.end.call(r),r.escape&&(r.filterApplyIdx=[0],"string"==typeof r.escape?(r.parseToken({type:n.FILTER,match:"e"}),r.parseToken({type:n.COMMA,match:","}),r.parseToken({type:n.STRING,match:String(o)}),r.parseToken({type:n.PARENCLOSE,match:")"})):r.parseToken({type:n.FILTEREMPTY,match:"e"})),r.out}}l.prototype={on:function(e,t){this._parsers[e]=t},parseToken:function(e){var r,o=this,a=o._parsers[e.type]||o._parsers["*"],s=e.match,c=o.prevToken,l=c?c.type:null,p=o.state.length?o.state[o.state.length-1]:null;if(!a||"function"!=typeof a||a.call(this,e))switch(p&&c&&p===n.FILTER&&l===n.FILTER&&e.type!==n.PARENCLOSE&&e.type!==n.COMMA&&e.type!==n.OPERATOR&&e.type!==n.FILTER&&e.type!==n.FILTEREMPTY&&o.out.push(", "),p&&p===n.METHODOPEN&&(o.state.pop(),e.type!==n.PARENCLOSE&&o.out.push(", ")),e.type){case n.WHITESPACE:break;case n.STRING:if(p===n.BRACKETOPEN){var u=s.replace(/^['"]|['"]$/g,"");-1!==i.indexOf(u)&&t.throwError('Unsafe access to "'+u+'" via bracket notation is not allowed in templates (CVE-2023-25345)',o.line,o.filename)}o.filterApplyIdx.push(o.out.length),o.out.push(s.replace(/\\/g,"\\\\"));break;case n.NUMBER:case n.BOOL:o.filterApplyIdx.push(o.out.length),o.out.push(s);break;case n.FILTER:o.filters.hasOwnProperty(s)&&"function"==typeof o.filters[s]||t.throwError('Invalid filter "'+s+'"',o.line,o.filename),o.escape=!o.filters[s].safe&&o.escape,o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,'_filters["'+s+'"]('),o.state.push(e.type);break;case n.FILTEREMPTY:o.filters.hasOwnProperty(s)&&"function"==typeof o.filters[s]||t.throwError('Invalid filter "'+s+'"',o.line,o.filename),o.escape=!o.filters[s].safe&&o.escape,o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,'_filters["'+s+'"]('),o.out.push(")");break;case n.FUNCTION:case n.FUNCTIONEMPTY:o.out.push("((typeof _ctx."+s+' !== "undefined") ? _ctx.'+s+" : ((typeof "+s+' !== "undefined") ? '+s+" : _fn))("),o.escape=!1,e.type===n.FUNCTIONEMPTY?o.out[o.out.length-1]=o.out[o.out.length-1]+")":o.state.push(e.type),o.filterApplyIdx.push(o.out.length-1);break;case n.PARENOPEN:o.state.push(e.type),o.filterApplyIdx.length?(o.out.splice(o.filterApplyIdx[o.filterApplyIdx.length-1],0,"("),c&&l===n.VAR?(r=c.match.split(".").slice(0,-1),o.out.push(" || _fn).call("+o.checkMatch(r)),o.state.push(n.METHODOPEN),o.escape=!1):o.out.push(" || _fn)("),o.filterApplyIdx.push(o.out.length-3)):(o.out.push("("),o.filterApplyIdx.push(o.out.length-1));break;case n.PARENCLOSE:(r=o.state.pop())!==n.PARENOPEN&&r!==n.FUNCTION&&r!==n.FILTER&&t.throwError("Mismatched nesting state",o.line,o.filename),o.out.push(")"),o.filterApplyIdx.pop(),r!==n.FILTER&&o.filterApplyIdx.pop();break;case n.COMMA:p!==n.FUNCTION&&p!==n.FILTER&&p!==n.ARRAYOPEN&&p!==n.CURLYOPEN&&p!==n.PARENOPEN&&p!==n.COLON&&t.throwError("Unexpected comma",o.line,o.filename),p===n.COLON&&o.state.pop(),o.out.push(", "),o.filterApplyIdx.pop();break;case n.LOGIC:case n.COMPARATOR:c&&l!==n.COMMA&&l!==e.type&&l!==n.BRACKETOPEN&&l!==n.CURLYOPEN&&l!==n.PARENOPEN&&l!==n.FUNCTION||t.throwError("Unexpected logic",o.line,o.filename),o.out.push(e.match);break;case n.NOT:o.out.push(e.match);break;case n.VAR:o.parseVar(e,s,p);break;case n.BRACKETOPEN:!c||l!==n.VAR&&l!==n.BRACKETCLOSE&&l!==n.PARENCLOSE?(o.state.push(n.ARRAYOPEN),o.filterApplyIdx.push(o.out.length)):o.state.push(e.type),o.out.push("[");break;case n.BRACKETCLOSE:(r=o.state.pop())!==n.BRACKETOPEN&&r!==n.ARRAYOPEN&&t.throwError("Unexpected closing square bracket",o.line,o.filename),o.out.push("]"),o.filterApplyIdx.pop();break;case n.CURLYOPEN:o.state.push(e.type),o.out.push("{"),o.filterApplyIdx.push(o.out.length-1);break;case n.QMARK:o.out.push(" ? "),o.state.push(e.type),o.filterApplyIdx.pop();break;case n.COLON:p===n.CURLYOPEN?(o.state.push(e.type),o.out.push(":")):p===n.QMARK?(o.state.pop()," ? "===o.out[o.out.length-1]?o.out[o.out.length-1]=" || ":o.out.push(" : ")):t.throwError("Unexpected colon",o.line,o.filename),o.filterApplyIdx.pop();break;case n.CURLYCLOSE:p===n.COLON&&o.state.pop(),o.state.pop()!==n.CURLYOPEN&&t.throwError("Unexpected closing curly brace",o.line,o.filename),o.out.push("}"),o.filterApplyIdx.pop();break;case n.DOTKEY:(!c||l!==n.VAR&&l!==n.BRACKETCLOSE&&l!==n.DOTKEY&&l!==n.PARENCLOSE&&l!==n.FUNCTIONEMPTY&&l!==n.FILTEREMPTY&&l!==n.CURLYCLOSE)&&t.throwError('Unexpected key "'+s+'"',o.line,o.filename),-1!==i.indexOf(s)&&t.throwError('Unsafe access to "'+s+'" is not allowed in templates (CVE-2023-25345)',o.line,o.filename),o.out.push("."+s);break;case n.OPERATOR:o.out.push(" "+s+" "),o.filterApplyIdx.pop()}},parseVar:function(e,r,o){var a=this;if(r=r.split("."),-1!==s.indexOf(r[0])&&t.throwError('Reserved keyword "'+r[0]+'" attempted to be used as a variable',a.line,a.filename),t.each(r,function(e){-1!==i.indexOf(e)&&t.throwError('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)',a.line,a.filename)}),a.filterApplyIdx.push(a.out.length),o===n.CURLYOPEN)return r.length>1&&t.throwError("Unexpected dot",a.line,a.filename),void a.out.push(r[0]);a.out.push(a.checkMatch(r))},parseExpr:function(e,r){var o=this,c=0;function l(){return function(){for(;c<e.length&&e[c].type===n.WHITESPACE;)c+=1}(),c<e.length?e[c]:null}function p(){var e=l();return e&&(c+=1),e}function u(e){t.throwError(e,o.line,o.filename)}function f(e){-1!==i.indexOf(e)&&u('Unsafe access to "'+e+'" is not allowed in templates (CVE-2023-25345)')}function h(e){-1!==i.indexOf(e)&&u('Unsafe access to "'+e+'" via bracket notation is not allowed in templates (CVE-2023-25345)')}function d(e){var t;if(e.type===n.LOGIC){if("||"===e.match)return{op:"||",prec:1};if("&&"===e.match)return{op:"&&",prec:2}}if(e.type===n.COMPARATOR)return"==="===(t=e.match)||"!=="===t||"=="===t||"!="===t?{op:t,prec:3}:{op:t,prec:4};if(e.type===n.OPERATOR){if("+"===(t=e.match)||"-"===t)return{op:t,prec:5};if("*"===t||"/"===t||"%"===t)return{op:t,prec:6}}return null}function y(e){return e.replace(/^['"]|['"]$/g,"")}function g(e){var t=[],r=l();if(r&&r.type===e)return p(),t;for(;;){t.push(x(0));var o=p();if(o||u("Unexpected end of expression"),o.type===e)break;o.type!==n.COMMA&&u("Expected comma or closing delimiter")}return t}function m(e){for(;;){var t=l();if(!t)break;if(t.type===n.DOTKEY)p(),f(t.match),e="VarRef"===e.type?a.varRef(e.path.concat([t.match])):a.access(e,a.literal("string",t.match));else if(t.type===n.BRACKETOPEN){p();var r=x(0);"Literal"===r.type&&"string"===r.kind&&h(r.value);var i=p();i&&i.type===n.BRACKETCLOSE||u("Unexpected closing square bracket"),e=a.access(e,r)}else if(t.type===n.PARENOPEN)p(),e=a.fnCall(e,g(n.PARENCLOSE));else{if(t.type!==n.FILTER&&t.type!==n.FILTEREMPTY)break;p();var s,c=t.match;o.filters.hasOwnProperty(c)&&"function"==typeof o.filters[c]||u('Invalid filter "'+c+'"'),t.type===n.FILTER&&(s=g(n.PARENCLOSE)),e=a.filterCallExpr(c,e,s)}}return e}function v(){var e,r=p();switch(r||u("Unexpected end of expression"),r.type){case n.STRING:return a.literal("string",y(r.match));case n.NUMBER:return a.literal("number",parseFloat(r.match));case n.BOOL:return a.literal("bool","true"===r.match);case n.NOT:return a.unaryOp("!",E());case n.OPERATOR:if("+"===(e=r.match)||"-"===e)return a.unaryOp(e,E());u('Unexpected operator "'+e+'"');break;case n.PARENOPEN:var o=x(0),i=p();return i&&i.type===n.PARENCLOSE||u("Mismatched nesting state"),m(o);case n.BRACKETOPEN:return m(a.arrayLiteral(g(n.BRACKETCLOSE)));case n.CURLYOPEN:return m(function(){var e=[],t=l();if(t&&t.type===n.CURLYCLOSE)return p(),a.objectLiteral([]);for(;;){var r,o=p();o||u("Unclosed object literal"),o.type===n.STRING?r=a.literal("string",y(o.match)):o.type===n.VAR?(-1!==o.match.indexOf(".")&&u("Unexpected dot"),r=a.literal("string",o.match)):o.type===n.NUMBER?r=a.literal("number",parseFloat(o.match)):u("Unexpected object key");var i=p();i&&i.type===n.COLON||u("Unexpected colon");var s=x(0);e.push(a.objectProperty(r,s));var c=p();if(c||u("Unclosed object literal"),c.type===n.CURLYCLOSE)break;c.type!==n.COMMA&&u("Expected comma or closing curly brace")}return a.objectLiteral(e)}());case n.VAR:var c=r.match.split(".");return-1!==s.indexOf(c[0])&&u('Reserved keyword "'+c[0]+'" attempted to be used as a variable'),t.each(c,function(e){f(e)}),m(a.varRef(c));case n.FUNCTION:case n.FUNCTIONEMPTY:return e=r.match,-1!==s.indexOf(e)&&u('Reserved keyword "'+e+'" attempted to be used as a variable'),f(e),r.type===n.FUNCTIONEMPTY?m(a.fnCall(a.varRef([e]),[])):m(a.fnCall(a.varRef([e]),g(n.PARENCLOSE)))}return u('Unexpected token "'+r.match+'"'),null}function E(){return v()}function x(e){for(var t=E();;){var r=l();if(!r)break;if(r.type===n.FILTER||r.type===n.FILTEREMPTY)break;var o=d(r);if(!o||o.prec<e)break;p();var i=x(o.prec+1);t=a.binaryOp(o.op,t,i)}if(0===e){var s=l();if(s&&s.type===n.QMARK){p();var c,f=l();if(f&&f.type===n.COLON)p(),c=x(0),t=a.conditional(t,t,c);else{var h=x(0),y=p();y&&y.type===n.COLON||u("Expected colon in ternary expression"),c=x(0),t=a.conditional(t,h,c)}}}return t}var O=x(0);return r&&(r.pos=c),O},parseOutput:function(e){var r=this;function o(){var e=r.parse().join("");return a.output(a.legacyJS("_output += "+e+";\n"))}var i,s,c=!1;for(i=0;i<e.length;i+=1)if(e[i].type!==n.WHITESPACE){c=!0;break}if(!c)return o();if("string"==typeof r.escape)return o();var l=0,p=!1,u=!1,f=!1,h=-1;for(i=0;i<e.length;i+=1)s=e[i],0===l&&(s.type!==n.OPERATOR&&s.type!==n.LOGIC&&s.type!==n.COMPARATOR&&s.type!==n.NOT||(p=!0),s.type!==n.FILTER&&s.type!==n.FILTEREMPTY||(u=!0,h<0&&(h=i)),s.type===n.QMARK&&(f=!0)),s.type===n.PARENOPEN||s.type===n.FUNCTION||s.type===n.BRACKETOPEN||s.type===n.CURLYOPEN||s.type===n.FILTER?l+=1:s.type!==n.PARENCLOSE&&s.type!==n.BRACKETCLOSE&&s.type!==n.CURLYCLOSE||(l-=1);if(0===h)return o();try{var d=r.escape;for(i=0;i<e.length;i+=1)if((s=e[i]).type!==n.FUNCTION&&s.type!==n.FUNCTIONEMPTY||(d=!1),s.type!==n.FILTER&&s.type!==n.FILTEREMPTY||r.filters.hasOwnProperty(s.match)&&"function"==typeof r.filters[s.match]&&r.filters[s.match].safe&&(d=!1),s.type===n.PARENOPEN){for(var y=i-1;y>=0&&e[y].type===n.WHITESPACE;)y-=1;y>=0&&e[y].type===n.VAR&&(d=!1)}if(f||p&&u){var g=r.parseExpr(e),m=d?[a.filterCall("e")]:[];return a.output(g,m.length>0?m:void 0)}var v=h>=0?h:e.length,E=e.slice(0,v),x={pos:0},O=r.parseExpr(E,x),w=!1;for(i=x.pos;i<E.length;i+=1)if(E[i].type!==n.WHITESPACE){w=!0;break}if(w)return o();var C=[];if(h>=0)for(var b=h;b<e.length;){var T=e[b];if(T.type!==n.WHITESPACE)if(T.type!==n.FILTEREMPTY)if(T.type!==n.FILTER)t.throwError('Unexpected token "'+T.match+'"',r.line,r.filename);else{r.filters.hasOwnProperty(T.match)&&"function"==typeof r.filters[T.match]||t.throwError('Invalid filter "'+T.match+'"',r.line,r.filename),r.filters[T.match].safe&&(d=!1);for(var R=1,A=b+1,N=b+1;N<e.length&&R>0;){var k=e[N];if(k.type===n.PARENOPEN||k.type===n.FUNCTION||k.type===n.BRACKETOPEN||k.type===n.CURLYOPEN||k.type===n.FILTER)R+=1;else if((k.type===n.PARENCLOSE||k.type===n.BRACKETCLOSE||k.type===n.CURLYCLOSE)&&0===(R-=1))break;N+=1}0!==R&&t.throwError('Unable to parse filter "'+T.match+'"',r.line,r.filename);var P,_=[],L=A,S=1;for(P=A;P<N;P+=1){var I=e[P];I.type===n.PARENOPEN||I.type===n.FUNCTION||I.type===n.BRACKETOPEN||I.type===n.CURLYOPEN||I.type===n.FILTER?S+=1:I.type===n.PARENCLOSE||I.type===n.BRACKETCLOSE||I.type===n.CURLYCLOSE?S-=1:I.type===n.COMMA&&1===S&&(_.push(e.slice(L,P)),L=P+1)}L<N&&_.push(e.slice(L,N));var F,j=[];for(F=0;F<_.length;F+=1){var U,M=_[F],Y=!1;for(U=0;U<M.length;U+=1)if(M[U].type!==n.WHITESPACE){Y=!0;break}Y&&j.push(r.parseExpr(M))}C.push(a.filterCall(T.match,j)),b=N+1}else r.filters.hasOwnProperty(T.match)&&"function"==typeof r.filters[T.match]||t.throwError('Invalid filter "'+T.match+'"',r.line,r.filename),r.filters[T.match].safe&&(d=!1),C.push(a.filterCall(T.match)),b+=1;else b+=1}return d&&C.push(a.filterCall("e")),a.output(O,C.length>0?C:void 0)}catch(e){if(f)throw e;return o()}},checkMatch:function(e){var r=e[0],n=e.join(".");function o(n){var o=n+r,a=e,i="";return i="(typeof "+o+' !== "undefined" && '+o+" !== null",t.each(a,function(e,t){0!==t&&(i+=" && "+o+"."+e+" !== undefined && "+o+"."+e+" !== null",o+="."+e)}),i+=")"}return"("+o("_ctx.")+" ? _ctx."+n+" : ("+o("")+" ? "+n+' : ""))'}},e.TokenParser=l}}),w=t({"lib/parser.js"(e){var t=n(),r=x(),o=r.types,a=O().TokenParser;function i(e){return e.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}e.parse=function(n,s,c,l,p){s=s.replace(/\r\n/g,"\n");var u,f=c.autoescape,h=c.tagControls[0],d=c.tagControls[1],y=c.varControls[0],g=c.varControls[1],m=i(h),v=i(d),E=i(y),x=i(g),O=new RegExp("^"+m+"-?\\s*|\\s*-?"+v+"$","g"),w=new RegExp("^"+m+"-"),C=new RegExp("-"+v+"$"),b=new RegExp("^"+E+"-?\\s*|\\s*-?"+x+"$","g"),T=new RegExp("^"+E+"-"),R=new RegExp("-"+x+"$"),A=c.cmtControls[0],N=c.cmtControls[1],k="[\\s\\S]*?",P=new RegExp("("+m+k+v+"|"+E+k+x+"|"+i(A)+k+i(N)+")"),_=1,L=[],S=null,I=[],F={},j=!1;function U(e,n){var o,i,s=r.read(t.strip(e));return i=(o=new a(s,p,f,n,c.filename)).parseOutput(s),o.state.length&&t.throwError('Unable to parse "'+e+'"',n,c.filename),i}function M(e){return"string"==typeof e&&(e=e.replace(/\s*$/,"")),e}return e.parseVariable=U,t.each(s.split(P),function(e){var i,s,m,v,E;if(e){if(!j&&t.startsWith(e,y)&&t.endsWith(e,g))m=T.test(e),u=R.test(e),i=U(e.replace(b,""),_);else if(t.startsWith(e,h)&&t.endsWith(e,d))m=w.test(e),u=C.test(e),(i=function(e,i){var s,u,h,d,y,g,m;if(t.startsWith(e,"end")){if((m=L[L.length-1])&&m.name===e.split(/\s+/)[0].replace(/^end/,"")&&m.ends){switch(m.name){case"autoescape":f=c.autoescape;break;case"raw":j=!1}return void L.pop()}j||t.throwError('Unexpected end of tag "'+e.replace(/^end/,"")+'"',i,c.filename)}if(!j){switch(d=(h=e.split(/\s+(.+)?/)).shift(),l.hasOwnProperty(d)||t.throwError('Unexpected tag "'+e+'"',i,c.filename),s=r.read(t.strip(h.join(" "))),u=new a(s,p,!1,i,c.filename),(y=l[d]).parse(h[1],i,u,o,L,c,n)||t.throwError('Unexpected tag "'+d+'"',i,c.filename),u.parse(),g=u.out,d){case"autoescape":f="false"!==g[0]&&g[0];break;case"raw":j=!0}var v;return"function"==typeof y.lowerExpr&&(v=y.lowerExpr(u,s,h[1],i)),{block:!!l[d].block,compile:y.compile,args:g,content:[],ends:y.ends,name:d,irExpr:v}}}(e.replace(O,""),_))&&("extends"===i.name?S=i.args.join("").replace(/^\'|\'$/g,"").replace(/^\"|\"$/g,""):i.block&&!L.length&&(F[i.args.join("")]=i)),j&&!i&&(i=e);else if(j||!t.startsWith(e,A)&&!t.endsWith(e,N))i=u?e.replace(/^\s*/,""):e,u=!1;else if(t.startsWith(e,A)&&t.endsWith(e,N))return;m&&I.length&&("string"==typeof(v=I.pop())?v=M(v):v.content&&v.content.length&&(E=M(v.content.pop()),v.content.push(E)),I.push(v)),i&&(L.length?L[L.length-1].content.push(i):I.push(i),i.name&&i.ends&&L.push(i),s=e.match(/\n/g),_+=s?s.length:0)}}),{name:c.filename,parent:S,tokens:I,blocks:F}},e.compile=E().compile}}),C=t({"lib/tags/import.js"(e){var t=n(),r=o(),a=E(),i=m().dangerousProps;e.compile=function(e,n,o,a,i){if(i&&"async"===i.codegenMode){var s=n[n.length-1],c=n[0].path;return r.importDeferred(r.literal("string",c),s,i.filename||"")}var l=n.pop(),p=[],u=[];t.each(n,function(e){(e.isImport?u:p).push(e)});var f=t.map(p,function(e){return e.name}).join("|"),h="_ctx."+l+' = {};\n var _output = "";\n',d=t.map(p,function(e){return{ex:new RegExp("_ctx."+e.name+"(\\W)(?!"+f+")","g"),re:"_ctx."+l+"."+e.name+"$1"}}),y=[];return t.each(u,function(e){t.each(e.boundNames,function(e){y.push({ex:new RegExp("_ctx\\."+e+"(\\W)","g"),re:"_ctx."+l+"."+e+"$1"})})}),t.each(u,function(e){var r=e.compiled;t.each(y,function(e){r=r.replace(e.ex,e.re)}),h+=r}),t.each(p,function(e){var r=e.compiled;t.each(d,function(e){r=r.replace(e.ex,e.re)}),t.each(y,function(e){r=r.replace(e.ex,e.re)}),h+=r}),h},e.parse=function(e,r,n,o,s,c,l){var p,u,f=w().compile,h={resolveFrom:c.filename},d=t.extend({},c,h),y=!(!c||"async"!==c.codegenMode);return n.on(o.STRING,function(e){var n=this;if(void 0!==p)throw new Error("Unexpected string "+e.match+" on line "+r+".");if(p=e.match.replace(/^("|')|("|')$/g,""),y)n.out.push({path:p});else{var o=l.parseFile(p,h).tokens;t.each(o,function(e){var t,r="";e&&e.compile&&("import"!==e.name?"macro"===e.name&&(t=e.args[0],r+=a.compile([e.compile(f,e.args,e.content,[],d)],[],d)+"\n",n.out.push({compiled:r,name:t})):n.out.push({compiled:e.compile(f,e.args.slice(),e.content,[],d)+"\n",isImport:!0,boundNames:[e.args[e.args.length-1]]}))})}}),n.on(o.VAR,function(e){if(void 0===p||u)throw new Error('Unexpected variable "'+e.match+'" on line '+r+".");if("as"!==e.match){if(-1!==i.indexOf(e.match))throw new Error('Unsafe import alias "'+e.match+'" is not allowed (CVE-2023-25345) on line '+r+".");return u=e.match,this.out.push(u),!1}}),!0},e.block=!0}}),b=t({"lib/tags/include.js"(e){var t=o(),r=c(),n="ignore",a="missing",i="only";e.compile=function(e,r,n,o,s,c,l){var p=r.shift(),u=r.indexOf(i),f=-1!==u&&r.splice(u,1),h=(r.pop()||"").replace(/\\/g,"\\\\"),d=r[r.length-1]===a&&r.pop(),y=r.join("");return l&&l.irExpr&&(p=l.irExpr.file,y=void 0!==l.irExpr.context?l.irExpr.context:void 0),s&&"async"===s.codegenMode?t.includeDeferred(p,y||void 0,!!f,!!d,h):t.include(p,y||void 0,!!f,!!d,h)},e.lowerExpr=function(e,t){var o,a,s=0,c=-1,l=-1,p=-1;for(o=0;o<t.length;o++){if((a=t[o]).type===r.FILTER||a.type===r.FILTEREMPTY)return;a.type!==r.PARENOPEN&&a.type!==r.BRACKETOPEN&&a.type!==r.ARRAYOPEN&&a.type!==r.CURLYOPEN&&a.type!==r.FUNCTION&&a.type!==r.METHODOPEN?a.type!==r.PARENCLOSE&&a.type!==r.BRACKETCLOSE&&a.type!==r.CURLYCLOSE?0===s&&a.type===r.VAR&&(-1===c&&"with"===a.match?c=o:-1!==c&&-1===l&&a.match===i?l=o:-1===p&&a.match===n&&(p=o)):s--:s++}var u=t.length;-1!==c?u=c:-1!==p&&(u=p);var f=t.slice(0,u);if(0!==f.length){var h={file:e.parseExpr(f)};if(-1!==c){var d=t.length;-1!==l?d=l:-1!==p&&(d=p);var y=t.slice(c+1,d);y.length>0&&(h.context=e.parseExpr(y))}return h}},e.parse=function(e,t,r,o,s,c){var l,p;return r.on(o.STRING,function(e){return!!l||(l=e.match,void this.out.push(l))}),r.on(o.VAR,function(e){if(!l)return l=e.match,!0;if(p||"with"!==e.match){if(!p||e.match!==i||"with"===this.prevToken.match){if(e.match===n)return!1;if(e.match===a){if(this.prevToken.match!==n)throw new Error('Unexpected token "'+a+'" on line '+t+".");return this.out.push(e.match),!1}if(this.prevToken.match===n)throw new Error('Expected "'+a+'" on line '+t+' but found "'+e.match+'".');return!0}this.out.push(e.match)}else p=!0}),r.on("end",function(){this.out.push(c.filename||null)}),!0}}}),T=t({"lib/tags/macro.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){var s=r.shift();return t.macro(s,r,[t.legacyJS(e(n,o,a,i))])};var r=m().dangerousProps;e.parse=function(e,t,n,o){var a;return n.on(o.VAR,function(e){if(-1!==e.match.indexOf("."))throw new Error('Unexpected dot in macro argument "'+e.match+'" on line '+t+".");if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");return a=e.match,void this.out.push(a)}if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro argument "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");this.out.push({name:e.match})}),n.on(o.FUNCTION,function(e){if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");a=e.match,this.out.push(a),this.state.push(o.FUNCTION)}}),n.on(o.FUNCTIONEMPTY,function(e){if(!a){if(-1!==r.indexOf(e.match))throw new Error('Unsafe macro name "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");a=e.match,this.out.push(a)}}),n.on(o.PARENCLOSE,function(){if(!this.isLast)throw new Error("Unexpected parenthesis close on line "+t+".")}),n.on(o.COMMA,function(){}),n.on("*",function(){}),!0},e.ends=!0,e.block=!0}}),R=t({"lib/tags/parent.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){if(!o||!o.length)return"";for(var s,c,l=r[0],p=o.length,u=0;u<p;u+=1)if((s=o[u]).blocks&&s.blocks.hasOwnProperty(i)&&l!==s.name){var f=(c=s.blocks[i]).compile(e,[i],c.content,o.slice(u+1),a);return t.parent(f&&f.body?f.body.concat([t.legacyJS("\n")]):[t.legacyJS("\n")])}},e.parse=function(e,t,r,n,o,a){return r.on("*",function(e){throw new Error('Unexpected argument "'+e.match+'" on line '+t+".")}),r.on("end",function(){this.out.push(a.filename)}),!0}}}),A=t({"lib/tags/raw.js"(e){var t=o();e.compile=function(e,r,n,o,a,i){var s,c=[];for(s=0;s<n.length;s++)"string"==typeof n[s]?c.push(t.raw(n[s])):c.push(t.legacyJS(e([n[s]],o,a,i)));return c},e.parse=function(e,t,r){return r.on("*",function(e){throw new Error('Unexpected token "'+e.match+'" in raw tag on line '+t+".")}),!0},e.ends=!0}}),N=t({"lib/tags/set.js"(e){var t=o(),r=c(),n=/^_ctx\.([a-zA-Z_$][\w$]*)((?:\.[a-zA-Z_$][\w$]*)*)$/;e.compile=function(e,r,o,a,i,s,c){var l=r[0],p="string"==typeof l&&n.exec(l);if(p){var u=[p[1]];if(p[2])for(var f=p[2].split("."),h=1;h<f.length;h++)u.push(f[h]);l=t.varRef(u)}var d=c&&c.irExpr?c.irExpr:r.slice(2).join(" ");return t.set(l,r[1],d)};var a=m().dangerousProps;e.lowerExpr=function(e,t){var n,o=-1;for(n=0;n<t.length;n++)if(t[n].type===r.ASSIGNMENT){o=n;break}if(-1!==o){var a=t.slice(o+1);for(n=0;n<a.length;n++)if(a[n].type===r.FILTER||a[n].type===r.FILTEREMPTY||a[n].type===r.ASSIGNMENT)return;return e.parseExpr(a)}},e.parse=function(e,t,r,n){var o,i="";return r.on(n.VAR,function(e){if(o)o+="_ctx."+e.match;else{if(r.out.length)return!0;for(var n=e.match.split("."),s=0;s<n.length;s++)if(-1!==a.indexOf(n[s]))throw new Error('Unsafe assignment to "'+n[s]+'" is not allowed (CVE-2023-25345) on line '+t+".");i+=e.match}}),r.on(n.BRACKETOPEN,function(e){if(o||this.out.length)return!0;o=e.match}),r.on(n.STRING,function(e){if(!o||this.out.length)return!0;var r=e.match.replace(/^['"]|['"]$/g,"");if(-1!==a.indexOf(r))throw new Error('Unsafe assignment to "'+r+'" via bracket notation is not allowed (CVE-2023-25345) on line '+t+".");o+=e.match}),r.on(n.BRACKETCLOSE,function(e){return!(o&&!this.out.length)||(i+=o+e.match,void(o=void 0))}),r.on(n.DOTKEY,function(e){if(!o&&!i)return!0;if(-1!==a.indexOf(e.match))throw new Error('Unsafe assignment to "'+e.match+'" is not allowed (CVE-2023-25345) on line '+t+".");i+="."+e.match}),r.on(n.ASSIGNMENT,function(e){if(this.out.length||!i)throw new Error('Unexpected assignment "'+e.match+'" on line '+t+".");this.out.push("_ctx."+i),this.out.push(e.match),this.filterApplyIdx.push(this.out.length)}),!0},e.block=!0}}),k=t({"lib/tags/spaceless.js"(e){n();e.compile=function(e,t,r,n,o,a){var i=e(r,n,o,a);return i+='_output = _output.replace(/^\\s+/, "")\n .replace(/>\\s+</g, "><")\n .replace(/\\s+$/, "");\n'},e.parse=function(e,t,r){return r.on("*",function(e){throw new Error('Unexpected token "'+e.match+'" on line '+t+".")}),!0},e.ends=!0}}),P=t({"lib/tags/index.js"(e){e.autoescape=a(),e.block=i(),e.else=s(),e.elseif=p(),e.elif=e.elseif,e.extends=u(),e.filter=g(),e.for=v(),e.if=l(),e.import=C(),e.include=b(),e.macro=T(),e.parent=R(),e.raw=A(),e.set=N(),e.spaceless=k()}}),_=t({"browser/stubs/fs.js"(e,t){t.exports={}}}),L=t({"node_modules/path-browserify/index.js"(e,t){"use strict";function r(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var r,n="",o=0,a=-1,i=0,s=0;s<=e.length;++s){if(s<e.length)r=e.charCodeAt(s);else{if(47===r)break;r=47}if(47===r){if(a===s-1||1===i);else if(a!==s-1&&2===i){if(n.length<2||2!==o||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var c=n.lastIndexOf("/");if(c!==n.length-1){-1===c?(n="",o=0):o=(n=n.slice(0,c)).length-1-n.lastIndexOf("/"),a=s,i=0;continue}}else if(2===n.length||1===n.length){n="",o=0,a=s,i=0;continue}t&&(n.length>0?n+="/..":n="..",o=2)}else n.length>0?n+="/"+e.slice(a+1,s):n=e.slice(a+1,s),o=s-a-1;a=s,i=0}else 46===r&&-1!==i?++i:i=-1}return n}var o={resolve:function(){for(var e,t="",o=!1,a=arguments.length-1;a>=-1&&!o;a--){var i;a>=0?i=arguments[a]:(void 0===e&&(e=process.cwd()),i=e),r(i),0!==i.length&&(t=i+"/"+t,o=47===i.charCodeAt(0))}return t=n(t,!o),o?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),o=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!t)).length||t||(e="."),e.length>0&&o&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t<arguments.length;++t){var n=arguments[t];r(n),n.length>0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":o.normalize(e)},relative:function(e,t){if(r(e),r(t),e===t)return"";if((e=o.resolve(e))===(t=o.resolve(t)))return"";for(var n=1;n<e.length&&47===e.charCodeAt(n);++n);for(var a=e.length,i=a-n,s=1;s<t.length&&47===t.charCodeAt(s);++s);for(var c=t.length-s,l=i<c?i:c,p=-1,u=0;u<=l;++u){if(u===l){if(c>l){if(47===t.charCodeAt(s+u))return t.slice(s+u+1);if(0===u)return t.slice(s+u)}else i>l&&(47===e.charCodeAt(n+u)?p=u:0===u&&(p=0));break}var f=e.charCodeAt(n+u);if(f!==t.charCodeAt(s+u))break;47===f&&(p=u)}var h="";for(u=n+p+1;u<=a;++u)u!==a&&47!==e.charCodeAt(u)||(0===h.length?h+="..":h+="/..");return h.length>0?h+t.slice(s+p):(s+=p,47===t.charCodeAt(s)&&++s,t.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,o=-1,a=!0,i=e.length-1;i>=1;--i)if(47===(t=e.charCodeAt(i))){if(!a){o=i;break}}else a=!1;return-1===o?n?"/":".":n&&1===o?"//":e.slice(0,o)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');r(e);var n,o=0,a=-1,i=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,c=-1;for(n=e.length-1;n>=0;--n){var l=e.charCodeAt(n);if(47===l){if(!i){o=n+1;break}}else-1===c&&(i=!1,c=n+1),s>=0&&(l===t.charCodeAt(s)?-1===--s&&(a=n):(s=-1,a=c))}return o===a?a=c:-1===a&&(a=e.length),e.slice(o,a)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){o=n+1;break}}else-1===a&&(i=!1,a=n+1);return-1===a?"":e.slice(o,a)},extname:function(e){r(e);for(var t=-1,n=0,o=-1,a=!0,i=0,s=e.length-1;s>=0;--s){var c=e.charCodeAt(s);if(47!==c)-1===o&&(a=!1,o=s+1),46===c?-1===t?t=s:1!==i&&(i=1):-1!==t&&(i=-1);else if(!a){n=s+1;break}}return-1===t||-1===o||0===i||1===i&&t===o-1&&t===n+1?"":e.slice(t,o)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var r=t.dir||t.root,n=t.base||(t.name||"")+(t.ext||"");return r?r===t.root?r+n:r+e+n:n}("/",e)},parse:function(e){r(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,o=e.charCodeAt(0),a=47===o;a?(t.root="/",n=1):n=0;for(var i=-1,s=0,c=-1,l=!0,p=e.length-1,u=0;p>=n;--p)if(47!==(o=e.charCodeAt(p)))-1===c&&(l=!1,c=p+1),46===o?-1===i?i=p:1!==u&&(u=1):-1!==i&&(u=-1);else if(!l){s=p+1;break}return-1===i||-1===c||0===u||1===u&&i===c-1&&i===s+1?-1!==c&&(t.base=t.name=0===s&&a?e.slice(1,c):e.slice(s,c)):(0===s&&a?(t.name=e.slice(1,i),t.base=e.slice(1,c)):(t.name=e.slice(s,i),t.base=e.slice(s,c)),t.ext=e.slice(i,c)),s>0?t.dir=e.slice(0,s-1):a&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,t.exports=o}}),S=t({"packages/swig-core/lib/loaders/filesystem.js"(e,t){var r=_(),n=L();t.exports=function(e,t){var o={};return t=t||"utf8",e=e?n.normalize(e):null,o.resolve=function(t,r){return r=e||(r?n.dirname(r):process.cwd()),n.resolve(r,t)},o.load=function(e,n){if(!r||n&&!r.readFile||!r.readFileSync)throw new Error("Unable to find file "+e+" because there is no filesystem to read from.");if(e=o.resolve(e),!n)return r.readFileSync(e,t);r.readFile(e,t,n)},o}}}),I=t({"packages/swig-core/lib/loaders/memory.js"(e,t){var n=L(),o=r();t.exports=function(e,t){var r={};return t=t?n.normalize(t):null,r.resolve=function(e,r){return r=t||(r?n.dirname(r):"/"),n.resolve(r,e)},r.load=function(t,r){var n,a;if(a=[t,t.replace(/^(\/|\\)/,"")],(n=e[a[0]]||e[a[1]])||o.throwError('Unable to find template "'+t+'".'),!r)return n;r(null,n)},r}}}),F=t({"packages/swig-core/lib/loaders/index.js"(e){e.fs=S(),e.memory=I()}}),j=t({"lib/loaders/index.js"(e,t){t.exports=F()}}),U=t({"lib/async/pre-walker.js"(e){var t=n();function r(e){return e.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g,"\\$&")}function o(e,t,r){var n=e.substr(t.length,e.length-t.length-r.length);return"-"===n.charAt(0)&&(n=n.substr(1)),"-"===n.charAt(n.length-1)&&(n=n.substr(0,n.length-1)),n.replace(/^\s+|\s+$/g,"")}e.scan=function(e,n){e=e.replace(/\r\n/g,"\n");var a,i,s,c,l,p=function(e){var t="[\\s\\S]*?",n=r(e.varControls[0]),o=r(e.varControls[1]),a=r(e.tagControls[0]),i=r(e.tagControls[1]),s=r(e.cmtControls[0]),c=r(e.cmtControls[1]);return new RegExp("("+a+t+i+"|"+n+t+o+"|"+s+t+c+")")}(n),u=n.tagControls[0],f=n.tagControls[1],h=n.rawTag,d="end"+h,y=new RegExp("^("+n.keywords.join("|")+")\\s+[\"\\']([^\"\\']+)[\"\\']"),g=e.split(p),m=[],v=!1;for(a=0;a<g.length;a+=1)"string"==typeof(i=g[a])&&i&&t.startsWith(i,u)&&t.endsWith(i,f)&&((c=(s=o(i,u,f)).split(/\s+/)[0])!==h?c!==d?v||(l=y.exec(s))&&m.push({kind:l[1],path:l[2]}):v=!1:v=!0);return m},e.walk=function(t,r,n){var o={},a={};return new Promise(function(i,s){var c=0,l=[],p=!1;function u(e){o.hasOwnProperty(e)||a[e]||(a[e]=!0,l.push(e))}function f(){for(;l.length>0&&!p;){var e=l.shift();c+=1,h(e)}0!==c||p||0!==l.length||i(o)}function h(t){r.load(t,function(a,i){if(!p){if(a)return p=!0,void s(a);if("string"!=typeof i)return p=!0,void s(new Error('Async loader returned non-string source for "'+t+'"'));var l,h,d;o[t]=i;try{l=e.scan(i,n)}catch(e){return p=!0,void s(e)}for(h=0;h<l.length;h+=1){try{d=r.resolve(l[h].path,t)}catch(e){return p=!0,void s(e)}u(d)}c-=1,f()}})}u(t),f()})},e.makeMemoryWrapper=function(e,t){return{resolve:function(t,r){return e.resolve(t,r)},load:function(e,r){var n=t[e];if("string"!=typeof n){var o=new Error('Pre-walked map missing path: "'+e+'"');if(r)return void r(o);throw o}if(!r)return n;r(null,n)}}}}}),M=t({"packages/swig-core/lib/cache.js"(e){e.shouldCache=function(e,t){return(e=e||{}).hasOwnProperty("cache")&&!e.cache||!t},e.cacheGet=function(t,r,n,o){if(!e.shouldCache(r,n))return"memory"===n?o[t]:n.get(t)},e.cacheSet=function(t,r,n,o,a){e.shouldCache(r,o)||("memory"!==o?o.set(t,n):a[t]=n)}}}),Y=t({"packages/swig-core/lib/engine.js"(e){var t=r(),n=o(),a=E(),i=M(),s=Object.getPrototypeOf(async function(){}).constructor;function c(){return""}function l(e,r){var o={},i=[];return t.each(e.blocks,function(e){var s=e.args?e.args.slice(0):[],c=e.content?e.content.slice(0):[];if("block"!==e.name){var l=e.compile(a.compile,s,c,[],r,void 0,e);null!=l&&""!==l&&("string"!=typeof l?t.isArray(l)?t.each(l,function(e){i.push(e)}):"object"==typeof l&&"string"==typeof l.type&&i.push(l):i.push(n.legacyJS(l)))}else{var p=s.join(""),u=e.compile(a.compile,s,c,[],r,p,e);u&&"object"==typeof u&&"string"==typeof u.type&&(o[p]=u)}}),n.extendsDeferred(n.literal("string",e.parent),o,i,r.filename||"")}e.remapBlocks=function e(r,n){return t.map(n,function(t){var n=t.args?t.args.join(""):"";return"block"===t.name&&r[n]&&(t=r[n]),t.content&&t.content.length&&(t.content=e(r,t.content)),t})},e.importNonBlocks=function(e,r){var n=[];t.each(e,function(e){n.push(e)}),t.each(n.reverse(),function(e){"block"!==e.name&&r.unshift(e)})},e.getParents=function(r,n,o){for(var a,i,s,c=r.parent,l=[],p=[];c;){if(!n||!n.filename)throw new Error('Cannot extend "'+c+'" because current template has no filename.');if(a=a||n.filename,a=o.resolve(c,a),c=(i=o.cacheGet(a,n)||o.parseFile(a,t.extend({},n,{filename:a}))).parent,-1!==l.indexOf(a))throw new Error('Illegal circular extends of "'+a+'".');l.push(a),p.push(i)}for(s=p.length,s=p.length-2;s>=0;s-=1)p[s].tokens=e.remapBlocks(p[s].blocks,p[s+1].tokens),e.importNonBlocks(p[s].blocks,p[s].tokens);return p},e.buildTemplateFunction=function(e,t,r){if(r&&"async"===r.codegenMode){var n=' var _ext = _swig.extensions,\n _output = "",\n _exports = {};\n'+a.compile(e,t,r)+"\n return { output: _output, exports: _exports };\n";return new s("_swig","_ctx","_filters","_utils","_fn","_blocks",n)}var o=' var _ext = _swig.extensions,\n _output = "";\n'+a.compile(e,t,r)+"\n return _output;\n";return new Function("_swig","_ctx","_filters","_utils","_fn",o)},e.install=function(r,n){var o=n.parser,a=t.extend({},n.tags),s=t.extend({},n.filters),p=n.validateOptions,u=n.onCompileError;function f(e){return e&&e.locals?t.extend({},r.options.locals,e.locals):r.options.locals}function h(e,t){return i.cacheGet(e,t,r.options.cache,r.cache)}function d(e,t,n){i.cacheSet(e,t,n,r.options.cache,r.cache)}r.invalidateCache=function(){"memory"===r.options.cache&&(r.cache={})},r.setFilter=function(e,t){if("function"!=typeof t)throw new Error('Filter "'+e+'" is not a valid function.');s[e]=t},r.setTag=function(e,t,r,n,o){if("function"!=typeof t)throw new Error('Tag "'+e+'" parse method is not a valid function.');if("function"!=typeof r)throw new Error('Tag "'+e+'" compile method is not a valid function.');a[e]={parse:t,compile:r,ends:n||!1,block:!!o}},r.setExtension=function(e,t){r.extensions[e]=t},r.parse=function(e,n){p(n);var i,c=f(n),l={};for(i in n)n.hasOwnProperty(i)&&"locals"!==i&&(l[i]=n[i]);return(n=t.extend({},r.options,l)).locals=c,o.parse(r,e,n,a,s)},r.parseFile=function(e,n){var o;return n||(n={}),e=r.options.loader.resolve(e,n.resolveFrom),o=r.options.loader.load(e),n.filename||(n=t.extend({filename:e},n)),r.parse(o,n)},r.precompile=function(t,n){var o,a,i=r.parse(t,n);n&&"async"===n.codegenMode&&i.parent?(o=[],i.tokens=[l(i,n)]):(o=function(t,n){return e.getParents(t,n,{resolve:function(e,t){return r.options.loader.resolve(e,t)},parseFile:r.parseFile,cacheGet:h})}(i,n),o.length&&(i.tokens=e.remapBlocks(i.blocks,o[0].tokens),e.importNonBlocks(i.blocks,i.tokens)));try{a=e.buildTemplateFunction(i,o,n)}catch(e){u(e,n)}return{tpl:a,tokens:i}},r.compile=function(e,n){var o,a,i,l=n?n.filename:null,p=l?h(l,n):null;if(p)return p;function u(e,n){var l;return l=e&&a?t.extend({},o,e):e&&!a?e:!e&&a?o:{},i.tpl(r,l,s,t,c,n)}return o=f(n),a=t.keys(o).length,i=r.precompile(e,n),t.extend(u,i.tokens),l&&d(l,n,u),u},r.compileFile=function(e,n,o){var a,i;return n||(n={}),e=r.options.loader.resolve(e,n.resolveFrom),n.filename||(n=t.extend({filename:e},n)),(i=h(e,n))?o?void o(null,i):i:o?void r.options.loader.load(e,function(e,t){if(e)o(e);else{var a;try{a=r.compile(t,n)}catch(e){return void o(e)}o(e,a)}}):(a=r.options.loader.load(e),r.compile(a,n))},r.getTemplate=function(e,n){var o;n=n||{};try{o=r.options.loader.resolve(e,n.resolveFrom)}catch(e){return Promise.reject(e)}var a=t.extend({},n,{filename:n.filename||o,codegenMode:"async",cache:!1});return new Promise(function(e,t){function n(n,o){if(n)t(n);else{var i;try{i=r.compile(o,a)}catch(e){return void t(e)}e(i)}}if(r.options.loader.load.length>=2)try{r.options.loader.load(o,n)}catch(e){n(e)}else{var i;try{i=r.options.loader.load(o)}catch(e){return void n(e)}n(null,i)}})},r.render=function(e,t){return r.compile(e,t)()},r.renderFile=function(e,t,n){return n?r.options.loader&&!0===r.options.loader.async?void r.getTemplate(e).then(function(e){return e(t)}).then(function(e){n(null,e.output)}).catch(n):void r.compileFile(e,{},function(e,r){var o;if(e)n(e);else{try{o=r(t)}catch(e){return void n(e)}n(null,o)}}):r.compileFile(e)(t)},r.run=function(e,n,o){var a=f({locals:n});return o&&d(o,{},e),e(r,a,s,t,c)}}}}),D=t({"lib/swig.js"(e){var t=n(),r=P(),o=y(),a=w(),i=h(),s=j(),c=U(),l=Y();e.version="2.5.1";var p,u={autoescape:!0,varControls:["{{","}}"],tagControls:["{%","%}"],cmtControls:["{#","#}"],locals:{},cache:"memory",loader:s.fs()};function f(e){if(e){if(t.each(["varControls","tagControls","cmtControls"],function(r){if(e.hasOwnProperty(r)){if(!t.isArray(e[r])||2!==e[r].length)throw new Error('Option "'+r+'" must be an array containing 2 different control strings.');if(e[r][0]===e[r][1])throw new Error('Option "'+r+'" open and close controls must not be the same.');t.each(e[r],function(e,t){if(e.length<2)throw new Error('Option "'+r+'" '+(t?"open ":"close ")+'control must be at least 2 characters. Saw "'+e+'" instead.')})}}),e.hasOwnProperty("cache")&&e.cache&&"memory"!==e.cache&&(!e.cache.get||!e.cache.set))throw new Error("Invalid cache option "+JSON.stringify(e.cache)+' found. Expected "memory" or { get: function (key) { ... }, set: function (key, value) { ... } }.');if(e.hasOwnProperty("loader")&&e.loader&&(!e.loader.load||!e.loader.resolve))throw new Error("Invalid loader option "+JSON.stringify(e.loader)+" found. Expected { load: function (pathname, cb) { ... }, resolve: function (to, from) { ... } }.")}}e.setDefaults=function(e){f(e),p.options=t.extend(p.options,e)},e.setDefaultTZOffset=function(e){i.tzOffset=e},e.Swig=function(e){f(e),this.options=t.extend({},u,e||{}),this.cache={},this.extensions={},l.install(this,{parser:a,tags:r,filters:o,validateOptions:f,onCompileError:function(e,r){t.throwError(e,null,r.filename)}});var n=this;function i(){return{varControls:n.options.varControls,tagControls:n.options.tagControls,cmtControls:n.options.cmtControls,rawTag:"raw",keywords:["extends","include","import"]}}this.renderFileAsync=function(e,t,r){"function"==typeof t&&(r=t,t=void 0);var o,a=n.options.loader;try{o=a.resolve(e)}catch(e){return void r(e)}c.walk(o,a,i()).then(function(e){var i,s,l=c.makeMemoryWrapper(a,e),p=n.options.loader;n.options.loader=l;try{i=n.renderFile(o,t)}catch(e){s=e}n.options.loader=p,s?r(s):r(null,i)},function(e){r(e)})},this.compileFileAsync=function(e,t,r){"function"==typeof t&&(r=t,t={});var o,a=n.options.loader;try{o=a.resolve(e)}catch(e){return void r(e)}c.walk(o,a,i()).then(function(e){var i,s,l=c.makeMemoryWrapper(a,e),p=n.options.loader;n.options.loader=l;try{i=n.compileFile(o,t)}catch(e){s=e}if(n.options.loader=p,s)r(s);else{r(null,function(e){var t=n.options.loader;n.options.loader=l;try{var r=i(e);return n.options.loader=t,r}catch(e){throw n.options.loader=t,e}})}},function(e){r(e)})}},p=new e.Swig,e.setFilter=p.setFilter,e.setTag=p.setTag,e.setExtension=p.setExtension,e.parseFile=p.parseFile,e.precompile=p.precompile,e.compile=p.compile,e.compileFile=p.compileFile,e.compileFileAsync=p.compileFileAsync,e.render=p.render,e.renderFile=p.renderFile,e.renderFileAsync=p.renderFileAsync,e.run=p.run,e.invalidateCache=p.invalidateCache,e.loaders=s}})();"function"==typeof window.define&&"object"==typeof window.define.amd?window.define("swig",[],function(){return D}):window.swig=D})();
4
4
  /*!
5
5
  * Attach `loc` to the node if provided, skipping the assignment otherwise
6
6
  * so consumers can tell "no source location available" from
@@ -0,0 +1,32 @@
1
+ var globals = require('globals');
2
+
3
+ module.exports = [
4
+ {
5
+ // ESLint 9 flat config defaults reportUnusedDisableDirectives to "warn";
6
+ // ESLint 8 eslintrc defaulted it to off. Preserve the prior behavior.
7
+ linterOptions: {
8
+ reportUnusedDisableDirectives: 'off'
9
+ },
10
+ languageOptions: {
11
+ ecmaVersion: 2017,
12
+ sourceType: 'commonjs',
13
+ globals: Object.assign(
14
+ {},
15
+ globals.node,
16
+ globals.mocha,
17
+ { Promise: 'readonly' }
18
+ )
19
+ },
20
+ rules: {
21
+ 'max-len': ['error', { code: 600 }],
22
+ 'semi': ['error', 'always'],
23
+ 'no-eval': 'off',
24
+ 'no-new-func': 'off',
25
+ 'strict': 'off',
26
+ 'eqeqeq': 'off',
27
+ 'no-trailing-spaces': 'error',
28
+ 'no-undef': 'error',
29
+ 'no-redeclare': 'error'
30
+ }
31
+ }
32
+ ];
package/lib/swig.js CHANGED
@@ -14,7 +14,7 @@ var utils = require('./utils'),
14
14
  *
15
15
  * @type {String}
16
16
  */
17
- exports.version = "2.5.0";
17
+ exports.version = "2.5.1";
18
18
 
19
19
  /**
20
20
  * Swig Options Object. This object can be passed to many of the API-level Swig methods to control various aspects of the engine. All keys are optional.
@@ -336,17 +336,193 @@ exports.Swig = function (opts) {
336
336
  * Export methods publicly
337
337
  */
338
338
  defaultInstance = new exports.Swig();
339
+ /**
340
+ * Add a custom filter for swig variables.
341
+ *
342
+ * @example
343
+ * function replaceMs(input) { return input.replace(/m/g, 'f'); }
344
+ * swig.setFilter('replaceMs', replaceMs);
345
+ * // => {{ "onomatopoeia"|replaceMs }}
346
+ * // => onofatopeia
347
+ *
348
+ * @param {string} name Name of filter, used in templates. <strong>Will</strong> overwrite previously defined filters, if using the same name.
349
+ * @param {function} method Function that acts against the input. See <a href="/docs/filters/#custom">Custom Filters</a> for more information.
350
+ * @return {undefined}
351
+ */
339
352
  exports.setFilter = defaultInstance.setFilter;
353
+ /**
354
+ * Add a custom tag. To expose your own extensions to compiled template code, see <code data-language="js">swig.setExtension</code>.
355
+ *
356
+ * For a more in-depth explanation of writing custom tags, see <a href="../extending/#tags">Custom Tags</a>.
357
+ *
358
+ * @example
359
+ * var tacotag = require('./tacotag');
360
+ * swig.setTag('tacos', tacotag.parse, tacotag.compile, tacotag.ends, tacotag.blockLevel);
361
+ * // => {% tacos %}Make this be tacos.{% endtacos %}
362
+ * // => Tacos tacos tacos tacos.
363
+ *
364
+ * @param {string} name Tag name.
365
+ * @param {function} parse Method for parsing tokens.
366
+ * @param {function} compile Method for compiling renderable output.
367
+ * @param {boolean} [ends=false] Whether or not this tag requires an <i>end</i> tag.
368
+ * @param {boolean} [blockLevel=false] If false, this tag will not be compiled outside of <code>block</code> tags when extending a parent template.
369
+ * @return {undefined}
370
+ */
340
371
  exports.setTag = defaultInstance.setTag;
372
+ /**
373
+ * Add extensions for custom tags. This allows any custom tag to access a globally available methods via a special globally available object, <var>_ext</var>, in templates.
374
+ *
375
+ * @example
376
+ * swig.setExtension('trans', function (v) { return translate(v); });
377
+ * function compileTrans(compiler, args, content, parent, options) {
378
+ * return '_output += _ext.trans(' + args[0] + ');'
379
+ * };
380
+ * swig.setTag('trans', parseTrans, compileTrans, true);
381
+ *
382
+ * @param {string} name Key name of the extension. Accessed via <code data-language="js">_ext[name]</code>.
383
+ * @param {*} object The method, value, or object that should be available via the given name.
384
+ * @return {undefined}
385
+ */
341
386
  exports.setExtension = defaultInstance.setExtension;
387
+ /**
388
+ * Parse a given file into tokens.
389
+ * @param {string} pathname Full path to file to parse.
390
+ * @param {SwigOpts} [options={}] Swig options object.
391
+ * @return {object} parsed Template tokens object.
392
+ * @private
393
+ */
342
394
  exports.parseFile = defaultInstance.parseFile;
395
+ /**
396
+ * Pre-compile a source string into a cache-able template function.
397
+ *
398
+ * @example
399
+ * swig.precompile('{{ tacos }}');
400
+ * // => {
401
+ * // tpl: function (_swig, _locals, _filters, _utils, _fn) { ... },
402
+ * // tokens: {
403
+ * // name: undefined,
404
+ * // parent: null,
405
+ * // tokens: [...],
406
+ * // blocks: {}
407
+ * // }
408
+ * // }
409
+ *
410
+ * In order to render a pre-compiled template, you must have access to filters and utils from Swig. <var>efn</var> is simply an empty function that does nothing.
411
+ *
412
+ * @param {string} source Swig template source string.
413
+ * @param {SwigOpts} [options={}] Swig options object.
414
+ * @return {object} Renderable function and tokens object.
415
+ */
343
416
  exports.precompile = defaultInstance.precompile;
417
+ /**
418
+ * Compile string source into a renderable template function.
419
+ *
420
+ * @example
421
+ * var tpl = swig.compile('{{ tacos }}');
422
+ * // => {
423
+ * // [Function: compiled]
424
+ * // parent: null,
425
+ * // tokens: [{ compile: [Function] }],
426
+ * // blocks: {}
427
+ * // }
428
+ * tpl({ tacos: 'Tacos!!!!' });
429
+ * // => Tacos!!!!
430
+ *
431
+ * When compiling a source string, a file path should be specified in the options object in order for <var>extends</var>, <var>include</var>, and <var>import</var> to work properly. Do this by adding <code data-language="js">{ filename: '/absolute/path/to/mytpl.html' }</code> to the options argument.
432
+ *
433
+ * @param {string} source Swig template source string.
434
+ * @param {SwigOpts} [options={}] Swig options object.
435
+ * @return {function} Renderable function with keys for parent, blocks, and tokens.
436
+ */
344
437
  exports.compile = defaultInstance.compile;
438
+ /**
439
+ * Compile a source file into a renderable template function.
440
+ *
441
+ * @example
442
+ * var tpl = swig.compileFile('./mytpl.html');
443
+ * // => {
444
+ * // [Function: compiled]
445
+ * // parent: null,
446
+ * // tokens: [{ compile: [Function] }],
447
+ * // blocks: {}
448
+ * // }
449
+ * tpl({ tacos: 'Tacos!!!!' });
450
+ * // => Tacos!!!!
451
+ *
452
+ * @example
453
+ * swig.compileFile('/myfile.txt', { varControls: ['<%=', '=%>'], tagControls: ['<%', '%>']});
454
+ * // => will compile 'myfile.txt' using the var and tag controls as specified.
455
+ *
456
+ * @param {string} pathname File location.
457
+ * @param {SwigOpts} [options={}] Swig options object.
458
+ * @param {Function} [cb] Asynchronous callback function. If not provided, <var>compileFile</var> will run synchronously.
459
+ * @return {function} Renderable function with keys for parent, blocks, and tokens.
460
+ */
345
461
  exports.compileFile = defaultInstance.compileFile;
346
462
  exports.compileFileAsync = defaultInstance.compileFileAsync;
463
+ /**
464
+ * Compile and render a template string for final output.
465
+ *
466
+ * When rendering a source string, a file path should be specified in the options object in order for <var>extends</var>, <var>include</var>, and <var>import</var> to work properly. Do this by adding <code data-language="js">{ filename: '/absolute/path/to/mytpl.html' }</code> to the options argument.
467
+ *
468
+ * @example
469
+ * swig.render('{{ tacos }}', { locals: { tacos: 'Tacos!!!!' }});
470
+ * // => Tacos!!!!
471
+ *
472
+ * @param {string} source Swig template source string.
473
+ * @param {SwigOpts} [options={}] Swig options object.
474
+ * @return {string} Rendered output.
475
+ */
347
476
  exports.render = defaultInstance.render;
477
+ /**
478
+ * Compile and render a template file for final output. This is most useful for libraries like Express.js.
479
+ *
480
+ * When the active loader sets <code>loader.async === true</code> and a callback is provided, this method routes to the async-codegen dispatch path (added in v2.2.0) which supports dynamic <var>include</var> paths the sync path cannot. Otherwise it runs synchronously.
481
+ *
482
+ * @example
483
+ * swig.renderFile('./template.html', {}, function (err, output) {
484
+ * if (err) {
485
+ * throw err;
486
+ * }
487
+ * console.log(output);
488
+ * });
489
+ *
490
+ * @example
491
+ * swig.renderFile('./template.html', {});
492
+ * // => output
493
+ *
494
+ * @param {string} pathName File location.
495
+ * @param {object} [locals={}] Template variable context.
496
+ * @param {Function} [cb] Asynchronous callback function. If not provided, <var>renderFile</var> will run synchronously.
497
+ * @return {string} Rendered output.
498
+ */
348
499
  exports.renderFile = defaultInstance.renderFile;
349
500
  exports.renderFileAsync = defaultInstance.renderFileAsync;
501
+ /**
502
+ * Run a pre-compiled template function. This is most useful in the browser when you've pre-compiled your templates with the Swig command-line tool.
503
+ *
504
+ * @example
505
+ * $ swig compile ./mytpl.html --wrap-start="var mytpl = " > mytpl.js
506
+ * @example
507
+ * <script src="mytpl.js"></script>
508
+ * <script>
509
+ * swig.run(mytpl, {});
510
+ * // => "rendered template..."
511
+ * </script>
512
+ *
513
+ * @param {function} tpl Pre-compiled Swig template function. Use the Swig CLI to compile your templates.
514
+ * @param {object} [locals={}] Template variable context.
515
+ * @param {string} [filepath] Filename used for caching the template.
516
+ * @return {string} Rendered output.
517
+ */
350
518
  exports.run = defaultInstance.run;
519
+ /**
520
+ * Clears the in-memory template cache.
521
+ *
522
+ * @example
523
+ * swig.invalidateCache();
524
+ *
525
+ * @return {undefined}
526
+ */
351
527
  exports.invalidateCache = defaultInstance.invalidateCache;
352
528
  exports.loaders = loaders;
package/lib/tags/set.js CHANGED
@@ -36,9 +36,9 @@ var ir = require('@rhinostone/swig-core/lib/ir'),
36
36
 
37
37
  // Pure-dot LHS shape: `_ctx.foo` or `_ctx.foo.bar.baz`. Bracket-touched
38
38
  // targets (`_ctx.foo["bar"]`, `_ctx.foo[bar]`, mixed dot+bracket) fail
39
- // this match and stay on the transitional string fallback per Session
40
- // 14b Commit 10's narrow scope the bracket-lvalue contract is a
41
- // cross-flavor design call and is deferred to a dedicated session.
39
+ // this match and stay on the transitional string fallback. The
40
+ // bracket-lvalue contract is a cross-flavor design call and is deferred
41
+ // to a dedicated session.
42
42
  var _pureDotTarget = /^_ctx\.([a-zA-Z_$][\w$]*)((?:\.[a-zA-Z_$][\w$]*)*)$/;
43
43
 
44
44
  exports.compile = function (compiler, args, content, parents, options, blockName, token) {
@@ -70,8 +70,8 @@ exports.lowerExpr = function (parser, tokens) {
70
70
  // assignment operator; lowerExpr only concerns itself with the RHS.
71
71
  // Locate the first ASSIGNMENT, slice the tail, and hand it to parseExpr.
72
72
  // Fall back (return undefined) if the tail contains FILTER / FILTEREMPTY
73
- // (filter pipes are not part of the expression grammar yet Session
74
- // 14+ Output-site work) or a nested ASSIGNMENT (parseExpr does not
73
+ // (filter pipes are not yet part of the expression grammar — pending
74
+ // output-site lowering) or a nested ASSIGNMENT (parseExpr does not
75
75
  // lower assignments, and bracket-write-as-assignment on the RHS would
76
76
  // misparse silently).
77
77
  var assignIdx = -1, i;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhinostone/swig",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "description": "A simple, powerful, and extendable templating engine for node.js and browsers, similar to Django, Jinja2, and Twig.",
5
5
  "keywords": [
6
6
  "template",
@@ -21,21 +21,17 @@
21
21
  "Rhinostone <contact@gina.io>"
22
22
  ],
23
23
  "dependencies": {
24
- "@rhinostone/swig-core": "2.5.0"
24
+ "@rhinostone/swig-core": "2.5.1"
25
25
  },
26
26
  "devDependencies": {
27
- "blanket": "~1.1",
28
27
  "esbuild": "^0.28.0",
29
- "eslint": "^8.57.1",
28
+ "eslint": "^9",
30
29
  "expect.js": "~0.2",
31
- "express": "~3",
32
- "lodash": "~1.3.1",
33
- "mocha": "1.12.0",
34
- "mocha-phantomjs": "~3.1",
30
+ "express": "^4",
31
+ "globals": "^16",
32
+ "lodash": "^4",
35
33
  "path-browserify": "^1.0.1",
36
- "phantomjs": "~1.9.1",
37
- "terser": "^5.46.1",
38
- "travis-cov": "~0.2"
34
+ "terser": "^5.46.1"
39
35
  },
40
36
  "license": "MIT",
41
37
  "main": "index",
@@ -50,15 +46,7 @@
50
46
  },
51
47
  "scripts": {
52
48
  "prepublish": "npm prune && make build",
53
- "test": "make lint && make test reporter=spec && make test-browser && make coverage cov-reporter=travis-cov",
54
- "travis-cov": {
55
- "threshold": 95
56
- }
57
- },
58
- "config": {
59
- "blanket": {
60
- "pattern": "swig/lib"
61
- }
49
+ "test": "make lint && make test reporter=spec && make coverage"
62
50
  },
63
51
  "publishConfig": {
64
52
  "access": "public"
package/.eslintrc.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "env": {
3
- "node": true,
4
- "mocha": true,
5
- "es2017": true
6
- },
7
- "parserOptions": {
8
- "ecmaVersion": 2017
9
- },
10
- "globals": {
11
- "Promise": "readonly"
12
- },
13
- "rules": {
14
- "max-len": ["error", { "code": 600 }],
15
- "semi": ["error", "always"],
16
- "no-eval": "off",
17
- "no-new-func": "off",
18
- "strict": "off",
19
- "eqeqeq": "off",
20
- "no-trailing-spaces": "error",
21
- "no-undef": "error",
22
- "no-redeclare": "error"
23
- }
24
- }